Skip to content

Commit 3d9dfe9

Browse files
Quote (#24)
* quote added * quote file added differently * path changed * css file deleted along with 2nd quote.tsx * format adjusted
1 parent 746c27d commit 3d9dfe9

File tree

3 files changed

+90
-29
lines changed

3 files changed

+90
-29
lines changed

src/App.tsx

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,26 @@
1-
2-
3-
import { BrowserRouter, Route, Routes } from 'react-router-dom'
4-
import LandingPage from './Pages/LandingPage'
5-
import NotFound from './NotFound'
1+
import { BrowserRouter, Route, Routes } from "react-router-dom";
2+
import LandingPage from "./Pages/LandingPage";
3+
import NotFound from "./NotFound";
64

75
function App() {
8-
9-
106
return (
117
<>
12-
<BrowserRouter>
13-
<Routes>
14-
<Route path="*" element={<NotFound />} />
15-
<Route path='LibraryManagement' element={<LandingPage/>}/>
16-
<Route path='LibraryManagement/management/login' element={<LandingPage/>}/>
17-
<Route path='LibraryManagement/user/login' element={<LandingPage/>}/>
18-
19-
</Routes>
20-
</BrowserRouter>
8+
<BrowserRouter>
9+
<Routes>
10+
<Route path="*" element={<NotFound />} />
11+
<Route path="LibraryManagement" element={<LandingPage />} />
12+
<Route
13+
path="LibraryManagement/management/login"
14+
element={<LandingPage />}
15+
/>
16+
<Route
17+
path="LibraryManagement/user/login"
18+
element={<LandingPage />}
19+
/>
20+
</Routes>
21+
</BrowserRouter>
2122
</>
22-
)
23+
);
2324
}
2425

25-
export default App
26+
export default App;

src/Pages/LandingPage.tsx

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,23 @@
1-
import { Button } from "@/components/ui/button"
2-
import { Link } from "react-router-dom"
1+
import { Button } from "@/components/ui/button";
2+
import { Link } from "react-router-dom";
33

44
const LandingPage = () => {
55
return (
66
<div className="h-[100vh] flex flex-col justify-center items-center">
7-
<h1 className="text-[128px] font-medium-">LibraryHub</h1>
8-
<p className="text-[36px] font-medium">Your central place for all library needs</p>
9-
<div className="flex gap-[20px] mt-[50px]">
10-
<Link to={'management/login'}><Button variant="outline">Create A Library</Button></Link>
11-
<Link to={'user/login'}><Button >Join A Library</Button></Link>
12-
</div>
7+
<h1 className="text-[128px] font-medium-">LibraryHub</h1>
8+
<p className="text-[36px] font-medium">
9+
Your central place for all library needs
10+
</p>
11+
<div className="flex gap-[20px] mt-[50px]">
12+
<Link to={"management/login"}>
13+
<Button variant="outline">Create A Library</Button>
14+
</Link>
15+
<Link to={"management/login"}>
16+
<Button>Join A Library</Button>
17+
</Link>
18+
</div>
1319
</div>
14-
)
15-
}
20+
);
21+
};
1622

17-
export default LandingPage
23+
export default LandingPage;

src/mycomponents/Quote.tsx

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import { useState, useEffect } from "react";
2+
import { twMerge } from "tailwind-merge";
3+
function Quote() {
4+
const [Quote, setQuote] = useState("");
5+
const [Author, setAuthor] = useState("");
6+
7+
const api_url: string = "https://api.quotable.io/random";
8+
useEffect(() => {
9+
async function getQuote(url: string) {
10+
const response = await fetch(url);
11+
var data = await response.json();
12+
setQuote(data.content);
13+
setAuthor(data.author);
14+
15+
localStorage.setItem("quote", data.content);
16+
localStorage.setItem("author", data.author);
17+
localStorage.setItem("timestamp", new Date().toString());
18+
}
19+
20+
const storedQuote = localStorage.getItem("quote");
21+
const storedAuthor = localStorage.getItem("author");
22+
const storedTimeStamp = localStorage.getItem("timestamp");
23+
24+
if (storedQuote && storedAuthor && storedTimeStamp) {
25+
const currentTime = new Date();
26+
const quoteTime = new Date(storedTimeStamp);
27+
const hoursDifference =
28+
Math.abs(currentTime.getTime() - quoteTime.getTime()) / 36e5;
29+
30+
if (hoursDifference < 24) {
31+
setAuthor(storedAuthor);
32+
setQuote(storedQuote);
33+
return;
34+
}
35+
}
36+
37+
getQuote(api_url);
38+
}, []);
39+
return (
40+
<div className={twMerge("flex-col bg-zinc-800 text-white w-1/2 h-full")}>
41+
<h1 className={twMerge("text-6xl font-medium text-left my-16 ml-28")}>
42+
Quote of the day
43+
</h1>
44+
<h1
45+
className={twMerge("w-96 font-medium text-3xl ml-40 ")}
46+
>{`"${Quote}"`}</h1>
47+
<p
48+
className={twMerge(" font-medium text-2xl ml-96 my-16")}
49+
>{`author- "${Author}"`}</p>
50+
</div>
51+
);
52+
}
53+
54+
export default Quote;

0 commit comments

Comments
 (0)