generated from Tim-W-James/react-ts-template
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathApp.tsx
48 lines (42 loc) · 1.33 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
import "react-toastify/dist/ReactToastify.css";
import Toast from "@components/utils/Toast";
import { useAnnounceNavigation } from "@hooks/useAnnounceNavigation";
import { useResetFocusNavigation } from "@hooks/useFocusElement";
import background from "@images/bg-aurora.jpg";
import Footer from "@layout/Footer";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { ReactQueryDevtools } from "@tanstack/react-query-devtools";
import { Outlet } from "react-router-dom";
const Navbar = lazy(() => import("@layout/nav/Navbar"));
const queryClient = new QueryClient({
defaultOptions: {
queries: {
staleTime: 10 * (60 * 1000), // 10 mins
gcTime: 60 * (60 * 1000), // 1 hour
},
},
});
const App: React.FC = () => {
// HACK to ensure Netlify can inject the Cloudinary URL
document.body.style.backgroundImage = `url(${background})`;
// Accessibility hooks
useAnnounceNavigation();
useResetFocusNavigation();
return (
<div>
<QueryClientProvider client={queryClient}>
<Navbar />
<Outlet />
<Footer allowFixed />
<Toast />
{import.meta.env.DEV ? (
<ReactQueryDevtools
buttonPosition="bottom-left"
initialIsOpen={false}
/>
) : null}
</QueryClientProvider>
</div>
);
};
export default App;