orbital-ds 0.1.0 → 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 (101) hide show
  1. package/contract.json +38 -0
  2. package/dist/styles.css +98 -18
  3. package/dist/themes/qratia.css +13 -13
  4. package/dist/themes/zyro.css +189 -0
  5. package/dist/ui/accordion.d.ts +9 -0
  6. package/dist/ui/accordion.js +79 -0
  7. package/dist/ui/alert-dialog.d.ts +23 -0
  8. package/dist/ui/alert-dialog.js +173 -0
  9. package/dist/ui/alert.d.ts +13 -0
  10. package/dist/ui/alert.js +77 -0
  11. package/dist/ui/aspect-ratio.d.ts +7 -0
  12. package/dist/ui/aspect-ratio.js +22 -0
  13. package/dist/ui/attachment.d.ts +26 -0
  14. package/dist/ui/attachment.js +197 -0
  15. package/dist/ui/avatar.js +1 -1
  16. package/dist/ui/badge.d.ts +1 -1
  17. package/dist/ui/badge.js +1 -1
  18. package/dist/ui/bubble.d.ts +19 -0
  19. package/dist/ui/bubble.js +115 -0
  20. package/dist/ui/button-group.d.ts +15 -0
  21. package/dist/ui/button-group.js +82 -0
  22. package/dist/ui/button.d.ts +5 -3
  23. package/dist/ui/button.js +9 -6
  24. package/dist/ui/calendar.d.ts +15 -0
  25. package/dist/ui/calendar.js +190 -0
  26. package/dist/ui/card.js +4 -4
  27. package/dist/ui/carousel.d.ts +33 -0
  28. package/dist/ui/carousel.js +199 -0
  29. package/dist/ui/checkbox.js +1 -1
  30. package/dist/ui/combobox.d.ts +26 -0
  31. package/dist/ui/combobox.js +281 -0
  32. package/dist/ui/command.d.ts +22 -0
  33. package/dist/ui/command.js +183 -0
  34. package/dist/ui/context-menu.d.ts +31 -0
  35. package/dist/ui/context-menu.js +242 -0
  36. package/dist/ui/dialog.js +2 -2
  37. package/dist/ui/direction.d.ts +1 -0
  38. package/dist/ui/direction.js +8 -0
  39. package/dist/ui/drawer.d.ts +18 -0
  40. package/dist/ui/drawer.js +208 -0
  41. package/dist/ui/dropdown-menu.d.ts +1 -1
  42. package/dist/ui/dropdown-menu.js +13 -9
  43. package/dist/ui/empty.d.ts +15 -0
  44. package/dist/ui/empty.js +102 -0
  45. package/dist/ui/field.d.ts +28 -0
  46. package/dist/ui/field.js +217 -0
  47. package/dist/ui/hover-card.d.ts +8 -0
  48. package/dist/ui/hover-card.js +45 -0
  49. package/dist/ui/input-group.d.ts +22 -0
  50. package/dist/ui/input-group.js +145 -0
  51. package/dist/ui/input-otp.d.ts +13 -0
  52. package/dist/ui/input-otp.js +82 -0
  53. package/dist/ui/input.js +1 -1
  54. package/dist/ui/item.d.ts +26 -0
  55. package/dist/ui/item.js +195 -0
  56. package/dist/ui/kbd.d.ts +6 -0
  57. package/dist/ui/kbd.js +29 -0
  58. package/dist/ui/marker.d.ts +13 -0
  59. package/dist/ui/marker.js +71 -0
  60. package/dist/ui/menubar.d.ts +31 -0
  61. package/dist/ui/menubar.js +259 -0
  62. package/dist/ui/message-scroller.d.ts +16 -0
  63. package/dist/ui/message-scroller.js +120 -0
  64. package/dist/ui/message.d.ts +12 -0
  65. package/dist/ui/message.js +90 -0
  66. package/dist/ui/native-select.d.ts +10 -0
  67. package/dist/ui/native-select.js +63 -0
  68. package/dist/ui/navigation-menu.d.ts +15 -0
  69. package/dist/ui/navigation-menu.js +162 -0
  70. package/dist/ui/pagination.d.ts +22 -0
  71. package/dist/ui/pagination.js +128 -0
  72. package/dist/ui/popover.js +2 -2
  73. package/dist/ui/questionnaire.d.ts +24 -0
  74. package/dist/ui/questionnaire.js +331 -0
  75. package/dist/ui/radio-group.d.ts +8 -0
  76. package/dist/ui/radio-group.js +39 -0
  77. package/dist/ui/resizable.d.ts +10 -0
  78. package/dist/ui/resizable.js +46 -0
  79. package/dist/ui/scroll-area.js +1 -1
  80. package/dist/ui/select.js +5 -5
  81. package/dist/ui/sheet.js +4 -4
  82. package/dist/ui/sidebar.js +4 -4
  83. package/dist/ui/slider.d.ts +6 -0
  84. package/dist/ui/slider.js +53 -0
  85. package/dist/ui/spinner.d.ts +5 -0
  86. package/dist/ui/spinner.js +9 -0
  87. package/dist/ui/switch.d.ts +8 -0
  88. package/dist/ui/switch.js +32 -0
  89. package/dist/ui/table.js +2 -2
  90. package/dist/ui/tabs.js +1 -1
  91. package/dist/ui/textarea.js +1 -1
  92. package/dist/ui/toast.d.ts +19 -0
  93. package/dist/ui/toast.js +193 -0
  94. package/dist/ui/toggle-group.d.ts +14 -0
  95. package/dist/ui/toggle-group.js +77 -0
  96. package/dist/ui/toggle.d.ts +12 -0
  97. package/dist/ui/toggle.js +43 -0
  98. package/dist/ui/tooltip.js +3 -3
  99. package/docs/CONTRACT.md +113 -0
  100. package/package.json +50 -12
  101. package/scripts/doctor.mjs +142 -0
