@datum-cloud/datum-ui 0.4.0 → 0.6.0-alpha.a49f238

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 (209) hide show
  1. package/README.md +78 -39
  2. package/dist/adapter-context-BFqfq4Io.mjs +25 -0
  3. package/dist/alert/index.mjs +2 -3
  4. package/dist/{alert-BC2Mccfo.mjs → alert-BDj6od5I.mjs} +2 -4
  5. package/dist/app-navigation/index.mjs +4 -12
  6. package/dist/{app-navigation-DsCKgfPe.mjs → app-navigation-84ro28PU.mjs} +5 -8
  7. package/dist/autocomplete/index.mjs +2 -7
  8. package/dist/{autocomplete-DRB_kSVx.mjs → autocomplete-V5-qslzS.mjs} +5 -7
  9. package/dist/avatar/index.mjs +2 -4
  10. package/dist/{avatar-DyLq0xkt.mjs → avatar-BtKVcvO4.mjs} +2 -4
  11. package/dist/avatar-stack/index.mjs +2 -6
  12. package/dist/{avatar-stack-BT0dBswq.mjs → avatar-stack-oVr8tsU7.mjs} +4 -6
  13. package/dist/badge/index.mjs +2 -3
  14. package/dist/{badge-BgFj4Nsc.mjs → badge-DJR33ftJ.mjs} +2 -4
  15. package/dist/breadcrumb/index.mjs +2 -4
  16. package/dist/{breadcrumb-CJNaYyk1.mjs → breadcrumb-B-9G347O.mjs} +2 -4
  17. package/dist/button/index.mjs +3 -4
  18. package/dist/{button-0N61fmAR.mjs → button-BllvE9Lm.mjs} +3 -5
  19. package/dist/{button-D6AORsOz.mjs → button-D3RrsMfQ.mjs} +2 -4
  20. package/dist/{link-button-Cby0p4LW.mjs → button-fO8nazJE.mjs} +3 -5
  21. package/dist/button-group/index.mjs +2 -5
  22. package/dist/{button-group-BDk8btAy.mjs → button-group-CYPka2zz.mjs} +3 -5
  23. package/dist/calendar/index.mjs +2 -5
  24. package/dist/{calendar-BtfraIvX.mjs → calendar-DEkCw7I1.mjs} +4 -6
  25. package/dist/{calendar-date-picker-B9mxJM7f.mjs → calendar-date-picker-DWK94_DC.mjs} +6 -8
  26. package/dist/card/index.mjs +2 -4
  27. package/dist/{card-BiHXFt4s.mjs → card-DKG1Cwlj.mjs} +3 -6
  28. package/dist/chart/index.mjs +2 -4
  29. package/dist/{chart-CL0i-xIt.mjs → chart-CUa21ynK.mjs} +2 -4
  30. package/dist/checkbox/index.mjs +2 -4
  31. package/dist/{checkbox-CQrjygFt.mjs → checkbox-I5BvrMPe.mjs} +3 -6
  32. package/dist/{close.icon-D2r5q3bj.mjs → close.icon-HCfS4Y-N.mjs} +2 -4
  33. package/dist/{cn-DWCc1QRE.mjs → cn-D2KYQ917.mjs} +1 -3
  34. package/dist/code-editor/index.mjs +2 -0
  35. package/dist/{col-C9PDhvm5.mjs → col-CiSpQPUT.mjs} +2 -7
  36. package/dist/collapsible/index.mjs +2 -3
  37. package/dist/{collapsible-Dw71o2um.mjs → collapsible-CUphkSBt.mjs} +1 -3
  38. package/dist/command/index.mjs +2 -5
  39. package/dist/{command-DVroicgn.mjs → command-DqHWukGK.mjs} +3 -5
  40. package/dist/components/features/code-editor/code-editor-tabs.d.ts +63 -0
  41. package/dist/components/features/code-editor/code-editor-tabs.d.ts.map +1 -0
  42. package/dist/components/features/code-editor/code-editor.d.ts +58 -0
  43. package/dist/components/features/code-editor/code-editor.d.ts.map +1 -0
  44. package/dist/components/features/code-editor/index.d.ts +6 -0
  45. package/dist/components/features/code-editor/index.d.ts.map +1 -0
  46. package/dist/components/features/code-editor/lib/editor.d.ts +7 -0
  47. package/dist/components/features/code-editor/lib/editor.d.ts.map +1 -0
  48. package/dist/components/features/code-editor/types.d.ts +98 -0
  49. package/dist/components/features/code-editor/types.d.ts.map +1 -0
  50. package/dist/components/features/form/adapter-context.d.ts +17 -0
  51. package/dist/components/features/form/adapter-context.d.ts.map +1 -0
  52. package/dist/components/features/form/adapter-types.d.ts +120 -0
  53. package/dist/components/features/form/adapter-types.d.ts.map +1 -0
  54. package/dist/components/features/form/adapters/conform/conform-adapter.d.ts +9 -0
  55. package/dist/components/features/form/adapters/conform/conform-adapter.d.ts.map +1 -0
  56. package/dist/components/features/form/adapters/conform/conform-provider.d.ts +22 -0
  57. package/dist/components/features/form/adapters/conform/conform-provider.d.ts.map +1 -0
  58. package/dist/components/features/form/adapters/conform/index.d.ts +3 -0
  59. package/dist/components/features/form/adapters/conform/index.d.ts.map +1 -0
  60. package/dist/components/features/form/adapters/rhf/index.d.ts +3 -0
  61. package/dist/components/features/form/adapters/rhf/index.d.ts.map +1 -0
  62. package/dist/components/features/form/adapters/rhf/rhf-adapter.d.ts +10 -0
  63. package/dist/components/features/form/adapters/rhf/rhf-adapter.d.ts.map +1 -0
  64. package/dist/components/features/form/adapters/rhf/rhf-provider.d.ts +22 -0
  65. package/dist/components/features/form/adapters/rhf/rhf-provider.d.ts.map +1 -0
  66. package/dist/components/features/form/components/form-autocomplete.d.ts.map +1 -1
  67. package/dist/components/features/form/components/form-checkbox.d.ts.map +1 -1
  68. package/dist/components/features/form/components/form-copy-box.d.ts.map +1 -1
  69. package/dist/components/features/form/components/form-custom.d.ts.map +1 -1
  70. package/dist/components/features/form/components/form-field-array.d.ts +5 -17
  71. package/dist/components/features/form/components/form-field-array.d.ts.map +1 -1
  72. package/dist/components/features/form/components/form-field.d.ts +7 -21
  73. package/dist/components/features/form/components/form-field.d.ts.map +1 -1
  74. package/dist/components/features/form/components/form-input-group.d.ts +4 -4
  75. package/dist/components/features/form/components/form-input-group.d.ts.map +1 -1
  76. package/dist/components/features/form/components/form-input.d.ts.map +1 -1
  77. package/dist/components/features/form/components/form-radio-group.d.ts.map +1 -1
  78. package/dist/components/features/form/components/form-root.d.ts +5 -25
  79. package/dist/components/features/form/components/form-root.d.ts.map +1 -1
  80. package/dist/components/features/form/components/form-select.d.ts.map +1 -1
  81. package/dist/components/features/form/components/form-switch.d.ts.map +1 -1
  82. package/dist/components/features/form/components/form-textarea.d.ts.map +1 -1
  83. package/dist/components/features/form/components/index.d.ts +0 -1
  84. package/dist/components/features/form/components/index.d.ts.map +1 -1
  85. package/dist/components/features/form/components/stepper/form-stepper.d.ts.map +1 -1
  86. package/dist/components/features/form/context/form-context.d.ts +2 -2
  87. package/dist/components/features/form/context/form-context.d.ts.map +1 -1
  88. package/dist/components/features/form/hooks/index.d.ts +1 -1
  89. package/dist/components/features/form/hooks/index.d.ts.map +1 -1
  90. package/dist/components/features/form/hooks/use-field.d.ts +12 -18
  91. package/dist/components/features/form/hooks/use-field.d.ts.map +1 -1
  92. package/dist/components/features/form/hooks/use-form-state.d.ts +36 -0
  93. package/dist/components/features/form/hooks/use-form-state.d.ts.map +1 -0
  94. package/dist/components/features/form/hooks/use-watch.d.ts +9 -20
  95. package/dist/components/features/form/hooks/use-watch.d.ts.map +1 -1
  96. package/dist/components/features/form/index.d.ts +63 -44
  97. package/dist/components/features/form/index.d.ts.map +1 -1
  98. package/dist/components/features/form/stepper/index.d.ts +17 -0
  99. package/dist/components/features/form/stepper/index.d.ts.map +1 -0
  100. package/dist/components/features/form/types/index.d.ts +68 -32
  101. package/dist/components/features/form/types/index.d.ts.map +1 -1
  102. package/dist/components/features/form/utils/get-field-constraints.d.ts +11 -0
  103. package/dist/components/features/form/utils/get-field-constraints.d.ts.map +1 -0
  104. package/dist/components/features/form/utils/get-schema-defaults.d.ts +24 -0
  105. package/dist/components/features/form/utils/get-schema-defaults.d.ts.map +1 -0
  106. package/dist/components/features/index.d.ts +1 -0
  107. package/dist/components/features/index.d.ts.map +1 -1
  108. package/dist/components/toast.d.ts +2 -0
  109. package/dist/components/toast.d.ts.map +1 -0
  110. package/dist/data-table/index.mjs +21 -51
  111. package/dist/date-picker/index.mjs +3 -10
  112. package/dist/dialog/index.mjs +2 -5
  113. package/dist/{dialog-B0B3Kbfk.mjs → dialog-Bm2H9lrx.mjs} +4 -6
  114. package/dist/{dialog-DdrHeboM.mjs → dialog-DASRaFxD.mjs} +2 -4
  115. package/dist/dropdown/index.mjs +2 -3
  116. package/dist/{dropdown-Cdx7rOKv.mjs → dropdown-DZiAt-jS.mjs} +3 -5
  117. package/dist/{dropdown-menu-CdShrDz_.mjs → dropdown-menu-lALvDnab.mjs} +5 -7
  118. package/dist/dropzone/index.mjs +2 -5
  119. package/dist/{dropzone-B6kSN3DY.mjs → dropzone-ogtpQ4fy.mjs} +5 -8
  120. package/dist/empty-content/index.mjs +2 -3
  121. package/dist/{empty-content-B1lwLr40.mjs → empty-content-C63GPJ5d.mjs} +3 -9
  122. package/dist/form/adapters/conform/index.mjs +320 -0
  123. package/dist/form/adapters/rhf/index.mjs +275 -0
  124. package/dist/form/index.mjs +3 -146
  125. package/dist/form/stepper/index.mjs +542 -0
  126. package/dist/form-C6AOB2f4.mjs +1397 -0
  127. package/dist/form-context-Ccxm-wqL.mjs +17 -0
  128. package/dist/get-field-constraints-D4xnXJEg.mjs +48 -0
  129. package/dist/grid/index.mjs +2 -3
  130. package/dist/hooks/index.mjs +3 -4
  131. package/dist/{use-debounce-MnfjH51L.mjs → hooks-DNjmSsJT.mjs} +1 -3
  132. package/dist/hover-card/index.mjs +2 -4
  133. package/dist/{hover-card-CEIauuie.mjs → hover-card-DDWWD5Hx.mjs} +2 -4
  134. package/dist/{icon-wrapper-BBK4z4tj.mjs → icon-wrapper-DuLp3RM1.mjs} +1 -3
  135. package/dist/icons/index.mjs +4 -5
  136. package/dist/index.mjs +66 -71
  137. package/dist/input/index.mjs +2 -5
  138. package/dist/{input-DEMoi_8F.mjs → input-DOmNpcQJ.mjs} +2 -4
  139. package/dist/{input-CYFN0Ap2.mjs → input-FKGqZypx.mjs} +3 -5
  140. package/dist/input-group/index.mjs +2 -7
  141. package/dist/{input-group-DJgYpOlq.mjs → input-group-DDtz-RT7.mjs} +5 -7
  142. package/dist/input-number/index.mjs +2 -6
  143. package/dist/{input-number-Cuy9CCg_.mjs → input-number-BTQdHqVZ.mjs} +4 -6
  144. package/dist/input-with-addons/index.mjs +28 -3
  145. package/dist/label/index.mjs +2 -4
  146. package/dist/{label-mOg07fuQ.mjs → label-cnAhY-ej.mjs} +3 -6
  147. package/dist/loader-overlay/index.mjs +2 -3
  148. package/dist/{loader-overlay-8IWX_1Ga.mjs → loader-overlay-BTFdkp7W.mjs} +3 -5
  149. package/dist/map/index.mjs +2 -14
  150. package/dist/{map-CaI1EshG.mjs → map-BqpteT_8.mjs} +10 -14
  151. package/dist/{map-leaflet-imports-J7w1V7mh.mjs → map-leaflet-imports-CT4SpoDi.mjs} +1 -2
  152. package/dist/more-actions/index.mjs +2 -5
  153. package/dist/{more-actions-BO5ikUxY.mjs → more-actions-CucrYUnA.mjs} +5 -7
  154. package/dist/nprogress/index.mjs +1 -3
  155. package/dist/page-title/index.mjs +2 -3
  156. package/dist/{page-title-DWteBy1E.mjs → page-title-CmsIi_A3.mjs} +2 -4
  157. package/dist/popover/index.mjs +2 -4
  158. package/dist/{popover-ugw5MpuT.mjs → popover-FJAcbYoH.mjs} +2 -4
  159. package/dist/radio-group/index.mjs +2 -4
  160. package/dist/{radio-group-_gMymwnb.mjs → radio-group-CiITR0LO.mjs} +3 -6
  161. package/dist/select/index.mjs +2 -4
  162. package/dist/{select-BZOKWjlH.mjs → select-CiLR_DiQ.mjs} +3 -6
  163. package/dist/separator/index.mjs +2 -4
  164. package/dist/{separator-BzyALya2.mjs → separator-DXVTncCK.mjs} +2 -4
  165. package/dist/sheet/index.mjs +3 -5
  166. package/dist/{sheet-BX6lae56.mjs → sheet-BzXksqYY.mjs} +4 -6
  167. package/dist/{sheet-DAcFjaGw.mjs → sheet-Di3b-oPu.mjs} +2 -4
  168. package/dist/sidebar/index.mjs +2 -10
  169. package/dist/{sidebar-B3EV33mG.mjs → sidebar-BnhnjvfO.mjs} +10 -14
  170. package/dist/skeleton/index.mjs +2 -5
  171. package/dist/{skeleton-2vQ0vFQk.mjs → skeleton-BKl4mfJt.mjs} +2 -4
  172. package/dist/{skeleton-BgOwIgE0.mjs → skeleton-D1MUhAVo.mjs} +3 -5
  173. package/dist/spinner/index.mjs +2 -4
  174. package/dist/{spinner-osyXAlhr.mjs → spinner-OyOf9-Yu.mjs} +2 -4
  175. package/dist/{spinner.icon-C0MbtgqX.mjs → spinner.icon-C-vjSM6o.mjs} +2 -4
  176. package/dist/stepper/index.mjs +2 -5
  177. package/dist/{stepper-BMsn7I78.mjs → stepper-C92Ib8Iy.mjs} +3 -5
  178. package/dist/switch/index.mjs +2 -4
  179. package/dist/{switch-C60FpEal.mjs → switch-DQJQhPIQ.mjs} +3 -6
  180. package/dist/table/index.mjs +2 -4
  181. package/dist/{table-Cl3UzIhI.mjs → table-Cdsh-39-.mjs} +2 -4
  182. package/dist/tabs/index.mjs +50 -3
  183. package/dist/tag-input/index.mjs +2 -5
  184. package/dist/{tag-input-DR2gukhL.mjs → tag-input-B91C2wdr.mjs} +5 -7
  185. package/dist/task-queue/index.mjs +2 -7
  186. package/dist/{task-queue-dropdown-C9KHKbGh.mjs → task-queue-dropdown-OOFuJcHb.mjs} +10 -30
  187. package/dist/textarea/index.mjs +2 -5
  188. package/dist/{textarea-CVo38n3S.mjs → textarea-94vq_G_S.mjs} +2 -4
  189. package/dist/{textarea-CZF5n57i.mjs → textarea-BwD-MmTV.mjs} +3 -5
  190. package/dist/theme/index.mjs +2 -3
  191. package/dist/{theme.provider-TUHlMsjM.mjs → themes-DG1md8FI.mjs} +1 -6
  192. package/dist/{to-api-format-naIpF-NI.mjs → to-api-format-P0gmlqe8.mjs} +9 -18
  193. package/dist/toast/index.mjs +3 -3
  194. package/dist/{use-toast-By9HuFwP.mjs → toast-BWnN5fax.mjs} +5 -42
  195. package/dist/toast-DpxlFNNx.mjs +37 -0
  196. package/dist/tooltip/index.mjs +2 -4
  197. package/dist/{tooltip-CuX2jQA9.mjs → tooltip-Cruvl5F6.mjs} +3 -6
  198. package/dist/types-BZNk3q65.mjs +357 -0
  199. package/dist/typography/index.mjs +2 -3
  200. package/dist/{typography-Iap9fU5P.mjs → typography-ClB8k55E.mjs} +2 -4
  201. package/dist/{use-copy-to-clipboard-n29wJwvW.mjs → use-copy-to-clipboard-C2IEmhDn.mjs} +2 -4
  202. package/dist/utils/index.mjs +2 -3
  203. package/dist/{utils-DJboNGQM.mjs → utils-C8KwMfT_.mjs} +1 -3
  204. package/dist/visually-hidden/index.mjs +2 -3
  205. package/dist/{visuallyhidden-BJsQCmg-.mjs → visuallyhidden-BLUsJpYH.mjs} +1 -3
  206. package/package.json +49 -3
  207. package/dist/input-with-addons-B8rzNhpq.mjs +0 -30
  208. package/dist/tabs-DJU7JA3h.mjs +0 -52
  209. package/dist/use-stepper-DigoyHhX.mjs +0 -2017
