Migrated backoffice, hackathon, dimentorin, gacha, qrcampaign, and infra from custom react-router file-based routing to TanStack Router file-based routing following the tanstack-frontend-best-practice convention. Key changes per app: - New routes/ directory with __root.tsx, _public.tsx, _authenticated.tsx - Auth guards via beforeLoad (replaces old middleware.ts) - createFileRoute pattern for all page components - TanStackRouterVite plugin in vite.config for auto route generation - _components/_hooks folders colocated with routes (ignored by router) - routeTree.gen.ts auto-generated on dev/build Convention: - _public/* routes redirect to dashboard if authenticated - _authenticated/* routes redirect to /auth/login if not authenticated - $param for dynamic segments (was [param] in old convention) - _layout suffix for pathless layout routes Removed: - Old src/app/ directories from all apps - Old src/middleware.ts files - Custom convertPagesToRoute utility (no longer needed) - react-router dependency usage (kept in package.json for shared libs) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
37 lines
995 B
TypeScript
37 lines
995 B
TypeScript
import { StrictMode } from 'react'
|
|
import { createRoot } from 'react-dom/client'
|
|
import { RouterProvider, createRouter } from '@tanstack/react-router'
|
|
import {
|
|
ModalLoginProvider,
|
|
QueryProvider,
|
|
} from '@imphnen-frontend-service/utils'
|
|
import { Toaster } from 'sonner'
|
|
import { ThemeProvider } from './components/theme-provider'
|
|
import { routeTree } from './routeTree.gen'
|
|
import './index.css'
|
|
|
|
const router = createRouter({ routeTree })
|
|
|
|
declare module '@tanstack/react-router' {
|
|
interface Register {
|
|
router: typeof router
|
|
}
|
|
}
|
|
|
|
const rootElement = document.getElementById('root')
|
|
|
|
if (!rootElement) throw new Error('Failed to find the root element')
|
|
|
|
createRoot(rootElement).render(
|
|
<StrictMode>
|
|
<ThemeProvider defaultTheme="system">
|
|
<QueryProvider>
|
|
<ModalLoginProvider>
|
|
<Toaster position="top-right" richColors />
|
|
<RouterProvider router={router} />
|
|
</ModalLoginProvider>
|
|
</QueryProvider>
|
|
</ThemeProvider>
|
|
</StrictMode>
|
|
)
|