@vritti/quantum-ui 0.3.5 → 0.3.7

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 (114) hide show
  1. package/dist/Avatar.js +5 -5
  2. package/dist/Checkbox2.js +2 -2
  3. package/dist/Combination.js +1 -1
  4. package/dist/ConfirmContext.js +20 -1
  5. package/dist/ConfirmContext.js.map +1 -1
  6. package/dist/Dialog.js +24 -38
  7. package/dist/Dialog.js.map +1 -1
  8. package/dist/DropdownMenu.js +1 -0
  9. package/dist/DropdownMenu.js.map +1 -1
  10. package/dist/Progress.js +2 -2
  11. package/dist/RadioGroup.js +2 -2
  12. package/dist/Sidebar.js +1 -1
  13. package/dist/Switch.js +19 -16
  14. package/dist/Switch.js.map +1 -1
  15. package/dist/TabsSkeleton.js +1 -1
  16. package/dist/TextField.js +64 -45
  17. package/dist/TextField.js.map +1 -1
  18. package/dist/Toggle.js +1 -1
  19. package/dist/ViewTabs.js +1 -2
  20. package/dist/ViewTabs.js.map +1 -1
  21. package/dist/assets/quantum-ui.css +13 -16
  22. package/dist/cells.js +50 -21
  23. package/dist/cells.js.map +1 -1
  24. package/dist/components/Dialog.js +1 -1
  25. package/dist/components/RichTextEditor.js +1 -1
  26. package/dist/dropdown-menu.js +3 -2
  27. package/dist/dropdown-menu.js.map +1 -1
  28. package/dist/image-component.js +1 -1
  29. package/dist/index.js +2 -3
  30. package/dist/index.js.map +1 -1
  31. package/dist/index12.js +3 -2
  32. package/dist/index12.js.map +1 -1
  33. package/dist/index13.js +2 -1
  34. package/dist/index13.js.map +1 -1
  35. package/dist/index14.js +6 -5
  36. package/dist/index14.js.map +1 -1
  37. package/dist/index15.js +1 -1
  38. package/dist/index16.js +1 -1
  39. package/dist/index18.js +1 -1
  40. package/dist/index20.js +1 -1
  41. package/dist/index21.js +1 -1
  42. package/dist/index23.js +1 -1
  43. package/dist/index25.js +3 -2534
  44. package/dist/index25.js.map +1 -1
  45. package/dist/index26.js +2526 -22
  46. package/dist/index26.js.map +1 -1
  47. package/dist/index27.js +32 -4
  48. package/dist/index27.js.map +1 -1
  49. package/dist/index28.js +4 -37
  50. package/dist/index28.js.map +1 -1
  51. package/dist/index29.js +36 -310
  52. package/dist/index29.js.map +1 -1
  53. package/dist/index30.js +309 -7
  54. package/dist/index30.js.map +1 -1
  55. package/dist/index31.js +8 -30
  56. package/dist/index31.js.map +1 -1
  57. package/dist/index32.js +29 -59
  58. package/dist/index32.js.map +1 -1
  59. package/dist/index33.js +59 -10
  60. package/dist/index33.js.map +1 -1
  61. package/dist/index34.js +10 -35
  62. package/dist/index34.js.map +1 -1
  63. package/dist/index35.js +27 -36810
  64. package/dist/index35.js.map +1 -1
  65. package/dist/index36.js +36809 -70
  66. package/dist/index36.js.map +1 -1
  67. package/dist/index37.js +72 -187
  68. package/dist/index37.js.map +1 -1
  69. package/dist/index38.js +199 -0
  70. package/dist/index38.js.map +1 -0
  71. package/dist/index4.js +1 -1
  72. package/dist/lib/components/DataTable/components/DataTableImportDialog.d.ts.map +1 -1
  73. package/dist/lib/components/DataTable/components/DataTableViewTabs.d.ts.map +1 -1
  74. package/dist/lib/components/DataTable/components/DataTableViewsMenu.d.ts.map +1 -1
  75. package/dist/lib/components/DataTable/components/RowActions.d.ts.map +1 -1
  76. package/dist/lib/components/Dialog/Dialog.d.ts +15 -16
  77. package/dist/lib/components/Dialog/Dialog.d.ts.map +1 -1
  78. package/dist/lib/components/Dialog/index.d.ts +2 -2
  79. package/dist/lib/components/Dialog/index.d.ts.map +1 -1
  80. package/dist/lib/components/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  81. package/dist/lib/components/DropdownMenu/types.d.ts +2 -1
  82. package/dist/lib/components/DropdownMenu/types.d.ts.map +1 -1
  83. package/dist/lib/components/Switch/Switch.d.ts.map +1 -1
  84. package/dist/lib/components/TextField/TextField.d.ts.map +1 -1
  85. package/dist/lib/context/ConfirmContext.d.ts.map +1 -1
  86. package/dist/lib/selects/index.d.ts +0 -1
  87. package/dist/lib/selects/index.d.ts.map +1 -1
  88. package/dist/lib/selects/tax-group/TaxGroupFilter.d.ts +12 -0
  89. package/dist/lib/selects/tax-group/TaxGroupFilter.d.ts.map +1 -0
  90. package/dist/lib/selects/tax-group/TaxGroupSelector.d.ts +4 -0
  91. package/dist/lib/selects/tax-group/TaxGroupSelector.d.ts.map +1 -0
  92. package/dist/lib/selects/tax-group/index.d.ts +3 -0
  93. package/dist/lib/selects/tax-group/index.d.ts.map +1 -0
  94. package/dist/selects/tax-group.js +37 -0
  95. package/dist/selects/tax-group.js.map +1 -0
  96. package/dist/shadcn/shadcnSwitch/Switch.d.ts +1 -1
  97. package/dist/shadcn/shadcnSwitch/Switch.d.ts.map +1 -1
  98. package/dist/trash-2.js +17 -3
  99. package/dist/trash-2.js.map +1 -1
  100. package/dist/utils/motion.js +2 -2
  101. package/dist/value.js +1 -1
  102. package/package.json +5 -5
  103. package/dist/BomSelector.js +0 -37
  104. package/dist/BomSelector.js.map +0 -1
  105. package/dist/lib/selects/bom/BomFilter.d.ts +0 -12
  106. package/dist/lib/selects/bom/BomFilter.d.ts.map +0 -1
  107. package/dist/lib/selects/bom/BomSelector.d.ts +0 -4
  108. package/dist/lib/selects/bom/BomSelector.d.ts.map +0 -1
  109. package/dist/lib/selects/bom/index.d.ts +0 -3
  110. package/dist/lib/selects/bom/index.d.ts.map +0 -1
  111. package/dist/plus.js +0 -18
  112. package/dist/plus.js.map +0 -1
  113. package/dist/selects/bom.js +0 -2
  114. package/dist/selects/bom.js.map +0 -1
package/dist/Avatar.js CHANGED
@@ -1,10 +1,10 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
- import { c as createContextScope } from './index32.js';
4
- import { u as useCallbackRef } from './index30.js';
5
- import { u as useLayoutEffect2 } from './index27.js';
6
- import { P as Primitive } from './index28.js';
7
- import { r as requireShim } from './index37.js';
3
+ import { c as createContextScope } from './index33.js';
4
+ import { u as useCallbackRef } from './index31.js';
5
+ import { u as useLayoutEffect2 } from './index28.js';
6
+ import { P as Primitive } from './index29.js';
7
+ import { r as requireShim } from './index38.js';
8
8
  import { c as cn } from './utils.js';
9
9
 
10
10
  var shimExports = requireShim();
package/dist/Checkbox2.js CHANGED
@@ -3,8 +3,8 @@ import * as React from 'react';
3
3
  import { u as useComposedRefs } from './index11.js';
4
4
  import { c as createContextScope } from './index19.js';
5
5
  import { P as Primitive, u as useControllableState, c as composeEventHandlers } from './index18.js';
6
- import { u as usePrevious } from './index33.js';
7
- import { u as useSize } from './index34.js';
6
+ import { u as usePrevious } from './index34.js';
7
+ import { u as useSize } from './index35.js';
8
8
  import { P as Presence } from './index21.js';
9
9
  import { c as cn } from './utils.js';
10
10
  import { C as Check } from './check.js';
@@ -2,7 +2,7 @@ import * as React from 'react';
2
2
  import { useState } from 'react';
3
3
  import { u as useComposedRefs } from './index11.js';
4
4
  import { P as Primitive } from './index18.js';
5
- import { u as useCallbackRef$1 } from './index30.js';
5
+ import { u as useCallbackRef$1 } from './index31.js';
6
6
  import { jsx } from 'react/jsx-runtime';
7
7
 
8
8
  var count = 0;
@@ -3,6 +3,23 @@ import { createContext, useState, useRef, useCallback, useMemo } from 'react';
3
3
  import { A as Alert } from './Alert.js';
4
4
  import { B as Button } from './Button.js';
5
5
  import { D as Dialog } from './Dialog.js';
6
+ import { T as TriangleAlert } from './triangle-alert.js';
7
+ import { c as createLucideIcon } from './createLucideIcon.js';
8
+
9
+ /**
10
+ * @license lucide-react v0.562.0 - ISC
11
+ *
12
+ * This source code is licensed under the ISC license.
13
+ * See the LICENSE file in the root directory of this source tree.
14
+ */
15
+
16
+
17
+ const __iconNode = [
18
+ ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
19
+ ["path", { d: "M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3", key: "1u773s" }],
20
+ ["path", { d: "M12 17h.01", key: "p32p05" }]
21
+ ];
22
+ const CircleQuestionMark = createLucideIcon("circle-question-mark", __iconNode);
6
23
 
