millelibri/frontend/src/App.tsx

69 lines
2.0 KiB
TypeScript
Raw Normal View History

2023-01-08 16:29:07 +00:00
import { Flex, HStack, Icon, IconButton, Link, Spacer, Text } from '@chakra-ui/react';
2023-01-07 20:40:21 +00:00
import React, { Suspense, useState } from 'react';
import { SkipNavContent, SkipNavLink } from '@chakra-ui/skip-nav';
import { Book } from './scripts/searcher';
import BooksView from './components/BooksView';
import ColorModeSwitch from './components/ColorModeSwitch';
import ExternalLink from './components/ExternalLink';
2023-01-08 16:29:07 +00:00
import { FaGit } from 'react-icons/fa';
2023-01-07 20:40:21 +00:00
import Footer from './components/Footer';
import Header from './components/Header';
import LanguageSwitch from './components/LanguageSwitch';
import Search from './components/Search';
import { repository } from '../package.json';
import { useTranslation } from 'react-i18next';
const Main: React.FC = () => {
const [books, setBooks] = useState<Book[]>([]);
return (
<>
<SkipNavContent />
<Search setBooks={setBooks} />
<BooksView books={books} />
</>
);
};
const Settings =
import.meta.env.VITE_TAURI === '1'
? React.lazy(() => import('./components/Settings-tauri'))
: React.lazy(() => import('./components/Settings'));
const App: React.FC = () => {
const { t } = useTranslation();
return (
<Flex direction="column" minH="100vh">
<SkipNavLink>Skip to content</SkipNavLink>
<Header title="Millelibri">
<HStack spacing={{ base: 1, md: 2 }}>
<IconButton
as={ExternalLink}
aria-label={t('nav.repository')}
title={t('nav.repository') ?? ''}
href={repository}
variant="ghost"
2023-01-08 16:29:07 +00:00
icon={<Icon as={FaGit} boxSize={5} />}
2023-01-07 20:40:21 +00:00
/>
<LanguageSwitch />
<ColorModeSwitch />
2023-01-08 16:29:07 +00:00
{/* <Suspense>
2023-01-07 20:40:21 +00:00
<Settings />
2023-01-08 16:29:07 +00:00
</Suspense> */}
2023-01-07 20:40:21 +00:00
</HStack>
</Header>
<Main />
<Spacer />
<Footer>
2023-01-08 16:29:07 +00:00
<Link href='https://www.lamacchinadesiderante.org' isExternal>lamacchinadesiderante.org</Link>
<Text fontSize='xs'>powered by Book Searcher</Text>
2023-01-07 20:40:21 +00:00
</Footer>
</Flex>
);
};
export default App;