package/README.md CHANGED
@@ -88,7 +88,7 @@ Some components with shared heavy dependencies are grouped under a single subpat
88
88
  | `@datum-cloud/datum-ui/map` | `Map`, `PlaceAutocomplete`, + map controls | `leaflet`, `react-leaflet`, + leaflet plugins |
89
89
  | `@datum-cloud/datum-ui/dropzone` | `Dropzone`, `FileInputButton` | `react-dropzone` |
90
90
  | `@datum-cloud/datum-ui/chart` | `ChartContainer`, `ChartTooltip`, etc. | `recharts` |
91
- | `@datum-cloud/datum-ui/form` | `Form`, `FormField`, `FormInput`, etc. | `@conform-to/react`, `@conform-to/zod`, `zod` |
91
+ | `@datum-cloud/datum-ui/form` | `Form`, `FormField`, `FormInput`, etc. | See [Form Adapters](#form-adapters) below |
92
92
 
93
93
  ## Components
94
94
 
@@ -136,30 +136,31 @@ Thin wrappers around shadcn/Radix primitives with Datum styling. **Radix UI depe
136
136
 
137
137
  Complex, fully-customized components with significant business logic.
138
138
 
139
- | Component | Additional Dependencies | Description |
140
- | -------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------- | ------------------------------------------ |
141
- | `Autocomplete` | — | Search autocomplete input |
142
- | `AvatarStack` | — | Stacked avatar display |
143
- | `CalendarDatePicker` | `react-day-picker`, `date-fns` | Date/range picker with presets |
144
- | `DataTable`, `DataTableColumnHeader`, `DataTablePagination`, `DataTableToolbar`, `DataTableViewOptions` | `@tanstack/react-table` | Advanced data table with sorting/filtering |
145
- | `Dropdown`, `DropdownHeader`, `DropdownItem`, `DropdownSection` | | Dropdown menu |
146
- | `Dropzone` | `react-dropzone` | File drag-and-drop upload area |
147
- | `EmptyContent` | | Empty state placeholder |
148
- | `FileInputButton` | — | File upload button |
149
- | `Form`, `FormField`, `FormInput`, `FormTextarea`, `FormSelect`, `FormCheckbox`, `FormSwitch`, `FormRadioGroup`, `FormFieldArray` | `@conform-to/react`, `@conform-to/zod`, `zod` | Form system with validation |
150
- | `Grid` | `@tanstack/react-virtual` | Virtualized data grid |
151
- | `InputNumber` | `react-number-format` | Numeric input with formatting |
152
- | `InputWithAddons` | | Input with prefix/suffix addons |
153
- | `LoaderOverlay` | — | Full-screen loading overlay |
154
- | `MoreActions` | — | Three-dot actions menu |
155
- | `NProgress` | `nprogress` | Page navigation progress bar |
156
- | `PageTitle` | | Page header with breadcrumbs |
157
- | `Sidebar`, `SidebarHeader`, `SidebarContent`, `SidebarFooter`, `SidebarMenu`, `SidebarMenuItem`, `SidebarMenuButton` | — | App sidebar navigation |
158
- | `Stepper` | `@stepperize/react` | Multi-step wizard |
159
- | `TagInput` | | Tag/chip input |
160
- | `TaskQueue`, `TaskQueueProvider`, `TaskQueueDropdown`, `TaskPanelHeader`, `TaskSummaryDialog` | — | Background task queue with progress UI |
161
- | `TimeRangePicker` | `date-fns`, `date-fns-tz` | Time range selector with timezone support |
162
- | `Toast`, `Toaster`, `useToast` | `sonner` | Toast notifications |
139
+ | Component | Additional Dependencies | Description |
140
+ | -------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | ------------------------------------------ |
141
+ | `Autocomplete` | — | Search autocomplete input |
142
+ | `AvatarStack` | — | Stacked avatar display |
143
+ | `CalendarDatePicker` | `react-day-picker`, `date-fns` | Date/range picker with presets |
144
+ | `CodeEditor`, `CodeEditorTabs` | `@monaco-editor/react`, `monaco-editor` | Monaco-based code editor with VS Code UX |
145
+ | `DataTable`, `DataTableColumnHeader`, `DataTablePagination`, `DataTableToolbar`, `DataTableViewOptions` | `@tanstack/react-table` | Advanced data table with sorting/filtering |
146
+ | `Dropdown`, `DropdownHeader`, `DropdownItem`, `DropdownSection` | — | Dropdown menu |
147
+ | `Dropzone` | `react-dropzone` | File drag-and-drop upload area |
148
+ | `EmptyContent` | — | Empty state placeholder |
149
+ | `FileInputButton` | | File upload button |
150
+ | `Form`, `FormField`, `FormInput`, `FormTextarea`, `FormSelect`, `FormCheckbox`, `FormSwitch`, `FormRadioGroup`, `FormFieldArray` | See [Form Adapters](#form-adapters) below | Form system with pluggable adapter support |
151
+ | `Grid` | `@tanstack/react-virtual` | Virtualized data grid |
152
+ | `InputNumber` | `react-number-format` | Numeric input with formatting |
153
+ | `InputWithAddons` | — | Input with prefix/suffix addons |
154
+ | `LoaderOverlay` | — | Full-screen loading overlay |
155
+ | `MoreActions` | | Three-dot actions menu |
156
+ | `NProgress` | `nprogress` | Page navigation progress bar |
157
+ | `PageTitle` | — | Page header with breadcrumbs |
158
+ | `Sidebar`, `SidebarHeader`, `SidebarContent`, `SidebarFooter`, `SidebarMenu`, `SidebarMenuItem`, `SidebarMenuButton` | — | App sidebar navigation |
159
+ | `Stepper` | `@stepperize/react` | Multi-step wizard |
160
+ | `TagInput` | — | Tag/chip input |
161
+ | `TaskQueue`, `TaskQueueProvider`, `TaskQueueDropdown`, `TaskPanelHeader`, `TaskSummaryDialog` | — | Background task queue with progress UI |
162
+ | `TimeRangePicker` | `date-fns`, `date-fns-tz` | Time range selector with timezone support |
163
+ | `Toast`, `Toaster`, `useToast` | `sonner` | Toast notifications |
163
164
 
164
165
  ## Usage Examples
165
166
 
@@ -211,26 +212,45 @@ import { Title, Text, Paragraph, Code } from '@datum-cloud/datum-ui/typography'
211
212
 
212
213
  ### Form with Validation
213
214
 
215
+ The form system uses a pluggable adapter pattern. Wrap your app with an adapter, then use `Form.*` components as usual:
216
+
214
217
  ```tsx
215
- import { Form, FormField, FormInput, FormSelect } from '@datum-cloud/datum-ui/form'
218
+ import { Form } from '@datum-cloud/datum-ui/form'
219
+ import { ConformAdapter } from '@datum-cloud/datum-ui/form/adapters/conform'
220
+ // or: import { RHFAdapter } from '@datum-cloud/datum-ui/form/adapters/rhf'
216
221
  import { z } from 'zod'
217
222
 
218
223
  const schema = z.object({
219
- name: z.string().min(1),
224
+ name: z.string().min(1, 'Name is required'),
220
225
  role: z.enum(['admin', 'user']),
221
226
  })
222
227
 
223
- <Form schema={schema} onSubmit={handleSubmit}>
224
- <FormField name="name">
225
- <FormInput label="Name" />
226
- </FormField>
227
- <FormField name="role">
228
- <FormSelect label="Role" options={[
229
- { label: 'Admin', value: 'admin' },
230
- { label: 'User', value: 'user' },
231
- ]} />
232
- </FormField>
233
- </Form>
228
+ // Wrap your app once with an adapter
229
+ function App() {
230
+ return (
231
+ <ConformAdapter>
232
+ <MyForm />
233
+ </ConformAdapter>
234
+ )
235
+ }
236
+
237
+ // Form code is identical regardless of adapter
238
+ function MyForm() {
239
+ return (
240
+ <Form.Root schema={schema} onSubmit={handleSubmit}>
241
+ <Form.Field name="name" label="Name" required>
242
+ <Form.Input />
243
+ </Form.Field>
244
+ <Form.Field name="role" label="Role" required>
245
+ <Form.Select placeholder="Select a role">
246
+ <Form.SelectItem value="admin">Admin</Form.SelectItem>
247
+ <Form.SelectItem value="user">User</Form.SelectItem>
248
+ </Form.Select>
249
+ </Form.Field>
250
+ <Form.Submit>Save</Form.Submit>
251
+ </Form.Root>
252
+ )
253
+ }
234
254
  ```
235
255
 
236
256
  ### Map
@@ -363,15 +383,21 @@ Many components require additional packages. Install only what you use:
363
383
  > Replace `npm install` with `yarn add`, `pnpm add`, or `bun add` for your package manager.
364
384
 
365
385
  ```bash
366
- # Forms (Form, FormField, FormInput, etc.)
386
+ # Forms Conform adapter
367
387
  npm install @conform-to/react @conform-to/zod zod
368
388
 
389
+ # Forms — React Hook Form adapter (alternative)
390
+ npm install react-hook-form @hookform/resolvers zod
391
+
369
392
  # Maps (Map, MapMarker, MapPopup, etc.)
370
393
  npm install leaflet react-leaflet leaflet-draw leaflet.fullscreen leaflet.markercluster react-leaflet-markercluster
371
394
 
372
395
  # Charts (ChartContainer, ChartTooltip, etc.)
373
396
  npm install recharts
374
397
 
398
+ # Code editor (CodeEditor, CodeEditorTabs)
399
+ npm install @monaco-editor/react monaco-editor
400
+
375
401
  # Date pickers (Calendar, CalendarDatePicker, TimeRangePicker)
376
402
  npm install react-day-picker date-fns date-fns-tz
377
403
 
@@ -403,6 +429,19 @@ npm install nuqs
403
429
  npm install motion
404
430
  ```
405
431
 
432
+ ## Form Adapters
433
+
434
+ The form system supports pluggable adapters. Choose one and wrap your app:
435
+
436
+ | Adapter | Import Path | Dependencies |
437
+ | ------------------- | --------------------------------------------- | -------------------------------------------------------------------- |
438
+ | **Conform.js** | `@datum-cloud/datum-ui/form/adapters/conform` | `@conform-to/react`, `@conform-to/zod`, `zod` (>=4) |
439
+ | **React Hook Form** | `@datum-cloud/datum-ui/form/adapters/rhf` | `react-hook-form` (>=7.55), `@hookform/resolvers` (>=5), `zod` (>=4) |
440
+
441
+ The `Form.*` component API is identical with either adapter. Switch adapters by changing only the root provider -- no form code changes needed.
442
+
443
+ See the [Form README](./src/components/features/form/README.md) for detailed documentation.
444
+
406
445
  ## Tech Stack
407
446
 
408
447
  - **React 19** with server component support
@@ -0,0 +1,25 @@
1
+ import * as React$1 from "react";
2
+ import { jsx } from "react/jsx-runtime";
3
+ //#region src/components/features/form/adapter-context.tsx
4
+ const AdapterContext = React$1.createContext(null);
5
+ /**
6
+ * Read the current form adapter from context.
7
+ * Throws with a helpful error if no adapter is found.
8
+ */
9
+ function useAdapter() {
10
+ const adapter = React$1.use(AdapterContext);
11
+ if (!adapter) throw new Error("No form adapter found. Wrap your application with an adapter provider:\n\n import { ConformAdapter } from '@datum-cloud/datum-ui/form/adapters/conform'\n // or\n import { RHFAdapter } from '@datum-cloud/datum-ui/form/adapters/rhf'\n\n <ConformAdapter>\n <App />\n </ConformAdapter>");
12
+ return adapter;
13
+ }
14
+ /**
15
+ * Internal provider used by adapter packages (ConformAdapter, RHFAdapter).
16
+ * Consumers don't use this directly.
17
+ */
18
+ function FormAdapterProvider({ adapter, children }) {
19
+ return /* @__PURE__ */ jsx(AdapterContext, {
20
+ value: adapter,
21
+ children
22
+ });
23
+ }
24
+ //#endregion
25
+ export { useAdapter as n, FormAdapterProvider as t };
@@ -1,3 +1,2 @@
1
- import { n as AlertDescription, r as AlertTitle, t as Alert } from "../alert-BC2Mccfo.mjs";
2
-
3
- export { Alert, AlertDescription, AlertTitle };
1
+ import { n as AlertDescription, r as AlertTitle, t as Alert } from "../alert-BDj6od5I.mjs";
2
+ export { Alert, AlertDescription, AlertTitle };
@@ -1,9 +1,8 @@
1
- import { t as cn } from "./cn-DWCc1QRE.mjs";
1
+ import { t as cn } from "./cn-D2KYQ917.mjs";
2
2
  import { cva } from "class-variance-authority";
3
3
  import { CircleXIcon } from "lucide-react";
4
4
  import * as React$1 from "react";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
-
7
6
  //#region src/components/base/alert/alert.tsx
8
7
  /**
9
8
  * Datum Alert Component
@@ -90,6 +89,5 @@ function AlertDescription({ className, ...props }) {
90
89
  ...props
91
90
  });
92
91
  }
93
-
94
92
  //#endregion
95
- export { AlertDescription as n, AlertTitle as r, Alert as t };
93
+ export { AlertDescription as n, AlertTitle as r, Alert as t };
@@ -1,12 +1,4 @@
1
- import "../utils-DJboNGQM.mjs";
2
- import "../separator-BzyALya2.mjs";
3
- import "../button-D6AORsOz.mjs";
4
- import "../collapsible-Dw71o2um.mjs";
5
- import "../input-DEMoi_8F.mjs";
6
- import "../sheet-DAcFjaGw.mjs";
7
- import { C as SidebarTrigger, S as SidebarSeparator, _ as SidebarMenuSub, a as SidebarGroupAction, b as SidebarProvider, c as SidebarHeader, d as SidebarMenu, f as SidebarMenuAction, g as SidebarMenuSkeleton, h as SidebarMenuItem, i as SidebarGroup, l as SidebarInput, m as SidebarMenuButton, n as SidebarContent, o as SidebarGroupContent, p as SidebarMenuBadge, r as SidebarFooter, s as SidebarGroupLabel, t as Sidebar, u as SidebarInset, v as SidebarMenuSubButton, w as useSidebar, x as SidebarRail, y as SidebarMenuSubItem } from "../sidebar-B3EV33mG.mjs";
8
- import "../skeleton-2vQ0vFQk.mjs";
9
- import "../tooltip-CuX2jQA9.mjs";
10
- import { n as NavMenu, t as AppNavigation } from "../app-navigation-DsCKgfPe.mjs";
11
-
12
- export { AppNavigation, NavMenu, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, useSidebar };
1
+ import { C as SidebarTrigger, S as SidebarSeparator, _ as SidebarMenuSub, a as SidebarGroupAction, b as SidebarProvider, c as SidebarHeader, d as SidebarMenu, f as SidebarMenuAction, g as SidebarMenuSkeleton, h as SidebarMenuItem, i as SidebarGroup, l as SidebarInput, m as SidebarMenuButton, n as SidebarContent, o as SidebarGroupContent, p as SidebarMenuBadge, r as SidebarFooter, s as SidebarGroupLabel, t as Sidebar, u as SidebarInset, v as SidebarMenuSubButton, w as useSidebar, x as SidebarRail, y as SidebarMenuSubItem } from "../sidebar-BnhnjvfO.mjs";
2
+ import "../sidebar/index.mjs";
3
+ import { n as NavMenu, t as AppNavigation } from "../app-navigation-84ro28PU.mjs";
4
+ export { AppNavigation, NavMenu, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, useSidebar };
@@ -1,12 +1,11 @@
1
- import { t as cn } from "./cn-DWCc1QRE.mjs";
2
- import { t as Icon } from "./icon-wrapper-BBK4z4tj.mjs";
3
- import { n as CollapsibleContent, r as CollapsibleTrigger, t as Collapsible } from "./collapsible-Dw71o2um.mjs";
4
- import { C as SidebarTrigger, S as SidebarSeparator, _ as SidebarMenuSub, c as SidebarHeader, d as SidebarMenu, h as SidebarMenuItem, i as SidebarGroup, m as SidebarMenuButton, n as SidebarContent, o as SidebarGroupContent, r as SidebarFooter, s as SidebarGroupLabel, t as Sidebar, w as useSidebar } from "./sidebar-B3EV33mG.mjs";
1
+ import { t as cn } from "./cn-D2KYQ917.mjs";
2
+ import { t as Icon } from "./icon-wrapper-DuLp3RM1.mjs";
3
+ import { n as CollapsibleContent, r as CollapsibleTrigger, t as Collapsible } from "./collapsible-CUphkSBt.mjs";
4
+ import { C as SidebarTrigger, S as SidebarSeparator, _ as SidebarMenuSub, c as SidebarHeader, d as SidebarMenu, h as SidebarMenuItem, i as SidebarGroup, m as SidebarMenuButton, n as SidebarContent, o as SidebarGroupContent, r as SidebarFooter, s as SidebarGroupLabel, t as Sidebar, w as useSidebar } from "./sidebar-BnhnjvfO.mjs";
5
5
  import { ChevronRight, ExternalLinkIcon } from "lucide-react";
6
6
  import { Fragment, useCallback, useEffect, useRef, useState } from "react";
7
7
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
8
8
  import { motion } from "motion/react";
9
-
10
9
  //#region src/components/features/app-navigation/nav-menu.tsx
11
10
  const NAV_STYLES = {
12
11
  menuButton: "rounded-xl h-8 font-normal text-xs transition-all px-2 py-1 data-[active=true]:bg-sidebar data-[active=true]:text-foreground data-[active=true]:text-sidebar-primary data-[active=true]:[&>svg]:text-primary hover:bg-sidebar hover:text-sidebar-primary hover:[&>svg]:text-sidebar-primary hover:bg-sidebar-accent data-[active=true]:bg-sidebar-accent hover:font-semibold data-[active=true]:hover:[&>svg]:text-sidebar-primary transition-colors duration-300 gap-2.5 text-foreground [&>svg]:text-icon-primary",
@@ -378,7 +377,6 @@ function NavMenu({ ref, className, items, currentPath, linkComponent: LinkComp =
378
377
  });
379
378
  }
380
379
  NavMenu.displayName = "NavMenu";
381
-
382
380
  //#endregion
383
381
  //#region src/components/features/app-navigation/app-navigation.tsx
384
382
  function AppNavigation({ navItems, title, closeOnNavigation, defaultOpen, currentPath, linkComponent, ...props }) {
@@ -411,6 +409,5 @@ function AppNavigation({ navItems, title, closeOnNavigation, defaultOpen, curren
411
409
  })
412
410
  });
413
411
  }
414
-
415
412
  //#endregion
416
- export { NavMenu as n, AppNavigation as t };
413
+ export { NavMenu as n, AppNavigation as t };
@@ -1,7 +1,2 @@
1
- import "../utils-DJboNGQM.mjs";
2
- import "../dialog-DdrHeboM.mjs";
3
- import "../command-DVroicgn.mjs";
4
- import "../popover-ugw5MpuT.mjs";
5
- import { t as Autocomplete } from "../autocomplete-DRB_kSVx.mjs";
6
-
7
- export { Autocomplete };
1
+ import { t as Autocomplete } from "../autocomplete-V5-qslzS.mjs";
2
+ export { Autocomplete };
@@ -1,12 +1,11 @@
1
- import { t as cn } from "./cn-DWCc1QRE.mjs";
2
- import { a as CommandInput, i as CommandGroup, o as CommandItem, r as CommandEmpty, s as CommandList, t as Command } from "./command-DVroicgn.mjs";
3
- import { i as PopoverTrigger, r as PopoverContent, t as Popover } from "./popover-ugw5MpuT.mjs";
4
- import { t as LoaderOverlay } from "./loader-overlay-8IWX_1Ga.mjs";
1
+ import { t as cn } from "./cn-D2KYQ917.mjs";
2
+ import { a as CommandInput, i as CommandGroup, o as CommandItem, r as CommandEmpty, s as CommandList, t as Command } from "./command-DqHWukGK.mjs";
3
+ import { i as PopoverTrigger, r as PopoverContent, t as Popover } from "./popover-FJAcbYoH.mjs";
4
+ import { t as LoaderOverlay } from "./loader-overlay-BTFdkp7W.mjs";
5
5
  import { CheckIcon, ChevronDown } from "lucide-react";
6
6
  import * as React$1 from "react";
7
7
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
8
8
  import { useVirtualizer } from "@tanstack/react-virtual";
9
-
10
9
  //#region src/components/features/autocomplete/autocomplete.tsx
11
10
  function isGroupedOptions(options) {
12
11
  return options.length > 0 && "options" in options[0];
@@ -290,6 +289,5 @@ function Autocomplete({ options, value, onValueChange, onSearchChange, searchPla
290
289
  });
291
290
  }
292
291
  Autocomplete.displayName = "Autocomplete";
293
-
294
292
  //#endregion
295
- export { Autocomplete as t };
293
+ export { Autocomplete as t };
@@ -1,4 +1,2 @@
1
- import "../utils-DJboNGQM.mjs";
2
- import { n as AvatarFallback, r as AvatarImage, t as Avatar } from "../avatar-DyLq0xkt.mjs";
3
-
4
- export { Avatar, AvatarFallback, AvatarImage };
1
+ import { n as AvatarFallback, r as AvatarImage, t as Avatar } from "../avatar-BtKVcvO4.mjs";
2
+ export { Avatar, AvatarFallback, AvatarImage };
@@ -1,8 +1,7 @@
1
- import { t as cn } from "./utils-DJboNGQM.mjs";
1
+ import { t as cn } from "./utils-C8KwMfT_.mjs";
2
2
  import "react";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import * as AvatarPrimitive from "@radix-ui/react-avatar";
5
-
6
5
  //#region ../shadcn/ui/avatar.tsx
7
6
  const Avatar = ({ className, ...props }) => {
8
7
  return /* @__PURE__ */ jsx(AvatarPrimitive.Root, {
@@ -25,6 +24,5 @@ const AvatarFallback = ({ className, ...props }) => {
25
24
  ...props
26
25
  });
27
26
  };
28
-
29
27
  //#endregion
30
- export { AvatarFallback as n, AvatarImage as r, Avatar as t };
28
+ export { AvatarFallback as n, AvatarImage as r, Avatar as t };
@@ -1,6 +1,2 @@
1
- import "../utils-DJboNGQM.mjs";
2
- import "../avatar-DyLq0xkt.mjs";
3
- import "../tooltip-CuX2jQA9.mjs";
4
- import { n as avatarStackVariants, t as AvatarStack } from "../avatar-stack-BT0dBswq.mjs";
5
-
6
- export { AvatarStack, avatarStackVariants };
1
+ import { n as avatarStackVariants, t as AvatarStack } from "../avatar-stack-oVr8tsU7.mjs";
2
+ export { AvatarStack, avatarStackVariants };
@@ -1,10 +1,9 @@
1
- import { t as cn } from "./cn-DWCc1QRE.mjs";
2
- import { n as AvatarFallback, r as AvatarImage, t as Avatar } from "./avatar-DyLq0xkt.mjs";
3
- import { t as Tooltip } from "./tooltip-CuX2jQA9.mjs";
1
+ import { t as cn } from "./cn-D2KYQ917.mjs";
2
+ import { n as AvatarFallback, r as AvatarImage, t as Avatar } from "./avatar-BtKVcvO4.mjs";
3
+ import { t as Tooltip } from "./tooltip-Cruvl5F6.mjs";
4
4
  import { cva } from "class-variance-authority";
5
5
  import "react";
6
6
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
7
-
8
7
  //#region src/components/features/avatar-stack/avatar-stack.tsx
9
8
  const avatarStackVariants = cva("flex", {
10
9
  variants: {
@@ -50,6 +49,5 @@ function AvatarStack({ className, orientation, avatars, spacing, maxAvatarsAmoun
50
49
  }) : null]
51
50
  });
52
51
  }
53
-
54
52
  //#endregion
55
- export { avatarStackVariants as n, AvatarStack as t };
53
+ export { avatarStackVariants as n, AvatarStack as t };
@@ -1,3 +1,2 @@
1
- import { n as badgeVariants, t as Badge } from "../badge-BgFj4Nsc.mjs";
2
-
3
- export { Badge, badgeVariants };
1
+ import { n as badgeVariants, t as Badge } from "../badge-DJR33ftJ.mjs";
2
+ export { Badge, badgeVariants };
@@ -1,8 +1,7 @@
1
- import { t as cn } from "./cn-DWCc1QRE.mjs";
1
+ import { t as cn } from "./cn-D2KYQ917.mjs";
2
2
  import { cva } from "class-variance-authority";
3
3
  import "react";
4
4
  import { jsx } from "react/jsx-runtime";
5
-
6
5
  //#region src/components/base/badge/badge.tsx
7
6
  /**
8
7
  * Datum Badge Component
@@ -180,6 +179,5 @@ function Badge({ className, type, theme, ...props }) {
180
179
  ...props
181
180
  });
182
181
  }
183
-
184
182
  //#endregion
185
- export { badgeVariants as n, Badge as t };
183
+ export { badgeVariants as n, Badge as t };
@@ -1,4 +1,2 @@
1
- import "../utils-DJboNGQM.mjs";
2
- import { a as BreadcrumbList, i as BreadcrumbLink, n as BreadcrumbEllipsis, o as BreadcrumbPage, r as BreadcrumbItem, s as BreadcrumbSeparator, t as Breadcrumb } from "../breadcrumb-CJNaYyk1.mjs";
3
-
4
- export { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator };
1
+ import { a as BreadcrumbList, i as BreadcrumbLink, n as BreadcrumbEllipsis, o as BreadcrumbPage, r as BreadcrumbItem, s as BreadcrumbSeparator, t as Breadcrumb } from "../breadcrumb-B-9G347O.mjs";
2
+ export { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator };
@@ -1,9 +1,8 @@
1
- import { t as cn } from "./utils-DJboNGQM.mjs";
1
+ import { t as cn } from "./utils-C8KwMfT_.mjs";
2
2
  import { ChevronRight, MoreHorizontal } from "lucide-react";
3
3
  import "react";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
5
  import { Slot } from "@radix-ui/react-slot";
6
-
7
6
  //#region ../shadcn/ui/breadcrumb.tsx
8
7
  const Breadcrumb = ({ ...props }) => {
9
8
  return /* @__PURE__ */ jsx("nav", {
@@ -66,6 +65,5 @@ const BreadcrumbEllipsis = ({ className, ...props }) => {
66
65
  })]
67
66
  });
