diff --git a/resources/js/ssr.tsx b/resources/js/ssr.tsx index c6cd25a..73f7a00 100644 --- a/resources/js/ssr.tsx +++ b/resources/js/ssr.tsx @@ -1,30 +1,56 @@ +import '../css/app.css'; + import { createInertiaApp } from '@inertiajs/react'; -import createServer from '@inertiajs/react/server'; import { resolvePageComponent } from 'laravel-vite-plugin/inertia-helpers'; -import ReactDOMServer from 'react-dom/server'; -import { type RouteName, route } from 'ziggy-js'; +import { hydrateRoot } from 'react-dom/client'; +import { ErrorBoundary } from 'react-error-boundary'; + +import { GA4Provider } from '@/plugins/GA4Context.jsx'; // Updated import +import DetailedErrorFallback from './components/custom/detailed-error-fallback'; // Import your component +import { Toaster } from './components/ui/sonner'; +import { AxiosProvider } from './plugins/AxiosContext'; +import { MittProvider } from './plugins/MittContext'; const appName = import.meta.env.VITE_APP_NAME || 'Laravel'; -createServer((page) => - createInertiaApp({ - page, - render: ReactDOMServer.renderToString, - title: (title) => `${title} - ${appName}`, - resolve: (name) => resolvePageComponent(`./pages/${name}.tsx`, import.meta.glob('./pages/**/*.tsx')), - setup: ({ App, props }) => { - /* eslint-disable */ - // @ts-expect-error - global.route = (name, params, absolute) => - route(name, params as any, absolute, { - // @ts-expect-error - ...page.props.ziggy, - // @ts-expect-error - location: new URL(page.props.ziggy.location), - }); - /* eslint-enable */ +createInertiaApp({ + title: (title) => `${title} - ${appName}`, + resolve: (name) => resolvePageComponent(`./pages/${name}.tsx`, import.meta.glob('./pages/**/*.tsx')), + setup({ el, App, props }) { + const root = hydrateRoot(el); - return ; - }, - }), -); + const app = ( + { + // Log to console for debugging + console.error('Error caught by boundary:', error, errorInfo); + + // You could also send to an error reporting service here + // e.g., Sentry, LogRocket, etc. + }} + onReset={() => { + // Optional: Clear any error state in your app + console.log('Error boundary reset'); + }} + > + + + + + {/* */} + + + + + + ); + + root.render(app); + }, + progress: { + color: '#4B5563', + }, +}); + +// Theme is now handled by useTheme hook in components