@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.
Files changed (186) hide show
  1. package/README.md +9 -13
  2. package/dist/components/admin-shell.d.ts +0 -1
  3. package/dist/components/admin-shell.js +2 -3
  4. package/dist/components/chart.d.ts +0 -1
  5. package/dist/components/chart.js +0 -1
  6. package/dist/components/confirm-dialog.d.ts +0 -1
  7. package/dist/components/confirm-dialog.js +0 -1
  8. package/dist/components/data-pagination.d.ts +0 -1
  9. package/dist/components/data-pagination.js +0 -1
  10. package/dist/components/data-table.d.ts +0 -1
  11. package/dist/components/data-table.js +10 -2
  12. package/dist/components/empty-state.d.ts +0 -1
  13. package/dist/components/empty-state.js +0 -1
  14. package/dist/components/file-upload-field.d.ts +0 -1
  15. package/dist/components/file-upload-field.js +0 -1
  16. package/dist/components/icon.d.ts +0 -1
  17. package/dist/components/icon.js +0 -1
  18. package/dist/components/image-placeholder.d.ts +0 -1
  19. package/dist/components/image-placeholder.js +0 -1
  20. package/dist/components/image-upload-field.d.ts +0 -1
  21. package/dist/components/image-upload-field.js +0 -1
  22. package/dist/components/repeater-field.d.ts +0 -1
  23. package/dist/components/repeater-field.js +0 -1
  24. package/dist/components/rich-box-field.d.ts +0 -1
  25. package/dist/components/rich-box-field.js +0 -1
  26. package/dist/components/rich-editor-field.d.ts +0 -1
  27. package/dist/components/rich-editor-field.js +0 -1
  28. package/dist/components/schema-form.d.ts +0 -1
  29. package/dist/components/schema-form.js +9 -3
  30. package/dist/components/tags-input-field.d.ts +0 -1
  31. package/dist/components/tags-input-field.js +0 -1
  32. package/dist/components/theme-toggle.d.ts +0 -1
  33. package/dist/components/theme-toggle.js +0 -1
  34. package/dist/components/ui/alert.d.ts +0 -1
  35. package/dist/components/ui/alert.js +0 -1
  36. package/dist/components/ui/avatar.d.ts +0 -1
  37. package/dist/components/ui/avatar.js +0 -1
  38. package/dist/components/ui/badge.d.ts +0 -1
  39. package/dist/components/ui/badge.js +0 -1
  40. package/dist/components/ui/breadcrumb.d.ts +0 -1
  41. package/dist/components/ui/breadcrumb.js +0 -1
  42. package/dist/components/ui/button.d.ts +0 -1
  43. package/dist/components/ui/button.js +0 -1
  44. package/dist/components/ui/card.d.ts +0 -1
  45. package/dist/components/ui/card.js +0 -1
  46. package/dist/components/ui/checkbox.d.ts +0 -1
  47. package/dist/components/ui/checkbox.js +0 -1
  48. package/dist/components/ui/collapsible.d.ts +0 -1
  49. package/dist/components/ui/collapsible.js +0 -1
  50. package/dist/components/ui/dialog.d.ts +0 -1
  51. package/dist/components/ui/dialog.js +0 -1
  52. package/dist/components/ui/dropdown-menu.d.ts +0 -1
  53. package/dist/components/ui/dropdown-menu.js +0 -1
  54. package/dist/components/ui/input.d.ts +0 -1
  55. package/dist/components/ui/input.js +0 -1
  56. package/dist/components/ui/label.d.ts +0 -1
  57. package/dist/components/ui/label.js +0 -1
  58. package/dist/components/ui/pagination.d.ts +0 -1
  59. package/dist/components/ui/pagination.js +0 -1
  60. package/dist/components/ui/scroll-area.d.ts +0 -1
  61. package/dist/components/ui/scroll-area.js +0 -1
  62. package/dist/components/ui/select.d.ts +0 -1
  63. package/dist/components/ui/select.js +0 -1
  64. package/dist/components/ui/separator.d.ts +0 -1
  65. package/dist/components/ui/separator.js +0 -1
  66. package/dist/components/ui/sheet.d.ts +0 -1
  67. package/dist/components/ui/sheet.js +0 -1
  68. package/dist/components/ui/sidebar.d.ts +0 -1
  69. package/dist/components/ui/sidebar.js +0 -1
  70. package/dist/components/ui/skeleton.d.ts +0 -1
  71. package/dist/components/ui/skeleton.js +0 -1
  72. package/dist/components/ui/table.d.ts +0 -1
  73. package/dist/components/ui/table.js +0 -1
  74. package/dist/components/ui/tabs.d.ts +0 -1
  75. package/dist/components/ui/tabs.js +0 -1
  76. package/dist/components/ui/textarea.d.ts +0 -1
  77. package/dist/components/ui/textarea.js +0 -1
  78. package/dist/components/ui/tooltip.d.ts +0 -1
  79. package/dist/components/ui/tooltip.js +0 -1
  80. package/dist/hooks/use-mobile.d.ts +0 -1
  81. package/dist/hooks/use-mobile.js +0 -1
  82. package/dist/index.d.ts +0 -1
  83. package/dist/index.js +0 -1
  84. package/dist/lib/badge-colors.d.ts +0 -1
  85. package/dist/lib/badge-colors.js +0 -1
  86. package/dist/lib/format-date.d.ts +0 -1
  87. package/dist/lib/format-date.js +0 -1
  88. package/dist/lib/utils.d.ts +0 -1
  89. package/dist/lib/utils.js +0 -1
  90. package/dist/pagination.d.ts +0 -1
  91. package/dist/pagination.js +0 -1
  92. package/dist/ui.d.ts +0 -1
  93. package/dist/ui.js +0 -1
  94. package/package.json +1 -1
  95. package/dist/components/admin-shell.d.ts.map +0 -1
  96. package/dist/components/admin-shell.js.map +0 -1
  97. package/dist/components/chart.d.ts.map +0 -1
  98. package/dist/components/chart.js.map +0 -1
  99. package/dist/components/confirm-dialog.d.ts.map +0 -1
  100. package/dist/components/confirm-dialog.js.map +0 -1
  101. package/dist/components/data-pagination.d.ts.map +0 -1
  102. package/dist/components/data-pagination.js.map +0 -1
  103. package/dist/components/data-table.d.ts.map +0 -1
  104. package/dist/components/data-table.js.map +0 -1
  105. package/dist/components/empty-state.d.ts.map +0 -1
  106. package/dist/components/empty-state.js.map +0 -1
  107. package/dist/components/file-upload-field.d.ts.map +0 -1
  108. package/dist/components/file-upload-field.js.map +0 -1
  109. package/dist/components/icon.d.ts.map +0 -1
  110. package/dist/components/icon.js.map +0 -1
  111. package/dist/components/image-placeholder.d.ts.map +0 -1
  112. package/dist/components/image-placeholder.js.map +0 -1
  113. package/dist/components/image-upload-field.d.ts.map +0 -1
  114. package/dist/components/image-upload-field.js.map +0 -1
  115. package/dist/components/repeater-field.d.ts.map +0 -1
  116. package/dist/components/repeater-field.js.map +0 -1
  117. package/dist/components/rich-box-field.d.ts.map +0 -1
  118. package/dist/components/rich-box-field.js.map +0 -1
  119. package/dist/components/rich-editor-field.d.ts.map +0 -1
  120. package/dist/components/rich-editor-field.js.map +0 -1
  121. package/dist/components/schema-form.d.ts.map +0 -1
  122. package/dist/components/schema-form.js.map +0 -1
  123. package/dist/components/tags-input-field.d.ts.map +0 -1
  124. package/dist/components/tags-input-field.js.map +0 -1
  125. package/dist/components/theme-toggle.d.ts.map +0 -1
  126. package/dist/components/theme-toggle.js.map +0 -1
  127. package/dist/components/ui/alert.d.ts.map +0 -1
  128. package/dist/components/ui/alert.js.map +0 -1
  129. package/dist/components/ui/avatar.d.ts.map +0 -1
  130. package/dist/components/ui/avatar.js.map +0 -1
  131. package/dist/components/ui/badge.d.ts.map +0 -1
  132. package/dist/components/ui/badge.js.map +0 -1
  133. package/dist/components/ui/breadcrumb.d.ts.map +0 -1
  134. package/dist/components/ui/breadcrumb.js.map +0 -1
  135. package/dist/components/ui/button.d.ts.map +0 -1
  136. package/dist/components/ui/button.js.map +0 -1
  137. package/dist/components/ui/card.d.ts.map +0 -1
  138. package/dist/components/ui/card.js.map +0 -1
  139. package/dist/components/ui/checkbox.d.ts.map +0 -1
  140. package/dist/components/ui/checkbox.js.map +0 -1
  141. package/dist/components/ui/collapsible.d.ts.map +0 -1
  142. package/dist/components/ui/collapsible.js.map +0 -1
  143. package/dist/components/ui/dialog.d.ts.map +0 -1
  144. package/dist/components/ui/dialog.js.map +0 -1
  145. package/dist/components/ui/dropdown-menu.d.ts.map +0 -1
  146. package/dist/components/ui/dropdown-menu.js.map +0 -1
  147. package/dist/components/ui/input.d.ts.map +0 -1
  148. package/dist/components/ui/input.js.map +0 -1
  149. package/dist/components/ui/label.d.ts.map +0 -1
  150. package/dist/components/ui/label.js.map +0 -1
  151. package/dist/components/ui/pagination.d.ts.map +0 -1
  152. package/dist/components/ui/pagination.js.map +0 -1
  153. package/dist/components/ui/scroll-area.d.ts.map +0 -1
  154. package/dist/components/ui/scroll-area.js.map +0 -1
  155. package/dist/components/ui/select.d.ts.map +0 -1
  156. package/dist/components/ui/select.js.map +0 -1
  157. package/dist/components/ui/separator.d.ts.map +0 -1
  158. package/dist/components/ui/separator.js.map +0 -1
  159. package/dist/components/ui/sheet.d.ts.map +0 -1
  160. package/dist/components/ui/sheet.js.map +0 -1
  161. package/dist/components/ui/sidebar.d.ts.map +0 -1
  162. package/dist/components/ui/sidebar.js.map +0 -1
  163. package/dist/components/ui/skeleton.d.ts.map +0 -1
  164. package/dist/components/ui/skeleton.js.map +0 -1
  165. package/dist/components/ui/table.d.ts.map +0 -1
  166. package/dist/components/ui/table.js.map +0 -1
  167. package/dist/components/ui/tabs.d.ts.map +0 -1
  168. package/dist/components/ui/tabs.js.map +0 -1
  169. package/dist/components/ui/textarea.d.ts.map +0 -1
  170. package/dist/components/ui/textarea.js.map +0 -1
  171. package/dist/components/ui/tooltip.d.ts.map +0 -1
  172. package/dist/components/ui/tooltip.js.map +0 -1
  173. package/dist/hooks/use-mobile.d.ts.map +0 -1
  174. package/dist/hooks/use-mobile.js.map +0 -1
  175. package/dist/index.d.ts.map +0 -1
  176. package/dist/index.js.map +0 -1
  177. package/dist/lib/badge-colors.d.ts.map +0 -1
  178. package/dist/lib/badge-colors.js.map +0 -1
  179. package/dist/lib/format-date.d.ts.map +0 -1
  180. package/dist/lib/format-date.js.map +0 -1
  181. package/dist/lib/utils.d.ts.map +0 -1
  182. package/dist/lib/utils.js.map +0 -1
  183. package/dist/pagination.d.ts.map +0 -1
  184. package/dist/pagination.js.map +0 -1
  185. package/dist/ui.d.ts.map +0 -1
  186. 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 | 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 |
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
@@ -48,4 +48,3 @@ export declare function AdminShell(props: {
48
48
  /** Called when a viewer expands/collapses a named nav group (accordion state). */
49
49
  onGroupToggle?: (label: string, expanded: boolean) => void;
50
50
  }): React.JSX.Element;
