import { createInertiaApp } from '@inertiajs/vue3'; import createServer from '@inertiajs/vue3/server'; import { resolvePageComponent } from 'laravel-vite-plugin/inertia-helpers'; import type { DefineComponent } from 'vue'; import { createSSRApp, h } from 'vue'; import { renderToString } from 'vue/server-renderer'; import { createLocalization } from '@/lib/localization'; import type { LocalizationSettings } from '@/types/localization'; import { createAppearance, normalizeAppearance, } from '@/composables/useAppearance'; const appName = import.meta.env.VITE_APP_NAME || 'Laravel'; createServer( (page) => createInertiaApp({ page, render: renderToString, title: (title) => (title ? `${title} - ${appName}` : appName), resolve: (name) => resolvePageComponent( `./pages/${name}.vue`, import.meta.glob('./pages/**/*.vue'), ), setup: ({ App, props, plugin }) => createSSRApp({ render: () => h(App, props) }) .use(plugin) .use( createAppearance( normalizeAppearance( props.initialPage.props.appearance, ), ), ) .use( createLocalization( props.initialPage.props .localization as LocalizationSettings, ), ), }), { cluster: true }, );