@datum-cloud/datum-ui 0.3.2-dev.5bd364b → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/README.md +118 -49
  2. package/dist/alert/index.mjs +2 -3
  3. package/dist/{alert-BC2Mccfo.mjs → alert-BDj6od5I.mjs} +2 -4
  4. package/dist/app-navigation/index.mjs +4 -12
  5. package/dist/{app-navigation-CCvjPijd.mjs → app-navigation-84ro28PU.mjs} +5 -8
  6. package/dist/autocomplete/index.mjs +2 -7
  7. package/dist/{autocomplete-DcKO7pj5.mjs → autocomplete-V5-qslzS.mjs} +5 -7
  8. package/dist/avatar/index.mjs +2 -0
  9. package/dist/avatar-BtKVcvO4.mjs +28 -0
  10. package/dist/avatar-stack/index.mjs +2 -5
  11. package/dist/{avatar-stack-B21McFeb.mjs → avatar-stack-oVr8tsU7.mjs} +4 -31
  12. package/dist/badge/index.mjs +2 -3
  13. package/dist/{badge-bFgeYceE.mjs → badge-DJR33ftJ.mjs} +2 -4
  14. package/dist/breadcrumb/index.mjs +2 -4
  15. package/dist/{breadcrumb-BGYJgom_.mjs → breadcrumb-B-9G347O.mjs} +2 -4
  16. package/dist/button/index.mjs +3 -4
  17. package/dist/{button-C1wRfGtT.mjs → button-BllvE9Lm.mjs} +3 -5
  18. package/dist/{button-AzpnV-WB.mjs → button-D3RrsMfQ.mjs} +2 -4
  19. package/dist/{link-button-TIF2Zdrk.mjs → button-fO8nazJE.mjs} +3 -5
  20. package/dist/button-group/index.mjs +2 -5
  21. package/dist/{button-group-C1IB2K5s.mjs → button-group-CYPka2zz.mjs} +3 -5
  22. package/dist/calendar/index.mjs +2 -5
  23. package/dist/{calendar-DlIHeWb0.mjs → calendar-DEkCw7I1.mjs} +4 -6
  24. package/dist/{calendar-date-picker-Bw6Mrr-P.mjs → calendar-date-picker-DWK94_DC.mjs} +6 -8
  25. package/dist/card/index.mjs +2 -4
  26. package/dist/{card-3Kd0VdNf.mjs → card-DKG1Cwlj.mjs} +3 -6
  27. package/dist/chart/index.mjs +2 -4
  28. package/dist/{chart-BZqUKpkh.mjs → chart-CUa21ynK.mjs} +2 -4
  29. package/dist/checkbox/index.mjs +2 -4
  30. package/dist/{checkbox-LG1OKTpG.mjs → checkbox-I5BvrMPe.mjs} +3 -6
  31. package/dist/{close.icon-CMNMoXM_.mjs → close.icon-HCfS4Y-N.mjs} +2 -4
  32. package/dist/{cn-DWCc1QRE.mjs → cn-D2KYQ917.mjs} +1 -3
  33. package/dist/code-editor/index.mjs +2 -0
  34. package/dist/{col-DCneNxQj.mjs → col-q-J99UHe.mjs} +2 -7
  35. package/dist/collapsible/index.mjs +2 -3
  36. package/dist/{collapsible-Bt9UYfv3.mjs → collapsible-CUphkSBt.mjs} +1 -3
  37. package/dist/command/index.mjs +2 -5
  38. package/dist/{command-s0Yv3abE.mjs → command-DqHWukGK.mjs} +3 -5
  39. package/dist/components/base/avatar/index.d.ts +2 -0
  40. package/dist/components/base/avatar/index.d.ts.map +1 -0
  41. package/dist/components/base/index.d.ts +1 -0
  42. package/dist/components/base/index.d.ts.map +1 -1
  43. package/dist/components/features/code-editor/code-editor-tabs.d.ts +63 -0
  44. package/dist/components/features/code-editor/code-editor-tabs.d.ts.map +1 -0
  45. package/dist/components/features/code-editor/code-editor.d.ts +58 -0
  46. package/dist/components/features/code-editor/code-editor.d.ts.map +1 -0
  47. package/dist/components/features/code-editor/index.d.ts +6 -0
  48. package/dist/components/features/code-editor/index.d.ts.map +1 -0
  49. package/dist/components/features/code-editor/lib/editor.d.ts +7 -0
  50. package/dist/components/features/code-editor/lib/editor.d.ts.map +1 -0
  51. package/dist/components/features/code-editor/types.d.ts +98 -0
  52. package/dist/components/features/code-editor/types.d.ts.map +1 -0
  53. package/dist/components/features/index.d.ts +1 -0
  54. package/dist/components/features/index.d.ts.map +1 -1
  55. package/dist/components/toast.d.ts +2 -0
  56. package/dist/components/toast.d.ts.map +1 -0
  57. package/dist/data-table/index.mjs +21 -51
  58. package/dist/date-picker/index.mjs +3 -10
  59. package/dist/dialog/index.mjs +2 -5
  60. package/dist/{dialog-bnMMf9GD.mjs → dialog-Bm2H9lrx.mjs} +4 -6
  61. package/dist/{dialog-DXBaT9gA.mjs → dialog-DASRaFxD.mjs} +2 -4
  62. package/dist/dropdown/index.mjs +2 -3
  63. package/dist/{dropdown-Dgm_b6Mm.mjs → dropdown-DZiAt-jS.mjs} +3 -5
  64. package/dist/{dropdown-menu-DAFyO-qD.mjs → dropdown-menu-lALvDnab.mjs} +5 -7
  65. package/dist/dropzone/index.mjs +2 -5
  66. package/dist/{dropzone-DR6O9OdU.mjs → dropzone-ogtpQ4fy.mjs} +5 -8
  67. package/dist/empty-content/index.mjs +2 -3
  68. package/dist/{empty-content-Dm7_5jO9.mjs → empty-content-C63GPJ5d.mjs} +3 -9
  69. package/dist/form/index.mjs +2 -146
  70. package/dist/{use-stepper-DJd8o9dV.mjs → form-Co3fM4B7.mjs} +148 -51
  71. package/dist/grid/index.mjs +2 -3
  72. package/dist/hooks/index.mjs +3 -4
  73. package/dist/{use-debounce-Dc95PFRX.mjs → hooks-Cb7YlxN4.mjs} +1 -3
  74. package/dist/hover-card/index.mjs +2 -4
  75. package/dist/{hover-card-CUPfFUqE.mjs → hover-card-DDWWD5Hx.mjs} +2 -4
  76. package/dist/{icon-wrapper-9ticVbRL.mjs → icon-wrapper-DuLp3RM1.mjs} +1 -3
  77. package/dist/icons/index.mjs +4 -5
  78. package/dist/index.mjs +65 -70
  79. package/dist/input/index.mjs +2 -5
  80. package/dist/{input-DuyjEKEW.mjs → input-DOmNpcQJ.mjs} +2 -4
  81. package/dist/{input-fzXBheCN.mjs → input-FKGqZypx.mjs} +3 -5
  82. package/dist/input-group/index.mjs +2 -7
  83. package/dist/{input-group-CPaFSTEV.mjs → input-group-DDtz-RT7.mjs} +5 -7
  84. package/dist/input-number/index.mjs +2 -6
  85. package/dist/{input-number-D1HCcTXO.mjs → input-number-mDB-5M5C.mjs} +4 -6
  86. package/dist/input-with-addons/index.mjs +28 -3
  87. package/dist/label/index.mjs +2 -4
  88. package/dist/{label-_ste_Re3.mjs → label-cnAhY-ej.mjs} +3 -6
  89. package/dist/loader-overlay/index.mjs +2 -3
  90. package/dist/{loader-overlay-CpA0zV8D.mjs → loader-overlay-BTFdkp7W.mjs} +3 -5
  91. package/dist/map/index.mjs +2 -14
  92. package/dist/{map-2RG9pYZR.mjs → map-ClxB41Hg.mjs} +10 -14
  93. package/dist/{map-leaflet-imports-CgEyVRnp.mjs → map-leaflet-imports-CaMm_rdF.mjs} +1 -2
  94. package/dist/more-actions/index.mjs +2 -5
  95. package/dist/{more-actions-BODYgG1C.mjs → more-actions-CGagbIDT.mjs} +5 -7
  96. package/dist/nprogress/index.mjs +1 -3
  97. package/dist/page-title/index.mjs +2 -3
  98. package/dist/{page-title-D62FV6vD.mjs → page-title-R7QbfbWp.mjs} +2 -4
  99. package/dist/popover/index.mjs +2 -4
  100. package/dist/{popover-Ds9624qY.mjs → popover-FJAcbYoH.mjs} +2 -4
  101. package/dist/radio-group/index.mjs +2 -4
  102. package/dist/{radio-group-B9Hm77LQ.mjs → radio-group-CiITR0LO.mjs} +3 -6
  103. package/dist/select/index.mjs +2 -4
  104. package/dist/{select-CwVIFWFO.mjs → select-CiLR_DiQ.mjs} +3 -6
  105. package/dist/separator/index.mjs +2 -4
  106. package/dist/{separator-T2ppyD-8.mjs → separator-DXVTncCK.mjs} +2 -4
  107. package/dist/sheet/index.mjs +3 -5
  108. package/dist/{sheet-mx5XjyEY.mjs → sheet-BzXksqYY.mjs} +4 -6
  109. package/dist/{sheet-Cemwh78x.mjs → sheet-Di3b-oPu.mjs} +2 -4
  110. package/dist/sidebar/index.mjs +2 -10
  111. package/dist/{sidebar-BW76ss_f.mjs → sidebar-BnhnjvfO.mjs} +10 -14
  112. package/dist/skeleton/index.mjs +2 -5
  113. package/dist/{skeleton-CkE23wsL.mjs → skeleton-BKl4mfJt.mjs} +2 -4
  114. package/dist/{skeleton-DZ31pU4B.mjs → skeleton-D1MUhAVo.mjs} +3 -5
  115. package/dist/spinner/index.mjs +2 -4
  116. package/dist/{spinner-earfjpJs.mjs → spinner-OyOf9-Yu.mjs} +2 -4
  117. package/dist/{spinner.icon-Bg8zgGh0.mjs → spinner.icon-C-vjSM6o.mjs} +2 -4
  118. package/dist/stepper/index.mjs +321 -5
  119. package/dist/switch/index.mjs +2 -4
  120. package/dist/{switch-Cn9IM2gC.mjs → switch-DQJQhPIQ.mjs} +3 -6
  121. package/dist/table/index.mjs +2 -4
  122. package/dist/{table-Dpzh0VPK.mjs → table-Cdsh-39-.mjs} +2 -4
  123. package/dist/tabs/index.mjs +50 -3
  124. package/dist/tag-input/index.mjs +2 -5
  125. package/dist/{tag-input-DorFQ9bA.mjs → tag-input-BVSwNcRd.mjs} +5 -7
  126. package/dist/task-queue/index.mjs +2 -7
  127. package/dist/{task-queue-dropdown-DtS0IKci.mjs → task-queue-dropdown-DyM5R8KF.mjs} +10 -30
  128. package/dist/textarea/index.mjs +2 -5
  129. package/dist/{textarea-QYRcDEpK.mjs → textarea-94vq_G_S.mjs} +2 -4
  130. package/dist/{textarea-KZUKGHlO.mjs → textarea-BwD-MmTV.mjs} +3 -5
  131. package/dist/theme/index.mjs +2 -3
  132. package/dist/{theme.provider-BG3cS9xe.mjs → themes-DG1md8FI.mjs} +1 -6
  133. package/dist/{to-api-format-CzPt5UAX.mjs → to-api-format-BnbRFYQI.mjs} +9 -18
  134. package/dist/toast/index.mjs +3 -3
  135. package/dist/{use-toast-DBmysDS6.mjs → toast-BWnN5fax.mjs} +5 -42
  136. package/dist/toast-DpxlFNNx.mjs +37 -0
  137. package/dist/tooltip/index.mjs +2 -4
  138. package/dist/{tooltip-U3XxlW4l.mjs → tooltip-Cruvl5F6.mjs} +3 -6
  139. package/dist/types-BZNk3q65.mjs +357 -0
  140. package/dist/typography/index.mjs +2 -3
  141. package/dist/{typography-DdrxIJMd.mjs → typography-ClB8k55E.mjs} +2 -4
  142. package/dist/{use-copy-to-clipboard-C9cT2Qb-.mjs → use-copy-to-clipboard-BGdTmkFV.mjs} +2 -4
  143. package/dist/utils/index.mjs +2 -3
  144. package/dist/{utils-Bfgoe-Gm.mjs → utils-C8KwMfT_.mjs} +1 -3
  145. package/dist/visually-hidden/index.mjs +2 -3
  146. package/dist/{visuallyhidden-CfBnXfvh.mjs → visuallyhidden-BLUsJpYH.mjs} +1 -3
  147. package/package.json +30 -4
  148. package/dist/input-with-addons-DN9LGwUU.mjs +0 -30
  149. package/dist/stepper-CZeks9Ex.mjs +0 -323
  150. package/dist/tabs-OYVCDOif.mjs +0 -52