7
24
  const DEFAULT_CONFIRM_OPTIONS = {
8
25
  title: "Are you sure?",
@@ -60,8 +77,10 @@ const ConfirmProvider = ({ children, defaultOptions }) => {
60
77
  Dialog,
61
78
  {
62
79
  handle,
80
+ icon: options.variant === "destructive" ? TriangleAlert : CircleQuestionMark,
81
+ iconVariant: options.variant,
63
82
  title: options.title,
64
- description: options.description || void 0,
83
+ description: options.description,
65
84
  footer: /* @__PURE__ */ jsxs(Fragment, { children: [
66
85
  /* @__PURE__ */ jsx(Button, { variant: "outline", type: "button", onClick: handleCancel, children: options.cancelLabel }),
67
86
  /* @__PURE__ */ jsx(Button, { variant: options.variant, type: "button", onClick: handleConfirm, children: options.confirmLabel })
@@ -1 +1 @@
1
- {"version":3,"file":"ConfirmContext.js","sources":["../lib/context/ConfirmContext.tsx"],"sourcesContent":["import { createContext, type ReactNode, useCallback, useMemo, useRef, useState } from 'react';\nimport { Alert } from '../components/Alert';\nimport { Button } from '../components/Button';\nimport { Dialog } from '../components/Dialog';\nimport type { DialogHandle } from '../hooks/useDialog';\n\nexport interface ConfirmAlert {\n type: 'default' | 'destructive' | 'warning' | 'success' | 'info';\n text: string;\n}\n\n// All fields optional — every one has a built-in default\nexport interface ConfirmOptions {\n title?: string;\n description?: string;\n confirmLabel?: string;\n cancelLabel?: string;\n variant?: 'default' | 'destructive';\n alert?: ConfirmAlert;\n}\n\ninterface ResolvedConfirmOptions {\n title: string;\n description: string;\n confirmLabel: string;\n cancelLabel: string;\n variant: 'default' | 'destructive';\n alert?: ConfirmAlert;\n}\n\n// Built-in defaults — used when neither the provider nor the caller provides a value\nconst DEFAULT_CONFIRM_OPTIONS: ResolvedConfirmOptions = {\n title: 'Are you sure?',\n description: '',\n confirmLabel: 'Confirm',\n cancelLabel: 'Cancel',\n variant: 'default',\n};\n\nexport interface ConfirmContextValue {\n confirm: (options?: ConfirmOptions) => Promise<boolean>;\n}\n\nexport const ConfirmContext = createContext<ConfirmContextValue | null>(null);\nConfirmContext.displayName = 'ConfirmContext';\n\nexport interface ConfirmProviderProps {\n children: ReactNode;\n // Override built-in defaults library-wide (still overridden per call)\n defaultOptions?: ConfirmOptions;\n}\n\n// Renders a shared confirm dialog and exposes the imperative confirm() function\nexport const ConfirmProvider = ({ children, defaultOptions }: ConfirmProviderProps) => {\n const [state, setState] = useState<{ open: boolean; options: ResolvedConfirmOptions }>({\n open: false,\n options: DEFAULT_CONFIRM_OPTIONS,\n });\n const resolverRef = useRef<((value: boolean) => void) | null>(null);\n\n const confirm = useCallback(\n (options?: ConfirmOptions): Promise<boolean> => {\n // Resolve any in-flight promise defensively before replacing it\n resolverRef.current?.(false);\n return new Promise<boolean>((resolve) => {\n resolverRef.current = resolve;\n // Merge: built-in defaults -> provider defaults -> per-call options\n setState({\n open: true,\n options: { ...DEFAULT_CONFIRM_OPTIONS, ...defaultOptions, ...options },\n });\n });\n },\n [defaultOptions],\n );\n\n const handleCancel = useCallback(() => {\n resolverRef.current?.(false);\n resolverRef.current = null;\n setState((prev) => ({ ...prev, open: false }));\n }, []);\n\n const handleConfirm = useCallback(() => {\n resolverRef.current?.(true);\n resolverRef.current = null;\n setState((prev) => ({ ...prev, open: false }));\n }, []);\n\n // Build a DialogHandle-compatible object for the Dialog component\n const handle: DialogHandle = useMemo(\n () => ({\n isOpen: state.open,\n open: () => setState((prev) => ({ ...prev, open: true })),\n close: handleCancel,\n onOpenChange: (val: boolean) => {\n if (!val) handleCancel();\n },\n }),\n [state.open, handleCancel],\n );\n\n const { options } = state;\n\n return (\n <ConfirmContext.Provider value={{ confirm }}>\n {children}\n <Dialog\n handle={handle}\n title={options.title}\n description={options.description || undefined}\n footer={\n <>\n <Button variant=\"outline\" type=\"button\" onClick={handleCancel}>\n {options.cancelLabel}\n </Button>\n <Button variant={options.variant} type=\"button\" onClick={handleConfirm}>\n {options.confirmLabel}\n </Button>\n </>\n }\n >\n {options.alert ? <Alert variant={options.alert.type} description={options.alert.text} /> : null}\n </Dialog>\n </ConfirmContext.Provider>\n );\n};\nConfirmProvider.displayName = 'ConfirmProvider';\n"],"names":["options"],"mappings":"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"}
1
+ {"version":3,"file":"ConfirmContext.js","sources":["../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.3/node_modules/lucide-react/dist/esm/icons/circle-question-mark.js","../lib/context/ConfirmContext.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\", key: \"1u773s\" }],\n [\"path\", { d: \"M12 17h.01\", key: \"p32p05\" }]\n];\nconst CircleQuestionMark = createLucideIcon(\"circle-question-mark\", __iconNode);\n\nexport { __iconNode, CircleQuestionMark as default };\n//# sourceMappingURL=circle-question-mark.js.map\n","import { CircleHelp, TriangleAlert } from 'lucide-react';\nimport { createContext, type ReactNode, useCallback, useMemo, useRef, useState } from 'react';\nimport { Alert } from '../components/Alert';\nimport { Button } from '../components/Button';\nimport { Dialog } from '../components/Dialog';\nimport type { DialogHandle } from '../hooks/useDialog';\n\nexport interface ConfirmAlert {\n type: 'default' | 'destructive' | 'warning' | 'success' | 'info';\n text: string;\n}\n\n// All fields optional — every one has a built-in default\nexport interface ConfirmOptions {\n title?: string;\n description?: string;\n confirmLabel?: string;\n cancelLabel?: string;\n variant?: 'default' | 'destructive';\n alert?: ConfirmAlert;\n}\n\ninterface ResolvedConfirmOptions {\n title: string;\n description: string;\n confirmLabel: string;\n cancelLabel: string;\n variant: 'default' | 'destructive';\n alert?: ConfirmAlert;\n}\n\n// Built-in defaults — used when neither the provider nor the caller provides a value\nconst DEFAULT_CONFIRM_OPTIONS: ResolvedConfirmOptions = {\n title: 'Are you sure?',\n description: '',\n confirmLabel: 'Confirm',\n cancelLabel: 'Cancel',\n variant: 'default',\n};\n\nexport interface ConfirmContextValue {\n confirm: (options?: ConfirmOptions) => Promise<boolean>;\n}\n\nexport const ConfirmContext = createContext<ConfirmContextValue | null>(null);\nConfirmContext.displayName = 'ConfirmContext';\n\nexport interface ConfirmProviderProps {\n children: ReactNode;\n // Override built-in defaults library-wide (still overridden per call)\n defaultOptions?: ConfirmOptions;\n}\n\n// Renders a shared confirm dialog and exposes the imperative confirm() function\nexport const ConfirmProvider = ({ children, defaultOptions }: ConfirmProviderProps) => {\n const [state, setState] = useState<{ open: boolean; options: ResolvedConfirmOptions }>({\n open: false,\n options: DEFAULT_CONFIRM_OPTIONS,\n });\n const resolverRef = useRef<((value: boolean) => void) | null>(null);\n\n const confirm = useCallback(\n (options?: ConfirmOptions): Promise<boolean> => {\n // Resolve any in-flight promise defensively before replacing it\n resolverRef.current?.(false);\n return new Promise<boolean>((resolve) => {\n resolverRef.current = resolve;\n // Merge: built-in defaults -> provider defaults -> per-call options\n setState({\n open: true,\n options: { ...DEFAULT_CONFIRM_OPTIONS, ...defaultOptions, ...options },\n });\n });\n },\n [defaultOptions],\n );\n\n const handleCancel = useCallback(() => {\n resolverRef.current?.(false);\n resolverRef.current = null;\n setState((prev) => ({ ...prev, open: false }));\n }, []);\n\n const handleConfirm = useCallback(() => {\n resolverRef.current?.(true);\n resolverRef.current = null;\n setState((prev) => ({ ...prev, open: false }));\n }, []);\n\n // Build a DialogHandle-compatible object for the Dialog component\n const handle: DialogHandle = useMemo(\n () => ({\n isOpen: state.open,\n open: () => setState((prev) => ({ ...prev, open: true })),\n close: handleCancel,\n onOpenChange: (val: boolean) => {\n if (!val) handleCancel();\n },\n }),\n [state.open, handleCancel],\n );\n\n const { options } = state;\n\n return (\n <ConfirmContext.Provider value={{ confirm }}>\n {children}\n <Dialog\n handle={handle}\n icon={options.variant === 'destructive' ? TriangleAlert : CircleHelp}\n iconVariant={options.variant}\n title={options.title}\n description={options.description}\n footer={\n <>\n <Button variant=\"outline\" type=\"button\" onClick={handleCancel}>\n {options.cancelLabel}\n </Button>\n <Button variant={options.variant} type=\"button\" onClick={handleConfirm}>\n {options.confirmLabel}\n </Button>\n </>\n }\n >\n {options.alert ? <Alert variant={options.alert.type} description={options.alert.text} /> : null}\n </Dialog>\n </ConfirmContext.Provider>\n );\n};\nConfirmProvider.displayName = 'ConfirmProvider';\n"],"names":["options","CircleHelp"],"mappings":"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","x_google_ignoreList":[0]}
package/dist/Dialog.js CHANGED
@@ -1,9 +1,7 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
- import { B as Button } from './Button.js';
3
- import { F as Form } from './Form.js';
4
- import { R as Root, T as Trigger, C as Content, a as Close, b as Title, D as Description, P as Portal, O as Overlay } from './index29.js';
5
- import { forwardRef } from 'react';
6
2
  import { c as cn } from './utils.js';
3
+ import { R as Root, T as Trigger, C as Content, a as Close, b as Title, D as Description, P as Portal, O as Overlay } from './index30.js';
4
+ import { forwardRef } from 'react';
7
5
  import { X } from './x.js';
8
6
 
9
7
  function Dialog$1({ ...props }) {
@@ -94,48 +92,26 @@ const DialogDescription = forwardRef(({ className, ...props }, ref) => /* @__PUR
94
92
  ));
95
93
  DialogDescription.displayName = Description.displayName;
96
94
 
95
+ function DialogActions({ children, className }) {
96
+ return /* @__PURE__ */ jsx("div", { className: cn("flex flex-col-reverse gap-2 border-t pt-4 sm:flex-row sm:justify-end", className), children });
97
+ }
98
+ DialogActions.displayName = "DialogActions";
97
99
  function Dialog({
98
100
  handle,
99
101
  anchor,
100
102
  content,
101
103
  trigger,
104
+ icon: Icon,
105
+ iconVariant = "default",
102
106
  title,
103
107
  description,
104
108
  badgeSlot,
105
109
  children,
106
110
  footer,
107
- className,
108
- mode = "default",
109
- form,
110
- mutation,
111
- onFormSubmit,
112
- transformSubmit,
113
- submitLabel,
114
- cancelLabel,
115
- fieldMapping
111
+ className
116
112
  }) {
117
113
  const renderBody = () => {
118
114
  if (content) return content(handle.close);
119
- if (mode === "form" && form) {
120
- return /* @__PURE__ */ jsxs(
121
- Form,
122
- {
123
- form,
124
- mutation,
125
- onSubmit: onFormSubmit,
126
- transformSubmit,
127
- fieldMapping,
128
- className: "space-y-4",
129
- children: [
130
- children,
131
- /* @__PURE__ */ jsx(DialogFooter, { children: footer ?? /* @__PURE__ */ jsxs(Fragment, { children: [
132
- /* @__PURE__ */ jsx(Button, { variant: "outline", type: "button", onClick: handle.close, children: cancelLabel ?? "Cancel" }),
133
- /* @__PURE__ */ jsx(Button, { type: "submit", children: submitLabel ?? "Save" })
134
- ] }) })
135
- ]
136
- }
137
- );
138
- }
139
115
  return /* @__PURE__ */ jsxs(Fragment, { children: [
140
116
  children,
141
117
  footer && /* @__PURE__ */ jsx(DialogFooter, { children: footer })
@@ -144,12 +120,22 @@ function Dialog({
144
120
  return /* @__PURE__ */ jsxs(Dialog$1, { open: handle.isOpen, onOpenChange: handle.onOpenChange, children: [
145
121
  anchor ? anchor(handle.open) : trigger && /* @__PURE__ */ jsx(DialogTrigger, { asChild: true, children: trigger }),
146
122
  /* @__PURE__ */ jsxs(DialogContent, { className, children: [
147
- (title || description) && /* @__PURE__ */ jsxs(DialogHeader, { children: [
148
- title && /* @__PURE__ */ jsx(DialogTitle, { children: badgeSlot ? /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2", children: [
123
+ /* @__PURE__ */ jsxs(DialogHeader, { children: [
124
+ /* @__PURE__ */ jsx(DialogTitle, { children: /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2", children: [
125
+ /* @__PURE__ */ jsx(
126
+ "span",
127
+ {
128
+ className: cn(
129
+ "flex size-8 shrink-0 items-center justify-center rounded-lg",
130
+ iconVariant === "destructive" ? "bg-destructive/10 text-destructive" : "bg-primary/10 text-primary"
131
+ ),
132
+ children: /* @__PURE__ */ jsx(Icon, { className: "size-4" })
133
+ }
134
+ ),
149
135
  /* @__PURE__ */ jsx("span", { children: title }),
150
136
  badgeSlot
151
- ] }) : title }),
152
- description && /* @__PURE__ */ jsx(DialogDescription, { children: description })
137
+ ] }) }),
138
+ /* @__PURE__ */ jsx(DialogDescription, { children: description })
153
139
  ] }),
154
140
  renderBody()
155
141
  ] })
@@ -157,5 +143,5 @@ function Dialog({
157
143
  }
158
144
  Dialog.displayName = "Dialog";
159
145
 
160
- export { Dialog as D };
146
+ export { Dialog as D, DialogActions as a };
161
147
  //# sourceMappingURL=Dialog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog.js","sources":["../shadcn/shadcnDialog/dialog.tsx","../lib/components/Dialog/Dialog.tsx"],"sourcesContent":["'use client';\n\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport { X } from 'lucide-react';\nimport type * as React from 'react';\nimport { forwardRef } from 'react';\n\nimport { cn } from '../utils';\n\n// Dialog root wrapper with data-slot attribute\nfunction Dialog({ ...props }: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\n// Dialog trigger wrapper with data-slot attribute\nfunction DialogTrigger({ ...props }: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\n// Dialog portal pass-through\nfunction DialogPortal({ ...props }: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal {...props} />;\n}\n\n// Dialog close wrapper with data-slot attribute\nfunction DialogClose({ ...props }: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nconst DialogOverlay = forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n data-slot=\"dialog-overlay\"\n className={cn(\n 'fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className,\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n data-slot=\"dialog-content\"\n className={cn(\n 'fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 sm:rounded-lg',\n className,\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\n// Dialog header layout container\nfunction DialogHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn('flex flex-col gap-2 text-center sm:text-left', className)}\n {...props}\n />\n );\n}\nDialogHeader.displayName = 'DialogHeader';\n\n// Dialog footer layout container\nfunction DialogFooter({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn('flex flex-col-reverse gap-2 sm:flex-row sm:justify-end', className)}\n {...props}\n />\n );\n}\nDialogFooter.displayName = 'DialogFooter';\n\nconst DialogTitle = forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n data-slot=\"dialog-title\"\n className={cn('text-lg font-semibold leading-none tracking-tight', className)}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n data-slot=\"dialog-description\"\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n};\n","import type { UseMutationResult } from '@tanstack/react-query';\nimport type React from 'react';\nimport type { FieldValues, UseFormReturn } from 'react-hook-form';\nimport {\n Dialog as ShadcnDialog,\n DialogContent as ShadcnDialogContent,\n DialogDescription as ShadcnDialogDescription,\n DialogFooter as ShadcnDialogFooter,\n DialogHeader as ShadcnDialogHeader,\n DialogTitle as ShadcnDialogTitle,\n DialogTrigger as ShadcnDialogTrigger,\n} from '../../../shadcn/shadcnDialog';\nimport type { DialogHandle } from '../../hooks/useDialog';\nimport type { FieldMapping } from '../../utils/formHelpers';\nimport { Button } from '../Button';\nimport { Form, type FormProps } from '../Form';\n\nexport interface DialogProps<\n TFieldValues extends FieldValues = FieldValues,\n TContext = unknown,\n TTransformedValues extends FieldValues | undefined = TFieldValues,\n TMutationData = unknown,\n TMutationError = Error,\n TMutationVariables = unknown,\n> {\n // Handle from useDialog() — controls open state and cleanup\n handle: DialogHandle;\n // anchor — render prop that receives open(); button renders outside DialogTrigger\n anchor?: (open: () => void) => React.ReactNode;\n // content — render prop that receives close()\n content?: (close: () => void) => React.ReactNode;\n // trigger — legacy ReactNode trigger (wrapped in DialogTrigger automatically)\n trigger?: React.ReactNode;\n title?: React.ReactNode;\n description?: React.ReactNode;\n // Optional badge-style slot rendered inline with the title in the header.\n // Use for short status indicators tied to the dialog's subject (e.g. \"Draft\", \"Derived unit\").\n badgeSlot?: React.ReactNode;\n children?: React.ReactNode;\n footer?: React.ReactNode;\n className?: string;\n // Form mode — wraps children+footer in a Form component\n mode?: 'default' | 'form';\n form?: UseFormReturn<TFieldValues, TContext, TTransformedValues>;\n mutation?: UseMutationResult<TMutationData, TMutationError, TMutationVariables, unknown>;\n onFormSubmit?: FormProps<TFieldValues, TContext, TTransformedValues>['onSubmit'];\n transformSubmit?: FormProps<\n TFieldValues,\n TContext,\n TTransformedValues,\n TMutationData,\n TMutationError,\n TMutationVariables\n >['transformSubmit'];\n submitLabel?: string;\n cancelLabel?: string;\n fieldMapping?: FieldMapping;\n}\n\n// Composite dialog — controlled by a useDialog() handle\nexport function Dialog<\n TFieldValues extends FieldValues = FieldValues,\n TContext = unknown,\n TTransformedValues extends FieldValues | undefined = TFieldValues,\n TMutationData = unknown,\n TMutationError = Error,\n TMutationVariables = unknown,\n>({\n handle,\n anchor,\n content,\n trigger,\n title,\n description,\n badgeSlot,\n children,\n footer,\n className,\n mode = 'default',\n form,\n mutation,\n onFormSubmit,\n transformSubmit,\n submitLabel,\n cancelLabel,\n fieldMapping,\n}: DialogProps<TFieldValues, TContext, TTransformedValues, TMutationData, TMutationError, TMutationVariables>) {\n // Render the body+footer content — shared between default and form modes\n const renderBody = () => {\n if (content) return content(handle.close);\n\n if (mode === 'form' && form) {\n return (\n <Form\n form={form}\n mutation={mutation}\n onSubmit={onFormSubmit}\n transformSubmit={transformSubmit}\n fieldMapping={fieldMapping}\n className=\"space-y-4\"\n >\n {children}\n <ShadcnDialogFooter>\n {footer ?? (\n <>\n <Button variant=\"outline\" type=\"button\" onClick={handle.close}>\n {cancelLabel ?? 'Cancel'}\n </Button>\n <Button type=\"submit\">{submitLabel ?? 'Save'}</Button>\n </>\n )}\n </ShadcnDialogFooter>\n </Form>\n );\n }\n\n return (\n <>\n {children}\n {footer && <ShadcnDialogFooter>{footer}</ShadcnDialogFooter>}\n </>\n );\n };\n\n return (\n <ShadcnDialog open={handle.isOpen} onOpenChange={handle.onOpenChange}>\n {anchor ? anchor(handle.open) : trigger && <ShadcnDialogTrigger asChild>{trigger}</ShadcnDialogTrigger>}\n <ShadcnDialogContent className={className}>\n {(title || description) && (\n <ShadcnDialogHeader>\n {title && (\n <ShadcnDialogTitle>\n {badgeSlot ? (\n <span className=\"flex items-center gap-2\">\n <span>{title}</span>\n {badgeSlot}\n </span>\n ) : (\n title\n )}\n </ShadcnDialogTitle>\n )}\n {description && <ShadcnDialogDescription>{description}</ShadcnDialogDescription>}\n </ShadcnDialogHeader>\n )}\n {renderBody()}\n </ShadcnDialogContent>\n </ShadcnDialog>\n );\n}\n\nDialog.displayName = 'Dialog';\n"],"names":["Dialog","DialogPrimitive.Root","DialogPrimitive.Trigger","DialogPrimitive.Portal","DialogPrimitive.Overlay","DialogPrimitive.Content","DialogPrimitive.Close","DialogPrimitive.Title","DialogPrimitive.Description","ShadcnDialogFooter","ShadcnDialog","ShadcnDialogTrigger","ShadcnDialogContent","ShadcnDialogHeader","ShadcnDialogTitle","ShadcnDialogDescription"],"mappings":"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"}
1
+ {"version":3,"file":"Dialog.js","sources":["../shadcn/shadcnDialog/dialog.tsx","../lib/components/Dialog/Dialog.tsx"],"sourcesContent":["'use client';\n\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport { X } from 'lucide-react';\nimport type * as React from 'react';\nimport { forwardRef } from 'react';\n\nimport { cn } from '../utils';\n\n// Dialog root wrapper with data-slot attribute\nfunction Dialog({ ...props }: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\n// Dialog trigger wrapper with data-slot attribute\nfunction DialogTrigger({ ...props }: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\n// Dialog portal pass-through\nfunction DialogPortal({ ...props }: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal {...props} />;\n}\n\n// Dialog close wrapper with data-slot attribute\nfunction DialogClose({ ...props }: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nconst DialogOverlay = forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n data-slot=\"dialog-overlay\"\n className={cn(\n 'fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className,\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n data-slot=\"dialog-content\"\n className={cn(\n 'fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 sm:rounded-lg',\n className,\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\n// Dialog header layout container\nfunction DialogHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn('flex flex-col gap-2 text-center sm:text-left', className)}\n {...props}\n />\n );\n}\nDialogHeader.displayName = 'DialogHeader';\n\n// Dialog footer layout container\nfunction DialogFooter({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn('flex flex-col-reverse gap-2 sm:flex-row sm:justify-end', className)}\n {...props}\n />\n );\n}\nDialogFooter.displayName = 'DialogFooter';\n\nconst DialogTitle = forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n data-slot=\"dialog-title\"\n className={cn('text-lg font-semibold leading-none tracking-tight', className)}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n data-slot=\"dialog-description\"\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n};\n","import type { LucideIcon } from 'lucide-react';\nimport type React from 'react';\nimport {\n Dialog as ShadcnDialog,\n DialogContent as ShadcnDialogContent,\n DialogDescription as ShadcnDialogDescription,\n DialogFooter as ShadcnDialogFooter,\n DialogHeader as ShadcnDialogHeader,\n DialogTitle as ShadcnDialogTitle,\n DialogTrigger as ShadcnDialogTrigger,\n} from '../../../shadcn/shadcnDialog';\nimport { cn } from '../../../shadcn/utils';\nimport type { DialogHandle } from '../../hooks/useDialog';\n\nexport interface DialogActionsProps {\n children: React.ReactNode;\n className?: string;\n}\n\n// Standard dialog/form action bar — a top divider with right-aligned buttons that stack on mobile.\n// Use to wrap a form's submit/cancel buttons so every dialog shares the same footer layout.\nexport function DialogActions({ children, className }: DialogActionsProps) {\n return (\n <div className={cn('flex flex-col-reverse gap-2 border-t pt-4 sm:flex-row sm:justify-end', className)}>\n {children}\n </div>\n );\n}\n\nDialogActions.displayName = 'DialogActions';\n\nexport interface DialogProps {\n // Handle from useDialog() — controls open state and cleanup\n handle: DialogHandle;\n // anchor — render prop that receives open(); button renders outside DialogTrigger\n anchor?: (open: () => void) => React.ReactNode;\n // content — render prop that receives close()\n content?: (close: () => void) => React.ReactNode;\n // trigger — legacy ReactNode trigger (wrapped in DialogTrigger automatically)\n trigger?: React.ReactNode;\n // Required header icon — rendered as a badge before the title to standardize dialog headers.\n icon: LucideIcon;\n // Colour of the header icon badge. Use 'destructive' for delete/confirm-destructive dialogs.\n iconVariant?: 'default' | 'destructive';\n title: React.ReactNode;\n description: React.ReactNode;\n // Optional badge-style slot rendered inline with the title in the header.\n // Use for short status indicators tied to the dialog's subject (e.g. \"Draft\", \"Derived unit\").\n badgeSlot?: React.ReactNode;\n children?: React.ReactNode;\n footer?: React.ReactNode;\n className?: string;\n}\n\n// Composite dialog — controlled by a useDialog() handle\nexport function Dialog({\n handle,\n anchor,\n content,\n trigger,\n icon: Icon,\n iconVariant = 'default',\n title,\n description,\n badgeSlot,\n children,\n footer,\n className,\n}: DialogProps) {\n // Render the body — a `content` render-prop, or `children` plus an optional `footer`.\n const renderBody = () => {\n if (content) return content(handle.close);\n\n return (\n <>\n {children}\n {footer && <ShadcnDialogFooter>{footer}</ShadcnDialogFooter>}\n </>\n );\n };\n\n return (\n <ShadcnDialog open={handle.isOpen} onOpenChange={handle.onOpenChange}>\n {anchor ? anchor(handle.open) : trigger && <ShadcnDialogTrigger asChild>{trigger}</ShadcnDialogTrigger>}\n <ShadcnDialogContent className={className}>\n <ShadcnDialogHeader>\n <ShadcnDialogTitle>\n <span className=\"flex items-center gap-2\">\n <span\n className={cn(\n 'flex size-8 shrink-0 items-center justify-center rounded-lg',\n iconVariant === 'destructive' ? 'bg-destructive/10 text-destructive' : 'bg-primary/10 text-primary',\n )}\n >\n <Icon className=\"size-4\" />\n </span>\n <span>{title}</span>\n {badgeSlot}\n </span>\n </ShadcnDialogTitle>\n <ShadcnDialogDescription>{description}</ShadcnDialogDescription>\n </ShadcnDialogHeader>\n {renderBody()}\n </ShadcnDialogContent>\n </ShadcnDialog>\n );\n}\n\nDialog.displayName = 'Dialog';\n"],"names":["Dialog","DialogPrimitive.Root","DialogPrimitive.Trigger","DialogPrimitive.Portal","DialogPrimitive.Overlay","DialogPrimitive.Content","DialogPrimitive.Close","DialogPrimitive.Title","DialogPrimitive.Description","ShadcnDialogFooter","ShadcnDialog","ShadcnDialogTrigger","ShadcnDialogContent","ShadcnDialogHeader","ShadcnDialogTitle","ShadcnDialogDescription"],"mappings":"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"}
@@ -163,6 +163,7 @@ const DropdownMenu = ({
163
163
  Dialog,
164
164
  {
165
165
  handle,
166
+ icon: item.icon,
166
167
  title: item.dialog.title,
167
168
  description: item.dialog.description,
168
169
  badgeSlot: item.dialog.badgeSlot,
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownMenu.js","sources":["../lib/components/DropdownMenu/DropdownMenu.tsx"],"sourcesContent":["import type React from 'react';\nimport { Fragment, useState } from 'react';\nimport {\n DropdownMenuCheckboxItem as ShadcnDropdownMenuCheckboxItem,\n DropdownMenuContent as ShadcnDropdownMenuContent,\n DropdownMenuGroup as ShadcnDropdownMenuGroup,\n DropdownMenuItem as ShadcnDropdownMenuItem,\n DropdownMenuLabel as ShadcnDropdownMenuLabel,\n DropdownMenuPortal as ShadcnDropdownMenuPortal,\n DropdownMenuRadioGroup as ShadcnDropdownMenuRadioGroup,\n DropdownMenuRadioItem as ShadcnDropdownMenuRadioItem,\n DropdownMenu as ShadcnDropdownMenuRoot,\n DropdownMenuSeparator as ShadcnDropdownMenuSeparator,\n DropdownMenuShortcut as ShadcnDropdownMenuShortcut,\n DropdownMenuSub as ShadcnDropdownMenuSub,\n DropdownMenuSubContent as ShadcnDropdownMenuSubContent,\n DropdownMenuSubTrigger as ShadcnDropdownMenuSubTrigger,\n DropdownMenuTrigger as ShadcnDropdownMenuTrigger,\n} from '../../../shadcn/shadcnDropdownMenu';\nimport type { DialogHandle } from '../../hooks/useDialog';\nimport { Button } from '../Button';\nimport { Dialog } from '../Dialog';\nimport type { DialogMenuItem, DropdownMenuProps, MenuItem } from './types';\n\nconst DropdownMenuRoot = ShadcnDropdownMenuRoot;\nconst DropdownMenuCheckboxItem = ShadcnDropdownMenuCheckboxItem;\nconst DropdownMenuContent = ShadcnDropdownMenuContent;\nconst DropdownMenuGroup = ShadcnDropdownMenuGroup;\nconst DropdownMenuItem = ShadcnDropdownMenuItem;\nconst DropdownMenuLabel = ShadcnDropdownMenuLabel;\nconst DropdownMenuPortal = ShadcnDropdownMenuPortal;\nconst DropdownMenuRadioGroup = ShadcnDropdownMenuRadioGroup;\nconst DropdownMenuRadioItem = ShadcnDropdownMenuRadioItem;\nconst DropdownMenuSeparator = ShadcnDropdownMenuSeparator;\nconst DropdownMenuShortcut = ShadcnDropdownMenuShortcut;\nconst DropdownMenuSub = ShadcnDropdownMenuSub;\nconst DropdownMenuSubContent = ShadcnDropdownMenuSubContent;\nconst DropdownMenuSubTrigger = ShadcnDropdownMenuSubTrigger;\nconst DropdownMenuTrigger = ShadcnDropdownMenuTrigger;\n\n// Renders a single menu item based on its type — supports nested submenus\nconst renderMenuItem = (item: MenuItem, index: number, onDialogSelect?: (id: string) => void): React.ReactNode => {\n switch (item.type) {\n case 'separator':\n return <DropdownMenuSeparator key={item.id ?? `separator-${index}`} />;\n\n case 'label':\n return <DropdownMenuLabel key={item.id}>{item.label}</DropdownMenuLabel>;\n\n case 'item': {\n const Icon = item.icon;\n return (\n <DropdownMenuItem\n key={item.id}\n onClick={item.onClick}\n disabled={item.disabled}\n className={item.variant === 'destructive' ? 'text-destructive focus:text-destructive' : undefined}\n >\n {Icon && <Icon className=\"mr-2 h-4 w-4\" />}\n <span>{item.label}</span>\n {item.shortcut && <DropdownMenuShortcut>{item.shortcut}</DropdownMenuShortcut>}\n </DropdownMenuItem>\n );\n }\n\n case 'checkbox': {\n const Icon = item.icon;\n return (\n <DropdownMenuCheckboxItem\n key={item.id}\n checked={item.checked}\n onCheckedChange={item.onCheckedChange}\n disabled={item.disabled}\n >\n {Icon && <Icon className=\"mr-2 h-4 w-4\" />}\n {item.label}\n </DropdownMenuCheckboxItem>\n );\n }\n\n case 'radio-group':\n return (\n <DropdownMenuRadioGroup key={item.id} value={item.value} onValueChange={item.onValueChange}>\n {item.items.map((radioItem) => {\n const Icon = radioItem.icon;\n return (\n <DropdownMenuRadioItem key={radioItem.value} value={radioItem.value} disabled={radioItem.disabled}>\n {Icon && <Icon className=\"mr-2 h-4 w-4\" />}\n {radioItem.label}\n </DropdownMenuRadioItem>\n );\n })}\n </DropdownMenuRadioGroup>\n );\n\n case 'sub': {\n const Icon = item.icon;\n return (\n <DropdownMenuSub key={item.id}>\n <DropdownMenuSubTrigger disabled={item.disabled}>\n {Icon && <Icon className=\"mr-2 h-4 w-4\" />}\n <span>{item.label}</span>\n </DropdownMenuSubTrigger>\n <DropdownMenuPortal>\n <DropdownMenuSubContent>\n {item.items.map((subItem, subIndex) => renderMenuItem(subItem, subIndex, onDialogSelect))}\n </DropdownMenuSubContent>\n </DropdownMenuPortal>\n </DropdownMenuSub>\n );\n }\n\n case 'group':\n return (\n <DropdownMenuGroup key={item.id}>\n {item.label && <DropdownMenuLabel>{item.label}</DropdownMenuLabel>}\n {item.items.map((groupItem, groupIndex) => renderMenuItem(groupItem, groupIndex, onDialogSelect))}\n </DropdownMenuGroup>\n );\n\n case 'dialog': {\n const Icon = item.icon;\n return (\n <DropdownMenuItem\n key={item.id}\n disabled={item.disabled}\n onSelect={(e) => {\n e.preventDefault();\n onDialogSelect?.(item.id);\n }}\n >\n {Icon && <Icon className=\"mr-2 h-4 w-4\" />}\n <span>{item.label}</span>\n </DropdownMenuItem>\n );\n }\n\n case 'custom': {\n const content = typeof item.render === 'function' ? item.render() : item.render;\n if (item.asMenuItem) {\n return (\n <DropdownMenuItem key={item.id} onClick={item.onClick} disabled={item.disabled}>\n {content}\n </DropdownMenuItem>\n );\n }\n return <Fragment key={item.id}>{content}</Fragment>;\n }\n\n default:\n return null;\n }\n};\n\n/**\n * DropdownMenu - A flexible, data-driven dropdown menu component\n *\n * This component provides a declarative API for building dropdown menus without\n * manually composing primitive components. It supports all dropdown menu features\n * including items, checkboxes, radio groups, submenus, separators, labels, and groups.\n *\n * @example\n * ```tsx\n * import { DropdownMenu } from '@vritti/quantum-ui/DropdownMenu';\n * import { Settings, User, LogOut } from 'lucide-react';\n *\n * function UserMenu() {\n * const [showStatus, setShowStatus] = useState(true);\n *\n * return (\n * <DropdownMenu\n * trigger={{ label: 'Menu', variant: 'outline' }}\n * items={[\n * { type: 'label', id: 'account-label', label: 'My Account' },\n * { type: 'item', id: 'profile', label: 'Profile', icon: User, shortcut: '⌘P' },\n * { type: 'item', id: 'settings', label: 'Settings', icon: Settings },\n * { type: 'separator' },\n * {\n * type: 'checkbox',\n * id: 'status',\n * label: 'Show Status',\n * checked: showStatus,\n * onCheckedChange: setShowStatus,\n * },\n * { type: 'separator' },\n * {\n * type: 'item',\n * id: 'logout',\n * label: 'Log out',\n * icon: LogOut,\n * variant: 'destructive',\n * },\n * ]}\n * align=\"end\"\n * />\n * );\n * }\n * ```\n */\nexport const DropdownMenu: React.FC<DropdownMenuProps> = ({\n trigger,\n items,\n modal = false,\n contentClassName,\n align = 'end',\n side,\n}) => {\n const [activeDialogId, setActiveDialogId] = useState<string | null>(null);\n const TriggerIcon = trigger.icon;\n\n // Collect all dialog-type items (including nested) for rendering outside the Radix root\n const collectDialogItems = (menuItems: MenuItem[]): DialogMenuItem[] => {\n const result: DialogMenuItem[] = [];\n for (const item of menuItems) {\n if (item.type === 'dialog') result.push(item);\n if (item.type === 'sub' || item.type === 'group') result.push(...collectDialogItems(item.items));\n }\n return result;\n };\n\n const dialogItems = collectDialogItems(items);\n\n return (\n <>\n <DropdownMenuRoot modal={modal}>\n <DropdownMenuTrigger asChild>\n {trigger.children ?? (\n <Button variant={trigger.variant} className={trigger.className}>\n {TriggerIcon && <TriggerIcon className=\"mr-2 h-4 w-4\" />}\n {trigger.label}\n </Button>\n )}\n </DropdownMenuTrigger>\n <DropdownMenuContent\n className={contentClassName}\n align={align}\n side={side}\n onCloseAutoFocus={(event) => {\n if (!modal) {\n event.preventDefault();\n }\n }}\n >\n {items.map((item, index) => renderMenuItem(item, index, setActiveDialogId))}\n </DropdownMenuContent>\n </DropdownMenuRoot>\n {dialogItems.map((item) => {\n const handle: DialogHandle = {\n isOpen: activeDialogId === item.id,\n open: () => setActiveDialogId(item.id),\n close: () => setActiveDialogId(null),\n onOpenChange: (val) => {\n if (!val) setActiveDialogId(null);\n },\n };\n return (\n <Dialog\n key={item.id}\n handle={handle}\n title={item.dialog.title}\n description={item.dialog.description}\n badgeSlot={item.dialog.badgeSlot}\n content={item.dialog.content}\n footer={item.dialog.footer}\n />\n );\n })}\n </>\n );\n};\n\nDropdownMenu.displayName = 'DropdownMenu';\n"],"names":["ShadcnDropdownMenuRoot","ShadcnDropdownMenuCheckboxItem","ShadcnDropdownMenuContent","ShadcnDropdownMenuGroup","ShadcnDropdownMenuItem","ShadcnDropdownMenuLabel","ShadcnDropdownMenuPortal","ShadcnDropdownMenuRadioGroup","ShadcnDropdownMenuRadioItem","ShadcnDropdownMenuSeparator","ShadcnDropdownMenuShortcut","ShadcnDropdownMenuSub","ShadcnDropdownMenuSubContent","ShadcnDropdownMenuSubTrigger","ShadcnDropdownMenuTrigger","Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"DropdownMenu.js","sources":["../lib/components/DropdownMenu/DropdownMenu.tsx"],"sourcesContent":["import type React from 'react';\nimport { Fragment, useState } from 'react';\nimport {\n DropdownMenuCheckboxItem as ShadcnDropdownMenuCheckboxItem,\n DropdownMenuContent as ShadcnDropdownMenuContent,\n DropdownMenuGroup as ShadcnDropdownMenuGroup,\n DropdownMenuItem as ShadcnDropdownMenuItem,\n DropdownMenuLabel as ShadcnDropdownMenuLabel,\n DropdownMenuPortal as ShadcnDropdownMenuPortal,\n DropdownMenuRadioGroup as ShadcnDropdownMenuRadioGroup,\n DropdownMenuRadioItem as ShadcnDropdownMenuRadioItem,\n DropdownMenu as ShadcnDropdownMenuRoot,\n DropdownMenuSeparator as ShadcnDropdownMenuSeparator,\n DropdownMenuShortcut as ShadcnDropdownMenuShortcut,\n DropdownMenuSub as ShadcnDropdownMenuSub,\n DropdownMenuSubContent as ShadcnDropdownMenuSubContent,\n DropdownMenuSubTrigger as ShadcnDropdownMenuSubTrigger,\n DropdownMenuTrigger as ShadcnDropdownMenuTrigger,\n} from '../../../shadcn/shadcnDropdownMenu';\nimport type { DialogHandle } from '../../hooks/useDialog';\nimport { Button } from '../Button';\nimport { Dialog } from '../Dialog';\nimport type { DialogMenuItem, DropdownMenuProps, MenuItem } from './types';\n\nconst DropdownMenuRoot = ShadcnDropdownMenuRoot;\nconst DropdownMenuCheckboxItem = ShadcnDropdownMenuCheckboxItem;\nconst DropdownMenuContent = ShadcnDropdownMenuContent;\nconst DropdownMenuGroup = ShadcnDropdownMenuGroup;\nconst DropdownMenuItem = ShadcnDropdownMenuItem;\nconst DropdownMenuLabel = ShadcnDropdownMenuLabel;\nconst DropdownMenuPortal = ShadcnDropdownMenuPortal;\nconst DropdownMenuRadioGroup = ShadcnDropdownMenuRadioGroup;\nconst DropdownMenuRadioItem = ShadcnDropdownMenuRadioItem;\nconst DropdownMenuSeparator = ShadcnDropdownMenuSeparator;\nconst DropdownMenuShortcut = ShadcnDropdownMenuShortcut;\nconst DropdownMenuSub = ShadcnDropdownMenuSub;\nconst DropdownMenuSubContent = ShadcnDropdownMenuSubContent;\nconst DropdownMenuSubTrigger = ShadcnDropdownMenuSubTrigger;\nconst DropdownMenuTrigger = ShadcnDropdownMenuTrigger;\n\n// Renders a single menu item based on its type — supports nested submenus\nconst renderMenuItem = (item: MenuItem, index: number, onDialogSelect?: (id: string) => void): React.ReactNode => {\n switch (item.type) {\n case 'separator':\n return <DropdownMenuSeparator key={item.id ?? `separator-${index}`} />;\n\n case 'label':\n return <DropdownMenuLabel key={item.id}>{item.label}</DropdownMenuLabel>;\n\n case 'item': {\n const Icon = item.icon;\n return (\n <DropdownMenuItem\n key={item.id}\n onClick={item.onClick}\n disabled={item.disabled}\n className={item.variant === 'destructive' ? 'text-destructive focus:text-destructive' : undefined}\n >\n {Icon && <Icon className=\"mr-2 h-4 w-4\" />}\n <span>{item.label}</span>\n {item.shortcut && <DropdownMenuShortcut>{item.shortcut}</DropdownMenuShortcut>}\n </DropdownMenuItem>\n );\n }\n\n case 'checkbox': {\n const Icon = item.icon;\n return (\n <DropdownMenuCheckboxItem\n key={item.id}\n checked={item.checked}\n onCheckedChange={item.onCheckedChange}\n disabled={item.disabled}\n >\n {Icon && <Icon className=\"mr-2 h-4 w-4\" />}\n {item.label}\n </DropdownMenuCheckboxItem>\n );\n }\n\n case 'radio-group':\n return (\n <DropdownMenuRadioGroup key={item.id} value={item.value} onValueChange={item.onValueChange}>\n {item.items.map((radioItem) => {\n const Icon = radioItem.icon;\n return (\n <DropdownMenuRadioItem key={radioItem.value} value={radioItem.value} disabled={radioItem.disabled}>\n {Icon && <Icon className=\"mr-2 h-4 w-4\" />}\n {radioItem.label}\n </DropdownMenuRadioItem>\n );\n })}\n </DropdownMenuRadioGroup>\n );\n\n case 'sub': {\n const Icon = item.icon;\n return (\n <DropdownMenuSub key={item.id}>\n <DropdownMenuSubTrigger disabled={item.disabled}>\n {Icon && <Icon className=\"mr-2 h-4 w-4\" />}\n <span>{item.label}</span>\n </DropdownMenuSubTrigger>\n <DropdownMenuPortal>\n <DropdownMenuSubContent>\n {item.items.map((subItem, subIndex) => renderMenuItem(subItem, subIndex, onDialogSelect))}\n </DropdownMenuSubContent>\n </DropdownMenuPortal>\n </DropdownMenuSub>\n );\n }\n\n case 'group':\n return (\n <DropdownMenuGroup key={item.id}>\n {item.label && <DropdownMenuLabel>{item.label}</DropdownMenuLabel>}\n {item.items.map((groupItem, groupIndex) => renderMenuItem(groupItem, groupIndex, onDialogSelect))}\n </DropdownMenuGroup>\n );\n\n case 'dialog': {\n const Icon = item.icon;\n return (\n <DropdownMenuItem\n key={item.id}\n disabled={item.disabled}\n onSelect={(e) => {\n e.preventDefault();\n onDialogSelect?.(item.id);\n }}\n >\n {Icon && <Icon className=\"mr-2 h-4 w-4\" />}\n <span>{item.label}</span>\n </DropdownMenuItem>\n );\n }\n\n case 'custom': {\n const content = typeof item.render === 'function' ? item.render() : item.render;\n if (item.asMenuItem) {\n return (\n <DropdownMenuItem key={item.id} onClick={item.onClick} disabled={item.disabled}>\n {content}\n </DropdownMenuItem>\n );\n }\n return <Fragment key={item.id}>{content}</Fragment>;\n }\n\n default:\n return null;\n }\n};\n\n/**\n * DropdownMenu - A flexible, data-driven dropdown menu component\n *\n * This component provides a declarative API for building dropdown menus without\n * manually composing primitive components. It supports all dropdown menu features\n * including items, checkboxes, radio groups, submenus, separators, labels, and groups.\n *\n * @example\n * ```tsx\n * import { DropdownMenu } from '@vritti/quantum-ui/DropdownMenu';\n * import { Settings, User, LogOut } from 'lucide-react';\n *\n * function UserMenu() {\n * const [showStatus, setShowStatus] = useState(true);\n *\n * return (\n * <DropdownMenu\n * trigger={{ label: 'Menu', variant: 'outline' }}\n * items={[\n * { type: 'label', id: 'account-label', label: 'My Account' },\n * { type: 'item', id: 'profile', label: 'Profile', icon: User, shortcut: '⌘P' },\n * { type: 'item', id: 'settings', label: 'Settings', icon: Settings },\n * { type: 'separator' },\n * {\n * type: 'checkbox',\n * id: 'status',\n * label: 'Show Status',\n * checked: showStatus,\n * onCheckedChange: setShowStatus,\n * },\n * { type: 'separator' },\n * {\n * type: 'item',\n * id: 'logout',\n * label: 'Log out',\n * icon: LogOut,\n * variant: 'destructive',\n * },\n * ]}\n * align=\"end\"\n * />\n * );\n * }\n * ```\n */\nexport const DropdownMenu: React.FC<DropdownMenuProps> = ({\n trigger,\n items,\n modal = false,\n contentClassName,\n align = 'end',\n side,\n}) => {\n const [activeDialogId, setActiveDialogId] = useState<string | null>(null);\n const TriggerIcon = trigger.icon;\n\n // Collect all dialog-type items (including nested) for rendering outside the Radix root\n const collectDialogItems = (menuItems: MenuItem[]): DialogMenuItem[] => {\n const result: DialogMenuItem[] = [];\n for (const item of menuItems) {\n if (item.type === 'dialog') result.push(item);\n if (item.type === 'sub' || item.type === 'group') result.push(...collectDialogItems(item.items));\n }\n return result;\n };\n\n const dialogItems = collectDialogItems(items);\n\n return (\n <>\n <DropdownMenuRoot modal={modal}>\n <DropdownMenuTrigger asChild>\n {trigger.children ?? (\n <Button variant={trigger.variant} className={trigger.className}>\n {TriggerIcon && <TriggerIcon className=\"mr-2 h-4 w-4\" />}\n {trigger.label}\n </Button>\n )}\n </DropdownMenuTrigger>\n <DropdownMenuContent\n className={contentClassName}\n align={align}\n side={side}\n onCloseAutoFocus={(event) => {\n if (!modal) {\n event.preventDefault();\n }\n }}\n >\n {items.map((item, index) => renderMenuItem(item, index, setActiveDialogId))}\n </DropdownMenuContent>\n </DropdownMenuRoot>\n {dialogItems.map((item) => {\n const handle: DialogHandle = {\n isOpen: activeDialogId === item.id,\n open: () => setActiveDialogId(item.id),\n close: () => setActiveDialogId(null),\n onOpenChange: (val) => {\n if (!val) setActiveDialogId(null);\n },\n };\n return (\n <Dialog\n key={item.id}\n handle={handle}\n icon={item.icon}\n title={item.dialog.title}\n description={item.dialog.description}\n badgeSlot={item.dialog.badgeSlot}\n content={item.dialog.content}\n footer={item.dialog.footer}\n />\n );\n })}\n </>\n );\n};\n\nDropdownMenu.displayName = 'DropdownMenu';\n"],"names":["ShadcnDropdownMenuRoot","ShadcnDropdownMenuCheckboxItem","ShadcnDropdownMenuContent","ShadcnDropdownMenuGroup","ShadcnDropdownMenuItem","ShadcnDropdownMenuLabel","ShadcnDropdownMenuPortal","ShadcnDropdownMenuRadioGroup","ShadcnDropdownMenuRadioItem","ShadcnDropdownMenuSeparator","ShadcnDropdownMenuShortcut","ShadcnDropdownMenuSub","ShadcnDropdownMenuSubContent","ShadcnDropdownMenuSubTrigger","ShadcnDropdownMenuTrigger","Fragment"],"mappings":"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"}
package/dist/Progress.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
3
  import { forwardRef } from 'react';
4
- import { c as createContextScope } from './index32.js';
5
- import { P as Primitive } from './index28.js';
4
+ import { c as createContextScope } from './index33.js';
5
+ import { P as Primitive } from './index29.js';
6
6
  import { c as cn } from './utils.js';
7
7
 
8
8
  var PROGRESS_NAME = "Progress";
@@ -8,8 +8,8 @@ import { u as useComposedRefs } from './index11.js';
8
8
  import { c as createContextScope } from './index19.js';
9
9
  import { R as Root, c as createRovingFocusGroupScope, I as Item } from './index20.js';
10
10
  import { u as useDirection } from './index22.js';
11
- import { u as useSize } from './index34.js';
12
- import { u as usePrevious } from './index33.js';
11
+ import { u as useSize } from './index35.js';
12
+ import { u as usePrevious } from './index34.js';
13
13
  import { P as Presence } from './index21.js';
14
14
 
15
15
  var RADIO_NAME = "Radio";
package/dist/Sidebar.js CHANGED
@@ -6,7 +6,7 @@ import { forwardRef, useState, useCallback, useEffect, useMemo, useRef, createCo
6
6
  import { u as useIsMobile } from './useIsMobile.js';
7
7
  import { c as cn } from './utils.js';
8
8
  import { T as TooltipProvider, a as Tooltip, b as TooltipTrigger, c as TooltipContent } from './tooltip.js';
9
- import { R as Root, P as Portal, C as Content, a as Close, b as Title, D as Description, O as Overlay } from './index29.js';
9
+ import { R as Root, P as Portal, C as Content, a as Close, b as Title, D as Description, O as Overlay } from './index30.js';
10
10
  import { X } from './x.js';
11
11
  import { D as DropdownMenu, a as DropdownMenuTrigger, b as DropdownMenuContent, e as DropdownMenuLabel, c as DropdownMenuItem } from './dropdown-menu.js';
12
12
  import { c as createLucideIcon } from './createLucideIcon.js';
package/dist/Switch.js CHANGED
@@ -5,8 +5,8 @@ import { F as Field, e as FieldLabel, c as FieldError } from './field.js';
5
5
  import { u as useControllableState, P as Primitive, c as composeEventHandlers } from './index18.js';
6
6
  import { u as useComposedRefs } from './index11.js';
7
7
  import { c as createContextScope } from './index19.js';
8
- import { u as usePrevious } from './index33.js';
9
- import { u as useSize } from './index34.js';
8
+ import { u as usePrevious } from './index34.js';
9
+ import { u as useSize } from './index35.js';
10
10
  import { c as cn } from './utils.js';
11
11
 
12
12
  var SWITCH_NAME = "Switch";
@@ -161,7 +161,7 @@ function Switch$1({
161
161
  "data-slot": "switch",
162
162
  "data-size": size,
163
163
  className: cn(
164
- "peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent outline-none transition-all focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px]",
164
+ "peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent outline-none transition-all focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] data-[size=lg]:h-[24px] data-[size=lg]:w-[40px]",
165
165
  className
166
166
  ),
167
167
  ...props,
@@ -169,7 +169,7 @@ function Switch$1({
169
169
  Thumb,
170
170
  {
171
171
  "data-slot": "switch-thumb",
172
- className: "bg-primary-foreground shadow-sm pointer-events-none block rounded-full ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0"
172
+ className: "bg-primary-foreground shadow-sm pointer-events-none block rounded-full ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=lg]/switch:size-5 data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0"
173
173
  }
174
174
  )
175
175
  }
@@ -177,28 +177,31 @@ function Switch$1({
177
177
  }
178
178
 
179
179
  const Switch = React__default.forwardRef(
180
- ({ label, description, error, id, ...props }, ref) => {
180
+ ({ label, description, error, id, size = "lg", ...props }, ref) => {
181
181
  const generatedId = React__default.useId();
182
182
  const fieldId = id || generatedId;
183
183
  const hasError = !!error;
184
184
  return /* @__PURE__ */ jsxs(Field, { "data-disabled": props.disabled, "data-invalid": hasError, children: [
185
- label && /* @__PURE__ */ jsx(FieldLabel, { htmlFor: fieldId, className: "font-normal cursor-pointer", children: label }),
186
- /* @__PURE__ */ jsxs("div", { className: "flex min-h-9 items-center justify-between gap-3", children: [
187
- /* @__PURE__ */ jsx(
188
- "label",
189
- {
190
- htmlFor: fieldId,
191
- id: `${fieldId}-description`,
192
- className: "text-sm text-muted-foreground leading-normal cursor-pointer",
193
- children: description
194
- }
195
- ),
185
+ /* @__PURE__ */ jsxs("div", { className: "flex min-h-9 items-center justify-between gap-4", children: [
186
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-0.5", children: [
187
+ label && /* @__PURE__ */ jsx(FieldLabel, { htmlFor: fieldId, className: "font-normal cursor-pointer", children: label }),
188
+ /* @__PURE__ */ jsx(
189
+ "label",
190
+ {
191
+ htmlFor: fieldId,
192
+ id: `${fieldId}-description`,
193
+ className: "text-sm text-muted-foreground leading-normal cursor-pointer",
194
+ children: description
195
+ }
196
+ )
197
+ ] }),
196
198
  /* @__PURE__ */ jsx(
197
199
  Switch$1,
198
200
  {
199
201
  ...props,
200
202
  ref,
201
203
  id: fieldId,
204
+ size,
202
205
  "aria-describedby": description || error ? `${fieldId}-description ${fieldId}-error` : void 0,
203
206
  "aria-invalid": hasError
204
207
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Switch.js","sources":["../node_modules/.pnpm/@radix-ui+react-switch@1.2.6_@types+react-dom@19.2.3_@types+react@19.2.14__@types+react_c3445f43106be928beab9f2bef095c25/node_modules/@radix-ui/react-switch/dist/index.mjs","../shadcn/shadcnSwitch/Switch.tsx","../lib/components/Switch/Switch.tsx"],"sourcesContent":["\"use client\";\n\n// src/switch.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar SWITCH_NAME = \"Switch\";\nvar [createSwitchContext, createSwitchScope] = createContextScope(SWITCH_NAME);\nvar [SwitchProvider, useSwitchContext] = createSwitchContext(SWITCH_NAME);\nvar Switch = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeSwitch,\n name,\n checked: checkedProp,\n defaultChecked,\n required,\n disabled,\n value = \"on\",\n onCheckedChange,\n form,\n ...switchProps\n } = props;\n const [button, setButton] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = button ? form || !!button.closest(\"form\") : true;\n const [checked, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked ?? false,\n onChange: onCheckedChange,\n caller: SWITCH_NAME\n });\n return /* @__PURE__ */ jsxs(SwitchProvider, { scope: __scopeSwitch, checked, disabled, children: [\n /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"switch\",\n \"aria-checked\": checked,\n \"aria-required\": required,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...switchProps,\n ref: composedRefs,\n onClick: composeEventHandlers(props.onClick, (event) => {\n setChecked((prevChecked) => !prevChecked);\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }\n ),\n isFormControl && /* @__PURE__ */ jsx(\n SwitchBubbleInput,\n {\n control: button,\n bubbles: !hasConsumerStoppedPropagationRef.current,\n name,\n value,\n checked,\n required,\n disabled,\n form,\n style: { transform: \"translateX(-100%)\" }\n }\n )\n ] });\n }\n);\nSwitch.displayName = SWITCH_NAME;\nvar THUMB_NAME = \"SwitchThumb\";\nvar SwitchThumb = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSwitch, ...thumbProps } = props;\n const context = useSwitchContext(THUMB_NAME, __scopeSwitch);\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.checked),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...thumbProps,\n ref: forwardedRef\n }\n );\n }\n);\nSwitchThumb.displayName = THUMB_NAME;\nvar BUBBLE_INPUT_NAME = \"SwitchBubbleInput\";\nvar SwitchBubbleInput = React.forwardRef(\n ({\n __scopeSwitch,\n control,\n checked,\n bubbles = true,\n ...props\n }, forwardedRef) => {\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(ref, forwardedRef);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n React.useEffect(() => {\n const input = ref.current;\n if (!input) return;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n \"checked\"\n );\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n return /* @__PURE__ */ jsx(\n \"input\",\n {\n type: \"checkbox\",\n \"aria-hidden\": true,\n defaultChecked: checked,\n ...props,\n tabIndex: -1,\n ref: composedRefs,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0\n }\n }\n );\n }\n);\nSwitchBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction getState(checked) {\n return checked ? \"checked\" : \"unchecked\";\n}\nvar Root = Switch;\nvar Thumb = SwitchThumb;\nexport {\n Root,\n Switch,\n SwitchThumb,\n Thumb,\n createSwitchScope\n};\n//# sourceMappingURL=index.mjs.map\n","'use client';\n\nimport * as SwitchPrimitive from '@radix-ui/react-switch';\nimport type * as React from 'react';\n\nimport { cn } from '../utils';\n\nfunction Switch({\n className,\n size = 'default',\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root> & {\n size?: 'sm' | 'default';\n}) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n data-size={size}\n className={cn(\n 'peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent outline-none transition-all focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px]',\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className=\"bg-primary-foreground shadow-sm pointer-events-none block rounded-full ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0\"\n />\n </SwitchPrimitive.Root>\n );\n}\n\nexport { Switch };\n","import React from 'react';\nimport { Field, FieldError, FieldLabel } from '../../../shadcn/shadcnField';\nimport { Switch as ShadcnSwitch } from '../../../shadcn/shadcnSwitch';\n\nexport interface SwitchProps extends React.ComponentPropsWithoutRef<typeof ShadcnSwitch> {\n /**\n * Label for the switch\n */\n label?: React.ReactNode;\n\n /**\n * Helper text or description displayed beside the toggle — required for field layout\n */\n description: React.ReactNode;\n\n /**\n * Error message to display below the switch\n */\n error?: string;\n}\n\n/**\n * Switch component for toggling between two states (on/off).\n *\n * Description is required and sits beside the toggle, keeping the label pinned\n * to the top so it aligns with adjacent TextField labels in a form row.\n *\n * @example\n * ```tsx\n * // With Field system (form usage)\n * <Switch\n * label=\"Enable notifications\"\n * description=\"Receive email updates about your account\"\n * />\n *\n * // In a Form component\n * <Form form={form} onSubmit={handleSubmit}>\n * <Switch\n * name=\"marketing\"\n * label=\"Marketing emails\"\n * description=\"Receive promotional content\"\n * />\n * </Form>\n * ```\n */\nexport const Switch = React.forwardRef<React.ElementRef<typeof ShadcnSwitch>, SwitchProps>(\n ({ label, description, error, id, ...props }, ref) => {\n const generatedId = React.useId();\n const fieldId = id || generatedId;\n const hasError = !!error;\n\n return (\n <Field data-disabled={props.disabled} data-invalid={hasError}>\n {label && (\n <FieldLabel htmlFor={fieldId} className=\"font-normal cursor-pointer\">\n {label}\n </FieldLabel>\n )}\n\n <div className=\"flex min-h-9 items-center justify-between gap-3\">\n <label\n htmlFor={fieldId}\n id={`${fieldId}-description`}\n className=\"text-sm text-muted-foreground leading-normal cursor-pointer\"\n >\n {description}\n </label>\n <ShadcnSwitch\n {...props}\n ref={ref}\n id={fieldId}\n aria-describedby={description || error ? `${fieldId}-description ${fieldId}-error` : undefined}\n aria-invalid={hasError}\n />\n </div>\n\n {error && <FieldError id={`${fieldId}-error`}>{error}</FieldError>}\n </Field>\n );\n },\n);\n\nSwitch.displayName = 'Switch';\n"],"names":["Switch","SwitchPrimitive.Root","SwitchPrimitive.Thumb","React","ShadcnSwitch"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"Switch.js","sources":["../node_modules/.pnpm/@radix-ui+react-switch@1.2.6_@types+react-dom@19.2.3_@types+react@19.2.14__@types+react_c3445f43106be928beab9f2bef095c25/node_modules/@radix-ui/react-switch/dist/index.mjs","../shadcn/shadcnSwitch/Switch.tsx","../lib/components/Switch/Switch.tsx"],"sourcesContent":["\"use client\";\n\n// src/switch.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar SWITCH_NAME = \"Switch\";\nvar [createSwitchContext, createSwitchScope] = createContextScope(SWITCH_NAME);\nvar [SwitchProvider, useSwitchContext] = createSwitchContext(SWITCH_NAME);\nvar Switch = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeSwitch,\n name,\n checked: checkedProp,\n defaultChecked,\n required,\n disabled,\n value = \"on\",\n onCheckedChange,\n form,\n ...switchProps\n } = props;\n const [button, setButton] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = button ? form || !!button.closest(\"form\") : true;\n const [checked, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked ?? false,\n onChange: onCheckedChange,\n caller: SWITCH_NAME\n });\n return /* @__PURE__ */ jsxs(SwitchProvider, { scope: __scopeSwitch, checked, disabled, children: [\n /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"switch\",\n \"aria-checked\": checked,\n \"aria-required\": required,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...switchProps,\n ref: composedRefs,\n onClick: composeEventHandlers(props.onClick, (event) => {\n setChecked((prevChecked) => !prevChecked);\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }\n ),\n isFormControl && /* @__PURE__ */ jsx(\n SwitchBubbleInput,\n {\n control: button,\n bubbles: !hasConsumerStoppedPropagationRef.current,\n name,\n value,\n checked,\n required,\n disabled,\n form,\n style: { transform: \"translateX(-100%)\" }\n }\n )\n ] });\n }\n);\nSwitch.displayName = SWITCH_NAME;\nvar THUMB_NAME = \"SwitchThumb\";\nvar SwitchThumb = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSwitch, ...thumbProps } = props;\n const context = useSwitchContext(THUMB_NAME, __scopeSwitch);\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.checked),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...thumbProps,\n ref: forwardedRef\n }\n );\n }\n);\nSwitchThumb.displayName = THUMB_NAME;\nvar BUBBLE_INPUT_NAME = \"SwitchBubbleInput\";\nvar SwitchBubbleInput = React.forwardRef(\n ({\n __scopeSwitch,\n control,\n checked,\n bubbles = true,\n ...props\n }, forwardedRef) => {\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(ref, forwardedRef);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n React.useEffect(() => {\n const input = ref.current;\n if (!input) return;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n \"checked\"\n );\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n return /* @__PURE__ */ jsx(\n \"input\",\n {\n type: \"checkbox\",\n \"aria-hidden\": true,\n defaultChecked: checked,\n ...props,\n tabIndex: -1,\n ref: composedRefs,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0\n }\n }\n );\n }\n);\nSwitchBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction getState(checked) {\n return checked ? \"checked\" : \"unchecked\";\n}\nvar Root = Switch;\nvar Thumb = SwitchThumb;\nexport {\n Root,\n Switch,\n SwitchThumb,\n Thumb,\n createSwitchScope\n};\n//# sourceMappingURL=index.mjs.map\n","'use client';\n\nimport * as SwitchPrimitive from '@radix-ui/react-switch';\nimport type * as React from 'react';\n\nimport { cn } from '../utils';\n\nfunction Switch({\n className,\n size = 'default',\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root> & {\n size?: 'sm' | 'default' | 'lg';\n}) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n data-size={size}\n className={cn(\n 'peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent outline-none transition-all focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] data-[size=lg]:h-[24px] data-[size=lg]:w-[40px]',\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className=\"bg-primary-foreground shadow-sm pointer-events-none block rounded-full ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=lg]/switch:size-5 data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0\"\n />\n </SwitchPrimitive.Root>\n );\n}\n\nexport { Switch };\n","import React from 'react';\nimport { Field, FieldError, FieldLabel } from '../../../shadcn/shadcnField';\nimport { Switch as ShadcnSwitch } from '../../../shadcn/shadcnSwitch';\n\nexport interface SwitchProps extends React.ComponentPropsWithoutRef<typeof ShadcnSwitch> {\n /**\n * Label for the switch\n */\n label?: React.ReactNode;\n\n /**\n * Helper text or description displayed beside the toggle — required for field layout\n */\n description: React.ReactNode;\n\n /**\n * Error message to display below the switch\n */\n error?: string;\n}\n\n/**\n * Switch component for toggling between two states (on/off).\n *\n * Description is required. The label and description stack vertically on the\n * left, with the toggle pinned to the right of the row.\n *\n * @example\n * ```tsx\n * // With Field system (form usage)\n * <Switch\n * label=\"Enable notifications\"\n * description=\"Receive email updates about your account\"\n * />\n *\n * // In a Form component\n * <Form form={form} onSubmit={handleSubmit}>\n * <Switch\n * name=\"marketing\"\n * label=\"Marketing emails\"\n * description=\"Receive promotional content\"\n * />\n * </Form>\n * ```\n */\nexport const Switch = React.forwardRef<React.ElementRef<typeof ShadcnSwitch>, SwitchProps>(\n ({ label, description, error, id, size = 'lg', ...props }, ref) => {\n const generatedId = React.useId();\n const fieldId = id || generatedId;\n const hasError = !!error;\n\n return (\n <Field data-disabled={props.disabled} data-invalid={hasError}>\n <div className=\"flex min-h-9 items-center justify-between gap-4\">\n <div className=\"flex flex-col gap-0.5\">\n {label && (\n <FieldLabel htmlFor={fieldId} className=\"font-normal cursor-pointer\">\n {label}\n </FieldLabel>\n )}\n <label\n htmlFor={fieldId}\n id={`${fieldId}-description`}\n className=\"text-sm text-muted-foreground leading-normal cursor-pointer\"\n >\n {description}\n </label>\n </div>\n <ShadcnSwitch\n {...props}\n ref={ref}\n id={fieldId}\n size={size}\n aria-describedby={description || error ? `${fieldId}-description ${fieldId}-error` : undefined}\n aria-invalid={hasError}\n />\n </div>\n\n {error && <FieldError id={`${fieldId}-error`}>{error}</FieldError>}\n </Field>\n );\n },\n);\n\nSwitch.displayName = 'Switch';\n"],"names":["Switch","SwitchPrimitive.Root","SwitchPrimitive.Thumb","React","ShadcnSwitch"],"mappings":"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","x_google_ignoreList":[0]}
@@ -2,7 +2,7 @@ import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import { C as Content, L as List, T as Trigger, R as Root2 } from './index17.js';
3
3
  import { useId, useState } from 'react';
4
4
  import { c as cn } from './utils.js';
5
- import { L as LayoutGroup } from './index36.js';
5
+ import { L as LayoutGroup } from './index37.js';
6
6
  import { m as motion, A as AnimatePresence } from './proxy.js';
7
7
  import { S as Skeleton } from './Skeleton.js';
8
8