import { createInertiaApp, router } from '@inertiajs/vue3'; import { createPinia } from 'pinia'; import { createApp, createSSRApp } from 'vue'; import { startGlobalLoading, stopGlobalLoading, } from './composables/useGlobalLoading'; import { setupNaiveDiscreteApi } from './plugins/naive'; import { renderWithProviders } from './providers'; import '../css/app.css'; const appName = import.meta.env.VITE_APP_NAME || 'Laravel'; // Глобальный индикатор загрузки на переходах Inertia. router.on('start', () => startGlobalLoading()); router.on('finish', () => stopGlobalLoading()); createInertiaApp({ title: (title) => (title ? `${title} — ${appName}` : appName), progress: { color: '#63e2b7' }, setup({ el, App, props, plugin }) { if (!el) { return; } const render = () => renderWithProviders(App, props as unknown as Record); // При SSR страница уже отрисована — гидратируем через createSSRApp. const app = el.hasAttribute('data-server-rendered') ? createSSRApp({ render }) : createApp({ render }); app.use(plugin); app.use(createPinia()); // Discrete API NaiveUI (window.$message и т.п.) — только в браузере. setupNaiveDiscreteApi(app); app.mount(el); }, });