package/README.md CHANGED
@@ -63,7 +63,7 @@ import { Dialog } from '@datum-cloud/datum-ui/dialog'
63
63
  import { Form, FormField, FormInput } from '@datum-cloud/datum-ui/form'
64
64
  ```
65
65
 
66
- This keeps your bundle small and means you only install peer dependencies for the components you actually use.
66
+ This keeps your bundle small. Some components require additional dependencies check the component tables below for what to install.
67
67
 
68
68
  ### Shared Exports
69
69
 
@@ -82,7 +82,7 @@ This keeps your bundle small and means you only install peer dependencies for th
82
82
 
83
83
  Some components with shared heavy dependencies are grouped under a single subpath:
84
84
 
85
- | Import Path | Includes | Peer Dependencies |
85
+ | Import Path | Includes | Required Dependencies |
86
86
  | ----------------------------------- | ------------------------------------------ | --------------------------------------------- |
87
87
  | `@datum-cloud/datum-ui/date-picker` | `CalendarDatePicker`, `TimeRangePicker` | `react-day-picker`, `date-fns`, `date-fns-tz` |
88
88
  | `@datum-cloud/datum-ui/map` | `Map`, `PlaceAutocomplete`, + map controls | `leaflet`, `react-leaflet`, + leaflet plugins |
@@ -94,73 +94,99 @@ Some components with shared heavy dependencies are grouped under a single subpat
94
94
 
95
95
  ### Base Components
96
96
 
97
- Thin wrappers around shadcn/Radix primitives with Datum styling.
97
+ Thin wrappers around shadcn/Radix primitives with Datum styling. **Radix UI dependencies are bundled** — no additional installation required for these components.
98
98
 
99
- | Component | Peer Dependencies | Description |
99
+ | Component | Additional Dependencies | Description |
100
100
  | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------- |
101
101
  | `Alert`, `AlertTitle`, `AlertDescription` | — | Status alert banners |
102
+ | `Avatar`, `AvatarImage`, `AvatarFallback` | — | User profile image with fallback support |
102
103
  | `Badge` | — | Labels and status indicators with `type` and `theme` variants |
103
104
  | `Breadcrumb`, `BreadcrumbItem`, `BreadcrumbLink`, `BreadcrumbSeparator`, `BreadcrumbList`, `BreadcrumbPage`, `BreadcrumbEllipsis` | — | Navigation breadcrumbs |
104
- | `Button` | `@radix-ui/react-slot` | Button with `type` (primary/secondary/danger/warning/success) and `theme` (solid/outline/ghost/link) variants |
105
+ | `Button` | | Button with `type` (primary/secondary/danger/warning/success) and `theme` (solid/outline/ghost/link) variants |
105
106
  | `ButtonGroup` | — | Group buttons horizontally |
106
107
  | `Calendar` | `react-day-picker` | Date picker calendar |
107
108
  | `Card`, `CardHeader`, `CardTitle`, `CardDescription`, `CardContent`, `CardFooter` | — | Content container |
108
109
  | `Chart` (ChartContainer, ChartTooltip, etc.) | `recharts` | Data visualization wrapper |
109
- | `Checkbox` | `@radix-ui/react-checkbox` | Toggle checkbox |
110
- | `Collapsible`, `CollapsibleTrigger`, `CollapsibleContent` | `@radix-ui/react-collapsible` | Expandable sections |
111
- | `Command`, `CommandInput`, `CommandList`, `CommandItem`, `CommandGroup` | `cmdk` | Command palette / search |
112
- | `Dialog`, `DialogTrigger`, `DialogContent`, `DialogHeader`, `DialogTitle`, `DialogDescription`, `DialogFooter`, `DialogClose` | `@radix-ui/react-dialog` | Modal dialog |
113
- | `HoverCard`, `HoverCardTrigger`, `HoverCardContent` | `@radix-ui/react-hover-card` | Hover-triggered popover |
110
+ | `Checkbox` | | Toggle checkbox |
111
+ | `Collapsible`, `CollapsibleTrigger`, `CollapsibleContent` | | Expandable sections |
112
+ | `Command`, `CommandInput`, `CommandList`, `CommandItem`, `CommandGroup` | | Command palette / search |
113
+ | `Dialog`, `DialogTrigger`, `DialogContent`, `DialogHeader`, `DialogTitle`, `DialogDescription`, `DialogFooter`, `DialogClose` | | Modal dialog |
114
+ | `HoverCard`, `HoverCardTrigger`, `HoverCardContent` | | Hover-triggered popover |
114
115
  | `Input` | — | Text input |
115
116
  | `InputGroup`, `InputGroupInput`, `InputGroupText` | — | Input with prefix/suffix elements |
116
- | `Label` | `@radix-ui/react-label` | Form label |
117
+ | `Label` | | Form label |
117
118
  | `Map`, `MapTileLayer`, `MapMarker`, `MapPopup`, `MapTooltip`, `MapZoomControl`, `MapFullscreenControl`, `MapLayers`, `MapLayersControl`, `MapLayerGroup`, `MapCircle`, `MapPolygon`, `MapRectangle`, `MapPolyline`, `MapDrawControl`, `MapDrawMarker`, `MapDrawPolyline`, `MapDrawCircle`, `MapDrawPolygon`, `MapDrawEdit`, `MapDrawDelete`, `MapDrawUndo`, `MapLocateControl`, `MapSearchControl`, `MapControlContainer` | `leaflet`, `react-leaflet`, `leaflet-draw`, `leaflet.fullscreen`, `leaflet.markercluster`, `react-leaflet-markercluster` | Interactive map (SSR-safe, lazy-loaded) |
118
119
  | `PlaceAutocomplete` | — | Google Places address autocomplete |
119
- | `Popover`, `PopoverTrigger`, `PopoverContent` | `@radix-ui/react-popover` | Click-triggered popover |
120
- | `RadioGroup`, `RadioGroupItem` | `@radix-ui/react-radio-group` | Radio button group |
121
- | `Select`, `SelectTrigger`, `SelectContent`, `SelectItem`, `SelectValue`, `SelectGroup`, `SelectLabel`, `SelectSeparator` | `@radix-ui/react-select` | Dropdown select |
122
- | `Separator` | `@radix-ui/react-separator` | Visual divider |
123
- | `Sheet`, `SheetTrigger`, `SheetContent`, `SheetHeader`, `SheetTitle`, `SheetDescription`, `SheetFooter`, `SheetClose` | `@radix-ui/react-dialog` | Slide-out panel |
120
+ | `Popover`, `PopoverTrigger`, `PopoverContent` | | Click-triggered popover |
121
+ | `RadioGroup`, `RadioGroupItem` | | Radio button group |
122
+ | `Select`, `SelectTrigger`, `SelectContent`, `SelectItem`, `SelectValue`, `SelectGroup`, `SelectLabel`, `SelectSeparator` | | Dropdown select |
123
+ | `Separator` | | Visual divider |
124
+ | `Sheet`, `SheetTrigger`, `SheetContent`, `SheetHeader`, `SheetTitle`, `SheetDescription`, `SheetFooter`, `SheetClose` | | Slide-out panel |
124
125
  | `Skeleton` | — | Loading placeholder |
125
126
  | `Spinner` | — | Loading spinner |
126
- | `Switch` | `@radix-ui/react-switch` | Toggle switch |
127
+ | `Switch` | | Toggle switch |
127
128
  | `Table`, `TableHeader`, `TableBody`, `TableFooter`, `TableHead`, `TableRow`, `TableCell`, `TableCaption` | — | Data table |
128
- | `Tabs`, `TabsList`, `TabsTrigger`, `TabsContent` | `@radix-ui/react-tabs` | Tabbed interface |
129
+ | `Tabs`, `TabsList`, `TabsTrigger`, `TabsContent` | | Tabbed interface |
129
130
  | `Textarea` | — | Multi-line text input |
130
- | `Tooltip`, `TooltipTrigger`, `TooltipContent`, `TooltipProvider` | `@radix-ui/react-tooltip` | Hover tooltip |
131
+ | `Tooltip`, `TooltipTrigger`, `TooltipContent`, `TooltipProvider` | | Hover tooltip |
131
132
  | `Title`, `Text`, `Paragraph`, `Link`, `List`, `ListItem`, `Blockquote`, `Code` | — | Typography components with `level`, `size`, `weight`, `color`, `type` variants |
132
- | `VisuallyHidden` | `@radix-ui/react-visually-hidden` | Screen-reader only content |
133
+ | `VisuallyHidden` | | Screen-reader only content |
133
134
 
134
135
  ### Feature Components
135
136
 
136
137
  Complex, fully-customized components with significant business logic.
137
138
 
138
- | Component | Peer Dependencies | Description |
139
- | -------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- | ----------------------------------------- |
140
- | `Autocomplete` | `cmdk` | Search autocomplete input |
141
- | `AvatarStack` | `@radix-ui/react-avatar`, `@radix-ui/react-tooltip` | Stacked avatar display |
142
- | `CalendarDatePicker` | `react-day-picker`, `date-fns` | Date/range picker with presets |
143
- | `Dropdown`, `DropdownHeader`, `DropdownItem`, `DropdownSection` | `@radix-ui/react-dropdown-menu` | Dropdown menu |
144
- | `Dropzone` | `react-dropzone` | File drag-and-drop upload area |
145
- | `EmptyContent` | — | Empty state placeholder |
146
- | `FileInputButton` | | File upload button |
147
- | `Form`, `FormField`, `FormInput`, `FormTextarea`, `FormSelect`, `FormCheckbox`, `FormSwitch`, `FormRadioGroup`, `FormFieldArray` | `@conform-to/react`, `@conform-to/zod`, `zod` | Form system with validation |
148
- | `Grid` | `@tanstack/react-virtual` | Virtualized data grid |
149
- | `InputNumber` | `react-number-format` | Numeric input with formatting |
150
- | `InputWithAddons` | | Input with prefix/suffix addons |
151
- | `LoaderOverlay` | | Full-screen loading overlay |
152
- | `MoreActions` | `@radix-ui/react-dropdown-menu` | Three-dot actions menu |
153
- | `NProgress` | `nprogress` | Page navigation progress bar |
154
- | `PageTitle` | — | Page header with breadcrumbs |
155
- | `Sidebar`, `SidebarHeader`, `SidebarContent`, `SidebarFooter`, `SidebarMenu`, `SidebarMenuItem`, `SidebarMenuButton` | — | App sidebar navigation |
156
- | `Stepper` | `@stepperize/react` | Multi-step wizard |
157
- | `TagInput` | — | Tag/chip input |
158
- | `TaskQueue`, `TaskQueueProvider`, `TaskQueueDropdown`, `TaskPanelHeader`, `TaskSummaryDialog` | — | Background task queue with progress UI |
159
- | `TimeRangePicker` | `date-fns`, `date-fns-tz` | Time range selector with timezone support |
160
- | `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` | `@conform-to/react`, `@conform-to/zod`, `zod` | Form system with validation |
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 |
161
164
 
162
165
  ## Usage Examples
163
166
 
167
+ ### Avatar
168
+
169
+ ```tsx
170
+ import { Avatar, AvatarImage, AvatarFallback } from '@datum-cloud/datum-ui/avatar'
171
+
172
+ // With image and fallback
173
+ <Avatar>
174
+ <AvatarImage src="https://example.com/avatar.jpg" alt="User Name" />
175
+ <AvatarFallback>UN</AvatarFallback>
176
+ </Avatar>
177
+
178
+ // Custom size
179
+ <Avatar className="size-16">
180
+ <AvatarImage src="https://example.com/avatar.jpg" alt="User Name" />
181
+ <AvatarFallback className="text-lg">UN</AvatarFallback>
182
+ </Avatar>
183
+
184
+ // Fallback only (no image)
185
+ <Avatar>
186
+ <AvatarFallback>AB</AvatarFallback>
187
+ </Avatar>
188
+ ```
189
+
164
190
  ### Button
165
191
 
166
192
  ```tsx