51
- //# sourceMappingURL=admin-shell.d.ts.map
@@ -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
@@ -9,4 +9,3 @@ import * as React from 'react';
9
9
  export declare function ChartWidget({ spec }: {
10
10
  spec: ChartSpec;
11
11
  }): React.JSX.Element;
12
- //# sourceMappingURL=chart.d.ts.map
@@ -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
@@ -14,4 +14,3 @@ export declare function ConfirmDialog(props: {
14
14
  children?: ReactNode;
15
15
  onConfirm?: () => void;
16
16
  }): import("react").JSX.Element;
17
- //# sourceMappingURL=confirm-dialog.d.ts.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
@@ -10,4 +10,3 @@ export declare function DataPagination(props: {
10
10
  onPageChange?: (page: number) => void;
11
11
  onLimitChange?: (limit: number) => void;
12
12
  }): import("react").JSX.Element;
13
- //# sourceMappingURL=data-pagination.d.ts.map
@@ -58,4 +58,3 @@ export function DataPagination(props) {
58
58
  }
59
59
  } })) })] }) })] })] }));
60
60
  }
61
- //# sourceMappingURL=data-pagination.js.map
@@ -24,4 +24,3 @@ export declare function DataTable(props: {
24
24
  /** Handle sort clicks without a page navigation (client-only tables). */
25
25
  onSortChange?: (column: string, direction: SortDirection) => void;
26
26
  }): import("react").JSX.Element;
