import { QueryClient, QueryClientProvider } from '@tanstack/react-query' import { StrictMode } from 'react' import { createRoot } from 'react-dom/client' import { BrowserRouter } from 'react-router-dom' import { App } from '@/App' import { ConfirmDialog, Toaster } from '@/components/ui/toast' import './index.css' const queryClient = new QueryClient({ defaultOptions: { queries: { // Till data changes constantly, but refetching on every window focus // makes the screen flicker mid-transaction. refetchOnWindowFocus: false, staleTime: 30_000, retry: 1, }, }, }) /* * The till has to survive a refresh during an outage, so the built app shell is * kept by a service worker. Registered after load so it never competes with the * first paint, and only where the browser supports it — a till on an old kiosk * browser simply loses the reload-while-offline case, not the app. */ if ('serviceWorker' in navigator && import.meta.env.PROD) { window.addEventListener('load', () => { void navigator.serviceWorker.register('/sw.js').catch(() => { // Registration is refused over plain HTTP on a non-localhost origin. That // is a deployment choice, not an error worth putting on the screen. }) }) } createRoot(document.getElementById('root')!).render( , )