orbital-ds 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/contract.json +38 -0
  2. package/dist/styles.css +89 -9
  3. package/dist/themes/zyro.css +189 -0
  4. package/dist/ui/accordion.d.ts +9 -0
  5. package/dist/ui/accordion.js +79 -0
  6. package/dist/ui/alert-dialog.d.ts +23 -0
  7. package/dist/ui/alert-dialog.js +173 -0
  8. package/dist/ui/alert.d.ts +13 -0
  9. package/dist/ui/alert.js +77 -0
  10. package/dist/ui/aspect-ratio.d.ts +7 -0
  11. package/dist/ui/aspect-ratio.js +22 -0
  12. package/dist/ui/attachment.d.ts +26 -0
  13. package/dist/ui/attachment.js +197 -0
  14. package/dist/ui/avatar.js +1 -1
  15. package/dist/ui/badge.d.ts +1 -1
  16. package/dist/ui/badge.js +1 -1
  17. package/dist/ui/bubble.d.ts +19 -0
  18. package/dist/ui/bubble.js +115 -0
  19. package/dist/ui/button-group.d.ts +15 -0
  20. package/dist/ui/button-group.js +82 -0
  21. package/dist/ui/button.d.ts +5 -3
  22. package/dist/ui/button.js +9 -6
  23. package/dist/ui/calendar.d.ts +15 -0
  24. package/dist/ui/calendar.js +190 -0
  25. package/dist/ui/card.js +4 -4
  26. package/dist/ui/carousel.d.ts +33 -0
  27. package/dist/ui/carousel.js +199 -0
  28. package/dist/ui/checkbox.js +1 -1
  29. package/dist/ui/combobox.d.ts +26 -0
  30. package/dist/ui/combobox.js +281 -0
  31. package/dist/ui/command.d.ts +22 -0
  32. package/dist/ui/command.js +183 -0
  33. package/dist/ui/context-menu.d.ts +31 -0
  34. package/dist/ui/context-menu.js +242 -0
  35. package/dist/ui/dialog.js +2 -2
  36. package/dist/ui/direction.d.ts +1 -0
  37. package/dist/ui/direction.js +8 -0
  38. package/dist/ui/drawer.d.ts +18 -0
  39. package/dist/ui/drawer.js +208 -0
  40. package/dist/ui/dropdown-menu.d.ts +1 -1
  41. package/dist/ui/dropdown-menu.js +13 -9
  42. package/dist/ui/empty.d.ts +15 -0
  43. package/dist/ui/empty.js +102 -0
  44. package/dist/ui/field.d.ts +28 -0
  45. package/dist/ui/field.js +217 -0
  46. package/dist/ui/hover-card.d.ts +8 -0
  47. package/dist/ui/hover-card.js +45 -0
  48. package/dist/ui/input-group.d.ts +22 -0
  49. package/dist/ui/input-group.js +145 -0
  50. package/dist/ui/input-otp.d.ts +13 -0
  51. package/dist/ui/input-otp.js +82 -0
  52. package/dist/ui/input.js +1 -1
  53. package/dist/ui/item.d.ts +26 -0
  54. package/dist/ui/item.js +195 -0
  55. package/dist/ui/kbd.d.ts +6 -0
  56. package/dist/ui/kbd.js +29 -0
  57. package/dist/ui/marker.d.ts +13 -0
  58. package/dist/ui/marker.js +71 -0
  59. package/dist/ui/menubar.d.ts +31 -0
  60. package/dist/ui/menubar.js +259 -0
  61. package/dist/ui/message-scroller.d.ts +16 -0
  62. package/dist/ui/message-scroller.js +120 -0
  63. package/dist/ui/message.d.ts +12 -0
  64. package/dist/ui/message.js +90 -0
  65. package/dist/ui/native-select.d.ts +10 -0
  66. package/dist/ui/native-select.js +63 -0
  67. package/dist/ui/navigation-menu.d.ts +15 -0
  68. package/dist/ui/navigation-menu.js +162 -0
  69. package/dist/ui/pagination.d.ts +22 -0
  70. package/dist/ui/pagination.js +128 -0
  71. package/dist/ui/popover.js +2 -2
  72. package/dist/ui/questionnaire.d.ts +24 -0
  73. package/dist/ui/questionnaire.js +331 -0
  74. package/dist/ui/radio-group.d.ts +8 -0
  75. package/dist/ui/radio-group.js +39 -0
  76. package/dist/ui/resizable.d.ts +10 -0
  77. package/dist/ui/resizable.js +46 -0
  78. package/dist/ui/scroll-area.js +1 -1
  79. package/dist/ui/select.js +5 -5
  80. package/dist/ui/sheet.js +4 -4
  81. package/dist/ui/sidebar.js +4 -4
  82. package/dist/ui/slider.d.ts +6 -0
  83. package/dist/ui/slider.js +53 -0
  84. package/dist/ui/spinner.d.ts +5 -0
  85. package/dist/ui/spinner.js +9 -0
  86. package/dist/ui/switch.d.ts +8 -0
  87. package/dist/ui/switch.js +32 -0
  88. package/dist/ui/table.js +2 -2
  89. package/dist/ui/tabs.js +1 -1
  90. package/dist/ui/textarea.js +1 -1
  91. package/dist/ui/toast.d.ts +19 -0
  92. package/dist/ui/toast.js +193 -0
  93. package/dist/ui/toggle-group.d.ts +14 -0
  94. package/dist/ui/toggle-group.js +77 -0
  95. package/dist/ui/toggle.d.ts +12 -0
  96. package/dist/ui/toggle.js +43 -0
  97. package/dist/ui/tooltip.js +3 -3
  98. package/docs/CONTRACT.md +113 -0
  99. package/package.json +133 -95
  100. package/scripts/doctor.mjs +142 -0