@@ -317,24 +343,67 @@ const { theme, setTheme, resolvedTheme } = useTheme()
317
343
 
318
344
  ## Peer Dependencies
319
345
 
320
- All peer dependencies are **optional** — install only what you use.
346
+ ### Required
347
+
348
+ These dependencies are **required** to use datum-ui:
349
+
350
+ ```bash
351
+ npm install react react-dom tailwindcss lucide-react
352
+ ```
353
+
354
+ - **React 19+** and **React DOM 19+**: Framework requirements
355
+ - **Tailwind CSS v4** (v4.0.7+, v4.2.1+ recommended): Required for styling
356
+ - **lucide-react**: Icon library used throughout components
357
+
358
+ **All Radix UI packages are bundled** — you don't need to install them separately.
359
+
360
+ ### Optional (Component-Specific)
361
+
362
+ Many components require additional packages. Install only what you use:
321
363
 
322
364
  > Replace `npm install` with `yarn add`, `pnpm add`, or `bun add` for your package manager.
323
365
 
324
366
  ```bash
325
- # Forms
367
+ # Forms (Form, FormField, FormInput, etc.)
326
368
  npm install @conform-to/react @conform-to/zod zod
327
369
 
328
- # Maps
370
+ # Maps (Map, MapMarker, MapPopup, etc.)
329
371
  npm install leaflet react-leaflet leaflet-draw leaflet.fullscreen leaflet.markercluster react-leaflet-markercluster
330
372
 
331
- # Charts
373
+ # Charts (ChartContainer, ChartTooltip, etc.)
332
374
  npm install recharts
333
375
 
334
- # Date pickers
376
+ # Code editor (CodeEditor, CodeEditorTabs)
377
+ npm install @monaco-editor/react monaco-editor
378
+
379
+ # Date pickers (Calendar, CalendarDatePicker, TimeRangePicker)
335
380
  npm install react-day-picker date-fns date-fns-tz
336
381
 
337
- # Animations
382
+ # File upload (Dropzone)
383
+ npm install react-dropzone
384
+
385
+ # Number formatting (InputNumber)
386
+ npm install react-number-format
387
+
388
+ # Stepper (multi-step flows)
389
+ npm install @stepperize/react
390
+
391
+ # Toast notifications (Toast, Toaster)
392
+ npm install sonner
393
+
394
+ # Progress bar (NProgress)
395
+ npm install nprogress
396
+
397
+ # Data grid (Grid - virtualized tables)
398
+ npm install @tanstack/react-virtual
399
+
400
+ # Data Table (DataTable component)
401
+ npm install @tanstack/react-table
402
+
403
+ # Data Table with URL state (optional)
404
+ npm install nuqs
405
+
406
+ # Animations (motion components)
338
407
  npm install motion
339
408
  ```
340
409
 
@@ -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-Bfgoe-Gm.mjs";
2
- import "../separator-T2ppyD-8.mjs";
3
- import "../button-AzpnV-WB.mjs";
4
- import "../collapsible-Bt9UYfv3.mjs";
5
- import "../input-DuyjEKEW.mjs";
6
- import "../sheet-Cemwh78x.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-BW76ss_f.mjs";
8
- import "../skeleton-CkE23wsL.mjs";
9
- import "../tooltip-U3XxlW4l.mjs";
10
- import { n as NavMenu, t as AppNavigation } from "../app-navigation-CCvjPijd.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-9ticVbRL.mjs";
3
- import { n as CollapsibleContent, r as CollapsibleTrigger, t as Collapsible } from "./collapsible-Bt9UYfv3.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-BW76ss_f.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-Bfgoe-Gm.mjs";
2
- import "../dialog-DXBaT9gA.mjs";
3
- import "../command-s0Yv3abE.mjs";
4
- import "../popover-Ds9624qY.mjs";
5
- import { t as Autocomplete } from "../autocomplete-DcKO7pj5.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-s0Yv3abE.mjs";
3
- import { i as PopoverTrigger, r as PopoverContent, t as Popover } from "./popover-Ds9624qY.mjs";
4
- import { t as LoaderOverlay } from "./loader-overlay-CpA0zV8D.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 };
@@ -0,0 +1,2 @@
1
+ import { n as AvatarFallback, r as AvatarImage, t as Avatar } from "../avatar-BtKVcvO4.mjs";
2
+ export { Avatar, AvatarFallback, AvatarImage };
@@ -0,0 +1,28 @@
1
+ import { t as cn } from "./utils-C8KwMfT_.mjs";
2
+ import "react";
3
+ import { jsx } from "react/jsx-runtime";
4
+ import * as AvatarPrimitive from "@radix-ui/react-avatar";
5
+ //#region ../shadcn/ui/avatar.tsx
6
+ const Avatar = ({ className, ...props }) => {
7
+ return /* @__PURE__ */ jsx(AvatarPrimitive.Root, {
8
+ "data-slot": "avatar",
9
+ className: cn("relative flex size-8 shrink-0 overflow-hidden rounded-full", className),
10
+ ...props
11
+ });
12
+ };
13
+ const AvatarImage = ({ className, ...props }) => {
14
+ return /* @__PURE__ */ jsx(AvatarPrimitive.Image, {
15
+ "data-slot": "avatar-image",
16
+ className: cn("aspect-square size-full", className),
17
+ ...props
18
+ });
19
+ };
20
+ const AvatarFallback = ({ className, ...props }) => {
21
+ return /* @__PURE__ */ jsx(AvatarPrimitive.Fallback, {
22
+ "data-slot": "avatar-fallback",
23
+ className: cn("bg-muted flex size-full items-center justify-center rounded-full", className),
24
+ ...props
25
+ });
26
+ };
27
+ //#endregion
28
+ export { AvatarFallback as n, AvatarImage as r, Avatar as t };
@@ -1,5 +1,2 @@
1
- import "../utils-Bfgoe-Gm.mjs";
2
- import "../tooltip-U3XxlW4l.mjs";
3
- import { n as avatarStackVariants, t as AvatarStack } from "../avatar-stack-B21McFeb.mjs";
4
-
5
- export { AvatarStack, avatarStackVariants };
1
+ import { n as avatarStackVariants, t as AvatarStack } from "../avatar-stack-oVr8tsU7.mjs";
2
+ export { AvatarStack, avatarStackVariants };
@@ -1,35 +1,9 @@
1
- import { t as cn } from "./cn-DWCc1QRE.mjs";
2
- import { t as cn$1 } from "./utils-Bfgoe-Gm.mjs";
3
- import { t as Tooltip } from "./tooltip-U3XxlW4l.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
- import * as AvatarPrimitive from "@radix-ui/react-avatar";
8
-
9
- //#region ../shadcn/ui/avatar.tsx
10
- const Avatar = ({ className, ...props }) => {
11
- return /* @__PURE__ */ jsx(AvatarPrimitive.Root, {
12
- "data-slot": "avatar",
13
- className: cn$1("relative flex size-8 shrink-0 overflow-hidden rounded-full", className),
14
- ...props
15
- });
16
- };
17
- const AvatarImage = ({ className, ...props }) => {
18
- return /* @__PURE__ */ jsx(AvatarPrimitive.Image, {
19
- "data-slot": "avatar-image",
20
- className: cn$1("aspect-square size-full", className),
21
- ...props
22
- });
23
- };
24
- const AvatarFallback = ({ className, ...props }) => {
25
- return /* @__PURE__ */ jsx(AvatarPrimitive.Fallback, {
26
- "data-slot": "avatar-fallback",
27
- className: cn$1("bg-muted flex size-full items-center justify-center rounded-full", className),
28
- ...props
29
- });
30
- };
31
-
32
- //#endregion
33
7
  //#region src/components/features/avatar-stack/avatar-stack.tsx
34
8
  const avatarStackVariants = cva("flex", {
35
9
  variants: {
@@ -75,6 +49,5 @@ function AvatarStack({ className, orientation, avatars, spacing, maxAvatarsAmoun
75
49
  }) : null]
76
50
  });
77
51
  }
78
-
79
52
  //#endregion
80
- 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-bFgeYceE.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-Bfgoe-Gm.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-BGYJgom_.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-Bfgoe-Gm.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-C1wRfGtT.mjs";
2
- import { t as LinkButton } from "../link-button-TIF2Zdrk.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-Bg8zgGh0.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-Bfgoe-Gm.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 };