@modern-admin/react 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/action-guard.d.ts +13 -0
- package/dist/action-guard.d.ts.map +1 -0
- package/dist/action-guard.js +15 -0
- package/dist/action-guard.js.map +1 -0
- package/dist/action-menu.d.ts +17 -0
- package/dist/action-menu.d.ts.map +1 -0
- package/dist/action-menu.jsx +80 -0
- package/dist/action-menu.jsx.map +1 -0
- package/dist/admin-app.d.ts +23 -0
- package/dist/admin-app.d.ts.map +1 -0
- package/dist/admin-app.jsx +407 -0
- package/dist/admin-app.jsx.map +1 -0
- package/dist/admin-router.d.ts +29 -0
- package/dist/admin-router.d.ts.map +1 -0
- package/dist/admin-router.jsx +215 -0
- package/dist/admin-router.jsx.map +1 -0
- package/dist/breadcrumbs.d.ts +17 -0
- package/dist/breadcrumbs.d.ts.map +1 -0
- package/dist/breadcrumbs.jsx +40 -0
- package/dist/breadcrumbs.jsx.map +1 -0
- package/dist/client.d.ts +526 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +582 -0
- package/dist/client.js.map +1 -0
- package/dist/component-loader.d.ts +10 -0
- package/dist/component-loader.d.ts.map +1 -0
- package/dist/component-loader.js +23 -0
- package/dist/component-loader.js.map +1 -0
- package/dist/components/ai-assistant-widget.d.ts +3 -0
- package/dist/components/ai-assistant-widget.d.ts.map +1 -0
- package/dist/components/ai-assistant-widget.jsx +390 -0
- package/dist/components/ai-assistant-widget.jsx.map +1 -0
- package/dist/components/ai-fill-dialog.d.ts +9 -0
- package/dist/components/ai-fill-dialog.d.ts.map +1 -0
- package/dist/components/ai-fill-dialog.jsx +105 -0
- package/dist/components/ai-fill-dialog.jsx.map +1 -0
- package/dist/components/chart-builder-dialog.d.ts +10 -0
- package/dist/components/chart-builder-dialog.d.ts.map +1 -0
- package/dist/components/chart-builder-dialog.jsx +433 -0
- package/dist/components/chart-builder-dialog.jsx.map +1 -0
- package/dist/components/chart-widget.d.ts +12 -0
- package/dist/components/chart-widget.d.ts.map +1 -0
- package/dist/components/chart-widget.jsx +365 -0
- package/dist/components/chart-widget.jsx.map +1 -0
- package/dist/components/global-search-dialog.d.ts +7 -0
- package/dist/components/global-search-dialog.d.ts.map +1 -0
- package/dist/components/global-search-dialog.jsx +187 -0
- package/dist/components/global-search-dialog.jsx.map +1 -0
- package/dist/components/group-settings-dialog.d.ts +13 -0
- package/dist/components/group-settings-dialog.d.ts.map +1 -0
- package/dist/components/group-settings-dialog.jsx +53 -0
- package/dist/components/group-settings-dialog.jsx.map +1 -0
- package/dist/components/move-chart-dialog.d.ts +18 -0
- package/dist/components/move-chart-dialog.d.ts.map +1 -0
- package/dist/components/move-chart-dialog.jsx +68 -0
- package/dist/components/move-chart-dialog.jsx.map +1 -0
- package/dist/components/reference-multi-table-dialog.d.ts +12 -0
- package/dist/components/reference-multi-table-dialog.d.ts.map +1 -0
- package/dist/components/reference-multi-table-dialog.jsx +126 -0
- package/dist/components/reference-multi-table-dialog.jsx.map +1 -0
- package/dist/components/related-records-tabs.d.ts +8 -0
- package/dist/components/related-records-tabs.d.ts.map +1 -0
- package/dist/components/related-records-tabs.jsx +75 -0
- package/dist/components/related-records-tabs.jsx.map +1 -0
- package/dist/components/revisions-button.d.ts +7 -0
- package/dist/components/revisions-button.d.ts.map +1 -0
- package/dist/components/revisions-button.jsx +152 -0
- package/dist/components/revisions-button.jsx.map +1 -0
- package/dist/components/wizard-form.d.ts +43 -0
- package/dist/components/wizard-form.d.ts.map +1 -0
- package/dist/components/wizard-form.jsx +136 -0
- package/dist/components/wizard-form.jsx.map +1 -0
- package/dist/dashboard/time-series.d.ts +20 -0
- package/dist/dashboard/time-series.d.ts.map +1 -0
- package/dist/dashboard/time-series.js +108 -0
- package/dist/dashboard/time-series.js.map +1 -0
- package/dist/dialogs.d.ts +35 -0
- package/dist/dialogs.d.ts.map +1 -0
- package/dist/dialogs.jsx +152 -0
- package/dist/dialogs.jsx.map +1 -0
- package/dist/export.d.ts +39 -0
- package/dist/export.d.ts.map +1 -0
- package/dist/export.js +114 -0
- package/dist/export.js.map +1 -0
- package/dist/extension-registry.d.ts +122 -0
- package/dist/extension-registry.d.ts.map +1 -0
- package/dist/extension-registry.js +93 -0
- package/dist/extension-registry.js.map +1 -0
- package/dist/header-controls.d.ts +4 -0
- package/dist/header-controls.d.ts.map +1 -0
- package/dist/header-controls.jsx +70 -0
- package/dist/header-controls.jsx.map +1 -0
- package/dist/hooks.d.ts +104 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +374 -0
- package/dist/hooks.js.map +1 -0
- package/dist/hotkey-help.d.ts +3 -0
- package/dist/hotkey-help.d.ts.map +1 -0
- package/dist/hotkey-help.jsx +32 -0
- package/dist/hotkey-help.jsx.map +1 -0
- package/dist/hotkey-registry.d.ts +18 -0
- package/dist/hotkey-registry.d.ts.map +1 -0
- package/dist/hotkey-registry.jsx +34 -0
- package/dist/hotkey-registry.jsx.map +1 -0
- package/dist/i18n.d.ts +74 -0
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.jsx +127 -0
- package/dist/i18n.jsx.map +1 -0
- package/dist/index.d.ts +35 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -0
- package/dist/notify.d.ts +41 -0
- package/dist/notify.d.ts.map +1 -0
- package/dist/notify.jsx +58 -0
- package/dist/notify.jsx.map +1 -0
- package/dist/pages/ai-assistant-settings-section.d.ts +3 -0
- package/dist/pages/ai-assistant-settings-section.d.ts.map +1 -0
- package/dist/pages/ai-assistant-settings-section.jsx +126 -0
- package/dist/pages/ai-assistant-settings-section.jsx.map +1 -0
- package/dist/pages/audit-log-page.d.ts +3 -0
- package/dist/pages/audit-log-page.d.ts.map +1 -0
- package/dist/pages/audit-log-page.jsx +354 -0
- package/dist/pages/audit-log-page.jsx.map +1 -0
- package/dist/pages/edit-page.d.ts +7 -0
- package/dist/pages/edit-page.d.ts.map +1 -0
- package/dist/pages/edit-page.jsx +614 -0
- package/dist/pages/edit-page.jsx.map +1 -0
- package/dist/pages/export-dialog.d.ts +11 -0
- package/dist/pages/export-dialog.d.ts.map +1 -0
- package/dist/pages/export-dialog.jsx +102 -0
- package/dist/pages/export-dialog.jsx.map +1 -0
- package/dist/pages/home-page.d.ts +3 -0
- package/dist/pages/home-page.d.ts.map +1 -0
- package/dist/pages/home-page.jsx +211 -0
- package/dist/pages/home-page.jsx.map +1 -0
- package/dist/pages/list-page.d.ts +42 -0
- package/dist/pages/list-page.d.ts.map +1 -0
- package/dist/pages/list-page.jsx +1596 -0
- package/dist/pages/list-page.jsx.map +1 -0
- package/dist/pages/login-page.d.ts +11 -0
- package/dist/pages/login-page.d.ts.map +1 -0
- package/dist/pages/login-page.jsx +157 -0
- package/dist/pages/login-page.jsx.map +1 -0
- package/dist/pages/settings-page.d.ts +5 -0
- package/dist/pages/settings-page.d.ts.map +1 -0
- package/dist/pages/settings-page.jsx +787 -0
- package/dist/pages/settings-page.jsx.map +1 -0
- package/dist/pages/settings-shared.d.ts +51 -0
- package/dist/pages/settings-shared.d.ts.map +1 -0
- package/dist/pages/settings-shared.jsx +66 -0
- package/dist/pages/settings-shared.jsx.map +1 -0
- package/dist/pages/show-page.d.ts +7 -0
- package/dist/pages/show-page.d.ts.map +1 -0
- package/dist/pages/show-page.jsx +147 -0
- package/dist/pages/show-page.jsx.map +1 -0
- package/dist/pages/wizard-create-page.d.ts +14 -0
- package/dist/pages/wizard-create-page.d.ts.map +1 -0
- package/dist/pages/wizard-create-page.jsx +106 -0
- package/dist/pages/wizard-create-page.jsx.map +1 -0
- package/dist/property-renderer.d.ts +8 -0
- package/dist/property-renderer.d.ts.map +1 -0
- package/dist/property-renderer.jsx +690 -0
- package/dist/property-renderer.jsx.map +1 -0
- package/dist/provider.d.ts +20 -0
- package/dist/provider.d.ts.map +1 -0
- package/dist/provider.jsx +32 -0
- package/dist/provider.jsx.map +1 -0
- package/dist/realtime.d.ts +22 -0
- package/dist/realtime.d.ts.map +1 -0
- package/dist/realtime.js +38 -0
- package/dist/realtime.js.map +1 -0
- package/dist/reference.d.ts +52 -0
- package/dist/reference.d.ts.map +1 -0
- package/dist/reference.jsx +224 -0
- package/dist/reference.jsx.map +1 -0
- package/dist/relations.d.ts +11 -0
- package/dist/relations.d.ts.map +1 -0
- package/dist/relations.js +36 -0
- package/dist/relations.js.map +1 -0
- package/dist/router.d.ts +82 -0
- package/dist/router.d.ts.map +1 -0
- package/dist/router.jsx +187 -0
- package/dist/router.jsx.map +1 -0
- package/dist/show-when.d.ts +7 -0
- package/dist/show-when.d.ts.map +1 -0
- package/dist/show-when.js +77 -0
- package/dist/show-when.js.map +1 -0
- package/dist/types.d.ts +194 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +18 -0
- package/dist/types.js.map +1 -0
- package/dist/use-dashboard-charts.d.ts +93 -0
- package/dist/use-dashboard-charts.d.ts.map +1 -0
- package/dist/use-dashboard-charts.js +263 -0
- package/dist/use-dashboard-charts.js.map +1 -0
- package/dist/use-hotkey.d.ts +17 -0
- package/dist/use-hotkey.d.ts.map +1 -0
- package/dist/use-hotkey.js +103 -0
- package/dist/use-hotkey.js.map +1 -0
- package/dist/user-directory.d.ts +18 -0
- package/dist/user-directory.d.ts.map +1 -0
- package/dist/user-directory.js +51 -0
- package/dist/user-directory.js.map +1 -0
- package/dist/validation.d.ts +22 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +338 -0
- package/dist/validation.js.map +1 -0
- package/package.json +59 -0
- package/src/action-guard.ts +20 -0
- package/src/action-menu.tsx +161 -0
- package/src/admin-app.tsx +630 -0
- package/src/admin-router.tsx +273 -0
- package/src/breadcrumbs.tsx +75 -0
- package/src/client.ts +1093 -0
- package/src/component-loader.ts +33 -0
- package/src/components/ai-assistant-widget.tsx +565 -0
- package/src/components/ai-fill-dialog.tsx +143 -0
- package/src/components/chart-builder-dialog.tsx +618 -0
- package/src/components/chart-widget.tsx +654 -0
- package/src/components/global-search-dialog.tsx +272 -0
- package/src/components/group-settings-dialog.tsx +93 -0
- package/src/components/move-chart-dialog.tsx +130 -0
- package/src/components/reference-multi-table-dialog.tsx +196 -0
- package/src/components/related-records-tabs.tsx +130 -0
- package/src/components/revisions-button.tsx +237 -0
- package/src/components/wizard-form.tsx +302 -0
- package/src/dashboard/time-series.ts +125 -0
- package/src/dialogs.tsx +265 -0
- package/src/export.ts +140 -0
- package/src/extension-registry.ts +195 -0
- package/src/header-controls.tsx +125 -0
- package/src/hooks.ts +509 -0
- package/src/hotkey-help.tsx +56 -0
- package/src/hotkey-registry.tsx +60 -0
- package/src/i18n.tsx +267 -0
- package/src/index.ts +192 -0
- package/src/notify.tsx +94 -0
- package/src/pages/ai-assistant-settings-section.tsx +167 -0
- package/src/pages/audit-log-page.tsx +580 -0
- package/src/pages/edit-page.tsx +743 -0
- package/src/pages/export-dialog.tsx +154 -0
- package/src/pages/home-page.tsx +318 -0
- package/src/pages/list-page.tsx +2645 -0
- package/src/pages/login-page.tsx +242 -0
- package/src/pages/settings-page.tsx +1143 -0
- package/src/pages/settings-shared.tsx +134 -0
- package/src/pages/show-page.tsx +223 -0
- package/src/pages/wizard-create-page.tsx +164 -0
- package/src/property-renderer.tsx +1143 -0
- package/src/provider.tsx +70 -0
- package/src/realtime.ts +55 -0
- package/src/reference.tsx +386 -0
- package/src/relations.ts +55 -0
- package/src/router.tsx +211 -0
- package/src/show-when.ts +76 -0
- package/src/types.ts +198 -0
- package/src/use-dashboard-charts.ts +362 -0
- package/src/use-hotkey.ts +128 -0
- package/src/user-directory.ts +56 -0
- package/src/validation.ts +361 -0
package/dist/i18n.jsx
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
// React bindings for @modern-admin/i18n. Wraps the I18n registry in a
|
|
2
|
+
// provider, persists the active locale in localStorage, and exposes a
|
|
3
|
+
// `useI18n()` hook that re-renders subscribers on locale changes.
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import { I18n, builtinLocales } from '@modern-admin/i18n';
|
|
6
|
+
const STORAGE_KEY = 'modern-admin:locale';
|
|
7
|
+
const isDefined = (value) => value !== undefined;
|
|
8
|
+
const firstDefined = (...values) => values.find(isDefined);
|
|
9
|
+
const localizeAvailableValues = (availableValues, ...maps) => {
|
|
10
|
+
if (!availableValues)
|
|
11
|
+
return availableValues;
|
|
12
|
+
return availableValues.map((option) => ({
|
|
13
|
+
...option,
|
|
14
|
+
label: firstDefined(...maps.map((map) => map?.[option.value]), option.label) ?? option.label,
|
|
15
|
+
}));
|
|
16
|
+
};
|
|
17
|
+
const localizeKeyValueField = (field, ...translations) => ({
|
|
18
|
+
...field,
|
|
19
|
+
label: firstDefined(...translations.map((translation) => translation?.label), field.label),
|
|
20
|
+
description: firstDefined(...translations.map((translation) => translation?.description), field.description),
|
|
21
|
+
placeholder: firstDefined(...translations.map((translation) => translation?.placeholder), field.placeholder),
|
|
22
|
+
availableValues: field.availableValues?.map((option) => {
|
|
23
|
+
if (typeof option === 'string') {
|
|
24
|
+
const label = firstDefined(...translations.map((translation) => translation?.availableValues?.[option]), option) ??
|
|
25
|
+
option;
|
|
26
|
+
return { value: option, label };
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
...option,
|
|
30
|
+
label: firstDefined(...translations.map((translation) => translation?.availableValues?.[option.value]), option.label) ??
|
|
31
|
+
option.label,
|
|
32
|
+
};
|
|
33
|
+
}),
|
|
34
|
+
});
|
|
35
|
+
/**
|
|
36
|
+
* Applies translated tab labels to `relatedResources`. Each translation map
|
|
37
|
+
* is keyed by `resourceId`; the first map that has a matching entry wins.
|
|
38
|
+
* Exported for unit testing.
|
|
39
|
+
*/
|
|
40
|
+
export const localizeRelatedResources = (relatedResources, ...translations) => {
|
|
41
|
+
if (!relatedResources)
|
|
42
|
+
return relatedResources;
|
|
43
|
+
return relatedResources.map((r) => {
|
|
44
|
+
const translatedLabel = firstDefined(...translations.map((map) => map?.[r.resourceId]));
|
|
45
|
+
return translatedLabel !== undefined ? { ...r, label: translatedLabel } : r;
|
|
46
|
+
});
|
|
47
|
+
};
|
|
48
|
+
const localizeProperty = (property, ...translations) => ({
|
|
49
|
+
...property,
|
|
50
|
+
label: firstDefined(...translations.map((translation) => translation?.label), property.label) ?? property.label,
|
|
51
|
+
description: firstDefined(...translations.map((translation) => translation?.description), property.description),
|
|
52
|
+
availableValues: localizeAvailableValues(property.availableValues, ...translations.map((translation) => translation?.availableValues)),
|
|
53
|
+
keyValueFields: property.keyValueFields?.map((field) => localizeKeyValueField(field, ...translations.map((translation) => translation?.keyValueFields?.[field.key]))),
|
|
54
|
+
});
|
|
55
|
+
const I18nContext = React.createContext(null);
|
|
56
|
+
export function I18nProvider({ children, locales = builtinLocales, defaultLocale, fallbackLocale = 'en', metadataTranslations, }) {
|
|
57
|
+
const i18n = React.useMemo(() => {
|
|
58
|
+
const initial = (typeof localStorage !== 'undefined' && localStorage.getItem(STORAGE_KEY)) ||
|
|
59
|
+
defaultLocale ||
|
|
60
|
+
locales[0]?.code;
|
|
61
|
+
return new I18n({ locales, defaultLocale: initial ?? undefined, fallbackLocale });
|
|
62
|
+
}, [locales, defaultLocale, fallbackLocale]);
|
|
63
|
+
const [locale, setLocaleState] = React.useState(() => i18n.locale);
|
|
64
|
+
const localizeResource = React.useCallback((resource) => {
|
|
65
|
+
const localeMeta = metadataTranslations?.[locale];
|
|
66
|
+
const fallbackMeta = metadataTranslations?.[fallbackLocale];
|
|
67
|
+
const resourceLocale = localeMeta?.resources?.[resource.id];
|
|
68
|
+
const resourceFallback = fallbackMeta?.resources?.[resource.id];
|
|
69
|
+
const localizedName = firstDefined(resourceLocale?.label, resourceLocale?.name, resourceFallback?.label, resourceFallback?.name, resource.name) ??
|
|
70
|
+
resource.name;
|
|
71
|
+
const group = resource.navigation?.group;
|
|
72
|
+
return {
|
|
73
|
+
...resource,
|
|
74
|
+
name: localizedName,
|
|
75
|
+
navigation: resource.navigation === null
|
|
76
|
+
? null
|
|
77
|
+
: resource.navigation
|
|
78
|
+
? {
|
|
79
|
+
...resource.navigation,
|
|
80
|
+
name: firstDefined(resourceLocale?.navigation?.name, resourceFallback?.navigation?.name, resource.navigation.name),
|
|
81
|
+
group: firstDefined(resourceLocale?.navigation?.group, resourceFallback?.navigation?.group, group ? localeMeta?.navigation?.groups?.[group] : undefined, group ? fallbackMeta?.navigation?.groups?.[group] : undefined, resource.navigation.group),
|
|
82
|
+
}
|
|
83
|
+
: resource.navigation,
|
|
84
|
+
properties: resource.properties.map((property) => localizeProperty(property, resourceLocale?.properties?.[property.path], localeMeta?.properties?.[property.path], resourceFallback?.properties?.[property.path], fallbackMeta?.properties?.[property.path])),
|
|
85
|
+
actions: resource.actions.map((action) => {
|
|
86
|
+
const localizedLabel = firstDefined(resourceLocale?.actions?.[action.name]?.label, resourceFallback?.actions?.[action.name]?.label);
|
|
87
|
+
if (localizedLabel === undefined)
|
|
88
|
+
return action;
|
|
89
|
+
return {
|
|
90
|
+
...action,
|
|
91
|
+
custom: { ...(action.custom ?? {}), label: localizedLabel },
|
|
92
|
+
};
|
|
93
|
+
}),
|
|
94
|
+
relatedResources: localizeRelatedResources(resource.relatedResources, resourceLocale?.relatedResources, resourceFallback?.relatedResources),
|
|
95
|
+
};
|
|
96
|
+
}, [fallbackLocale, locale, metadataTranslations]);
|
|
97
|
+
const setLocale = React.useCallback((code) => {
|
|
98
|
+
i18n.setLocale(code);
|
|
99
|
+
if (typeof localStorage !== 'undefined')
|
|
100
|
+
localStorage.setItem(STORAGE_KEY, code);
|
|
101
|
+
setLocaleState(i18n.locale);
|
|
102
|
+
}, [i18n]);
|
|
103
|
+
const value = React.useMemo(() => ({
|
|
104
|
+
locale,
|
|
105
|
+
setLocale,
|
|
106
|
+
t: (key, params) => i18n.t(key, params),
|
|
107
|
+
availableLocales: () => i18n.availableLocales(),
|
|
108
|
+
localizeResource,
|
|
109
|
+
}), [locale, setLocale, i18n, localizeResource]);
|
|
110
|
+
return <I18nContext.Provider value={value}>{children}</I18nContext.Provider>;
|
|
111
|
+
}
|
|
112
|
+
/** Subscribe to the active locale + translations. Falls back to a no-op
|
|
113
|
+
* implementation when no provider is mounted, so consumers can render
|
|
114
|
+
* without forcing apps to install i18n. */
|
|
115
|
+
export function useI18n() {
|
|
116
|
+
const ctx = React.useContext(I18nContext);
|
|
117
|
+
if (ctx)
|
|
118
|
+
return ctx;
|
|
119
|
+
return {
|
|
120
|
+
locale: 'en',
|
|
121
|
+
setLocale: () => { },
|
|
122
|
+
t: (k) => k,
|
|
123
|
+
availableLocales: () => [{ code: 'en', name: 'English' }],
|
|
124
|
+
localizeResource: (resource) => resource,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=i18n.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n.jsx","sourceRoot":"","sources":["../src/i18n.tsx"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export { AdminClient, AdminApiError, type AdminClientOptions, type AuthUiProps, type AiAssistantChatEnqueueResponse, type AiAssistantChatMessage, type AiAssistantChatResponse, type AiAssistantCitation, type AiAssistantSettings, type AiAssistantTask, type ApiKeyRecord, type UploadedFileInfo, type UploadProgress, type UploadFileOptions, type UploadFilesOptions, } from './client.js';
|
|
2
|
+
export { ComponentLoader, type ComponentEntry } from './component-loader.js';
|
|
3
|
+
export { registerSidebarItem, registerSettingsSection, registerPropertyExtension, registerExtensionRoute, getSidebarExtensions, getSettingsSectionExtensions, getPropertyExtension, getRouteExtension, _resetExtensionRegistry, type SidebarExtension, type SettingsExtension, type PropertyExtension, type RouteExtension, } from './extension-registry.js';
|
|
4
|
+
export { ModernAdminProvider, useAdminClient, useAdminContext, type ModernAdminProviderProps, } from './provider.js';
|
|
5
|
+
export { useAdminConfig, useFeatures, useResource, useResources, useRecords, useRecord, useCreateRecord, useUpdateRecord, useDeleteRecord, useBulkDeleteRecords, useInvokeResourceAction, useSearchRecords, useCurrentUser, useLogin, useLogout, useAuthUiProps, useSocialLogin, type CurrentUserResult, } from './hooks.js';
|
|
6
|
+
export { PropertyDisplay, PropertyEditor, type PropertyDisplayProps, type PropertyEditorProps, } from './property-renderer.js';
|
|
7
|
+
export { ReferenceLink, ReferenceLinkList, ReferenceCombobox, ReferenceMultiCombobox, } from './reference.js';
|
|
8
|
+
export { I18nProvider, useI18n, type I18nProviderProps, type MetadataKeyValueFieldTranslations, type MetadataPropertyTranslations, type MetadataActionTranslations, type MetadataResourceTranslations, type MetadataLocaleTranslations, type MetadataTranslations, } from './i18n.js';
|
|
9
|
+
export { useHotkey, type HotkeyOptions } from './use-hotkey.js';
|
|
10
|
+
export { HotkeyRegistryProvider, useRegisteredHotkeys, type HotkeyDescriptor, } from './hotkey-registry.js';
|
|
11
|
+
export { HotkeyHelpButton } from './hotkey-help.js';
|
|
12
|
+
export { ThemeToggle, LanguageSwitcher } from './header-controls.js';
|
|
13
|
+
export { NotifyToaster, useNotify, type NotifyMessage } from './notify.js';
|
|
14
|
+
export { DialogsProvider, useDialogs, type DialogsApi, type ConfirmOptions, type AlertOptions, type OpenOptions, type DialogsProviderProps, } from './dialogs.js';
|
|
15
|
+
export { confirmGuard } from './action-guard.js';
|
|
16
|
+
export { buildValidationSchema, buildPropertySchema, defaultValueFor, type FormValuesGetter, type Translator, } from './validation.js';
|
|
17
|
+
export { evaluateShowWhen } from './show-when.js';
|
|
18
|
+
export { Link, useRoute, useNavigate, useOpenInNewTab, buildHref, parseLocation, type Route, type ListQueryState, type LinkProps, } from './router.js';
|
|
19
|
+
export { AdminApp, type AdminAppProps } from './admin-app.js';
|
|
20
|
+
export { LoginPage, type LoginPageProps } from './pages/login-page.js';
|
|
21
|
+
export { useRealtimeInvalidation, applyDeletionLocally, type RealtimeSubscriber, type RealtimeWireEvent, } from './realtime.js';
|
|
22
|
+
export { ResourceListPage } from './pages/list-page.js';
|
|
23
|
+
export { ResourceShowPage } from './pages/show-page.js';
|
|
24
|
+
export { ResourceEditPage } from './pages/edit-page.js';
|
|
25
|
+
export { ResourceWizardCreatePage, type ResourceWizardCreatePageProps, } from './pages/wizard-create-page.js';
|
|
26
|
+
export { WizardForm, type WizardStep, type WizardFormLabels, type WizardFormProps, } from './components/wizard-form.js';
|
|
27
|
+
export { HomePage } from './pages/home-page.js';
|
|
28
|
+
export { ExportDialog, type ExportDialogProps } from './pages/export-dialog.js';
|
|
29
|
+
export { PageBreadcrumbs, homeCrumb, type BreadcrumbItemSpec, type PageBreadcrumbsProps, } from './breadcrumbs.js';
|
|
30
|
+
export { fetchAllRecords, recordsToCsv, recordsToJson, csvEscape, downloadText, exportFilename, type ExportFormat, type FetchAllOptions, type SerializeOptions, } from './export.js';
|
|
31
|
+
export type { AdminConfig, AdminFeatures, ActionDescriptor, CurrentUser, ListQuery, ListResponse, PropertyJSON, RecordJSON, RecordResponse, RelatedResource, ResourceJSON, ShowWhenSpec, View, } from './types.js';
|
|
32
|
+
export { RelatedRecordsTabs } from './components/related-records-tabs.js';
|
|
33
|
+
export { ReferenceMultiTableDialog, type ReferenceMultiTableDialogProps, } from './components/reference-multi-table-dialog.js';
|
|
34
|
+
export { LocalStorageDashboardStore, ServerDashboardStore, useDashboardCharts, resolveRange, emitDashboardReload, type UseDashboardChartsOptions, type UseDashboardChartsResult, } from './use-dashboard-charts.js';
|
|
35
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// @modern-admin/react — React-side runtime: provider, hooks, property-type
|
|
2
|
+
// renderers, ComponentLoader, and a default <AdminApp> shell.
|
|
3
|
+
export { AdminClient, AdminApiError, } from './client.js';
|
|
4
|
+
export { ComponentLoader } from './component-loader.js';
|
|
5
|
+
export { registerSidebarItem, registerSettingsSection, registerPropertyExtension, registerExtensionRoute, getSidebarExtensions, getSettingsSectionExtensions, getPropertyExtension, getRouteExtension, _resetExtensionRegistry, } from './extension-registry.js';
|
|
6
|
+
export { ModernAdminProvider, useAdminClient, useAdminContext, } from './provider.js';
|
|
7
|
+
export { useAdminConfig, useFeatures, useResource, useResources, useRecords, useRecord, useCreateRecord, useUpdateRecord, useDeleteRecord, useBulkDeleteRecords, useInvokeResourceAction, useSearchRecords, useCurrentUser, useLogin, useLogout, useAuthUiProps, useSocialLogin, } from './hooks.js';
|
|
8
|
+
export { PropertyDisplay, PropertyEditor, } from './property-renderer.js';
|
|
9
|
+
export { ReferenceLink, ReferenceLinkList, ReferenceCombobox, ReferenceMultiCombobox, } from './reference.js';
|
|
10
|
+
export { I18nProvider, useI18n, } from './i18n.js';
|
|
11
|
+
export { useHotkey } from './use-hotkey.js';
|
|
12
|
+
export { HotkeyRegistryProvider, useRegisteredHotkeys, } from './hotkey-registry.js';
|
|
13
|
+
export { HotkeyHelpButton } from './hotkey-help.js';
|
|
14
|
+
export { ThemeToggle, LanguageSwitcher } from './header-controls.js';
|
|
15
|
+
export { NotifyToaster, useNotify } from './notify.js';
|
|
16
|
+
export { DialogsProvider, useDialogs, } from './dialogs.js';
|
|
17
|
+
export { confirmGuard } from './action-guard.js';
|
|
18
|
+
export { buildValidationSchema, buildPropertySchema, defaultValueFor, } from './validation.js';
|
|
19
|
+
export { evaluateShowWhen } from './show-when.js';
|
|
20
|
+
export { Link, useRoute, useNavigate, useOpenInNewTab, buildHref, parseLocation, } from './router.js';
|
|
21
|
+
export { AdminApp } from './admin-app.js';
|
|
22
|
+
export { LoginPage } from './pages/login-page.js';
|
|
23
|
+
export { useRealtimeInvalidation, applyDeletionLocally, } from './realtime.js';
|
|
24
|
+
export { ResourceListPage } from './pages/list-page.js';
|
|
25
|
+
export { ResourceShowPage } from './pages/show-page.js';
|
|
26
|
+
export { ResourceEditPage } from './pages/edit-page.js';
|
|
27
|
+
export { ResourceWizardCreatePage, } from './pages/wizard-create-page.js';
|
|
28
|
+
export { WizardForm, } from './components/wizard-form.js';
|
|
29
|
+
export { HomePage } from './pages/home-page.js';
|
|
30
|
+
export { ExportDialog } from './pages/export-dialog.js';
|
|
31
|
+
export { PageBreadcrumbs, homeCrumb, } from './breadcrumbs.js';
|
|
32
|
+
export { fetchAllRecords, recordsToCsv, recordsToJson, csvEscape, downloadText, exportFilename, } from './export.js';
|
|
33
|
+
export { RelatedRecordsTabs } from './components/related-records-tabs.js';
|
|
34
|
+
export { ReferenceMultiTableDialog, } from './components/reference-multi-table-dialog.js';
|
|
35
|
+
export { LocalStorageDashboardStore, ServerDashboardStore, useDashboardCharts, resolveRange, emitDashboardReload, } from './use-dashboard-charts.js';
|
|
36
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/notify.d.ts
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { toast, type ToasterProps } from '@modern-admin/ui';
|
|
3
|
+
export interface NotifyMessage {
|
|
4
|
+
/** i18n key, e.g. 'toast:saved' */
|
|
5
|
+
key?: string;
|
|
6
|
+
/** Already-translated literal text (used as-is when present). */
|
|
7
|
+
message?: string;
|
|
8
|
+
/** Interpolation params for the `key` lookup. */
|
|
9
|
+
params?: Record<string, unknown>;
|
|
10
|
+
/** Optional secondary line. */
|
|
11
|
+
description?: string;
|
|
12
|
+
}
|
|
13
|
+
type Input = string | NotifyMessage;
|
|
14
|
+
interface NotifyApi {
|
|
15
|
+
success(input: Input, opts?: {
|
|
16
|
+
description?: string;
|
|
17
|
+
}): void;
|
|
18
|
+
error(input: Input, opts?: {
|
|
19
|
+
description?: string;
|
|
20
|
+
}): void;
|
|
21
|
+
info(input: Input, opts?: {
|
|
22
|
+
description?: string;
|
|
23
|
+
}): void;
|
|
24
|
+
warning(input: Input, opts?: {
|
|
25
|
+
description?: string;
|
|
26
|
+
}): void;
|
|
27
|
+
/** Show loading -> success/error around a promise. Strings are i18n keys. */
|
|
28
|
+
promise<T>(p: Promise<T>, messages: {
|
|
29
|
+
loading: Input;
|
|
30
|
+
success: Input | ((value: T) => Input);
|
|
31
|
+
error: Input | ((err: unknown) => Input);
|
|
32
|
+
}): Promise<T>;
|
|
33
|
+
/** Escape hatch for callers that want raw sonner access. */
|
|
34
|
+
raw: typeof toast;
|
|
35
|
+
}
|
|
36
|
+
/** The global toaster. Mount once near the root of the admin shell. */
|
|
37
|
+
export declare function NotifyToaster(props: ToasterProps): React.ReactElement;
|
|
38
|
+
/** Hook returning a translation-aware notification surface. */
|
|
39
|
+
export declare function useNotify(): NotifyApi;
|
|
40
|
+
export {};
|
|
41
|
+
//# sourceMappingURL=notify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notify.d.ts","sourceRoot":"","sources":["../src/notify.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAW,KAAK,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAGpE,MAAM,WAAW,aAAa;IAC5B,mCAAmC;IACnC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC,+BAA+B;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,KAAK,KAAK,GAAG,MAAM,GAAG,aAAa,CAAA;AAEnC,UAAU,SAAS;IACjB,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IAC5D,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IAC1D,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IACzD,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IAC5D,6EAA6E;IAC7E,OAAO,CAAC,CAAC,EACP,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EACb,QAAQ,EAAE;QAAE,OAAO,EAAE,KAAK,CAAC;QAAC,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC;QAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,KAAK,CAAC,CAAA;KAAE,GAC7G,OAAO,CAAC,CAAC,CAAC,CAAA;IACb,4DAA4D;IAC5D,GAAG,EAAE,OAAO,KAAK,CAAA;CAClB;AAED,uEAAuE;AACvE,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,KAAK,CAAC,YAAY,CAErE;AAED,+DAA+D;AAC/D,wBAAgB,SAAS,IAAI,SAAS,CAgDrC"}
|
package/dist/notify.jsx
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
// Global, i18n-aware toast notifications.
|
|
2
|
+
//
|
|
3
|
+
// `useNotify()` returns a typed surface that translates message keys before
|
|
4
|
+
// handing them to sonner. Mount `<NotifyToaster />` once at the app root —
|
|
5
|
+
// it wraps the shadcn-flavoured `<Toaster />` with sensible defaults.
|
|
6
|
+
// Helpers also accept raw strings (already-translated) for cases where the
|
|
7
|
+
// caller has the literal text on hand (server error messages, etc.).
|
|
8
|
+
import * as React from 'react';
|
|
9
|
+
import { Toaster, toast } from '@modern-admin/ui';
|
|
10
|
+
import { useI18n } from './i18n.js';
|
|
11
|
+
/** The global toaster. Mount once near the root of the admin shell. */
|
|
12
|
+
export function NotifyToaster(props) {
|
|
13
|
+
return <Toaster richColors closeButton position="top-right" {...props}/>;
|
|
14
|
+
}
|
|
15
|
+
/** Hook returning a translation-aware notification surface. */
|
|
16
|
+
export function useNotify() {
|
|
17
|
+
const { t } = useI18n();
|
|
18
|
+
const resolve = React.useCallback((input) => {
|
|
19
|
+
if (typeof input === 'string')
|
|
20
|
+
return { title: input };
|
|
21
|
+
const title = input.key ? t(input.key, input.params) : (input.message ?? '');
|
|
22
|
+
return input.description ? { title, description: input.description } : { title };
|
|
23
|
+
}, [t]);
|
|
24
|
+
return React.useMemo(() => ({
|
|
25
|
+
success: (input, opts) => {
|
|
26
|
+
const r = resolve(input);
|
|
27
|
+
toast.success(r.title, { description: opts?.description ?? r.description });
|
|
28
|
+
},
|
|
29
|
+
error: (input, opts) => {
|
|
30
|
+
const r = resolve(input);
|
|
31
|
+
toast.error(r.title, { description: opts?.description ?? r.description });
|
|
32
|
+
},
|
|
33
|
+
info: (input, opts) => {
|
|
34
|
+
const r = resolve(input);
|
|
35
|
+
toast.info(r.title, { description: opts?.description ?? r.description });
|
|
36
|
+
},
|
|
37
|
+
warning: (input, opts) => {
|
|
38
|
+
const r = resolve(input);
|
|
39
|
+
toast.warning(r.title, { description: opts?.description ?? r.description });
|
|
40
|
+
},
|
|
41
|
+
promise: (p, messages) => {
|
|
42
|
+
toast.promise(p, {
|
|
43
|
+
loading: resolve(messages.loading).title,
|
|
44
|
+
success: (value) => {
|
|
45
|
+
const m = typeof messages.success === 'function' ? messages.success(value) : messages.success;
|
|
46
|
+
return resolve(m).title;
|
|
47
|
+
},
|
|
48
|
+
error: (err) => {
|
|
49
|
+
const m = typeof messages.error === 'function' ? messages.error(err) : messages.error;
|
|
50
|
+
return resolve(m).title;
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
return p;
|
|
54
|
+
},
|
|
55
|
+
raw: toast,
|
|
56
|
+
}), [resolve]);
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=notify.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notify.jsx","sourceRoot":"","sources":["../src/notify.tsx"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,EAAE;AACF,4EAA4E;AAC5E,2EAA2E;AAC3E,sEAAsE;AACtE,2EAA2E;AAC3E,qEAAqE;AAErE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAqB,MAAM,kBAAkB,CAAA;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA6BnC,uEAAuE;AACvE,MAAM,UAAU,aAAa,CAAC,KAAmB;IAC/C,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,EAAG,CAAA;AAC3E,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,SAAS;IACvB,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,CAAA;IAEvB,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAC/B,CAAC,KAAY,EAA2C,EAAE;QACxD,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;QACtD,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;QAC5E,OAAO,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAA;IAClF,CAAC,EACD,CAAC,CAAC,CAAC,CACJ,CAAA;IAED,OAAO,KAAK,CAAC,OAAO,CAClB,GAAG,EAAE,CAAC,CAAC;QACL,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACvB,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;YACxB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA;QAC7E,CAAC;QACD,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACrB,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;YACxB,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA;QAC3E,CAAC;QACD,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACpB,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;YACxB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA;QAC1E,CAAC;QACD,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACvB,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;YACxB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA;QAC7E,CAAC;QACD,OAAO,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE;YACvB,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE;gBACf,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK;gBACxC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;oBACjB,MAAM,CAAC,GAAG,OAAO,QAAQ,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAA;oBAC7F,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;gBACzB,CAAC;gBACD,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;oBACb,MAAM,CAAC,GAAG,OAAO,QAAQ,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAA;oBACrF,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;gBACzB,CAAC;aACF,CAAC,CAAA;YACF,OAAO,CAAC,CAAA;QACV,CAAC;QACD,GAAG,EAAE,KAAK;KACX,CAAC,EACF,CAAC,OAAO,CAAC,CACV,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-assistant-settings-section.d.ts","sourceRoot":"","sources":["../../src/pages/ai-assistant-settings-section.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAU9B,wBAAgB,0BAA0B,IAAI,KAAK,CAAC,YAAY,CA4J/D"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { useMutation, useQuery } from '@tanstack/react-query';
|
|
3
|
+
import { Badge, Button, Input, Label, Switch, Textarea } from '@modern-admin/ui';
|
|
4
|
+
import { Bot, KeyRound, Save } from 'lucide-react';
|
|
5
|
+
import { useAdminClient } from '../provider.js';
|
|
6
|
+
import { useNotify } from '../notify.js';
|
|
7
|
+
import { useI18n } from '../i18n.js';
|
|
8
|
+
import { SettingsCard } from './settings-shared.js';
|
|
9
|
+
export function AiAssistantSettingsSection() {
|
|
10
|
+
const client = useAdminClient();
|
|
11
|
+
const notify = useNotify();
|
|
12
|
+
const { t } = useI18n();
|
|
13
|
+
const settings = useQuery({
|
|
14
|
+
queryKey: ['modern-admin', 'ai-assistant', 'settings'],
|
|
15
|
+
queryFn: () => client.getAiAssistantSettings(),
|
|
16
|
+
});
|
|
17
|
+
const [form, setForm] = React.useState({
|
|
18
|
+
enabled: true,
|
|
19
|
+
model: 'google/gemini-3.1-flash-lite-preview',
|
|
20
|
+
apiKey: '',
|
|
21
|
+
systemPrompt: '',
|
|
22
|
+
});
|
|
23
|
+
React.useEffect(() => {
|
|
24
|
+
if (!settings.data)
|
|
25
|
+
return;
|
|
26
|
+
setForm({
|
|
27
|
+
enabled: settings.data.enabled,
|
|
28
|
+
model: settings.data.model,
|
|
29
|
+
apiKey: '',
|
|
30
|
+
systemPrompt: settings.data.systemPrompt,
|
|
31
|
+
});
|
|
32
|
+
}, [settings.data]);
|
|
33
|
+
const save = useMutation({
|
|
34
|
+
mutationFn: async () => client.updateAiAssistantSettings({
|
|
35
|
+
enabled: form.enabled,
|
|
36
|
+
model: form.model,
|
|
37
|
+
...(form.apiKey.trim() ? { apiKey: form.apiKey.trim() } : {}),
|
|
38
|
+
systemPrompt: form.systemPrompt,
|
|
39
|
+
}),
|
|
40
|
+
onSuccess: () => {
|
|
41
|
+
settings.refetch();
|
|
42
|
+
setForm((prev) => ({ ...prev, apiKey: '' }));
|
|
43
|
+
notify.success({ message: t('aiAssistant:settings.saved') });
|
|
44
|
+
},
|
|
45
|
+
onError: (err) => {
|
|
46
|
+
notify.error({ message: err instanceof Error ? err.message : String(err) });
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
if (settings.isLoading) {
|
|
50
|
+
return <div className="py-8 text-sm text-muted-foreground">{t('common:loading')}</div>;
|
|
51
|
+
}
|
|
52
|
+
if (settings.error) {
|
|
53
|
+
return (<div className="rounded-md border border-destructive/50 bg-destructive/10 p-4 text-sm text-destructive">
|
|
54
|
+
{settings.error instanceof Error ? settings.error.message : String(settings.error)}
|
|
55
|
+
</div>);
|
|
56
|
+
}
|
|
57
|
+
const data = settings.data;
|
|
58
|
+
if (!data) {
|
|
59
|
+
return <div className="py-8 text-sm text-muted-foreground">{t('aiAssistant:settings.empty')}</div>;
|
|
60
|
+
}
|
|
61
|
+
return (<div className="flex flex-col gap-4">
|
|
62
|
+
<SettingsCard icon={Bot} title={t('aiAssistant:settings.title')} description={t('aiAssistant:settings.description')} bodyClassName="space-y-4">
|
|
63
|
+
<div className="flex flex-wrap items-center gap-2">
|
|
64
|
+
<Badge variant={data.enabled ? 'secondary' : 'outline'}>
|
|
65
|
+
{data.enabled ? t('aiAssistant:settings.enabled') : t('aiAssistant:settings.disabled')}
|
|
66
|
+
</Badge>
|
|
67
|
+
<Badge variant={data.configured ? 'secondary' : 'outline'}>
|
|
68
|
+
{data.configured ? t('aiAssistant:settings.configured') : t('aiAssistant:settings.apiKeyRequired')}
|
|
69
|
+
</Badge>
|
|
70
|
+
<Badge variant="outline">{t('aiAssistant:settings.readOnly')}</Badge>
|
|
71
|
+
<Badge variant="outline">{t('aiAssistant:settings.provider', { provider: data.provider })}</Badge>
|
|
72
|
+
</div>
|
|
73
|
+
|
|
74
|
+
<div className="grid gap-4 sm:grid-cols-2">
|
|
75
|
+
<div className="flex items-center justify-between rounded-lg border border-border p-3">
|
|
76
|
+
<div className="space-y-1">
|
|
77
|
+
<Label htmlFor="ai-assistant-enabled">{t('aiAssistant:settings.enableLabel')}</Label>
|
|
78
|
+
<p className="text-xs text-muted-foreground">
|
|
79
|
+
{t('aiAssistant:settings.enableHint')}
|
|
80
|
+
</p>
|
|
81
|
+
</div>
|
|
82
|
+
<Switch id="ai-assistant-enabled" checked={form.enabled} disabled={!data.canManage || save.isPending} onCheckedChange={(enabled) => setForm((prev) => ({ ...prev, enabled }))}/>
|
|
83
|
+
</div>
|
|
84
|
+
|
|
85
|
+
<div className="space-y-1.5">
|
|
86
|
+
<Label htmlFor="ai-assistant-model">{t('aiAssistant:settings.modelLabel')}</Label>
|
|
87
|
+
<Input id="ai-assistant-model" value={form.model} disabled={!data.canManage || save.isPending} onChange={(e) => setForm((prev) => ({ ...prev, model: e.target.value }))} placeholder="google/gemini-3.1-flash-lite-preview"/>
|
|
88
|
+
</div>
|
|
89
|
+
</div>
|
|
90
|
+
|
|
91
|
+
<div className="space-y-1.5">
|
|
92
|
+
<Label htmlFor="ai-assistant-api-key" className="flex items-center gap-2">
|
|
93
|
+
<KeyRound className="size-4"/>
|
|
94
|
+
{t('aiAssistant:settings.apiKeyLabel')}
|
|
95
|
+
</Label>
|
|
96
|
+
<Input id="ai-assistant-api-key" type="password" value={form.apiKey} disabled={!data.canManage || save.isPending} onChange={(e) => setForm((prev) => ({ ...prev, apiKey: e.target.value }))} placeholder={data.maskedApiKey ?? 'sk-or-v1-...'}/>
|
|
97
|
+
<p className="text-xs text-muted-foreground">
|
|
98
|
+
{t('aiAssistant:settings.apiKeyHint')}
|
|
99
|
+
</p>
|
|
100
|
+
</div>
|
|
101
|
+
|
|
102
|
+
<div className="space-y-1.5">
|
|
103
|
+
<Label htmlFor="ai-assistant-system-prompt">{t('aiAssistant:settings.systemPromptLabel')}</Label>
|
|
104
|
+
<Textarea id="ai-assistant-system-prompt" value={form.systemPrompt} disabled={!data.canManage || save.isPending} onChange={(e) => setForm((prev) => ({ ...prev, systemPrompt: e.target.value }))} rows={8} placeholder={t('aiAssistant:settings.systemPromptPlaceholder')}/>
|
|
105
|
+
</div>
|
|
106
|
+
|
|
107
|
+
<div className="flex items-center justify-between gap-3 rounded-lg border border-border p-3 text-sm">
|
|
108
|
+
<div>
|
|
109
|
+
<div className="font-medium">{t('aiAssistant:settings.accessTitle')}</div>
|
|
110
|
+
<div className="text-muted-foreground">
|
|
111
|
+
{t('aiAssistant:settings.accessDescription')}
|
|
112
|
+
</div>
|
|
113
|
+
</div>
|
|
114
|
+
<Badge variant="outline">{t('aiAssistant:settings.futureToolsReady')}</Badge>
|
|
115
|
+
</div>
|
|
116
|
+
|
|
117
|
+
<div className="flex justify-end">
|
|
118
|
+
<Button onClick={() => save.mutate()} disabled={!data.canManage || save.isPending || !form.model.trim()}>
|
|
119
|
+
<Save className="size-4"/>
|
|
120
|
+
{save.isPending ? t('aiAssistant:settings.saving') : t('aiAssistant:settings.save')}
|
|
121
|
+
</Button>
|
|
122
|
+
</div>
|
|
123
|
+
</SettingsCard>
|
|
124
|
+
</div>);
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=ai-assistant-settings-section.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-assistant-settings-section.jsx","sourceRoot":"","sources":["../../src/pages/ai-assistant-settings-section.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-log-page.d.ts","sourceRoot":"","sources":["../../src/pages/audit-log-page.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AA4I9B,wBAAgB,YAAY,IAAI,KAAK,CAAC,YAAY,CAmLjD"}
|