if (typeof window !== 'undefined') {
    localStorage.setItem('appearance', 'light');
    document.documentElement.classList.remove('dark');
}

import { createInertiaApp } from '@inertiajs/react';
import { resolvePageComponent } from 'laravel-vite-plugin/inertia-helpers';
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';

const appName = import.meta.env.VITE_APP_NAME || 'Laravel';

// ============================================================
//   PAGES PUBLIQUES PUNJAB — sans layout (gèrent elles-mêmes
//   leur Navbar, Footer, FloatingButtons, etc.)
// ============================================================
const PUNJAB_PAGES_NO_LAYOUT = [
    'home',
    'welcome',
    'carte',
    'contact',
    'restaurant',
    'restaurant-histoire',
    'CGU',
    'dashboard',
];

// Préfixes de pages publiques sans layout
// (pour Admin/AdminLogin, Admin/Dashboard, etc.)
const PUNJAB_PREFIXES_NO_LAYOUT = [
    'Admin/',
];

createInertiaApp({
    title: (title) => (title ? `${title} - ${appName}` : appName),
    resolve: async (name) => {
        const pages = import.meta.glob('./pages/**/*.tsx');
        const module: any = await pages[`./pages/${name}.tsx`]();

        // Pages publiques Punjab → AUCUN layout
        const isPunjabPage =
            PUNJAB_PAGES_NO_LAYOUT.includes(name) ||
            PUNJAB_PREFIXES_NO_LAYOUT.some((prefix) => name.startsWith(prefix));

        if (isPunjabPage) {
            module.default.layout = undefined;
        } else if (name.startsWith('auth/')) {
            module.default.layout = (page: any) => <AuthLayout>{page}</AuthLayout>;
        } else if (name.startsWith('settings/')) {
            module.default.layout = (page: any) => <AppLayout><SettingsLayout>{page}</SettingsLayout></AppLayout>;
        } else {
            module.default.layout = (page: any) => <AppLayout>{page}</AppLayout>;
        }

        return module;
    },
    strictMode: true,
    withApp(app) {
        return (
            <TooltipProvider delayDuration={0}>
                {app}
                <Toaster />
            </TooltipProvider>
        );
    },
    progress: {
        color: '#4B5563',
    },
});

initializeTheme();