2026-10-02 22:26:34 -04:00
|
|
|
import { StrictMode } from 'react'
|
|
|
|
|
import { createRoot } from 'react-dom/client'
|
2026-10-06 12:45:05 -04:00
|
|
|
import { createBrowserRouter, RouterProvider } from 'react-router'
|
2026-10-03 16:16:25 -04:00
|
|
|
import './styles/tokens.css'
|
|
|
|
|
import './styles/base.css'
|
2026-10-02 22:26:34 -04:00
|
|
|
import App from './App.tsx'
|
2026-10-05 15:22:37 -04:00
|
|
|
import { createApiClient, createVerifiedSession } from './api/index.ts'
|
|
|
|
|
import { createNetworkStatus } from './pwa/networkStatus.ts'
|
2026-10-02 22:26:34 -04:00
|
|
|
|
|
|
|
|
const root = document.getElementById('root')
|
|
|
|
|
if (!root) {
|
|
|
|
|
throw new Error('MealQuest: #root element missing from index.html')
|
|
|
|
|
}
|
|
|
|
|
|
2026-10-05 15:22:37 -04:00
|
|
|
const api = createApiClient(window.location, createNetworkStatus(window), createVerifiedSession(window.localStorage))
|
2026-10-04 08:46:40 -04:00
|
|
|
|
2026-10-06 12:45:05 -04:00
|
|
|
// A data router, so pages can block navigation (useBlocker); App's own
|
|
|
|
|
// <Routes> match every path under its splat route.
|
|
|
|
|
const router = createBrowserRouter([
|
|
|
|
|
{
|
|
|
|
|
path: '*',
|
|
|
|
|
element: <App api={api} serviceWorker={'serviceWorker' in navigator ? navigator.serviceWorker : undefined} />,
|
|
|
|
|
},
|
|
|
|
|
])
|
|
|
|
|
|
2026-10-02 22:26:34 -04:00
|
|
|
createRoot(root).render(
|
|
|
|
|
<StrictMode>
|
2026-10-06 12:45:05 -04:00
|
|
|
<RouterProvider router={router} />
|
2026-10-02 22:26:34 -04:00
|
|
|
</StrictMode>,
|
|
|
|
|
)
|