68
67
  };
69
-
70
68
  //#endregion
71
- export { BreadcrumbList as a, BreadcrumbLink as i, BreadcrumbEllipsis as n, BreadcrumbPage as o, BreadcrumbItem as r, BreadcrumbSeparator as s, Breadcrumb as t };
69
+ export { BreadcrumbList as a, BreadcrumbLink as i, BreadcrumbEllipsis as n, BreadcrumbPage as o, BreadcrumbItem as r, BreadcrumbSeparator as s, Breadcrumb as t };
@@ -1,4 +1,3 @@
1
- import { n as buttonVariants, t as Button } from "../button-0N61fmAR.mjs";
2
- import { t as LinkButton } from "../link-button-Cby0p4LW.mjs";
3
-
4
- export { Button, LinkButton, buttonVariants };
1
+ import { n as buttonVariants, t as Button } from "../button-BllvE9Lm.mjs";
2
+ import { t as LinkButton } from "../button-fO8nazJE.mjs";
3
+ export { Button, LinkButton, buttonVariants };
@@ -1,9 +1,8 @@
1
- import { t as cn } from "./cn-DWCc1QRE.mjs";
2
- import { t as SpinnerIcon } from "./spinner.icon-C0MbtgqX.mjs";
1
+ import { t as cn } from "./cn-D2KYQ917.mjs";
2
+ import { t as SpinnerIcon } from "./spinner.icon-C-vjSM6o.mjs";
3
3
  import { cva } from "class-variance-authority";
