Files
laravel-gost-template/resources/js/providers.ts
2026-06-24 17:20:43 +09:00

57 lines
1.7 KiB
TypeScript

import {
dateRuRU,
NConfigProvider,
NDialogProvider,
NLoadingBarProvider,
NMessageProvider,
NNotificationProvider,
ruRU,
} from 'naive-ui';
import { type Component, h, type VNode } from 'vue';
import { appTheme } from './plugins/naive';
// Сглаживание скруглений модалок/диалогов (перенесено из onboard).
const themeOverrides = {
Modal: {
peers: {
Dialog: { borderRadius: '8px' },
Card: { borderRadius: '8px' },
},
},
Dialog: { borderRadius: '8px' },
};
/**
* Единое дерево NaiveUI-провайдеров для клиента и SSR: тема/локаль, загрузка,
* диалоги, уведомления, сообщения — оборачивают корневой компонент Inertia.
*/
export function renderWithProviders(
App: Component,
props: Record<string, unknown>,
): VNode {
return h(
NConfigProvider,
{
theme: appTheme,
themeOverrides,
locale: ruRU,
dateLocale: dateRuRU,
},
{
default: () =>
h(NLoadingBarProvider, null, {
default: () =>
h(NDialogProvider, null, {
default: () =>
h(NNotificationProvider, null, {
default: () =>
h(NMessageProvider, null, {
default: () => h(App, props),
}),
}),
}),
}),
},
);
}