@@ -0,0 +1,331 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { Questionnaire as QuestionnairePrimitive } from "@shadcn/react/questionnaire";
4
+ import { cn } from "../lib/utils";
5
+ import { buttonVariants } from "./button";
6
+ import { CheckIcon } from "lucide-react";
7
+ function Questionnaire({
8
+ className,
9
+ ...props
10
+ }) {
11
+ return /* @__PURE__ */ jsx(
12
+ QuestionnairePrimitive.Root,
13
+ {
14
+ "data-slot": "questionnaire",
15
+ className: cn("flex w-full min-w-0 flex-col gap-6", className),
16
+ ...props
17
+ }
18
+ );
19
+ }
20
+ function QuestionnaireProgress({
21
+ className,
22
+ ...props
23
+ }) {
24
+ return /* @__PURE__ */ jsx(
25
+ QuestionnairePrimitive.Progress,
26
+ {
27
+ "data-slot": "questionnaire-progress",
28
+ className: cn(
29
+ "min-h-[1lh] w-fit min-w-[14ch] text-xs font-medium text-muted-foreground tabular-nums",
30
+ className
31
+ ),
32
+ ...props
33
+ }
34
+ );
35
+ }
36
+ function QuestionnaireItem({
37
+ className,
38
+ ...props
39
+ }) {
40
+ return /* @__PURE__ */ jsx(
41
+ QuestionnairePrimitive.Item,
42
+ {
43
+ "data-slot": "questionnaire-item",
44
+ className: cn(
45
+ "flex min-w-0 flex-col gap-5 border-0 p-0 outline-none",
46
+ className
47
+ ),
48
+ ...props
49
+ }
50
+ );
51
+ }
52
+ function QuestionnaireTitle({
53
+ className,
54
+ ...props
55
+ }) {
56
+ return /* @__PURE__ */ jsx(
57
+ QuestionnairePrimitive.Title,
58
+ {
59
+ "data-slot": "questionnaire-title",
60
+ className: cn(
61
+ "text-base font-semibold text-pretty [&:not(:has(~[data-slot=questionnaire-description]))]:mb-5",
62
+ className
63
+ ),
64
+ ...props
65
+ }
66
+ );
67
+ }
68
+ function QuestionnaireDescription({
69
+ className,
70
+ ...props
71
+ }) {
72
+ return /* @__PURE__ */ jsx(
73
+ QuestionnairePrimitive.Description,
74
+ {
75
+ "data-slot": "questionnaire-description",
76
+ className: cn("text-sm text-pretty text-muted-foreground", className),
77
+ ...props
78
+ }
79
+ );
80
+ }
81
+ function QuestionnaireChoices({
82
+ className,
83
+ ...props
84
+ }) {
85
+ return /* @__PURE__ */ jsx(
86
+ QuestionnairePrimitive.Choices,
87
+ {
88
+ "data-slot": "questionnaire-choices",
89
+ className: cn(
90
+ "group/questionnaire-choices grid min-w-0 gap-3",
91
+ className
92
+ ),
93
+ ...props
94
+ }
95
+ );
96
+ }
97
+ function QuestionnaireChoice({
98
+ children,
99
+ className,
100
+ ...props
101
+ }) {
102
+ return /* @__PURE__ */ jsxs(
103
+ QuestionnairePrimitive.Choice,
104
+ {
105
+ "data-slot": "questionnaire-choice",
106
+ className: cn(
107
+ "group/questionnaire-choice relative flex min-h-11 cursor-pointer items-start gap-3 rounded-control border border-input px-4 py-3.5 text-start text-sm transition-colors outline-none select-none hover:bg-input/40 has-[>input:focus-visible]:border-ring has-[>input:focus-visible]:ring-(length:--ds-ring-width) has-[>input:focus-visible]:ring-ring/50 data-invalid:border-destructive data-checked:border-primary/40 data-checked:bg-primary/10",
108
+ "data-disabled:pointer-events-none data-disabled:cursor-not-allowed data-disabled:opacity-50",
109
+ className
110
+ ),
111
+ ...props,
112
+ children: [
113
+ /* @__PURE__ */ jsx(
114
+ QuestionnairePrimitive.ChoiceInput,
115
+ {
116
+ "data-slot": "questionnaire-choice-input",
117
+ className: "absolute inset-0 z-(--ds-z-raised) size-full cursor-pointer opacity-0"
118
+ }
119
+ ),
120
+ /* @__PURE__ */ jsxs(
121
+ "span",
122
+ {
123
+ "aria-hidden": "true",
124
+ "data-slot": "questionnaire-choice-indicator",
125
+ className: "pointer-events-none relative flex size-4 shrink-0 translate-y-[--spacing(0.45)] items-center justify-center rounded-[6px] border border-input group-has-data-[slot=questionnaire-choice-description]/questionnaire-choice:translate-y-0.5 group-data-[type=radio]/questionnaire-choice:rounded-full group-data-checked/questionnaire-choice:border-primary group-data-checked/questionnaire-choice:bg-primary group-data-checked/questionnaire-choice:text-primary-foreground dark:bg-input/30 dark:group-data-checked/questionnaire-choice:bg-primary",
126
+ children: [
127
+ /* @__PURE__ */ jsx(
128
+ "span",
129
+ {
130
+ "data-slot": "questionnaire-choice-indicator-dot",
131
+ className: "hidden size-2 rounded-full bg-primary-foreground group-data-[type=checkbox]/questionnaire-choice:hidden group-data-checked/questionnaire-choice:block"
132
+ }
133
+ ),
134
+ /* @__PURE__ */ jsx(CheckIcon, { "data-slot": "questionnaire-choice-indicator-check", className: "hidden size-3.5 group-data-[type=radio]/questionnaire-choice:hidden group-data-checked/questionnaire-choice:block" })
135
+ ]
136
+ }
137
+ ),
138
+ /* @__PURE__ */ jsx(
139
+ QuestionnairePrimitive.ChoiceLabel,
140
+ {
141
+ "data-slot": "questionnaire-choice-label",
142
+ className: "flex min-w-0 flex-1 flex-col gap-1 leading-snug",
143
+ children
144
+ }
145
+ ),
146
+ /* @__PURE__ */ jsx(
147
+ QuestionnairePrimitive.ChoiceShortcut,
148
+ {
149
+ "data-slot": "questionnaire-choice-shortcut",
150
+ className: "pointer-events-none ms-auto hidden size-5 shrink-0 translate-y-[--spacing(0.45)] items-center justify-center rounded-full border border-input bg-background/80 font-mono text-[0.625rem] leading-none font-medium text-muted-foreground group-has-data-[slot=questionnaire-choice-description]/questionnaire-choice:translate-y-0.5 group-data-[shortcut]/questionnaire-choice:inline-flex"
151
+ }
152
+ )
153
+ ]
154
+ }
155
+ );
156
+ }
157
+ function QuestionnaireChoiceDescription({
158
+ className,
159
+ ...props
160
+ }) {
161
+ return /* @__PURE__ */ jsx(
162
+ "span",
163
+ {
164
+ "data-slot": "questionnaire-choice-description",
165
+ className: cn("text-muted-foreground", className),
166
+ ...props
167
+ }
168
+ );
169
+ }
170
+ function QuestionnaireInput({
171
+ className,
172
+ ...props
173
+ }) {
174
+ return /* @__PURE__ */ jsx(
175
+ "div",
176
+ {
177
+ "data-slot": "questionnaire-input-wrapper",
178
+ className: "group/questionnaire-input relative w-full min-w-0",
179
+ children: /* @__PURE__ */ jsx(
180
+ QuestionnairePrimitive.Input,
181
+ {
182
+ "data-slot": "questionnaire-input",
183
+ className: cn(
184
+ "h-9 min-h-11 w-full min-w-0 rounded-control border border-input bg-input/30 px-3 py-1 text-base transition-[color,box-shadow,background-color] outline-none focus-visible:border-ring focus-visible:ring-(length:--ds-ring-width) focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-(length:--ds-ring-width) aria-invalid:ring-destructive/20 sm:min-h-0 md:text-sm dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",
185
+ "selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground",
186
+ className
187
+ ),
188
+ ...props
189
+ }
190
+ )
191
+ }
192
+ );
193
+ }
194
+ function QuestionnaireError({
195
+ className,
196
+ ...props
197
+ }) {
198
+ return /* @__PURE__ */ jsx(
199
+ QuestionnairePrimitive.Error,
200
+ {
201
+ "data-slot": "questionnaire-error",
202
+ className: cn("mt-2 text-sm text-destructive", className),
203
+ ...props
204
+ }
205
+ );
206
+ }
207
+ function QuestionnaireActions({
208
+ className,
209
+ ...props
210
+ }) {
211
+ return /* @__PURE__ */ jsx(
212
+ "div",
213
+ {
214
+ "data-slot": "questionnaire-actions",
215
+ className: cn(
216
+ "grid min-h-11 w-full grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-2 sm:min-h-9",
217
+ className
218
+ ),
219
+ ...props
220
+ }
221
+ );
222
+ }
223
+ function QuestionnairePrevious({
224
+ children,
225
+ className,
226
+ size = "default",
227
+ variant = "outline",
228
+ ...props
229
+ }) {
230
+ return /* @__PURE__ */ jsx(
231
+ QuestionnairePrimitive.Previous,
232
+ {
233
+ "data-slot": "questionnaire-previous",
234
+ "data-size": size,
235
+ "data-variant": variant,
236
+ className: cn(
237
+ buttonVariants({ size, variant }),
238
+ "col-start-1 row-start-1 min-h-11 justify-self-start sm:min-h-0",
239
+ className
240
+ ),
241
+ ...props,
242
+ children: children ?? "Previous"
243
+ }
244
+ );
245
+ }
246
+ function QuestionnaireSkip({
247
+ children,
248
+ className,
249
+ size = "default",
250
+ variant = "outline",
251
+ ...props
252
+ }) {
253
+ return /* @__PURE__ */ jsx(
254
+ QuestionnairePrimitive.Skip,
255
+ {
256
+ "data-slot": "questionnaire-skip",
257
+ "data-size": size,
258
+ "data-variant": variant,
259
+ className: cn(
260
+ buttonVariants({ size, variant }),
261
+ "col-start-2 row-start-1 min-h-11 justify-self-end sm:min-h-0",
262
+ className
263
+ ),
264
+ ...props,
265
+ children: children ?? "Skip"
266
+ }
267
+ );
268
+ }
269
+ function QuestionnaireNext({
270
+ children,
271
+ className,
272
+ size = "default",
273
+ variant = "default",
274
+ ...props
275
+ }) {
276
+ return /* @__PURE__ */ jsx(
277
+ QuestionnairePrimitive.Next,
278
+ {
279
+ "data-slot": "questionnaire-next",
280
+ "data-size": size,
281
+ "data-variant": variant,
282
+ className: cn(
283
+ buttonVariants({ size, variant }),
284
+ "col-start-3 row-start-1 min-h-11 justify-self-end sm:min-h-0",
285
+ className
286
+ ),
287
+ ...props,
288
+ children: children ?? "Next"
289
+ }
290
+ );
291
+ }
292
+ function QuestionnaireSubmit({
293
+ children,
294
+ className,
295
+ size = "default",
296
+ variant = "default",
297
+ ...props
298
+ }) {
299
+ return /* @__PURE__ */ jsx(
300
+ QuestionnairePrimitive.Submit,
301
+ {
302
+ "data-slot": "questionnaire-submit",
303
+ "data-size": size,
304
+ "data-variant": variant,
305
+ className: cn(
306
+ buttonVariants({ size, variant }),
307
+ "col-start-3 row-start-1 min-h-11 justify-self-end sm:min-h-0",
308
+ className
309
+ ),
310
+ ...props,
311
+ children: children ?? "Submit"
312
+ }
313
+ );
314
+ }
315
+ export {
316
+ Questionnaire,
317
+ QuestionnaireActions,
318
+ QuestionnaireChoice,
319
+ QuestionnaireChoiceDescription,
320
+ QuestionnaireChoices,
321
+ QuestionnaireDescription,
322
+ QuestionnaireError,
323
+ QuestionnaireInput,
324
+ QuestionnaireItem,
325
+ QuestionnaireNext,
326
+ QuestionnairePrevious,
327
+ QuestionnaireProgress,
328
+ QuestionnaireSkip,
329
+ QuestionnaireSubmit,
330
+ QuestionnaireTitle
331
+ };
@@ -0,0 +1,8 @@
1
+ import * as React from 'react';
2
+ import { Radio } from '@base-ui/react/radio';
3
+ import { RadioGroup as RadioGroup$1 } from '@base-ui/react/radio-group';
4
+
5
+ declare function RadioGroup({ className, ...props }: RadioGroup$1.Props): React.JSX.Element;
6
+ declare function RadioGroupItem({ className, ...props }: Radio.Root.Props): React.JSX.Element;
7
+
8
+ export { RadioGroup, RadioGroupItem };
@@ -0,0 +1,39 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { Radio as RadioPrimitive } from "@base-ui/react/radio";
3
+ import { RadioGroup as RadioGroupPrimitive } from "@base-ui/react/radio-group";
4
+ import { cn } from "../lib/utils";
5
+ function RadioGroup({ className, ...props }) {
6
+ return /* @__PURE__ */ jsx(
7
+ RadioGroupPrimitive,
8
+ {
9
+ "data-slot": "radio-group",
10
+ className: cn("grid w-full gap-3", className),
11
+ ...props
12
+ }
13
+ );
14
+ }
15
+ function RadioGroupItem({ className, ...props }) {
16
+ return /* @__PURE__ */ jsx(
17
+ RadioPrimitive.Root,
18
+ {
19
+ "data-slot": "radio-group-item",
20
+ className: cn(
21
+ "group/radio-group-item peer relative flex aspect-square size-4 shrink-0 rounded-full border border-input outline-none group-has-[:focus-visible]/field-label:ring-0 group-has-[:focus-visible]/field-label:not-data-checked:border-input after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground group-has-[:focus-visible]/field-label:data-checked:border-primary dark:data-checked:bg-primary",
22
+ className
23
+ ),
24
+ ...props,
25
+ children: /* @__PURE__ */ jsx(
26
+ RadioPrimitive.Indicator,
27
+ {
28
+ "data-slot": "radio-group-indicator",
29
+ className: "flex size-4 items-center justify-center",
30
+ children: /* @__PURE__ */ jsx("span", { className: "absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary-foreground" })
31
+ }
32
+ )
33
+ }
34
+ );
35
+ }
36
+ export {
37
+ RadioGroup,
38
+ RadioGroupItem
39
+ };
@@ -0,0 +1,10 @@
1
+ import * as React from 'react';
2
+ import * as ResizablePrimitive from 'react-resizable-panels';
3
+
4
+ declare function ResizablePanelGroup({ className, ...props }: ResizablePrimitive.GroupProps): React.JSX.Element;
5
+ declare function ResizablePanel({ ...props }: ResizablePrimitive.PanelProps): React.JSX.Element;
6
+ declare function ResizableHandle({ withHandle, className, ...props }: ResizablePrimitive.SeparatorProps & {
7
+ withHandle?: boolean;
8
+ }): React.JSX.Element;
9
+
10
+ export { ResizableHandle, ResizablePanel, ResizablePanelGroup };
@@ -0,0 +1,46 @@
1
+ "use client";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { cn } from "../lib/utils";
4
+ import * as ResizablePrimitive from "react-resizable-panels";
5
+ function ResizablePanelGroup({
6
+ className,
7
+ ...props
8
+ }) {
9
+ return /* @__PURE__ */ jsx(
10
+ ResizablePrimitive.Group,
11
+ {
12
+ "data-slot": "resizable-panel-group",
13
+ className: cn(
14
+ "flex h-full w-full aria-[orientation=vertical]:flex-col",
15
+ className
16
+ ),
17
+ ...props
18
+ }
19
+ );
20
+ }
21
+ function ResizablePanel({ ...props }) {
22
+ return /* @__PURE__ */ jsx(ResizablePrimitive.Panel, { "data-slot": "resizable-panel", ...props });
23
+ }
24
+ function ResizableHandle({
25
+ withHandle,
26
+ className,
27
+ ...props
28
+ }) {
29
+ return /* @__PURE__ */ jsx(
30
+ ResizablePrimitive.Separator,
31
+ {
32
+ "data-slot": "resizable-handle",
33
+ className: cn(
34
+ "relative flex w-px items-center justify-center bg-border ring-offset-background after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90",
35
+ className
36
+ ),
37
+ ...props,
38
+ children: withHandle && /* @__PURE__ */ jsx("div", { className: "z-(--ds-z-raised) flex h-6 w-1 shrink-0 rounded-lg bg-border" })
39
+ }
40
+ );
41
+ }
42
+ export {
43
+ ResizableHandle,
44
+ ResizablePanel,
45
+ ResizablePanelGroup
46
+ };
@@ -17,7 +17,7 @@ function ScrollArea({
17
17
  ScrollAreaPrimitive.Viewport,
18
18
  {
19
19
  "data-slot": "scroll-area-viewport",
20
- className: "size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-(length:--ring-width) focus-visible:ring-ring/50 focus-visible:outline-1",
20
+ className: "size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-(length:--ds-ring-width) focus-visible:ring-ring/50 focus-visible:outline-1",
21
21
  children
22
22
  }
23
23
  ),
package/dist/ui/select.js CHANGED
@@ -28,7 +28,7 @@ function SelectTrigger({
28
28
  "data-slot": "select-trigger",
29
29
  "data-size": size,
30
30
  className: cn(
31
- "flex w-fit items-center justify-between gap-1.5 rounded-control shadow-control border border-input bg-input/30 px-3 py-2 text-sm whitespace-nowrap transition-colors outline-none focus-visible:border-ring focus-visible:ring-(length:--ring-width) focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-(length:--ring-width) aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-(--control-h-md) data-[size=sm]:h-(--control-h-sm) *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
31
+ "flex w-fit items-center justify-between gap-1.5 rounded-control shadow-control border border-input bg-input/30 px-(--ds-field-px) py-2 text-sm whitespace-nowrap transition-colors outline-none focus-visible:border-ring focus-visible:ring-(length:--ds-ring-width) focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-(length:--ds-ring-width) aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-(--ds-control-h-md) data-[size=sm]:h-(--ds-control-h-sm) *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
32
32
  className
33
33
  ),
34
34
  ...props,
@@ -60,7 +60,7 @@ function SelectContent({
60
60
  alignItemWithTrigger,
61
61
  align,
62
62
  className: cn(
63
- "z-(--z-overlay)",
63
+ "z-(--ds-z-overlay)",
64
64
  !alignItemWithTrigger && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1"
65
65
  ),
66
66
  children: /* @__PURE__ */ jsxs(
@@ -69,7 +69,7 @@ function SelectContent({
69
69
  "data-slot": "select-content",
70
70
  "data-align-trigger": alignItemWithTrigger,
71
71
  className: cn(
72
- "relative z-(--z-overlay) max-h-(--available-height) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-2xl bg-popover text-popover-foreground shadow-popover ring-1 ring-foreground/5 duration-(--motion-fast) data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
72
+ "relative z-(--ds-z-overlay) max-h-(--available-height) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-2xl bg-popover text-popover-foreground shadow-popover ring-1 ring-foreground/5 duration-(--ds-motion-fast) data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
73
73
  className
74
74
  ),
75
75
  ...props,
@@ -152,7 +152,7 @@ function SelectScrollUpButton({
152
152
  {
153
153
  "data-slot": "select-scroll-up-button",
154
154
  className: cn(
155
- "z-(--z-raised) flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4",
155
+ "z-(--ds-z-raised) flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4",
156
156
  className
157
157
  ),
158
158
  ...props,
@@ -169,7 +169,7 @@ function SelectScrollDownButton({
169
169
  {
170
170
  "data-slot": "select-scroll-down-button",
171
171
  className: cn(
172
- "z-(--z-raised) flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4",
172
+ "z-(--ds-z-raised) flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4",
173
173
  className
174
174
  ),
175
175
  ...props,
package/dist/ui/sheet.js CHANGED
@@ -22,7 +22,7 @@ function SheetOverlay({ className, ...props }) {
22
22
  {
23
23
  "data-slot": "sheet-overlay",
24
24
  className: cn(
25
- "fixed inset-0 z-(--z-overlay) bg-scrim duration-(--motion-fast) supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",
25
+ "fixed inset-0 z-(--ds-z-overlay) bg-scrim duration-(--ds-motion-fast) supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",
26
26
  className
27
27
  ),
28
28
  ...props
@@ -44,7 +44,7 @@ function SheetContent({
44
44
  "data-slot": "sheet-content",
45
45
  "data-side": side,
46
46
  className: cn(
47
- "fixed z-(--z-overlay) flex flex-col bg-popover bg-clip-padding text-sm text-popover-foreground shadow-overlay transition duration-(--motion-base) ease-in-out data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-[side=bottom]:data-open:slide-in-from-bottom-10 data-[side=left]:data-open:slide-in-from-left-10 data-[side=right]:data-open:slide-in-from-right-10 data-[side=top]:data-open:slide-in-from-top-10 data-closed:animate-out data-closed:fade-out-0 data-[side=bottom]:data-closed:slide-out-to-bottom-10 data-[side=left]:data-closed:slide-out-to-left-10 data-[side=right]:data-closed:slide-out-to-right-10 data-[side=top]:data-closed:slide-out-to-top-10",
47
+ "fixed z-(--ds-z-overlay) flex flex-col bg-popover bg-clip-padding text-sm text-popover-foreground shadow-overlay transition duration-(--ds-motion-base) ease-in-out data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-[side=bottom]:data-open:slide-in-from-bottom-10 data-[side=left]:data-open:slide-in-from-left-10 data-[side=right]:data-open:slide-in-from-right-10 data-[side=top]:data-open:slide-in-from-top-10 data-closed:animate-out data-closed:fade-out-0 data-[side=bottom]:data-closed:slide-out-to-bottom-10 data-[side=left]:data-closed:slide-out-to-left-10 data-[side=right]:data-closed:slide-out-to-right-10 data-[side=top]:data-closed:slide-out-to-top-10",
48
48
  className
49
49
  ),
50
50
  ...props,
@@ -78,7 +78,7 @@ function SheetHeader({ className, ...props }) {
78
78
  "div",
79
79
  {
80
80
  "data-slot": "sheet-header",
81
- className: cn("flex flex-col gap-1.5 p-6", className),
81
+ className: cn("flex flex-col gap-1.5 p-(--ds-overlay-p)", className),
82
82
  ...props
83
83
  }
84
84
  );
@@ -88,7 +88,7 @@ function SheetFooter({ className, ...props }) {
88
88
  "div",
89
89
  {
90
90
  "data-slot": "sheet-footer",
91
- className: cn("mt-auto flex flex-col gap-2 p-6", className),
91
+ className: cn("mt-auto flex flex-col gap-2 p-(--ds-overlay-p)", className),
92
92
  ...props
93
93
  }
94
94
  );
@@ -167,7 +167,7 @@ function Sidebar({
167
167
  {
168
168
  "data-slot": "sidebar-gap",
169
169
  className: cn(
170
- "relative w-(--sidebar-width) bg-transparent transition-[width] duration-(--motion-base) ease-linear",
170
+ "relative w-(--sidebar-width) bg-transparent transition-[width] duration-(--ds-motion-base) ease-linear",
171
171
  "group-data-[collapsible=offcanvas]:w-0",
172
172
  "group-data-[side=right]:rotate-180",
173
173
  variant === "floating" || variant === "inset" ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon)"
@@ -180,7 +180,7 @@ function Sidebar({
180
180
  "data-slot": "sidebar-container",
181
181
  "data-side": side,
182
182
  className: cn(
183
- "fixed inset-y-0 z-(--z-raised) hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-(--motion-base) ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex",
183
+ "fixed inset-y-0 z-(--ds-z-raised) hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-(--ds-motion-base) ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex",
184
184
  // Adjust the padding for floating and inset variants.
185
185
  variant === "floating" || variant === "inset" ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l",
186
186
  className
@@ -239,7 +239,7 @@ function SidebarRail({ className, ...props }) {
239
239
  onClick: toggleSidebar,
240
240
  title: "Toggle Sidebar",
241
241
  className: cn(
242
- "absolute inset-y-0 z-(--z-sticky) hidden w-4 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:start-1/2 after:w-[2px] hover:after:bg-sidebar-border sm:flex ltr:-translate-x-1/2 rtl:-translate-x-1/2",
242
+ "absolute inset-y-0 z-(--ds-z-sticky) hidden w-4 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:start-1/2 after:w-[2px] hover:after:bg-sidebar-border sm:flex ltr:-translate-x-1/2 rtl:-translate-x-1/2",
243
243
  "in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize",
244
244
  "[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize",
245
245
  "group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full hover:group-data-[collapsible=offcanvas]:bg-sidebar",
@@ -353,7 +353,7 @@ function SidebarGroupLabel({
353
353
  {
354
354
  "data-sidebar": "group-label",
355
355
  className: cn(
356
- "flex h-8 shrink-0 items-center rounded-md px-3 text-xs font-medium text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-(--motion-base) ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
356
+ "flex h-8 shrink-0 items-center rounded-md px-3 text-xs font-medium text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-(--ds-motion-base) ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
357
357
  className
358
358
  )
359
359
  },
@@ -0,0 +1,6 @@
1
+ import * as React from 'react';
2
+ import { Slider as Slider$1 } from '@base-ui/react/slider';
3
+
4
+ declare function Slider({ className, defaultValue, value, min, max, ...props }: Slider$1.Root.Props): React.JSX.Element;
5
+
6
+ export { Slider };
@@ -0,0 +1,53 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { Slider as SliderPrimitive } from "@base-ui/react/slider";
3
+ import { cn } from "../lib/utils";
4
+ function Slider({
5
+ className,
6
+ defaultValue,
7
+ value,
8
+ min = 0,
9
+ max = 100,
10
+ ...props
11
+ }) {
12
+ const _values = Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min, max];
13
+ return /* @__PURE__ */ jsx(
14
+ SliderPrimitive.Root,
15
+ {
16
+ className: cn("data-horizontal:w-full data-vertical:h-full", className),
17
+ "data-slot": "slider",
18
+ defaultValue,
19
+ value,
20
+ min,
21
+ max,
22
+ thumbAlignment: "edge",
23
+ ...props,
24
+ children: /* @__PURE__ */ jsxs(SliderPrimitive.Control, { className: "relative flex w-full touch-none items-center select-none data-disabled:opacity-50 data-vertical:h-full data-vertical:min-h-40 data-vertical:w-auto data-vertical:flex-col", children: [
25
+ /* @__PURE__ */ jsx(
26
+ SliderPrimitive.Track,
27
+ {
28
+ "data-slot": "slider-track",
29
+ className: "relative grow overflow-hidden rounded-control bg-muted select-none data-horizontal:h-3 data-horizontal:w-full data-vertical:h-full data-vertical:w-3",
30
+ children: /* @__PURE__ */ jsx(
31
+ SliderPrimitive.Indicator,
32
+ {
33
+ "data-slot": "slider-range",
34
+ className: "bg-primary select-none data-horizontal:h-full data-vertical:w-full"
35
+ }
36
+ )
37
+ }
38
+ ),
39
+ Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */ jsx(
40
+ SliderPrimitive.Thumb,
41
+ {
42
+ "data-slot": "slider-thumb",
43
+ className: "block size-4 shrink-0 rounded-control border border-primary bg-primary-foreground shadow-raised ring-ring/50 transition-colors select-none hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50"
44
+ },
45
+ index
46
+ ))
47
+ ] })
48
+ }
49
+ );
50
+ }
51
+ export {
52
+ Slider
53
+ };
@@ -0,0 +1,5 @@
1
+ import * as React$1 from 'react';
2
+
3
+ declare function Spinner({ className, ...props }: React.ComponentProps<"svg">): React$1.JSX.Element;
4
+
5
+ export { Spinner };
@@ -0,0 +1,9 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { cn } from "../lib/utils";
3
+ import { Loader2Icon } from "lucide-react";
4
+ function Spinner({ className, ...props }) {
5
+ return /* @__PURE__ */ jsx(Loader2Icon, { "data-slot": "spinner", role: "status", "aria-label": "Loading", className: cn("size-4 animate-spin", className), ...props });
6
+ }
7
+ export {
8
+ Spinner
9
+ };
@@ -0,0 +1,8 @@
1
+ import * as React from 'react';
2
+ import { Switch as Switch$1 } from '@base-ui/react/switch';
3
+
4
+ declare function Switch({ className, size, ...props }: Switch$1.Root.Props & {
5
+ size?: "sm" | "default";
6
+ }): React.JSX.Element;
7
+
8
+ export { Switch };