@nestjs-dash/design-system 1.1.1 → 1.2.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/README.md +9 -13
- package/dist/components/admin-shell.d.ts +0 -1
- package/dist/components/admin-shell.js +2 -3
- package/dist/components/chart.d.ts +0 -1
- package/dist/components/chart.js +0 -1
- package/dist/components/confirm-dialog.d.ts +0 -1
- package/dist/components/confirm-dialog.js +0 -1
- package/dist/components/data-pagination.d.ts +0 -1
- package/dist/components/data-pagination.js +0 -1
- package/dist/components/data-table.d.ts +0 -1
- package/dist/components/data-table.js +10 -2
- package/dist/components/empty-state.d.ts +0 -1
- package/dist/components/empty-state.js +0 -1
- package/dist/components/file-upload-field.d.ts +0 -1
- package/dist/components/file-upload-field.js +0 -1
- package/dist/components/icon.d.ts +0 -1
- package/dist/components/icon.js +0 -1
- package/dist/components/image-placeholder.d.ts +0 -1
- package/dist/components/image-placeholder.js +0 -1
- package/dist/components/image-upload-field.d.ts +0 -1
- package/dist/components/image-upload-field.js +0 -1
- package/dist/components/repeater-field.d.ts +0 -1
- package/dist/components/repeater-field.js +0 -1
- package/dist/components/rich-box-field.d.ts +0 -1
- package/dist/components/rich-box-field.js +0 -1
- package/dist/components/rich-editor-field.d.ts +0 -1
- package/dist/components/rich-editor-field.js +0 -1
- package/dist/components/schema-form.d.ts +0 -1
- package/dist/components/schema-form.js +9 -3
- package/dist/components/tags-input-field.d.ts +0 -1
- package/dist/components/tags-input-field.js +0 -1
- package/dist/components/theme-toggle.d.ts +0 -1
- package/dist/components/theme-toggle.js +0 -1
- package/dist/components/ui/alert.d.ts +0 -1
- package/dist/components/ui/alert.js +0 -1
- package/dist/components/ui/avatar.d.ts +0 -1
- package/dist/components/ui/avatar.js +0 -1
- package/dist/components/ui/badge.d.ts +0 -1
- package/dist/components/ui/badge.js +0 -1
- package/dist/components/ui/breadcrumb.d.ts +0 -1
- package/dist/components/ui/breadcrumb.js +0 -1
- package/dist/components/ui/button.d.ts +0 -1
- package/dist/components/ui/button.js +0 -1
- package/dist/components/ui/card.d.ts +0 -1
- package/dist/components/ui/card.js +0 -1
- package/dist/components/ui/checkbox.d.ts +0 -1
- package/dist/components/ui/checkbox.js +0 -1
- package/dist/components/ui/collapsible.d.ts +0 -1
- package/dist/components/ui/collapsible.js +0 -1
- package/dist/components/ui/dialog.d.ts +0 -1
- package/dist/components/ui/dialog.js +0 -1
- package/dist/components/ui/dropdown-menu.d.ts +0 -1
- package/dist/components/ui/dropdown-menu.js +0 -1
- package/dist/components/ui/input.d.ts +0 -1
- package/dist/components/ui/input.js +0 -1
- package/dist/components/ui/label.d.ts +0 -1
- package/dist/components/ui/label.js +0 -1
- package/dist/components/ui/pagination.d.ts +0 -1
- package/dist/components/ui/pagination.js +0 -1
- package/dist/components/ui/scroll-area.d.ts +0 -1
- package/dist/components/ui/scroll-area.js +0 -1
- package/dist/components/ui/select.d.ts +0 -1
- package/dist/components/ui/select.js +0 -1
- package/dist/components/ui/separator.d.ts +0 -1
- package/dist/components/ui/separator.js +0 -1
- package/dist/components/ui/sheet.d.ts +0 -1
- package/dist/components/ui/sheet.js +0 -1
- package/dist/components/ui/sidebar.d.ts +0 -1
- package/dist/components/ui/sidebar.js +0 -1
- package/dist/components/ui/skeleton.d.ts +0 -1
- package/dist/components/ui/skeleton.js +0 -1
- package/dist/components/ui/table.d.ts +0 -1
- package/dist/components/ui/table.js +0 -1
- package/dist/components/ui/tabs.d.ts +0 -1
- package/dist/components/ui/tabs.js +0 -1
- package/dist/components/ui/textarea.d.ts +0 -1
- package/dist/components/ui/textarea.js +0 -1
- package/dist/components/ui/tooltip.d.ts +0 -1
- package/dist/components/ui/tooltip.js +0 -1
- package/dist/hooks/use-mobile.d.ts +0 -1
- package/dist/hooks/use-mobile.js +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -1
- package/dist/lib/badge-colors.d.ts +0 -1
- package/dist/lib/badge-colors.js +0 -1
- package/dist/lib/format-date.d.ts +0 -1
- package/dist/lib/format-date.js +0 -1
- package/dist/lib/utils.d.ts +0 -1
- package/dist/lib/utils.js +0 -1
- package/dist/pagination.d.ts +0 -1
- package/dist/pagination.js +0 -1
- package/dist/ui.d.ts +0 -1
- package/dist/ui.js +0 -1
- package/package.json +1 -1
- package/dist/components/admin-shell.d.ts.map +0 -1
- package/dist/components/admin-shell.js.map +0 -1
- package/dist/components/chart.d.ts.map +0 -1
- package/dist/components/chart.js.map +0 -1
- package/dist/components/confirm-dialog.d.ts.map +0 -1
- package/dist/components/confirm-dialog.js.map +0 -1
- package/dist/components/data-pagination.d.ts.map +0 -1
- package/dist/components/data-pagination.js.map +0 -1
- package/dist/components/data-table.d.ts.map +0 -1
- package/dist/components/data-table.js.map +0 -1
- package/dist/components/empty-state.d.ts.map +0 -1
- package/dist/components/empty-state.js.map +0 -1
- package/dist/components/file-upload-field.d.ts.map +0 -1
- package/dist/components/file-upload-field.js.map +0 -1
- package/dist/components/icon.d.ts.map +0 -1
- package/dist/components/icon.js.map +0 -1
- package/dist/components/image-placeholder.d.ts.map +0 -1
- package/dist/components/image-placeholder.js.map +0 -1
- package/dist/components/image-upload-field.d.ts.map +0 -1
- package/dist/components/image-upload-field.js.map +0 -1
- package/dist/components/repeater-field.d.ts.map +0 -1
- package/dist/components/repeater-field.js.map +0 -1
- package/dist/components/rich-box-field.d.ts.map +0 -1
- package/dist/components/rich-box-field.js.map +0 -1
- package/dist/components/rich-editor-field.d.ts.map +0 -1
- package/dist/components/rich-editor-field.js.map +0 -1
- package/dist/components/schema-form.d.ts.map +0 -1
- package/dist/components/schema-form.js.map +0 -1
- package/dist/components/tags-input-field.d.ts.map +0 -1
- package/dist/components/tags-input-field.js.map +0 -1
- package/dist/components/theme-toggle.d.ts.map +0 -1
- package/dist/components/theme-toggle.js.map +0 -1
- package/dist/components/ui/alert.d.ts.map +0 -1
- package/dist/components/ui/alert.js.map +0 -1
- package/dist/components/ui/avatar.d.ts.map +0 -1
- package/dist/components/ui/avatar.js.map +0 -1
- package/dist/components/ui/badge.d.ts.map +0 -1
- package/dist/components/ui/badge.js.map +0 -1
- package/dist/components/ui/breadcrumb.d.ts.map +0 -1
- package/dist/components/ui/breadcrumb.js.map +0 -1
- package/dist/components/ui/button.d.ts.map +0 -1
- package/dist/components/ui/button.js.map +0 -1
- package/dist/components/ui/card.d.ts.map +0 -1
- package/dist/components/ui/card.js.map +0 -1
- package/dist/components/ui/checkbox.d.ts.map +0 -1
- package/dist/components/ui/checkbox.js.map +0 -1
- package/dist/components/ui/collapsible.d.ts.map +0 -1
- package/dist/components/ui/collapsible.js.map +0 -1
- package/dist/components/ui/dialog.d.ts.map +0 -1
- package/dist/components/ui/dialog.js.map +0 -1
- package/dist/components/ui/dropdown-menu.d.ts.map +0 -1
- package/dist/components/ui/dropdown-menu.js.map +0 -1
- package/dist/components/ui/input.d.ts.map +0 -1
- package/dist/components/ui/input.js.map +0 -1
- package/dist/components/ui/label.d.ts.map +0 -1
- package/dist/components/ui/label.js.map +0 -1
- package/dist/components/ui/pagination.d.ts.map +0 -1
- package/dist/components/ui/pagination.js.map +0 -1
- package/dist/components/ui/scroll-area.d.ts.map +0 -1
- package/dist/components/ui/scroll-area.js.map +0 -1
- package/dist/components/ui/select.d.ts.map +0 -1
- package/dist/components/ui/select.js.map +0 -1
- package/dist/components/ui/separator.d.ts.map +0 -1
- package/dist/components/ui/separator.js.map +0 -1
- package/dist/components/ui/sheet.d.ts.map +0 -1
- package/dist/components/ui/sheet.js.map +0 -1
- package/dist/components/ui/sidebar.d.ts.map +0 -1
- package/dist/components/ui/sidebar.js.map +0 -1
- package/dist/components/ui/skeleton.d.ts.map +0 -1
- package/dist/components/ui/skeleton.js.map +0 -1
- package/dist/components/ui/table.d.ts.map +0 -1
- package/dist/components/ui/table.js.map +0 -1
- package/dist/components/ui/tabs.d.ts.map +0 -1
- package/dist/components/ui/tabs.js.map +0 -1
- package/dist/components/ui/textarea.d.ts.map +0 -1
- package/dist/components/ui/textarea.js.map +0 -1
- package/dist/components/ui/tooltip.d.ts.map +0 -1
- package/dist/components/ui/tooltip.js.map +0 -1
- package/dist/hooks/use-mobile.d.ts.map +0 -1
- package/dist/hooks/use-mobile.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lib/badge-colors.d.ts.map +0 -1
- package/dist/lib/badge-colors.js.map +0 -1
- package/dist/lib/format-date.d.ts.map +0 -1
- package/dist/lib/format-date.js.map +0 -1
- package/dist/lib/utils.d.ts.map +0 -1
- package/dist/lib/utils.js.map +0 -1
- package/dist/pagination.d.ts.map +0 -1
- package/dist/pagination.js.map +0 -1
- package/dist/ui.d.ts.map +0 -1
- package/dist/ui.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @nestjs-dash/design-system
|
|
2
2
|
|
|
3
|
-
A [shadcn/ui](https://ui.shadcn.com/) + Tailwind CSS design system, plus the server-driven UI (SDUI) renderer that turns the JSON `SchemaNode`/`ChartSpec` trees produced by `@nestjs-dash/core` into React. This is the client-side rendering half of nestjs-dash's admin shell — `@nestjs-dash/nestjs` uses it for the built-in React SSR shell, but the components/renderer are usable standalone too.
|
|
3
|
+
A [shadcn/ui](https://ui.shadcn.com/) + Tailwind CSS design system, plus the server-driven UI (SDUI) renderer that turns the JSON `SchemaNode`/`ChartSpec` trees produced by `@nestjs-dash/core` into React. This is the client-side rendering half of nestjs-dash's admin shell — `@nestjs-dash/nestjs` uses it for the built-in React SSR shell, but the components/renderer are usable standalone too. It depends only on `@nestjs-dash/support` for shared types — no coupling to `@nestjs-dash/core`'s server-side builders beyond the JSON shapes they agree on.
|
|
4
4
|
|
|
5
5
|
## Install
|
|
6
6
|
|
|
@@ -14,14 +14,14 @@ pnpm add @nestjs-dash/design-system react react-dom
|
|
|
14
14
|
|
|
15
15
|
This package publishes several entry points, not just the package root:
|
|
16
16
|
|
|
17
|
-
| Import
|
|
18
|
-
|
|
19
|
-
| `@nestjs-dash/design-system`
|
|
20
|
-
| `@nestjs-dash/design-system/ui`
|
|
21
|
-
| `@nestjs-dash/design-system/components/*`
|
|
22
|
-
| `@nestjs-dash/design-system/hooks/*`
|
|
23
|
-
| `@nestjs-dash/design-system/lib/*`
|
|
24
|
-
| `@nestjs-dash/design-system/nestjs-dash.css` (alias `./styles.css`) | Compiled Tailwind stylesheet — import once at your app's root
|
|
17
|
+
| Import | Contents |
|
|
18
|
+
| ------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
|
|
19
|
+
| `@nestjs-dash/design-system` | Top-level renderer entry (`renderSchemaNode`, `SchemaForm`, `DataTable`, `ChartWidget`, `ThemeToggle`, …) |
|
|
20
|
+
| `@nestjs-dash/design-system/ui` | Shared Tailwind utility class-string tokens (`ui`, `btnClass`) for Nest SSR templates, without the SDUI renderer |
|
|
21
|
+
| `@nestjs-dash/design-system/components/*` | Individual components, importable one at a time |
|
|
22
|
+
| `@nestjs-dash/design-system/hooks/*` | React hooks |
|
|
23
|
+
| `@nestjs-dash/design-system/lib/*` | Utilities, including `cn` (class-name merge) |
|
|
24
|
+
| `@nestjs-dash/design-system/nestjs-dash.css` (alias `./styles.css`) | Compiled Tailwind stylesheet — import once at your app's root |
|
|
25
25
|
|
|
26
26
|
## Usage
|
|
27
27
|
|
|
@@ -38,10 +38,6 @@ function Field({ node }: { node: SchemaNode }) {
|
|
|
38
38
|
|
|
39
39
|
Notable renderers: `SchemaForm` (form field trees), `DataTable` (resource tables), `ChartWidget` (renders a `ChartSpec` from `@nestjs-dash/support` using Recharts), upload/repeater/rich-editor fields, and `ThemeToggle` for light/dark mode.
|
|
40
40
|
|
|
41
|
-
## Part of nestjs-dash
|
|
42
|
-
|
|
43
|
-
This package is one piece of [nestjs-dash](https://github.com/nestjs-dash/nestjs-dash), a NestJS-native admin framework. It depends only on `@nestjs-dash/support` for shared types — no coupling to `@nestjs-dash/core`'s server-side builders beyond the JSON shapes they agree on.
|
|
44
|
-
|
|
45
41
|
## License
|
|
46
42
|
|
|
47
43
|
MIT
|
|
@@ -22,7 +22,7 @@ import { TooltipProvider } from './ui/tooltip.js';
|
|
|
22
22
|
* first paint even for a valid logo — an acceptable tradeoff for a general
|
|
23
23
|
* avatar, not for branding that's above-the-fold on every page.
|
|
24
24
|
*/
|
|
25
|
-
function SidebarBrand({ brandName, logoUrl, path }) {
|
|
25
|
+
function SidebarBrand({ brandName, logoUrl, path, }) {
|
|
26
26
|
const { state, isMobile } = useSidebar();
|
|
27
27
|
const collapsed = state === 'collapsed' && !isMobile;
|
|
28
28
|
const [imageFailed, setImageFailed] = React.useState(false);
|
|
@@ -66,6 +66,5 @@ export function AdminShell(props) {
|
|
|
66
66
|
}
|
|
67
67
|
nodes.push(_jsx(BreadcrumbItem, { children: isLast || !item.href ? (_jsx(BreadcrumbPage, { children: item.label })) : (_jsx(BreadcrumbLink, { href: item.href, children: item.label })) }, `${item.label}-${index}`));
|
|
68
68
|
return nodes;
|
|
69
|
-
}) }) })] })) : null, props.header ? _jsx("div", { className: "ml-auto flex items-center gap-2", children: props.header }) : null] }), _jsx("main", { className: "flex-1 p-6 space-y-4", children: body })] })] }) }));
|
|
69
|
+
}) }) })] })) : null, props.header ? (_jsx("div", { className: "ml-auto flex items-center gap-2", children: props.header })) : null] }), _jsx("main", { className: "flex-1 p-6 space-y-4", children: body })] })] }) }));
|
|
70
70
|
}
|
|
71
|
-
//# sourceMappingURL=admin-shell.js.map
|
package/dist/components/chart.js
CHANGED
|
@@ -65,4 +65,3 @@ export function ChartWidget({ spec }) {
|
|
|
65
65
|
const legend = spec.legend ?? spec.kind === 'pie';
|
|
66
66
|
return (_jsxs(Card, { children: [spec.title || spec.description ? (_jsxs(CardHeader, { children: [spec.title ? _jsx(CardTitle, { children: spec.title }) : null, spec.description ? _jsx(CardDescription, { children: spec.description }) : null] })) : null, _jsx(CardContent, { children: spec.data.length === 0 ? (_jsx(EmptyState, { title: spec.emptyLabel ?? 'No data yet', description: spec.emptyLabel ? undefined : 'Nothing to chart yet.' })) : (_jsx(ChartContainer, { height: spec.height ?? 240, children: spec.kind === 'bar' ? (_jsx(RechartsBar, { data: spec.data, categoryKey: spec.categoryKey, series: spec.series, legend: legend })) : spec.kind === 'line' ? (_jsx(RechartsLine, { data: spec.data, categoryKey: spec.categoryKey, series: spec.series, legend: legend })) : (_jsx(RechartsPie, { data: spec.data, categoryKey: spec.categoryKey, series: spec.series, legend: legend })) })) })] }));
|
|
67
67
|
}
|
|
68
|
-
//# sourceMappingURL=chart.js.map
|
|
@@ -5,4 +5,3 @@ export function ConfirmDialog(props) {
|
|
|
5
5
|
const confirmVariant = props.confirmVariant ?? 'destructive';
|
|
6
6
|
return (_jsxs(Dialog, { children: [_jsx(DialogTrigger, { asChild: true, children: props.trigger }), _jsxs(DialogContent, { children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { children: props.title }), props.description ? _jsx(DialogDescription, { children: props.description }) : null] }), props.formAction ? (_jsxs("form", { method: props.method ?? 'post', action: props.formAction, className: "space-y-4", children: [props.children, _jsxs(DialogFooter, { children: [_jsx(DialogClose, { asChild: true, children: _jsx(Button, { type: "button", variant: "secondary", children: props.cancelLabel ?? 'Cancel' }) }), _jsx(Button, { type: "submit", variant: confirmVariant, children: props.confirmLabel ?? 'Confirm' })] })] })) : (_jsxs(_Fragment, { children: [props.children, _jsxs(DialogFooter, { children: [_jsx(DialogClose, { asChild: true, children: _jsx(Button, { type: "button", variant: "secondary", children: props.cancelLabel ?? 'Cancel' }) }), _jsx(Button, { type: "button", variant: confirmVariant, onClick: props.onConfirm, children: props.confirmLabel ?? 'Confirm' })] })] }))] })] }));
|
|
7
7
|
}
|
|
8
|
-
//# sourceMappingURL=confirm-dialog.js.map
|
|
@@ -26,8 +26,17 @@ function defaultCell(column, raw) {
|
|
|
26
26
|
return null;
|
|
27
27
|
return column.props.since ? formatRelativeTime(date) : formatDate(date);
|
|
28
28
|
}
|
|
29
|
-
default:
|
|
29
|
+
default: {
|
|
30
|
+
// `TextColumn.json(property)` projects one fixed key out of a JSON column (e.g. one locale
|
|
31
|
+
// of a `{ en, ar }` column) — without this, `raw` would stringify to "[object Object]".
|
|
32
|
+
if (column.props.json === true && typeof column.props.jsonProperty === 'string') {
|
|
33
|
+
const projected = raw != null && typeof raw === 'object'
|
|
34
|
+
? raw[column.props.jsonProperty]
|
|
35
|
+
: undefined;
|
|
36
|
+
return String(projected ?? '');
|
|
37
|
+
}
|
|
30
38
|
return String(raw ?? '');
|
|
39
|
+
}
|
|
31
40
|
}
|
|
32
41
|
}
|
|
33
42
|
function sortDirectionFor(name, sortBy) {
|
|
@@ -79,4 +88,3 @@ export function DataTable(props) {
|
|
|
79
88
|
}
|
|
80
89
|
return (_jsxs("div", { children: [table, _jsx(DataPagination, { meta: props.meta, buildHref: props.buildHref, onPageChange: props.onPageChange, onLimitChange: props.onLimitChange })] }));
|
|
81
90
|
}
|
|
82
|
-
//# sourceMappingURL=data-table.js.map
|
|
@@ -2,4 +2,3 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
export function EmptyState(props) {
|
|
3
3
|
return (_jsxs("div", { className: "p-8 text-center text-muted-foreground", "data-slot": "empty-state", children: [_jsx("h3", { className: "text-base font-semibold text-foreground", children: props.title }), props.description ? (_jsx("p", { className: "mt-1 text-sm text-muted-foreground", children: props.description })) : null] }));
|
|
4
4
|
}
|
|
5
|
-
//# sourceMappingURL=empty-state.js.map
|
|
@@ -101,4 +101,3 @@ export function FileUploadField(props) {
|
|
|
101
101
|
? 'Uploading…'
|
|
102
102
|
: `Max ${props.maxSizeKb ?? 10240} KB${multiple ? ` · up to ${maxFiles} files` : ''}` }), error ? _jsx("p", { className: "m-0 text-sm text-destructive", children: error }) : null, _jsx("input", { type: "hidden", name: props.name, value: JSON.stringify(items), "data-afi-payload": true, readOnly: true })] }));
|
|
103
103
|
}
|
|
104
|
-
//# sourceMappingURL=file-upload-field.js.map
|
package/dist/components/icon.js
CHANGED
|
@@ -18,4 +18,3 @@ export function Icon(props) {
|
|
|
18
18
|
const Component = Candidate;
|
|
19
19
|
return (_jsx(Component, { className: cn('inline-block size-[1em] shrink-0 align-middle', props.className), size: props.size ?? 16, "aria-hidden": true, style: props.style }));
|
|
20
20
|
}
|
|
21
|
-
//# sourceMappingURL=icon.js.map
|
|
@@ -8,4 +8,3 @@ export function ImagePlaceholder(props) {
|
|
|
8
8
|
// oxlint-disable-next-line jsx-a11y/prefer-tag-over-role
|
|
9
9
|
role: "img", "aria-label": props['aria-label'] ?? 'No image', className: cn('inline-flex shrink-0 items-center justify-center border border-border bg-muted text-muted-foreground', size === 'sm' ? 'size-10' : 'size-20', shape === 'circle' ? 'rounded-full' : size === 'sm' ? 'rounded-md' : 'rounded-lg', props.className), children: _jsx(ImageIcon, { className: size === 'sm' ? 'size-4' : 'size-6', "aria-hidden": true }) }));
|
|
10
10
|
}
|
|
11
|
-
//# sourceMappingURL=image-placeholder.js.map
|
|
@@ -100,4 +100,3 @@ export function ImageUploadField(props) {
|
|
|
100
100
|
? 'Uploading…'
|
|
101
101
|
: `Max ${props.maxSizeKb ?? 5120} KB${multiple ? ` · up to ${maxFiles} files` : ''}` }), error ? _jsx("p", { className: "m-0 text-sm text-destructive", children: error }) : null, _jsx("input", { type: "hidden", name: props.name, value: JSON.stringify(items), "data-afi-payload": true, readOnly: true })] }));
|
|
102
102
|
}
|
|
103
|
-
//# sourceMappingURL=image-upload-field.js.map
|
|
@@ -101,4 +101,3 @@ export function RepeaterField(props) {
|
|
|
101
101
|
return (_jsx(RepeaterRowField, { field: field, value: row[name], onChange: (value) => updateCell(index, name, value) }, name));
|
|
102
102
|
}) }), _jsxs("div", { className: "flex items-center justify-end gap-1", children: [_jsx(Button, { type: "button", variant: "ghost", size: "icon-sm", "aria-label": "Move up", disabled: index === 0, onClick: () => moveRow(index, -1), children: _jsx(Icon, { name: "arrow-up" }) }), _jsx(Button, { type: "button", variant: "ghost", size: "icon-sm", "aria-label": "Move down", disabled: index === rows.length - 1, onClick: () => moveRow(index, 1), children: _jsx(Icon, { name: "arrow-down" }) }), _jsx(Button, { type: "button", variant: "ghost", size: "icon-sm", "aria-label": "Remove", disabled: atMin, onClick: () => removeRow(index), children: _jsx(Icon, { name: "trash-2" }) })] })] }) }, index))) })) : null, _jsxs(Button, { type: "button", variant: "outline", size: "sm", className: "w-fit", disabled: atMax, onClick: addRow, children: [_jsx(Icon, { name: "plus" }), props.addActionLabel ?? 'Add item'] }), _jsx("input", { type: "hidden", name: props.name, value: JSON.stringify(rows), "data-afi-payload": true, readOnly: true })] }));
|
|
103
103
|
}
|
|
104
|
-
//# sourceMappingURL=repeater-field.js.map
|
|
@@ -66,4 +66,3 @@ export function RichBoxField(props) {
|
|
|
66
66
|
}, []);
|
|
67
67
|
return (_jsxs("div", { className: "mb-4 grid gap-1.5", "data-afi-rich-box": true, children: [_jsx(Label, { htmlFor: props.id, children: props.label }), _jsxs("div", { className: "relative", children: [!ready ? (_jsx("div", { "aria-hidden": true, className: "pointer-events-none absolute inset-0 flex items-center justify-center rounded-md border border-input bg-muted/30 text-sm text-muted-foreground", style: { height: props.height ?? '240px' }, children: "Loading editor\u2026" })) : null, _jsx("div", { id: props.id, ref: editorRef, "aria-invalid": Boolean(props.error), className: cn('[&_.ql-container]:rounded-b-md [&_.ql-toolbar]:rounded-t-md', !ready && 'invisible'), style: { height: props.height ?? '240px' } })] }), _jsx("input", { type: "hidden", name: props.name, value: html, readOnly: true, "data-afi-payload": true }), props.error ? _jsx("p", { className: "text-sm text-destructive", children: props.error }) : null] }));
|
|
68
68
|
}
|
|
69
|
-
//# sourceMappingURL=rich-box-field.js.map
|
|
@@ -49,4 +49,3 @@ export function RichEditorField(props) {
|
|
|
49
49
|
}
|
|
50
50
|
return (_jsxs("div", { className: "mb-4 grid gap-1.5", "data-afi-rich-editor": true, children: [_jsx(Label, { htmlFor: props.id, children: props.label }), _jsx("div", { className: "flex flex-wrap gap-1 rounded-t-md border border-b-0 border-input bg-muted/40 p-1", children: TOOLBAR.map((item) => (_jsx(Button, { type: "button", variant: "ghost", size: "icon-sm", "aria-label": item.label, onClick: () => applyWrap(item.wrap), children: _jsx(Icon, { name: item.icon }) }, item.label))) }), _jsx(Textarea, { ref: ref, id: props.id, name: props.name, rows: props.rows ?? 8, defaultValue: props.defaultValue != null ? String(props.defaultValue) : undefined, required: props.required, "aria-invalid": Boolean(props.error), className: cn('rounded-t-none font-mono text-sm') })] }));
|
|
51
51
|
}
|
|
52
|
-
//# sourceMappingURL=rich-editor-field.js.map
|
|
@@ -143,13 +143,20 @@ function renderField(field, ctx) {
|
|
|
143
143
|
// safelisted set of utility classes.
|
|
144
144
|
style: columns ? { gridTemplateColumns: `repeat(${columns}, minmax(0, 1fr))` } : undefined, children: [field.props.label ? (_jsx("h3", { className: "mb-3 text-[1.05rem] font-semibold", children: String(field.props.label) })) : null, (field.children ?? []).map((child) => renderField(child, ctx))] }, name || field.kind));
|
|
145
145
|
}
|
|
146
|
-
const id = `field-${name}`;
|
|
147
146
|
const kindType = {
|
|
148
147
|
'date-picker': 'date',
|
|
149
148
|
'date-time-picker': 'datetime-local',
|
|
150
149
|
'color-picker': 'color',
|
|
151
150
|
};
|
|
152
|
-
|
|
151
|
+
// A `.json(property)` field (currently only `text-input` supports this outside
|
|
152
|
+
// `textarea`/`rich-box`) submits/reads under a qualified key, not the bare column `name` —
|
|
153
|
+
// multiple property fields (e.g. one per locale) routinely target the same JSON column, and a
|
|
154
|
+
// shared HTML `name`/`id` would collide.
|
|
155
|
+
const jsonProperty = typeof field.props.jsonProperty === 'string' ? field.props.jsonProperty : undefined;
|
|
156
|
+
const inputName = jsonProperty ? jsonTextareaFieldKey(name, jsonProperty) : name;
|
|
157
|
+
const inputValue = jsonProperty ? ctx.values?.[inputName] : value;
|
|
158
|
+
const id = `field-${inputName}`;
|
|
159
|
+
return (_jsx(FieldShell, { label: label, htmlFor: id, error: error, children: _jsx(AddonInput, { id: id, name: inputName, type: kindType[field.kind] ?? String(field.props.type ?? 'text'), placeholder: typeof field.props.placeholder === 'string' ? field.props.placeholder : undefined, min: typeof field.props.minDate === 'string' ? field.props.minDate : undefined, max: typeof field.props.maxDate === 'string' ? field.props.maxDate : undefined, icon: typeof field.props.icon === 'string' ? field.props.icon : undefined, iconPosition: field.props.iconPosition === 'end' ? 'end' : 'start', prefix: typeof field.props.prefix === 'string' ? field.props.prefix : undefined, suffix: typeof field.props.suffix === 'string' ? field.props.suffix : undefined, required: Boolean(field.props.required), defaultValue: inputValue != null ? String(inputValue) : undefined, "aria-invalid": Boolean(error) }) }, inputName));
|
|
153
160
|
}
|
|
154
161
|
/** Render a bare list of fields (no Card/form/submit wrapper) — for embedding inside another form, e.g. an action's confirm-dialog modal. */
|
|
155
162
|
export function SchemaFields(props) {
|
|
@@ -177,4 +184,3 @@ export function renderSchemaNode(node) {
|
|
|
177
184
|
}
|
|
178
185
|
return (_jsx(Card, { className: "py-4", children: _jsx(CardContent, { className: "px-4 font-mono text-sm", children: JSON.stringify(node) }) }));
|
|
179
186
|
}
|
|
180
|
-
//# sourceMappingURL=schema-form.js.map
|
|
@@ -56,4 +56,3 @@ export function TagsInputField(props) {
|
|
|
56
56
|
}
|
|
57
57
|
return (_jsxs("div", { className: "mb-4 grid gap-1.5", "data-afi-tags-input": true, children: [_jsx(Label, { htmlFor: id, children: props.label }), _jsxs("div", { className: "flex flex-wrap items-center gap-1.5 rounded-md border border-input bg-transparent px-2 py-1.5 focus-within:border-ring focus-within:ring-[3px] focus-within:ring-ring/50", children: [tags.map((tag, index) => (_jsxs(Badge, { variant: "secondary", className: "gap-1", children: [tag, _jsx("button", { type: "button", onClick: () => removeAt(index), "aria-label": `Remove ${tag}`, className: "ml-0.5 inline-flex", children: _jsx(Icon, { name: "x", className: "size-3" }) })] }, `${tag}-${index}`))), _jsx("input", { id: id, type: "text", value: draft, onChange: (event) => setDraft(event.target.value), onKeyDown: handleKeyDown, onBlur: () => addTag(draft), placeholder: tags.length === 0 ? props.placeholder : undefined, required: Boolean(props.required) && tags.length === 0, className: "min-w-24 flex-1 border-0 bg-transparent p-0.5 text-sm outline-none placeholder:text-muted-foreground" })] }), _jsx("input", { type: "hidden", name: props.name, value: JSON.stringify(tags), "data-afi-payload": true, readOnly: true })] }));
|
|
58
58
|
}
|
|
59
|
-
//# sourceMappingURL=tags-input-field.js.map
|
|
@@ -16,4 +16,3 @@ export function ThemeToggle(props) {
|
|
|
16
16
|
const current = OPTIONS.find((option) => option.mode === props.mode) ?? OPTIONS[2];
|
|
17
17
|
return (_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { type: "button", variant: "ghost", size: "icon", className: props.className, "aria-label": `Theme: ${current.label}`, children: _jsx(Icon, { name: current.icon }) }) }), _jsx(DropdownMenuContent, { align: "end", children: OPTIONS.map((option) => (_jsxs(DropdownMenuItem, { "aria-current": option.mode === props.mode ? 'true' : undefined, onSelect: () => props.onChange(option.mode), children: [_jsx(Icon, { name: option.icon }), option.label] }, option.mode))) })] }));
|
|
18
18
|
}
|
|
19
|
-
//# sourceMappingURL=theme-toggle.js.map
|
|
@@ -7,4 +7,3 @@ declare function Alert({ className, variant, ...props }: React.ComponentProps<'d
|
|
|
7
7
|
declare function AlertTitle({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
|
|
8
8
|
declare function AlertDescription({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
|
|
9
9
|
export { Alert, AlertTitle, AlertDescription };
|
|
10
|
-
//# sourceMappingURL=alert.d.ts.map
|
|
@@ -23,4 +23,3 @@ function AlertDescription({ className, ...props }) {
|
|
|
23
23
|
return (_jsx("div", { "data-slot": "alert-description", className: cn('col-start-2 grid justify-items-start gap-1 text-sm text-muted-foreground [&_p]:leading-relaxed', className), ...props }));
|
|
24
24
|
}
|
|
25
25
|
export { Alert, AlertTitle, AlertDescription };
|
|
26
|
-
//# sourceMappingURL=alert.js.map
|
|
@@ -9,4 +9,3 @@ declare function AvatarBadge({ className, ...props }: React.ComponentProps<'span
|
|
|
9
9
|
declare function AvatarGroup({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
|
|
10
10
|
declare function AvatarGroupCount({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
|
|
11
11
|
export { Avatar, AvatarImage, AvatarFallback, AvatarBadge, AvatarGroup, AvatarGroupCount };
|
|
12
|
-
//# sourceMappingURL=avatar.d.ts.map
|
|
@@ -22,4 +22,3 @@ function AvatarGroupCount({ className, ...props }) {
|
|
|
22
22
|
return (_jsx("div", { "data-slot": "avatar-group-count", className: cn('relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3', className), ...props }));
|
|
23
23
|
}
|
|
24
24
|
export { Avatar, AvatarImage, AvatarFallback, AvatarBadge, AvatarGroup, AvatarGroupCount };
|
|
25
|
-
//# sourceMappingURL=avatar.js.map
|
|
@@ -23,4 +23,3 @@ function Badge({ className, variant = 'default', asChild = false, ...props }) {
|
|
|
23
23
|
return (_jsx(Comp, { "data-slot": "badge", "data-variant": variant, className: cn(badgeVariants({ variant }), className), ...props }));
|
|
24
24
|
}
|
|
25
25
|
export { Badge, badgeVariants };
|
|
26
|
-
//# sourceMappingURL=badge.js.map
|
|
@@ -9,4 +9,3 @@ declare function BreadcrumbPage({ className, ...props }: React.ComponentProps<'s
|
|
|
9
9
|
declare function BreadcrumbSeparator({ children, className, ...props }: React.ComponentProps<'li'>): React.JSX.Element;
|
|
10
10
|
declare function BreadcrumbEllipsis({ className, ...props }: React.ComponentProps<'span'>): React.JSX.Element;
|
|
11
11
|
export { Breadcrumb, BreadcrumbList, BreadcrumbItem, BreadcrumbLink, BreadcrumbPage, BreadcrumbSeparator, BreadcrumbEllipsis, };
|
|
12
|
-
//# sourceMappingURL=breadcrumb.d.ts.map
|
|
@@ -26,4 +26,3 @@ function BreadcrumbEllipsis({ className, ...props }) {
|
|
|
26
26
|
return (_jsxs("span", { "data-slot": "breadcrumb-ellipsis", role: "presentation", "aria-hidden": "true", className: cn('flex size-9 items-center justify-center', className), ...props, children: [_jsx(MoreHorizontal, { className: "size-4" }), _jsx("span", { className: "sr-only", children: "More" })] }));
|
|
27
27
|
}
|
|
28
28
|
export { Breadcrumb, BreadcrumbList, BreadcrumbItem, BreadcrumbLink, BreadcrumbPage, BreadcrumbSeparator, BreadcrumbEllipsis, };
|
|
29
|
-
//# sourceMappingURL=breadcrumb.js.map
|
|
@@ -36,4 +36,3 @@ function Button({ className, variant = 'default', size = 'default', asChild = fa
|
|
|
36
36
|
return (_jsx(Comp, { "data-slot": "button", "data-variant": variant, "data-size": size, className: cn(buttonVariants({ variant, size, className })), ...props }));
|
|
37
37
|
}
|
|
38
38
|
export { Button, buttonVariants };
|
|
39
|
-
//# sourceMappingURL=button.js.map
|
|
@@ -7,4 +7,3 @@ declare function CardAction({ className, ...props }: React.ComponentProps<'div'>
|
|
|
7
7
|
declare function CardContent({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
|
|
8
8
|
declare function CardFooter({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
|
|
9
9
|
export { Card, CardHeader, CardFooter, CardTitle, CardAction, CardDescription, CardContent };
|
|
10
|
-
//# sourceMappingURL=card.d.ts.map
|
|
@@ -23,4 +23,3 @@ function CardFooter({ className, ...props }) {
|
|
|
23
23
|
return (_jsx("div", { "data-slot": "card-footer", className: cn('flex items-center px-6 [.border-t]:pt-6', className), ...props }));
|
|
24
24
|
}
|
|
25
25
|
export { Card, CardHeader, CardFooter, CardTitle, CardAction, CardDescription, CardContent };
|
|
26
|
-
//# sourceMappingURL=card.js.map
|
|
@@ -2,4 +2,3 @@ import * as React from 'react';
|
|
|
2
2
|
import { Checkbox as CheckboxPrimitive } from 'radix-ui';
|
|
3
3
|
declare function Checkbox({ className, ...props }: React.ComponentProps<typeof CheckboxPrimitive.Root>): React.JSX.Element;
|
|
4
4
|
export { Checkbox };
|
|
5
|
-
//# sourceMappingURL=checkbox.d.ts.map
|
|
@@ -7,4 +7,3 @@ function Checkbox({ className, ...props }) {
|
|
|
7
7
|
return (_jsx(CheckboxPrimitive.Root, { "data-slot": "checkbox", className: cn('peer size-4 shrink-0 rounded-[4px] border border-input shadow-xs transition-shadow outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:bg-input/30 dark:aria-invalid:ring-destructive/40 dark:data-[state=checked]:bg-primary', className), ...props, children: _jsx(CheckboxPrimitive.Indicator, { "data-slot": "checkbox-indicator", className: "grid place-content-center text-current transition-none", children: _jsx(CheckIcon, { className: "size-3.5" }) }) }));
|
|
8
8
|
}
|
|
9
9
|
export { Checkbox };
|
|
10
|
-
//# sourceMappingURL=checkbox.js.map
|
|
@@ -3,4 +3,3 @@ declare function Collapsible({ ...props }: React.ComponentProps<typeof Collapsib
|
|
|
3
3
|
declare function CollapsibleTrigger({ ...props }: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>): import("react").JSX.Element;
|
|
4
4
|
declare function CollapsibleContent({ ...props }: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>): import("react").JSX.Element;
|
|
5
5
|
export { Collapsible, CollapsibleTrigger, CollapsibleContent };
|
|
6
|
-
//# sourceMappingURL=collapsible.d.ts.map
|
|
@@ -15,4 +15,3 @@ declare function DialogFooter({ className, showCloseButton, children, ...props }
|
|
|
15
15
|
declare function DialogTitle({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Title>): React.JSX.Element;
|
|
16
16
|
declare function DialogDescription({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Description>): React.JSX.Element;
|
|
17
17
|
export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, };
|
|
18
|
-
//# sourceMappingURL=dialog.d.ts.map
|
|
@@ -36,4 +36,3 @@ function DialogDescription({ className, ...props }) {
|
|
|
36
36
|
return (_jsx(DialogPrimitive.Description, { "data-slot": "dialog-description", className: cn('text-sm text-muted-foreground', className), ...props }));
|
|
37
37
|
}
|
|
38
38
|
export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, };
|
|
39
|
-
//# sourceMappingURL=dialog.js.map
|
|
@@ -23,4 +23,3 @@ declare function DropdownMenuSubTrigger({ className, inset, children, ...props }
|
|
|
23
23
|
}): React.JSX.Element;
|
|
24
24
|
declare function DropdownMenuSubContent({ className, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>): React.JSX.Element;
|
|
25
25
|
export { DropdownMenu, DropdownMenuPortal, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuGroup, DropdownMenuLabel, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubTrigger, DropdownMenuSubContent, };
|
|
26
|
-
//# sourceMappingURL=dropdown-menu.d.ts.map
|
|
@@ -50,4 +50,3 @@ function DropdownMenuSubContent({ className, ...props }) {
|
|
|
50
50
|
return (_jsx(DropdownMenuPrimitive.SubContent, { "data-slot": "dropdown-menu-sub-content", className: cn('z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95', className), ...props }));
|
|
51
51
|
}
|
|
52
52
|
export { DropdownMenu, DropdownMenuPortal, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuGroup, DropdownMenuLabel, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubTrigger, DropdownMenuSubContent, };
|
|
53
|
-
//# sourceMappingURL=dropdown-menu.js.map
|
|
@@ -5,4 +5,3 @@ function Input({ className, type, ...props }) {
|
|
|
5
5
|
return (_jsx("input", { type: type, "data-slot": "input", className: cn('h-9 w-full min-w-0 rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm dark:bg-input/30', 'focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50', 'aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40', className), ...props }));
|
|
6
6
|
}
|
|
7
7
|
export { Input };
|
|
8
|
-
//# sourceMappingURL=input.js.map
|
|
@@ -6,4 +6,3 @@ function Label({ className, ...props }) {
|
|
|
6
6
|
return (_jsx(LabelPrimitive.Root, { "data-slot": "label", className: cn('flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50', className), ...props }));
|
|
7
7
|
}
|
|
8
8
|
export { Label };
|
|
9
|
-
//# sourceMappingURL=label.js.map
|
|
@@ -11,4 +11,3 @@ declare function PaginationPrevious({ className, ...props }: React.ComponentProp
|
|
|
11
11
|
declare function PaginationNext({ className, ...props }: React.ComponentProps<typeof PaginationLink>): React.JSX.Element;
|
|
12
12
|
declare function PaginationEllipsis({ className, ...props }: React.ComponentProps<'span'>): React.JSX.Element;
|
|
13
13
|
export { Pagination, PaginationContent, PaginationLink, PaginationItem, PaginationPrevious, PaginationNext, PaginationEllipsis, };
|
|
14
|
-
//# sourceMappingURL=pagination.d.ts.map
|
|
@@ -28,4 +28,3 @@ function PaginationEllipsis({ className, ...props }) {
|
|
|
28
28
|
return (_jsxs("span", { "aria-hidden": true, "data-slot": "pagination-ellipsis", className: cn('flex size-9 items-center justify-center', className), ...props, children: [_jsx(MoreHorizontalIcon, { className: "size-4" }), _jsx("span", { className: "sr-only", children: "More pages" })] }));
|
|
29
29
|
}
|
|
30
30
|
export { Pagination, PaginationContent, PaginationLink, PaginationItem, PaginationPrevious, PaginationNext, PaginationEllipsis, };
|
|
31
|
-
//# sourceMappingURL=pagination.js.map
|
|
@@ -3,4 +3,3 @@ import { ScrollArea as ScrollAreaPrimitive } from 'radix-ui';
|
|
|
3
3
|
declare function ScrollArea({ className, children, ...props }: React.ComponentProps<typeof ScrollAreaPrimitive.Root>): React.JSX.Element;
|
|
4
4
|
declare function ScrollBar({ className, orientation, ...props }: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>): React.JSX.Element;
|
|
5
5
|
export { ScrollArea, ScrollBar };
|
|
6
|
-
//# sourceMappingURL=scroll-area.d.ts.map
|
|
@@ -10,4 +10,3 @@ function ScrollBar({ className, orientation = 'vertical', ...props }) {
|
|
|
10
10
|
return (_jsx(ScrollAreaPrimitive.ScrollAreaScrollbar, { "data-slot": "scroll-area-scrollbar", orientation: orientation, className: cn('flex touch-none p-px transition-colors select-none', orientation === 'vertical' && 'h-full w-2.5 border-l border-l-transparent', orientation === 'horizontal' && 'h-2.5 flex-col border-t border-t-transparent', className), ...props, children: _jsx(ScrollAreaPrimitive.ScrollAreaThumb, { "data-slot": "scroll-area-thumb", className: "relative flex-1 rounded-full bg-border" }) }));
|
|
11
11
|
}
|
|
12
12
|
export { ScrollArea, ScrollBar };
|
|
13
|
-
//# sourceMappingURL=scroll-area.js.map
|
|
@@ -13,4 +13,3 @@ declare function SelectSeparator({ className, ...props }: React.ComponentProps<t
|
|
|
13
13
|
declare function SelectScrollUpButton({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>): React.JSX.Element;
|
|
14
14
|
declare function SelectScrollDownButton({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>): React.JSX.Element;
|
|
15
15
|
export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, };
|
|
16
|
-
//# sourceMappingURL=select.d.ts.map
|
|
@@ -37,4 +37,3 @@ function SelectScrollDownButton({ className, ...props }) {
|
|
|
37
37
|
return (_jsx(SelectPrimitive.ScrollDownButton, { "data-slot": "select-scroll-down-button", className: cn('flex cursor-default items-center justify-center py-1', className), ...props, children: _jsx(ChevronDownIcon, { className: "size-4" }) }));
|
|
38
38
|
}
|
|
39
39
|
export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, };
|
|
40
|
-
//# sourceMappingURL=select.js.map
|
|
@@ -2,4 +2,3 @@ import * as React from 'react';
|
|
|
2
2
|
import { Separator as SeparatorPrimitive } from 'radix-ui';
|
|
3
3
|
declare function Separator({ className, orientation, decorative, ...props }: React.ComponentProps<typeof SeparatorPrimitive.Root>): React.JSX.Element;
|
|
4
4
|
export { Separator };
|
|
5
|
-
//# sourceMappingURL=separator.d.ts.map
|
|
@@ -7,4 +7,3 @@ function Separator({ className, orientation = 'horizontal', decorative = true, .
|
|
|
7
7
|
return (_jsx(SeparatorPrimitive.Root, { "data-slot": "separator", decorative: decorative, orientation: orientation, className: cn('shrink-0 bg-border data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px', className), ...props }));
|
|
8
8
|
}
|
|
9
9
|
export { Separator };
|
|
10
|
-
//# sourceMappingURL=separator.js.map
|
|
@@ -12,4 +12,3 @@ declare function SheetFooter({ className, ...props }: React.ComponentProps<'div'
|
|
|
12
12
|
declare function SheetTitle({ className, ...props }: React.ComponentProps<typeof SheetPrimitive.Title>): React.JSX.Element;
|
|
13
13
|
declare function SheetDescription({ className, ...props }: React.ComponentProps<typeof SheetPrimitive.Description>): React.JSX.Element;
|
|
14
14
|
export { Sheet, SheetTrigger, SheetClose, SheetContent, SheetHeader, SheetFooter, SheetTitle, SheetDescription, };
|
|
15
|
-
//# sourceMappingURL=sheet.d.ts.map
|
|
@@ -38,4 +38,3 @@ function SheetDescription({ className, ...props }) {
|
|
|
38
38
|
return (_jsx(SheetPrimitive.Description, { "data-slot": "sheet-description", className: cn('text-sm text-muted-foreground', className), ...props }));
|
|
39
39
|
}
|
|
40
40
|
export { Sheet, SheetTrigger, SheetClose, SheetContent, SheetHeader, SheetFooter, SheetTitle, SheetDescription, };
|
|
41
|
-
//# sourceMappingURL=sheet.js.map
|
|
@@ -67,4 +67,3 @@ declare function SidebarMenuSubButton({ asChild, size, isActive, className, ...p
|
|
|
67
67
|
isActive?: boolean;
|
|
68
68
|
}): React.JSX.Element;
|
|
69
69
|
export { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, useSidebar, };
|
|
70
|
-
//# sourceMappingURL=sidebar.d.ts.map
|
|
@@ -200,4 +200,3 @@ function SidebarMenuSubButton({ asChild = false, size = 'md', isActive = false,
|
|
|
200
200
|
return (_jsx(Comp, { "data-slot": "sidebar-menu-sub-button", "data-sidebar": "menu-sub-button", "data-size": size, "data-active": isActive, className: cn('flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground ring-sidebar-ring outline-hidden hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground', 'data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground', size === 'sm' && 'text-xs', size === 'md' && 'text-sm', 'group-data-[collapsible=icon]:hidden', className), ...props }));
|
|
201
201
|
}
|
|
202
202
|
export { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, useSidebar, };
|
|
203
|
-
//# sourceMappingURL=sidebar.js.map
|
|
@@ -8,4 +8,3 @@ declare function TableHead({ className, ...props }: React.ComponentProps<'th'>):
|
|
|
8
8
|
declare function TableCell({ className, ...props }: React.ComponentProps<'td'>): React.JSX.Element;
|
|
9
9
|
declare function TableCaption({ className, ...props }: React.ComponentProps<'caption'>): React.JSX.Element;
|
|
10
10
|
export { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption };
|
|
11
|
-
//# sourceMappingURL=table.d.ts.map
|
|
@@ -27,4 +27,3 @@ function TableCaption({ className, ...props }) {
|
|
|
27
27
|
return (_jsx("caption", { "data-slot": "table-caption", className: cn('mt-4 text-sm text-muted-foreground', className), ...props }));
|
|
28
28
|
}
|
|
29
29
|
export { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption };
|
|
30
|
-
//# sourceMappingURL=table.js.map
|
|
@@ -9,4 +9,3 @@ declare function TabsList({ className, variant, ...props }: React.ComponentProps
|
|
|
9
9
|
declare function TabsTrigger({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Trigger>): React.JSX.Element;
|
|
10
10
|
declare function TabsContent({ className, forceMount, ...props }: React.ComponentProps<typeof TabsPrimitive.Content>): React.JSX.Element;
|
|
11
11
|
export { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants };
|
|
12
|
-
//# sourceMappingURL=tabs.d.ts.map
|