Files
adam-acs/inertia/app/app.ts
T

38 lines
1.0 KiB
TypeScript

import { createApp, h } from 'vue'
import type { DefineComponent } from 'vue'
import { createInertiaApp } from '@inertiajs/vue3'
import DefaultLayout from '../layouts/MainLayout.vue'
import { createI18n } from 'vue-i18n'
import fr from '../locales/fr.json'
import en from '../locales/en.json'
import 'boosted/dist/css/boosted.min.css'
import './app.css'
const i18n = createI18n({
legacy: false,
locale: 'fr',
fallbackLocale: 'en',
messages: { fr, en },
})
createInertiaApp({
title: (title) => `${title} - ADAM ACS`,
resolve: (name) => {
const pages = import.meta.glob('../pages/**/*.vue', { eager: true }) as Record<string, { default: DefineComponent }>
const page = pages[`../pages/${name}.vue`]
if (!page) {
throw new Error(`Page not found: ${name}`)
}
if (page.default.layout === undefined) {
page.default.layout = DefaultLayout
}
return page
},
setup({ el, App, props, plugin }) {
createApp({ render: () => h(App, props) })
.use(plugin)
.use(i18n)
.mount(el)
},
})