4
4
  import "react";
5
5
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
6
-
7
6
  //#region src/components/base/button/button.tsx
8
7
  const buttonVariants = cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-lg text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:opacity-50", {
9
8
  variants: {
@@ -225,6 +224,5 @@ function Button({ ref, className, type, theme, size, block, loading = false, dis
225
224
  });
226
225
  }
227
226
  Button.displayName = "Button";
228
-
229
227
  //#endregion
230
- export { buttonVariants as n, Button as t };
228
+ export { buttonVariants as n, Button as t };
@@ -1,9 +1,8 @@
1
- import { t as cn } from "./utils-DJboNGQM.mjs";
1
+ import { t as cn } from "./utils-C8KwMfT_.mjs";
2
2
  import { cva } from "class-variance-authority";
3
3
  import * as React$1 from "react";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  import { Slot } from "@radix-ui/react-slot";
6
-
7
6
  //#region ../shadcn/ui/button.tsx
8
7
  /**
9
8
  * Vanilla shadcn/ui Button Component
@@ -44,6 +43,5 @@ const Button = React$1.forwardRef(({ className, variant, size, asChild = false,
44
43
  });
45
44
  });
46
45
  Button.displayName = "Button";
47
-
48
46
  //#endregion
49
- export { buttonVariants as n, Button as t };
47
+ export { buttonVariants as n, Button as t };
@@ -1,8 +1,7 @@
1
- import { t as cn } from "./cn-DWCc1QRE.mjs";
2
- import { n as buttonVariants } from "./button-0N61fmAR.mjs";
1
+ import { t as cn } from "./cn-D2KYQ917.mjs";
2
+ import { n as buttonVariants } from "./button-BllvE9Lm.mjs";
3
3
  import "react";
4
4
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
5
-
6
5
  //#region src/components/base/button/link-button.tsx
7
6
  function LinkButton({ ref, className, type, theme, size, block, icon, iconPosition = "left", children, as: Component = "a", href, ...props }) {
8
7
  const isIconOnly = icon && !children;
@@ -31,6 +30,5 @@ function LinkButton({ ref, className, type, theme, size, block, icon, iconPositi
31
30
  });
32
31
  }
33
32
  LinkButton.displayName = "LinkButton";
34
-
35
33
  //#endregion
36
- export { LinkButton as t };
34
+ export { LinkButton as t };
@@ -1,5 +1,2 @@
1
- import "../utils-DJboNGQM.mjs";
2
- import "../separator-BzyALya2.mjs";
3
- import { i as buttonGroupVariants, n as ButtonGroupSeparator, r as ButtonGroupText, t as ButtonGroup } from "../button-group-BDk8btAy.mjs";
4
-
5
- export { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants };
1
+ import { i as buttonGroupVariants, n as ButtonGroupSeparator, r as ButtonGroupText, t as ButtonGroup } from "../button-group-CYPka2zz.mjs";
2
+ export { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants };
@@ -1,9 +1,8 @@
1
- import { t as cn } from "./utils-DJboNGQM.mjs";
2
- import { t as Separator } from "./separator-BzyALya2.mjs";
1
+ import { t as cn } from "./utils-C8KwMfT_.mjs";
2
+ import { t as Separator } from "./separator-DXVTncCK.mjs";
3
3
  import { cva } from "class-variance-authority";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  import { Slot } from "@radix-ui/react-slot";
6
-
7
6
  //#region ../shadcn/ui/button-group.tsx
8
7
  const buttonGroupVariants = cva("flex w-fit items-stretch has-[>[data-slot=button-group]]:gap-2 [&>*]:focus-visible:relative [&>*]:focus-visible:z-10 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1", {
9
8
  variants: { orientation: {
@@ -35,6 +34,5 @@ function ButtonGroupSeparator({ className, orientation = "vertical", ...props })
35
34
  ...props
36
35
  });
37
36
  }
38
-
39
37
  //#endregion
40
- export { buttonGroupVariants as i, ButtonGroupSeparator as n, ButtonGroupText as r, ButtonGroup as t };
38
+ export { buttonGroupVariants as i, ButtonGroupSeparator as n, ButtonGroupText as r, ButtonGroup as t };
@@ -1,5 +1,2 @@
1
- import "../utils-DJboNGQM.mjs";
2
- import "../button-D6AORsOz.mjs";
3
- import { n as CalendarDayButton, t as Calendar } from "../calendar-BtfraIvX.mjs";
4
-
5
- export { Calendar, CalendarDayButton };
1
+ import { n as CalendarDayButton, t as Calendar } from "../calendar-DEkCw7I1.mjs";
2
+ export { Calendar, CalendarDayButton };
@@ -1,11 +1,10 @@
1
- import { t as cn } from "./cn-DWCc1QRE.mjs";
2
- import { n as buttonVariants, t as Button } from "./button-D6AORsOz.mjs";
3
- import { t as Icon } from "./icon-wrapper-BBK4z4tj.mjs";
1
+ import { t as cn } from "./cn-D2KYQ917.mjs";
2
+ import { n as buttonVariants, t as Button } from "./button-D3RrsMfQ.mjs";
3
+ import { t as Icon } from "./icon-wrapper-DuLp3RM1.mjs";
4
4
  import { ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon } from "lucide-react";
5
5
  import * as React$1 from "react";
6
6
  import { jsx } from "react/jsx-runtime";
7
7
  import { DayPicker, getDefaultClassNames } from "react-day-picker";
8
-
9
8
  //#region src/components/base/calendar/calendar.tsx
10
9
  function CalendarRoot({ className, rootRef, ...props }) {
11
10
  return /* @__PURE__ */ jsx("div", {
@@ -108,6 +107,5 @@ function CalendarDayButton({ className, day, modifiers, ...props }) {
108
107
  ...props
109
108
  });
110
109
  }