27
- //# sourceMappingURL=data-table.d.ts.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 @@ export declare function EmptyState(props: {
2
2
  title: string;
3
3
  description?: string;
4
4
  }): import("react").JSX.Element;
5
- //# sourceMappingURL=empty-state.d.ts.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
@@ -25,4 +25,3 @@ export declare function FileUploadField(props: {
25
25
  defaultValue?: unknown;
26
26
  uploadUrl: string;
27
27
  }): import("react").JSX.Element;
28
- //# sourceMappingURL=file-upload-field.d.ts.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
@@ -5,4 +5,3 @@ export declare function Icon(props: {
5
5
  size?: number;
6
6
  style?: CSSProperties;
7
7
  }): import("react").JSX.Element | null;
8
- //# sourceMappingURL=icon.d.ts.map
@@ -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
@@ -4,4 +4,3 @@ export declare function ImagePlaceholder(props: {
4
4
  className?: string;
5
5
  'aria-label'?: string;
6
6
  }): import("react").JSX.Element;
7
- //# sourceMappingURL=image-placeholder.d.ts.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
@@ -26,4 +26,3 @@ export declare function ImageUploadField(props: {
26
26
  defaultValue?: unknown;
27
27
  uploadUrl: string;
28
28
  }): import("react").JSX.Element;
