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.
- package/contract.json +38 -0
- package/dist/styles.css +98 -18
- package/dist/themes/qratia.css +13 -13
- package/dist/themes/zyro.css +189 -0
- package/dist/ui/accordion.d.ts +9 -0
- package/dist/ui/accordion.js +79 -0
- package/dist/ui/alert-dialog.d.ts +23 -0
- package/dist/ui/alert-dialog.js +173 -0
- package/dist/ui/alert.d.ts +13 -0
- package/dist/ui/alert.js +77 -0
- package/dist/ui/aspect-ratio.d.ts +7 -0
- package/dist/ui/aspect-ratio.js +22 -0
- package/dist/ui/attachment.d.ts +26 -0
- package/dist/ui/attachment.js +197 -0
- package/dist/ui/avatar.js +1 -1
- package/dist/ui/badge.d.ts +1 -1
- package/dist/ui/badge.js +1 -1
- package/dist/ui/bubble.d.ts +19 -0
- package/dist/ui/bubble.js +115 -0
- package/dist/ui/button-group.d.ts +15 -0
- package/dist/ui/button-group.js +82 -0
- package/dist/ui/button.d.ts +5 -3
- package/dist/ui/button.js +9 -6
- package/dist/ui/calendar.d.ts +15 -0
- package/dist/ui/calendar.js +190 -0
- package/dist/ui/card.js +4 -4
- package/dist/ui/carousel.d.ts +33 -0
- package/dist/ui/carousel.js +199 -0
- package/dist/ui/checkbox.js +1 -1
- package/dist/ui/combobox.d.ts +26 -0
- package/dist/ui/combobox.js +281 -0
- package/dist/ui/command.d.ts +22 -0
- package/dist/ui/command.js +183 -0
- package/dist/ui/context-menu.d.ts +31 -0
- package/dist/ui/context-menu.js +242 -0
- package/dist/ui/dialog.js +2 -2
- package/dist/ui/direction.d.ts +1 -0
- package/dist/ui/direction.js +8 -0
- package/dist/ui/drawer.d.ts +18 -0
- package/dist/ui/drawer.js +208 -0
- package/dist/ui/dropdown-menu.d.ts +1 -1
- package/dist/ui/dropdown-menu.js +13 -9
- package/dist/ui/empty.d.ts +15 -0
- package/dist/ui/empty.js +102 -0
- package/dist/ui/field.d.ts +28 -0
- package/dist/ui/field.js +217 -0
- package/dist/ui/hover-card.d.ts +8 -0
- package/dist/ui/hover-card.js +45 -0
- package/dist/ui/input-group.d.ts +22 -0
- package/dist/ui/input-group.js +145 -0
- package/dist/ui/input-otp.d.ts +13 -0
- package/dist/ui/input-otp.js +82 -0
- package/dist/ui/input.js +1 -1
- package/dist/ui/item.d.ts +26 -0
- package/dist/ui/item.js +195 -0
- package/dist/ui/kbd.d.ts +6 -0
- package/dist/ui/kbd.js +29 -0
- package/dist/ui/marker.d.ts +13 -0
- package/dist/ui/marker.js +71 -0
- package/dist/ui/menubar.d.ts +31 -0
- package/dist/ui/menubar.js +259 -0
- package/dist/ui/message-scroller.d.ts +16 -0
- package/dist/ui/message-scroller.js +120 -0
- package/dist/ui/message.d.ts +12 -0
- package/dist/ui/message.js +90 -0
- package/dist/ui/native-select.d.ts +10 -0
- package/dist/ui/native-select.js +63 -0
- package/dist/ui/navigation-menu.d.ts +15 -0
- package/dist/ui/navigation-menu.js +162 -0
- package/dist/ui/pagination.d.ts +22 -0
- package/dist/ui/pagination.js +128 -0
- package/dist/ui/popover.js +2 -2
- package/dist/ui/questionnaire.d.ts +24 -0
- package/dist/ui/questionnaire.js +331 -0
- package/dist/ui/radio-group.d.ts +8 -0
- package/dist/ui/radio-group.js +39 -0
- package/dist/ui/resizable.d.ts +10 -0
- package/dist/ui/resizable.js +46 -0
- package/dist/ui/scroll-area.js +1 -1
- package/dist/ui/select.js +5 -5
- package/dist/ui/sheet.js +4 -4
- package/dist/ui/sidebar.js +4 -4
- package/dist/ui/slider.d.ts +6 -0
- package/dist/ui/slider.js +53 -0
- package/dist/ui/spinner.d.ts +5 -0
- package/dist/ui/spinner.js +9 -0
- package/dist/ui/switch.d.ts +8 -0
- package/dist/ui/switch.js +32 -0
- package/dist/ui/table.js +2 -2
- package/dist/ui/tabs.js +1 -1
- package/dist/ui/textarea.js +1 -1
- package/dist/ui/toast.d.ts +19 -0
- package/dist/ui/toast.js +193 -0
- package/dist/ui/toggle-group.d.ts +14 -0
- package/dist/ui/toggle-group.js +77 -0
- package/dist/ui/toggle.d.ts +12 -0
- package/dist/ui/toggle.js +43 -0
- package/dist/ui/tooltip.js +3 -3
- package/docs/CONTRACT.md +113 -0
- package/package.json +50 -12
- 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
|
+
};
|
package/dist/ui/scroll-area.js
CHANGED
|
@@ -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-
|
|
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-
|
|
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-
|
|
91
|
+
className: cn("mt-auto flex flex-col gap-2 p-(--ds-overlay-p)", className),
|
|
92
92
|
...props
|
|
93
93
|
}
|
|
94
94
|
);
|
package/dist/ui/sidebar.js
CHANGED
|
@@ -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,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,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,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-
|
|
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-
|
|
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",
|
package/dist/ui/textarea.js
CHANGED
|
@@ -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-
|
|
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 };
|
package/dist/ui/toast.js
ADDED
|
@@ -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 };
|