-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathApp.tsx
50 lines (46 loc) · 1.07 KB
/
App.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import {SiGithub} from '@icons-pack/react-simple-icons';
import {useCallback} from 'react';
import {
App as AppBase,
Button,
Image,
useRoute,
useSetRouteCallback,
} from 'tinywidgets';
import {article, title} from './App.css';
import {SideNav} from './components/SideNav.tsx';
import {Home} from './pages/Home.tsx';
import {ROUTES} from './pages/index.ts';
export const App = () => (
<AppBase
title={Title}
topNavRight={
<Button
icon={SiGithub}
href="https://github.com/tinyplex/tinywidgets"
variant="icon"
/>
}
sideNav={SideNav}
main={Main}
/>
);
const Title = () => {
const setRoute = useSetRouteCallback();
const setHome = useCallback(() => setRoute('home'), [setRoute]);
return (
<h1 className={title} onClick={setHome}>
<Image src="/favicon.svg" variant="logo" alt="TinyWidgets" />
TinyWidgets
</h1>
);
};
const Main = () => {
const route = useRoute();
const Component = ROUTES[route]?.[1] ?? Home;
return (
<article className={article}>
<Component />
</article>
);
};