-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path__root.tsx
More file actions
76 lines (73 loc) · 2.33 KB
/
Copy path__root.tsx
File metadata and controls
76 lines (73 loc) · 2.33 KB
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import { LinkProvider } from '@astryxdesign/core/Link'
import { Theme } from '@astryxdesign/core/theme'
import { neutralTheme } from '@astryxdesign/theme-neutral/built'
import { TanStackDevtools } from '@tanstack/react-devtools'
import { FormDevtoolsPanel } from '@tanstack/react-form-devtools'
import { QueryClientProvider } from '@tanstack/react-query'
import { ReactQueryDevtoolsPanel } from '@tanstack/react-query-devtools'
import { createRootRoute, Link, Outlet } from '@tanstack/react-router'
import { TanStackRouterDevtoolsPanel } from '@tanstack/react-router-devtools'
import { TableDevtoolsPanel } from '@tanstack/react-table-devtools'
import { useEffect } from 'react'
import '../styles.css'
import { setUnauthorizedHandler } from '../lib/api'
import { clearProtectedQueries, queryClient } from '../lib/query'
import { ThemeModeProvider, useThemeMode } from '../lib/theme'
export const Route = createRootRoute({
component: RootComponent,
})
function RootComponent() {
useEffect(
() =>
setUnauthorizedHandler(() => {
clearProtectedQueries()
const redirect = `${window.location.pathname}${window.location.search}`
window.location.assign(
`/sign-in?redirect=${encodeURIComponent(redirect)}`,
)
}),
[],
)
return (
<ThemeModeProvider>
<ThemedApp />
</ThemeModeProvider>
)
}
function ThemedApp() {
const { mode } = useThemeMode()
return (
<Theme theme={neutralTheme} mode={mode}>
<LinkProvider
component={({ href, ...props }) => <Link to={href ?? '/'} {...props} />}
>
<QueryClientProvider client={queryClient}>
<Outlet />
<TanStackDevtools
config={{
position: 'bottom-right',
}}
plugins={[
{
name: 'TanStack Router',
render: <TanStackRouterDevtoolsPanel />,
},
{
name: 'TanStack Form',
render: <FormDevtoolsPanel />,
},
{
name: 'TanStack Query',
render: <ReactQueryDevtoolsPanel />,
},
{
name: 'TanStack Table',
render: <TableDevtoolsPanel />,
},
]}
/>
</QueryClientProvider>
</LinkProvider>
</Theme>
)
}