@timbal-ai/timbal-react 0.8.2 → 1.1.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/CHANGELOG.md +49 -0
- package/README.md +100 -6
- package/dist/app.cjs +2538 -1262
- package/dist/app.d.cts +11 -6
- package/dist/app.d.ts +11 -6
- package/dist/app.esm.js +43 -6
- package/dist/{button-ClSgD6OF.d.cts → button-BoyX5pM_.d.cts} +1 -1
- package/dist/{button-ClSgD6OF.d.ts → button-BoyX5pM_.d.ts} +1 -1
- package/dist/{chart-artifact-Bl67kre7.d.ts → chart-artifact-BZp7nmaf.d.ts} +430 -14
- package/dist/{chart-artifact-BzcvblDe.d.cts → chart-artifact-CX-rh9nq.d.cts} +430 -14
- package/dist/{chat-Bed4FQSl.d.cts → chat-DCms8pJ_.d.cts} +31 -4
- package/dist/{chat-Bed4FQSl.d.ts → chat-DCms8pJ_.d.ts} +31 -4
- package/dist/chat.cjs +1111 -776
- package/dist/chat.d.cts +1 -1
- package/dist/chat.d.ts +1 -1
- package/dist/chat.esm.js +3 -3
- package/dist/{chunk-QVAUCVQA.esm.js → chunk-4AKJ6FKE.esm.js} +277 -4
- package/dist/chunk-6HWMJNZT.esm.js +3439 -0
- package/dist/{chunk-VWHHKAHN.esm.js → chunk-FRZOEYBO.esm.js} +4 -4
- package/dist/chunk-JEAUF54A.esm.js +52 -0
- package/dist/{chunk-OISVICYF.esm.js → chunk-P3KDAYX6.esm.js} +1 -1
- package/dist/{chunk-6YVKCVEP.esm.js → chunk-TK2AGIME.esm.js} +1106 -298
- package/dist/{chunk-CFU3YDTV.esm.js → chunk-XCM3V6RK.esm.js} +5 -5
- package/dist/{chunk-5ZKLPWVN.esm.js → chunk-YXZ22OJN.esm.js} +849 -667
- package/dist/index.cjs +6070 -1605
- package/dist/index.d.cts +8 -6
- package/dist/index.d.ts +8 -6
- package/dist/index.esm.js +427 -11
- package/dist/pill-segmented-tabs-Ba5q0feL.d.cts +500 -0
- package/dist/pill-segmented-tabs-Ba5q0feL.d.ts +500 -0
- package/dist/studio.cjs +1333 -998
- package/dist/studio.d.cts +2 -2
- package/dist/studio.d.ts +2 -2
- package/dist/studio.esm.js +5 -5
- package/dist/styles.css +220 -0
- package/dist/ui.cjs +3592 -89
- package/dist/ui.d.cts +72 -96
- package/dist/ui.d.ts +72 -96
- package/dist/ui.esm.js +400 -6
- package/dist/{welcome-COOb05a5.d.cts → welcome-CRqOPKMp.d.cts} +1 -1
- package/dist/{welcome-DE08m9ca.d.ts → welcome-DlHUa3OL.d.ts} +1 -1
- package/package.json +9 -3
- package/dist/chunk-P4SN7M67.esm.js +0 -435
package/dist/ui.cjs
CHANGED
|
@@ -30,10 +30,96 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
30
30
|
// src/ui.ts
|
|
31
31
|
var ui_exports = {};
|
|
32
32
|
__export(ui_exports, {
|
|
33
|
+
Accordion: () => Accordion,
|
|
34
|
+
AccordionContent: () => AccordionContent,
|
|
35
|
+
AccordionItem: () => AccordionItem,
|
|
36
|
+
AccordionTrigger: () => AccordionTrigger,
|
|
37
|
+
Alert: () => Alert,
|
|
38
|
+
AlertDescription: () => AlertDescription,
|
|
39
|
+
AlertDialog: () => AlertDialog,
|
|
40
|
+
AlertDialogAction: () => AlertDialogAction,
|
|
41
|
+
AlertDialogCancel: () => AlertDialogCancel,
|
|
42
|
+
AlertDialogContent: () => AlertDialogContent,
|
|
43
|
+
AlertDialogDescription: () => AlertDialogDescription,
|
|
44
|
+
AlertDialogFooter: () => AlertDialogFooter,
|
|
45
|
+
AlertDialogHeader: () => AlertDialogHeader,
|
|
46
|
+
AlertDialogOverlay: () => AlertDialogOverlay,
|
|
47
|
+
AlertDialogPortal: () => AlertDialogPortal,
|
|
48
|
+
AlertDialogTitle: () => AlertDialogTitle,
|
|
49
|
+
AlertDialogTrigger: () => AlertDialogTrigger,
|
|
50
|
+
AlertTitle: () => AlertTitle,
|
|
51
|
+
AspectRatio: () => AspectRatio,
|
|
33
52
|
Avatar: () => Avatar,
|
|
34
53
|
AvatarFallback: () => AvatarFallback,
|
|
35
54
|
AvatarImage: () => AvatarImage,
|
|
55
|
+
Badge: () => Badge,
|
|
56
|
+
Breadcrumb: () => Breadcrumb,
|
|
57
|
+
BreadcrumbEllipsis: () => BreadcrumbEllipsis,
|
|
58
|
+
BreadcrumbItem: () => BreadcrumbItem,
|
|
59
|
+
BreadcrumbLink: () => BreadcrumbLink,
|
|
60
|
+
BreadcrumbList: () => BreadcrumbList,
|
|
61
|
+
BreadcrumbPage: () => BreadcrumbPage,
|
|
62
|
+
BreadcrumbSeparator: () => BreadcrumbSeparator,
|
|
36
63
|
Button: () => Button,
|
|
64
|
+
CONTROL_SIZE: () => CONTROL_SIZE,
|
|
65
|
+
Calendar: () => Calendar,
|
|
66
|
+
CalendarDayButton: () => CalendarDayButton,
|
|
67
|
+
Card: () => Card,
|
|
68
|
+
CardContent: () => CardContent,
|
|
69
|
+
CardDescription: () => CardDescription,
|
|
70
|
+
CardFooter: () => CardFooter,
|
|
71
|
+
CardHeader: () => CardHeader,
|
|
72
|
+
CardTitle: () => CardTitle,
|
|
73
|
+
ChartContainer: () => ChartContainer,
|
|
74
|
+
ChartLegend: () => ChartLegend,
|
|
75
|
+
ChartLegendContent: () => ChartLegendContent,
|
|
76
|
+
ChartStyle: () => ChartStyle,
|
|
77
|
+
ChartTooltip: () => ChartTooltip,
|
|
78
|
+
ChartTooltipContent: () => ChartTooltipContent,
|
|
79
|
+
Checkbox: () => Checkbox,
|
|
80
|
+
Collapsible: () => Collapsible,
|
|
81
|
+
CollapsibleContent: () => CollapsibleContent,
|
|
82
|
+
CollapsibleTrigger: () => CollapsibleTrigger,
|
|
83
|
+
Combobox: () => Combobox,
|
|
84
|
+
ComboboxAnchor: () => ComboboxAnchor,
|
|
85
|
+
ComboboxCommand: () => ComboboxCommand,
|
|
86
|
+
ComboboxContent: () => ComboboxContent,
|
|
87
|
+
ComboboxEmpty: () => ComboboxEmpty,
|
|
88
|
+
ComboboxGroup: () => ComboboxGroup,
|
|
89
|
+
ComboboxInput: () => ComboboxInput,
|
|
90
|
+
ComboboxItem: () => ComboboxItem,
|
|
91
|
+
ComboboxList: () => ComboboxList,
|
|
92
|
+
ComboboxSeparator: () => ComboboxSeparator,
|
|
93
|
+
ComboboxShortcut: () => ComboboxShortcut,
|
|
94
|
+
ComboboxTrigger: () => ComboboxTrigger,
|
|
95
|
+
Command: () => Command,
|
|
96
|
+
CommandDialog: () => CommandDialog,
|
|
97
|
+
CommandEmpty: () => CommandEmpty,
|
|
98
|
+
CommandGroup: () => CommandGroup,
|
|
99
|
+
CommandInput: () => CommandInput,
|
|
100
|
+
CommandItem: () => CommandItem,
|
|
101
|
+
CommandList: () => CommandList,
|
|
102
|
+
CommandSeparator: () => CommandSeparator,
|
|
103
|
+
CommandShortcut: () => CommandShortcut,
|
|
104
|
+
ContextMenu: () => ContextMenu,
|
|
105
|
+
ContextMenuCheckboxItem: () => ContextMenuCheckboxItem,
|
|
106
|
+
ContextMenuContent: () => ContextMenuContent,
|
|
107
|
+
ContextMenuGroup: () => ContextMenuGroup,
|
|
108
|
+
ContextMenuItem: () => ContextMenuItem,
|
|
109
|
+
ContextMenuLabel: () => ContextMenuLabel,
|
|
110
|
+
ContextMenuRadioGroup: () => ContextMenuRadioGroup,
|
|
111
|
+
ContextMenuRadioItem: () => ContextMenuRadioItem,
|
|
112
|
+
ContextMenuSeparator: () => ContextMenuSeparator,
|
|
113
|
+
ContextMenuShortcut: () => ContextMenuShortcut,
|
|
114
|
+
ContextMenuSub: () => ContextMenuSub,
|
|
115
|
+
ContextMenuSubContent: () => ContextMenuSubContent,
|
|
116
|
+
ContextMenuSubTrigger: () => ContextMenuSubTrigger,
|
|
117
|
+
ContextMenuTrigger: () => ContextMenuTrigger,
|
|
118
|
+
DatePicker: () => DatePicker,
|
|
119
|
+
DatePickerButton: () => DatePickerButton,
|
|
120
|
+
DatePickerCalendar: () => DatePickerCalendar,
|
|
121
|
+
DatePickerContent: () => DatePickerContent,
|
|
122
|
+
DatePickerTrigger: () => DatePickerTrigger,
|
|
37
123
|
Dialog: () => Dialog,
|
|
38
124
|
DialogClose: () => DialogClose,
|
|
39
125
|
DialogContent: () => DialogContent,
|
|
@@ -58,12 +144,69 @@ __export(ui_exports, {
|
|
|
58
144
|
DropdownMenuSubContent: () => DropdownMenuSubContent,
|
|
59
145
|
DropdownMenuSubTrigger: () => DropdownMenuSubTrigger,
|
|
60
146
|
DropdownMenuTrigger: () => DropdownMenuTrigger,
|
|
147
|
+
Form: () => Form,
|
|
148
|
+
FormControl: () => FormControl,
|
|
149
|
+
FormField: () => FormField,
|
|
150
|
+
FormItem: () => FormItem,
|
|
151
|
+
FormLabel: () => FormLabel,
|
|
152
|
+
FormMessage: () => FormMessage,
|
|
153
|
+
FormSubmit: () => FormSubmit,
|
|
154
|
+
HoverCard: () => HoverCard,
|
|
155
|
+
HoverCardContent: () => HoverCardContent,
|
|
156
|
+
HoverCardTrigger: () => HoverCardTrigger,
|
|
157
|
+
Input: () => Input,
|
|
158
|
+
InputGroup: () => InputGroup,
|
|
159
|
+
InputGroupAddon: () => InputGroupAddon,
|
|
160
|
+
InputGroupInput: () => InputGroupInput,
|
|
161
|
+
InputGroupText: () => InputGroupText,
|
|
162
|
+
InputOTP: () => InputOTP,
|
|
163
|
+
InputOTPGroup: () => InputOTPGroup,
|
|
164
|
+
InputOTPHiddenInput: () => InputOTPHiddenInput,
|
|
165
|
+
InputOTPSeparator: () => InputOTPSeparator,
|
|
166
|
+
InputOTPSlot: () => InputOTPSlot,
|
|
167
|
+
Kbd: () => Kbd,
|
|
168
|
+
KbdGroup: () => KbdGroup,
|
|
169
|
+
Label: () => Label,
|
|
61
170
|
MemoPillSegmentedTabs: () => MemoPillSegmentedTabs,
|
|
171
|
+
Menubar: () => Menubar,
|
|
172
|
+
MenubarCheckboxItem: () => MenubarCheckboxItem,
|
|
173
|
+
MenubarContent: () => MenubarContent,
|
|
174
|
+
MenubarItem: () => MenubarItem,
|
|
175
|
+
MenubarLabel: () => MenubarLabel,
|
|
176
|
+
MenubarMenu: () => MenubarMenu,
|
|
177
|
+
MenubarRadioGroup: () => MenubarRadioGroup,
|
|
178
|
+
MenubarRadioItem: () => MenubarRadioItem,
|
|
179
|
+
MenubarSeparator: () => MenubarSeparator,
|
|
180
|
+
MenubarShortcut: () => MenubarShortcut,
|
|
181
|
+
MenubarSub: () => MenubarSub,
|
|
182
|
+
MenubarSubContent: () => MenubarSubContent,
|
|
183
|
+
MenubarSubTrigger: () => MenubarSubTrigger,
|
|
184
|
+
MenubarTrigger: () => MenubarTrigger,
|
|
185
|
+
NavigationMenu: () => NavigationMenu,
|
|
186
|
+
NavigationMenuContent: () => NavigationMenuContent,
|
|
187
|
+
NavigationMenuIndicator: () => NavigationMenuIndicator,
|
|
188
|
+
NavigationMenuItem: () => NavigationMenuItem,
|
|
189
|
+
NavigationMenuLink: () => NavigationMenuLink,
|
|
190
|
+
NavigationMenuList: () => NavigationMenuList,
|
|
191
|
+
NavigationMenuTrigger: () => NavigationMenuTrigger,
|
|
192
|
+
NavigationMenuViewport: () => NavigationMenuViewport,
|
|
193
|
+
Pagination: () => Pagination,
|
|
194
|
+
PaginationContent: () => PaginationContent,
|
|
195
|
+
PaginationEllipsis: () => PaginationEllipsis,
|
|
196
|
+
PaginationItem: () => PaginationItem,
|
|
197
|
+
PaginationLink: () => PaginationLink,
|
|
198
|
+
PaginationNext: () => PaginationNext,
|
|
199
|
+
PaginationPrevious: () => PaginationPrevious,
|
|
62
200
|
PillSegmentedTabs: () => PillSegmentedTabs,
|
|
63
201
|
Popover: () => Popover,
|
|
64
202
|
PopoverAnchor: () => PopoverAnchor,
|
|
65
203
|
PopoverContent: () => PopoverContent,
|
|
66
204
|
PopoverTrigger: () => PopoverTrigger,
|
|
205
|
+
Progress: () => Progress,
|
|
206
|
+
RadioGroup: () => RadioGroup,
|
|
207
|
+
RadioGroupItem: () => RadioGroupItem,
|
|
208
|
+
ScrollArea: () => ScrollArea,
|
|
209
|
+
ScrollBar: () => ScrollBar,
|
|
67
210
|
Select: () => Select,
|
|
68
211
|
SelectContent: () => SelectContent,
|
|
69
212
|
SelectGroup: () => SelectGroup,
|
|
@@ -74,12 +217,65 @@ __export(ui_exports, {
|
|
|
74
217
|
SelectSeparator: () => SelectSeparator,
|
|
75
218
|
SelectTrigger: () => SelectTrigger,
|
|
76
219
|
SelectValue: () => SelectValue,
|
|
220
|
+
Separator: () => Separator,
|
|
221
|
+
Sheet: () => Sheet,
|
|
222
|
+
SheetClose: () => SheetClose,
|
|
223
|
+
SheetContent: () => SheetContent,
|
|
224
|
+
SheetDescription: () => SheetDescription,
|
|
225
|
+
SheetFooter: () => SheetFooter,
|
|
226
|
+
SheetHeader: () => SheetHeader,
|
|
227
|
+
SheetTitle: () => SheetTitle,
|
|
228
|
+
SheetTrigger: () => SheetTrigger,
|
|
77
229
|
Shimmer: () => Shimmer,
|
|
230
|
+
Skeleton: () => Skeleton,
|
|
231
|
+
Slider: () => Slider,
|
|
232
|
+
Spinner: () => Spinner,
|
|
233
|
+
Switch: () => Switch,
|
|
234
|
+
Table: () => Table,
|
|
235
|
+
TableBody: () => TableBody,
|
|
236
|
+
TableCaption: () => TableCaption,
|
|
237
|
+
TableCell: () => TableCell,
|
|
238
|
+
TableFooter: () => TableFooter,
|
|
239
|
+
TableHead: () => TableHead,
|
|
240
|
+
TableHeader: () => TableHeader,
|
|
241
|
+
TableRow: () => TableRow,
|
|
242
|
+
Textarea: () => Textarea,
|
|
78
243
|
TimbalV2Button: () => TimbalV2Button,
|
|
244
|
+
Toast: () => Toast,
|
|
245
|
+
ToastAction: () => ToastAction,
|
|
246
|
+
ToastClose: () => ToastClose,
|
|
247
|
+
ToastDescription: () => ToastDescription,
|
|
248
|
+
ToastProvider: () => ToastProvider,
|
|
249
|
+
ToastTitle: () => ToastTitle,
|
|
250
|
+
ToastViewport: () => ToastViewport,
|
|
251
|
+
Toaster: () => Toaster,
|
|
252
|
+
Toggle: () => Toggle,
|
|
253
|
+
ToggleGroup: () => ToggleGroup,
|
|
254
|
+
ToggleGroupItem: () => ToggleGroupItem,
|
|
255
|
+
Toolbar: () => Toolbar,
|
|
256
|
+
ToolbarButton: () => ToolbarButton,
|
|
257
|
+
ToolbarLink: () => ToolbarLink,
|
|
258
|
+
ToolbarSeparator: () => ToolbarSeparator,
|
|
259
|
+
ToolbarToggleGroup: () => ToolbarToggleGroup,
|
|
260
|
+
ToolbarToggleItem: () => ToolbarToggleItem,
|
|
79
261
|
Tooltip: () => Tooltip,
|
|
80
262
|
TooltipContent: () => TooltipContent,
|
|
81
263
|
TooltipProvider: () => TooltipProvider,
|
|
82
|
-
TooltipTrigger: () => TooltipTrigger
|
|
264
|
+
TooltipTrigger: () => TooltipTrigger,
|
|
265
|
+
alertVariants: () => alertVariants,
|
|
266
|
+
badgeVariants: () => badgeVariants,
|
|
267
|
+
controlClass: () => controlClass,
|
|
268
|
+
controlSurfaceClass: () => controlSurfaceClass,
|
|
269
|
+
formatPickerDate: () => formatPickerDate,
|
|
270
|
+
navigationMenuTriggerStyle: () => navigationMenuTriggerStyle,
|
|
271
|
+
overlayAnimationClass: () => overlayAnimationClass,
|
|
272
|
+
overlayItemClass: () => overlayItemClass,
|
|
273
|
+
overlayListPanelClass: () => overlayListPanelClass,
|
|
274
|
+
overlaySurfaceClass: () => overlaySurfaceClass,
|
|
275
|
+
toast: () => toast,
|
|
276
|
+
toggleVariants: () => toggleVariants,
|
|
277
|
+
useChart: () => useChart,
|
|
278
|
+
useToast: () => useToast
|
|
83
279
|
});
|
|
84
280
|
module.exports = __toCommonJS(ui_exports);
|
|
85
281
|
|
|
@@ -626,6 +822,41 @@ function DialogFooter({ className, ...props }) {
|
|
|
626
822
|
// src/ui/dropdown-menu.tsx
|
|
627
823
|
var import_radix_ui5 = require("radix-ui");
|
|
628
824
|
var import_lucide_react2 = require("lucide-react");
|
|
825
|
+
|
|
826
|
+
// src/design/control-surface.ts
|
|
827
|
+
var CONTROL_SIZE = {
|
|
828
|
+
sm: "h-9 px-3",
|
|
829
|
+
default: "h-10 px-3"
|
|
830
|
+
};
|
|
831
|
+
var CONTROL_SHAPE = {
|
|
832
|
+
field: "rounded-lg",
|
|
833
|
+
pill: "rounded-full"
|
|
834
|
+
};
|
|
835
|
+
var controlSurfaceClass = cn(
|
|
836
|
+
TIMBAL_V2_SECONDARY_CHROME,
|
|
837
|
+
"text-sm text-foreground outline-none",
|
|
838
|
+
"placeholder:text-muted-foreground/70",
|
|
839
|
+
"focus-visible:ring-2 focus-visible:ring-foreground/10",
|
|
840
|
+
"focus-within:ring-2 focus-within:ring-foreground/10",
|
|
841
|
+
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
842
|
+
"data-[placeholder]:text-muted-foreground"
|
|
843
|
+
);
|
|
844
|
+
function controlClass(options = {}, className) {
|
|
845
|
+
const { size = "default", shape = "field" } = options;
|
|
846
|
+
return cn(controlSurfaceClass, CONTROL_SIZE[size], CONTROL_SHAPE[shape], className);
|
|
847
|
+
}
|
|
848
|
+
var overlayAnimationClass = "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 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";
|
|
849
|
+
var overlaySurfaceClass = cn(
|
|
850
|
+
"z-[80] border border-border bg-popover text-popover-foreground shadow-card",
|
|
851
|
+
overlayAnimationClass
|
|
852
|
+
);
|
|
853
|
+
var overlayListPanelClass = cn(
|
|
854
|
+
overlaySurfaceClass,
|
|
855
|
+
"overflow-hidden rounded-lg p-0 outline-hidden"
|
|
856
|
+
);
|
|
857
|
+
var overlayItemClass = "relative flex cursor-default items-center gap-2 rounded-md px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground";
|
|
858
|
+
|
|
859
|
+
// src/ui/dropdown-menu.tsx
|
|
629
860
|
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
630
861
|
function DropdownMenu({
|
|
631
862
|
...props
|
|
@@ -659,7 +890,8 @@ function DropdownMenuContent({
|
|
|
659
890
|
"data-slot": "dropdown-menu-content",
|
|
660
891
|
sideOffset,
|
|
661
892
|
className: cn(
|
|
662
|
-
|
|
893
|
+
overlayListPanelClass,
|
|
894
|
+
"max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem] origin-[var(--radix-dropdown-menu-content-transform-origin)] overflow-x-hidden overflow-y-auto p-1",
|
|
663
895
|
className
|
|
664
896
|
),
|
|
665
897
|
...props
|
|
@@ -679,7 +911,8 @@ function DropdownMenuItem({
|
|
|
679
911
|
"data-inset": inset,
|
|
680
912
|
"data-variant": variant,
|
|
681
913
|
className: cn(
|
|
682
|
-
|
|
914
|
+
overlayItemClass,
|
|
915
|
+
"data-[inset]:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10",
|
|
683
916
|
className
|
|
684
917
|
),
|
|
685
918
|
...props
|
|
@@ -696,10 +929,7 @@ function DropdownMenuCheckboxItem({
|
|
|
696
929
|
import_radix_ui5.DropdownMenu.CheckboxItem,
|
|
697
930
|
{
|
|
698
931
|
"data-slot": "dropdown-menu-checkbox-item",
|
|
699
|
-
className: cn(
|
|
700
|
-
"relative flex cursor-default items-center gap-2 rounded-md py-1.5 pr-2 pl-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
701
|
-
className
|
|
702
|
-
),
|
|
932
|
+
className: cn(overlayItemClass, "py-1.5 pr-2 pl-8", className),
|
|
703
933
|
checked,
|
|
704
934
|
...props,
|
|
705
935
|
children: [
|
|
@@ -729,10 +959,7 @@ function DropdownMenuRadioItem({
|
|
|
729
959
|
import_radix_ui5.DropdownMenu.RadioItem,
|
|
730
960
|
{
|
|
731
961
|
"data-slot": "dropdown-menu-radio-item",
|
|
732
|
-
className: cn(
|
|
733
|
-
"relative flex cursor-default items-center gap-2 rounded-md py-1.5 pr-2 pl-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
734
|
-
className
|
|
735
|
-
),
|
|
962
|
+
className: cn(overlayItemClass, "py-1.5 pr-2 pl-8", className),
|
|
736
963
|
...props,
|
|
737
964
|
children: [
|
|
738
965
|
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_radix_ui5.DropdownMenu.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_lucide_react2.CircleIcon, { className: "size-2 fill-current" }) }) }),
|
|
@@ -805,7 +1032,8 @@ function DropdownMenuSubTrigger({
|
|
|
805
1032
|
"data-slot": "dropdown-menu-sub-trigger",
|
|
806
1033
|
"data-inset": inset,
|
|
807
1034
|
className: cn(
|
|
808
|
-
|
|
1035
|
+
overlayItemClass,
|
|
1036
|
+
"data-[state=open]:bg-accent data-[state=open]:text-accent-foreground data-[inset]:pl-8",
|
|
809
1037
|
className
|
|
810
1038
|
),
|
|
811
1039
|
...props,
|
|
@@ -825,7 +1053,8 @@ function DropdownMenuSubContent({
|
|
|
825
1053
|
{
|
|
826
1054
|
"data-slot": "dropdown-menu-sub-content",
|
|
827
1055
|
className: cn(
|
|
828
|
-
|
|
1056
|
+
overlayListPanelClass,
|
|
1057
|
+
"min-w-[8rem] origin-[var(--radix-dropdown-menu-content-transform-origin)] overflow-hidden p-1",
|
|
829
1058
|
className
|
|
830
1059
|
),
|
|
831
1060
|
...props
|
|
@@ -855,16 +1084,24 @@ function PopoverContent({
|
|
|
855
1084
|
className,
|
|
856
1085
|
align = "center",
|
|
857
1086
|
sideOffset = 4,
|
|
1087
|
+
variant = "default",
|
|
858
1088
|
...props
|
|
859
1089
|
}) {
|
|
860
1090
|
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_radix_ui6.Popover.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
861
1091
|
import_radix_ui6.Popover.Content,
|
|
862
1092
|
{
|
|
863
1093
|
"data-slot": "popover-content",
|
|
1094
|
+
"data-variant": variant,
|
|
864
1095
|
align,
|
|
865
1096
|
sideOffset,
|
|
866
1097
|
className: cn(
|
|
867
|
-
|
|
1098
|
+
variant === "list" ? cn(
|
|
1099
|
+
overlayListPanelClass,
|
|
1100
|
+
"min-w-[8rem] origin-[var(--radix-popover-content-transform-origin)]"
|
|
1101
|
+
) : cn(
|
|
1102
|
+
overlaySurfaceClass,
|
|
1103
|
+
"w-72 origin-[var(--radix-popover-content-transform-origin)] rounded-xl p-4 outline-hidden"
|
|
1104
|
+
),
|
|
868
1105
|
className
|
|
869
1106
|
),
|
|
870
1107
|
...props
|
|
@@ -903,7 +1140,8 @@ function SelectTrigger({
|
|
|
903
1140
|
"data-slot": "select-trigger",
|
|
904
1141
|
"data-size": size,
|
|
905
1142
|
className: cn(
|
|
906
|
-
|
|
1143
|
+
controlClass({ size }),
|
|
1144
|
+
"flex w-fit items-center justify-between gap-2 whitespace-nowrap *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground",
|
|
907
1145
|
className
|
|
908
1146
|
),
|
|
909
1147
|
...props,
|
|
@@ -925,7 +1163,8 @@ function SelectContent({
|
|
|
925
1163
|
{
|
|
926
1164
|
"data-slot": "select-content",
|
|
927
1165
|
className: cn(
|
|
928
|
-
|
|
1166
|
+
overlayListPanelClass,
|
|
1167
|
+
"relative max-h-[var(--radix-select-content-available-height)] min-w-[8rem] origin-[var(--radix-select-content-transform-origin)] overflow-x-hidden overflow-y-auto",
|
|
929
1168
|
position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
|
|
930
1169
|
className
|
|
931
1170
|
),
|
|
@@ -971,7 +1210,8 @@ function SelectItem({
|
|
|
971
1210
|
{
|
|
972
1211
|
"data-slot": "select-item",
|
|
973
1212
|
className: cn(
|
|
974
|
-
|
|
1213
|
+
overlayItemClass,
|
|
1214
|
+
"w-full py-1.5 pr-8 pl-2 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",
|
|
975
1215
|
className
|
|
976
1216
|
),
|
|
977
1217
|
...props,
|
|
@@ -1024,85 +1264,3152 @@ function SelectScrollDownButton({
|
|
|
1024
1264
|
);
|
|
1025
1265
|
}
|
|
1026
1266
|
|
|
1027
|
-
// src/ui/
|
|
1028
|
-
var import_react = require("motion/react");
|
|
1029
|
-
var import_react2 = require("react");
|
|
1267
|
+
// src/ui/input.tsx
|
|
1030
1268
|
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
1031
|
-
|
|
1032
|
-
children,
|
|
1033
|
-
as: Component = "p",
|
|
1269
|
+
function Input({
|
|
1034
1270
|
className,
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1271
|
+
type,
|
|
1272
|
+
controlSize,
|
|
1273
|
+
...props
|
|
1274
|
+
}) {
|
|
1275
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1276
|
+
"input",
|
|
1277
|
+
{
|
|
1278
|
+
type,
|
|
1279
|
+
"data-slot": "input",
|
|
1280
|
+
className: cn(
|
|
1281
|
+
controlClass({ size: controlSize }),
|
|
1282
|
+
"w-full file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground",
|
|
1283
|
+
className
|
|
1284
|
+
),
|
|
1285
|
+
...props
|
|
1286
|
+
}
|
|
1040
1287
|
);
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1288
|
+
}
|
|
1289
|
+
|
|
1290
|
+
// src/ui/textarea.tsx
|
|
1291
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
1292
|
+
function Textarea({ className, ...props }) {
|
|
1293
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1294
|
+
"textarea",
|
|
1295
|
+
{
|
|
1296
|
+
"data-slot": "textarea",
|
|
1297
|
+
className: cn(
|
|
1298
|
+
controlSurfaceClass,
|
|
1299
|
+
"min-h-16 w-full resize-y rounded-lg px-3 py-2 leading-relaxed",
|
|
1300
|
+
className
|
|
1301
|
+
),
|
|
1302
|
+
...props
|
|
1303
|
+
}
|
|
1044
1304
|
);
|
|
1045
|
-
|
|
1046
|
-
|
|
1305
|
+
}
|
|
1306
|
+
|
|
1307
|
+
// src/ui/label.tsx
|
|
1308
|
+
var import_radix_ui8 = require("radix-ui");
|
|
1309
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
1310
|
+
function Label({
|
|
1311
|
+
className,
|
|
1312
|
+
...props
|
|
1313
|
+
}) {
|
|
1314
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
1315
|
+
import_radix_ui8.Label.Root,
|
|
1047
1316
|
{
|
|
1048
|
-
|
|
1317
|
+
"data-slot": "label",
|
|
1049
1318
|
className: cn(
|
|
1050
|
-
"
|
|
1051
|
-
"[
|
|
1319
|
+
"flex select-none items-center gap-2 text-sm font-medium text-foreground",
|
|
1320
|
+
"group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
|
|
1052
1321
|
className
|
|
1053
1322
|
),
|
|
1054
|
-
|
|
1055
|
-
style: {
|
|
1056
|
-
"--spread": `${dynamicSpread}px`,
|
|
1057
|
-
backgroundImage: "var(--bg), linear-gradient(var(--color-muted-foreground), var(--color-muted-foreground))"
|
|
1058
|
-
},
|
|
1059
|
-
transition: {
|
|
1060
|
-
repeat: Number.POSITIVE_INFINITY,
|
|
1061
|
-
duration,
|
|
1062
|
-
ease: "linear"
|
|
1063
|
-
},
|
|
1064
|
-
children
|
|
1323
|
+
...props
|
|
1065
1324
|
}
|
|
1066
1325
|
);
|
|
1067
|
-
}
|
|
1068
|
-
var Shimmer = (0, import_react2.memo)(ShimmerComponent);
|
|
1326
|
+
}
|
|
1069
1327
|
|
|
1070
|
-
// src/ui/
|
|
1071
|
-
var
|
|
1072
|
-
var
|
|
1328
|
+
// src/ui/checkbox.tsx
|
|
1329
|
+
var import_radix_ui9 = require("radix-ui");
|
|
1330
|
+
var import_lucide_react4 = require("lucide-react");
|
|
1331
|
+
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
1332
|
+
function Checkbox({
|
|
1333
|
+
className,
|
|
1334
|
+
...props
|
|
1335
|
+
}) {
|
|
1336
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
1337
|
+
import_radix_ui9.Checkbox.Root,
|
|
1338
|
+
{
|
|
1339
|
+
"data-slot": "checkbox",
|
|
1340
|
+
className: cn(
|
|
1341
|
+
"peer size-4 shrink-0 rounded-[4px] border border-border bg-gradient-to-b from-elevated-from to-elevated-to shadow-card outline-none transition-[box-shadow,background-color,border-color]",
|
|
1342
|
+
"focus-visible:ring-2 focus-visible:ring-foreground/10 disabled:cursor-not-allowed disabled:opacity-50",
|
|
1343
|
+
"data-[state=checked]:border-foreground/15 data-[state=checked]:from-primary-fill-from data-[state=checked]:to-primary-fill-to data-[state=checked]:text-primary-foreground",
|
|
1344
|
+
className
|
|
1345
|
+
),
|
|
1346
|
+
...props,
|
|
1347
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
1348
|
+
import_radix_ui9.Checkbox.Indicator,
|
|
1349
|
+
{
|
|
1350
|
+
"data-slot": "checkbox-indicator",
|
|
1351
|
+
className: "flex items-center justify-center text-current transition-none",
|
|
1352
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_lucide_react4.CheckIcon, { className: "size-3.5" })
|
|
1353
|
+
}
|
|
1354
|
+
)
|
|
1355
|
+
}
|
|
1356
|
+
);
|
|
1357
|
+
}
|
|
1073
1358
|
|
|
1074
|
-
// src/
|
|
1075
|
-
var
|
|
1076
|
-
var
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
)
|
|
1359
|
+
// src/ui/switch.tsx
|
|
1360
|
+
var import_radix_ui10 = require("radix-ui");
|
|
1361
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
1362
|
+
function Switch({
|
|
1363
|
+
className,
|
|
1364
|
+
...props
|
|
1365
|
+
}) {
|
|
1366
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
1367
|
+
import_radix_ui10.Switch.Root,
|
|
1368
|
+
{
|
|
1369
|
+
"data-slot": "switch",
|
|
1370
|
+
className: cn(
|
|
1371
|
+
"peer inline-flex h-5 w-9 shrink-0 items-center rounded-full outline-none transition-[background,box-shadow,border-color] duration-200",
|
|
1372
|
+
TIMBAL_V2_SWITCH_TRACK_OFF,
|
|
1373
|
+
"focus-visible:ring-2 focus-visible:ring-foreground/10 disabled:cursor-not-allowed disabled:opacity-50",
|
|
1374
|
+
"data-[state=checked]:border-foreground/15 data-[state=checked]:from-primary-fill-from data-[state=checked]:to-primary-fill-to data-[state=checked]:shadow-card",
|
|
1375
|
+
className
|
|
1376
|
+
),
|
|
1377
|
+
...props,
|
|
1378
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
1379
|
+
import_radix_ui10.Switch.Thumb,
|
|
1380
|
+
{
|
|
1381
|
+
"data-slot": "switch-thumb",
|
|
1382
|
+
className: cn(
|
|
1383
|
+
TIMBAL_V2_SWITCH_THUMB,
|
|
1384
|
+
"pointer-events-none block size-4 translate-x-0.5 rounded-full transition-transform data-[state=checked]:translate-x-4"
|
|
1385
|
+
)
|
|
1386
|
+
}
|
|
1387
|
+
)
|
|
1388
|
+
}
|
|
1389
|
+
);
|
|
1390
|
+
}
|
|
1103
1391
|
|
|
1104
|
-
// src/ui/
|
|
1105
|
-
var
|
|
1392
|
+
// src/ui/radio-group.tsx
|
|
1393
|
+
var import_radix_ui11 = require("radix-ui");
|
|
1394
|
+
var import_lucide_react5 = require("lucide-react");
|
|
1395
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
1396
|
+
function RadioGroup({
|
|
1397
|
+
className,
|
|
1398
|
+
...props
|
|
1399
|
+
}) {
|
|
1400
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1401
|
+
import_radix_ui11.RadioGroup.Root,
|
|
1402
|
+
{
|
|
1403
|
+
"data-slot": "radio-group",
|
|
1404
|
+
className: cn("grid gap-2.5", className),
|
|
1405
|
+
...props
|
|
1406
|
+
}
|
|
1407
|
+
);
|
|
1408
|
+
}
|
|
1409
|
+
function RadioGroupItem({
|
|
1410
|
+
className,
|
|
1411
|
+
...props
|
|
1412
|
+
}) {
|
|
1413
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1414
|
+
import_radix_ui11.RadioGroup.Item,
|
|
1415
|
+
{
|
|
1416
|
+
"data-slot": "radio-group-item",
|
|
1417
|
+
className: cn(
|
|
1418
|
+
"aspect-square size-4 shrink-0 rounded-full border border-border bg-gradient-to-b from-elevated-from to-elevated-to shadow-card outline-none transition-[box-shadow,border-color]",
|
|
1419
|
+
"focus-visible:ring-2 focus-visible:ring-foreground/10 disabled:cursor-not-allowed disabled:opacity-50",
|
|
1420
|
+
"data-[state=checked]:border-foreground/30",
|
|
1421
|
+
className
|
|
1422
|
+
),
|
|
1423
|
+
...props,
|
|
1424
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1425
|
+
import_radix_ui11.RadioGroup.Indicator,
|
|
1426
|
+
{
|
|
1427
|
+
"data-slot": "radio-group-indicator",
|
|
1428
|
+
className: "flex items-center justify-center",
|
|
1429
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_lucide_react5.CircleIcon, { className: "size-2 fill-foreground text-foreground" })
|
|
1430
|
+
}
|
|
1431
|
+
)
|
|
1432
|
+
}
|
|
1433
|
+
);
|
|
1434
|
+
}
|
|
1435
|
+
|
|
1436
|
+
// src/ui/form.tsx
|
|
1437
|
+
var import_radix_ui12 = require("radix-ui");
|
|
1438
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
1439
|
+
function Form({ ...props }) {
|
|
1440
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_radix_ui12.Form.Root, { "data-slot": "form", ...props });
|
|
1441
|
+
}
|
|
1442
|
+
function FormField({
|
|
1443
|
+
...props
|
|
1444
|
+
}) {
|
|
1445
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_radix_ui12.Form.Field, { "data-slot": "form-field", ...props });
|
|
1446
|
+
}
|
|
1447
|
+
function FormItem({ className, ...props }) {
|
|
1448
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1449
|
+
"div",
|
|
1450
|
+
{
|
|
1451
|
+
"data-slot": "form-item",
|
|
1452
|
+
className: cn("grid gap-1.5", className),
|
|
1453
|
+
...props
|
|
1454
|
+
}
|
|
1455
|
+
);
|
|
1456
|
+
}
|
|
1457
|
+
function FormLabel({
|
|
1458
|
+
className,
|
|
1459
|
+
...props
|
|
1460
|
+
}) {
|
|
1461
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_radix_ui12.Form.Label, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Label, { "data-slot": "form-label", className, ...props }) });
|
|
1462
|
+
}
|
|
1463
|
+
function FormControl({
|
|
1464
|
+
...props
|
|
1465
|
+
}) {
|
|
1466
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_radix_ui12.Form.Control, { "data-slot": "form-control", ...props });
|
|
1467
|
+
}
|
|
1468
|
+
function FormMessage({
|
|
1469
|
+
className,
|
|
1470
|
+
...props
|
|
1471
|
+
}) {
|
|
1472
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1473
|
+
import_radix_ui12.Form.Message,
|
|
1474
|
+
{
|
|
1475
|
+
"data-slot": "form-message",
|
|
1476
|
+
className: cn("text-xs text-destructive", className),
|
|
1477
|
+
...props
|
|
1478
|
+
}
|
|
1479
|
+
);
|
|
1480
|
+
}
|
|
1481
|
+
function FormSubmit({
|
|
1482
|
+
className,
|
|
1483
|
+
...props
|
|
1484
|
+
}) {
|
|
1485
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1486
|
+
import_radix_ui12.Form.Submit,
|
|
1487
|
+
{
|
|
1488
|
+
"data-slot": "form-submit",
|
|
1489
|
+
className,
|
|
1490
|
+
...props
|
|
1491
|
+
}
|
|
1492
|
+
);
|
|
1493
|
+
}
|
|
1494
|
+
|
|
1495
|
+
// src/ui/aspect-ratio.tsx
|
|
1496
|
+
var import_radix_ui13 = require("radix-ui");
|
|
1497
|
+
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
1498
|
+
function AspectRatio({
|
|
1499
|
+
...props
|
|
1500
|
+
}) {
|
|
1501
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_radix_ui13.AspectRatio.Root, { "data-slot": "aspect-ratio", ...props });
|
|
1502
|
+
}
|
|
1503
|
+
|
|
1504
|
+
// src/ui/breadcrumb.tsx
|
|
1505
|
+
var import_lucide_react6 = require("lucide-react");
|
|
1506
|
+
var import_radix_ui14 = require("radix-ui");
|
|
1507
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
1508
|
+
function Breadcrumb({ ...props }) {
|
|
1509
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("nav", { "data-slot": "breadcrumb", "aria-label": "Breadcrumb", ...props });
|
|
1510
|
+
}
|
|
1511
|
+
function BreadcrumbList({ className, ...props }) {
|
|
1512
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1513
|
+
"ol",
|
|
1514
|
+
{
|
|
1515
|
+
"data-slot": "breadcrumb-list",
|
|
1516
|
+
className: cn(
|
|
1517
|
+
"flex flex-wrap items-center gap-1.5 text-sm text-muted-foreground",
|
|
1518
|
+
className
|
|
1519
|
+
),
|
|
1520
|
+
...props
|
|
1521
|
+
}
|
|
1522
|
+
);
|
|
1523
|
+
}
|
|
1524
|
+
function BreadcrumbItem({ className, ...props }) {
|
|
1525
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1526
|
+
"li",
|
|
1527
|
+
{
|
|
1528
|
+
"data-slot": "breadcrumb-item",
|
|
1529
|
+
className: cn("inline-flex items-center gap-1.5", className),
|
|
1530
|
+
...props
|
|
1531
|
+
}
|
|
1532
|
+
);
|
|
1533
|
+
}
|
|
1534
|
+
function BreadcrumbLink({
|
|
1535
|
+
className,
|
|
1536
|
+
asChild,
|
|
1537
|
+
...props
|
|
1538
|
+
}) {
|
|
1539
|
+
const Comp = asChild ? import_radix_ui14.Slot.Root : "a";
|
|
1540
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1541
|
+
Comp,
|
|
1542
|
+
{
|
|
1543
|
+
"data-slot": "breadcrumb-link",
|
|
1544
|
+
className: cn("transition-colors hover:text-foreground", className),
|
|
1545
|
+
...props
|
|
1546
|
+
}
|
|
1547
|
+
);
|
|
1548
|
+
}
|
|
1549
|
+
function BreadcrumbPage({ className, ...props }) {
|
|
1550
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1551
|
+
"span",
|
|
1552
|
+
{
|
|
1553
|
+
"data-slot": "breadcrumb-page",
|
|
1554
|
+
role: "link",
|
|
1555
|
+
"aria-disabled": "true",
|
|
1556
|
+
"aria-current": "page",
|
|
1557
|
+
className: cn("font-normal text-foreground", className),
|
|
1558
|
+
...props
|
|
1559
|
+
}
|
|
1560
|
+
);
|
|
1561
|
+
}
|
|
1562
|
+
function BreadcrumbSeparator({
|
|
1563
|
+
children,
|
|
1564
|
+
className,
|
|
1565
|
+
...props
|
|
1566
|
+
}) {
|
|
1567
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1568
|
+
"li",
|
|
1569
|
+
{
|
|
1570
|
+
"data-slot": "breadcrumb-separator",
|
|
1571
|
+
role: "presentation",
|
|
1572
|
+
"aria-hidden": "true",
|
|
1573
|
+
className: cn("[&>svg]:size-3.5", className),
|
|
1574
|
+
...props,
|
|
1575
|
+
children: children ?? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_lucide_react6.ChevronRightIcon, {})
|
|
1576
|
+
}
|
|
1577
|
+
);
|
|
1578
|
+
}
|
|
1579
|
+
function BreadcrumbEllipsis({
|
|
1580
|
+
className,
|
|
1581
|
+
...props
|
|
1582
|
+
}) {
|
|
1583
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
1584
|
+
"span",
|
|
1585
|
+
{
|
|
1586
|
+
"data-slot": "breadcrumb-ellipsis",
|
|
1587
|
+
role: "presentation",
|
|
1588
|
+
"aria-hidden": "true",
|
|
1589
|
+
className: cn("flex size-9 items-center justify-center", className),
|
|
1590
|
+
...props,
|
|
1591
|
+
children: [
|
|
1592
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_lucide_react6.MoreHorizontalIcon, { className: "size-4" }),
|
|
1593
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "sr-only", children: "More" })
|
|
1594
|
+
]
|
|
1595
|
+
}
|
|
1596
|
+
);
|
|
1597
|
+
}
|
|
1598
|
+
|
|
1599
|
+
// src/ui/pagination.tsx
|
|
1600
|
+
var import_lucide_react7 = require("lucide-react");
|
|
1601
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
1602
|
+
function Pagination({ className, ...props }) {
|
|
1603
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
1604
|
+
"nav",
|
|
1605
|
+
{
|
|
1606
|
+
"data-slot": "pagination",
|
|
1607
|
+
role: "navigation",
|
|
1608
|
+
"aria-label": "pagination",
|
|
1609
|
+
className: cn("mx-auto flex w-full justify-center", className),
|
|
1610
|
+
...props
|
|
1611
|
+
}
|
|
1612
|
+
);
|
|
1613
|
+
}
|
|
1614
|
+
function PaginationContent({ className, ...props }) {
|
|
1615
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
1616
|
+
"ul",
|
|
1617
|
+
{
|
|
1618
|
+
"data-slot": "pagination-content",
|
|
1619
|
+
className: cn("flex flex-row items-center gap-1", className),
|
|
1620
|
+
...props
|
|
1621
|
+
}
|
|
1622
|
+
);
|
|
1623
|
+
}
|
|
1624
|
+
function PaginationItem({ ...props }) {
|
|
1625
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("li", { "data-slot": "pagination-item", ...props });
|
|
1626
|
+
}
|
|
1627
|
+
function PaginationLink({
|
|
1628
|
+
className,
|
|
1629
|
+
isActive,
|
|
1630
|
+
size = "icon",
|
|
1631
|
+
...props
|
|
1632
|
+
}) {
|
|
1633
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Button, { asChild: true, variant: isActive ? "outline" : "ghost", size, className, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
1634
|
+
"a",
|
|
1635
|
+
{
|
|
1636
|
+
"data-slot": "pagination-link",
|
|
1637
|
+
"aria-current": isActive ? "page" : void 0,
|
|
1638
|
+
...props
|
|
1639
|
+
}
|
|
1640
|
+
) });
|
|
1641
|
+
}
|
|
1642
|
+
function PaginationPrevious({
|
|
1643
|
+
className,
|
|
1644
|
+
...props
|
|
1645
|
+
}) {
|
|
1646
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
1647
|
+
PaginationLink,
|
|
1648
|
+
{
|
|
1649
|
+
"aria-label": "Go to previous page",
|
|
1650
|
+
size: "default",
|
|
1651
|
+
className: cn("gap-1 px-2.5 sm:pl-2.5", className),
|
|
1652
|
+
...props,
|
|
1653
|
+
children: [
|
|
1654
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react7.ChevronLeftIcon, { className: "size-4" }),
|
|
1655
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "hidden sm:block", children: "Previous" })
|
|
1656
|
+
]
|
|
1657
|
+
}
|
|
1658
|
+
);
|
|
1659
|
+
}
|
|
1660
|
+
function PaginationNext({
|
|
1661
|
+
className,
|
|
1662
|
+
...props
|
|
1663
|
+
}) {
|
|
1664
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
1665
|
+
PaginationLink,
|
|
1666
|
+
{
|
|
1667
|
+
"aria-label": "Go to next page",
|
|
1668
|
+
size: "default",
|
|
1669
|
+
className: cn("gap-1 px-2.5 sm:pr-2.5", className),
|
|
1670
|
+
...props,
|
|
1671
|
+
children: [
|
|
1672
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "hidden sm:block", children: "Next" }),
|
|
1673
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react7.ChevronRightIcon, { className: "size-4" })
|
|
1674
|
+
]
|
|
1675
|
+
}
|
|
1676
|
+
);
|
|
1677
|
+
}
|
|
1678
|
+
function PaginationEllipsis({
|
|
1679
|
+
className,
|
|
1680
|
+
...props
|
|
1681
|
+
}) {
|
|
1682
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
1683
|
+
"span",
|
|
1684
|
+
{
|
|
1685
|
+
"data-slot": "pagination-ellipsis",
|
|
1686
|
+
"aria-hidden": true,
|
|
1687
|
+
className: cn("flex size-9 items-center justify-center", className),
|
|
1688
|
+
...props,
|
|
1689
|
+
children: [
|
|
1690
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react7.MoreHorizontalIcon, { className: "size-4" }),
|
|
1691
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "sr-only", children: "More pages" })
|
|
1692
|
+
]
|
|
1693
|
+
}
|
|
1694
|
+
);
|
|
1695
|
+
}
|
|
1696
|
+
|
|
1697
|
+
// src/ui/toolbar.tsx
|
|
1698
|
+
var import_radix_ui15 = require("radix-ui");
|
|
1699
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
1700
|
+
function Toolbar({
|
|
1701
|
+
className,
|
|
1702
|
+
...props
|
|
1703
|
+
}) {
|
|
1704
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1705
|
+
import_radix_ui15.Toolbar.Root,
|
|
1706
|
+
{
|
|
1707
|
+
"data-slot": "toolbar",
|
|
1708
|
+
className: cn(
|
|
1709
|
+
"flex items-center gap-1 rounded-lg border border-border bg-gradient-to-b from-elevated-from to-elevated-to p-1 shadow-card",
|
|
1710
|
+
className
|
|
1711
|
+
),
|
|
1712
|
+
...props
|
|
1713
|
+
}
|
|
1714
|
+
);
|
|
1715
|
+
}
|
|
1716
|
+
function ToolbarButton({
|
|
1717
|
+
className,
|
|
1718
|
+
...props
|
|
1719
|
+
}) {
|
|
1720
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1721
|
+
import_radix_ui15.Toolbar.Button,
|
|
1722
|
+
{
|
|
1723
|
+
"data-slot": "toolbar-button",
|
|
1724
|
+
className: cn(
|
|
1725
|
+
"inline-flex h-8 min-w-8 items-center justify-center rounded-md px-2 text-sm font-medium text-foreground outline-none transition-colors",
|
|
1726
|
+
"hover:bg-muted focus-visible:ring-2 focus-visible:ring-foreground/10 disabled:pointer-events-none disabled:opacity-50",
|
|
1727
|
+
className
|
|
1728
|
+
),
|
|
1729
|
+
...props
|
|
1730
|
+
}
|
|
1731
|
+
);
|
|
1732
|
+
}
|
|
1733
|
+
function ToolbarSeparator({
|
|
1734
|
+
className,
|
|
1735
|
+
...props
|
|
1736
|
+
}) {
|
|
1737
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1738
|
+
import_radix_ui15.Toolbar.Separator,
|
|
1739
|
+
{
|
|
1740
|
+
"data-slot": "toolbar-separator",
|
|
1741
|
+
className: cn("mx-1 h-6 w-px bg-border", className),
|
|
1742
|
+
...props
|
|
1743
|
+
}
|
|
1744
|
+
);
|
|
1745
|
+
}
|
|
1746
|
+
function ToolbarToggleGroup({
|
|
1747
|
+
className,
|
|
1748
|
+
...props
|
|
1749
|
+
}) {
|
|
1750
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1751
|
+
import_radix_ui15.Toolbar.ToggleGroup,
|
|
1752
|
+
{
|
|
1753
|
+
"data-slot": "toolbar-toggle-group",
|
|
1754
|
+
className: cn("flex items-center gap-0.5", className),
|
|
1755
|
+
...props
|
|
1756
|
+
}
|
|
1757
|
+
);
|
|
1758
|
+
}
|
|
1759
|
+
function ToolbarToggleItem({
|
|
1760
|
+
className,
|
|
1761
|
+
...props
|
|
1762
|
+
}) {
|
|
1763
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1764
|
+
import_radix_ui15.Toolbar.ToggleItem,
|
|
1765
|
+
{
|
|
1766
|
+
"data-slot": "toolbar-toggle-item",
|
|
1767
|
+
className: cn(
|
|
1768
|
+
"inline-flex h-8 min-w-8 items-center justify-center rounded-md px-2 text-sm outline-none transition-colors",
|
|
1769
|
+
"hover:bg-muted focus-visible:ring-2 focus-visible:ring-foreground/10",
|
|
1770
|
+
"data-[state=on]:bg-accent data-[state=on]:text-accent-foreground",
|
|
1771
|
+
className
|
|
1772
|
+
),
|
|
1773
|
+
...props
|
|
1774
|
+
}
|
|
1775
|
+
);
|
|
1776
|
+
}
|
|
1777
|
+
function ToolbarLink({
|
|
1778
|
+
className,
|
|
1779
|
+
...props
|
|
1780
|
+
}) {
|
|
1781
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1782
|
+
import_radix_ui15.Toolbar.Link,
|
|
1783
|
+
{
|
|
1784
|
+
"data-slot": "toolbar-link",
|
|
1785
|
+
className: cn(
|
|
1786
|
+
"inline-flex h-8 items-center rounded-md px-2 text-sm text-foreground outline-none transition-colors hover:bg-muted focus-visible:ring-2 focus-visible:ring-foreground/10",
|
|
1787
|
+
className
|
|
1788
|
+
),
|
|
1789
|
+
...props
|
|
1790
|
+
}
|
|
1791
|
+
);
|
|
1792
|
+
}
|
|
1793
|
+
|
|
1794
|
+
// src/ui/menubar.tsx
|
|
1795
|
+
var import_radix_ui16 = require("radix-ui");
|
|
1796
|
+
var import_lucide_react8 = require("lucide-react");
|
|
1797
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
1798
|
+
function Menubar({
|
|
1799
|
+
className,
|
|
1800
|
+
...props
|
|
1801
|
+
}) {
|
|
1802
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1803
|
+
import_radix_ui16.Menubar.Root,
|
|
1804
|
+
{
|
|
1805
|
+
"data-slot": "menubar",
|
|
1806
|
+
className: cn(
|
|
1807
|
+
"flex h-9 items-center gap-1 rounded-lg border border-border bg-gradient-to-b from-elevated-from to-elevated-to p-1 shadow-card",
|
|
1808
|
+
className
|
|
1809
|
+
),
|
|
1810
|
+
...props
|
|
1811
|
+
}
|
|
1812
|
+
);
|
|
1813
|
+
}
|
|
1814
|
+
function MenubarMenu({
|
|
1815
|
+
...props
|
|
1816
|
+
}) {
|
|
1817
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_radix_ui16.Menubar.Menu, { "data-slot": "menubar-menu", ...props });
|
|
1818
|
+
}
|
|
1819
|
+
function MenubarTrigger({
|
|
1820
|
+
className,
|
|
1821
|
+
...props
|
|
1822
|
+
}) {
|
|
1823
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1824
|
+
import_radix_ui16.Menubar.Trigger,
|
|
1825
|
+
{
|
|
1826
|
+
"data-slot": "menubar-trigger",
|
|
1827
|
+
className: cn(
|
|
1828
|
+
"flex cursor-default items-center rounded-md px-2 py-1 text-sm font-medium outline-none select-none",
|
|
1829
|
+
"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
|
|
1830
|
+
className
|
|
1831
|
+
),
|
|
1832
|
+
...props
|
|
1833
|
+
}
|
|
1834
|
+
);
|
|
1835
|
+
}
|
|
1836
|
+
function MenubarContent({
|
|
1837
|
+
className,
|
|
1838
|
+
align = "start",
|
|
1839
|
+
alignOffset = -4,
|
|
1840
|
+
sideOffset = 8,
|
|
1841
|
+
...props
|
|
1842
|
+
}) {
|
|
1843
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_radix_ui16.Menubar.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1844
|
+
import_radix_ui16.Menubar.Content,
|
|
1845
|
+
{
|
|
1846
|
+
"data-slot": "menubar-content",
|
|
1847
|
+
align,
|
|
1848
|
+
alignOffset,
|
|
1849
|
+
sideOffset,
|
|
1850
|
+
className: cn(
|
|
1851
|
+
overlaySurfaceClass,
|
|
1852
|
+
"min-w-[12rem] origin-[var(--radix-menubar-content-transform-origin)] overflow-hidden rounded-lg p-1",
|
|
1853
|
+
className
|
|
1854
|
+
),
|
|
1855
|
+
...props
|
|
1856
|
+
}
|
|
1857
|
+
) });
|
|
1858
|
+
}
|
|
1859
|
+
function MenubarItem({
|
|
1860
|
+
className,
|
|
1861
|
+
inset,
|
|
1862
|
+
variant = "default",
|
|
1863
|
+
...props
|
|
1864
|
+
}) {
|
|
1865
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1866
|
+
import_radix_ui16.Menubar.Item,
|
|
1867
|
+
{
|
|
1868
|
+
"data-slot": "menubar-item",
|
|
1869
|
+
"data-inset": inset,
|
|
1870
|
+
"data-variant": variant,
|
|
1871
|
+
className: cn(
|
|
1872
|
+
overlayItemClass,
|
|
1873
|
+
"data-[inset]:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10",
|
|
1874
|
+
className
|
|
1875
|
+
),
|
|
1876
|
+
...props
|
|
1877
|
+
}
|
|
1878
|
+
);
|
|
1879
|
+
}
|
|
1880
|
+
function MenubarCheckboxItem({
|
|
1881
|
+
className,
|
|
1882
|
+
children,
|
|
1883
|
+
checked,
|
|
1884
|
+
...props
|
|
1885
|
+
}) {
|
|
1886
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
1887
|
+
import_radix_ui16.Menubar.CheckboxItem,
|
|
1888
|
+
{
|
|
1889
|
+
"data-slot": "menubar-checkbox-item",
|
|
1890
|
+
className: cn(overlayItemClass, "py-1.5 pr-2 pl-8", className),
|
|
1891
|
+
checked,
|
|
1892
|
+
...props,
|
|
1893
|
+
children: [
|
|
1894
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_radix_ui16.Menubar.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react8.CheckIcon, { className: "size-4" }) }) }),
|
|
1895
|
+
children
|
|
1896
|
+
]
|
|
1897
|
+
}
|
|
1898
|
+
);
|
|
1899
|
+
}
|
|
1900
|
+
function MenubarRadioGroup({
|
|
1901
|
+
...props
|
|
1902
|
+
}) {
|
|
1903
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_radix_ui16.Menubar.RadioGroup, { "data-slot": "menubar-radio-group", ...props });
|
|
1904
|
+
}
|
|
1905
|
+
function MenubarRadioItem({
|
|
1906
|
+
className,
|
|
1907
|
+
children,
|
|
1908
|
+
...props
|
|
1909
|
+
}) {
|
|
1910
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
1911
|
+
import_radix_ui16.Menubar.RadioItem,
|
|
1912
|
+
{
|
|
1913
|
+
"data-slot": "menubar-radio-item",
|
|
1914
|
+
className: cn(overlayItemClass, "py-1.5 pr-2 pl-8", className),
|
|
1915
|
+
...props,
|
|
1916
|
+
children: [
|
|
1917
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_radix_ui16.Menubar.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react8.CircleIcon, { className: "size-2 fill-current" }) }) }),
|
|
1918
|
+
children
|
|
1919
|
+
]
|
|
1920
|
+
}
|
|
1921
|
+
);
|
|
1922
|
+
}
|
|
1923
|
+
function MenubarLabel({
|
|
1924
|
+
className,
|
|
1925
|
+
inset,
|
|
1926
|
+
...props
|
|
1927
|
+
}) {
|
|
1928
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1929
|
+
import_radix_ui16.Menubar.Label,
|
|
1930
|
+
{
|
|
1931
|
+
"data-slot": "menubar-label",
|
|
1932
|
+
"data-inset": inset,
|
|
1933
|
+
className: cn(
|
|
1934
|
+
"px-2 py-1.5 text-xs font-medium text-muted-foreground data-[inset]:pl-8",
|
|
1935
|
+
className
|
|
1936
|
+
),
|
|
1937
|
+
...props
|
|
1938
|
+
}
|
|
1939
|
+
);
|
|
1940
|
+
}
|
|
1941
|
+
function MenubarSeparator({
|
|
1942
|
+
className,
|
|
1943
|
+
...props
|
|
1944
|
+
}) {
|
|
1945
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1946
|
+
import_radix_ui16.Menubar.Separator,
|
|
1947
|
+
{
|
|
1948
|
+
"data-slot": "menubar-separator",
|
|
1949
|
+
className: cn("-mx-1 my-1 h-px bg-border", className),
|
|
1950
|
+
...props
|
|
1951
|
+
}
|
|
1952
|
+
);
|
|
1953
|
+
}
|
|
1954
|
+
function MenubarShortcut({
|
|
1955
|
+
className,
|
|
1956
|
+
...props
|
|
1957
|
+
}) {
|
|
1958
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1959
|
+
"span",
|
|
1960
|
+
{
|
|
1961
|
+
"data-slot": "menubar-shortcut",
|
|
1962
|
+
className: cn(
|
|
1963
|
+
"ml-auto text-xs tracking-widest text-muted-foreground",
|
|
1964
|
+
className
|
|
1965
|
+
),
|
|
1966
|
+
...props
|
|
1967
|
+
}
|
|
1968
|
+
);
|
|
1969
|
+
}
|
|
1970
|
+
function MenubarSub({
|
|
1971
|
+
...props
|
|
1972
|
+
}) {
|
|
1973
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_radix_ui16.Menubar.Sub, { "data-slot": "menubar-sub", ...props });
|
|
1974
|
+
}
|
|
1975
|
+
function MenubarSubTrigger({
|
|
1976
|
+
className,
|
|
1977
|
+
inset,
|
|
1978
|
+
children,
|
|
1979
|
+
...props
|
|
1980
|
+
}) {
|
|
1981
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
1982
|
+
import_radix_ui16.Menubar.SubTrigger,
|
|
1983
|
+
{
|
|
1984
|
+
"data-slot": "menubar-sub-trigger",
|
|
1985
|
+
"data-inset": inset,
|
|
1986
|
+
className: cn(
|
|
1987
|
+
overlayItemClass,
|
|
1988
|
+
"data-[state=open]:bg-accent data-[state=open]:text-accent-foreground data-[inset]:pl-8",
|
|
1989
|
+
className
|
|
1990
|
+
),
|
|
1991
|
+
...props,
|
|
1992
|
+
children: [
|
|
1993
|
+
children,
|
|
1994
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react8.ChevronRightIcon, { className: "ml-auto size-4" })
|
|
1995
|
+
]
|
|
1996
|
+
}
|
|
1997
|
+
);
|
|
1998
|
+
}
|
|
1999
|
+
function MenubarSubContent({
|
|
2000
|
+
className,
|
|
2001
|
+
...props
|
|
2002
|
+
}) {
|
|
2003
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
2004
|
+
import_radix_ui16.Menubar.SubContent,
|
|
2005
|
+
{
|
|
2006
|
+
"data-slot": "menubar-sub-content",
|
|
2007
|
+
className: cn(
|
|
2008
|
+
overlaySurfaceClass,
|
|
2009
|
+
"min-w-[8rem] origin-[var(--radix-menubar-content-transform-origin)] overflow-hidden rounded-lg p-1",
|
|
2010
|
+
className
|
|
2011
|
+
),
|
|
2012
|
+
...props
|
|
2013
|
+
}
|
|
2014
|
+
);
|
|
2015
|
+
}
|
|
2016
|
+
|
|
2017
|
+
// src/ui/navigation-menu.tsx
|
|
2018
|
+
var import_radix_ui17 = require("radix-ui");
|
|
2019
|
+
var import_lucide_react9 = require("lucide-react");
|
|
2020
|
+
var import_class_variance_authority2 = require("class-variance-authority");
|
|
2021
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
2022
|
+
function NavigationMenu({
|
|
2023
|
+
className,
|
|
2024
|
+
children,
|
|
2025
|
+
viewport = true,
|
|
2026
|
+
...props
|
|
2027
|
+
}) {
|
|
2028
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
|
|
2029
|
+
import_radix_ui17.NavigationMenu.Root,
|
|
2030
|
+
{
|
|
2031
|
+
"data-slot": "navigation-menu",
|
|
2032
|
+
"data-viewport": viewport,
|
|
2033
|
+
className: cn(
|
|
2034
|
+
"group/navigation-menu relative flex max-w-max flex-1 items-center justify-center",
|
|
2035
|
+
className
|
|
2036
|
+
),
|
|
2037
|
+
...props,
|
|
2038
|
+
children: [
|
|
2039
|
+
children,
|
|
2040
|
+
viewport ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(NavigationMenuViewport, {}) : null
|
|
2041
|
+
]
|
|
2042
|
+
}
|
|
2043
|
+
);
|
|
2044
|
+
}
|
|
2045
|
+
function NavigationMenuList({
|
|
2046
|
+
className,
|
|
2047
|
+
...props
|
|
2048
|
+
}) {
|
|
2049
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
2050
|
+
import_radix_ui17.NavigationMenu.List,
|
|
2051
|
+
{
|
|
2052
|
+
"data-slot": "navigation-menu-list",
|
|
2053
|
+
className: cn(
|
|
2054
|
+
"group flex flex-1 list-none items-center justify-center gap-1",
|
|
2055
|
+
className
|
|
2056
|
+
),
|
|
2057
|
+
...props
|
|
2058
|
+
}
|
|
2059
|
+
);
|
|
2060
|
+
}
|
|
2061
|
+
function NavigationMenuItem({
|
|
2062
|
+
...props
|
|
2063
|
+
}) {
|
|
2064
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_radix_ui17.NavigationMenu.Item, { "data-slot": "navigation-menu-item", ...props });
|
|
2065
|
+
}
|
|
2066
|
+
var navigationMenuTriggerStyle = (0, import_class_variance_authority2.cva)(
|
|
2067
|
+
"group inline-flex h-9 w-max items-center justify-center rounded-lg bg-transparent px-4 py-2 text-sm font-medium transition-colors hover:bg-muted hover:text-foreground focus:bg-muted focus:text-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[state=open]:bg-muted/80 data-[state=open]:text-foreground"
|
|
2068
|
+
);
|
|
2069
|
+
function NavigationMenuTrigger({
|
|
2070
|
+
className,
|
|
2071
|
+
children,
|
|
2072
|
+
...props
|
|
2073
|
+
}) {
|
|
2074
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
|
|
2075
|
+
import_radix_ui17.NavigationMenu.Trigger,
|
|
2076
|
+
{
|
|
2077
|
+
"data-slot": "navigation-menu-trigger",
|
|
2078
|
+
className: cn(navigationMenuTriggerStyle(), "group", className),
|
|
2079
|
+
...props,
|
|
2080
|
+
children: [
|
|
2081
|
+
children,
|
|
2082
|
+
" ",
|
|
2083
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
2084
|
+
import_lucide_react9.ChevronDownIcon,
|
|
2085
|
+
{
|
|
2086
|
+
className: "relative top-px ml-1 size-3 transition duration-300 group-data-[state=open]:rotate-180",
|
|
2087
|
+
"aria-hidden": "true"
|
|
2088
|
+
}
|
|
2089
|
+
)
|
|
2090
|
+
]
|
|
2091
|
+
}
|
|
2092
|
+
);
|
|
2093
|
+
}
|
|
2094
|
+
function NavigationMenuContent({
|
|
2095
|
+
className,
|
|
2096
|
+
...props
|
|
2097
|
+
}) {
|
|
2098
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
2099
|
+
import_radix_ui17.NavigationMenu.Content,
|
|
2100
|
+
{
|
|
2101
|
+
"data-slot": "navigation-menu-content",
|
|
2102
|
+
className: cn(
|
|
2103
|
+
"data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 top-0 left-0 w-full p-2 pr-2.5 md:absolute md:w-auto",
|
|
2104
|
+
"group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95 group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-lg group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:border-border group-data-[viewport=false]/navigation-menu:shadow-card",
|
|
2105
|
+
className
|
|
2106
|
+
),
|
|
2107
|
+
...props
|
|
2108
|
+
}
|
|
2109
|
+
);
|
|
2110
|
+
}
|
|
2111
|
+
function NavigationMenuViewport({
|
|
2112
|
+
className,
|
|
2113
|
+
...props
|
|
2114
|
+
}) {
|
|
2115
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: cn("absolute top-full left-0 isolate z-[80] flex justify-center"), children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
2116
|
+
import_radix_ui17.NavigationMenu.Viewport,
|
|
2117
|
+
{
|
|
2118
|
+
"data-slot": "navigation-menu-viewport",
|
|
2119
|
+
className: cn(
|
|
2120
|
+
overlaySurfaceClass,
|
|
2121
|
+
"origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-lg md:w-[var(--radix-navigation-menu-viewport-width)]",
|
|
2122
|
+
className
|
|
2123
|
+
),
|
|
2124
|
+
...props
|
|
2125
|
+
}
|
|
2126
|
+
) });
|
|
2127
|
+
}
|
|
2128
|
+
function NavigationMenuLink({
|
|
2129
|
+
className,
|
|
2130
|
+
...props
|
|
2131
|
+
}) {
|
|
2132
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
2133
|
+
import_radix_ui17.NavigationMenu.Link,
|
|
2134
|
+
{
|
|
2135
|
+
"data-slot": "navigation-menu-link",
|
|
2136
|
+
className: cn(
|
|
2137
|
+
"flex flex-col gap-1 rounded-md p-2 text-sm transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground [&_svg:not([class*='size-'])]:size-4",
|
|
2138
|
+
className
|
|
2139
|
+
),
|
|
2140
|
+
...props
|
|
2141
|
+
}
|
|
2142
|
+
);
|
|
2143
|
+
}
|
|
2144
|
+
function NavigationMenuIndicator({
|
|
2145
|
+
className,
|
|
2146
|
+
...props
|
|
2147
|
+
}) {
|
|
2148
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
2149
|
+
import_radix_ui17.NavigationMenu.Indicator,
|
|
2150
|
+
{
|
|
2151
|
+
"data-slot": "navigation-menu-indicator",
|
|
2152
|
+
className: cn(
|
|
2153
|
+
"top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:animate-in data-[state=visible]:fade-in",
|
|
2154
|
+
className
|
|
2155
|
+
),
|
|
2156
|
+
...props,
|
|
2157
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md" })
|
|
2158
|
+
}
|
|
2159
|
+
);
|
|
2160
|
+
}
|
|
2161
|
+
|
|
2162
|
+
// src/ui/command.tsx
|
|
2163
|
+
var import_cmdk = require("cmdk");
|
|
2164
|
+
var import_lucide_react10 = require("lucide-react");
|
|
2165
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
2166
|
+
function Command({
|
|
2167
|
+
className,
|
|
2168
|
+
...props
|
|
2169
|
+
}) {
|
|
2170
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2171
|
+
import_cmdk.Command,
|
|
2172
|
+
{
|
|
2173
|
+
"data-slot": "command",
|
|
2174
|
+
className: cn(
|
|
2175
|
+
"flex h-full w-full flex-col overflow-hidden bg-popover text-popover-foreground",
|
|
2176
|
+
className
|
|
2177
|
+
),
|
|
2178
|
+
...props
|
|
2179
|
+
}
|
|
2180
|
+
);
|
|
2181
|
+
}
|
|
2182
|
+
function CommandDialog({
|
|
2183
|
+
title = "Command palette",
|
|
2184
|
+
description = "Search for a command to run\u2026",
|
|
2185
|
+
children,
|
|
2186
|
+
className,
|
|
2187
|
+
showCloseButton = true,
|
|
2188
|
+
...props
|
|
2189
|
+
}) {
|
|
2190
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(Dialog, { ...props, children: [
|
|
2191
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(DialogHeader, { className: "sr-only", children: [
|
|
2192
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(DialogTitle, { children: title }),
|
|
2193
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(DialogDescription, { children: description })
|
|
2194
|
+
] }),
|
|
2195
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2196
|
+
DialogContent,
|
|
2197
|
+
{
|
|
2198
|
+
className: cn("overflow-hidden p-0", className),
|
|
2199
|
+
showCloseButton,
|
|
2200
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Command, { className: "[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:size-4 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-2 [&_[cmdk-item]_svg]:size-4", children })
|
|
2201
|
+
}
|
|
2202
|
+
)
|
|
2203
|
+
] });
|
|
2204
|
+
}
|
|
2205
|
+
function CommandInput({
|
|
2206
|
+
className,
|
|
2207
|
+
...props
|
|
2208
|
+
}) {
|
|
2209
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
|
|
2210
|
+
"div",
|
|
2211
|
+
{
|
|
2212
|
+
"data-slot": "command-input-wrapper",
|
|
2213
|
+
className: "flex h-10 items-center gap-2 border-b border-border px-3",
|
|
2214
|
+
children: [
|
|
2215
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_lucide_react10.SearchIcon, { className: "size-4 shrink-0 text-muted-foreground" }),
|
|
2216
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2217
|
+
import_cmdk.Command.Input,
|
|
2218
|
+
{
|
|
2219
|
+
"data-slot": "command-input",
|
|
2220
|
+
className: cn(
|
|
2221
|
+
"flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground/70 disabled:cursor-not-allowed disabled:opacity-50",
|
|
2222
|
+
className
|
|
2223
|
+
),
|
|
2224
|
+
...props
|
|
2225
|
+
}
|
|
2226
|
+
)
|
|
2227
|
+
]
|
|
2228
|
+
}
|
|
2229
|
+
);
|
|
2230
|
+
}
|
|
2231
|
+
function CommandList({
|
|
2232
|
+
className,
|
|
2233
|
+
...props
|
|
2234
|
+
}) {
|
|
2235
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2236
|
+
import_cmdk.Command.List,
|
|
2237
|
+
{
|
|
2238
|
+
"data-slot": "command-list",
|
|
2239
|
+
className: cn("max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto", className),
|
|
2240
|
+
...props
|
|
2241
|
+
}
|
|
2242
|
+
);
|
|
2243
|
+
}
|
|
2244
|
+
function CommandEmpty({
|
|
2245
|
+
...props
|
|
2246
|
+
}) {
|
|
2247
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2248
|
+
import_cmdk.Command.Empty,
|
|
2249
|
+
{
|
|
2250
|
+
"data-slot": "command-empty",
|
|
2251
|
+
className: "py-6 text-center text-sm text-muted-foreground",
|
|
2252
|
+
...props
|
|
2253
|
+
}
|
|
2254
|
+
);
|
|
2255
|
+
}
|
|
2256
|
+
function CommandGroup({
|
|
2257
|
+
className,
|
|
2258
|
+
...props
|
|
2259
|
+
}) {
|
|
2260
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2261
|
+
import_cmdk.Command.Group,
|
|
2262
|
+
{
|
|
2263
|
+
"data-slot": "command-group",
|
|
2264
|
+
className: cn(
|
|
2265
|
+
"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",
|
|
2266
|
+
className
|
|
2267
|
+
),
|
|
2268
|
+
...props
|
|
2269
|
+
}
|
|
2270
|
+
);
|
|
2271
|
+
}
|
|
2272
|
+
function CommandSeparator({
|
|
2273
|
+
className,
|
|
2274
|
+
...props
|
|
2275
|
+
}) {
|
|
2276
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2277
|
+
import_cmdk.Command.Separator,
|
|
2278
|
+
{
|
|
2279
|
+
"data-slot": "command-separator",
|
|
2280
|
+
className: cn("-mx-1 h-px bg-border", className),
|
|
2281
|
+
...props
|
|
2282
|
+
}
|
|
2283
|
+
);
|
|
2284
|
+
}
|
|
2285
|
+
function CommandItem({
|
|
2286
|
+
className,
|
|
2287
|
+
...props
|
|
2288
|
+
}) {
|
|
2289
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2290
|
+
import_cmdk.Command.Item,
|
|
2291
|
+
{
|
|
2292
|
+
"data-slot": "command-item",
|
|
2293
|
+
className: cn(
|
|
2294
|
+
overlayItemClass,
|
|
2295
|
+
"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground",
|
|
2296
|
+
className
|
|
2297
|
+
),
|
|
2298
|
+
...props
|
|
2299
|
+
}
|
|
2300
|
+
);
|
|
2301
|
+
}
|
|
2302
|
+
function CommandShortcut({
|
|
2303
|
+
className,
|
|
2304
|
+
...props
|
|
2305
|
+
}) {
|
|
2306
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2307
|
+
"span",
|
|
2308
|
+
{
|
|
2309
|
+
"data-slot": "command-shortcut",
|
|
2310
|
+
className: cn(
|
|
2311
|
+
"ml-auto text-xs tracking-widest text-muted-foreground",
|
|
2312
|
+
className
|
|
2313
|
+
),
|
|
2314
|
+
...props
|
|
2315
|
+
}
|
|
2316
|
+
);
|
|
2317
|
+
}
|
|
2318
|
+
|
|
2319
|
+
// src/ui/calendar.tsx
|
|
2320
|
+
var React2 = __toESM(require("react"), 1);
|
|
2321
|
+
var import_lucide_react11 = require("lucide-react");
|
|
2322
|
+
var import_react_day_picker = require("react-day-picker");
|
|
2323
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
2324
|
+
function Calendar({
|
|
2325
|
+
className,
|
|
2326
|
+
classNames,
|
|
2327
|
+
showOutsideDays = true,
|
|
2328
|
+
...props
|
|
2329
|
+
}) {
|
|
2330
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2331
|
+
import_react_day_picker.DayPicker,
|
|
2332
|
+
{
|
|
2333
|
+
showOutsideDays,
|
|
2334
|
+
className: cn("p-3", className),
|
|
2335
|
+
classNames: {
|
|
2336
|
+
months: "flex flex-col gap-4 sm:flex-row sm:gap-4",
|
|
2337
|
+
month: "flex flex-col gap-4",
|
|
2338
|
+
month_caption: "relative flex items-center justify-center pt-1",
|
|
2339
|
+
caption_label: "text-sm font-medium",
|
|
2340
|
+
nav: "flex items-center gap-1",
|
|
2341
|
+
button_previous: cn(
|
|
2342
|
+
buttonVariants({ variant: "outline" }),
|
|
2343
|
+
"absolute left-1 size-7 bg-transparent p-0 opacity-70 hover:opacity-100"
|
|
2344
|
+
),
|
|
2345
|
+
button_next: cn(
|
|
2346
|
+
buttonVariants({ variant: "outline" }),
|
|
2347
|
+
"absolute right-1 size-7 bg-transparent p-0 opacity-70 hover:opacity-100"
|
|
2348
|
+
),
|
|
2349
|
+
month_grid: "w-full border-collapse",
|
|
2350
|
+
weekdays: "flex",
|
|
2351
|
+
weekday: "w-9 rounded-md text-[0.8rem] font-normal text-muted-foreground",
|
|
2352
|
+
week: "mt-2 flex w-full",
|
|
2353
|
+
day: cn(
|
|
2354
|
+
"relative size-9 p-0 text-center text-sm",
|
|
2355
|
+
"[&:has([aria-selected].day-range-end)]:rounded-r-md",
|
|
2356
|
+
"[&:has([aria-selected].day-outside)]:bg-accent/50",
|
|
2357
|
+
"[&:has([aria-selected])]:bg-accent",
|
|
2358
|
+
"first:[&:has([aria-selected])]:rounded-l-md",
|
|
2359
|
+
"last:[&:has([aria-selected])]:rounded-r-md",
|
|
2360
|
+
"focus-within:relative focus-within:z-10"
|
|
2361
|
+
),
|
|
2362
|
+
day_button: cn(
|
|
2363
|
+
buttonVariants({ variant: "ghost" }),
|
|
2364
|
+
"size-9 p-0 font-normal aria-selected:opacity-100"
|
|
2365
|
+
),
|
|
2366
|
+
range_start: "day-range-start rounded-l-md",
|
|
2367
|
+
range_middle: "day-range-middle aria-selected:bg-accent",
|
|
2368
|
+
range_end: "day-range-end rounded-r-md",
|
|
2369
|
+
selected: "bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground",
|
|
2370
|
+
today: "bg-accent text-accent-foreground",
|
|
2371
|
+
outside: "day-outside text-muted-foreground aria-selected:bg-accent/50 aria-selected:text-muted-foreground",
|
|
2372
|
+
disabled: "text-muted-foreground opacity-50",
|
|
2373
|
+
hidden: "invisible",
|
|
2374
|
+
...classNames
|
|
2375
|
+
},
|
|
2376
|
+
components: {
|
|
2377
|
+
Chevron: ({ orientation, className: className2, ...chevronProps }) => {
|
|
2378
|
+
const Icon = orientation === "left" ? import_lucide_react11.ChevronLeftIcon : import_lucide_react11.ChevronRightIcon;
|
|
2379
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Icon, { className: cn("size-4", className2), ...chevronProps });
|
|
2380
|
+
},
|
|
2381
|
+
DayButton: CalendarDayButton
|
|
2382
|
+
},
|
|
2383
|
+
...props
|
|
2384
|
+
}
|
|
2385
|
+
);
|
|
2386
|
+
}
|
|
2387
|
+
function CalendarDayButton({
|
|
2388
|
+
className,
|
|
2389
|
+
day,
|
|
2390
|
+
modifiers,
|
|
2391
|
+
...props
|
|
2392
|
+
}) {
|
|
2393
|
+
const ref = React2.useRef(null);
|
|
2394
|
+
React2.useEffect(() => {
|
|
2395
|
+
if (modifiers.focused) ref.current?.focus();
|
|
2396
|
+
}, [modifiers.focused]);
|
|
2397
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2398
|
+
"button",
|
|
2399
|
+
{
|
|
2400
|
+
ref,
|
|
2401
|
+
type: "button",
|
|
2402
|
+
"data-day": day.date.toLocaleDateString(),
|
|
2403
|
+
"data-selected-single": modifiers.selected && !modifiers.range_start && !modifiers.range_end && !modifiers.range_middle,
|
|
2404
|
+
"data-range-start": modifiers.range_start,
|
|
2405
|
+
"data-range-end": modifiers.range_end,
|
|
2406
|
+
"data-range-middle": modifiers.range_middle,
|
|
2407
|
+
className: cn(
|
|
2408
|
+
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors",
|
|
2409
|
+
"hover:bg-accent hover:text-accent-foreground",
|
|
2410
|
+
"focus-visible:ring-2 focus-visible:ring-foreground/10 focus-visible:outline-none",
|
|
2411
|
+
"disabled:pointer-events-none disabled:opacity-50",
|
|
2412
|
+
"data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground",
|
|
2413
|
+
"data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground",
|
|
2414
|
+
"data-[range-start=true]:rounded-l-md data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground",
|
|
2415
|
+
"data-[range-end=true]:rounded-r-md data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground",
|
|
2416
|
+
className
|
|
2417
|
+
),
|
|
2418
|
+
...props
|
|
2419
|
+
}
|
|
2420
|
+
);
|
|
2421
|
+
}
|
|
2422
|
+
|
|
2423
|
+
// src/ui/combobox.tsx
|
|
2424
|
+
var import_lucide_react12 = require("lucide-react");
|
|
2425
|
+
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
2426
|
+
function Combobox({
|
|
2427
|
+
...props
|
|
2428
|
+
}) {
|
|
2429
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Popover, { "data-slot": "combobox", ...props });
|
|
2430
|
+
}
|
|
2431
|
+
function ComboboxTrigger({
|
|
2432
|
+
className,
|
|
2433
|
+
size = "default",
|
|
2434
|
+
children,
|
|
2435
|
+
...props
|
|
2436
|
+
}) {
|
|
2437
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
2438
|
+
PopoverTrigger,
|
|
2439
|
+
{
|
|
2440
|
+
"data-slot": "combobox-trigger",
|
|
2441
|
+
className: cn(
|
|
2442
|
+
controlClass({ size }),
|
|
2443
|
+
"flex w-full items-center justify-between gap-2 whitespace-nowrap font-normal",
|
|
2444
|
+
"[&_svg]:pointer-events-none [&_svg]:shrink-0",
|
|
2445
|
+
className
|
|
2446
|
+
),
|
|
2447
|
+
...props,
|
|
2448
|
+
children: [
|
|
2449
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "truncate", children }),
|
|
2450
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react12.ChevronDownIcon, { className: "size-4 shrink-0 opacity-50" })
|
|
2451
|
+
]
|
|
2452
|
+
}
|
|
2453
|
+
);
|
|
2454
|
+
}
|
|
2455
|
+
function ComboboxAnchor({
|
|
2456
|
+
...props
|
|
2457
|
+
}) {
|
|
2458
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(PopoverAnchor, { "data-slot": "combobox-anchor", ...props });
|
|
2459
|
+
}
|
|
2460
|
+
function ComboboxContent({
|
|
2461
|
+
className,
|
|
2462
|
+
align = "start",
|
|
2463
|
+
...props
|
|
2464
|
+
}) {
|
|
2465
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
2466
|
+
PopoverContent,
|
|
2467
|
+
{
|
|
2468
|
+
"data-slot": "combobox-content",
|
|
2469
|
+
variant: "list",
|
|
2470
|
+
align,
|
|
2471
|
+
className: cn(
|
|
2472
|
+
"w-[var(--radix-popover-trigger-width)] min-w-[8rem] p-0",
|
|
2473
|
+
className
|
|
2474
|
+
),
|
|
2475
|
+
...props
|
|
2476
|
+
}
|
|
2477
|
+
);
|
|
2478
|
+
}
|
|
2479
|
+
function ComboboxCommand({
|
|
2480
|
+
className,
|
|
2481
|
+
...props
|
|
2482
|
+
}) {
|
|
2483
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
2484
|
+
Command,
|
|
2485
|
+
{
|
|
2486
|
+
"data-slot": "combobox-command",
|
|
2487
|
+
className,
|
|
2488
|
+
...props
|
|
2489
|
+
}
|
|
2490
|
+
);
|
|
2491
|
+
}
|
|
2492
|
+
function ComboboxInput({
|
|
2493
|
+
...props
|
|
2494
|
+
}) {
|
|
2495
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(CommandInput, { "data-slot": "combobox-input", ...props });
|
|
2496
|
+
}
|
|
2497
|
+
function ComboboxList({
|
|
2498
|
+
...props
|
|
2499
|
+
}) {
|
|
2500
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(CommandList, { "data-slot": "combobox-list", ...props });
|
|
2501
|
+
}
|
|
2502
|
+
function ComboboxEmpty({
|
|
2503
|
+
...props
|
|
2504
|
+
}) {
|
|
2505
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(CommandEmpty, { "data-slot": "combobox-empty", ...props });
|
|
2506
|
+
}
|
|
2507
|
+
function ComboboxGroup({
|
|
2508
|
+
...props
|
|
2509
|
+
}) {
|
|
2510
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(CommandGroup, { "data-slot": "combobox-group", ...props });
|
|
2511
|
+
}
|
|
2512
|
+
function ComboboxItem({
|
|
2513
|
+
...props
|
|
2514
|
+
}) {
|
|
2515
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(CommandItem, { "data-slot": "combobox-item", ...props });
|
|
2516
|
+
}
|
|
2517
|
+
function ComboboxSeparator({
|
|
2518
|
+
...props
|
|
2519
|
+
}) {
|
|
2520
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(CommandSeparator, { "data-slot": "combobox-separator", ...props });
|
|
2521
|
+
}
|
|
2522
|
+
function ComboboxShortcut({
|
|
2523
|
+
...props
|
|
2524
|
+
}) {
|
|
2525
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(CommandShortcut, { "data-slot": "combobox-shortcut", ...props });
|
|
2526
|
+
}
|
|
2527
|
+
|
|
2528
|
+
// src/ui/date-picker.tsx
|
|
2529
|
+
var import_lucide_react13 = require("lucide-react");
|
|
2530
|
+
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
2531
|
+
function DatePicker({
|
|
2532
|
+
...props
|
|
2533
|
+
}) {
|
|
2534
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Popover, { "data-slot": "date-picker", ...props });
|
|
2535
|
+
}
|
|
2536
|
+
function DatePickerTrigger({
|
|
2537
|
+
...props
|
|
2538
|
+
}) {
|
|
2539
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(PopoverTrigger, { "data-slot": "date-picker-trigger", ...props });
|
|
2540
|
+
}
|
|
2541
|
+
function DatePickerContent({
|
|
2542
|
+
className,
|
|
2543
|
+
align = "start",
|
|
2544
|
+
...props
|
|
2545
|
+
}) {
|
|
2546
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2547
|
+
PopoverContent,
|
|
2548
|
+
{
|
|
2549
|
+
"data-slot": "date-picker-content",
|
|
2550
|
+
align,
|
|
2551
|
+
className: cn("w-auto p-0", className),
|
|
2552
|
+
...props
|
|
2553
|
+
}
|
|
2554
|
+
);
|
|
2555
|
+
}
|
|
2556
|
+
function DatePickerCalendar({
|
|
2557
|
+
className,
|
|
2558
|
+
...props
|
|
2559
|
+
}) {
|
|
2560
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2561
|
+
Calendar,
|
|
2562
|
+
{
|
|
2563
|
+
"data-slot": "date-picker-calendar",
|
|
2564
|
+
className: cn("rounded-lg border-0", className),
|
|
2565
|
+
...props
|
|
2566
|
+
}
|
|
2567
|
+
);
|
|
2568
|
+
}
|
|
2569
|
+
function formatPickerDate(date) {
|
|
2570
|
+
return date.toLocaleDateString(void 0, {
|
|
2571
|
+
month: "short",
|
|
2572
|
+
day: "numeric",
|
|
2573
|
+
year: "numeric"
|
|
2574
|
+
});
|
|
2575
|
+
}
|
|
2576
|
+
function DatePickerButton({
|
|
2577
|
+
date,
|
|
2578
|
+
placeholder = "Pick a date",
|
|
2579
|
+
className,
|
|
2580
|
+
...props
|
|
2581
|
+
}) {
|
|
2582
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
|
|
2583
|
+
"button",
|
|
2584
|
+
{
|
|
2585
|
+
type: "button",
|
|
2586
|
+
"data-slot": "date-picker-button",
|
|
2587
|
+
className: cn(
|
|
2588
|
+
controlClass(),
|
|
2589
|
+
"flex w-full items-center justify-start gap-2 text-left font-normal",
|
|
2590
|
+
!date && "text-muted-foreground",
|
|
2591
|
+
className
|
|
2592
|
+
),
|
|
2593
|
+
...props,
|
|
2594
|
+
children: [
|
|
2595
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react13.CalendarIcon, { className: "size-4 shrink-0 opacity-70" }),
|
|
2596
|
+
date ? formatPickerDate(date) : placeholder
|
|
2597
|
+
]
|
|
2598
|
+
}
|
|
2599
|
+
);
|
|
2600
|
+
}
|
|
2601
|
+
|
|
2602
|
+
// src/ui/input-otp.tsx
|
|
2603
|
+
var import_lucide_react14 = require("lucide-react");
|
|
2604
|
+
var import_radix_ui18 = require("radix-ui");
|
|
2605
|
+
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
2606
|
+
function InputOTP({
|
|
2607
|
+
className,
|
|
2608
|
+
containerClassName,
|
|
2609
|
+
children,
|
|
2610
|
+
...props
|
|
2611
|
+
}) {
|
|
2612
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
2613
|
+
import_radix_ui18.unstable_OneTimePasswordField.Root,
|
|
2614
|
+
{
|
|
2615
|
+
"data-slot": "input-otp",
|
|
2616
|
+
className: cn(
|
|
2617
|
+
"flex items-center gap-2 has-disabled:opacity-50",
|
|
2618
|
+
containerClassName,
|
|
2619
|
+
className
|
|
2620
|
+
),
|
|
2621
|
+
...props,
|
|
2622
|
+
children
|
|
2623
|
+
}
|
|
2624
|
+
);
|
|
2625
|
+
}
|
|
2626
|
+
function InputOTPGroup({
|
|
2627
|
+
className,
|
|
2628
|
+
...props
|
|
2629
|
+
}) {
|
|
2630
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
2631
|
+
"div",
|
|
2632
|
+
{
|
|
2633
|
+
"data-slot": "input-otp-group",
|
|
2634
|
+
className: cn("flex items-center", className),
|
|
2635
|
+
...props
|
|
2636
|
+
}
|
|
2637
|
+
);
|
|
2638
|
+
}
|
|
2639
|
+
function InputOTPSlot({
|
|
2640
|
+
className,
|
|
2641
|
+
...props
|
|
2642
|
+
}) {
|
|
2643
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
2644
|
+
import_radix_ui18.unstable_OneTimePasswordField.Input,
|
|
2645
|
+
{
|
|
2646
|
+
"data-slot": "input-otp-slot",
|
|
2647
|
+
className: cn(
|
|
2648
|
+
controlSurfaceClass,
|
|
2649
|
+
"relative size-9 rounded-none text-center text-sm tabular-nums",
|
|
2650
|
+
"-ms-px first:ms-0 first:rounded-s-lg last:rounded-e-lg",
|
|
2651
|
+
"focus-visible:z-10",
|
|
2652
|
+
className
|
|
2653
|
+
),
|
|
2654
|
+
...props
|
|
2655
|
+
}
|
|
2656
|
+
);
|
|
2657
|
+
}
|
|
2658
|
+
function InputOTPHiddenInput({
|
|
2659
|
+
...props
|
|
2660
|
+
}) {
|
|
2661
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_radix_ui18.unstable_OneTimePasswordField.HiddenInput, { "data-slot": "input-otp-hidden-input", ...props });
|
|
2662
|
+
}
|
|
2663
|
+
function InputOTPSeparator({
|
|
2664
|
+
className,
|
|
2665
|
+
...props
|
|
2666
|
+
}) {
|
|
2667
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
2668
|
+
"div",
|
|
2669
|
+
{
|
|
2670
|
+
role: "separator",
|
|
2671
|
+
"data-slot": "input-otp-separator",
|
|
2672
|
+
"aria-hidden": true,
|
|
2673
|
+
className: cn("text-muted-foreground", className),
|
|
2674
|
+
...props,
|
|
2675
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_lucide_react14.MinusIcon, { className: "size-4" })
|
|
2676
|
+
}
|
|
2677
|
+
);
|
|
2678
|
+
}
|
|
2679
|
+
|
|
2680
|
+
// src/ui/kbd.tsx
|
|
2681
|
+
var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
2682
|
+
function Kbd({ className, ...props }) {
|
|
2683
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
2684
|
+
"kbd",
|
|
2685
|
+
{
|
|
2686
|
+
"data-slot": "kbd",
|
|
2687
|
+
className: cn(
|
|
2688
|
+
"pointer-events-none inline-flex h-5 min-w-5 items-center justify-center gap-1 rounded border border-border bg-muted px-1.5 font-mono text-[0.625rem] font-medium text-muted-foreground",
|
|
2689
|
+
className
|
|
2690
|
+
),
|
|
2691
|
+
...props
|
|
2692
|
+
}
|
|
2693
|
+
);
|
|
2694
|
+
}
|
|
2695
|
+
function KbdGroup({ className, ...props }) {
|
|
2696
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
2697
|
+
"div",
|
|
2698
|
+
{
|
|
2699
|
+
"data-slot": "kbd-group",
|
|
2700
|
+
className: cn("inline-flex items-center gap-1", className),
|
|
2701
|
+
...props
|
|
2702
|
+
}
|
|
2703
|
+
);
|
|
2704
|
+
}
|
|
2705
|
+
|
|
2706
|
+
// src/ui/spinner.tsx
|
|
2707
|
+
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
2708
|
+
function Spinner({
|
|
2709
|
+
className,
|
|
2710
|
+
...props
|
|
2711
|
+
}) {
|
|
2712
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
|
|
2713
|
+
"svg",
|
|
2714
|
+
{
|
|
2715
|
+
"data-slot": "spinner",
|
|
2716
|
+
role: "status",
|
|
2717
|
+
"aria-label": "Loading",
|
|
2718
|
+
viewBox: "0 0 24 24",
|
|
2719
|
+
fill: "none",
|
|
2720
|
+
className: cn("size-4 animate-spin text-muted-foreground", className),
|
|
2721
|
+
...props,
|
|
2722
|
+
children: [
|
|
2723
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
2724
|
+
"circle",
|
|
2725
|
+
{
|
|
2726
|
+
className: "opacity-25",
|
|
2727
|
+
cx: "12",
|
|
2728
|
+
cy: "12",
|
|
2729
|
+
r: "10",
|
|
2730
|
+
stroke: "currentColor",
|
|
2731
|
+
strokeWidth: "3"
|
|
2732
|
+
}
|
|
2733
|
+
),
|
|
2734
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
2735
|
+
"path",
|
|
2736
|
+
{
|
|
2737
|
+
className: "opacity-75",
|
|
2738
|
+
fill: "currentColor",
|
|
2739
|
+
d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
|
|
2740
|
+
}
|
|
2741
|
+
)
|
|
2742
|
+
]
|
|
2743
|
+
}
|
|
2744
|
+
);
|
|
2745
|
+
}
|
|
2746
|
+
|
|
2747
|
+
// src/ui/input-group.tsx
|
|
2748
|
+
var import_jsx_runtime29 = require("react/jsx-runtime");
|
|
2749
|
+
function InputGroup({
|
|
2750
|
+
className,
|
|
2751
|
+
...props
|
|
2752
|
+
}) {
|
|
2753
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
2754
|
+
"div",
|
|
2755
|
+
{
|
|
2756
|
+
"data-slot": "input-group",
|
|
2757
|
+
className: cn(
|
|
2758
|
+
controlClass(),
|
|
2759
|
+
"flex w-full items-stretch overflow-hidden p-0",
|
|
2760
|
+
"has-[[data-slot=input-group-control]:disabled]:opacity-50",
|
|
2761
|
+
className
|
|
2762
|
+
),
|
|
2763
|
+
...props
|
|
2764
|
+
}
|
|
2765
|
+
);
|
|
2766
|
+
}
|
|
2767
|
+
function InputGroupAddon({
|
|
2768
|
+
className,
|
|
2769
|
+
align = "inline-start",
|
|
2770
|
+
...props
|
|
2771
|
+
}) {
|
|
2772
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
2773
|
+
"div",
|
|
2774
|
+
{
|
|
2775
|
+
"data-slot": "input-group-addon",
|
|
2776
|
+
"data-align": align,
|
|
2777
|
+
className: cn(
|
|
2778
|
+
"flex shrink-0 items-center bg-transparent px-3 text-sm text-muted-foreground",
|
|
2779
|
+
align === "inline-start" && "border-r border-border",
|
|
2780
|
+
align === "inline-end" && "border-l border-border",
|
|
2781
|
+
className
|
|
2782
|
+
),
|
|
2783
|
+
...props
|
|
2784
|
+
}
|
|
2785
|
+
);
|
|
2786
|
+
}
|
|
2787
|
+
function InputGroupInput({
|
|
2788
|
+
className,
|
|
2789
|
+
...props
|
|
2790
|
+
}) {
|
|
2791
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
2792
|
+
"input",
|
|
2793
|
+
{
|
|
2794
|
+
"data-slot": "input-group-control",
|
|
2795
|
+
className: cn(
|
|
2796
|
+
"min-w-0 flex-1 border-0 bg-transparent px-3 py-2 text-sm text-foreground shadow-none outline-none",
|
|
2797
|
+
"placeholder:text-muted-foreground/70 focus-visible:ring-0",
|
|
2798
|
+
className
|
|
2799
|
+
),
|
|
2800
|
+
...props
|
|
2801
|
+
}
|
|
2802
|
+
);
|
|
2803
|
+
}
|
|
2804
|
+
function InputGroupText({
|
|
2805
|
+
className,
|
|
2806
|
+
...props
|
|
2807
|
+
}) {
|
|
2808
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
2809
|
+
"span",
|
|
2810
|
+
{
|
|
2811
|
+
"data-slot": "input-group-text",
|
|
2812
|
+
className: cn("text-sm text-muted-foreground", className),
|
|
2813
|
+
...props
|
|
2814
|
+
}
|
|
2815
|
+
);
|
|
2816
|
+
}
|
|
2817
|
+
|
|
2818
|
+
// src/ui/accordion.tsx
|
|
2819
|
+
var import_radix_ui19 = require("radix-ui");
|
|
2820
|
+
var import_lucide_react15 = require("lucide-react");
|
|
2821
|
+
var import_jsx_runtime30 = require("react/jsx-runtime");
|
|
2822
|
+
function Accordion({
|
|
2823
|
+
...props
|
|
2824
|
+
}) {
|
|
2825
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_radix_ui19.Accordion.Root, { "data-slot": "accordion", ...props });
|
|
2826
|
+
}
|
|
2827
|
+
function AccordionItem({
|
|
2828
|
+
className,
|
|
2829
|
+
...props
|
|
2830
|
+
}) {
|
|
2831
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
2832
|
+
import_radix_ui19.Accordion.Item,
|
|
2833
|
+
{
|
|
2834
|
+
"data-slot": "accordion-item",
|
|
2835
|
+
className: cn("border-b border-border last:border-b-0", className),
|
|
2836
|
+
...props
|
|
2837
|
+
}
|
|
2838
|
+
);
|
|
2839
|
+
}
|
|
2840
|
+
function AccordionTrigger({
|
|
2841
|
+
className,
|
|
2842
|
+
children,
|
|
2843
|
+
...props
|
|
2844
|
+
}) {
|
|
2845
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_radix_ui19.Accordion.Header, { className: "flex", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
|
|
2846
|
+
import_radix_ui19.Accordion.Trigger,
|
|
2847
|
+
{
|
|
2848
|
+
"data-slot": "accordion-trigger",
|
|
2849
|
+
className: cn(
|
|
2850
|
+
"flex flex-1 items-center justify-between gap-4 rounded-md py-4 text-left text-sm font-medium outline-none transition-all",
|
|
2851
|
+
"focus-visible:ring-2 focus-visible:ring-foreground/10 disabled:pointer-events-none disabled:opacity-50",
|
|
2852
|
+
"hover:underline [&[data-state=open]>svg]:rotate-180",
|
|
2853
|
+
className
|
|
2854
|
+
),
|
|
2855
|
+
...props,
|
|
2856
|
+
children: [
|
|
2857
|
+
children,
|
|
2858
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_lucide_react15.ChevronDownIcon, { className: "pointer-events-none size-4 shrink-0 text-muted-foreground transition-transform duration-200" })
|
|
2859
|
+
]
|
|
2860
|
+
}
|
|
2861
|
+
) });
|
|
2862
|
+
}
|
|
2863
|
+
function AccordionContent({
|
|
2864
|
+
className,
|
|
2865
|
+
children,
|
|
2866
|
+
...props
|
|
2867
|
+
}) {
|
|
2868
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
2869
|
+
import_radix_ui19.Accordion.Content,
|
|
2870
|
+
{
|
|
2871
|
+
"data-slot": "accordion-content",
|
|
2872
|
+
className: "overflow-hidden text-sm text-muted-foreground data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
|
|
2873
|
+
...props,
|
|
2874
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: cn("pt-0 pb-4", className), children })
|
|
2875
|
+
}
|
|
2876
|
+
);
|
|
2877
|
+
}
|
|
2878
|
+
|
|
2879
|
+
// src/ui/separator.tsx
|
|
2880
|
+
var import_radix_ui20 = require("radix-ui");
|
|
2881
|
+
var import_jsx_runtime31 = require("react/jsx-runtime");
|
|
2882
|
+
function Separator({
|
|
2883
|
+
className,
|
|
2884
|
+
orientation = "horizontal",
|
|
2885
|
+
decorative = true,
|
|
2886
|
+
...props
|
|
2887
|
+
}) {
|
|
2888
|
+
return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
2889
|
+
import_radix_ui20.Separator.Root,
|
|
2890
|
+
{
|
|
2891
|
+
"data-slot": "separator",
|
|
2892
|
+
decorative,
|
|
2893
|
+
orientation,
|
|
2894
|
+
className: cn(
|
|
2895
|
+
"shrink-0 bg-border data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",
|
|
2896
|
+
className
|
|
2897
|
+
),
|
|
2898
|
+
...props
|
|
2899
|
+
}
|
|
2900
|
+
);
|
|
2901
|
+
}
|
|
2902
|
+
|
|
2903
|
+
// src/ui/slider.tsx
|
|
2904
|
+
var React3 = __toESM(require("react"), 1);
|
|
2905
|
+
var import_radix_ui21 = require("radix-ui");
|
|
2906
|
+
var import_jsx_runtime32 = require("react/jsx-runtime");
|
|
2907
|
+
function Slider({
|
|
2908
|
+
className,
|
|
2909
|
+
defaultValue,
|
|
2910
|
+
value,
|
|
2911
|
+
min = 0,
|
|
2912
|
+
max = 100,
|
|
2913
|
+
...props
|
|
2914
|
+
}) {
|
|
2915
|
+
const thumbs = React3.useMemo(() => {
|
|
2916
|
+
if (Array.isArray(value)) return value;
|
|
2917
|
+
if (Array.isArray(defaultValue)) return defaultValue;
|
|
2918
|
+
return [min];
|
|
2919
|
+
}, [value, defaultValue, min]);
|
|
2920
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
|
|
2921
|
+
import_radix_ui21.Slider.Root,
|
|
2922
|
+
{
|
|
2923
|
+
"data-slot": "slider",
|
|
2924
|
+
defaultValue,
|
|
2925
|
+
value,
|
|
2926
|
+
min,
|
|
2927
|
+
max,
|
|
2928
|
+
className: cn(
|
|
2929
|
+
"relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50",
|
|
2930
|
+
"data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col",
|
|
2931
|
+
className
|
|
2932
|
+
),
|
|
2933
|
+
...props,
|
|
2934
|
+
children: [
|
|
2935
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
2936
|
+
import_radix_ui21.Slider.Track,
|
|
2937
|
+
{
|
|
2938
|
+
"data-slot": "slider-track",
|
|
2939
|
+
className: "relative grow overflow-hidden rounded-full bg-muted data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5",
|
|
2940
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
2941
|
+
import_radix_ui21.Slider.Range,
|
|
2942
|
+
{
|
|
2943
|
+
"data-slot": "slider-range",
|
|
2944
|
+
className: "absolute bg-gradient-to-b from-primary-fill-from to-primary-fill-to data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full"
|
|
2945
|
+
}
|
|
2946
|
+
)
|
|
2947
|
+
}
|
|
2948
|
+
),
|
|
2949
|
+
Array.from({ length: thumbs.length }, (_, i) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
2950
|
+
import_radix_ui21.Slider.Thumb,
|
|
2951
|
+
{
|
|
2952
|
+
"data-slot": "slider-thumb",
|
|
2953
|
+
className: "block size-4 shrink-0 rounded-full border border-border bg-gradient-to-b from-elevated-from to-elevated-to shadow-card outline-none transition-[box-shadow] focus-visible:ring-2 focus-visible:ring-foreground/10 disabled:pointer-events-none disabled:opacity-50"
|
|
2954
|
+
},
|
|
2955
|
+
i
|
|
2956
|
+
))
|
|
2957
|
+
]
|
|
2958
|
+
}
|
|
2959
|
+
);
|
|
2960
|
+
}
|
|
2961
|
+
|
|
2962
|
+
// src/ui/progress.tsx
|
|
2963
|
+
var import_radix_ui22 = require("radix-ui");
|
|
2964
|
+
var import_jsx_runtime33 = require("react/jsx-runtime");
|
|
2965
|
+
function Progress({
|
|
2966
|
+
className,
|
|
2967
|
+
value,
|
|
2968
|
+
...props
|
|
2969
|
+
}) {
|
|
2970
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
2971
|
+
import_radix_ui22.Progress.Root,
|
|
2972
|
+
{
|
|
2973
|
+
"data-slot": "progress",
|
|
2974
|
+
className: cn(
|
|
2975
|
+
"relative h-2 w-full overflow-hidden rounded-full bg-muted",
|
|
2976
|
+
className
|
|
2977
|
+
),
|
|
2978
|
+
...props,
|
|
2979
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
2980
|
+
import_radix_ui22.Progress.Indicator,
|
|
2981
|
+
{
|
|
2982
|
+
"data-slot": "progress-indicator",
|
|
2983
|
+
className: "h-full w-full flex-1 bg-gradient-to-b from-primary-fill-from to-primary-fill-to transition-transform",
|
|
2984
|
+
style: { transform: `translateX(-${100 - (value ?? 0)}%)` }
|
|
2985
|
+
}
|
|
2986
|
+
)
|
|
2987
|
+
}
|
|
2988
|
+
);
|
|
2989
|
+
}
|
|
2990
|
+
|
|
2991
|
+
// src/ui/badge.tsx
|
|
2992
|
+
var import_radix_ui23 = require("radix-ui");
|
|
2993
|
+
var import_class_variance_authority3 = require("class-variance-authority");
|
|
2994
|
+
var import_jsx_runtime34 = require("react/jsx-runtime");
|
|
2995
|
+
var badgeVariants = (0, import_class_variance_authority3.cva)(
|
|
2996
|
+
"inline-flex w-fit shrink-0 items-center justify-center gap-1 whitespace-nowrap rounded-md border px-2 py-0.5 text-xs font-medium [&>svg]:pointer-events-none [&>svg]:size-3",
|
|
2997
|
+
{
|
|
2998
|
+
variants: {
|
|
2999
|
+
variant: {
|
|
3000
|
+
default: "border-transparent bg-gradient-to-b from-primary-fill-from to-primary-fill-to text-primary-foreground",
|
|
3001
|
+
secondary: "border-border bg-gradient-to-b from-elevated-from to-elevated-to text-foreground shadow-card",
|
|
3002
|
+
destructive: "border-destructive/45 bg-destructive/10 text-destructive",
|
|
3003
|
+
outline: "border-border text-foreground"
|
|
3004
|
+
}
|
|
3005
|
+
},
|
|
3006
|
+
defaultVariants: {
|
|
3007
|
+
variant: "default"
|
|
3008
|
+
}
|
|
3009
|
+
}
|
|
3010
|
+
);
|
|
3011
|
+
function Badge({
|
|
3012
|
+
className,
|
|
3013
|
+
variant,
|
|
3014
|
+
asChild = false,
|
|
3015
|
+
...props
|
|
3016
|
+
}) {
|
|
3017
|
+
const Comp = asChild ? import_radix_ui23.Slot.Root : "span";
|
|
3018
|
+
return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
3019
|
+
Comp,
|
|
3020
|
+
{
|
|
3021
|
+
"data-slot": "badge",
|
|
3022
|
+
className: cn(badgeVariants({ variant }), className),
|
|
3023
|
+
...props
|
|
3024
|
+
}
|
|
3025
|
+
);
|
|
3026
|
+
}
|
|
3027
|
+
|
|
3028
|
+
// src/ui/sheet.tsx
|
|
3029
|
+
var import_lucide_react16 = require("lucide-react");
|
|
3030
|
+
var import_radix_ui24 = require("radix-ui");
|
|
3031
|
+
var import_class_variance_authority4 = require("class-variance-authority");
|
|
3032
|
+
var import_jsx_runtime35 = require("react/jsx-runtime");
|
|
3033
|
+
function Sheet({ ...props }) {
|
|
3034
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_radix_ui24.Dialog.Root, { "data-slot": "sheet", ...props });
|
|
3035
|
+
}
|
|
3036
|
+
function SheetTrigger({
|
|
3037
|
+
...props
|
|
3038
|
+
}) {
|
|
3039
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_radix_ui24.Dialog.Trigger, { "data-slot": "sheet-trigger", ...props });
|
|
3040
|
+
}
|
|
3041
|
+
function SheetClose({
|
|
3042
|
+
...props
|
|
3043
|
+
}) {
|
|
3044
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_radix_ui24.Dialog.Close, { "data-slot": "sheet-close", ...props });
|
|
3045
|
+
}
|
|
3046
|
+
function SheetPortal({
|
|
3047
|
+
...props
|
|
3048
|
+
}) {
|
|
3049
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_radix_ui24.Dialog.Portal, { "data-slot": "sheet-portal", ...props });
|
|
3050
|
+
}
|
|
3051
|
+
function SheetOverlay({
|
|
3052
|
+
className,
|
|
3053
|
+
...props
|
|
3054
|
+
}) {
|
|
3055
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
3056
|
+
import_radix_ui24.Dialog.Overlay,
|
|
3057
|
+
{
|
|
3058
|
+
"data-slot": "sheet-overlay",
|
|
3059
|
+
className: cn(
|
|
3060
|
+
"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-[70] bg-black/50",
|
|
3061
|
+
className
|
|
3062
|
+
),
|
|
3063
|
+
...props
|
|
3064
|
+
}
|
|
3065
|
+
);
|
|
3066
|
+
}
|
|
3067
|
+
var sheetContentVariants = (0, import_class_variance_authority4.cva)(
|
|
3068
|
+
cn(
|
|
3069
|
+
TIMBAL_V2_MODAL_SURFACE,
|
|
3070
|
+
"data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-[70] flex flex-col gap-4 shadow-card-elevated transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500"
|
|
3071
|
+
),
|
|
3072
|
+
{
|
|
3073
|
+
variants: {
|
|
3074
|
+
side: {
|
|
3075
|
+
top: "data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 border-b p-6",
|
|
3076
|
+
bottom: "data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 border-t p-6",
|
|
3077
|
+
left: "data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r p-6 sm:max-w-sm",
|
|
3078
|
+
right: "data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l p-6 sm:max-w-sm"
|
|
3079
|
+
}
|
|
3080
|
+
},
|
|
3081
|
+
defaultVariants: {
|
|
3082
|
+
side: "right"
|
|
3083
|
+
}
|
|
3084
|
+
}
|
|
3085
|
+
);
|
|
3086
|
+
function SheetContent({
|
|
3087
|
+
className,
|
|
3088
|
+
children,
|
|
3089
|
+
side = "right",
|
|
3090
|
+
showCloseButton = true,
|
|
3091
|
+
...props
|
|
3092
|
+
}) {
|
|
3093
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(SheetPortal, { children: [
|
|
3094
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(SheetOverlay, {}),
|
|
3095
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
|
|
3096
|
+
import_radix_ui24.Dialog.Content,
|
|
3097
|
+
{
|
|
3098
|
+
"data-slot": "sheet-content",
|
|
3099
|
+
className: cn(sheetContentVariants({ side }), className),
|
|
3100
|
+
...props,
|
|
3101
|
+
children: [
|
|
3102
|
+
children,
|
|
3103
|
+
showCloseButton ? /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_radix_ui24.Dialog.Close, { className: "absolute top-4 right-4 rounded-xs opacity-70 transition-[opacity,background-color] hover:bg-ghost-fill-hover hover:opacity-100 focus:ring-2 focus:ring-foreground/10 focus:outline-hidden disabled:pointer-events-none", children: [
|
|
3104
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react16.XIcon, { className: "size-4" }),
|
|
3105
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "sr-only", children: "Close" })
|
|
3106
|
+
] }) : null
|
|
3107
|
+
]
|
|
3108
|
+
}
|
|
3109
|
+
)
|
|
3110
|
+
] });
|
|
3111
|
+
}
|
|
3112
|
+
function SheetHeader({ className, ...props }) {
|
|
3113
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
3114
|
+
"div",
|
|
3115
|
+
{
|
|
3116
|
+
"data-slot": "sheet-header",
|
|
3117
|
+
className: cn("flex flex-col gap-1.5 p-0", className),
|
|
3118
|
+
...props
|
|
3119
|
+
}
|
|
3120
|
+
);
|
|
3121
|
+
}
|
|
3122
|
+
function SheetFooter({ className, ...props }) {
|
|
3123
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
3124
|
+
"div",
|
|
3125
|
+
{
|
|
3126
|
+
"data-slot": "sheet-footer",
|
|
3127
|
+
className: cn("mt-auto flex flex-col gap-2 sm:flex-row sm:justify-end", className),
|
|
3128
|
+
...props
|
|
3129
|
+
}
|
|
3130
|
+
);
|
|
3131
|
+
}
|
|
3132
|
+
function SheetTitle({
|
|
3133
|
+
className,
|
|
3134
|
+
...props
|
|
3135
|
+
}) {
|
|
3136
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
3137
|
+
import_radix_ui24.Dialog.Title,
|
|
3138
|
+
{
|
|
3139
|
+
"data-slot": "sheet-title",
|
|
3140
|
+
className: cn("text-lg font-semibold text-foreground", className),
|
|
3141
|
+
...props
|
|
3142
|
+
}
|
|
3143
|
+
);
|
|
3144
|
+
}
|
|
3145
|
+
function SheetDescription({
|
|
3146
|
+
className,
|
|
3147
|
+
...props
|
|
3148
|
+
}) {
|
|
3149
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
3150
|
+
import_radix_ui24.Dialog.Description,
|
|
3151
|
+
{
|
|
3152
|
+
"data-slot": "sheet-description",
|
|
3153
|
+
className: cn("text-sm text-muted-foreground", className),
|
|
3154
|
+
...props
|
|
3155
|
+
}
|
|
3156
|
+
);
|
|
3157
|
+
}
|
|
3158
|
+
|
|
3159
|
+
// src/ui/alert-dialog.tsx
|
|
3160
|
+
var import_radix_ui25 = require("radix-ui");
|
|
3161
|
+
var import_jsx_runtime36 = require("react/jsx-runtime");
|
|
3162
|
+
function AlertDialog({
|
|
3163
|
+
...props
|
|
3164
|
+
}) {
|
|
3165
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_radix_ui25.AlertDialog.Root, { "data-slot": "alert-dialog", ...props });
|
|
3166
|
+
}
|
|
3167
|
+
function AlertDialogTrigger({
|
|
3168
|
+
...props
|
|
3169
|
+
}) {
|
|
3170
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_radix_ui25.AlertDialog.Trigger, { "data-slot": "alert-dialog-trigger", ...props });
|
|
3171
|
+
}
|
|
3172
|
+
function AlertDialogPortal({
|
|
3173
|
+
...props
|
|
3174
|
+
}) {
|
|
3175
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_radix_ui25.AlertDialog.Portal, { "data-slot": "alert-dialog-portal", ...props });
|
|
3176
|
+
}
|
|
3177
|
+
function AlertDialogOverlay({
|
|
3178
|
+
className,
|
|
3179
|
+
...props
|
|
3180
|
+
}) {
|
|
3181
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
3182
|
+
import_radix_ui25.AlertDialog.Overlay,
|
|
3183
|
+
{
|
|
3184
|
+
"data-slot": "alert-dialog-overlay",
|
|
3185
|
+
className: cn(
|
|
3186
|
+
"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-[70] bg-black/50",
|
|
3187
|
+
className
|
|
3188
|
+
),
|
|
3189
|
+
...props
|
|
3190
|
+
}
|
|
3191
|
+
);
|
|
3192
|
+
}
|
|
3193
|
+
function AlertDialogContent({
|
|
3194
|
+
className,
|
|
3195
|
+
...props
|
|
3196
|
+
}) {
|
|
3197
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(AlertDialogPortal, { children: [
|
|
3198
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(AlertDialogOverlay, {}),
|
|
3199
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
3200
|
+
import_radix_ui25.AlertDialog.Content,
|
|
3201
|
+
{
|
|
3202
|
+
"data-slot": "alert-dialog-content",
|
|
3203
|
+
className: cn(
|
|
3204
|
+
TIMBAL_V2_MODAL_SURFACE,
|
|
3205
|
+
"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-[70] grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-xl p-6 duration-200 outline-none sm:max-w-lg",
|
|
3206
|
+
className
|
|
3207
|
+
),
|
|
3208
|
+
...props
|
|
3209
|
+
}
|
|
3210
|
+
)
|
|
3211
|
+
] });
|
|
3212
|
+
}
|
|
3213
|
+
function AlertDialogHeader({ className, ...props }) {
|
|
3214
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
3215
|
+
"div",
|
|
3216
|
+
{
|
|
3217
|
+
"data-slot": "alert-dialog-header",
|
|
3218
|
+
className: cn("flex flex-col gap-2 text-center sm:text-left", className),
|
|
3219
|
+
...props
|
|
3220
|
+
}
|
|
3221
|
+
);
|
|
3222
|
+
}
|
|
3223
|
+
function AlertDialogFooter({ className, ...props }) {
|
|
3224
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
3225
|
+
"div",
|
|
3226
|
+
{
|
|
3227
|
+
"data-slot": "alert-dialog-footer",
|
|
3228
|
+
className: cn(
|
|
3229
|
+
"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",
|
|
3230
|
+
className
|
|
3231
|
+
),
|
|
3232
|
+
...props
|
|
3233
|
+
}
|
|
3234
|
+
);
|
|
3235
|
+
}
|
|
3236
|
+
function AlertDialogTitle({
|
|
3237
|
+
className,
|
|
3238
|
+
...props
|
|
3239
|
+
}) {
|
|
3240
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
3241
|
+
import_radix_ui25.AlertDialog.Title,
|
|
3242
|
+
{
|
|
3243
|
+
"data-slot": "alert-dialog-title",
|
|
3244
|
+
className: cn("text-lg font-semibold", className),
|
|
3245
|
+
...props
|
|
3246
|
+
}
|
|
3247
|
+
);
|
|
3248
|
+
}
|
|
3249
|
+
function AlertDialogDescription({
|
|
3250
|
+
className,
|
|
3251
|
+
...props
|
|
3252
|
+
}) {
|
|
3253
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
3254
|
+
import_radix_ui25.AlertDialog.Description,
|
|
3255
|
+
{
|
|
3256
|
+
"data-slot": "alert-dialog-description",
|
|
3257
|
+
className: cn("text-sm text-muted-foreground", className),
|
|
3258
|
+
...props
|
|
3259
|
+
}
|
|
3260
|
+
);
|
|
3261
|
+
}
|
|
3262
|
+
function AlertDialogAction({
|
|
3263
|
+
className,
|
|
3264
|
+
...props
|
|
3265
|
+
}) {
|
|
3266
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Button, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
3267
|
+
import_radix_ui25.AlertDialog.Action,
|
|
3268
|
+
{
|
|
3269
|
+
"data-slot": "alert-dialog-action",
|
|
3270
|
+
className,
|
|
3271
|
+
...props
|
|
3272
|
+
}
|
|
3273
|
+
) });
|
|
3274
|
+
}
|
|
3275
|
+
function AlertDialogCancel({
|
|
3276
|
+
className,
|
|
3277
|
+
...props
|
|
3278
|
+
}) {
|
|
3279
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Button, { asChild: true, variant: "outline", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
3280
|
+
import_radix_ui25.AlertDialog.Cancel,
|
|
3281
|
+
{
|
|
3282
|
+
"data-slot": "alert-dialog-cancel",
|
|
3283
|
+
className,
|
|
3284
|
+
...props
|
|
3285
|
+
}
|
|
3286
|
+
) });
|
|
3287
|
+
}
|
|
3288
|
+
|
|
3289
|
+
// src/ui/collapsible.tsx
|
|
3290
|
+
var import_radix_ui26 = require("radix-ui");
|
|
3291
|
+
var import_jsx_runtime37 = require("react/jsx-runtime");
|
|
3292
|
+
function Collapsible({
|
|
3293
|
+
...props
|
|
3294
|
+
}) {
|
|
3295
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_radix_ui26.Collapsible.Root, { "data-slot": "collapsible", ...props });
|
|
3296
|
+
}
|
|
3297
|
+
function CollapsibleTrigger({
|
|
3298
|
+
...props
|
|
3299
|
+
}) {
|
|
3300
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_radix_ui26.Collapsible.Trigger, { "data-slot": "collapsible-trigger", ...props });
|
|
3301
|
+
}
|
|
3302
|
+
function CollapsibleContent({
|
|
3303
|
+
className,
|
|
3304
|
+
...props
|
|
3305
|
+
}) {
|
|
3306
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
|
|
3307
|
+
import_radix_ui26.Collapsible.Content,
|
|
3308
|
+
{
|
|
3309
|
+
"data-slot": "collapsible-content",
|
|
3310
|
+
className: cn(
|
|
3311
|
+
"overflow-hidden data-[state=closed]:animate-collapsible-up data-[state=open]:animate-collapsible-down",
|
|
3312
|
+
className
|
|
3313
|
+
),
|
|
3314
|
+
...props
|
|
3315
|
+
}
|
|
3316
|
+
);
|
|
3317
|
+
}
|
|
3318
|
+
|
|
3319
|
+
// src/ui/scroll-area.tsx
|
|
3320
|
+
var import_radix_ui27 = require("radix-ui");
|
|
3321
|
+
var import_jsx_runtime38 = require("react/jsx-runtime");
|
|
3322
|
+
function ScrollArea({
|
|
3323
|
+
className,
|
|
3324
|
+
children,
|
|
3325
|
+
...props
|
|
3326
|
+
}) {
|
|
3327
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
|
|
3328
|
+
import_radix_ui27.ScrollArea.Root,
|
|
3329
|
+
{
|
|
3330
|
+
"data-slot": "scroll-area",
|
|
3331
|
+
className: cn("relative overflow-hidden", className),
|
|
3332
|
+
...props,
|
|
3333
|
+
children: [
|
|
3334
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
3335
|
+
import_radix_ui27.ScrollArea.Viewport,
|
|
3336
|
+
{
|
|
3337
|
+
"data-slot": "scroll-area-viewport",
|
|
3338
|
+
className: "size-full rounded-[inherit] outline-none transition-[color,box-shadow] focus-visible:ring-2 focus-visible:ring-foreground/10",
|
|
3339
|
+
children
|
|
3340
|
+
}
|
|
3341
|
+
),
|
|
3342
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)(ScrollBar, {}),
|
|
3343
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_radix_ui27.ScrollArea.Corner, {})
|
|
3344
|
+
]
|
|
3345
|
+
}
|
|
3346
|
+
);
|
|
3347
|
+
}
|
|
3348
|
+
function ScrollBar({
|
|
3349
|
+
className,
|
|
3350
|
+
orientation = "vertical",
|
|
3351
|
+
...props
|
|
3352
|
+
}) {
|
|
3353
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
3354
|
+
import_radix_ui27.ScrollArea.ScrollAreaScrollbar,
|
|
3355
|
+
{
|
|
3356
|
+
"data-slot": "scroll-area-scrollbar",
|
|
3357
|
+
orientation,
|
|
3358
|
+
className: cn(
|
|
3359
|
+
"flex touch-none p-px transition-colors select-none",
|
|
3360
|
+
orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent",
|
|
3361
|
+
orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent",
|
|
3362
|
+
className
|
|
3363
|
+
),
|
|
3364
|
+
...props,
|
|
3365
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
3366
|
+
import_radix_ui27.ScrollArea.ScrollAreaThumb,
|
|
3367
|
+
{
|
|
3368
|
+
"data-slot": "scroll-area-thumb",
|
|
3369
|
+
className: "relative flex-1 rounded-full bg-border"
|
|
3370
|
+
}
|
|
3371
|
+
)
|
|
3372
|
+
}
|
|
3373
|
+
);
|
|
3374
|
+
}
|
|
3375
|
+
|
|
3376
|
+
// src/ui/toggle.tsx
|
|
3377
|
+
var import_radix_ui28 = require("radix-ui");
|
|
3378
|
+
var import_class_variance_authority5 = require("class-variance-authority");
|
|
3379
|
+
var import_jsx_runtime39 = require("react/jsx-runtime");
|
|
3380
|
+
var toggleVariants = (0, import_class_variance_authority5.cva)(
|
|
3381
|
+
"inline-flex items-center justify-center gap-2 rounded-lg text-sm font-medium whitespace-nowrap outline-none transition-[color,box-shadow,background-color,border-color] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0",
|
|
3382
|
+
{
|
|
3383
|
+
variants: {
|
|
3384
|
+
variant: {
|
|
3385
|
+
default: cn(
|
|
3386
|
+
"border border-border bg-gradient-to-b from-elevated-from to-elevated-to shadow-card",
|
|
3387
|
+
"hover:from-secondary-fill-hover-from hover:to-secondary-fill-hover-to",
|
|
3388
|
+
"data-[state=on]:border-foreground/15 data-[state=on]:from-primary-fill-from data-[state=on]:to-primary-fill-to data-[state=on]:text-primary-foreground",
|
|
3389
|
+
"focus-visible:ring-2 focus-visible:ring-foreground/10"
|
|
3390
|
+
),
|
|
3391
|
+
outline: cn(
|
|
3392
|
+
"border border-border bg-transparent",
|
|
3393
|
+
"hover:bg-muted hover:text-foreground",
|
|
3394
|
+
"data-[state=on]:bg-accent data-[state=on]:text-accent-foreground",
|
|
3395
|
+
"focus-visible:ring-2 focus-visible:ring-foreground/10"
|
|
3396
|
+
)
|
|
3397
|
+
},
|
|
3398
|
+
size: {
|
|
3399
|
+
default: "h-10 px-3 min-w-10",
|
|
3400
|
+
sm: "h-9 px-2.5 min-w-9",
|
|
3401
|
+
lg: "h-11 px-5 min-w-11"
|
|
3402
|
+
}
|
|
3403
|
+
},
|
|
3404
|
+
defaultVariants: {
|
|
3405
|
+
variant: "default",
|
|
3406
|
+
size: "default"
|
|
3407
|
+
}
|
|
3408
|
+
}
|
|
3409
|
+
);
|
|
3410
|
+
function Toggle({
|
|
3411
|
+
className,
|
|
3412
|
+
variant,
|
|
3413
|
+
size,
|
|
3414
|
+
...props
|
|
3415
|
+
}) {
|
|
3416
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
3417
|
+
import_radix_ui28.Toggle.Root,
|
|
3418
|
+
{
|
|
3419
|
+
"data-slot": "toggle",
|
|
3420
|
+
className: cn(toggleVariants({ variant, size, className })),
|
|
3421
|
+
...props
|
|
3422
|
+
}
|
|
3423
|
+
);
|
|
3424
|
+
}
|
|
3425
|
+
|
|
3426
|
+
// src/ui/toggle-group.tsx
|
|
3427
|
+
var import_radix_ui29 = require("radix-ui");
|
|
3428
|
+
var import_jsx_runtime40 = require("react/jsx-runtime");
|
|
3429
|
+
function ToggleGroup({
|
|
3430
|
+
className,
|
|
3431
|
+
...props
|
|
3432
|
+
}) {
|
|
3433
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
3434
|
+
import_radix_ui29.ToggleGroup.Root,
|
|
3435
|
+
{
|
|
3436
|
+
"data-slot": "toggle-group",
|
|
3437
|
+
className: cn("flex items-center gap-1", className),
|
|
3438
|
+
...props
|
|
3439
|
+
}
|
|
3440
|
+
);
|
|
3441
|
+
}
|
|
3442
|
+
function ToggleGroupItem({
|
|
3443
|
+
className,
|
|
3444
|
+
...props
|
|
3445
|
+
}) {
|
|
3446
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
3447
|
+
import_radix_ui29.ToggleGroup.Item,
|
|
3448
|
+
{
|
|
3449
|
+
"data-slot": "toggle-group-item",
|
|
3450
|
+
className: cn(toggleVariants({ variant: "default", size: "default" }), className),
|
|
3451
|
+
...props
|
|
3452
|
+
}
|
|
3453
|
+
);
|
|
3454
|
+
}
|
|
3455
|
+
|
|
3456
|
+
// src/ui/hover-card.tsx
|
|
3457
|
+
var import_radix_ui30 = require("radix-ui");
|
|
3458
|
+
var import_jsx_runtime41 = require("react/jsx-runtime");
|
|
3459
|
+
function HoverCard({
|
|
3460
|
+
...props
|
|
3461
|
+
}) {
|
|
3462
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_radix_ui30.HoverCard.Root, { "data-slot": "hover-card", ...props });
|
|
3463
|
+
}
|
|
3464
|
+
function HoverCardTrigger({
|
|
3465
|
+
...props
|
|
3466
|
+
}) {
|
|
3467
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_radix_ui30.HoverCard.Trigger, { "data-slot": "hover-card-trigger", ...props });
|
|
3468
|
+
}
|
|
3469
|
+
function HoverCardContent({
|
|
3470
|
+
className,
|
|
3471
|
+
align = "center",
|
|
3472
|
+
sideOffset = 4,
|
|
3473
|
+
...props
|
|
3474
|
+
}) {
|
|
3475
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_radix_ui30.HoverCard.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
3476
|
+
import_radix_ui30.HoverCard.Content,
|
|
3477
|
+
{
|
|
3478
|
+
"data-slot": "hover-card-content",
|
|
3479
|
+
align,
|
|
3480
|
+
sideOffset,
|
|
3481
|
+
className: cn(
|
|
3482
|
+
overlaySurfaceClass,
|
|
3483
|
+
"w-64 origin-[var(--radix-hover-card-content-transform-origin)] rounded-xl p-4 outline-hidden",
|
|
3484
|
+
className
|
|
3485
|
+
),
|
|
3486
|
+
...props
|
|
3487
|
+
}
|
|
3488
|
+
) });
|
|
3489
|
+
}
|
|
3490
|
+
|
|
3491
|
+
// src/ui/context-menu.tsx
|
|
3492
|
+
var import_radix_ui31 = require("radix-ui");
|
|
3493
|
+
var import_lucide_react17 = require("lucide-react");
|
|
3494
|
+
var import_jsx_runtime42 = require("react/jsx-runtime");
|
|
3495
|
+
function ContextMenu({
|
|
3496
|
+
...props
|
|
3497
|
+
}) {
|
|
3498
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_radix_ui31.ContextMenu.Root, { "data-slot": "context-menu", ...props });
|
|
3499
|
+
}
|
|
3500
|
+
function ContextMenuTrigger({
|
|
3501
|
+
...props
|
|
3502
|
+
}) {
|
|
3503
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_radix_ui31.ContextMenu.Trigger, { "data-slot": "context-menu-trigger", ...props });
|
|
3504
|
+
}
|
|
3505
|
+
function ContextMenuGroup({
|
|
3506
|
+
...props
|
|
3507
|
+
}) {
|
|
3508
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_radix_ui31.ContextMenu.Group, { "data-slot": "context-menu-group", ...props });
|
|
3509
|
+
}
|
|
3510
|
+
function ContextMenuContent({
|
|
3511
|
+
className,
|
|
3512
|
+
...props
|
|
3513
|
+
}) {
|
|
3514
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_radix_ui31.ContextMenu.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
3515
|
+
import_radix_ui31.ContextMenu.Content,
|
|
3516
|
+
{
|
|
3517
|
+
"data-slot": "context-menu-content",
|
|
3518
|
+
className: cn(
|
|
3519
|
+
overlaySurfaceClass,
|
|
3520
|
+
"max-h-[var(--radix-context-menu-content-available-height)] min-w-[8rem] origin-[var(--radix-context-menu-content-transform-origin)] overflow-x-hidden overflow-y-auto rounded-lg p-1",
|
|
3521
|
+
className
|
|
3522
|
+
),
|
|
3523
|
+
...props
|
|
3524
|
+
}
|
|
3525
|
+
) });
|
|
3526
|
+
}
|
|
3527
|
+
function ContextMenuItem({
|
|
3528
|
+
className,
|
|
3529
|
+
inset,
|
|
3530
|
+
variant = "default",
|
|
3531
|
+
...props
|
|
3532
|
+
}) {
|
|
3533
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
3534
|
+
import_radix_ui31.ContextMenu.Item,
|
|
3535
|
+
{
|
|
3536
|
+
"data-slot": "context-menu-item",
|
|
3537
|
+
"data-inset": inset,
|
|
3538
|
+
"data-variant": variant,
|
|
3539
|
+
className: cn(
|
|
3540
|
+
overlayItemClass,
|
|
3541
|
+
"data-[inset]:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10",
|
|
3542
|
+
className
|
|
3543
|
+
),
|
|
3544
|
+
...props
|
|
3545
|
+
}
|
|
3546
|
+
);
|
|
3547
|
+
}
|
|
3548
|
+
function ContextMenuCheckboxItem({
|
|
3549
|
+
className,
|
|
3550
|
+
children,
|
|
3551
|
+
checked,
|
|
3552
|
+
...props
|
|
3553
|
+
}) {
|
|
3554
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
|
|
3555
|
+
import_radix_ui31.ContextMenu.CheckboxItem,
|
|
3556
|
+
{
|
|
3557
|
+
"data-slot": "context-menu-checkbox-item",
|
|
3558
|
+
className: cn(overlayItemClass, "py-1.5 pr-2 pl-8", className),
|
|
3559
|
+
checked,
|
|
3560
|
+
...props,
|
|
3561
|
+
children: [
|
|
3562
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_radix_ui31.ContextMenu.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_lucide_react17.CheckIcon, { className: "size-4" }) }) }),
|
|
3563
|
+
children
|
|
3564
|
+
]
|
|
3565
|
+
}
|
|
3566
|
+
);
|
|
3567
|
+
}
|
|
3568
|
+
function ContextMenuRadioGroup({
|
|
3569
|
+
...props
|
|
3570
|
+
}) {
|
|
3571
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
3572
|
+
import_radix_ui31.ContextMenu.RadioGroup,
|
|
3573
|
+
{
|
|
3574
|
+
"data-slot": "context-menu-radio-group",
|
|
3575
|
+
...props
|
|
3576
|
+
}
|
|
3577
|
+
);
|
|
3578
|
+
}
|
|
3579
|
+
function ContextMenuRadioItem({
|
|
3580
|
+
className,
|
|
3581
|
+
children,
|
|
3582
|
+
...props
|
|
3583
|
+
}) {
|
|
3584
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
|
|
3585
|
+
import_radix_ui31.ContextMenu.RadioItem,
|
|
3586
|
+
{
|
|
3587
|
+
"data-slot": "context-menu-radio-item",
|
|
3588
|
+
className: cn(overlayItemClass, "py-1.5 pr-2 pl-8", className),
|
|
3589
|
+
...props,
|
|
3590
|
+
children: [
|
|
3591
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_radix_ui31.ContextMenu.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_lucide_react17.CircleIcon, { className: "size-2 fill-current" }) }) }),
|
|
3592
|
+
children
|
|
3593
|
+
]
|
|
3594
|
+
}
|
|
3595
|
+
);
|
|
3596
|
+
}
|
|
3597
|
+
function ContextMenuLabel({
|
|
3598
|
+
className,
|
|
3599
|
+
inset,
|
|
3600
|
+
...props
|
|
3601
|
+
}) {
|
|
3602
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
3603
|
+
import_radix_ui31.ContextMenu.Label,
|
|
3604
|
+
{
|
|
3605
|
+
"data-slot": "context-menu-label",
|
|
3606
|
+
"data-inset": inset,
|
|
3607
|
+
className: cn(
|
|
3608
|
+
"px-2 py-1.5 text-xs font-medium text-muted-foreground data-[inset]:pl-8",
|
|
3609
|
+
className
|
|
3610
|
+
),
|
|
3611
|
+
...props
|
|
3612
|
+
}
|
|
3613
|
+
);
|
|
3614
|
+
}
|
|
3615
|
+
function ContextMenuSeparator({
|
|
3616
|
+
className,
|
|
3617
|
+
...props
|
|
3618
|
+
}) {
|
|
3619
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
3620
|
+
import_radix_ui31.ContextMenu.Separator,
|
|
3621
|
+
{
|
|
3622
|
+
"data-slot": "context-menu-separator",
|
|
3623
|
+
className: cn("-mx-1 my-1 h-px bg-border", className),
|
|
3624
|
+
...props
|
|
3625
|
+
}
|
|
3626
|
+
);
|
|
3627
|
+
}
|
|
3628
|
+
function ContextMenuShortcut({
|
|
3629
|
+
className,
|
|
3630
|
+
...props
|
|
3631
|
+
}) {
|
|
3632
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
3633
|
+
"span",
|
|
3634
|
+
{
|
|
3635
|
+
"data-slot": "context-menu-shortcut",
|
|
3636
|
+
className: cn(
|
|
3637
|
+
"ml-auto text-xs tracking-widest text-muted-foreground",
|
|
3638
|
+
className
|
|
3639
|
+
),
|
|
3640
|
+
...props
|
|
3641
|
+
}
|
|
3642
|
+
);
|
|
3643
|
+
}
|
|
3644
|
+
function ContextMenuSub({
|
|
3645
|
+
...props
|
|
3646
|
+
}) {
|
|
3647
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_radix_ui31.ContextMenu.Sub, { "data-slot": "context-menu-sub", ...props });
|
|
3648
|
+
}
|
|
3649
|
+
function ContextMenuSubTrigger({
|
|
3650
|
+
className,
|
|
3651
|
+
inset,
|
|
3652
|
+
children,
|
|
3653
|
+
...props
|
|
3654
|
+
}) {
|
|
3655
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
|
|
3656
|
+
import_radix_ui31.ContextMenu.SubTrigger,
|
|
3657
|
+
{
|
|
3658
|
+
"data-slot": "context-menu-sub-trigger",
|
|
3659
|
+
"data-inset": inset,
|
|
3660
|
+
className: cn(
|
|
3661
|
+
overlayItemClass,
|
|
3662
|
+
"data-[state=open]:bg-accent data-[state=open]:text-accent-foreground data-[inset]:pl-8",
|
|
3663
|
+
className
|
|
3664
|
+
),
|
|
3665
|
+
...props,
|
|
3666
|
+
children: [
|
|
3667
|
+
children,
|
|
3668
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_lucide_react17.ChevronRightIcon, { className: "ml-auto size-4" })
|
|
3669
|
+
]
|
|
3670
|
+
}
|
|
3671
|
+
);
|
|
3672
|
+
}
|
|
3673
|
+
function ContextMenuSubContent({
|
|
3674
|
+
className,
|
|
3675
|
+
...props
|
|
3676
|
+
}) {
|
|
3677
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
3678
|
+
import_radix_ui31.ContextMenu.SubContent,
|
|
3679
|
+
{
|
|
3680
|
+
"data-slot": "context-menu-sub-content",
|
|
3681
|
+
className: cn(
|
|
3682
|
+
overlaySurfaceClass,
|
|
3683
|
+
"min-w-[8rem] origin-[var(--radix-context-menu-content-transform-origin)] overflow-hidden rounded-lg p-1",
|
|
3684
|
+
className
|
|
3685
|
+
),
|
|
3686
|
+
...props
|
|
3687
|
+
}
|
|
3688
|
+
);
|
|
3689
|
+
}
|
|
3690
|
+
|
|
3691
|
+
// src/ui/alert.tsx
|
|
3692
|
+
var import_class_variance_authority6 = require("class-variance-authority");
|
|
3693
|
+
var import_jsx_runtime43 = require("react/jsx-runtime");
|
|
3694
|
+
var alertVariants = (0, import_class_variance_authority6.cva)(
|
|
3695
|
+
"relative grid w-full gap-1 rounded-xl border px-4 py-3 text-sm [&>svg]:absolute [&>svg]:top-3.5 [&>svg]:left-4 [&>svg]:size-4 [&>svg+div]:translate-y-[-3px] [&:has(svg)]:pl-11",
|
|
3696
|
+
{
|
|
3697
|
+
variants: {
|
|
3698
|
+
variant: {
|
|
3699
|
+
default: "border-border bg-gradient-to-b from-elevated-from to-elevated-to text-foreground shadow-card",
|
|
3700
|
+
destructive: "border-destructive/45 bg-destructive/10 text-destructive [&>svg]:text-destructive"
|
|
3701
|
+
}
|
|
3702
|
+
},
|
|
3703
|
+
defaultVariants: {
|
|
3704
|
+
variant: "default"
|
|
3705
|
+
}
|
|
3706
|
+
}
|
|
3707
|
+
);
|
|
3708
|
+
function Alert({
|
|
3709
|
+
className,
|
|
3710
|
+
variant,
|
|
3711
|
+
...props
|
|
3712
|
+
}) {
|
|
3713
|
+
return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
3714
|
+
"div",
|
|
3715
|
+
{
|
|
3716
|
+
"data-slot": "alert",
|
|
3717
|
+
role: "alert",
|
|
3718
|
+
className: cn(alertVariants({ variant }), className),
|
|
3719
|
+
...props
|
|
3720
|
+
}
|
|
3721
|
+
);
|
|
3722
|
+
}
|
|
3723
|
+
function AlertTitle({ className, ...props }) {
|
|
3724
|
+
return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
3725
|
+
"div",
|
|
3726
|
+
{
|
|
3727
|
+
"data-slot": "alert-title",
|
|
3728
|
+
className: cn("font-medium tracking-tight", className),
|
|
3729
|
+
...props
|
|
3730
|
+
}
|
|
3731
|
+
);
|
|
3732
|
+
}
|
|
3733
|
+
function AlertDescription({ className, ...props }) {
|
|
3734
|
+
return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
3735
|
+
"div",
|
|
3736
|
+
{
|
|
3737
|
+
"data-slot": "alert-description",
|
|
3738
|
+
className: cn("text-sm text-muted-foreground [&_p]:leading-relaxed", className),
|
|
3739
|
+
...props
|
|
3740
|
+
}
|
|
3741
|
+
);
|
|
3742
|
+
}
|
|
3743
|
+
|
|
3744
|
+
// src/ui/card.tsx
|
|
3745
|
+
var import_jsx_runtime44 = require("react/jsx-runtime");
|
|
3746
|
+
function Card({ className, ...props }) {
|
|
3747
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
3748
|
+
"div",
|
|
3749
|
+
{
|
|
3750
|
+
"data-slot": "card",
|
|
3751
|
+
className: cn(
|
|
3752
|
+
TIMBAL_V2_ELEVATED_SURFACE,
|
|
3753
|
+
"flex flex-col gap-4 rounded-xl py-4 text-card-foreground",
|
|
3754
|
+
className
|
|
3755
|
+
),
|
|
3756
|
+
...props
|
|
3757
|
+
}
|
|
3758
|
+
);
|
|
3759
|
+
}
|
|
3760
|
+
function CardHeader({ className, ...props }) {
|
|
3761
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
3762
|
+
"div",
|
|
3763
|
+
{
|
|
3764
|
+
"data-slot": "card-header",
|
|
3765
|
+
className: cn("flex flex-col gap-1.5 px-4", className),
|
|
3766
|
+
...props
|
|
3767
|
+
}
|
|
3768
|
+
);
|
|
3769
|
+
}
|
|
3770
|
+
function CardTitle({ className, ...props }) {
|
|
3771
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
3772
|
+
"div",
|
|
3773
|
+
{
|
|
3774
|
+
"data-slot": "card-title",
|
|
3775
|
+
className: cn("text-base font-semibold leading-none", className),
|
|
3776
|
+
...props
|
|
3777
|
+
}
|
|
3778
|
+
);
|
|
3779
|
+
}
|
|
3780
|
+
function CardDescription({ className, ...props }) {
|
|
3781
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
3782
|
+
"div",
|
|
3783
|
+
{
|
|
3784
|
+
"data-slot": "card-description",
|
|
3785
|
+
className: cn("text-sm text-muted-foreground", className),
|
|
3786
|
+
...props
|
|
3787
|
+
}
|
|
3788
|
+
);
|
|
3789
|
+
}
|
|
3790
|
+
function CardContent({ className, ...props }) {
|
|
3791
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { "data-slot": "card-content", className: cn("px-4", className), ...props });
|
|
3792
|
+
}
|
|
3793
|
+
function CardFooter({ className, ...props }) {
|
|
3794
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
3795
|
+
"div",
|
|
3796
|
+
{
|
|
3797
|
+
"data-slot": "card-footer",
|
|
3798
|
+
className: cn("flex items-center px-4", className),
|
|
3799
|
+
...props
|
|
3800
|
+
}
|
|
3801
|
+
);
|
|
3802
|
+
}
|
|
3803
|
+
|
|
3804
|
+
// src/ui/skeleton.tsx
|
|
3805
|
+
var import_jsx_runtime45 = require("react/jsx-runtime");
|
|
3806
|
+
function Skeleton({ className, ...props }) {
|
|
3807
|
+
return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
3808
|
+
"div",
|
|
3809
|
+
{
|
|
3810
|
+
"data-slot": "skeleton",
|
|
3811
|
+
className: cn("animate-pulse rounded-lg bg-muted", className),
|
|
3812
|
+
...props
|
|
3813
|
+
}
|
|
3814
|
+
);
|
|
3815
|
+
}
|
|
3816
|
+
|
|
3817
|
+
// src/ui/chart.tsx
|
|
3818
|
+
var React4 = __toESM(require("react"), 1);
|
|
3819
|
+
var RechartsPrimitive = __toESM(require("recharts"), 1);
|
|
3820
|
+
var import_jsx_runtime46 = require("react/jsx-runtime");
|
|
3821
|
+
var THEMES = { light: "", dark: ".dark" };
|
|
3822
|
+
var ChartContext = React4.createContext(null);
|
|
3823
|
+
function useChart() {
|
|
3824
|
+
const context = React4.useContext(ChartContext);
|
|
3825
|
+
if (!context) {
|
|
3826
|
+
throw new Error("useChart must be used within a <ChartContainer />");
|
|
3827
|
+
}
|
|
3828
|
+
return context;
|
|
3829
|
+
}
|
|
3830
|
+
function ChartContainer({
|
|
3831
|
+
id,
|
|
3832
|
+
className,
|
|
3833
|
+
children,
|
|
3834
|
+
config,
|
|
3835
|
+
...props
|
|
3836
|
+
}) {
|
|
3837
|
+
const uniqueId = React4.useId();
|
|
3838
|
+
const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
|
|
3839
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(
|
|
3840
|
+
"div",
|
|
3841
|
+
{
|
|
3842
|
+
"data-slot": "chart",
|
|
3843
|
+
"data-chart": chartId,
|
|
3844
|
+
className: cn(
|
|
3845
|
+
"[&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden",
|
|
3846
|
+
className
|
|
3847
|
+
),
|
|
3848
|
+
...props,
|
|
3849
|
+
children: [
|
|
3850
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(ChartStyle, { id: chartId, config }),
|
|
3851
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(RechartsPrimitive.ResponsiveContainer, { children })
|
|
3852
|
+
]
|
|
3853
|
+
}
|
|
3854
|
+
) });
|
|
3855
|
+
}
|
|
3856
|
+
var ChartStyle = ({ id, config }) => {
|
|
3857
|
+
const colorConfig = Object.entries(config).filter(
|
|
3858
|
+
([, c]) => c.theme || c.color
|
|
3859
|
+
);
|
|
3860
|
+
if (!colorConfig.length) {
|
|
3861
|
+
return null;
|
|
3862
|
+
}
|
|
3863
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
3864
|
+
"style",
|
|
3865
|
+
{
|
|
3866
|
+
dangerouslySetInnerHTML: {
|
|
3867
|
+
__html: Object.entries(THEMES).map(
|
|
3868
|
+
([theme, prefix]) => `
|
|
3869
|
+
${prefix} [data-chart=${id}] {
|
|
3870
|
+
${colorConfig.map(([key, itemConfig]) => {
|
|
3871
|
+
const color = itemConfig.theme?.[theme] || itemConfig.color;
|
|
3872
|
+
return color ? ` --color-${key}: ${color};` : null;
|
|
3873
|
+
}).join("\n")}
|
|
3874
|
+
}
|
|
3875
|
+
`
|
|
3876
|
+
).join("\n")
|
|
3877
|
+
}
|
|
3878
|
+
}
|
|
3879
|
+
);
|
|
3880
|
+
};
|
|
3881
|
+
var ChartTooltip = RechartsPrimitive.Tooltip;
|
|
3882
|
+
function ChartTooltipContent({
|
|
3883
|
+
active,
|
|
3884
|
+
payload,
|
|
3885
|
+
className,
|
|
3886
|
+
indicator = "dot",
|
|
3887
|
+
hideLabel = false,
|
|
3888
|
+
hideIndicator = false,
|
|
3889
|
+
label,
|
|
3890
|
+
labelFormatter,
|
|
3891
|
+
labelClassName,
|
|
3892
|
+
formatter,
|
|
3893
|
+
color,
|
|
3894
|
+
nameKey,
|
|
3895
|
+
labelKey
|
|
3896
|
+
}) {
|
|
3897
|
+
const { config } = useChart();
|
|
3898
|
+
const tooltipLabel = React4.useMemo(() => {
|
|
3899
|
+
if (hideLabel || !payload?.length) {
|
|
3900
|
+
return null;
|
|
3901
|
+
}
|
|
3902
|
+
const [item] = payload;
|
|
3903
|
+
const key = `${labelKey || item?.dataKey || item?.name || "value"}`;
|
|
3904
|
+
const itemConfig = getPayloadConfigFromPayload(config, item, key);
|
|
3905
|
+
const value = !labelKey && typeof label === "string" ? config[label]?.label || label : itemConfig?.label;
|
|
3906
|
+
if (labelFormatter) {
|
|
3907
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: cn("font-medium", labelClassName), children: labelFormatter(value, payload) });
|
|
3908
|
+
}
|
|
3909
|
+
if (!value) {
|
|
3910
|
+
return null;
|
|
3911
|
+
}
|
|
3912
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: cn("font-medium", labelClassName), children: value });
|
|
3913
|
+
}, [label, labelFormatter, payload, hideLabel, labelClassName, config, labelKey]);
|
|
3914
|
+
if (!active || !payload?.length) {
|
|
3915
|
+
return null;
|
|
3916
|
+
}
|
|
3917
|
+
const nestLabel = payload.length === 1 && indicator !== "dot";
|
|
3918
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(
|
|
3919
|
+
"div",
|
|
3920
|
+
{
|
|
3921
|
+
className: cn(
|
|
3922
|
+
"border-border/50 bg-background grid min-w-[8rem] items-start gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs shadow-xl",
|
|
3923
|
+
"animate-in fade-in-0 zoom-in-95 duration-150",
|
|
3924
|
+
className
|
|
3925
|
+
),
|
|
3926
|
+
children: [
|
|
3927
|
+
!nestLabel ? tooltipLabel : null,
|
|
3928
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: "grid gap-1.5", children: payload.filter((item) => item.type !== "none").map((item, index) => {
|
|
3929
|
+
const key = `${nameKey || item.name || item.dataKey || "value"}`;
|
|
3930
|
+
const itemConfig = getPayloadConfigFromPayload(config, item, key);
|
|
3931
|
+
const indicatorColor = color || item.payload?.fill || item.color;
|
|
3932
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
3933
|
+
"div",
|
|
3934
|
+
{
|
|
3935
|
+
className: cn(
|
|
3936
|
+
"[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5",
|
|
3937
|
+
indicator === "dot" && "items-center"
|
|
3938
|
+
),
|
|
3939
|
+
children: formatter && item?.value !== void 0 && item.name ? formatter(item.value, item.name, item, index, item.payload) : /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(import_jsx_runtime46.Fragment, { children: [
|
|
3940
|
+
itemConfig?.icon ? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(itemConfig.icon, {}) : !hideIndicator && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
3941
|
+
"div",
|
|
3942
|
+
{
|
|
3943
|
+
className: cn(
|
|
3944
|
+
"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)",
|
|
3945
|
+
{
|
|
3946
|
+
"h-2.5 w-2.5": indicator === "dot",
|
|
3947
|
+
"w-1": indicator === "line",
|
|
3948
|
+
"w-0 border-[1.5px] border-dashed bg-transparent": indicator === "dashed",
|
|
3949
|
+
"my-0.5": nestLabel && indicator === "dashed"
|
|
3950
|
+
}
|
|
3951
|
+
),
|
|
3952
|
+
style: {
|
|
3953
|
+
"--color-bg": indicatorColor,
|
|
3954
|
+
"--color-border": indicatorColor
|
|
3955
|
+
}
|
|
3956
|
+
}
|
|
3957
|
+
),
|
|
3958
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(
|
|
3959
|
+
"div",
|
|
3960
|
+
{
|
|
3961
|
+
className: cn(
|
|
3962
|
+
"flex flex-1 justify-between leading-none",
|
|
3963
|
+
nestLabel ? "items-end" : "items-center"
|
|
3964
|
+
),
|
|
3965
|
+
children: [
|
|
3966
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "grid gap-1.5", children: [
|
|
3967
|
+
nestLabel ? tooltipLabel : null,
|
|
3968
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { className: "text-muted-foreground", children: itemConfig?.label || item.name })
|
|
3969
|
+
] }),
|
|
3970
|
+
item.value != null && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { className: "text-foreground font-mono font-medium tabular-nums", children: typeof item.value === "number" ? item.value.toLocaleString() : String(item.value) })
|
|
3971
|
+
]
|
|
3972
|
+
}
|
|
3973
|
+
)
|
|
3974
|
+
] })
|
|
3975
|
+
},
|
|
3976
|
+
`${item.dataKey ?? index}`
|
|
3977
|
+
);
|
|
3978
|
+
}) })
|
|
3979
|
+
]
|
|
3980
|
+
}
|
|
3981
|
+
);
|
|
3982
|
+
}
|
|
3983
|
+
var ChartLegend = RechartsPrimitive.Legend;
|
|
3984
|
+
function ChartLegendContent({
|
|
3985
|
+
className,
|
|
3986
|
+
hideIcon = false,
|
|
3987
|
+
payload,
|
|
3988
|
+
verticalAlign = "bottom",
|
|
3989
|
+
nameKey
|
|
3990
|
+
}) {
|
|
3991
|
+
const { config } = useChart();
|
|
3992
|
+
if (!payload?.length) {
|
|
3993
|
+
return null;
|
|
3994
|
+
}
|
|
3995
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
3996
|
+
"div",
|
|
3997
|
+
{
|
|
3998
|
+
className: cn(
|
|
3999
|
+
"flex items-center justify-center gap-4",
|
|
4000
|
+
verticalAlign === "top" ? "pb-3" : "pt-3",
|
|
4001
|
+
className
|
|
4002
|
+
),
|
|
4003
|
+
children: payload.filter((item) => item.type !== "none").map((item, index) => {
|
|
4004
|
+
const key = `${nameKey || item.dataKey || "value"}`;
|
|
4005
|
+
const itemConfig = getPayloadConfigFromPayload(config, item, key);
|
|
4006
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(
|
|
4007
|
+
"div",
|
|
4008
|
+
{
|
|
4009
|
+
className: "[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3",
|
|
4010
|
+
children: [
|
|
4011
|
+
itemConfig?.icon && !hideIcon ? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(itemConfig.icon, {}) : /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
4012
|
+
"div",
|
|
4013
|
+
{
|
|
4014
|
+
className: "h-2 w-2 shrink-0 rounded-[2px]",
|
|
4015
|
+
style: { backgroundColor: item.color }
|
|
4016
|
+
}
|
|
4017
|
+
),
|
|
4018
|
+
itemConfig?.label
|
|
4019
|
+
]
|
|
4020
|
+
},
|
|
4021
|
+
`${item.value ?? index}`
|
|
4022
|
+
);
|
|
4023
|
+
})
|
|
4024
|
+
}
|
|
4025
|
+
);
|
|
4026
|
+
}
|
|
4027
|
+
function getPayloadConfigFromPayload(config, payload, key) {
|
|
4028
|
+
if (typeof payload !== "object" || payload === null) {
|
|
4029
|
+
return void 0;
|
|
4030
|
+
}
|
|
4031
|
+
const payloadPayload = "payload" in payload && typeof payload.payload === "object" && payload.payload !== null ? payload.payload : void 0;
|
|
4032
|
+
let configLabelKey = key;
|
|
4033
|
+
if (key in payload && typeof payload[key] === "string") {
|
|
4034
|
+
configLabelKey = payload[key];
|
|
4035
|
+
} else if (payloadPayload && key in payloadPayload && typeof payloadPayload[key] === "string") {
|
|
4036
|
+
configLabelKey = payloadPayload[key];
|
|
4037
|
+
}
|
|
4038
|
+
return configLabelKey in config ? config[configLabelKey] : config[key];
|
|
4039
|
+
}
|
|
4040
|
+
|
|
4041
|
+
// src/ui/table.tsx
|
|
4042
|
+
var import_jsx_runtime47 = require("react/jsx-runtime");
|
|
4043
|
+
function Table({ className, ...props }) {
|
|
4044
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { "data-slot": "table-container", className: "relative w-full overflow-x-auto", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
4045
|
+
"table",
|
|
4046
|
+
{
|
|
4047
|
+
"data-slot": "table",
|
|
4048
|
+
className: cn("w-full caption-bottom text-sm", className),
|
|
4049
|
+
...props
|
|
4050
|
+
}
|
|
4051
|
+
) });
|
|
4052
|
+
}
|
|
4053
|
+
function TableHeader({ className, ...props }) {
|
|
4054
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
4055
|
+
"thead",
|
|
4056
|
+
{
|
|
4057
|
+
"data-slot": "table-header",
|
|
4058
|
+
className: cn("[&_tr]:border-b [&_tr]:border-border", className),
|
|
4059
|
+
...props
|
|
4060
|
+
}
|
|
4061
|
+
);
|
|
4062
|
+
}
|
|
4063
|
+
function TableBody({ className, ...props }) {
|
|
4064
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
4065
|
+
"tbody",
|
|
4066
|
+
{
|
|
4067
|
+
"data-slot": "table-body",
|
|
4068
|
+
className: cn("[&_tr:last-child]:border-0", className),
|
|
4069
|
+
...props
|
|
4070
|
+
}
|
|
4071
|
+
);
|
|
4072
|
+
}
|
|
4073
|
+
function TableFooter({ className, ...props }) {
|
|
4074
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
4075
|
+
"tfoot",
|
|
4076
|
+
{
|
|
4077
|
+
"data-slot": "table-footer",
|
|
4078
|
+
className: cn(
|
|
4079
|
+
"border-t border-border bg-muted/50 font-medium [&>tr]:last:border-b-0",
|
|
4080
|
+
className
|
|
4081
|
+
),
|
|
4082
|
+
...props
|
|
4083
|
+
}
|
|
4084
|
+
);
|
|
4085
|
+
}
|
|
4086
|
+
function TableRow({ className, ...props }) {
|
|
4087
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
4088
|
+
"tr",
|
|
4089
|
+
{
|
|
4090
|
+
"data-slot": "table-row",
|
|
4091
|
+
className: cn(
|
|
4092
|
+
"border-b border-border transition-colors hover:bg-muted/40 data-[state=selected]:bg-muted",
|
|
4093
|
+
className
|
|
4094
|
+
),
|
|
4095
|
+
...props
|
|
4096
|
+
}
|
|
4097
|
+
);
|
|
4098
|
+
}
|
|
4099
|
+
function TableHead({ className, ...props }) {
|
|
4100
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
4101
|
+
"th",
|
|
4102
|
+
{
|
|
4103
|
+
"data-slot": "table-head",
|
|
4104
|
+
className: cn(
|
|
4105
|
+
"h-10 px-3 text-left align-middle text-xs font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0",
|
|
4106
|
+
className
|
|
4107
|
+
),
|
|
4108
|
+
...props
|
|
4109
|
+
}
|
|
4110
|
+
);
|
|
4111
|
+
}
|
|
4112
|
+
function TableCell({ className, ...props }) {
|
|
4113
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
4114
|
+
"td",
|
|
4115
|
+
{
|
|
4116
|
+
"data-slot": "table-cell",
|
|
4117
|
+
className: cn(
|
|
4118
|
+
"p-3 align-middle text-sm [&:has([role=checkbox])]:pr-0",
|
|
4119
|
+
className
|
|
4120
|
+
),
|
|
4121
|
+
...props
|
|
4122
|
+
}
|
|
4123
|
+
);
|
|
4124
|
+
}
|
|
4125
|
+
function TableCaption({ className, ...props }) {
|
|
4126
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
4127
|
+
"caption",
|
|
4128
|
+
{
|
|
4129
|
+
"data-slot": "table-caption",
|
|
4130
|
+
className: cn("mt-4 text-sm text-muted-foreground", className),
|
|
4131
|
+
...props
|
|
4132
|
+
}
|
|
4133
|
+
);
|
|
4134
|
+
}
|
|
4135
|
+
|
|
4136
|
+
// src/ui/toast.tsx
|
|
4137
|
+
var import_radix_ui32 = require("radix-ui");
|
|
4138
|
+
var import_lucide_react18 = require("lucide-react");
|
|
4139
|
+
var import_jsx_runtime48 = require("react/jsx-runtime");
|
|
4140
|
+
function ToastProvider({
|
|
4141
|
+
...props
|
|
4142
|
+
}) {
|
|
4143
|
+
return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_radix_ui32.Toast.Provider, { "data-slot": "toast-provider", ...props });
|
|
4144
|
+
}
|
|
4145
|
+
function ToastViewport({
|
|
4146
|
+
className,
|
|
4147
|
+
...props
|
|
4148
|
+
}) {
|
|
4149
|
+
return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
|
|
4150
|
+
import_radix_ui32.Toast.Viewport,
|
|
4151
|
+
{
|
|
4152
|
+
"data-slot": "toast-viewport",
|
|
4153
|
+
className: cn(
|
|
4154
|
+
"fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse gap-2 p-4 sm:top-auto sm:right-0 sm:bottom-0 sm:max-w-[420px] sm:flex-col",
|
|
4155
|
+
className
|
|
4156
|
+
),
|
|
4157
|
+
...props
|
|
4158
|
+
}
|
|
4159
|
+
);
|
|
4160
|
+
}
|
|
4161
|
+
function Toast({
|
|
4162
|
+
className,
|
|
4163
|
+
variant = "default",
|
|
4164
|
+
...props
|
|
4165
|
+
}) {
|
|
4166
|
+
return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
|
|
4167
|
+
import_radix_ui32.Toast.Root,
|
|
4168
|
+
{
|
|
4169
|
+
"data-slot": "toast",
|
|
4170
|
+
className: cn(
|
|
4171
|
+
TIMBAL_V2_ELEVATED_SURFACE,
|
|
4172
|
+
"group pointer-events-auto relative flex w-full items-center justify-between gap-3 overflow-hidden rounded-xl p-4 pr-8 shadow-card-elevated transition-all",
|
|
4173
|
+
"data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-80 data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full data-[state=closed]:slide-out-to-right-full",
|
|
4174
|
+
variant === "destructive" && "border-destructive/45 bg-destructive/10 text-destructive",
|
|
4175
|
+
className
|
|
4176
|
+
),
|
|
4177
|
+
...props
|
|
4178
|
+
}
|
|
4179
|
+
);
|
|
4180
|
+
}
|
|
4181
|
+
function ToastAction({
|
|
4182
|
+
className,
|
|
4183
|
+
...props
|
|
4184
|
+
}) {
|
|
4185
|
+
return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
|
|
4186
|
+
import_radix_ui32.Toast.Action,
|
|
4187
|
+
{
|
|
4188
|
+
"data-slot": "toast-action",
|
|
4189
|
+
className: cn(
|
|
4190
|
+
"inline-flex h-8 shrink-0 items-center justify-center rounded-lg border border-border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-muted focus:ring-2 focus:ring-foreground/10 focus:outline-hidden disabled:pointer-events-none disabled:opacity-50",
|
|
4191
|
+
className
|
|
4192
|
+
),
|
|
4193
|
+
...props
|
|
4194
|
+
}
|
|
4195
|
+
);
|
|
4196
|
+
}
|
|
4197
|
+
function ToastClose({
|
|
4198
|
+
className,
|
|
4199
|
+
...props
|
|
4200
|
+
}) {
|
|
4201
|
+
return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
|
|
4202
|
+
import_radix_ui32.Toast.Close,
|
|
4203
|
+
{
|
|
4204
|
+
"data-slot": "toast-close",
|
|
4205
|
+
className: cn(
|
|
4206
|
+
"absolute top-3 right-3 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-foreground/10 focus:outline-hidden",
|
|
4207
|
+
className
|
|
4208
|
+
),
|
|
4209
|
+
"toast-close": "",
|
|
4210
|
+
...props,
|
|
4211
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_lucide_react18.XIcon, { className: "size-4" })
|
|
4212
|
+
}
|
|
4213
|
+
);
|
|
4214
|
+
}
|
|
4215
|
+
function ToastTitle({
|
|
4216
|
+
className,
|
|
4217
|
+
...props
|
|
4218
|
+
}) {
|
|
4219
|
+
return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
|
|
4220
|
+
import_radix_ui32.Toast.Title,
|
|
4221
|
+
{
|
|
4222
|
+
"data-slot": "toast-title",
|
|
4223
|
+
className: cn("text-sm font-medium", className),
|
|
4224
|
+
...props
|
|
4225
|
+
}
|
|
4226
|
+
);
|
|
4227
|
+
}
|
|
4228
|
+
function ToastDescription({
|
|
4229
|
+
className,
|
|
4230
|
+
...props
|
|
4231
|
+
}) {
|
|
4232
|
+
return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
|
|
4233
|
+
import_radix_ui32.Toast.Description,
|
|
4234
|
+
{
|
|
4235
|
+
"data-slot": "toast-description",
|
|
4236
|
+
className: cn("text-sm text-muted-foreground", className),
|
|
4237
|
+
...props
|
|
4238
|
+
}
|
|
4239
|
+
);
|
|
4240
|
+
}
|
|
4241
|
+
|
|
4242
|
+
// src/ui/use-toast.ts
|
|
4243
|
+
var React5 = __toESM(require("react"), 1);
|
|
4244
|
+
var TOAST_LIMIT = 3;
|
|
4245
|
+
var TOAST_REMOVE_DELAY = 5e3;
|
|
4246
|
+
var listeners = /* @__PURE__ */ new Set();
|
|
4247
|
+
var memoryState = {
|
|
4248
|
+
toasts: [],
|
|
4249
|
+
add: () => "",
|
|
4250
|
+
dismiss: () => {
|
|
4251
|
+
},
|
|
4252
|
+
remove: () => {
|
|
4253
|
+
}
|
|
4254
|
+
};
|
|
4255
|
+
function dispatch(partial) {
|
|
4256
|
+
memoryState = { ...memoryState, ...partial };
|
|
4257
|
+
for (const listener of listeners) listener(memoryState);
|
|
4258
|
+
}
|
|
4259
|
+
function genId() {
|
|
4260
|
+
return `${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;
|
|
4261
|
+
}
|
|
4262
|
+
var removeTimeouts = /* @__PURE__ */ new Map();
|
|
4263
|
+
function scheduleRemove(id, delay = TOAST_REMOVE_DELAY) {
|
|
4264
|
+
if (removeTimeouts.has(id)) return;
|
|
4265
|
+
const timeout = setTimeout(() => {
|
|
4266
|
+
removeTimeouts.delete(id);
|
|
4267
|
+
dispatch({
|
|
4268
|
+
toasts: memoryState.toasts.filter((t) => t.id !== id)
|
|
4269
|
+
});
|
|
4270
|
+
}, delay);
|
|
4271
|
+
removeTimeouts.set(id, timeout);
|
|
4272
|
+
}
|
|
4273
|
+
function addToast(toastInput) {
|
|
4274
|
+
const id = genId();
|
|
4275
|
+
dispatch({
|
|
4276
|
+
toasts: [{ ...toastInput, id }, ...memoryState.toasts].slice(0, TOAST_LIMIT)
|
|
4277
|
+
});
|
|
4278
|
+
scheduleRemove(id, toastInput.duration ?? TOAST_REMOVE_DELAY);
|
|
4279
|
+
return id;
|
|
4280
|
+
}
|
|
4281
|
+
function dismissToast(id) {
|
|
4282
|
+
scheduleRemove(id, 300);
|
|
4283
|
+
}
|
|
4284
|
+
memoryState = {
|
|
4285
|
+
toasts: [],
|
|
4286
|
+
add: addToast,
|
|
4287
|
+
dismiss: dismissToast,
|
|
4288
|
+
remove: (id) => {
|
|
4289
|
+
dispatch({ toasts: memoryState.toasts.filter((t) => t.id !== id) });
|
|
4290
|
+
}
|
|
4291
|
+
};
|
|
4292
|
+
function toast(input) {
|
|
4293
|
+
return memoryState.add(input);
|
|
4294
|
+
}
|
|
4295
|
+
function useToast() {
|
|
4296
|
+
const [state, setState] = React5.useState(memoryState);
|
|
4297
|
+
React5.useEffect(() => {
|
|
4298
|
+
listeners.add(setState);
|
|
4299
|
+
return () => {
|
|
4300
|
+
listeners.delete(setState);
|
|
4301
|
+
};
|
|
4302
|
+
}, []);
|
|
4303
|
+
return {
|
|
4304
|
+
toasts: state.toasts,
|
|
4305
|
+
toast,
|
|
4306
|
+
dismiss: state.dismiss
|
|
4307
|
+
};
|
|
4308
|
+
}
|
|
4309
|
+
|
|
4310
|
+
// src/ui/toaster.tsx
|
|
4311
|
+
var import_jsx_runtime49 = require("react/jsx-runtime");
|
|
4312
|
+
function Toaster() {
|
|
4313
|
+
const { toasts, dismiss } = useToast();
|
|
4314
|
+
return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(ToastProvider, { children: [
|
|
4315
|
+
toasts.map(({ id, title, description, variant }) => /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(
|
|
4316
|
+
Toast,
|
|
4317
|
+
{
|
|
4318
|
+
variant,
|
|
4319
|
+
onOpenChange: (open) => !open && dismiss(id),
|
|
4320
|
+
children: [
|
|
4321
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "grid gap-1", children: [
|
|
4322
|
+
title ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(ToastTitle, { children: title }) : null,
|
|
4323
|
+
description ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(ToastDescription, { children: description }) : null
|
|
4324
|
+
] }),
|
|
4325
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(ToastClose, {})
|
|
4326
|
+
]
|
|
4327
|
+
},
|
|
4328
|
+
id
|
|
4329
|
+
)),
|
|
4330
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(ToastViewport, {})
|
|
4331
|
+
] });
|
|
4332
|
+
}
|
|
4333
|
+
|
|
4334
|
+
// src/ui/shimmer.tsx
|
|
4335
|
+
var import_react = require("motion/react");
|
|
4336
|
+
var import_react2 = require("react");
|
|
4337
|
+
var import_jsx_runtime50 = require("react/jsx-runtime");
|
|
4338
|
+
var ShimmerComponent = ({
|
|
4339
|
+
children,
|
|
4340
|
+
as: Component = "p",
|
|
4341
|
+
className,
|
|
4342
|
+
duration = 2,
|
|
4343
|
+
spread = 2
|
|
4344
|
+
}) => {
|
|
4345
|
+
const MotionComponent = import_react.motion.create(
|
|
4346
|
+
Component
|
|
4347
|
+
);
|
|
4348
|
+
const dynamicSpread = (0, import_react2.useMemo)(
|
|
4349
|
+
() => (children?.length ?? 0) * spread,
|
|
4350
|
+
[children, spread]
|
|
4351
|
+
);
|
|
4352
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
4353
|
+
MotionComponent,
|
|
4354
|
+
{
|
|
4355
|
+
animate: { backgroundPosition: "0% center" },
|
|
4356
|
+
className: cn(
|
|
4357
|
+
"relative inline-block bg-[length:250%_100%,auto] bg-clip-text text-transparent",
|
|
4358
|
+
"[--bg:linear-gradient(90deg,#0000_calc(50%-var(--spread)),var(--color-background),#0000_calc(50%+var(--spread)))] [background-repeat:no-repeat,padding-box]",
|
|
4359
|
+
className
|
|
4360
|
+
),
|
|
4361
|
+
initial: { backgroundPosition: "100% center" },
|
|
4362
|
+
style: {
|
|
4363
|
+
"--spread": `${dynamicSpread}px`,
|
|
4364
|
+
backgroundImage: "var(--bg), linear-gradient(var(--color-muted-foreground), var(--color-muted-foreground))"
|
|
4365
|
+
},
|
|
4366
|
+
transition: {
|
|
4367
|
+
repeat: Number.POSITIVE_INFINITY,
|
|
4368
|
+
duration,
|
|
4369
|
+
ease: "linear"
|
|
4370
|
+
},
|
|
4371
|
+
children
|
|
4372
|
+
}
|
|
4373
|
+
);
|
|
4374
|
+
};
|
|
4375
|
+
var Shimmer = (0, import_react2.memo)(ShimmerComponent);
|
|
4376
|
+
|
|
4377
|
+
// src/ui/pill-segmented-tabs.tsx
|
|
4378
|
+
var import_react3 = require("react");
|
|
4379
|
+
var import_react4 = require("motion/react");
|
|
4380
|
+
|
|
4381
|
+
// src/design/pill-segmented-classes.ts
|
|
4382
|
+
var pillSegmentedTrackBase = "inline-flex w-fit max-w-max shrink-0 self-start items-center rounded-full";
|
|
4383
|
+
var pillSegmentedTrackSurface = cn(
|
|
4384
|
+
"bg-pill-segmented-track border border-[var(--pill-segmented-track-border)]",
|
|
4385
|
+
"shadow-[var(--pill-segmented-track-shadow)]"
|
|
4386
|
+
);
|
|
4387
|
+
var pillSegmentedTrackClass = cn(
|
|
4388
|
+
pillSegmentedTrackBase,
|
|
4389
|
+
pillSegmentedTrackSurface,
|
|
4390
|
+
"gap-1 p-1"
|
|
4391
|
+
);
|
|
4392
|
+
var pillSegmentedTrackFlushClass = cn(
|
|
4393
|
+
pillSegmentedTrackBase,
|
|
4394
|
+
pillSegmentedTrackSurface,
|
|
4395
|
+
"h-[var(--studio-chrome-pill-height)] items-center gap-0.5 overflow-visible p-0.5"
|
|
4396
|
+
);
|
|
4397
|
+
var pillSegmentedSegmentClass = cn(
|
|
4398
|
+
"relative flex items-center gap-1.5 rounded-full px-4 py-1.5 text-xs font-normal transition-colors"
|
|
4399
|
+
);
|
|
4400
|
+
var pillSegmentedFlushSegmentClass = cn(
|
|
4401
|
+
"relative box-border inline-flex h-9 min-h-9 items-center justify-center gap-1.5 rounded-full px-3.5 py-0",
|
|
4402
|
+
"text-sm font-normal leading-tight transition-colors"
|
|
4403
|
+
);
|
|
4404
|
+
var pillSegmentedActiveIndicatorClass = cn(
|
|
4405
|
+
"absolute inset-0 rounded-full",
|
|
4406
|
+
"border border-[var(--pill-segmented-indicator-border)]",
|
|
4407
|
+
"bg-gradient-to-b from-[var(--pill-segmented-indicator-from)] to-[var(--pill-segmented-indicator-to)]",
|
|
4408
|
+
"shadow-[var(--pill-segmented-indicator-shadow)]"
|
|
4409
|
+
);
|
|
4410
|
+
|
|
4411
|
+
// src/ui/pill-segmented-tabs.tsx
|
|
4412
|
+
var import_jsx_runtime51 = require("react/jsx-runtime");
|
|
1106
4413
|
var PillTab = ({
|
|
1107
4414
|
tabKey,
|
|
1108
4415
|
label,
|
|
@@ -1116,7 +4423,7 @@ var PillTab = ({
|
|
|
1116
4423
|
const handlePress = (0, import_react3.useCallback)(() => {
|
|
1117
4424
|
if (!disabled) onSelect(tabKey);
|
|
1118
4425
|
}, [disabled, onSelect, tabKey]);
|
|
1119
|
-
return /* @__PURE__ */ (0,
|
|
4426
|
+
return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
|
|
1120
4427
|
"button",
|
|
1121
4428
|
{
|
|
1122
4429
|
type: "button",
|
|
@@ -1129,15 +4436,15 @@ var PillTab = ({
|
|
|
1129
4436
|
!disabled && (isActive ? "text-foreground" : "text-muted-foreground hover:text-foreground")
|
|
1130
4437
|
),
|
|
1131
4438
|
children: [
|
|
1132
|
-
isActive && animateIndicator ? /* @__PURE__ */ (0,
|
|
4439
|
+
isActive && animateIndicator ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
1133
4440
|
import_react4.motion.div,
|
|
1134
4441
|
{
|
|
1135
4442
|
layoutId,
|
|
1136
4443
|
className: pillSegmentedActiveIndicatorClass,
|
|
1137
4444
|
transition: { type: "spring", duration: 0.3, bounce: 0.15 }
|
|
1138
4445
|
}
|
|
1139
|
-
) : isActive ? /* @__PURE__ */ (0,
|
|
1140
|
-
/* @__PURE__ */ (0,
|
|
4446
|
+
) : isActive ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: pillSegmentedActiveIndicatorClass, "aria-hidden": true }) : null,
|
|
4447
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "relative z-10 whitespace-nowrap", children: label })
|
|
1141
4448
|
]
|
|
1142
4449
|
}
|
|
1143
4450
|
);
|
|
@@ -1157,7 +4464,7 @@ var PillSegmentedTabs = ({
|
|
|
1157
4464
|
const isFlush = trackVariant === "flush";
|
|
1158
4465
|
const trackClass = isFlush ? pillSegmentedTrackFlushClass : pillSegmentedTrackClass;
|
|
1159
4466
|
const segmentClassName = isFlush ? pillSegmentedFlushSegmentClass : pillSegmentedSegmentClass;
|
|
1160
|
-
return /* @__PURE__ */ (0,
|
|
4467
|
+
return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { role: "group", "aria-label": ariaLabel, className: cn(trackClass, className), children: tabs.map((tab) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
1161
4468
|
PillTab,
|
|
1162
4469
|
{
|
|
1163
4470
|
tabKey: tab.key,
|
|
@@ -1175,10 +4482,96 @@ var PillSegmentedTabs = ({
|
|
|
1175
4482
|
var MemoPillSegmentedTabs = (0, import_react3.memo)(PillSegmentedTabs);
|
|
1176
4483
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1177
4484
|
0 && (module.exports = {
|
|
4485
|
+
Accordion,
|
|
4486
|
+
AccordionContent,
|
|
4487
|
+
AccordionItem,
|
|
4488
|
+
AccordionTrigger,
|
|
4489
|
+
Alert,
|
|
4490
|
+
AlertDescription,
|
|
4491
|
+
AlertDialog,
|
|
4492
|
+
AlertDialogAction,
|
|
4493
|
+
AlertDialogCancel,
|
|
4494
|
+
AlertDialogContent,
|
|
4495
|
+
AlertDialogDescription,
|
|
4496
|
+
AlertDialogFooter,
|
|
4497
|
+
AlertDialogHeader,
|
|
4498
|
+
AlertDialogOverlay,
|
|
4499
|
+
AlertDialogPortal,
|
|
4500
|
+
AlertDialogTitle,
|
|
4501
|
+
AlertDialogTrigger,
|
|
4502
|
+
AlertTitle,
|
|
4503
|
+
AspectRatio,
|
|
1178
4504
|
Avatar,
|
|
1179
4505
|
AvatarFallback,
|
|
1180
4506
|
AvatarImage,
|
|
4507
|
+
Badge,
|
|
4508
|
+
Breadcrumb,
|
|
4509
|
+
BreadcrumbEllipsis,
|
|
4510
|
+
BreadcrumbItem,
|
|
4511
|
+
BreadcrumbLink,
|
|
4512
|
+
BreadcrumbList,
|
|
4513
|
+
BreadcrumbPage,
|
|
4514
|
+
BreadcrumbSeparator,
|
|
1181
4515
|
Button,
|
|
4516
|
+
CONTROL_SIZE,
|
|
4517
|
+
Calendar,
|
|
4518
|
+
CalendarDayButton,
|
|
4519
|
+
Card,
|
|
4520
|
+
CardContent,
|
|
4521
|
+
CardDescription,
|
|
4522
|
+
CardFooter,
|
|
4523
|
+
CardHeader,
|
|
4524
|
+
CardTitle,
|
|
4525
|
+
ChartContainer,
|
|
4526
|
+
ChartLegend,
|
|
4527
|
+
ChartLegendContent,
|
|
4528
|
+
ChartStyle,
|
|
4529
|
+
ChartTooltip,
|
|
4530
|
+
ChartTooltipContent,
|
|
4531
|
+
Checkbox,
|
|
4532
|
+
Collapsible,
|
|
4533
|
+
CollapsibleContent,
|
|
4534
|
+
CollapsibleTrigger,
|
|
4535
|
+
Combobox,
|
|
4536
|
+
ComboboxAnchor,
|
|
4537
|
+
ComboboxCommand,
|
|
4538
|
+
ComboboxContent,
|
|
4539
|
+
ComboboxEmpty,
|
|
4540
|
+
ComboboxGroup,
|
|
4541
|
+
ComboboxInput,
|
|
4542
|
+
ComboboxItem,
|
|
4543
|
+
ComboboxList,
|
|
4544
|
+
ComboboxSeparator,
|
|
4545
|
+
ComboboxShortcut,
|
|
4546
|
+
ComboboxTrigger,
|
|
4547
|
+
Command,
|
|
4548
|
+
CommandDialog,
|
|
4549
|
+
CommandEmpty,
|
|
4550
|
+
CommandGroup,
|
|
4551
|
+
CommandInput,
|
|
4552
|
+
CommandItem,
|
|
4553
|
+
CommandList,
|
|
4554
|
+
CommandSeparator,
|
|
4555
|
+
CommandShortcut,
|
|
4556
|
+
ContextMenu,
|
|
4557
|
+
ContextMenuCheckboxItem,
|
|
4558
|
+
ContextMenuContent,
|
|
4559
|
+
ContextMenuGroup,
|
|
4560
|
+
ContextMenuItem,
|
|
4561
|
+
ContextMenuLabel,
|
|
4562
|
+
ContextMenuRadioGroup,
|
|
4563
|
+
ContextMenuRadioItem,
|
|
4564
|
+
ContextMenuSeparator,
|
|
4565
|
+
ContextMenuShortcut,
|
|
4566
|
+
ContextMenuSub,
|
|
4567
|
+
ContextMenuSubContent,
|
|
4568
|
+
ContextMenuSubTrigger,
|
|
4569
|
+
ContextMenuTrigger,
|
|
4570
|
+
DatePicker,
|
|
4571
|
+
DatePickerButton,
|
|
4572
|
+
DatePickerCalendar,
|
|
4573
|
+
DatePickerContent,
|
|
4574
|
+
DatePickerTrigger,
|
|
1182
4575
|
Dialog,
|
|
1183
4576
|
DialogClose,
|
|
1184
4577
|
DialogContent,
|
|
@@ -1203,12 +4596,69 @@ var MemoPillSegmentedTabs = (0, import_react3.memo)(PillSegmentedTabs);
|
|
|
1203
4596
|
DropdownMenuSubContent,
|
|
1204
4597
|
DropdownMenuSubTrigger,
|
|
1205
4598
|
DropdownMenuTrigger,
|
|
4599
|
+
Form,
|
|
4600
|
+
FormControl,
|
|
4601
|
+
FormField,
|
|
4602
|
+
FormItem,
|
|
4603
|
+
FormLabel,
|
|
4604
|
+
FormMessage,
|
|
4605
|
+
FormSubmit,
|
|
4606
|
+
HoverCard,
|
|
4607
|
+
HoverCardContent,
|
|
4608
|
+
HoverCardTrigger,
|
|
4609
|
+
Input,
|
|
4610
|
+
InputGroup,
|
|
4611
|
+
InputGroupAddon,
|
|
4612
|
+
InputGroupInput,
|
|
4613
|
+
InputGroupText,
|
|
4614
|
+
InputOTP,
|
|
4615
|
+
InputOTPGroup,
|
|
4616
|
+
InputOTPHiddenInput,
|
|
4617
|
+
InputOTPSeparator,
|
|
4618
|
+
InputOTPSlot,
|
|
4619
|
+
Kbd,
|
|
4620
|
+
KbdGroup,
|
|
4621
|
+
Label,
|
|
1206
4622
|
MemoPillSegmentedTabs,
|
|
4623
|
+
Menubar,
|
|
4624
|
+
MenubarCheckboxItem,
|
|
4625
|
+
MenubarContent,
|
|
4626
|
+
MenubarItem,
|
|
4627
|
+
MenubarLabel,
|
|
4628
|
+
MenubarMenu,
|
|
4629
|
+
MenubarRadioGroup,
|
|
4630
|
+
MenubarRadioItem,
|
|
4631
|
+
MenubarSeparator,
|
|
4632
|
+
MenubarShortcut,
|
|
4633
|
+
MenubarSub,
|
|
4634
|
+
MenubarSubContent,
|
|
4635
|
+
MenubarSubTrigger,
|
|
4636
|
+
MenubarTrigger,
|
|
4637
|
+
NavigationMenu,
|
|
4638
|
+
NavigationMenuContent,
|
|
4639
|
+
NavigationMenuIndicator,
|
|
4640
|
+
NavigationMenuItem,
|
|
4641
|
+
NavigationMenuLink,
|
|
4642
|
+
NavigationMenuList,
|
|
4643
|
+
NavigationMenuTrigger,
|
|
4644
|
+
NavigationMenuViewport,
|
|
4645
|
+
Pagination,
|
|
4646
|
+
PaginationContent,
|
|
4647
|
+
PaginationEllipsis,
|
|
4648
|
+
PaginationItem,
|
|
4649
|
+
PaginationLink,
|
|
4650
|
+
PaginationNext,
|
|
4651
|
+
PaginationPrevious,
|
|
1207
4652
|
PillSegmentedTabs,
|
|
1208
4653
|
Popover,
|
|
1209
4654
|
PopoverAnchor,
|
|
1210
4655
|
PopoverContent,
|
|
1211
4656
|
PopoverTrigger,
|
|
4657
|
+
Progress,
|
|
4658
|
+
RadioGroup,
|
|
4659
|
+
RadioGroupItem,
|
|
4660
|
+
ScrollArea,
|
|
4661
|
+
ScrollBar,
|
|
1212
4662
|
Select,
|
|
1213
4663
|
SelectContent,
|
|
1214
4664
|
SelectGroup,
|
|
@@ -1219,10 +4669,63 @@ var MemoPillSegmentedTabs = (0, import_react3.memo)(PillSegmentedTabs);
|
|
|
1219
4669
|
SelectSeparator,
|
|
1220
4670
|
SelectTrigger,
|
|
1221
4671
|
SelectValue,
|
|
4672
|
+
Separator,
|
|
4673
|
+
Sheet,
|
|
4674
|
+
SheetClose,
|
|
4675
|
+
SheetContent,
|
|
4676
|
+
SheetDescription,
|
|
4677
|
+
SheetFooter,
|
|
4678
|
+
SheetHeader,
|
|
4679
|
+
SheetTitle,
|
|
4680
|
+
SheetTrigger,
|
|
1222
4681
|
Shimmer,
|
|
4682
|
+
Skeleton,
|
|
4683
|
+
Slider,
|
|
4684
|
+
Spinner,
|
|
4685
|
+
Switch,
|
|
4686
|
+
Table,
|
|
4687
|
+
TableBody,
|
|
4688
|
+
TableCaption,
|
|
4689
|
+
TableCell,
|
|
4690
|
+
TableFooter,
|
|
4691
|
+
TableHead,
|
|
4692
|
+
TableHeader,
|
|
4693
|
+
TableRow,
|
|
4694
|
+
Textarea,
|
|
1223
4695
|
TimbalV2Button,
|
|
4696
|
+
Toast,
|
|
4697
|
+
ToastAction,
|
|
4698
|
+
ToastClose,
|
|
4699
|
+
ToastDescription,
|
|
4700
|
+
ToastProvider,
|
|
4701
|
+
ToastTitle,
|
|
4702
|
+
ToastViewport,
|
|
4703
|
+
Toaster,
|
|
4704
|
+
Toggle,
|
|
4705
|
+
ToggleGroup,
|
|
4706
|
+
ToggleGroupItem,
|
|
4707
|
+
Toolbar,
|
|
4708
|
+
ToolbarButton,
|
|
4709
|
+
ToolbarLink,
|
|
4710
|
+
ToolbarSeparator,
|
|
4711
|
+
ToolbarToggleGroup,
|
|
4712
|
+
ToolbarToggleItem,
|
|
1224
4713
|
Tooltip,
|
|
1225
4714
|
TooltipContent,
|
|
1226
4715
|
TooltipProvider,
|
|
1227
|
-
TooltipTrigger
|
|
4716
|
+
TooltipTrigger,
|
|
4717
|
+
alertVariants,
|
|
4718
|
+
badgeVariants,
|
|
4719
|
+
controlClass,
|
|
4720
|
+
controlSurfaceClass,
|
|
4721
|
+
formatPickerDate,
|
|
4722
|
+
navigationMenuTriggerStyle,
|
|
4723
|
+
overlayAnimationClass,
|
|
4724
|
+
overlayItemClass,
|
|
4725
|
+
overlayListPanelClass,
|
|
4726
|
+
overlaySurfaceClass,
|
|
4727
|
+
toast,
|
|
4728
|
+
toggleVariants,
|
|
4729
|
+
useChart,
|
|
4730
|
+
useToast
|
|
1228
4731
|
});
|