import * as React from 'react'; import * as ReactDOM from 'react-dom/client'; import { RemixBrowser } from '@remix-run/react'; import { CacheProvider } from '@emotion/react'; import { ThemeProvider } from '@mui/material/styles'; import CssBaseline from '@mui/material/CssBaseline'; import ClientStyleContext from './src/ClientStyleContext'; import createEmotionCache from './src/createEmotionCache'; import theme from './src/theme'; interface ClientCacheProviderProps { children: React.ReactNode; } function ClientCacheProvider({ children }: ClientCacheProviderProps) { const [cache, setCache] = React.useState(createEmotionCache()); const clientStyleContextValue = React.useMemo( () => ({ reset() { setCache(createEmotionCache()); }, }), [], ); return ( {children} ); } const hydrate = () => { React.startTransition(() => { ReactDOM.hydrateRoot( document, {/* CssBaseline kickstart an elegant, consistent, and simple baseline to build upon. */} , ); }); }; if (window.requestIdleCallback) { window.requestIdleCallback(hydrate); } else { // Safari doesn't support requestIdleCallback // https://caniuse.com/requestidlecallback setTimeout(hydrate, 1); }