forked from QuantumNous/new-api
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path$error.tsx
More file actions
63 lines (54 loc) · 2.16 KB
/
Copy path$error.tsx
File metadata and controls
63 lines (54 loc) · 2.16 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
/*
Copyright (C) 2023-2026 QuantumNous
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
For commercial licensing, please contact support@quantumnous.com
*/
import { createFileRoute } from '@tanstack/react-router'
import { ConfigDrawer } from '@/components/config-drawer'
import { Header } from '@/components/layout'
import { ProfileDropdown } from '@/components/profile-dropdown'
import { Search } from '@/components/search'
import { ThemeSwitch } from '@/components/theme-switch'
import { ForbiddenError } from '@/features/errors/forbidden'
import { GeneralError } from '@/features/errors/general-error'
import { MaintenanceError } from '@/features/errors/maintenance-error'
import { NotFoundError } from '@/features/errors/not-found-error'
import { UnauthorisedError } from '@/features/errors/unauthorized-error'
export const Route = createFileRoute('/_authenticated/errors/$error')({
component: RouteComponent,
})
function RouteComponent() {
const { error } = Route.useParams()
const errorMap: Record<string, React.ComponentType> = {
unauthorized: UnauthorisedError,
forbidden: ForbiddenError,
'not-found': NotFoundError,
'internal-server-error': GeneralError,
'maintenance-error': MaintenanceError,
}
const ErrorComponent = errorMap[error] || NotFoundError
return (
<>
<Header>
<Search />
<div className='ms-auto flex items-center md:space-x-4'>
<ThemeSwitch />
<ConfigDrawer />
<ProfileDropdown />
</div>
</Header>
<div className='flex-1 [&>div]:h-full'>
<ErrorComponent />
</div>
</>
)
}