@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
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { ListQuery, PropertyJSON } from '../types.js';
|
|
3
|
+
export interface ExportDialogProps {
|
|
4
|
+
resourceId: string;
|
|
5
|
+
resourceLabel: string;
|
|
6
|
+
properties: PropertyJSON[];
|
|
7
|
+
query: ListQuery | undefined;
|
|
8
|
+
onClose(): void;
|
|
9
|
+
}
|
|
10
|
+
export declare function ExportDialog({ resourceId, resourceLabel, properties, query, onClose, }: ExportDialogProps): React.ReactElement;
|
|
11
|
+
//# sourceMappingURL=export-dialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export-dialog.d.ts","sourceRoot":"","sources":["../../src/pages/export-dialog.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAoB9B,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1D,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,YAAY,EAAE,CAAA;IAC1B,KAAK,EAAE,SAAS,GAAG,SAAS,CAAA;IAC5B,OAAO,IAAI,IAAI,CAAA;CAChB;AAED,wBAAgB,YAAY,CAAC,EAC3B,UAAU,EACV,aAAa,EACb,UAAU,EACV,KAAK,EACL,OAAO,GACR,EAAE,iBAAiB,GAAG,KAAK,CAAC,YAAY,CAgHxC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
// Export dialog: lets the user download all records matching the current
|
|
2
|
+
// list filters/sorting as CSV or JSON. Rendered inside a generic <Dialog>
|
|
3
|
+
// via useDialogs().open() — the parent passes resourceId + visible
|
|
4
|
+
// properties + the active ListQuery.
|
|
5
|
+
import * as React from 'react';
|
|
6
|
+
import { Button, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from '@modern-admin/ui';
|
|
7
|
+
import { Download, FileJson, FileSpreadsheet, X } from 'lucide-react';
|
|
8
|
+
import { useAdminClient } from '../provider.js';
|
|
9
|
+
import { useI18n } from '../i18n.js';
|
|
10
|
+
import { useNotify } from '../notify.js';
|
|
11
|
+
import { downloadText, exportFilename, fetchAllRecords, recordsToCsv, recordsToJson, } from '../export.js';
|
|
12
|
+
export function ExportDialog({ resourceId, resourceLabel, properties, query, onClose, }) {
|
|
13
|
+
const client = useAdminClient();
|
|
14
|
+
const { t } = useI18n();
|
|
15
|
+
const notify = useNotify();
|
|
16
|
+
const [busy, setBusy] = React.useState(null);
|
|
17
|
+
const [progress, setProgress] = React.useState(null);
|
|
18
|
+
const abortRef = React.useRef(null);
|
|
19
|
+
React.useEffect(() => {
|
|
20
|
+
return () => abortRef.current?.abort();
|
|
21
|
+
}, []);
|
|
22
|
+
const run = async (format) => {
|
|
23
|
+
if (busy)
|
|
24
|
+
return;
|
|
25
|
+
setBusy(format);
|
|
26
|
+
setProgress({ loaded: 0, total: 0 });
|
|
27
|
+
const ctrl = new AbortController();
|
|
28
|
+
abortRef.current = ctrl;
|
|
29
|
+
try {
|
|
30
|
+
const records = await fetchAllRecords(client, resourceId, query, {
|
|
31
|
+
signal: ctrl.signal,
|
|
32
|
+
onProgress: (loaded, total) => setProgress({ loaded, total }),
|
|
33
|
+
});
|
|
34
|
+
const body = format === 'csv'
|
|
35
|
+
? recordsToCsv(records, { properties, query })
|
|
36
|
+
: recordsToJson(records, { properties, query });
|
|
37
|
+
const mime = format === 'csv' ? 'text/csv' : 'application/json';
|
|
38
|
+
downloadText(exportFilename(resourceId, format), mime, body);
|
|
39
|
+
notify.success({ key: 'export:exported', params: { count: records.length } });
|
|
40
|
+
onClose();
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
if (err.name === 'AbortError')
|
|
44
|
+
return;
|
|
45
|
+
notify.error({ key: 'export:exportFailed' }, { description: err instanceof Error ? err.message : String(err) });
|
|
46
|
+
}
|
|
47
|
+
finally {
|
|
48
|
+
setBusy(null);
|
|
49
|
+
setProgress(null);
|
|
50
|
+
abortRef.current = null;
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
return (<>
|
|
54
|
+
<DialogHeader>
|
|
55
|
+
<DialogTitle>{t('export:title')}</DialogTitle>
|
|
56
|
+
<DialogDescription>
|
|
57
|
+
{t('export:description', { resource: resourceLabel })}
|
|
58
|
+
</DialogDescription>
|
|
59
|
+
</DialogHeader>
|
|
60
|
+
|
|
61
|
+
<div className="grid grid-cols-1 gap-2 sm:grid-cols-2">
|
|
62
|
+
<Button type="button" variant="outline" className="h-auto justify-start gap-3 py-3" disabled={!!busy} onClick={() => run('csv')}>
|
|
63
|
+
<FileSpreadsheet className="size-5 shrink-0"/>
|
|
64
|
+
<div className="min-w-0 flex flex-col items-start text-left overflow-hidden">
|
|
65
|
+
<span className="font-medium">CSV</span>
|
|
66
|
+
<span className="text-xs text-muted-foreground truncate w-full">
|
|
67
|
+
{t('export:csvHint')}
|
|
68
|
+
</span>
|
|
69
|
+
</div>
|
|
70
|
+
</Button>
|
|
71
|
+
<Button type="button" variant="outline" className="h-auto justify-start gap-3 py-3" disabled={!!busy} onClick={() => run('json')}>
|
|
72
|
+
<FileJson className="size-5 shrink-0"/>
|
|
73
|
+
<div className="min-w-0 flex flex-col items-start text-left overflow-hidden">
|
|
74
|
+
<span className="font-medium">JSON</span>
|
|
75
|
+
<span className="text-xs text-muted-foreground truncate w-full">
|
|
76
|
+
{t('export:jsonHint')}
|
|
77
|
+
</span>
|
|
78
|
+
</div>
|
|
79
|
+
</Button>
|
|
80
|
+
</div>
|
|
81
|
+
|
|
82
|
+
{busy && (<div className="flex items-center gap-2 text-sm text-muted-foreground">
|
|
83
|
+
<Download className="size-4 animate-pulse"/>
|
|
84
|
+
<span>
|
|
85
|
+
{progress && progress.total > 0
|
|
86
|
+
? t('export:progress', { loaded: progress.loaded, total: progress.total })
|
|
87
|
+
: t('export:downloading')}
|
|
88
|
+
</span>
|
|
89
|
+
</div>)}
|
|
90
|
+
|
|
91
|
+
<DialogFooter>
|
|
92
|
+
<Button type="button" variant="ghost" onClick={() => {
|
|
93
|
+
abortRef.current?.abort();
|
|
94
|
+
onClose();
|
|
95
|
+
}}>
|
|
96
|
+
<X className="size-4"/>
|
|
97
|
+
{busy ? t('common:cancel') : t('common:close')}
|
|
98
|
+
</Button>
|
|
99
|
+
</DialogFooter>
|
|
100
|
+
</>);
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=export-dialog.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export-dialog.jsx","sourceRoot":"","sources":["../../src/pages/export-dialog.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"home-page.d.ts","sourceRoot":"","sources":["../../src/pages/home-page.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AA6B9B,wBAAgB,QAAQ,IAAI,KAAK,CAAC,YAAY,CA0R7C"}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Plus, Database, BarChart2, FolderPlus, Pencil, Trash2 } from 'lucide-react';
|
|
3
|
+
import { Button, Card, CardContent, CardHeader, CardTitle, Empty, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle, Tabs, TabsList, TabsTrigger, } from '@modern-admin/ui';
|
|
4
|
+
import { useResources, useCurrentUser } from '../hooks.js';
|
|
5
|
+
import { useI18n } from '../i18n.js';
|
|
6
|
+
import { Link } from '../router.js';
|
|
7
|
+
import { useDashboardCharts, ServerDashboardStore } from '../use-dashboard-charts.js';
|
|
8
|
+
import { useAdminClient } from '../provider.js';
|
|
9
|
+
import { useDialogs } from '../dialogs.js';
|
|
10
|
+
import { ChartWidget } from '../components/chart-widget.js';
|
|
11
|
+
import { ChartBuilderDialog } from '../components/chart-builder-dialog.js';
|
|
12
|
+
import { GroupSettingsDialog } from '../components/group-settings-dialog.js';
|
|
13
|
+
import { MoveChartDialog } from '../components/move-chart-dialog.js';
|
|
14
|
+
export function HomePage() {
|
|
15
|
+
const { t } = useI18n();
|
|
16
|
+
const resources = useResources();
|
|
17
|
+
const { user } = useCurrentUser();
|
|
18
|
+
const adminClient = useAdminClient();
|
|
19
|
+
const dialogs = useDialogs();
|
|
20
|
+
// Use server-backed store so charts persist across devices/browsers.
|
|
21
|
+
// Falls back gracefully when configStore is not configured server-side.
|
|
22
|
+
const serverStore = React.useMemo(() => new ServerDashboardStore(adminClient), [adminClient]);
|
|
23
|
+
const { charts, groups, addChart, updateChart, removeChart, addGroup, updateGroup, removeGroup, } = useDashboardCharts({
|
|
24
|
+
userId: user?.id ?? null,
|
|
25
|
+
store: serverStore,
|
|
26
|
+
});
|
|
27
|
+
// Only show resources explicitly visible in navigation (same rule as sidebar).
|
|
28
|
+
const navResources = React.useMemo(() => resources.filter((r) => r.navigation !== null), [resources]);
|
|
29
|
+
const [building, setBuilding] = React.useState(false);
|
|
30
|
+
const [editingId, setEditingId] = React.useState(null);
|
|
31
|
+
// null = no dialog; 'new' = create; ChartGroup = edit-existing.
|
|
32
|
+
const [groupDialog, setGroupDialog] = React.useState(null);
|
|
33
|
+
const [activeGroupId, setActiveGroupId] = React.useState(null);
|
|
34
|
+
// Chart being moved — null when dialog is closed.
|
|
35
|
+
const [movingChart, setMovingChart] = React.useState(null);
|
|
36
|
+
// Keep `activeGroupId` valid when groups change (group removed, list reloaded
|
|
37
|
+
// from store, etc.). When at least one group exists we always render charts
|
|
38
|
+
// bucketed by group, so we need a definite active id.
|
|
39
|
+
React.useEffect(() => {
|
|
40
|
+
if (groups.length === 0) {
|
|
41
|
+
setActiveGroupId(null);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if (!activeGroupId || !groups.some((g) => g.id === activeGroupId)) {
|
|
45
|
+
setActiveGroupId(groups[0].id);
|
|
46
|
+
}
|
|
47
|
+
}, [groups, activeGroupId]);
|
|
48
|
+
const editingChart = editingId ? charts.find((c) => c.id === editingId) : undefined;
|
|
49
|
+
// Build the chart bucket for the active group: charts whose `groupId`
|
|
50
|
+
// matches OR (fallback) ungrouped charts when the active group is the
|
|
51
|
+
// first one. Sorted by `order` then `createdAt`.
|
|
52
|
+
const firstGroupId = groups[0]?.id ?? null;
|
|
53
|
+
const visibleCharts = React.useMemo(() => {
|
|
54
|
+
if (groups.length === 0)
|
|
55
|
+
return [...charts].sort(byChartOrder);
|
|
56
|
+
if (!activeGroupId)
|
|
57
|
+
return [];
|
|
58
|
+
const filtered = charts.filter((c) => {
|
|
59
|
+
if (c.groupId)
|
|
60
|
+
return c.groupId === activeGroupId;
|
|
61
|
+
// Ungrouped charts default into the first group so they remain visible.
|
|
62
|
+
return activeGroupId === firstGroupId;
|
|
63
|
+
});
|
|
64
|
+
return filtered.sort(byChartOrder);
|
|
65
|
+
}, [charts, groups.length, activeGroupId, firstGroupId]);
|
|
66
|
+
const activeGroup = activeGroupId ? groups.find((g) => g.id === activeGroupId) ?? null : null;
|
|
67
|
+
const handleDeleteChart = async (chart) => {
|
|
68
|
+
const ok = await dialogs.confirm({
|
|
69
|
+
title: t('chart:deleteChartConfirm'),
|
|
70
|
+
description: t('chart:deleteChartConfirmHint'),
|
|
71
|
+
confirmLabel: t('common:delete'),
|
|
72
|
+
destructive: true,
|
|
73
|
+
});
|
|
74
|
+
if (ok)
|
|
75
|
+
removeChart(chart.id);
|
|
76
|
+
};
|
|
77
|
+
const handleDeleteGroup = async (group) => {
|
|
78
|
+
const count = charts.filter((c) => {
|
|
79
|
+
if (c.groupId)
|
|
80
|
+
return c.groupId === group.id;
|
|
81
|
+
// Ungrouped charts also belong to the first group at display time.
|
|
82
|
+
return group.id === firstGroupId;
|
|
83
|
+
}).length;
|
|
84
|
+
const ok = await dialogs.confirm({
|
|
85
|
+
title: t('chart:deleteGroupConfirm'),
|
|
86
|
+
description: t('chart:deleteGroupConfirmHint').replace('{count}', String(count)),
|
|
87
|
+
confirmLabel: t('common:delete'),
|
|
88
|
+
destructive: true,
|
|
89
|
+
});
|
|
90
|
+
if (ok)
|
|
91
|
+
removeGroup(group.id);
|
|
92
|
+
};
|
|
93
|
+
return (<div className="space-y-3 sm:space-y-6">
|
|
94
|
+
{/* ── Dashboard charts ──────────────────────────────────────── */}
|
|
95
|
+
<Card>
|
|
96
|
+
<CardHeader className="flex flex-row items-center justify-between p-3 pb-2 space-y-0 gap-2 sm:p-6 sm:pb-2">
|
|
97
|
+
<CardTitle>{t('chart:dashboard')}</CardTitle>
|
|
98
|
+
<div className="flex items-center gap-2">
|
|
99
|
+
<Button size="sm" variant="outline" onClick={() => setGroupDialog('new')}>
|
|
100
|
+
<FolderPlus className="size-4"/>
|
|
101
|
+
<span className="hidden sm:inline ml-1.5">{t('chart:addGroup')}</span>
|
|
102
|
+
</Button>
|
|
103
|
+
<Button size="sm" onClick={() => setBuilding(true)} disabled={navResources.length === 0}>
|
|
104
|
+
<Plus className="size-4"/>
|
|
105
|
+
<span className="hidden sm:inline ml-1.5">{t('chart:addChart')}</span>
|
|
106
|
+
</Button>
|
|
107
|
+
</div>
|
|
108
|
+
</CardHeader>
|
|
109
|
+
<CardContent className="p-3 pt-0 sm:p-6 sm:pt-0">
|
|
110
|
+
{groups.length > 0 && activeGroupId && (<Tabs value={activeGroupId} onValueChange={(v) => setActiveGroupId(v)} className="mb-4">
|
|
111
|
+
<div className="flex items-end justify-between gap-2">
|
|
112
|
+
<TabsList className="flex-1">
|
|
113
|
+
{groups.map((g) => (<TabsTrigger key={g.id} value={g.id}>
|
|
114
|
+
{g.name}
|
|
115
|
+
</TabsTrigger>))}
|
|
116
|
+
</TabsList>
|
|
117
|
+
{activeGroup && (<div className="mb-1 flex shrink-0 items-center gap-1">
|
|
118
|
+
<Button size="sm" variant="ghost" onClick={() => setGroupDialog(activeGroup)} aria-label={t('chart:editGroup')}>
|
|
119
|
+
<Pencil className="size-3.5"/>
|
|
120
|
+
<span className="hidden sm:inline ml-1.5">{t('chart:editGroup')}</span>
|
|
121
|
+
</Button>
|
|
122
|
+
<Button size="sm" variant="ghost" onClick={() => void handleDeleteGroup(activeGroup)} aria-label={t('chart:deleteGroup')}>
|
|
123
|
+
<Trash2 className="size-3.5"/>
|
|
124
|
+
<span className="hidden sm:inline ml-1.5">{t('chart:deleteGroup')}</span>
|
|
125
|
+
</Button>
|
|
126
|
+
</div>)}
|
|
127
|
+
</div>
|
|
128
|
+
</Tabs>)}
|
|
129
|
+
|
|
130
|
+
{visibleCharts.length === 0 ? (<Empty className="border-0 py-4">
|
|
131
|
+
<EmptyHeader>
|
|
132
|
+
<EmptyMedia>
|
|
133
|
+
<BarChart2 />
|
|
134
|
+
</EmptyMedia>
|
|
135
|
+
<EmptyTitle>{t('chart:noCharts')}</EmptyTitle>
|
|
136
|
+
<EmptyDescription>{t('chart:noChartsHint')}</EmptyDescription>
|
|
137
|
+
</EmptyHeader>
|
|
138
|
+
</Empty>) : (<div className="grid gap-3 grid-cols-1 sm:gap-4 md:grid-cols-2">
|
|
139
|
+
{visibleCharts.map((c) => (<div key={c.id} className={c.width === 'full' ? 'md:col-span-2' : undefined}>
|
|
140
|
+
<ChartWidget config={c} onEdit={() => setEditingId(c.id)} onDelete={() => void handleDeleteChart(c)} onMove={() => setMovingChart(c)} onUpdate={(input) => updateChart(c.id, input)}/>
|
|
141
|
+
</div>))}
|
|
142
|
+
</div>)}
|
|
143
|
+
</CardContent>
|
|
144
|
+
</Card>
|
|
145
|
+
|
|
146
|
+
{/* ── Resources list ────────────────────────────────────────── */}
|
|
147
|
+
<Card>
|
|
148
|
+
<CardHeader>
|
|
149
|
+
<CardTitle>{t('common:resources')}</CardTitle>
|
|
150
|
+
</CardHeader>
|
|
151
|
+
<CardContent>
|
|
152
|
+
{navResources.length === 0 ? (<Empty className="border-0">
|
|
153
|
+
<EmptyHeader>
|
|
154
|
+
<EmptyMedia>
|
|
155
|
+
<Database />
|
|
156
|
+
</EmptyMedia>
|
|
157
|
+
<EmptyTitle>{t('common:noRecords')}</EmptyTitle>
|
|
158
|
+
<EmptyDescription>
|
|
159
|
+
{t('common:noRecordsHint', { resource: 'resource' })}
|
|
160
|
+
</EmptyDescription>
|
|
161
|
+
</EmptyHeader>
|
|
162
|
+
</Empty>) : (<ul className="grid gap-2 sm:grid-cols-2 md:grid-cols-3">
|
|
163
|
+
{navResources.map((r) => (<li key={r.id}>
|
|
164
|
+
<Link to={{ name: 'list', resourceId: r.id }} className="block rounded-md border border-border bg-card p-4 hover:border-primary/40 hover:shadow-sm transition-shadow">
|
|
165
|
+
<div className="font-semibold">{r.name}</div>
|
|
166
|
+
{r.name !== r.id && (<div className="text-xs text-muted-foreground">{r.id}</div>)}
|
|
167
|
+
</Link>
|
|
168
|
+
</li>))}
|
|
169
|
+
</ul>)}
|
|
170
|
+
</CardContent>
|
|
171
|
+
</Card>
|
|
172
|
+
|
|
173
|
+
{/* ── Chart builder dialog ──────────────────────────────────── */}
|
|
174
|
+
{building && (<ChartBuilderDialog onSave={(input) => {
|
|
175
|
+
// New charts inherit the active group so the user sees them in
|
|
176
|
+
// the tab they were on. The hook also auto-falls back to the
|
|
177
|
+
// first group if `groupId` is undefined.
|
|
178
|
+
addChart(activeGroupId ? { ...input, groupId: activeGroupId } : input);
|
|
179
|
+
setBuilding(false);
|
|
180
|
+
}} onClose={() => setBuilding(false)}/>)}
|
|
181
|
+
{editingChart && (<ChartBuilderDialog initial={editingChart} onSave={(input) => { updateChart(editingChart.id, input); setEditingId(null); }} onClose={() => setEditingId(null)}/>)}
|
|
182
|
+
|
|
183
|
+
{/* ── Move chart dialog ─────────────────────────────────────── */}
|
|
184
|
+
{movingChart && (<MoveChartDialog groups={groups} initialGroupId={movingChart.groupId} initialOrder={movingChart.order} onSave={({ groupId, order }) => {
|
|
185
|
+
updateChart(movingChart.id, { ...movingChart, groupId, order });
|
|
186
|
+
setMovingChart(null);
|
|
187
|
+
}} onClose={() => setMovingChart(null)} onCreateGroup={() => {
|
|
188
|
+
setMovingChart(null);
|
|
189
|
+
setGroupDialog('new');
|
|
190
|
+
}}/>)}
|
|
191
|
+
|
|
192
|
+
{/* ── Group settings dialog ─────────────────────────────────── */}
|
|
193
|
+
{groupDialog && (<GroupSettingsDialog initial={groupDialog === 'new' ? undefined : groupDialog} onSave={(input) => {
|
|
194
|
+
if (groupDialog === 'new') {
|
|
195
|
+
const newId = addGroup(input);
|
|
196
|
+
setActiveGroupId(newId);
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
updateGroup(groupDialog.id, input);
|
|
200
|
+
}
|
|
201
|
+
setGroupDialog(null);
|
|
202
|
+
}} onClose={() => setGroupDialog(null)}/>)}
|
|
203
|
+
</div>);
|
|
204
|
+
}
|
|
205
|
+
/** Sort charts within a group: by `order` asc, ties broken by `createdAt`. */
|
|
206
|
+
function byChartOrder(a, b) {
|
|
207
|
+
if (a.order !== b.order)
|
|
208
|
+
return a.order - b.order;
|
|
209
|
+
return a.createdAt.localeCompare(b.createdAt);
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=home-page.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"home-page.jsx","sourceRoot":"","sources":["../../src/pages/home-page.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type ListQueryState } from '../router.js';
|
|
3
|
+
/** Toggles for individual chrome / toolbar pieces. All default to `true`. */
|
|
4
|
+
export interface ResourceListFeatures {
|
|
5
|
+
breadcrumbs?: boolean;
|
|
6
|
+
title?: boolean;
|
|
7
|
+
refresh?: boolean;
|
|
8
|
+
filters?: boolean;
|
|
9
|
+
columns?: boolean;
|
|
10
|
+
export?: boolean;
|
|
11
|
+
create?: boolean;
|
|
12
|
+
bulk?: boolean;
|
|
13
|
+
/** Toolbar-level "Actions" dropdown for resource-scoped custom actions. */
|
|
14
|
+
actions?: boolean;
|
|
15
|
+
/** Per-column filter popovers in the table header. */
|
|
16
|
+
headerFilters?: boolean;
|
|
17
|
+
/** Wrap table + toolbar in a Card. Set false when embedding inside another card. */
|
|
18
|
+
card?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface ResourceListPageProps {
|
|
21
|
+
resourceId: string;
|
|
22
|
+
/** When provided, the table runs in "controlled" mode: query state comes
|
|
23
|
+
* from props instead of the URL hash. Both `query` and `onQueryChange`
|
|
24
|
+
* must be supplied together. */
|
|
25
|
+
query?: ListQueryState;
|
|
26
|
+
onQueryChange?: (next: ListQueryState) => void;
|
|
27
|
+
/** Filters always applied to the data query but hidden from the filter UI
|
|
28
|
+
* and never written to the URL. Used to embed the list as a related-records
|
|
29
|
+
* view filtered by a parent record's id. */
|
|
30
|
+
lockedFilters?: Record<string, string>;
|
|
31
|
+
features?: ResourceListFeatures;
|
|
32
|
+
/** When provided, row selection is controlled from outside. The
|
|
33
|
+
* internal bulk action bar should be hidden (`features.bulk = false`)
|
|
34
|
+
* in this mode — the parent is consuming the selection. */
|
|
35
|
+
selectedIds?: ReadonlyArray<string>;
|
|
36
|
+
onSelectionChange?: (next: string[]) => void;
|
|
37
|
+
/** Disable row click → edit and link cells. Used by the picker dialog
|
|
38
|
+
* so clicking a row just toggles selection. */
|
|
39
|
+
disableRowNavigation?: boolean;
|
|
40
|
+
}
|
|
41
|
+
export declare function ResourceListPage({ resourceId, query: controlledQuery, onQueryChange, lockedFilters, features, selectedIds: controlledSelectedIds, onSelectionChange, disableRowNavigation, }: ResourceListPageProps): React.ReactElement;
|
|
42
|
+
//# sourceMappingURL=list-page.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-page.d.ts","sourceRoot":"","sources":["../../src/pages/list-page.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AA+F9B,OAAO,EAEL,KAAK,cAAc,EAKpB,MAAM,cAAc,CAAA;AAsJrB,6EAA6E;AAC7E,MAAM,WAAW,oBAAoB;IACnC,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,2EAA2E;IAC3E,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,sDAAsD;IACtD,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,oFAAoF;IACpF,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAA;IAClB;;qCAEiC;IACjC,KAAK,CAAC,EAAE,cAAc,CAAA;IACtB,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAA;IAC9C;;iDAE6C;IAC7C,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACtC,QAAQ,CAAC,EAAE,oBAAoB,CAAA;IAC/B;;gEAE4D;IAC5D,WAAW,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACnC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;IAC5C;oDACgD;IAChD,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAC/B;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,UAAU,EACV,KAAK,EAAE,eAAe,EACtB,aAAa,EACb,aAAa,EACb,QAAQ,EACR,WAAW,EAAE,qBAAqB,EAClC,iBAAiB,EACjB,oBAAoB,GACrB,EAAE,qBAAqB,GAAG,KAAK,CAAC,YAAY,CAunC5C"}
|