Files
Investidor-V2/resources/js/app.tsx
T

59 lines
2.1 KiB
TypeScript

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 (
<TooltipProvider delayDuration={0}>
{app}
<Toaster />
</TooltipProvider>
);
},
progress: {
color: '#4B5563',
},
});
// This will set light / dark mode on load...
initializeTheme();