111
-
112
110
  //#endregion
113
- export { CalendarDayButton as n, Calendar$1 as t };
111
+ export { CalendarDayButton as n, Calendar$1 as t };
@@ -1,15 +1,14 @@
1
- import { t as cn } from "./cn-DWCc1QRE.mjs";
2
- import { t as Button } from "./button-D6AORsOz.mjs";
3
- import { t as Calendar$1 } from "./calendar-BtfraIvX.mjs";
4
- import { i as PopoverTrigger, r as PopoverContent, t as Popover } from "./popover-ugw5MpuT.mjs";
5
- import { i as SelectItem, l as SelectTrigger, n as SelectContent, t as Select, u as SelectValue } from "./select-BZOKWjlH.mjs";
1
+ import { t as cn } from "./cn-D2KYQ917.mjs";
2
+ import { t as Button } from "./button-D3RrsMfQ.mjs";
3
+ import { t as Calendar$1 } from "./calendar-DEkCw7I1.mjs";
4
+ import { i as PopoverTrigger, r as PopoverContent, t as Popover } from "./popover-FJAcbYoH.mjs";
5
+ import { i as SelectItem, l as SelectTrigger, n as SelectContent, t as Select, u as SelectValue } from "./select-CiLR_DiQ.mjs";
6
6
  import { cva } from "class-variance-authority";
