1import { createBrowserRouter, RouterProvider } from 'react-router-dom'
2import { Shell } from '@/components/layout/Shell'
3import { RepoShell } from '@/lib/repo'
4import { RepoPickerPage } from '@/pages/RepoPickerPage'
5import { BugListPage } from '@/pages/BugListPage'
6import { BugDetailPage } from '@/pages/BugDetailPage'
7import { NewBugPage } from '@/pages/NewBugPage'
8import { CodePage } from '@/pages/CodePage'
9import { UserProfilePage } from '@/pages/UserProfilePage'
10import { CommitPage } from '@/pages/CommitPage'
11import { IdentitySelectPage } from '@/pages/IdentitySelectPage'
12import { ErrorPage } from '@/pages/ErrorPage'
13
14// Route structure:
15// / → repo picker (or redirect if single repo)
16// /:repo → code browser (repo home)
17// /:repo/issues → issue list
18// /auth/select-identity → OAuth identity adoption (first-time login)
19const router = createBrowserRouter([
20 {
21 path: '/',
22 element: <Shell />,
23 errorElement: <ErrorPage />,
24 children: [
25 { index: true, element: <RepoPickerPage /> },
26 { path: 'auth/select-identity', element: <IdentitySelectPage /> },
27 {
28 path: ':repo',
29 element: <RepoShell />,
30 children: [
31 { index: true, element: <CodePage /> },
32 { path: 'issues', element: <BugListPage /> },
33 { path: 'issues/new', element: <NewBugPage /> },
34 { path: 'issues/:id', element: <BugDetailPage /> },
35 { path: 'user/:id', element: <UserProfilePage /> },
36 { path: 'commit/:hash', element: <CommitPage /> },
37 ],
38 },
39 ],
40 },
41])
42
43export function App() {
44 return <RouterProvider router={router} />
45}