@@ -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 };
@@ -0,0 +1,32 @@
1
+ "use client";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { Switch as SwitchPrimitive } from "@base-ui/react/switch";
4
+ import { cn } from "../lib/utils";
5
+ function Switch({
6
+ className,
7
+ size = "default",
8
+ ...props
9
+ }) {
10
+ return /* @__PURE__ */ jsx(
11
+ SwitchPrimitive.Root,
12
+ {
13
+ "data-slot": "switch",
14
+ "data-size": size,
15
+ className: cn(
16
+ "peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none group-has-[:focus-visible]/field-label:border-transparent group-has-[:focus-visible]/field-label:ring-0 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-(length:--ds-ring-width) focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-(length:--ds-ring-width) aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50",
17
+ className
18
+ ),
19
+ ...props,
20
+ children: /* @__PURE__ */ jsx(
21
+ SwitchPrimitive.Thumb,
22
+ {
23
+ "data-slot": "switch-thumb",
24
+ className: "pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground"
25
+ }
26
+ )
27
+ }
28
+ );
29
+ }
30
+ export {
31
+ Switch
32
+ };
package/dist/ui/table.js CHANGED
@@ -69,7 +69,7 @@ function TableHead({ className, ...props }) {
69
69
  {
70
70
  "data-slot": "table-head",
71
71
  className: cn(
72
- "h-12 px-3 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0",
72
+ "h-12 px-(--ds-cell-p) text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0",
73
73
  className
74
74
  ),
75
75
  ...props
@@ -82,7 +82,7 @@ function TableCell({ className, ...props }) {
82
82
  {
83
83
  "data-slot": "table-cell",
84
84
  className: cn(
85
- "p-3 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0",
85
+ "p-(--ds-cell-p) align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0",
86
86
  className
87
87
  ),
88
88
  ...props
package/dist/ui/tabs.js CHANGED
@@ -56,7 +56,7 @@ function TabsTrigger({ className, ...props }) {
56
56
  {
57
57
  "data-slot": "tabs-trigger",
58
58
  className: cn(
59
- "relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-xl border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start group-data-[orientation=vertical]/tabs:px-2.5 group-data-[orientation=vertical]/tabs:py-1.5 hover:text-foreground focus-visible:border-ring focus-visible:ring-(length:--ring-width) focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 dark:text-muted-foreground dark:hover:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
59
+ "relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-xl border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start group-data-[orientation=vertical]/tabs:px-2.5 group-data-[orientation=vertical]/tabs:py-1.5 hover:text-foreground focus-visible:border-ring focus-visible:ring-(length:--ds-ring-width) focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 dark:text-muted-foreground dark:hover:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
60
60
  "group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent",
61
61
  "data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground",
62
62
  "after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100",
@@ -6,7 +6,7 @@ function Textarea({ className, ...props }) {
6
6
  {
7
7
  "data-slot": "textarea",
8
8
  className: cn(
9
- "min-h-16 w-full min-w-0 rounded-md border border-input bg-input/30 px-3 py-2 text-base transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-(length:--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:--ring-width) aria-invalid:ring-destructive/20 md:text-sm dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",
9
+ "min-h-16 w-full min-w-0 rounded-md border border-input bg-input/30 px-(--ds-field-px) py-2 text-base transition-colors outline-none placeholder:text-muted-foreground 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 md:text-sm dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",
10
10
  className
11
11
  ),
12
12
  ...props
@@ -0,0 +1,19 @@
1
+ import * as _base_ui_react from '@base-ui/react';
2
+ import * as React from 'react';
3
+ import { Toast as Toast$1 } from '@base-ui/react/toast';
4
+
5
+ declare const toast: _base_ui_react.ToastManager<any>;
6
+ declare function ToastProvider({ ...props }: Toast$1.Provider.Props): React.JSX.Element;
7
+ declare function ToastPortal({ ...props }: Toast$1.Portal.Props): React.JSX.Element;
8
+ declare function ToastViewport({ className, ...props }: Toast$1.Viewport.Props): React.JSX.Element;
9
+ declare function Toast({ className, ...props }: Toast$1.Root.Props): React.JSX.Element;
10
+ declare function ToastContent({ className, ...props }: Toast$1.Content.Props): React.JSX.Element;
11
+ declare function ToastTitle({ className, ...props }: Toast$1.Title.Props): React.JSX.Element;
12
+ declare function ToastDescription({ className, ...props }: Toast$1.Description.Props): React.JSX.Element;
13
+ declare function ToastAction({ className, render, ...props }: Toast$1.Action.Props): React.JSX.Element;
14
+ declare function ToastClose({ className, children, render, ...props }: Toast$1.Close.Props): React.JSX.Element;
15
+ declare function Toaster({ children, toastManager, ...props }: Toast$1.Provider.Props): React.JSX.Element;
16
+ declare const createToastManager: typeof Toast$1.createToastManager;
17
+ declare const useToastManager: typeof Toast$1.useToastManager;
18
+
19
+ export { Toast, ToastAction, ToastClose, ToastContent, ToastDescription, ToastPortal, ToastProvider, ToastTitle, ToastViewport, Toaster, createToastManager, toast, useToastManager };
@@ -0,0 +1,193 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { Toast as ToastPrimitive } from "@base-ui/react/toast";
4
+ import { cn } from "../lib/utils";
5
+ import { Button } from "./button";
6
+ import { XIcon, CircleCheckIcon, InfoIcon, TriangleAlertIcon, OctagonXIcon, Loader2Icon } from "lucide-react";
7
+ const toast = ToastPrimitive.createToastManager();
8
+ function ToastProvider({ ...props }) {
9
+ return /* @__PURE__ */ jsx(ToastPrimitive.Provider, { ...props });
10
+ }
11
+ function ToastPortal({ ...props }) {
12
+ return /* @__PURE__ */ jsx(ToastPrimitive.Portal, { "data-slot": "toast-portal", ...props });
13
+ }
14
+ function ToastViewport({ className, ...props }) {
15
+ return /* @__PURE__ */ jsx(
16
+ ToastPrimitive.Viewport,
17
+ {
18
+ "data-slot": "toast-viewport",
19
+ className: cn(
20
+ "pointer-events-none fixed inset-x-4 bottom-4 z-(--ds-z-overlay) mx-auto w-auto max-w-sm outline-none sm:right-4 sm:left-auto sm:mx-0 sm:w-full",
21
+ className
22
+ ),
23
+ ...props
24
+ }
25
+ );
26
+ }
27
+ function Toast({ className, ...props }) {
28
+ return /* @__PURE__ */ jsx(
29
+ ToastPrimitive.Root,
30
+ {
31
+ "data-slot": "toast",
32
+ className: cn(
33
+ "group/toast pointer-events-auto absolute right-0 bottom-0 z-[calc(1000-var(--toast-index))] w-full origin-bottom rounded-2xl border bg-popover text-popover-foreground shadow-overlay will-change-transform outline-none select-none focus-visible:border-ring focus-visible:ring-(length:--ds-ring-width) focus-visible:ring-ring/50",
34
+ "[--gap:0.75rem] [--height:var(--toast-frontmost-height,var(--toast-height))] [--offset-y:calc(var(--toast-offset-y)*-1+calc(var(--toast-index)*var(--gap)*-1)+var(--toast-swipe-movement-y))] [--peek:0.75rem] [--scale:calc(max(0,1-(var(--toast-index)*0.1)))] [--shrink:calc(1-var(--scale))]",
35
+ "h-(--height) [transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)-(var(--toast-index)*var(--peek))-(var(--shrink)*var(--height))))_scale(var(--scale))] [transition:transform_500ms_cubic-bezier(0.22,1,0.36,1),opacity_500ms,height_150ms]",
36
+ "after:absolute after:top-full after:left-0 after:h-[calc(var(--gap)+1px)] after:w-full after:content-['']",
37
+ "data-expanded:h-(--toast-height) data-expanded:[transform:translateX(var(--toast-swipe-movement-x))_translateY(var(--offset-y))]",
38
+ "data-limited:opacity-0 data-starting-style:[transform:translateY(150%)]",
39
+ "[&[data-ending-style]:not([data-limited]):not([data-swipe-direction])]:[transform:translateY(150%)]",
40
+ "data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]",
41
+ "data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))]",
42
+ "data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]",
43
+ "data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))]",
44
+ "data-expanded:data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]",
45
+ "data-expanded:data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))]",
46
+ "data-expanded:data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]",
47
+ "data-expanded:data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))]",
48
+ className
49
+ ),
50
+ ...props
51
+ }
52
+ );
53
+ }
54
+ function ToastContent({ className, ...props }) {
55
+ return /* @__PURE__ */ jsx(
56
+ ToastPrimitive.Content,
57
+ {
58
+ "data-slot": "toast-content",
59
+ className: cn(
60
+ "flex h-full items-center gap-3 overflow-hidden p-4 transition-opacity duration-(--ds-motion-base) ease-[cubic-bezier(0.22,1,0.36,1)] data-behind:opacity-0 data-expanded:opacity-100",
61
+ className
62
+ ),
63
+ ...props
64
+ }
65
+ );
66
+ }
67
+ function ToastTitle({ className, ...props }) {
68
+ return /* @__PURE__ */ jsx(
69
+ ToastPrimitive.Title,
70
+ {
71
+ "data-slot": "toast-title",
72
+ className: cn("text-sm font-medium", className),
73
+ ...props
74
+ }
75
+ );
76
+ }
77
+ function ToastDescription({
78
+ className,
79
+ ...props
80
+ }) {
81
+ return /* @__PURE__ */ jsx(
82
+ ToastPrimitive.Description,
83
+ {
84
+ "data-slot": "toast-description",
85
+ className: cn("text-sm text-muted-foreground", className),
86
+ ...props
87
+ }
88
+ );
89
+ }
90
+ function ToastAction({
91
+ className,
92
+ render = /* @__PURE__ */ jsx(Button, { variant: "outline", size: "sm" }),
93
+ ...props
94
+ }) {
95
+ return /* @__PURE__ */ jsx(
96
+ ToastPrimitive.Action,
97
+ {
98
+ "data-slot": "toast-action",
99
+ render,
100
+ className: cn("shrink-0", className),
101
+ ...props
102
+ }
103
+ );
104
+ }
105
+ function ToastClose({
106
+ className,
107
+ children,
108
+ render = /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "icon-sm" }),
109
+ ...props
110
+ }) {
111
+ return /* @__PURE__ */ jsx(
112
+ ToastPrimitive.Close,
113
+ {
114
+ "data-slot": "toast-close",
115
+ "aria-label": "Close toast",
116
+ render,
117
+ className: cn(
118
+ "relative shrink-0 text-muted-foreground after:absolute after:-inset-2 after:content-[''] hover:text-foreground",
119
+ className
120
+ ),
121
+ ...props,
122
+ children: children ?? /* @__PURE__ */ jsx(XIcon, { "aria-hidden": "true" })
123
+ }
124
+ );
125
+ }
126
+ function ToastIcon({ type }) {
127
+ let icon = null;
128
+ if (type === "success") {
129
+ icon = /* @__PURE__ */ jsx(CircleCheckIcon, { "aria-hidden": "true" });
130
+ }
131
+ if (type === "info") {
132
+ icon = /* @__PURE__ */ jsx(InfoIcon, { "aria-hidden": "true" });
133
+ }
134
+ if (type === "warning") {
135
+ icon = /* @__PURE__ */ jsx(TriangleAlertIcon, { "aria-hidden": "true" });
136
+ }
137
+ if (type === "error") {
138
+ icon = /* @__PURE__ */ jsx(OctagonXIcon, { className: "text-destructive", "aria-hidden": "true" });
139
+ }
140
+ if (type === "loading") {
141
+ icon = /* @__PURE__ */ jsx(Loader2Icon, { className: "animate-spin", "aria-hidden": "true" });
142
+ }
143
+ if (!icon) {
144
+ return null;
145
+ }
146
+ return /* @__PURE__ */ jsx(
147
+ "span",
148
+ {
149
+ "data-slot": "toast-icon",
150
+ className: "shrink-0 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",
151
+ children: icon
152
+ }
153
+ );
154
+ }
155
+ function ToastList() {
156
+ const { toasts } = ToastPrimitive.useToastManager();
157
+ return toasts.map((toastItem) => /* @__PURE__ */ jsx(Toast, { toast: toastItem, children: /* @__PURE__ */ jsxs(ToastContent, { children: [
158
+ /* @__PURE__ */ jsx(ToastIcon, { type: toastItem.type }),
159
+ /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [
160
+ /* @__PURE__ */ jsx(ToastTitle, {}),
161
+ /* @__PURE__ */ jsx(ToastDescription, {})
162
+ ] }),
163
+ /* @__PURE__ */ jsx(ToastAction, {}),
164
+ /* @__PURE__ */ jsx(ToastClose, {})
165
+ ] }) }, toastItem.id));
166
+ }
167
+ function Toaster({
168
+ children,
169
+ toastManager = toast,
170
+ ...props
171
+ }) {
172
+ return /* @__PURE__ */ jsxs(ToastProvider, { toastManager, ...props, children: [
173
+ children,
174
+ /* @__PURE__ */ jsx(ToastPortal, { children: /* @__PURE__ */ jsx(ToastViewport, { children: /* @__PURE__ */ jsx(ToastList, {}) }) })
175
+ ] });
176
+ }
177
+ const createToastManager = ToastPrimitive.createToastManager;
178
+ const useToastManager = ToastPrimitive.useToastManager;
179
+ export {
180
+ Toast,
181
+ ToastAction,
182
+ ToastClose,
183
+ ToastContent,
184
+ ToastDescription,
185
+ ToastPortal,
186
+ ToastProvider,
187
+ ToastTitle,
188
+ ToastViewport,
189
+ Toaster,
190
+ createToastManager,
191
+ toast,
192
+ useToastManager
193
+ };
@@ -0,0 +1,14 @@
1
+ import * as React from 'react';
2
+ import { Toggle } from '@base-ui/react/toggle';
3
+ import { ToggleGroup as ToggleGroup$1 } from '@base-ui/react/toggle-group';
4
+ import { VariantProps } from 'class-variance-authority';
5
+ import { toggleVariants } from './toggle.js';
6
+ import 'class-variance-authority/types';
7
+
8
+ declare function ToggleGroup({ className, variant, size, spacing, orientation, children, ...props }: ToggleGroup$1.Props & VariantProps<typeof toggleVariants> & {
9
+ spacing?: number;
10
+ orientation?: "horizontal" | "vertical";
11
+ }): React.JSX.Element;
12
+ declare function ToggleGroupItem({ className, children, variant, size, ...props }: Toggle.Props & VariantProps<typeof toggleVariants>): React.JSX.Element;
13
+
14
+ export { ToggleGroup, ToggleGroupItem };