67 lines
2.3 KiB
TypeScript
67 lines
2.3 KiB
TypeScript
import { createInertiaApp } from '@inertiajs/vue3';
|
|
import { initializeTheme } from '@/composables/useAppearance';
|
|
import AppLayout from '@/layouts/AppLayout.vue';
|
|
import AuthLayout from '@/layouts/AuthLayout.vue';
|
|
import SettingsLayout from '@/layouts/settings/Layout.vue';
|
|
import AdminLayout from '@/layouts/AdminLayout.vue'; // Import the new AdminLayout
|
|
import { createApp, h } from 'vue';
|
|
|
|
const appName = import.meta.env.VITE_APP_NAME || 'Laravel';
|
|
|
|
createInertiaApp({
|
|
title: (title) => (title ? `${title} - ${appName}` : appName),
|
|
resolve: (name) => {
|
|
const pages = import.meta.glob('./pages/**/*.vue', { eager: true });
|
|
let page: any = pages[`./pages/${name}.vue`];
|
|
|
|
if (page && page.default) {
|
|
if (name.startsWith('auth/')) {
|
|
page.default.layout = page.default.layout || AuthLayout;
|
|
} else if (name.startsWith('settings/')) {
|
|
page.default.layout = page.default.layout || [
|
|
AppLayout,
|
|
SettingsLayout,
|
|
];
|
|
} else if (name.startsWith('Admin/')) {
|
|
page.default.layout = page.default.layout || AdminLayout; // Use AdminLayout for admin pages
|
|
} else if (
|
|
[
|
|
'Welcome',
|
|
'Datenschutz',
|
|
'AGB',
|
|
'Impressum',
|
|
'ResponsibleGaming',
|
|
'Dashboard',
|
|
'Leaderboard'
|
|
].includes(name)
|
|
) {
|
|
// For Dashboard and public pages, let's explicitly use the AppLayout if it's Dashboard
|
|
if (name === 'Dashboard') {
|
|
page.default.layout = page.default.layout || AdminLayout; // Dashboard also uses AdminLayout
|
|
}
|
|
} else {
|
|
page.default.layout = page.default.layout || AppLayout;
|
|
}
|
|
}
|
|
return page;
|
|
},
|
|
setup({ el, App, props, plugin }) {
|
|
const app = createApp({ render: () => h(App, props) }).use(plugin);
|
|
|
|
// Nur im Browser mounten (wenn el vorhanden ist)
|
|
if (el) {
|
|
app.mount(el);
|
|
}
|
|
|
|
return app;
|
|
},
|
|
progress: {
|
|
color: '#4B5563',
|
|
},
|
|
});
|
|
|
|
// Theme-Initialisierung nur im Browser
|
|
if (typeof window !== 'undefined') {
|
|
initializeTheme();
|
|
}
|