import { createInertiaApp } from '@inertiajs/react'; import type { ComponentType } from 'react'; import { Toaster } from '@/components/ui/sonner'; import { TooltipProvider } from '@/components/ui/tooltip'; import { initializeTheme } from '@/hooks/use-appearance'; import AppLayout from '@/layouts/app-layout'; import AuthLayout from '@/layouts/auth-layout'; import SettingsLayout from '@/layouts/settings/layout'; import PortalNavigation from '@/layouts/portal-navigation'; const appName = import.meta.env.VITE_APP_NAME || 'InvesteMoz'; const pages = import.meta.glob<{ default: ComponentType }>('./pages/**/*.tsx'); void createInertiaApp({ resolve: async (name) => { const path = `./pages/${name}.tsx`; const loadPage = pages[path]; if (!loadPage) throw new Error(`Page not found: ${name}`); return (await loadPage()).default; }, title: (title) => (title ? `${title} - ${appName}` : appName), layout: (name) => { switch (true) { case name === 'welcome': case name === 'PortalInvestidor': case name === 'management-access': case name.startsWith('qa/'): case name.startsWith('portal/'): case name.startsWith('investment/'): case name.startsWith('portfolio/'): case name.startsWith('land-assistance/'): case name.startsWith('desk/'): case name.startsWith('investor-path/'): return PortalNavigation; case name.startsWith('auth/'): return [PortalNavigation, AuthLayout]; case name.startsWith('settings/'): return [PortalNavigation, AppLayout, SettingsLayout]; default: return [PortalNavigation, AppLayout]; } }, strictMode: true, withApp(app) { return ( {app} ); }, progress: { color: '#4B5563', }, }); // This will set light / dark mode on load... initializeTheme();