7
7
  import { CalendarIcon, X } from "lucide-react";
8
8
  import * as React$1 from "react";
9
9
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
10
10
  import { endOfDay, endOfMonth, endOfWeek, endOfYear, startOfDay, startOfMonth, startOfWeek, startOfYear, subDays } from "date-fns";
11
11
  import { formatInTimeZone, toDate } from "date-fns-tz";
12
-
13
12
  //#region src/components/features/calendar-date-picker/calendar-date-picker.tsx
14
13
  const months = [
15
14
  "January",
@@ -661,6 +660,5 @@ function CalendarDatePicker({ ref, id = "calendar-date-picker", className, trigg
661
660
  })] });
662
661
  }
663
662
  CalendarDatePicker.displayName = "CalendarDatePicker";
664
-
665
663
  //#endregion
666
- export { CalendarDatePicker as t };
664
+ export { CalendarDatePicker as t };
@@ -1,4 +1,2 @@
1
- import "../utils-DJboNGQM.mjs";
2
- import { a as CardDescription, i as CardContent, n as CardFooter, o as CardTitle, r as CardHeader, t as Card } from "../card-BiHXFt4s.mjs";
3
-
4
- export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle };
1
+ import { a as CardDescription, i as CardContent, n as CardFooter, o as CardTitle, r as CardHeader, t as Card } from "../card-DKG1Cwlj.mjs";
2
+ export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle };