@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
@@ -1,323 +0,0 @@
1
- import { t as cn } from "./cn-DWCc1QRE.mjs";
2
- import { t as Button } from "./button-AzpnV-WB.mjs";
3
- import { cva } from "class-variance-authority";
4
- import * as React$1 from "react";
5
- import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
6
- import { Slot } from "@radix-ui/react-slot";
7
- import * as Stepperize from "@stepperize/react";
8
-
9
- //#region src/components/features/stepper/stepper.tsx
10
- const StepperContext = React$1.createContext(null);
11
- function useStepperProvider() {
12
- const context = React$1.use(StepperContext);
13
- if (!context) throw new Error("useStepper must be used within a StepperProvider.");
14
- return context;
15
- }
16
- const classForNavigationList = cva("flex gap-2", { variants: { variant: {
17
- horizontal: "flex-row items-center justify-between",
18
- vertical: "flex-col",
19
- circle: "flex-row items-center justify-between"
20
- } } });
21
- const classForSeparator = cva([
22
- "bg-muted",
23
- "data-[state=completed]:bg-primary data-[disabled]:opacity-50",
24
- "transition-all duration-300 ease-in-out"
25
- ], { variants: {
26
- orientation: {
27
- horizontal: "h-0.5 flex-1",
28
- vertical: "h-full w-0.5"
29
- },
30
- labelOrientation: { vertical: "absolute left-[calc(50%+30px)] right-[calc(-50%+20px)] top-5 block shrink-0" }
31
- } });
32
- function defineStepper(...steps) {
33
- const { Scoped, useStepper, steps: stepList, Stepper: StepperizePrimitives } = Stepperize.defineStepper(...steps);
34
- const StepperContainer = ({ children, className, ...props }) => {
35
- const methods = useStepper();
36
- return /* @__PURE__ */ jsx("div", {
37
- "date-component": "stepper",
38
- className: cn("w-full", className),
39
- ...props,
40
- children: typeof children === "function" ? children({ methods }) : children
41
- });
42
- };
43
- return {
44
- steps: stepList,
45
- useStepper,
46
- Stepper: {
47
- ...StepperizePrimitives,
48
- Provider: ({ variant = "horizontal", labelOrientation = "horizontal", tracking = false, children, className, ...props }) => {
49
- return /* @__PURE__ */ jsx(StepperContext, {
50
- value: {
51
- variant,
52
- labelOrientation,
53
- tracking
54
- },
55
- children: /* @__PURE__ */ jsx(Scoped, {
56
- initialStep: props.initialStep,
57
- initialMetadata: props.initialMetadata,
58
- children: /* @__PURE__ */ jsx(StepperContainer, {
59
- className,
60
- ...props,
61
- children
62
- })
63
- })
64
- });
65
- },
66
- Navigation: ({ children, "aria-label": ariaLabel = "Stepper Navigation", ...props }) => {
67
- const { variant } = useStepperProvider();
68
- return /* @__PURE__ */ jsx("nav", {
69
- "date-component": "stepper-navigation",
70
- "aria-label": ariaLabel,
71
- role: "tablist",
72
- ...props,
73
- children: /* @__PURE__ */ jsx("ol", {
74
- "date-component": "stepper-navigation-list",
75
- className: classForNavigationList({ variant }),
76
- children
77
- })
78
- });
79
- },
80
- Step: ({ children, className, icon, ...props }) => {
81
- const { variant, labelOrientation } = useStepperProvider();
82
- const stepper = useStepper();
83
- const steps = stepList;
84
- const stepIndex = stepper.lookup.getIndex(props.of);
85
- const step = steps[stepIndex];
86
- const currentIndex = stepper.lookup.getIndex(stepper.state.current.data.id);
87
- const isLast = stepper.lookup.getLast().id === props.of;
88
- const isActive = stepper.state.current.data.id === props.of;
89
- const dataState = getStepState(currentIndex, stepIndex);
90
- const childMap = useStepChildren(children);
91
- const title = childMap.get("title");
92
- const description = childMap.get("description");
93
- const panel = childMap.get("panel");
94
- if (variant === "circle") return /* @__PURE__ */ jsxs("li", {
95
- "date-component": "stepper-step",
96
- className: cn("flex shrink-0 items-center gap-4 rounded-md transition-colors", className),
97
- children: [/* @__PURE__ */ jsx(CircleStepIndicator, {
98
- currentStep: stepIndex + 1,
99
- totalSteps: steps.length
100
- }), /* @__PURE__ */ jsxs("div", {
101
- "date-component": "stepper-step-content",
102
- className: "flex flex-col items-start gap-1",
103
- children: [title, description]
104
- })]
105
- });
106
- return /* @__PURE__ */ jsxs(Fragment$1, { children: [
107
- /* @__PURE__ */ jsxs("li", {
108
- "date-component": "stepper-step",
109
- className: cn([
110
- "group peer relative flex items-center gap-2",
111
- "data-[variant=vertical]:flex-row",
112
- "data-[label-orientation=vertical]:w-full",
113
- "data-[label-orientation=vertical]:flex-col",
114
- "data-[label-orientation=vertical]:justify-center"
115
- ]),
116
- "data-variant": variant,
117
- "data-label-orientation": labelOrientation,
118
- "data-state": dataState,
119
- "data-disabled": props.disabled,
120
- children: [
121
- /* @__PURE__ */ jsx(Button, {
122
- id: `step-${step.id}`,
123
- "date-component": "stepper-step-indicator",
124
- type: "button",
125
- role: "tab",
126
- tabIndex: dataState !== "inactive" ? 0 : -1,
127
- className: cn("rounded-full", className),
128
- variant: dataState !== "inactive" ? "default" : "secondary",
129
- size: "icon",
130
- "aria-controls": `step-panel-${props.of}`,
131
- "aria-current": isActive ? "step" : void 0,
132
- "aria-posinset": stepIndex + 1,
133
- "aria-setsize": steps.length,
134
- "aria-selected": isActive,
135
- onKeyDown: (e) => onStepKeyDown(e, stepper.lookup.getNext(props.of), stepper.lookup.getPrev(props.of)),
136
- ...props,
137
- children: icon ?? stepIndex + 1
138
- }),
139
- variant === "horizontal" && labelOrientation === "vertical" && /* @__PURE__ */ jsx(StepperSeparator, {
140
- orientation: "horizontal",
141
- labelOrientation,
142
- isLast,
143
- state: dataState,
144
- disabled: props.disabled
145
- }),
146
- /* @__PURE__ */ jsxs("div", {
147
- "date-component": "stepper-step-content",
148
- className: "flex flex-col items-start",
149
- children: [title, description]
150
- })
151
- ]
152
- }),
153
- variant === "horizontal" && labelOrientation === "horizontal" && /* @__PURE__ */ jsx(StepperSeparator, {
154
- orientation: "horizontal",
155
- isLast,
156
- state: dataState,
157
- disabled: props.disabled
158
- }),
159
- variant === "vertical" && /* @__PURE__ */ jsxs("div", {
160
- className: "flex gap-4",
161
- children: [!isLast && /* @__PURE__ */ jsx("div", {
162
- className: "flex justify-center ps-[calc(var(--spacing)_*_4.5_-_1px)]",
163
- children: /* @__PURE__ */ jsx(StepperSeparator, {
164
- orientation: "vertical",
165
- isLast,
166
- state: dataState,
167
- disabled: props.disabled
168
- })
169
- }), /* @__PURE__ */ jsx("div", {
170
- className: "my-3 flex-1 ps-4",
171
- children: panel
172
- })]
173
- })
174
- ] });
175
- },
176
- Title,
177
- Description,
178
- Panel: ({ children, asChild, ...props }) => {
179
- const Comp = asChild ? Slot : "div";
180
- const { tracking } = useStepperProvider();
181
- return /* @__PURE__ */ jsx(Comp, {
182
- "date-component": "stepper-step-panel",
183
- ref: (node) => scrollIntoStepperPanel(node, tracking),
184
- ...props,
185
- children
186
- });
187
- },
188
- Controls: ({ children, className, asChild, ...props }) => {
189
- return /* @__PURE__ */ jsx(asChild ? Slot : "div", {
190
- "date-component": "stepper-controls",
191
- className: cn("flex justify-end gap-4", className),
192
- ...props,
193
- children
194
- });
195
- }
196
- }
197
- };
198
- }
199
- function Title({ children, className, asChild, ...props }) {
200
- return /* @__PURE__ */ jsx(asChild ? Slot : "h4", {
201
- "date-component": "stepper-step-title",
202
- className: cn("text-base font-medium", className),
203
- ...props,
204
- children
205
- });
206
- }
207
- function Description({ children, className, asChild, ...props }) {
208
- return /* @__PURE__ */ jsx(asChild ? Slot : "p", {
209
- "date-component": "stepper-step-description",
210
- className: cn("text-muted-foreground text-sm", className),
211
- ...props,
212
- children
213
- });
214
- }
215
- function StepperSeparator({ orientation, isLast, labelOrientation, state, disabled }) {
216
- if (isLast) return null;
217
- return /* @__PURE__ */ jsx("div", {
218
- "date-component": "stepper-separator",
219
- "data-orientation": orientation,
220
- "data-state": state,
221
- "data-disabled": disabled,
222
- role: "separator",
223
- tabIndex: -1,
224
- className: classForSeparator({
225
- orientation,
226
- labelOrientation
227
- })
228
- });
229
- }
230
- function CircleStepIndicator({ currentStep, totalSteps, size = 80, strokeWidth = 6 }) {
231
- const radius = (size - strokeWidth) / 2;
232
- const circumference = radius * 2 * Math.PI;
233
- const dashOffset = circumference - circumference * (currentStep / totalSteps * 100) / 100;
234
- return /* @__PURE__ */ jsxs("div", {
235
- "date-component": "stepper-step-indicator",
236
- role: "progressbar",
237
- "aria-valuenow": currentStep,
238
- "aria-valuemin": 1,
239
- "aria-valuemax": totalSteps,
240
- tabIndex: -1,
241
- className: "relative inline-flex items-center justify-center",
242
- children: [/* @__PURE__ */ jsxs("svg", {
243
- width: size,
244
- height: size,
245
- children: [
246
- /* @__PURE__ */ jsx("title", { children: "Step Indicator" }),
247
- /* @__PURE__ */ jsx("circle", {
248
- cx: size / 2,
249
- cy: size / 2,
250
- r: radius,
251
- fill: "none",
252
- stroke: "currentColor",
253
- strokeWidth,
254
- className: "text-muted-foreground"
255
- }),
256
- /* @__PURE__ */ jsx("circle", {
257
- cx: size / 2,
258
- cy: size / 2,
259
- r: radius,
260
- fill: "none",
261
- stroke: "currentColor",
262
- strokeWidth,
263
- strokeDasharray: circumference,
264
- strokeDashoffset: dashOffset,
265
- className: "text-primary transition-all duration-300 ease-in-out",
266
- transform: `rotate(-90 ${size / 2} ${size / 2})`
267
- })
268
- ]
269
- }), /* @__PURE__ */ jsx("div", {
270
- className: "absolute inset-0 flex items-center justify-center",
271
- children: /* @__PURE__ */ jsxs("span", {
272
- className: "text-sm font-medium",
273
- "aria-live": "polite",
274
- children: [
275
- currentStep,
276
- " ",
277
- "of",
278
- totalSteps
279
- ]
280
- })
281
- })]
282
- });
283
- }
284
- function scrollIntoStepperPanel(node, tracking) {
285
- if (tracking) node?.scrollIntoView({
286
- behavior: "smooth",
287
- block: "center"
288
- });
289
- }
290
- function useStepChildren(children) {
291
- return React$1.useMemo(() => extractChildren(children), [children]);
292
- }
293
- function extractChildren(children) {
294
- const childrenArray = React$1.Children.toArray(children);
295
- const map = /* @__PURE__ */ new Map();
296
- for (const child of childrenArray) if (React$1.isValidElement(child)) if (child.type === Title) map.set("title", child);
297
- else if (child.type === Description) map.set("description", child);
298
- else map.set("panel", child);
299
- return map;
300
- }
301
- function onStepKeyDown(e, nextStep, prevStep) {
302
- const { key } = e;
303
- const directions = {
304
- next: ["ArrowRight", "ArrowDown"],
305
- prev: ["ArrowLeft", "ArrowUp"]
306
- };
307
- if (directions.next.includes(key) || directions.prev.includes(key)) {
308
- const direction = directions.next.includes(key) ? "next" : "prev";
309
- const step = direction === "next" ? nextStep : prevStep;
310
- if (!step) return;
311
- const stepElement = document.getElementById(`step-${step.id}`);
312
- if (!stepElement) return;
313
- if (stepElement.parentElement?.getAttribute("data-state") !== "inactive" || direction === "prev") stepElement.focus();
314
- }
315
- }
316
- function getStepState(currentIndex, stepIndex) {
317
- if (currentIndex === stepIndex) return "active";
318
- if (currentIndex > stepIndex) return "completed";
319
- return "inactive";
320
- }
321
-
322
- //#endregion
323
- export { defineStepper as t };
@@ -1,52 +0,0 @@
1
- import { t as cn } from "./cn-DWCc1QRE.mjs";
2
- import "react";
3
- import { jsx } from "react/jsx-runtime";
4
- import * as TabsPrimitive from "@radix-ui/react-tabs";
5
-
6
- //#region src/components/base/tabs/tabs.tsx
7
- /**
8
- * Datum Tabs Component
9
- * Extends shadcn Tabs with:
10
- * - TabsLinkTrigger for router-agnostic link integration
11
- * - Dark mode customizations
12
- */
13
- function Tabs({ className, ...props }) {
14
- return /* @__PURE__ */ jsx(TabsPrimitive.Root, {
15
- className: cn("flex flex-col gap-2", className),
16
- ...props
17
- });
18
- }
19
- function TabsList({ className, ...props }) {
20
- return /* @__PURE__ */ jsx(TabsPrimitive.List, {
21
- className: cn("bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-1", className),
22
- ...props
23
- });
24
- }
25
- function TabsTrigger({ className, ...props }) {
26
- return /* @__PURE__ */ jsx(TabsPrimitive.Trigger, {
27
- className: cn("data-[state=active]:bg-background dark:data-[state=active]:text-foreground data-[state=active]:text-foreground dark:hover:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring inline-flex flex-1 items-center justify-center gap-1.5 rounded-md px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
28
- ...props
29
- });
30
- }
31
- function TabsContent({ className, ...props }) {
32
- return /* @__PURE__ */ jsx(TabsPrimitive.Content, {
33
- className: cn("flex-1 outline-none", className),
34
- ...props
35
- });
36
- }
37
- function TabsLinkTrigger({ value, href, linkComponent: LinkComp = "a", children, className, ...props }) {
38
- const linkProps = LinkComp === "a" ? { href } : { to: href };
39
- return /* @__PURE__ */ jsx(TabsTrigger, {
40
- value,
41
- asChild: true,
42
- className,
43
- ...props,
44
- children: /* @__PURE__ */ jsx(LinkComp, {
45
- ...linkProps,
46
- children
47
- })
48
- });
49
- }
50
-
51
- //#endregion
52
- export { TabsTrigger as a, TabsList as i, TabsContent as n, TabsLinkTrigger as r, Tabs as t };