Delete the src/app tree, next.config.ts, next-env.d.ts, and the Next-only guard/header components. Port AppShell/Sidebar/Topbar to react-router and mount them as a DashboardLayout route over all authenticated routes. Strip 'use client' directives, move globals.css up from the deleted app/ tree, rewrite tsconfig for Vite/Bundler resolution, drop the next dependency. Test fixes the port surfaced: jsdom v29 has no window.matchMedia (sidebar breakpoint) so setup.ts stubs it; the router-boundary specs render inside ThemeProvider because the chrome's ThemeToggle requires the context.
20 lines
537 B
TypeScript
20 lines
537 B
TypeScript
import { StrictMode } from 'react';
|
|
import { createRoot } from 'react-dom/client';
|
|
import { RouterProvider } from 'react-router-dom';
|
|
import { ThemeProvider } from '@/providers/theme-provider';
|
|
import { createAppRouter } from '@/routes';
|
|
import '@/globals.css';
|
|
|
|
const container = document.getElementById('root');
|
|
if (!container) {
|
|
throw new Error('missing #root element');
|
|
}
|
|
|
|
createRoot(container).render(
|
|
<StrictMode>
|
|
<ThemeProvider>
|
|
<RouterProvider router={createAppRouter()} />
|
|
</ThemeProvider>
|
|
</StrictMode>,
|
|
);
|