Skip to content

Commit 74036d1

Browse files
committed
smoother page transitions
1 parent d8030f5 commit 74036d1

3 files changed

Lines changed: 64 additions & 83 deletions

File tree

src/App.tsx

Lines changed: 42 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -14,74 +14,48 @@ function App() {
1414
return (
1515
<BrowserRouter>
1616
<Routes>
17-
<Route
18-
path="/"
19-
element={
20-
<Layout>
21-
<SearchBar logoSize="large" />
22-
<HomePage />
23-
</Layout>
24-
}
25-
/>
26-
<Route
27-
path="/query"
28-
element={
29-
<Layout>
30-
<SearchResultsPage />
31-
</Layout>
32-
}
33-
/>
34-
<Route
35-
path="/object/:pgcId"
36-
element={
37-
<Layout>
38-
<SearchBar />
39-
<ObjectDetailsPage />
40-
</Layout>
41-
}
42-
/>
43-
<Route
44-
path="/table/:tableName"
45-
element={
46-
<Layout>
47-
<TableDetailsPage />
48-
</Layout>
49-
}
50-
/>
51-
<Route
52-
path="/tables"
53-
element={
54-
<Layout>
55-
<TablesPage />
56-
</Layout>
57-
}
58-
/>
59-
<Route
60-
path="/crossmatch"
61-
element={
62-
<Layout>
63-
<CrossmatchResultsPage />
64-
</Layout>
65-
}
66-
/>
67-
<Route
68-
path="/records/:recordId/crossmatch"
69-
element={
70-
<Layout>
71-
<SearchBar />
72-
<RecordCrossmatchDetailsPage />
73-
</Layout>
74-
}
75-
/>
76-
<Route
77-
path="*"
78-
element={
79-
<Layout>
80-
<SearchBar />
81-
<NotFoundPage />
82-
</Layout>
83-
}
84-
/>
17+
<Route element={<Layout />}>
18+
<Route
19+
path="/"
20+
element={
21+
<>
22+
<SearchBar logoSize="large" />
23+
<HomePage />
24+
</>
25+
}
26+
/>
27+
<Route path="/query" element={<SearchResultsPage />} />
28+
<Route
29+
path="/object/:pgcId"
30+
element={
31+
<>
32+
<SearchBar />
33+
<ObjectDetailsPage />
34+
</>
35+
}
36+
/>
37+
<Route path="/table/:tableName" element={<TableDetailsPage />} />
38+
<Route path="/tables" element={<TablesPage />} />
39+
<Route path="/crossmatch" element={<CrossmatchResultsPage />} />
40+
<Route
41+
path="/records/:recordId/crossmatch"
42+
element={
43+
<>
44+
<SearchBar />
45+
<RecordCrossmatchDetailsPage />
46+
</>
47+
}
48+
/>
49+
<Route
50+
path="*"
51+
element={
52+
<>
53+
<SearchBar />
54+
<NotFoundPage />
55+
</>
56+
}
57+
/>
58+
</Route>
8559
</Routes>
8660
</BrowserRouter>
8761
);

src/components/core/Link.tsx

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { ReactElement, ReactNode } from "react";
2+
import { Link as RouterLink } from "react-router-dom";
23
import { MdOpenInNew } from "react-icons/md";
34

45
interface LinkProps {
@@ -14,22 +15,25 @@ export function Link(props: LinkProps): ReactElement {
1415
const className = props.className
1516
? `${baseClass} ${props.className}`
1617
: baseClass;
18+
const combinedClassName = `${className} inline-flex items-center gap-1`;
1719

18-
const linkProps = props.external
19-
? {
20-
target: "_blank",
21-
rel: "noopener noreferrer",
22-
}
23-
: {};
20+
if (props.external) {
21+
return (
22+
<a
23+
target="_blank"
24+
rel="noopener noreferrer"
25+
href={props.href}
26+
className={combinedClassName}
27+
>
28+
{content}
29+
<MdOpenInNew />
30+
</a>
31+
);
32+
}
2433

2534
return (
26-
<a
27-
{...linkProps}
28-
href={props.href}
29-
className={`${className} inline-flex items-center gap-1`}
30-
>
35+
<RouterLink to={props.href} className={combinedClassName}>
3136
{content}
32-
{props.external && <MdOpenInNew />}
33-
</a>
37+
</RouterLink>
3438
);
3539
}

src/components/ui/Layout.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
1+
import { Outlet } from "react-router-dom";
12
import { Navbar } from "./Navbar";
23

3-
export function Layout({ children }: { children: React.ReactNode }) {
4+
export function Layout() {
45
return (
56
<div className="min-h-screen flex">
67
<Navbar />
78
<div className="ml-12 flex flex-col flex-grow min-h-screen">
8-
<div className="flex-grow p-8">{children}</div>
9+
<div className="flex-grow p-8">
10+
<Outlet />
11+
</div>
912
</div>
1013
</div>
1114
);

0 commit comments

Comments
 (0)