@litelens/design-system 1.0.3

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.
@@ -0,0 +1,735 @@
1
+ import { XIcon, ChevronRightIcon, CheckIcon } from './chunk-7YPL4ZPM.js';
2
+ import { cn } from './chunk-QUNCRUSO.js';
3
+ import { mergeProps } from '@base-ui/react/merge-props';
4
+ import { useRender } from '@base-ui/react/use-render';
5
+ import { cva } from 'class-variance-authority';
6
+ import { Button as Button$1 } from '@base-ui/react/button';
7
+ import { jsx, jsxs } from 'react/jsx-runtime';
8
+ import { Dialog as Dialog$1 } from '@base-ui/react/dialog';
9
+ import * as React from 'react';
10
+ import { Menu } from '@base-ui/react/menu';
11
+ import { ScrollArea as ScrollArea$1 } from '@base-ui/react/scroll-area';
12
+ export { toast } from 'sonner';
13
+ import { Tooltip as Tooltip$1 } from '@base-ui/react/tooltip';
14
+
15
+ var badgeVariants = cva(
16
+ "group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-interactive focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/75 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",
17
+ {
18
+ variants: {
19
+ variant: {
20
+ default: "bg-primary text-primary-foreground [a]:hover:bg-primary/80",
21
+ secondary: "bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",
22
+ destructive: "bg-destructive/15 text-destructive border-transparent focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",
23
+ success: "bg-success/15 text-success border-transparent focus-visible:ring-success/20 dark:focus-visible:ring-success/40 [a]:hover:bg-success/20",
24
+ warning: "bg-warning/15 text-warning border-transparent focus-visible:ring-warning/20 dark:focus-visible:ring-warning/40 [a]:hover:bg-warning/20",
25
+ info: "bg-info/15 text-info border-transparent focus-visible:ring-info/20 dark:focus-visible:ring-info/40 [a]:hover:bg-info/20",
26
+ danger: "bg-danger/15 text-danger border-transparent focus-visible:ring-danger/20 dark:focus-visible:ring-danger/40 [a]:hover:bg-danger/20",
27
+ ghost: "bg-muted text-muted-foreground border-transparent [a]:hover:bg-muted/70"
28
+ }
29
+ },
30
+ defaultVariants: {
31
+ variant: "default"
32
+ }
33
+ }
34
+ );
35
+ function Badge({
36
+ className,
37
+ variant = "default",
38
+ render,
39
+ ...props
40
+ }) {
41
+ return useRender({
42
+ defaultTagName: "span",
43
+ props: mergeProps(
44
+ {
45
+ className: cn(badgeVariants({ variant }), className)
46
+ },
47
+ props
48
+ ),
49
+ render,
50
+ state: {
51
+ slot: "badge",
52
+ variant
53
+ }
54
+ });
55
+ }
56
+ var buttonVariants = cva(
57
+ "group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-interactive outline-none select-none focus-ring active:not-aria-[haspopup]:translate-y-px active:not-aria-[haspopup]:brightness-90 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
58
+ {
59
+ variants: {
60
+ variant: {
61
+ default: "bg-primary text-primary-foreground hover:bg-primary/80",
62
+ outline: "border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",
63
+ secondary: "bg-secondary text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",
64
+ ghost: "hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",
65
+ destructive: "bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",
66
+ link: "text-primary underline-offset-4 hover:underline"
67
+ },
68
+ size: {
69
+ default: "h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
70
+ xs: "h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",
71
+ sm: "h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",
72
+ lg: "h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
73
+ icon: "size-8",
74
+ "icon-xs": "size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3",
75
+ "icon-sm": "size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg",
76
+ "icon-lg": "size-9"
77
+ }
78
+ },
79
+ defaultVariants: {
80
+ variant: "default",
81
+ size: "default"
82
+ }
83
+ }
84
+ );
85
+ function Button({
86
+ className,
87
+ variant = "default",
88
+ size = "default",
89
+ ...props
90
+ }) {
91
+ return /* @__PURE__ */ jsx(
92
+ Button$1,
93
+ {
94
+ "data-slot": "button",
95
+ className: cn("cursor-pointer", buttonVariants({ variant, size, className })),
96
+ ...props
97
+ }
98
+ );
99
+ }
100
+ function Dialog({ ...props }) {
101
+ return /* @__PURE__ */ jsx(Dialog$1.Root, { "data-slot": "dialog", ...props });
102
+ }
103
+ function DialogTrigger({ ...props }) {
104
+ return /* @__PURE__ */ jsx(Dialog$1.Trigger, { "data-slot": "dialog-trigger", ...props });
105
+ }
106
+ function DialogPortal({ ...props }) {
107
+ return /* @__PURE__ */ jsx(Dialog$1.Portal, { "data-slot": "dialog-portal", ...props });
108
+ }
109
+ function DialogClose({ ...props }) {
110
+ return /* @__PURE__ */ jsx(Dialog$1.Close, { "data-slot": "dialog-close", ...props });
111
+ }
112
+ function DialogOverlay({ className, ...props }) {
113
+ return /* @__PURE__ */ jsx(
114
+ Dialog$1.Backdrop,
115
+ {
116
+ "data-slot": "dialog-overlay",
117
+ className: cn(
118
+ "supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0 z-overlay fixed inset-0 isolate bg-black/10 duration-100",
119
+ className
120
+ ),
121
+ ...props
122
+ }
123
+ );
124
+ }
125
+ var dialogSizeClasses = {
126
+ sm: "sm:max-w-sm",
127
+ md: "sm:max-w-md",
128
+ lg: "sm:max-w-lg",
129
+ xl: "sm:max-w-xl",
130
+ "2xl": "sm:max-w-2xl"
131
+ };
132
+ function DialogContent({
133
+ className,
134
+ children,
135
+ showCloseButton = true,
136
+ size = "sm",
137
+ ...props
138
+ }) {
139
+ return /* @__PURE__ */ jsxs(DialogPortal, { children: [
140
+ /* @__PURE__ */ jsx(DialogOverlay, {}),
141
+ /* @__PURE__ */ jsxs(
142
+ Dialog$1.Popup,
143
+ {
144
+ "data-slot": "dialog-content",
145
+ className: cn(
146
+ "bg-popover text-popover-foreground ring-foreground/10 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 shadow-depth-2 z-overlay fixed left-1/2 top-1/2 grid max-h-[90vh] w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl p-4 text-sm outline-none ring-1 duration-100",
147
+ dialogSizeClasses[size],
148
+ className
149
+ ),
150
+ ...props,
151
+ children: [
152
+ children,
153
+ showCloseButton && /* @__PURE__ */ jsxs(
154
+ Dialog$1.Close,
155
+ {
156
+ "data-slot": "dialog-close",
157
+ render: /* @__PURE__ */ jsx(Button, { variant: "ghost", className: "absolute right-2 top-2", size: "icon-sm" }),
158
+ children: [
159
+ /* @__PURE__ */ jsx(XIcon, {}),
160
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
161
+ ]
162
+ }
163
+ )
164
+ ]
165
+ }
166
+ )
167
+ ] });
168
+ }
169
+ function DialogHeader({ className, ...props }) {
170
+ return /* @__PURE__ */ jsx("div", { "data-slot": "dialog-header", className: cn("flex flex-col gap-2", className), ...props });
171
+ }
172
+ function DialogFooter({
173
+ className,
174
+ showCloseButton = false,
175
+ buttonSize = "sm",
176
+ children,
177
+ ...props
178
+ }) {
179
+ return /* @__PURE__ */ jsxs(
180
+ "div",
181
+ {
182
+ "data-slot": "dialog-footer",
183
+ className: cn(
184
+ "bg-muted/50 -mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t p-4 sm:flex-row sm:justify-end",
185
+ className
186
+ ),
187
+ ...props,
188
+ children: [
189
+ React.Children.map(children, (child) => {
190
+ if (!React.isValidElement(child) || child.type !== Button) return child;
191
+ const button = child;
192
+ return React.cloneElement(button, { size: button.props.size ?? buttonSize });
193
+ }),
194
+ showCloseButton && /* @__PURE__ */ jsx(Dialog$1.Close, { render: /* @__PURE__ */ jsx(Button, { variant: "outline", size: buttonSize }), children: "Close" })
195
+ ]
196
+ }
197
+ );
198
+ }
199
+ function DialogTitle({ className, ...props }) {
200
+ return /* @__PURE__ */ jsx(
201
+ Dialog$1.Title,
202
+ {
203
+ "data-slot": "dialog-title",
204
+ className: cn("font-heading text-h2 leading-none", className),
205
+ ...props
206
+ }
207
+ );
208
+ }
209
+ function DialogDescription({ className, ...props }) {
210
+ return /* @__PURE__ */ jsx(
211
+ Dialog$1.Description,
212
+ {
213
+ "data-slot": "dialog-description",
214
+ className: cn(
215
+ "text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground text-sm",
216
+ className
217
+ ),
218
+ ...props
219
+ }
220
+ );
221
+ }
222
+ function DropdownMenu({ ...props }) {
223
+ return /* @__PURE__ */ jsx(Menu.Root, { "data-slot": "dropdown-menu", ...props });
224
+ }
225
+ function DropdownMenuPortal({ ...props }) {
226
+ return /* @__PURE__ */ jsx(Menu.Portal, { "data-slot": "dropdown-menu-portal", ...props });
227
+ }
228
+ function DropdownMenuTrigger({ ...props }) {
229
+ return /* @__PURE__ */ jsx(Menu.Trigger, { "data-slot": "dropdown-menu-trigger", ...props });
230
+ }
231
+ function DropdownMenuContent({
232
+ align = "start",
233
+ alignOffset = 0,
234
+ side = "bottom",
235
+ sideOffset = 4,
236
+ className,
237
+ positionerClassName,
238
+ ...props
239
+ }) {
240
+ return /* @__PURE__ */ jsx(Menu.Portal, { children: /* @__PURE__ */ jsx(
241
+ Menu.Positioner,
242
+ {
243
+ className: cn("z-overlay isolate outline-none", positionerClassName),
244
+ align,
245
+ alignOffset,
246
+ side,
247
+ sideOffset,
248
+ children: /* @__PURE__ */ jsx(
249
+ Menu.Popup,
250
+ {
251
+ "data-slot": "dropdown-menu-content",
252
+ className: cn(
253
+ "max-h-(--available-height) w-(--anchor-width) origin-(--transform-origin) bg-popover text-popover-foreground ring-foreground/10 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95 z-overlay min-w-32 overflow-y-auto overflow-x-hidden rounded-lg p-1 shadow-md outline-none ring-1 duration-100",
254
+ className
255
+ ),
256
+ ...props
257
+ }
258
+ )
259
+ }
260
+ ) });
261
+ }
262
+ function DropdownMenuGroup({ ...props }) {
263
+ return /* @__PURE__ */ jsx(Menu.Group, { "data-slot": "dropdown-menu-group", ...props });
264
+ }
265
+ function DropdownMenuLabel({
266
+ className,
267
+ inset,
268
+ ...props
269
+ }) {
270
+ return /* @__PURE__ */ jsx(
271
+ Menu.GroupLabel,
272
+ {
273
+ "data-slot": "dropdown-menu-label",
274
+ "data-inset": inset,
275
+ className: cn(
276
+ "text-muted-foreground data-inset:pl-7 px-1.5 py-1 text-xs font-medium",
277
+ className
278
+ ),
279
+ ...props
280
+ }
281
+ );
282
+ }
283
+ function DropdownMenuItem({
284
+ className,
285
+ inset,
286
+ variant = "default",
287
+ onClick,
288
+ ...props
289
+ }) {
290
+ return /* @__PURE__ */ jsx(
291
+ Menu.Item,
292
+ {
293
+ "data-slot": "dropdown-menu-item",
294
+ "data-inset": inset,
295
+ "data-variant": variant,
296
+ className: cn(
297
+ "group/dropdown-menu-item outline-hidden focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 data-[variant=destructive]:*:[svg]:text-destructive relative flex cursor-default select-none items-center gap-1.5 rounded-md px-1.5 py-1 text-sm [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0",
298
+ onClick ? `cursor-pointer` : void 0,
299
+ className
300
+ ),
301
+ onClick,
302
+ ...props
303
+ }
304
+ );
305
+ }
306
+ function DropdownMenuSub({ ...props }) {
307
+ return /* @__PURE__ */ jsx(Menu.SubmenuRoot, { "data-slot": "dropdown-menu-sub", ...props });
308
+ }
309
+ function DropdownMenuSubTrigger({
310
+ className,
311
+ inset,
312
+ children,
313
+ ...props
314
+ }) {
315
+ return /* @__PURE__ */ jsxs(
316
+ Menu.SubmenuTrigger,
317
+ {
318
+ "data-slot": "dropdown-menu-sub-trigger",
319
+ "data-inset": inset,
320
+ className: cn(
321
+ "outline-hidden focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-popup-open:bg-accent data-popup-open:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground flex cursor-default select-none items-center gap-1.5 rounded-md px-1.5 py-1 text-sm [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0",
322
+ className
323
+ ),
324
+ ...props,
325
+ children: [
326
+ children,
327
+ /* @__PURE__ */ jsx(ChevronRightIcon, { className: "ml-auto" })
328
+ ]
329
+ }
330
+ );
331
+ }
332
+ function DropdownMenuSubContent({
333
+ align = "start",
334
+ alignOffset = -3,
335
+ side = "right",
336
+ sideOffset = 0,
337
+ className,
338
+ ...props
339
+ }) {
340
+ return /* @__PURE__ */ jsx(
341
+ DropdownMenuContent,
342
+ {
343
+ "data-slot": "dropdown-menu-sub-content",
344
+ className: cn(
345
+ "bg-popover text-popover-foreground ring-foreground/10 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 w-auto min-w-[96px] rounded-lg p-1 shadow-lg ring-1 duration-100",
346
+ className
347
+ ),
348
+ align,
349
+ alignOffset,
350
+ side,
351
+ sideOffset,
352
+ ...props
353
+ }
354
+ );
355
+ }
356
+ function DropdownMenuCheckboxItem({
357
+ className,
358
+ children,
359
+ checked,
360
+ inset,
361
+ ...props
362
+ }) {
363
+ return /* @__PURE__ */ jsxs(
364
+ Menu.CheckboxItem,
365
+ {
366
+ "data-slot": "dropdown-menu-checkbox-item",
367
+ "data-inset": inset,
368
+ className: cn(
369
+ "outline-hidden focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 relative flex cursor-default select-none items-center gap-1.5 rounded-md py-1 pl-1.5 pr-8 text-sm [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0",
370
+ props.onCheckedChange && "cursor-pointer",
371
+ className
372
+ ),
373
+ checked,
374
+ ...props,
375
+ children: [
376
+ /* @__PURE__ */ jsx(
377
+ "span",
378
+ {
379
+ className: "pointer-events-none absolute right-2 flex items-center justify-center",
380
+ "data-slot": "dropdown-menu-checkbox-item-indicator",
381
+ children: /* @__PURE__ */ jsx(Menu.CheckboxItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, {}) })
382
+ }
383
+ ),
384
+ children
385
+ ]
386
+ }
387
+ );
388
+ }
389
+ function DropdownMenuRadioGroup({ ...props }) {
390
+ return /* @__PURE__ */ jsx(Menu.RadioGroup, { "data-slot": "dropdown-menu-radio-group", ...props });
391
+ }
392
+ function DropdownMenuRadioItem({
393
+ className,
394
+ children,
395
+ inset,
396
+ ...props
397
+ }) {
398
+ return /* @__PURE__ */ jsxs(
399
+ Menu.RadioItem,
400
+ {
401
+ "data-slot": "dropdown-menu-radio-item",
402
+ "data-inset": inset,
403
+ className: cn(
404
+ "outline-hidden focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 relative flex cursor-default select-none items-center gap-1.5 rounded-md py-1 pl-1.5 pr-8 text-sm [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0",
405
+ className
406
+ ),
407
+ ...props,
408
+ children: [
409
+ /* @__PURE__ */ jsx(
410
+ "span",
411
+ {
412
+ className: "pointer-events-none absolute right-2 flex items-center justify-center",
413
+ "data-slot": "dropdown-menu-radio-item-indicator",
414
+ children: /* @__PURE__ */ jsx(Menu.RadioItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, {}) })
415
+ }
416
+ ),
417
+ children
418
+ ]
419
+ }
420
+ );
421
+ }
422
+ function DropdownMenuSeparator({ className, ...props }) {
423
+ return /* @__PURE__ */ jsx(
424
+ Menu.Separator,
425
+ {
426
+ "data-slot": "dropdown-menu-separator",
427
+ className: cn("bg-border -mx-1 my-1 h-px", className),
428
+ ...props
429
+ }
430
+ );
431
+ }
432
+ function DropdownMenuShortcut({ className, ...props }) {
433
+ return /* @__PURE__ */ jsx(
434
+ "span",
435
+ {
436
+ "data-slot": "dropdown-menu-shortcut",
437
+ className: cn(
438
+ "text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground ml-auto text-xs tracking-widest",
439
+ className
440
+ ),
441
+ ...props
442
+ }
443
+ );
444
+ }
445
+ function ScrollArea({ className, children, ...props }) {
446
+ return /* @__PURE__ */ jsxs(
447
+ ScrollArea$1.Root,
448
+ {
449
+ "data-slot": "scroll-area",
450
+ className: cn("relative", className),
451
+ ...props,
452
+ children: [
453
+ /* @__PURE__ */ jsx(
454
+ ScrollArea$1.Viewport,
455
+ {
456
+ "data-slot": "scroll-area-viewport",
457
+ className: "focus-visible:ring-ring/75 transition-focus size-full rounded-[inherit] outline-none focus-visible:outline-1 focus-visible:ring-[3px]",
458
+ children
459
+ }
460
+ ),
461
+ /* @__PURE__ */ jsx(ScrollBar, {}),
462
+ /* @__PURE__ */ jsx(ScrollArea$1.Corner, {})
463
+ ]
464
+ }
465
+ );
466
+ }
467
+ function ScrollBar({
468
+ className,
469
+ orientation = "vertical",
470
+ ...props
471
+ }) {
472
+ return /* @__PURE__ */ jsx(
473
+ ScrollArea$1.Scrollbar,
474
+ {
475
+ "data-slot": "scroll-area-scrollbar",
476
+ "data-orientation": orientation,
477
+ orientation,
478
+ className: cn(
479
+ "data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent transition-theme flex touch-none select-none p-px",
480
+ className
481
+ ),
482
+ ...props,
483
+ children: /* @__PURE__ */ jsx(
484
+ ScrollArea$1.Thumb,
485
+ {
486
+ "data-slot": "scroll-area-thumb",
487
+ className: "bg-border relative flex-1 rounded-full"
488
+ }
489
+ )
490
+ }
491
+ );
492
+ }
493
+ function Sheet({ ...props }) {
494
+ return /* @__PURE__ */ jsx(Dialog$1.Root, { "data-slot": "sheet", ...props });
495
+ }
496
+ function SheetTrigger({ ...props }) {
497
+ return /* @__PURE__ */ jsx(Dialog$1.Trigger, { "data-slot": "sheet-trigger", ...props });
498
+ }
499
+ function SheetClose({ ...props }) {
500
+ return /* @__PURE__ */ jsx(Dialog$1.Close, { "data-slot": "sheet-close", ...props });
501
+ }
502
+ function SheetPortal({ ...props }) {
503
+ return /* @__PURE__ */ jsx(Dialog$1.Portal, { "data-slot": "sheet-portal", ...props });
504
+ }
505
+ function SheetOverlay({ className, ...props }) {
506
+ return /* @__PURE__ */ jsx(
507
+ Dialog$1.Backdrop,
508
+ {
509
+ "data-slot": "sheet-overlay",
510
+ className: cn(
511
+ "data-ending-style:opacity-0 data-starting-style:opacity-0 supports-backdrop-filter:backdrop-blur-xs z-overlay transition-fade fixed inset-0 bg-black/10",
512
+ className
513
+ ),
514
+ ...props
515
+ }
516
+ );
517
+ }
518
+ function SheetContent({
519
+ className,
520
+ children,
521
+ side = "right",
522
+ showCloseButton = false,
523
+ ...props
524
+ }) {
525
+ return /* @__PURE__ */ jsxs(SheetPortal, { children: [
526
+ /* @__PURE__ */ jsx(SheetOverlay, {}),
527
+ /* @__PURE__ */ jsxs(
528
+ Dialog$1.Popup,
529
+ {
530
+ "data-slot": "sheet-content",
531
+ "data-side": side,
532
+ className: cn(
533
+ "bg-popover text-popover-foreground data-ending-style:opacity-0 data-starting-style:opacity-0 data-[side=bottom]:data-ending-style:translate-y-[2.5rem] data-[side=bottom]:data-starting-style:translate-y-[2.5rem] data-[side=left]:data-ending-style:translate-x-[-2.5rem] data-[side=left]:data-starting-style:translate-x-[-2.5rem] data-[side=right]:data-ending-style:translate-x-[2.5rem] data-[side=right]:data-starting-style:translate-x-[2.5rem] data-[side=top]:data-ending-style:translate-y-[-2.5rem] data-[side=top]:data-starting-style:translate-y-[-2.5rem] shadow-depth-1 z-overlay fixed flex flex-col gap-4 bg-clip-padding text-sm transition duration-200 ease-in-out data-[side=bottom]:inset-x-0 data-[side=left]:inset-y-0 data-[side=right]:inset-y-0 data-[side=top]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=left]:left-0 data-[side=right]:right-0 data-[side=top]:top-0 data-[side=bottom]:h-auto data-[side=left]:h-full data-[side=right]:h-full data-[side=top]:h-auto data-[side=left]:w-3/4 data-[side=bottom]:border-t data-[side=left]:border-r data-[side=right]:border-l data-[side=top]:border-b data-[side=left]:sm:max-w-sm",
534
+ className
535
+ ),
536
+ ...props,
537
+ children: [
538
+ children,
539
+ showCloseButton && /* @__PURE__ */ jsxs(
540
+ Dialog$1.Close,
541
+ {
542
+ "data-slot": "sheet-close",
543
+ render: /* @__PURE__ */ jsx(Button, { variant: "ghost", className: "absolute right-3 top-3", size: "icon-sm" }),
544
+ children: [
545
+ /* @__PURE__ */ jsx(XIcon, {}),
546
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
547
+ ]
548
+ }
549
+ )
550
+ ]
551
+ }
552
+ )
553
+ ] });
554
+ }
555
+ function SheetHeader({ className, ...props }) {
556
+ return /* @__PURE__ */ jsx(
557
+ "div",
558
+ {
559
+ "data-slot": "sheet-header",
560
+ className: cn("flex flex-col gap-0.5 p-4", className),
561
+ ...props
562
+ }
563
+ );
564
+ }
565
+ function SheetFooter({ className, ...props }) {
566
+ return /* @__PURE__ */ jsx(
567
+ "div",
568
+ {
569
+ "data-slot": "sheet-footer",
570
+ className: cn("mt-auto flex flex-col gap-2 p-4", className),
571
+ ...props
572
+ }
573
+ );
574
+ }
575
+ function SheetTitle({ className, ...props }) {
576
+ return /* @__PURE__ */ jsx(
577
+ Dialog$1.Title,
578
+ {
579
+ "data-slot": "sheet-title",
580
+ className: cn("font-heading text-foreground text-base font-medium", className),
581
+ ...props
582
+ }
583
+ );
584
+ }
585
+ function SheetDescription({ className, ...props }) {
586
+ return /* @__PURE__ */ jsx(
587
+ Dialog$1.Description,
588
+ {
589
+ "data-slot": "sheet-description",
590
+ className: cn("text-muted-foreground text-sm", className),
591
+ ...props
592
+ }
593
+ );
594
+ }
595
+ function Table({
596
+ className,
597
+ containerClassName,
598
+ ...props
599
+ }) {
600
+ return /* @__PURE__ */ jsx(
601
+ "div",
602
+ {
603
+ "data-slot": "table-container",
604
+ className: cn("relative w-full overflow-x-auto", containerClassName),
605
+ children: /* @__PURE__ */ jsx(
606
+ "table",
607
+ {
608
+ "data-slot": "table",
609
+ className: cn("w-full caption-bottom text-sm", className),
610
+ ...props
611
+ }
612
+ )
613
+ }
614
+ );
615
+ }
616
+ function TableHeader({ className, ...props }) {
617
+ return /* @__PURE__ */ jsx("thead", { "data-slot": "table-header", className: cn("[&_tr]:border-b", className), ...props });
618
+ }
619
+ function TableBody({ className, ...props }) {
620
+ return /* @__PURE__ */ jsx(
621
+ "tbody",
622
+ {
623
+ "data-slot": "table-body",
624
+ className: cn("[&_tr:last-child]:border-0", className),
625
+ ...props
626
+ }
627
+ );
628
+ }
629
+ function TableFooter({ className, ...props }) {
630
+ return /* @__PURE__ */ jsx(
631
+ "tfoot",
632
+ {
633
+ "data-slot": "table-footer",
634
+ className: cn("bg-muted/50 border-t font-medium [&>tr]:last:border-b-0", className),
635
+ ...props
636
+ }
637
+ );
638
+ }
639
+ function TableRow({ className, ...props }) {
640
+ return /* @__PURE__ */ jsx(
641
+ "tr",
642
+ {
643
+ "data-slot": "table-row",
644
+ className: cn(
645
+ "hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted transition-theme border-b",
646
+ !!props.onClick && "cursor-pointer",
647
+ className
648
+ ),
649
+ ...props
650
+ }
651
+ );
652
+ }
653
+ function TableHead({ className, ...props }) {
654
+ return /* @__PURE__ */ jsx(
655
+ "th",
656
+ {
657
+ "data-slot": "table-head",
658
+ className: cn(
659
+ "text-foreground h-10 whitespace-nowrap px-2 text-left align-middle font-medium has-[[role=checkbox]]:pr-0",
660
+ className
661
+ ),
662
+ ...props
663
+ }
664
+ );
665
+ }
666
+ function TableCell({ className, ...props }) {
667
+ return /* @__PURE__ */ jsx(
668
+ "td",
669
+ {
670
+ "data-slot": "table-cell",
671
+ className: cn(
672
+ "whitespace-nowrap p-2 text-left align-middle tabular-nums has-[[role=checkbox]]:pr-0",
673
+ className
674
+ ),
675
+ ...props
676
+ }
677
+ );
678
+ }
679
+ function TableCaption({ className, ...props }) {
680
+ return /* @__PURE__ */ jsx(
681
+ "caption",
682
+ {
683
+ "data-slot": "table-caption",
684
+ className: cn("text-muted-foreground mt-4 text-sm", className),
685
+ ...props
686
+ }
687
+ );
688
+ }
689
+ function TooltipProvider({ delay = 0, ...props }) {
690
+ return /* @__PURE__ */ jsx(Tooltip$1.Provider, { "data-slot": "tooltip-provider", delay, ...props });
691
+ }
692
+ function Tooltip({ ...props }) {
693
+ return /* @__PURE__ */ jsx(Tooltip$1.Root, { "data-slot": "tooltip", ...props });
694
+ }
695
+ function TooltipTrigger({ ...props }) {
696
+ return /* @__PURE__ */ jsx(Tooltip$1.Trigger, { "data-slot": "tooltip-trigger", ...props });
697
+ }
698
+ function TooltipContent({
699
+ className,
700
+ positionerClassName,
701
+ side = "top",
702
+ sideOffset = 4,
703
+ align = "center",
704
+ alignOffset = 0,
705
+ children,
706
+ ...props
707
+ }) {
708
+ return /* @__PURE__ */ jsx(Tooltip$1.Portal, { children: /* @__PURE__ */ jsx(
709
+ Tooltip$1.Positioner,
710
+ {
711
+ align,
712
+ alignOffset,
713
+ side,
714
+ sideOffset,
715
+ className: cn("z-overlay isolate", positionerClassName),
716
+ children: /* @__PURE__ */ jsxs(
717
+ Tooltip$1.Popup,
718
+ {
719
+ "data-slot": "tooltip-content",
720
+ className: cn(
721
+ "origin-(--transform-origin) bg-foreground text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-overlay **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 z-overlay inline-flex w-fit max-w-xs items-center gap-1.5 rounded-md px-3 py-1.5 text-xs",
722
+ className
723
+ ),
724
+ ...props,
725
+ children: [
726
+ children,
727
+ /* @__PURE__ */ jsx(Tooltip$1.Arrow, { className: "bg-foreground fill-foreground data-[side=inline-end]:top-1/2! data-[side=inline-start]:top-1/2! data-[side=left]:top-1/2! data-[side=right]:top-1/2! z-overlay size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] data-[side=bottom]:top-1 data-[side=inline-end]:-left-1 data-[side=inline-start]:-right-1 data-[side=left]:-right-1 data-[side=right]:-left-1 data-[side=top]:-bottom-2.5 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:-translate-y-1/2 data-[side=left]:-translate-y-1/2 data-[side=right]:-translate-y-1/2" })
728
+ ]
729
+ }
730
+ )
731
+ }
732
+ ) });
733
+ }
734
+
735
+ export { Badge, Button, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, ScrollArea, ScrollBar, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, buttonVariants };