2026-05-03 19:51:57 -05:00
|
|
|
import React from 'react';
|
|
|
|
|
import ReactDOM from 'react-dom/client';
|
|
|
|
|
import { BrowserRouter } from 'react-router-dom';
|
|
|
|
|
import App from './App';
|
2026-05-11 13:39:48 -05:00
|
|
|
import { Toaster } from './components/ui/sonner';
|
2026-05-03 19:51:57 -05:00
|
|
|
import { AuthProvider } from './hooks/useAuth';
|
|
|
|
|
import { ThemeProvider } from './contexts/ThemeContext';
|
2026-05-11 13:39:48 -05:00
|
|
|
import 'sonner/dist/styles.css';
|
2026-05-03 19:51:57 -05:00
|
|
|
import './index.css';
|
|
|
|
|
|
refactor(ts): convert the app shell to TSX (B7)
App.tsx (routing + QueryClient), main.tsx (entry; index.html updated to
main.tsx), useAuth.tsx (typed AuthContextValue/User + MeResponse; uses the safe
useContext()||defaults pattern so no `never` trap), and the layout components
(Layout, Sidebar, NavPill, BrandBlock — NavItem type, LucideIcon-typed nav
config, casts for the untyped overdue/simplefin API responses). TS caught a dead
prop: App passed mainContentId to TrackerPage, which takes no params — removed.
typecheck 0, lint 0 errors (39 warns), build green, 17/17 e2e probe.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-04 19:49:57 -05:00
|
|
|
ReactDOM.createRoot(document.getElementById('root')!).render(
|
2026-05-03 19:51:57 -05:00
|
|
|
<React.StrictMode>
|
|
|
|
|
<ThemeProvider>
|
|
|
|
|
<BrowserRouter>
|
|
|
|
|
<AuthProvider>
|
|
|
|
|
<App />
|
|
|
|
|
</AuthProvider>
|
|
|
|
|
|
2026-05-11 13:39:48 -05:00
|
|
|
{/* Global shadcn/Sonner toast system */}
|
|
|
|
|
<Toaster />
|
2026-05-09 13:03:36 -05:00
|
|
|
</BrowserRouter>
|
2026-05-03 19:51:57 -05:00
|
|
|
</ThemeProvider>
|
|
|
|
|
</React.StrictMode>
|
|
|
|
|
);
|