57 lines
1.7 KiB
TypeScript
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),
|
|
}),
|
|
}),
|
|
}),
|
|
}),
|
|
},
|
|
);
|
|
}
|