29
- //# sourceMappingURL=image-upload-field.d.ts.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
@@ -15,4 +15,3 @@ export declare function RepeaterField(props: {
15
15
  addActionLabel?: string;
16
16
  defaultValue?: unknown;
17
17
  }): import("react").JSX.Element;
18
- //# sourceMappingURL=repeater-field.d.ts.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
@@ -26,4 +26,3 @@ export declare function RichBoxField(props: {
26
26
  readOnly?: boolean;
27
27
  modules?: Record<string, unknown>;
28
28
  }): import("react").JSX.Element;
29
- //# sourceMappingURL=rich-box-field.d.ts.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
@@ -12,4 +12,3 @@ export declare function RichEditorField(props: {
12
12
  required?: boolean;
13
13
  error?: string;
14
14
  }): import("react").JSX.Element;
15
- //# sourceMappingURL=rich-editor-field.d.ts.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
@@ -39,4 +39,3 @@ export declare function SchemaForm(props: {
39
39
  errors?: Record<string, string[]>;
40
40
  }): import("react").JSX.Element;
41
41
  export declare function renderSchemaNode(node: SchemaNode): import("react").JSX.Element;
42
- //# sourceMappingURL=schema-form.d.ts.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
- return (_jsx(FieldShell, { label: label, htmlFor: id, error: error, children: _jsx(AddonInput, { id: id, name: name, 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: value != null ? String(value) : undefined, "aria-invalid": Boolean(error) }) }, name));
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
@@ -11,4 +11,3 @@ export declare function TagsInputField(props: {
11
11
  required?: boolean;
12
12
  defaultValue?: unknown;
13
13
  }): import("react").JSX.Element;
14
- //# sourceMappingURL=tags-input-field.d.ts.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
@@ -9,4 +9,3 @@ export declare function ThemeToggle(props: {
9
9
  onChange: (mode: ThemeMode) => void;
10
10
  className?: string;
11
11
  }): import("react").JSX.Element;
12
- //# sourceMappingURL=theme-toggle.d.ts.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
@@ -7,4 +7,3 @@ declare function Badge({ className, variant, asChild, ...props }: React.Componen
7
7
  asChild?: boolean;
8
8
  }): React.JSX.Element;
9
9
  export { Badge, badgeVariants };
10
- //# sourceMappingURL=badge.d.ts.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
@@ -8,4 +8,3 @@ declare function Button({ className, variant, size, asChild, ...props }: React.C
8
8
  asChild?: boolean;
9
9
  }): React.JSX.Element;
10
10
  export { Button, buttonVariants };
11
- //# sourceMappingURL=button.d.ts.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
@@ -10,4 +10,3 @@ function CollapsibleContent({ ...props }) {
10
10
  return _jsx(CollapsiblePrimitive.CollapsibleContent, { "data-slot": "collapsible-content", ...props });
11
11
  }
12
12
  export { Collapsible, CollapsibleTrigger, CollapsibleContent };
13
- //# sourceMappingURL=collapsible.js.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
@@ -1,4 +1,3 @@
1
1
  import * as React from 'react';
2
2
  declare function Input({ className, type, ...props }: React.ComponentProps<'input'>): React.JSX.Element;
3
3
  export { Input };
4
- //# sourceMappingURL=input.d.ts.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
@@ -2,4 +2,3 @@ import * as React from 'react';
2
2
  import { Label as LabelPrimitive } from 'radix-ui';
3
3
  declare function Label({ className, ...props }: React.ComponentProps<typeof LabelPrimitive.Root>): React.JSX.Element;
4
4
  export { Label };
5
- //# sourceMappingURL=label.d.ts.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
@@ -1,3 +1,2 @@
1
1
  declare function Skeleton({ className, ...props }: React.ComponentProps<'div'>): import("react").JSX.Element;
2
2
  export { Skeleton };
3
- //# sourceMappingURL=skeleton.d.ts.map
@@ -4,4 +4,3 @@ function Skeleton({ className, ...props }) {
4
4
  return (_jsx("div", { "data-slot": "skeleton", className: cn('animate-pulse rounded-md bg-accent', className), ...props }));
5
5
  }
6
6
  export { Skeleton };
7
- //# sourceMappingURL=skeleton.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