@hilum/ui 3.1.2 → 3.2.1
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/dist/{chunk-5JX2YKJM.js → chunk-MAHPAP65.js} +65 -11
- package/dist/chunk-MAHPAP65.js.map +1 -0
- package/dist/icons.d.ts +1 -1
- package/dist/icons.js +1 -1
- package/dist/index.js +224 -150
- package/dist/index.js.map +1 -1
- package/dist/tokens.css +10 -0
- package/dist/tokens.d.ts +9 -0
- package/dist/tokens.js +1 -1
- package/package.json +1 -1
- package/src/components/account-menu.tsx +3 -10
- package/src/components/action-panel.tsx +10 -7
- package/src/components/alert-dialog.tsx +10 -6
- package/src/components/alert.tsx +6 -2
- package/src/components/avatar-stack.tsx +6 -1
- package/src/components/avatar.tsx +4 -1
- package/src/components/breadcrumb.tsx +6 -1
- package/src/components/button-group.tsx +6 -5
- package/src/components/button.tsx +9 -7
- package/src/components/calendar.tsx +6 -5
- package/src/components/card-heading.tsx +4 -2
- package/src/components/card.tsx +2 -2
- package/src/components/carousel.tsx +2 -2
- package/src/components/checkbox.tsx +2 -1
- package/src/components/color-picker.tsx +4 -4
- package/src/components/combobox.tsx +17 -7
- package/src/components/command-palette.tsx +4 -2
- package/src/components/command.tsx +4 -2
- package/src/components/context-menu.tsx +4 -4
- package/src/components/data-table.tsx +7 -4
- package/src/components/description-list.tsx +4 -2
- package/src/components/dialog.tsx +7 -3
- package/src/components/dropdown-menu.tsx +4 -4
- package/src/components/empty-state.tsx +4 -2
- package/src/components/field.tsx +11 -3
- package/src/components/grid-list.tsx +3 -3
- package/src/components/input-group.tsx +1 -1
- package/src/components/input-number.tsx +4 -1
- package/src/components/input-otp.tsx +1 -1
- package/src/components/input.tsx +1 -1
- package/src/components/menubar.tsx +7 -11
- package/src/components/native-select.tsx +1 -1
- package/src/components/navigation-menu.tsx +3 -3
- package/src/components/notification.tsx +6 -4
- package/src/components/page-heading.tsx +4 -2
- package/src/components/pagination.tsx +2 -2
- package/src/components/progress.tsx +1 -1
- package/src/components/radio-card.tsx +7 -6
- package/src/components/radio-group.tsx +2 -1
- package/src/components/section-heading.tsx +4 -2
- package/src/components/select.tsx +2 -2
- package/src/components/sheet.tsx +8 -4
- package/src/components/sidebar.tsx +8 -8
- package/src/components/slider.tsx +1 -1
- package/src/components/stat-card.tsx +2 -2
- package/src/components/steps.tsx +13 -11
- package/src/components/switch.tsx +4 -4
- package/src/components/toggle.tsx +5 -5
- package/src/icons.ts +4 -0
- package/src/tokens/tokens.ts +65 -10
- package/dist/chunk-5JX2YKJM.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { tokens } from './chunk-
|
|
1
|
+
import { tokens } from './chunk-MAHPAP65.js';
|
|
2
2
|
import { clsx } from 'clsx';
|
|
3
3
|
import { twMerge } from 'tailwind-merge';
|
|
4
4
|
import * as React17 from 'react';
|
|
@@ -49,7 +49,7 @@ var DropdownMenuItem = React17.forwardRef(({ className, inset, destructive, ...p
|
|
|
49
49
|
{
|
|
50
50
|
ref,
|
|
51
51
|
className: cn(
|
|
52
|
-
"relative flex cursor-default select-none items-center gap-2 rounded-md px-2.5 py-
|
|
52
|
+
"relative flex min-h-10 cursor-default select-none items-center gap-2 rounded-md px-2.5 py-2",
|
|
53
53
|
"body outline-none transition-colors",
|
|
54
54
|
destructive ? "text-destructive focus:bg-destructive/10 focus:text-destructive" : "text-muted-foreground focus:bg-muted focus:text-foreground",
|
|
55
55
|
"data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
@@ -65,7 +65,7 @@ var DropdownMenuCheckboxItem = React17.forwardRef(({ className, children, ...pro
|
|
|
65
65
|
{
|
|
66
66
|
ref,
|
|
67
67
|
className: cn(
|
|
68
|
-
"relative flex cursor-default select-none items-center gap-2 rounded-md pl-8 pr-2.5
|
|
68
|
+
"relative flex min-h-10 cursor-default select-none items-center gap-2 rounded-md py-2 pl-8 pr-2.5",
|
|
69
69
|
"body text-muted-foreground outline-none transition-colors",
|
|
70
70
|
"focus:bg-muted focus:text-foreground",
|
|
71
71
|
"data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
@@ -84,7 +84,7 @@ var DropdownMenuRadioItem = React17.forwardRef(({ className, children, ...props
|
|
|
84
84
|
{
|
|
85
85
|
ref,
|
|
86
86
|
className: cn(
|
|
87
|
-
"relative flex cursor-default select-none items-center gap-2 rounded-md pl-8 pr-2.5
|
|
87
|
+
"relative flex min-h-10 cursor-default select-none items-center gap-2 rounded-md py-2 pl-8 pr-2.5",
|
|
88
88
|
"body text-muted-foreground outline-none transition-colors",
|
|
89
89
|
"focus:bg-muted focus:text-foreground",
|
|
90
90
|
"data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
@@ -121,7 +121,7 @@ var DropdownMenuSubTrigger = React17.forwardRef(({ className, inset, children, .
|
|
|
121
121
|
{
|
|
122
122
|
ref,
|
|
123
123
|
className: cn(
|
|
124
|
-
"relative flex cursor-default select-none items-center gap-2 rounded-md px-2.5 py-
|
|
124
|
+
"relative flex min-h-10 cursor-default select-none items-center gap-2 rounded-md px-2.5 py-2",
|
|
125
125
|
"body text-muted-foreground outline-none transition-colors",
|
|
126
126
|
"focus:bg-muted focus:text-foreground data-[state=open]:bg-muted",
|
|
127
127
|
inset && "pl-8",
|
|
@@ -181,7 +181,10 @@ var AvatarImage = React17.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
181
181
|
Avatar$1.Image,
|
|
182
182
|
{
|
|
183
183
|
ref,
|
|
184
|
-
className: cn(
|
|
184
|
+
className: cn(
|
|
185
|
+
"aspect-square h-full w-full object-cover outline outline-1 -outline-offset-1 outline-black/10 dark:outline-white/10",
|
|
186
|
+
className
|
|
187
|
+
),
|
|
185
188
|
...props
|
|
186
189
|
}
|
|
187
190
|
));
|
|
@@ -334,7 +337,7 @@ var buttonVariants = cva(
|
|
|
334
337
|
[
|
|
335
338
|
"inline-flex shrink-0 items-center justify-center gap-2",
|
|
336
339
|
"body font-medium whitespace-nowrap",
|
|
337
|
-
"transition-
|
|
340
|
+
"transition-[background-color,border-color,box-shadow,color,opacity,scale] duration-150 outline-none active:scale-[0.96]",
|
|
338
341
|
"focus-visible:ring-2 focus-visible:ring-brand-primary/30 focus-visible:ring-offset-1",
|
|
339
342
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
340
343
|
"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4"
|
|
@@ -351,14 +354,14 @@ var buttonVariants = cva(
|
|
|
351
354
|
link: "text-foreground underline-offset-4 hover:underline"
|
|
352
355
|
},
|
|
353
356
|
size: {
|
|
354
|
-
default: "h-
|
|
357
|
+
default: "h-10 px-4 py-2 rounded-md",
|
|
355
358
|
xs: "h-6 gap-1 px-2 caption rounded-md",
|
|
356
359
|
sm: "h-8 gap-1.5 px-3 rounded-md",
|
|
357
|
-
lg: "h-
|
|
358
|
-
icon: "size-
|
|
360
|
+
lg: "h-11 px-6 rounded-md",
|
|
361
|
+
icon: "size-10 rounded-md",
|
|
359
362
|
"icon-xs": "size-6 rounded-md [&_svg:not([class*='size-'])]:size-3",
|
|
360
363
|
"icon-sm": "size-8 rounded-md",
|
|
361
|
-
"icon-lg": "size-
|
|
364
|
+
"icon-lg": "size-11 rounded-md"
|
|
362
365
|
}
|
|
363
366
|
},
|
|
364
367
|
defaultVariants: {
|
|
@@ -398,7 +401,7 @@ function ActionPanel({
|
|
|
398
401
|
"a",
|
|
399
402
|
{
|
|
400
403
|
href: link.href,
|
|
401
|
-
className: "body font-medium text-muted-foreground hover:text-foreground
|
|
404
|
+
className: "inline-flex min-h-10 items-center gap-1 body font-medium text-muted-foreground transition-colors hover:text-foreground",
|
|
402
405
|
children: [
|
|
403
406
|
link.label,
|
|
404
407
|
" ",
|
|
@@ -410,7 +413,7 @@ function ActionPanel({
|
|
|
410
413
|
{
|
|
411
414
|
type: "button",
|
|
412
415
|
onClick: link.onClick,
|
|
413
|
-
className: "body font-medium text-muted-foreground hover:text-foreground
|
|
416
|
+
className: "inline-flex min-h-10 items-center gap-1 body font-medium text-muted-foreground transition-colors hover:text-foreground",
|
|
414
417
|
children: [
|
|
415
418
|
link.label,
|
|
416
419
|
" ",
|
|
@@ -434,8 +437,17 @@ function ActionPanel({
|
|
|
434
437
|
),
|
|
435
438
|
children: [
|
|
436
439
|
/* @__PURE__ */ jsxs("div", { className: cn("min-w-0", layout === "inline" ? "flex-1" : ""), children: [
|
|
437
|
-
/* @__PURE__ */ jsx("p", { className: "body font-semibold text-foreground", children: title }),
|
|
438
|
-
description && /* @__PURE__ */ jsx(
|
|
440
|
+
/* @__PURE__ */ jsx("p", { className: "body font-semibold text-foreground text-balance", children: title }),
|
|
441
|
+
description && /* @__PURE__ */ jsx(
|
|
442
|
+
"p",
|
|
443
|
+
{
|
|
444
|
+
className: cn(
|
|
445
|
+
"body text-muted-foreground text-pretty",
|
|
446
|
+
layout === "stacked" ? "mt-1" : ""
|
|
447
|
+
),
|
|
448
|
+
children: description
|
|
449
|
+
}
|
|
450
|
+
),
|
|
439
451
|
children && layout === "stacked" && /* @__PURE__ */ jsx("div", { className: "mt-4", children })
|
|
440
452
|
] }),
|
|
441
453
|
layout === "stacked" ? (allActions.length > 0 || link) && /* @__PURE__ */ jsx("div", { className: "mt-4", children: renderActions() }) : /* @__PURE__ */ jsxs("div", { className: "shrink-0 flex items-center gap-3", children: [
|
|
@@ -534,20 +546,27 @@ var AlertDialogTitle = React17.forwardRef(({ className, ...props }, ref) => /* @
|
|
|
534
546
|
AlertDialog.Title,
|
|
535
547
|
{
|
|
536
548
|
ref,
|
|
537
|
-
className: cn("body-lg font-semibold text-foreground", className),
|
|
549
|
+
className: cn("body-lg font-semibold text-balance text-foreground", className),
|
|
538
550
|
...props
|
|
539
551
|
}
|
|
540
552
|
));
|
|
541
553
|
AlertDialogTitle.displayName = "AlertDialogTitle";
|
|
542
|
-
var AlertDialogDescription = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
554
|
+
var AlertDialogDescription = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
555
|
+
AlertDialog.Description,
|
|
556
|
+
{
|
|
557
|
+
ref,
|
|
558
|
+
className: cn("body text-pretty text-muted-foreground", className),
|
|
559
|
+
...props
|
|
560
|
+
}
|
|
561
|
+
));
|
|
543
562
|
AlertDialogDescription.displayName = "AlertDialogDescription";
|
|
544
563
|
var AlertDialogAction = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
545
564
|
AlertDialog.Action,
|
|
546
565
|
{
|
|
547
566
|
ref,
|
|
548
567
|
className: cn(
|
|
549
|
-
"inline-flex h-
|
|
550
|
-
"body font-medium whitespace-nowrap transition-
|
|
568
|
+
"inline-flex h-10 items-center justify-center rounded-md px-4",
|
|
569
|
+
"body font-medium whitespace-nowrap transition-[background-color,box-shadow,color,opacity,scale] duration-150 active:scale-[0.96]",
|
|
551
570
|
"bg-brand-primary text-background hover:bg-brand-primary/90 active:bg-brand-primary/80",
|
|
552
571
|
"focus-visible:ring-2 focus-visible:ring-brand-primary/30 focus-visible:ring-offset-1 outline-none",
|
|
553
572
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
@@ -562,8 +581,8 @@ var AlertDialogCancel = React17.forwardRef(({ className, ...props }, ref) => /*
|
|
|
562
581
|
{
|
|
563
582
|
ref,
|
|
564
583
|
className: cn(
|
|
565
|
-
"inline-flex h-
|
|
566
|
-
"body font-medium whitespace-nowrap transition-
|
|
584
|
+
"inline-flex h-10 items-center justify-center rounded-md px-4",
|
|
585
|
+
"body font-medium whitespace-nowrap transition-[background-color,box-shadow,color,opacity,scale] duration-150 active:scale-[0.96]",
|
|
567
586
|
"bg-card text-muted-foreground shadow-natural hover:bg-muted rounded-xl",
|
|
568
587
|
"focus-visible:ring-2 focus-visible:ring-brand-primary/30 focus-visible:ring-offset-1 outline-none",
|
|
569
588
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
@@ -593,11 +612,18 @@ var Alert = React17.forwardRef(
|
|
|
593
612
|
);
|
|
594
613
|
Alert.displayName = "Alert";
|
|
595
614
|
var AlertTitle = React17.forwardRef(
|
|
596
|
-
({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
615
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
616
|
+
"p",
|
|
617
|
+
{
|
|
618
|
+
ref,
|
|
619
|
+
className: cn("mb-0.5 body font-semibold leading-tight text-balance", className),
|
|
620
|
+
...props
|
|
621
|
+
}
|
|
622
|
+
)
|
|
597
623
|
);
|
|
598
624
|
AlertTitle.displayName = "AlertTitle";
|
|
599
625
|
var AlertDescription = React17.forwardRef(
|
|
600
|
-
({ className, ...props }, ref) => /* @__PURE__ */ jsx("p", { ref, className: cn("body opacity-90", className), ...props })
|
|
626
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx("p", { ref, className: cn("body text-pretty opacity-90", className), ...props })
|
|
601
627
|
);
|
|
602
628
|
AlertDescription.displayName = "AlertDescription";
|
|
603
629
|
var AspectRatioRoot = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
@@ -627,7 +653,14 @@ function AvatarStack({ avatars, max, size = "md", className }) {
|
|
|
627
653
|
"relative inline-flex shrink-0 overflow-hidden rounded-full ring-background",
|
|
628
654
|
s.wrapper
|
|
629
655
|
),
|
|
630
|
-
children: avatar.src ? /* @__PURE__ */ jsx(
|
|
656
|
+
children: avatar.src ? /* @__PURE__ */ jsx(
|
|
657
|
+
"img",
|
|
658
|
+
{
|
|
659
|
+
src: avatar.src,
|
|
660
|
+
alt: avatar.name,
|
|
661
|
+
className: "size-full object-cover outline outline-1 -outline-offset-1 outline-black/10 dark:outline-white/10"
|
|
662
|
+
}
|
|
663
|
+
) : /* @__PURE__ */ jsx(
|
|
631
664
|
"span",
|
|
632
665
|
{
|
|
633
666
|
className: cn(
|
|
@@ -647,7 +680,8 @@ function AvatarStack({ avatars, max, size = "md", className }) {
|
|
|
647
680
|
className: cn(
|
|
648
681
|
"relative inline-flex shrink-0 items-center justify-center rounded-full ring-background bg-muted font-medium text-muted-foreground",
|
|
649
682
|
s.wrapper,
|
|
650
|
-
s.text
|
|
683
|
+
s.text,
|
|
684
|
+
"tabular-nums"
|
|
651
685
|
),
|
|
652
686
|
children: [
|
|
653
687
|
"+",
|
|
@@ -713,7 +747,16 @@ var BreadcrumbPage = React17.forwardRef(
|
|
|
713
747
|
)
|
|
714
748
|
);
|
|
715
749
|
BreadcrumbPage.displayName = "BreadcrumbPage";
|
|
716
|
-
var BreadcrumbSeparator = ({ children, className, ...props }) => /* @__PURE__ */ jsx(
|
|
750
|
+
var BreadcrumbSeparator = ({ children, className, ...props }) => /* @__PURE__ */ jsx(
|
|
751
|
+
"li",
|
|
752
|
+
{
|
|
753
|
+
role: "presentation",
|
|
754
|
+
"aria-hidden": "true",
|
|
755
|
+
className: cn("text-muted-foreground", className),
|
|
756
|
+
...props,
|
|
757
|
+
children: children ?? /* @__PURE__ */ jsx(ChevronRight, { size: 14 })
|
|
758
|
+
}
|
|
759
|
+
);
|
|
717
760
|
BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
|
|
718
761
|
var BreadcrumbEllipsis = ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
719
762
|
"span",
|
|
@@ -731,7 +774,7 @@ function ButtonGroup({ children, className }) {
|
|
|
731
774
|
"div",
|
|
732
775
|
{
|
|
733
776
|
className: cn(
|
|
734
|
-
"inline-flex
|
|
777
|
+
"inline-flex items-center gap-0.5 rounded-2xl bg-muted p-1",
|
|
735
778
|
className
|
|
736
779
|
),
|
|
737
780
|
children
|
|
@@ -744,9 +787,10 @@ function ButtonGroupItem({ active, className, children, ...props }) {
|
|
|
744
787
|
{
|
|
745
788
|
type: "button",
|
|
746
789
|
className: cn(
|
|
747
|
-
"relative inline-flex items-center gap-1.5 px-3.5 py-2 body font-medium
|
|
748
|
-
"
|
|
749
|
-
|
|
790
|
+
"relative inline-flex min-h-10 items-center justify-center gap-1.5 rounded-xl px-3.5 py-2 body font-medium",
|
|
791
|
+
"transition-[background-color,box-shadow,color,opacity,scale] active:scale-[0.96]",
|
|
792
|
+
"focus:z-10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/30",
|
|
793
|
+
active ? "bg-card text-foreground shadow-natural" : "text-muted-foreground hover:text-foreground",
|
|
750
794
|
className
|
|
751
795
|
),
|
|
752
796
|
...props,
|
|
@@ -769,20 +813,20 @@ function Calendar({ className, classNames, showOutsideDays = true, ...props }) {
|
|
|
769
813
|
caption_label: "body font-semibold text-foreground",
|
|
770
814
|
nav: "flex items-center justify-between absolute inset-x-0 top-1",
|
|
771
815
|
button_previous: cn(
|
|
772
|
-
"absolute left-0
|
|
816
|
+
"absolute left-0 flex size-10 items-center justify-center rounded-md",
|
|
773
817
|
"text-muted-foreground hover:bg-muted hover:text-muted-foreground transition-colors"
|
|
774
818
|
),
|
|
775
819
|
button_next: cn(
|
|
776
|
-
"absolute right-0
|
|
820
|
+
"absolute right-0 flex size-10 items-center justify-center rounded-md",
|
|
777
821
|
"text-muted-foreground hover:bg-muted hover:text-muted-foreground transition-colors"
|
|
778
822
|
),
|
|
779
823
|
month_grid: "w-full border-collapse mt-1",
|
|
780
824
|
weekdays: "flex",
|
|
781
|
-
weekday: "
|
|
825
|
+
weekday: "flex size-10 items-center justify-center label text-muted-foreground font-normal",
|
|
782
826
|
week: "flex w-full mt-1",
|
|
783
827
|
day: "relative p-0 text-center",
|
|
784
828
|
day_button: cn(
|
|
785
|
-
"
|
|
829
|
+
"flex size-10 items-center justify-center rounded-full body font-normal",
|
|
786
830
|
"text-foreground hover:bg-muted transition-colors",
|
|
787
831
|
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-primary/30"
|
|
788
832
|
),
|
|
@@ -816,8 +860,8 @@ function CardHeading({ title, description, actions, children, className }) {
|
|
|
816
860
|
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 items-center gap-3", children: [
|
|
817
861
|
children,
|
|
818
862
|
/* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
|
|
819
|
-
/* @__PURE__ */ jsx("p", { className: "body font-semibold text-foreground
|
|
820
|
-
description && /* @__PURE__ */ jsx("p", { className: "caption text-muted-foreground
|
|
863
|
+
/* @__PURE__ */ jsx("p", { className: "body truncate font-semibold text-balance text-foreground", children: title }),
|
|
864
|
+
description && /* @__PURE__ */ jsx("p", { className: "caption mt-0.5 text-pretty text-muted-foreground", children: description })
|
|
821
865
|
] })
|
|
822
866
|
] }),
|
|
823
867
|
actions && actions.length > 0 && /* @__PURE__ */ jsx("div", { className: "flex shrink-0 items-center gap-2", children: actions.map(
|
|
@@ -878,7 +922,7 @@ var CardTitle = React17.forwardRef(
|
|
|
878
922
|
{
|
|
879
923
|
ref,
|
|
880
924
|
"data-slot": "card-title",
|
|
881
|
-
className: cn("subheading text-foreground", className),
|
|
925
|
+
className: cn("subheading text-balance text-foreground", className),
|
|
882
926
|
...props
|
|
883
927
|
}
|
|
884
928
|
)
|
|
@@ -890,7 +934,7 @@ var CardDescription = React17.forwardRef(
|
|
|
890
934
|
{
|
|
891
935
|
ref,
|
|
892
936
|
"data-slot": "card-description",
|
|
893
|
-
className: cn("caption text-muted-foreground", className),
|
|
937
|
+
className: cn("caption text-pretty text-muted-foreground", className),
|
|
894
938
|
...props
|
|
895
939
|
}
|
|
896
940
|
)
|
|
@@ -1051,7 +1095,7 @@ function CarouselPrevious({
|
|
|
1051
1095
|
variant,
|
|
1052
1096
|
size,
|
|
1053
1097
|
className: cn(
|
|
1054
|
-
"absolute
|
|
1098
|
+
"absolute size-10 rounded-full",
|
|
1055
1099
|
orientation === "vertical" ? "-top-12 left-1/2 -translate-x-1/2 rotate-90" : "-left-12 top-1/2 -translate-y-1/2",
|
|
1056
1100
|
className
|
|
1057
1101
|
),
|
|
@@ -1078,7 +1122,7 @@ function CarouselNext({
|
|
|
1078
1122
|
variant,
|
|
1079
1123
|
size,
|
|
1080
1124
|
className: cn(
|
|
1081
|
-
"absolute
|
|
1125
|
+
"absolute size-10 rounded-full",
|
|
1082
1126
|
orientation === "vertical" ? "-bottom-12 left-1/2 -translate-x-1/2 rotate-90" : "-right-12 top-1/2 -translate-y-1/2",
|
|
1083
1127
|
className
|
|
1084
1128
|
),
|
|
@@ -1130,7 +1174,8 @@ var CheckboxRoot = React17.forwardRef(({ className, ...props }, ref) => /* @__PU
|
|
|
1130
1174
|
{
|
|
1131
1175
|
ref,
|
|
1132
1176
|
className: cn(
|
|
1133
|
-
"peer size-4 shrink-0 rounded border border-border bg-card transition-colors",
|
|
1177
|
+
"peer relative size-4 shrink-0 rounded border border-border bg-card transition-colors",
|
|
1178
|
+
"after:absolute after:left-1/2 after:top-1/2 after:size-10 after:-translate-x-1/2 after:-translate-y-1/2",
|
|
1134
1179
|
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-primary/30",
|
|
1135
1180
|
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
1136
1181
|
"data-[state=checked]:bg-brand-primary data-[state=checked]:border-brand-primary",
|
|
@@ -1171,7 +1216,7 @@ function ColorPicker({
|
|
|
1171
1216
|
disabled,
|
|
1172
1217
|
"aria-label": ariaLabel,
|
|
1173
1218
|
className: cn(
|
|
1174
|
-
"inline-flex
|
|
1219
|
+
"inline-flex size-10 items-center justify-center rounded-md border border-border bg-card",
|
|
1175
1220
|
"transition-colors hover:border-border",
|
|
1176
1221
|
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-primary/20 focus-visible:border-brand-primary",
|
|
1177
1222
|
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
@@ -1218,17 +1263,17 @@ function ColorPicker({
|
|
|
1218
1263
|
onKeyDown: (e) => {
|
|
1219
1264
|
if (e.key === "Enter") commit(e.target.value);
|
|
1220
1265
|
},
|
|
1221
|
-
className: "flex-1
|
|
1266
|
+
className: "h-10 flex-1 rounded-md border border-border bg-card px-2 caption text-foreground focus:outline-none focus:border-brand-primary"
|
|
1222
1267
|
}
|
|
1223
1268
|
)
|
|
1224
1269
|
] }),
|
|
1225
|
-
presets && presets.length > 0 && /* @__PURE__ */ jsx("div", { className: "mt-3 grid grid-cols-
|
|
1270
|
+
presets && presets.length > 0 && /* @__PURE__ */ jsx("div", { className: "mt-3 grid grid-cols-4 gap-2", children: presets.map((p) => /* @__PURE__ */ jsx(
|
|
1226
1271
|
"button",
|
|
1227
1272
|
{
|
|
1228
1273
|
type: "button",
|
|
1229
1274
|
onClick: () => onChange(p),
|
|
1230
1275
|
"aria-label": p,
|
|
1231
|
-
className: "
|
|
1276
|
+
className: "size-10 rounded-md border border-black/10 transition-transform hover:scale-105 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-primary/30",
|
|
1232
1277
|
style: { backgroundColor: p }
|
|
1233
1278
|
},
|
|
1234
1279
|
p
|
|
@@ -1400,7 +1445,7 @@ function Combobox({
|
|
|
1400
1445
|
"aria-activedescendant": open && activeIndex >= 0 ? `${listboxId}-option-${activeIndex}` : void 0,
|
|
1401
1446
|
"aria-autocomplete": "list",
|
|
1402
1447
|
className: cn(
|
|
1403
|
-
"flex h-
|
|
1448
|
+
"flex h-10 w-full rounded-lg border border-border bg-card pr-10 body text-foreground",
|
|
1404
1449
|
"placeholder:text-muted-foreground",
|
|
1405
1450
|
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/30 focus-visible:border-border",
|
|
1406
1451
|
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
@@ -1425,7 +1470,7 @@ function Combobox({
|
|
|
1425
1470
|
type: "button",
|
|
1426
1471
|
tabIndex: -1,
|
|
1427
1472
|
"aria-label": open ? "Close" : "Open",
|
|
1428
|
-
className: "absolute inset-y-0 right-0 flex items-center
|
|
1473
|
+
className: "absolute inset-y-0 right-0 flex w-10 items-center justify-center text-muted-foreground hover:text-muted-foreground transition-colors",
|
|
1429
1474
|
onClick: () => {
|
|
1430
1475
|
if (open) {
|
|
1431
1476
|
closeDropdown();
|
|
@@ -1448,7 +1493,7 @@ function Combobox({
|
|
|
1448
1493
|
role: "option",
|
|
1449
1494
|
"aria-selected": isSelected,
|
|
1450
1495
|
className: cn(
|
|
1451
|
-
"flex cursor-pointer select-none items-center gap-2.5 px-3 py-2 body transition-colors",
|
|
1496
|
+
"flex min-h-10 cursor-pointer select-none items-center gap-2.5 px-3 py-2 body transition-colors",
|
|
1452
1497
|
isSelected ? "bg-brand-primary text-background" : isActive ? "bg-muted text-foreground" : "text-foreground hover:bg-muted"
|
|
1453
1498
|
),
|
|
1454
1499
|
onMouseDown: (e) => e.preventDefault(),
|
|
@@ -1528,7 +1573,7 @@ var DialogContent = React17.forwardRef(({ className, children, ...props }, ref)
|
|
|
1528
1573
|
...props,
|
|
1529
1574
|
children: [
|
|
1530
1575
|
children,
|
|
1531
|
-
/* @__PURE__ */ jsxs(Dialog.Close, { className: "absolute right-
|
|
1576
|
+
/* @__PURE__ */ jsxs(Dialog.Close, { className: "absolute right-3 top-3 flex size-10 items-center justify-center rounded-md text-muted-foreground opacity-70 transition-[opacity,scale] hover:opacity-100 active:scale-[0.96] focus:outline-none focus:ring-2 focus:ring-ground-900/20", children: [
|
|
1532
1577
|
/* @__PURE__ */ jsx(X, { size: 16 }),
|
|
1533
1578
|
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
|
|
1534
1579
|
] })
|
|
@@ -1549,12 +1594,19 @@ var DialogTitle = React17.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
1549
1594
|
Dialog.Title,
|
|
1550
1595
|
{
|
|
1551
1596
|
ref,
|
|
1552
|
-
className: cn("body-lg font-semibold text-foreground", className),
|
|
1597
|
+
className: cn("body-lg font-semibold text-balance text-foreground", className),
|
|
1553
1598
|
...props
|
|
1554
1599
|
}
|
|
1555
1600
|
));
|
|
1556
1601
|
DialogTitle.displayName = "DialogTitle";
|
|
1557
|
-
var DialogDescription = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1602
|
+
var DialogDescription = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1603
|
+
Dialog.Description,
|
|
1604
|
+
{
|
|
1605
|
+
ref,
|
|
1606
|
+
className: cn("body text-pretty text-muted-foreground", className),
|
|
1607
|
+
...props
|
|
1608
|
+
}
|
|
1609
|
+
));
|
|
1558
1610
|
DialogDescription.displayName = "DialogDescription";
|
|
1559
1611
|
function CommandPalette({
|
|
1560
1612
|
open,
|
|
@@ -1615,7 +1667,7 @@ function CommandPalette({
|
|
|
1615
1667
|
"button",
|
|
1616
1668
|
{
|
|
1617
1669
|
type: "button",
|
|
1618
|
-
className: "flex w-full items-center gap-3 px-4 py-2.5 body text-left transition-colors hover:bg-muted focus-visible:bg-muted focus-visible:outline-none",
|
|
1670
|
+
className: "flex min-h-10 w-full items-center gap-3 px-4 py-2.5 body text-left transition-colors hover:bg-muted focus-visible:bg-muted focus-visible:outline-none",
|
|
1619
1671
|
onClick: () => handleSelect(item),
|
|
1620
1672
|
children: [
|
|
1621
1673
|
item.icon && /* @__PURE__ */ jsx("span", { className: "flex size-8 shrink-0 items-center justify-center rounded-lg border border-border bg-card text-muted-foreground", children: item.icon }),
|
|
@@ -1654,17 +1706,23 @@ function Command({ className, children, onSelect, ...props }) {
|
|
|
1654
1706
|
setVisibleCount(visibleIds.current.size);
|
|
1655
1707
|
}
|
|
1656
1708
|
}, []);
|
|
1657
|
-
return /* @__PURE__ */ jsx(
|
|
1658
|
-
|
|
1709
|
+
return /* @__PURE__ */ jsx(
|
|
1710
|
+
CommandCtx.Provider,
|
|
1659
1711
|
{
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1712
|
+
value: { query, setQuery, ...onSelect !== void 0 && { onSelect }, reportVisible },
|
|
1713
|
+
children: /* @__PURE__ */ jsx(CommandVisibleCtx.Provider, { value: visibleCount, children: /* @__PURE__ */ jsx(
|
|
1714
|
+
"div",
|
|
1715
|
+
{
|
|
1716
|
+
className: cn(
|
|
1717
|
+
"flex flex-col overflow-hidden rounded-xl border border-border bg-card",
|
|
1718
|
+
className
|
|
1719
|
+
),
|
|
1720
|
+
...props,
|
|
1721
|
+
children
|
|
1722
|
+
}
|
|
1723
|
+
) })
|
|
1666
1724
|
}
|
|
1667
|
-
)
|
|
1725
|
+
);
|
|
1668
1726
|
}
|
|
1669
1727
|
var CommandInput = React17.forwardRef(({ className, ...props }, ref) => {
|
|
1670
1728
|
const { query, setQuery } = React17.useContext(CommandCtx);
|
|
@@ -1778,7 +1836,7 @@ var CommandItem = React17.forwardRef(
|
|
|
1778
1836
|
"data-cmd-item": true,
|
|
1779
1837
|
tabIndex: disabled ? void 0 : 0,
|
|
1780
1838
|
className: cn(
|
|
1781
|
-
"relative flex cursor-default select-none items-center gap-2 rounded-md px-2.5 py-
|
|
1839
|
+
"relative mx-1 flex min-h-10 cursor-default select-none items-center gap-2 rounded-md px-2.5 py-2",
|
|
1782
1840
|
"body text-muted-foreground outline-none transition-colors",
|
|
1783
1841
|
"hover:bg-muted hover:text-foreground",
|
|
1784
1842
|
"focus:bg-muted focus:text-foreground",
|
|
@@ -1842,7 +1900,7 @@ var ContextMenuItem = React17.forwardRef(({ className, inset, destructive, ...pr
|
|
|
1842
1900
|
{
|
|
1843
1901
|
ref,
|
|
1844
1902
|
className: cn(
|
|
1845
|
-
"relative flex cursor-default select-none items-center gap-2 rounded-md px-2.5 py-
|
|
1903
|
+
"relative flex min-h-10 cursor-default select-none items-center gap-2 rounded-md px-2.5 py-2",
|
|
1846
1904
|
"body outline-none transition-colors",
|
|
1847
1905
|
destructive ? "text-destructive focus:bg-destructive/10 focus:text-destructive" : "text-muted-foreground focus:bg-muted focus:text-foreground",
|
|
1848
1906
|
"data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
@@ -1858,7 +1916,7 @@ var ContextMenuCheckboxItem = React17.forwardRef(({ className, children, ...prop
|
|
|
1858
1916
|
{
|
|
1859
1917
|
ref,
|
|
1860
1918
|
className: cn(
|
|
1861
|
-
"relative flex cursor-default select-none items-center gap-2 rounded-md pl-8 pr-2.5
|
|
1919
|
+
"relative flex min-h-10 cursor-default select-none items-center gap-2 rounded-md py-2 pl-8 pr-2.5",
|
|
1862
1920
|
"body text-muted-foreground outline-none transition-colors",
|
|
1863
1921
|
"focus:bg-muted focus:text-foreground",
|
|
1864
1922
|
"data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
@@ -1877,7 +1935,7 @@ var ContextMenuRadioItem = React17.forwardRef(({ className, children, ...props }
|
|
|
1877
1935
|
{
|
|
1878
1936
|
ref,
|
|
1879
1937
|
className: cn(
|
|
1880
|
-
"relative flex cursor-default select-none items-center gap-2 rounded-md pl-8 pr-2.5
|
|
1938
|
+
"relative flex min-h-10 cursor-default select-none items-center gap-2 rounded-md py-2 pl-8 pr-2.5",
|
|
1881
1939
|
"body text-muted-foreground outline-none transition-colors",
|
|
1882
1940
|
"focus:bg-muted focus:text-foreground",
|
|
1883
1941
|
"data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
@@ -1914,7 +1972,7 @@ var ContextMenuSubTrigger = React17.forwardRef(({ className, inset, children, ..
|
|
|
1914
1972
|
{
|
|
1915
1973
|
ref,
|
|
1916
1974
|
className: cn(
|
|
1917
|
-
"relative flex cursor-default select-none items-center gap-2 rounded-md px-2.5 py-
|
|
1975
|
+
"relative flex min-h-10 cursor-default select-none items-center gap-2 rounded-md px-2.5 py-2",
|
|
1918
1976
|
"body text-muted-foreground outline-none transition-colors",
|
|
1919
1977
|
"focus:bg-muted focus:text-foreground data-[state=open]:bg-muted",
|
|
1920
1978
|
inset && "pl-8",
|
|
@@ -2021,7 +2079,7 @@ function Input({ className, type, ...props }) {
|
|
|
2021
2079
|
type,
|
|
2022
2080
|
"data-slot": "input",
|
|
2023
2081
|
className: cn(
|
|
2024
|
-
"flex h-
|
|
2082
|
+
"flex h-10 w-full rounded-md border border-border bg-card px-3 py-1",
|
|
2025
2083
|
"body text-foreground placeholder:text-muted-foreground",
|
|
2026
2084
|
"transition-colors duration-150",
|
|
2027
2085
|
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-primary/20 focus-visible:border-brand-primary",
|
|
@@ -2075,7 +2133,7 @@ function DataTable({
|
|
|
2075
2133
|
"button",
|
|
2076
2134
|
{
|
|
2077
2135
|
className: cn(
|
|
2078
|
-
"flex items-center gap-1 transition-colors hover:text-muted-foreground",
|
|
2136
|
+
"flex min-h-10 items-center gap-1 transition-colors hover:text-muted-foreground",
|
|
2079
2137
|
header.column.getIsSorted() && "text-foreground"
|
|
2080
2138
|
),
|
|
2081
2139
|
onClick: header.column.getToggleSortingHandler(),
|
|
@@ -2088,16 +2146,23 @@ function DataTable({
|
|
|
2088
2146
|
},
|
|
2089
2147
|
header.id
|
|
2090
2148
|
)) }, headerGroup.id)) }),
|
|
2091
|
-
/* @__PURE__ */ jsx(TableBody, { children: table.getRowModel().rows?.length ? table.getRowModel().rows.map((row) => /* @__PURE__ */ jsx(TableRow, { children: row.getVisibleCells().map((cell) => /* @__PURE__ */ jsx(TableCell, { children: flexRender(cell.column.columnDef.cell, cell.getContext()) }, cell.id)) }, row.id)) : /* @__PURE__ */ jsx(TableRow, { children: /* @__PURE__ */ jsx(
|
|
2149
|
+
/* @__PURE__ */ jsx(TableBody, { children: table.getRowModel().rows?.length ? table.getRowModel().rows.map((row) => /* @__PURE__ */ jsx(TableRow, { children: row.getVisibleCells().map((cell) => /* @__PURE__ */ jsx(TableCell, { children: flexRender(cell.column.columnDef.cell, cell.getContext()) }, cell.id)) }, row.id)) : /* @__PURE__ */ jsx(TableRow, { children: /* @__PURE__ */ jsx(
|
|
2150
|
+
TableCell,
|
|
2151
|
+
{
|
|
2152
|
+
colSpan: columns.length,
|
|
2153
|
+
className: "h-24 text-center text-muted-foreground",
|
|
2154
|
+
children: "No results."
|
|
2155
|
+
}
|
|
2156
|
+
) }) })
|
|
2092
2157
|
] }),
|
|
2093
2158
|
showPagination && /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
|
|
2094
|
-
/* @__PURE__ */ jsxs("p", { className: "caption text-muted-foreground", children: [
|
|
2159
|
+
/* @__PURE__ */ jsxs("p", { className: "caption tabular-nums text-muted-foreground", children: [
|
|
2095
2160
|
table.getFilteredRowModel().rows.length,
|
|
2096
2161
|
" result",
|
|
2097
2162
|
table.getFilteredRowModel().rows.length !== 1 ? "s" : ""
|
|
2098
2163
|
] }),
|
|
2099
2164
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
2100
|
-
/* @__PURE__ */ jsxs("span", { className: "caption text-muted-foreground", children: [
|
|
2165
|
+
/* @__PURE__ */ jsxs("span", { className: "caption tabular-nums text-muted-foreground", children: [
|
|
2101
2166
|
"Page ",
|
|
2102
2167
|
table.getState().pagination.pageIndex + 1,
|
|
2103
2168
|
" of ",
|
|
@@ -2200,8 +2265,8 @@ function DescriptionList({
|
|
|
2200
2265
|
}) {
|
|
2201
2266
|
return /* @__PURE__ */ jsxs("div", { className, children: [
|
|
2202
2267
|
(title || description) && /* @__PURE__ */ jsxs("div", { className: "mb-4", children: [
|
|
2203
|
-
title && /* @__PURE__ */ jsx("p", { className: "body font-semibold text-foreground", children: title }),
|
|
2204
|
-
description && /* @__PURE__ */ jsx("p", { className: "mt-1 caption text-muted-foreground", children: description })
|
|
2268
|
+
title && /* @__PURE__ */ jsx("p", { className: "body font-semibold text-balance text-foreground", children: title }),
|
|
2269
|
+
description && /* @__PURE__ */ jsx("p", { className: "mt-1 caption text-pretty text-muted-foreground", children: description })
|
|
2205
2270
|
] }),
|
|
2206
2271
|
/* @__PURE__ */ jsx("dl", { className: cn("border-t border-border", columns === 2 && "sm:grid sm:grid-cols-2"), children: items.map((item, i) => /* @__PURE__ */ jsxs(
|
|
2207
2272
|
"div",
|
|
@@ -2283,8 +2348,8 @@ function EmptyState({ icon, title, description, action, className }) {
|
|
|
2283
2348
|
return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col items-center gap-4 px-6 py-14 text-center", className), children: [
|
|
2284
2349
|
icon && /* @__PURE__ */ jsx("div", { className: "flex size-12 items-center justify-center rounded-xl bg-brand-secondary/20 text-muted-foreground", children: icon }),
|
|
2285
2350
|
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1.5", children: [
|
|
2286
|
-
/* @__PURE__ */ jsx("p", { className: "body font-semibold text-foreground", children: title }),
|
|
2287
|
-
description && /* @__PURE__ */ jsx("p", { className: "body max-w-xs text-muted-foreground", children: description })
|
|
2351
|
+
/* @__PURE__ */ jsx("p", { className: "body text-balance font-semibold text-foreground", children: title }),
|
|
2352
|
+
description && /* @__PURE__ */ jsx("p", { className: "body max-w-xs text-pretty text-muted-foreground", children: description })
|
|
2288
2353
|
] }),
|
|
2289
2354
|
action && (action.href ? /* @__PURE__ */ jsx(Button, { size: "sm", asChild: true, children: /* @__PURE__ */ jsx("a", { href: action.href, children: action.label }) }) : /* @__PURE__ */ jsx(Button, { size: "sm", onClick: action.onClick, children: action.label }))
|
|
2290
2355
|
] });
|
|
@@ -2360,8 +2425,8 @@ function GridListCard({
|
|
|
2360
2425
|
),
|
|
2361
2426
|
children: [
|
|
2362
2427
|
accent && /* @__PURE__ */ jsx("div", { className: "mb-2", children: accent }),
|
|
2363
|
-
/* @__PURE__ */ jsx("p", { className: "body font-semibold text-foreground", children: title }),
|
|
2364
|
-
description && /* @__PURE__ */ jsx("p", { className: "caption text-muted-foreground", children: description }),
|
|
2428
|
+
/* @__PURE__ */ jsx("p", { className: "body font-semibold text-foreground text-balance", children: title }),
|
|
2429
|
+
description && /* @__PURE__ */ jsx("p", { className: "caption text-muted-foreground text-pretty", children: description }),
|
|
2365
2430
|
(meta || trailing) && /* @__PURE__ */ jsxs("div", { className: "mt-auto flex items-center justify-between pt-3", children: [
|
|
2366
2431
|
meta && /* @__PURE__ */ jsx("span", { className: "caption text-muted-foreground", children: meta }),
|
|
2367
2432
|
trailing && /* @__PURE__ */ jsx("span", { className: "caption text-muted-foreground", children: trailing })
|
|
@@ -2408,7 +2473,7 @@ function GridListAccentCard({
|
|
|
2408
2473
|
),
|
|
2409
2474
|
/* @__PURE__ */ jsxs("div", { className: "flex flex-1 items-center justify-between truncate border-l border-border px-4 py-3", children: [
|
|
2410
2475
|
/* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
|
|
2411
|
-
/* @__PURE__ */ jsx("p", { className: "body font-semibold text-foreground truncate", children: title }),
|
|
2476
|
+
/* @__PURE__ */ jsx("p", { className: "body font-semibold text-foreground truncate text-balance", children: title }),
|
|
2412
2477
|
meta && /* @__PURE__ */ jsx("p", { className: "caption text-muted-foreground", children: meta })
|
|
2413
2478
|
] }),
|
|
2414
2479
|
trailing && /* @__PURE__ */ jsx("div", { className: "shrink-0 pl-2", children: trailing })
|
|
@@ -2469,7 +2534,7 @@ var InputGroup = React17.forwardRef(
|
|
|
2469
2534
|
const hasInsetTrailing = trailingIcon || trailingAction || error;
|
|
2470
2535
|
const hasTrailing = trailingAddon || hasInsetTrailing || trailingButton;
|
|
2471
2536
|
const baseInput = cn(
|
|
2472
|
-
"flex h-
|
|
2537
|
+
"flex h-10 w-full border bg-card body text-foreground placeholder:text-muted-foreground",
|
|
2473
2538
|
"focus-visible:outline-none focus-visible:ring-2 focus-visible:disabled:cursor-not-allowed disabled:opacity-50",
|
|
2474
2539
|
error ? "border-destructive focus-visible:ring-destructive/20 focus-visible:border-destructive" : "border-border focus-visible:ring-brand-primary/20 focus-visible:border-brand-primary"
|
|
2475
2540
|
);
|
|
@@ -2603,7 +2668,14 @@ var InputNumber = React17.forwardRef(
|
|
|
2603
2668
|
...rest
|
|
2604
2669
|
}
|
|
2605
2670
|
),
|
|
2606
|
-
unit && /* @__PURE__ */ jsx(
|
|
2671
|
+
unit && /* @__PURE__ */ jsx(
|
|
2672
|
+
"span",
|
|
2673
|
+
{
|
|
2674
|
+
"aria-hidden": true,
|
|
2675
|
+
className: "caption-xs text-muted-foreground self-center pr-1.5 select-none",
|
|
2676
|
+
children: unit
|
|
2677
|
+
}
|
|
2678
|
+
),
|
|
2607
2679
|
!hideSteppers && /* @__PURE__ */ jsxs("div", { className: "flex flex-col border-l border-border", children: [
|
|
2608
2680
|
/* @__PURE__ */ jsx(
|
|
2609
2681
|
"button",
|
|
@@ -2660,7 +2732,7 @@ var InputOTPSlot = React17.forwardRef(({ index, className, ...props }, ref) => {
|
|
|
2660
2732
|
"relative flex h-12 w-11 items-center justify-center",
|
|
2661
2733
|
"border-y border-r border-border body font-medium text-foreground",
|
|
2662
2734
|
"first:rounded-l-xl first:border-l last:rounded-r-xl",
|
|
2663
|
-
"transition-
|
|
2735
|
+
"transition-[border-color,box-shadow]",
|
|
2664
2736
|
isActive && "z-10 ring-2 ring-brand-primary/40 border-brand-primary",
|
|
2665
2737
|
className
|
|
2666
2738
|
),
|
|
@@ -2732,7 +2804,7 @@ var MenubarRoot = React17.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
2732
2804
|
{
|
|
2733
2805
|
ref,
|
|
2734
2806
|
className: cn(
|
|
2735
|
-
"flex h-
|
|
2807
|
+
"flex min-h-10 items-center gap-0.5 rounded-lg border border-border bg-card px-1",
|
|
2736
2808
|
className
|
|
2737
2809
|
),
|
|
2738
2810
|
...props
|
|
@@ -2748,7 +2820,7 @@ var MenubarTrigger = React17.forwardRef(({ className, ...props }, ref) => /* @__
|
|
|
2748
2820
|
{
|
|
2749
2821
|
ref,
|
|
2750
2822
|
className: cn(
|
|
2751
|
-
"flex cursor-default items-center rounded-md px-3 py-1 body font-medium text-muted-foreground select-none outline-none",
|
|
2823
|
+
"flex min-h-8 cursor-default items-center rounded-md px-3 py-1 body font-medium text-muted-foreground select-none outline-none",
|
|
2752
2824
|
"hover:bg-muted",
|
|
2753
2825
|
"data-[state=open]:bg-muted data-[state=open]:text-foreground",
|
|
2754
2826
|
"focus:bg-muted",
|
|
@@ -2783,7 +2855,7 @@ var MenubarItem = React17.forwardRef(({ className, inset, ...props }, ref) => /*
|
|
|
2783
2855
|
{
|
|
2784
2856
|
ref,
|
|
2785
2857
|
className: cn(
|
|
2786
|
-
"relative flex cursor-default select-none items-center gap-2 rounded-md px-2.5 py-
|
|
2858
|
+
"relative flex min-h-10 cursor-default select-none items-center gap-2 rounded-md px-2.5 py-2",
|
|
2787
2859
|
"body text-muted-foreground outline-none transition-colors",
|
|
2788
2860
|
"focus:bg-muted focus:text-foreground",
|
|
2789
2861
|
"data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
@@ -2799,7 +2871,7 @@ var MenubarCheckboxItem = React17.forwardRef(({ className, children, ...props },
|
|
|
2799
2871
|
{
|
|
2800
2872
|
ref,
|
|
2801
2873
|
className: cn(
|
|
2802
|
-
"relative flex cursor-default select-none items-center gap-2 rounded-md pl-8 pr-2.5
|
|
2874
|
+
"relative flex min-h-10 cursor-default select-none items-center gap-2 rounded-md py-2 pl-8 pr-2.5",
|
|
2803
2875
|
"body text-muted-foreground outline-none transition-colors",
|
|
2804
2876
|
"focus:bg-muted focus:text-foreground",
|
|
2805
2877
|
"data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
@@ -2818,7 +2890,7 @@ var MenubarRadioItem = React17.forwardRef(({ className, children, ...props }, re
|
|
|
2818
2890
|
{
|
|
2819
2891
|
ref,
|
|
2820
2892
|
className: cn(
|
|
2821
|
-
"relative flex cursor-default select-none items-center gap-2 rounded-md pl-8 pr-2.5
|
|
2893
|
+
"relative flex min-h-10 cursor-default select-none items-center gap-2 rounded-md py-2 pl-8 pr-2.5",
|
|
2822
2894
|
"body text-muted-foreground outline-none transition-colors",
|
|
2823
2895
|
"focus:bg-muted focus:text-foreground",
|
|
2824
2896
|
"data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
@@ -2841,21 +2913,14 @@ var MenubarLabel = React17.forwardRef(({ className, inset, ...props }, ref) => /
|
|
|
2841
2913
|
}
|
|
2842
2914
|
));
|
|
2843
2915
|
MenubarLabel.displayName = "MenubarLabel";
|
|
2844
|
-
var MenubarSeparator = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2845
|
-
Menubar.Separator,
|
|
2846
|
-
{
|
|
2847
|
-
ref,
|
|
2848
|
-
className: cn("mx-1 my-1 h-px bg-muted", className),
|
|
2849
|
-
...props
|
|
2850
|
-
}
|
|
2851
|
-
));
|
|
2916
|
+
var MenubarSeparator = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(Menubar.Separator, { ref, className: cn("mx-1 my-1 h-px bg-muted", className), ...props }));
|
|
2852
2917
|
MenubarSeparator.displayName = "MenubarSeparator";
|
|
2853
2918
|
var MenubarSubTrigger = React17.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
2854
2919
|
Menubar.SubTrigger,
|
|
2855
2920
|
{
|
|
2856
2921
|
ref,
|
|
2857
2922
|
className: cn(
|
|
2858
|
-
"relative flex cursor-default select-none items-center gap-2 rounded-md px-2.5 py-
|
|
2923
|
+
"relative flex min-h-10 cursor-default select-none items-center gap-2 rounded-md px-2.5 py-2",
|
|
2859
2924
|
"body text-muted-foreground outline-none transition-colors",
|
|
2860
2925
|
"focus:bg-muted focus:text-foreground data-[state=open]:bg-muted",
|
|
2861
2926
|
inset && "pl-8",
|
|
@@ -2895,7 +2960,7 @@ var NativeSelect = React17.forwardRef(({ className, children, ...props }, ref) =
|
|
|
2895
2960
|
{
|
|
2896
2961
|
ref,
|
|
2897
2962
|
className: cn(
|
|
2898
|
-
"peer h-
|
|
2963
|
+
"peer h-10 w-full appearance-none rounded-lg border border-border bg-card pl-3 pr-8",
|
|
2899
2964
|
"body text-foreground",
|
|
2900
2965
|
"focus:outline-none focus:ring-2 focus:ring-ring/30 focus:border-border",
|
|
2901
2966
|
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
@@ -2944,7 +3009,7 @@ var NavigationMenuTrigger = React17.forwardRef(({ className, children, ...props
|
|
|
2944
3009
|
{
|
|
2945
3010
|
ref,
|
|
2946
3011
|
className: cn(
|
|
2947
|
-
"group inline-flex h-
|
|
3012
|
+
"group inline-flex h-10 w-max items-center justify-center gap-1 rounded-md px-3 py-2",
|
|
2948
3013
|
"body font-medium text-muted-foreground",
|
|
2949
3014
|
"hover:bg-muted hover:text-foreground",
|
|
2950
3015
|
"data-[active]:bg-muted data-[state=open]:bg-muted",
|
|
@@ -2988,7 +3053,7 @@ var NavigationMenuLink = React17.forwardRef(({ className, ...props }, ref) => /*
|
|
|
2988
3053
|
{
|
|
2989
3054
|
ref,
|
|
2990
3055
|
className: cn(
|
|
2991
|
-
"block select-none rounded-md px-3 py-2 body text-muted-foreground",
|
|
3056
|
+
"block min-h-10 select-none rounded-md px-3 py-2 body text-muted-foreground",
|
|
2992
3057
|
"hover:bg-muted hover:text-foreground",
|
|
2993
3058
|
"outline-none transition-colors",
|
|
2994
3059
|
className
|
|
@@ -3029,7 +3094,7 @@ var NavigationMenuIndicator = React17.forwardRef(({ className, ...props }, ref)
|
|
|
3029
3094
|
NavigationMenuIndicator.displayName = "NavigationMenuIndicator";
|
|
3030
3095
|
function navigationMenuTriggerStyle() {
|
|
3031
3096
|
return cn(
|
|
3032
|
-
"group inline-flex h-
|
|
3097
|
+
"group inline-flex h-10 w-max items-center justify-center gap-1 rounded-md px-3 py-2",
|
|
3033
3098
|
"body font-medium text-muted-foreground",
|
|
3034
3099
|
"hover:bg-muted hover:text-foreground",
|
|
3035
3100
|
"data-[active]:bg-muted data-[state=open]:bg-muted",
|
|
@@ -3071,15 +3136,15 @@ function Notification({
|
|
|
3071
3136
|
children: /* @__PURE__ */ jsx("div", { className: "p-4", children: /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-3", children: [
|
|
3072
3137
|
resolvedIcon && /* @__PURE__ */ jsx("div", { className: cn("shrink-0 mt-0.5", config.iconClass), children: resolvedIcon }),
|
|
3073
3138
|
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
3074
|
-
/* @__PURE__ */ jsx("p", { className: "body font-semibold text-foreground", children: title }),
|
|
3075
|
-
description && /* @__PURE__ */ jsx("p", { className: "mt-0.5 body text-muted-foreground", children: description }),
|
|
3139
|
+
/* @__PURE__ */ jsx("p", { className: "body font-semibold text-foreground text-balance", children: title }),
|
|
3140
|
+
description && /* @__PURE__ */ jsx("p", { className: "mt-0.5 body text-muted-foreground text-pretty", children: description }),
|
|
3076
3141
|
actions && actions.length > 0 && /* @__PURE__ */ jsx("div", { className: "mt-3 flex gap-3", children: actions.map((action, i) => /* @__PURE__ */ jsx(
|
|
3077
3142
|
"button",
|
|
3078
3143
|
{
|
|
3079
3144
|
type: "button",
|
|
3080
3145
|
onClick: action.onClick,
|
|
3081
3146
|
className: cn(
|
|
3082
|
-
"body font-semibold transition-colors",
|
|
3147
|
+
"min-h-10 body font-semibold transition-colors",
|
|
3083
3148
|
action.variant === "ghost" ? "text-muted-foreground hover:text-muted-foreground" : "text-foreground hover:text-muted-foreground"
|
|
3084
3149
|
),
|
|
3085
3150
|
children: action.label
|
|
@@ -3092,7 +3157,7 @@ function Notification({
|
|
|
3092
3157
|
{
|
|
3093
3158
|
type: "button",
|
|
3094
3159
|
onClick: onClose,
|
|
3095
|
-
className: "rounded-md text-muted-foreground hover:text-muted-foreground
|
|
3160
|
+
className: "flex size-10 items-center justify-center rounded-md text-muted-foreground transition-[color,scale] hover:text-muted-foreground active:scale-[0.96] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/30",
|
|
3096
3161
|
children: [
|
|
3097
3162
|
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" }),
|
|
3098
3163
|
/* @__PURE__ */ jsx(X, { size: 16 })
|
|
@@ -3128,10 +3193,10 @@ function PageHeading({
|
|
|
3128
3193
|
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-start justify-between gap-4", children: [
|
|
3129
3194
|
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
3130
3195
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
|
|
3131
|
-
/* @__PURE__ */ jsx("h1", { className: "display text-foreground truncate", children: title }),
|
|
3196
|
+
/* @__PURE__ */ jsx("h1", { className: "display text-balance text-foreground truncate", children: title }),
|
|
3132
3197
|
badge && (typeof badge === "string" ? /* @__PURE__ */ jsx(Badge, { variant: "secondary", children: badge }) : /* @__PURE__ */ jsx(Badge, { variant: badge.variant ?? "secondary", children: badge.label }))
|
|
3133
3198
|
] }),
|
|
3134
|
-
description && /* @__PURE__ */ jsx("p", { className: "mt-1.5 body text-muted-foreground
|
|
3199
|
+
description && /* @__PURE__ */ jsx("p", { className: "mt-1.5 body max-w-2xl text-pretty text-muted-foreground", children: description }),
|
|
3135
3200
|
meta && meta.length > 0 && /* @__PURE__ */ jsx("div", { className: "mt-3 flex flex-wrap items-center gap-4", children: meta.map((m, i) => /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 caption text-muted-foreground", children: [
|
|
3136
3201
|
m.icon && /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: m.icon }),
|
|
3137
3202
|
/* @__PURE__ */ jsx("span", { children: m.text })
|
|
@@ -3185,7 +3250,7 @@ var PaginationLink = ({ className, isActive, ...props }) => /* @__PURE__ */ jsx(
|
|
|
3185
3250
|
"aria-current": isActive ? "page" : void 0,
|
|
3186
3251
|
className: cn(
|
|
3187
3252
|
buttonVariants({ variant: isActive ? "default" : "ghost", size: "icon" }),
|
|
3188
|
-
"size-
|
|
3253
|
+
"size-10 rounded-md body",
|
|
3189
3254
|
className
|
|
3190
3255
|
),
|
|
3191
3256
|
...props
|
|
@@ -3225,7 +3290,7 @@ var PaginationEllipsis = ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
|
3225
3290
|
"span",
|
|
3226
3291
|
{
|
|
3227
3292
|
"aria-hidden": true,
|
|
3228
|
-
className: cn("flex size-
|
|
3293
|
+
className: cn("flex size-10 items-center justify-center text-muted-foreground", className),
|
|
3229
3294
|
...props,
|
|
3230
3295
|
children: /* @__PURE__ */ jsx(MoreHorizontal, { size: 14 })
|
|
3231
3296
|
}
|
|
@@ -3241,7 +3306,7 @@ var ProgressRoot = React17.forwardRef(({ className, value, ...props }, ref) => /
|
|
|
3241
3306
|
children: /* @__PURE__ */ jsx(
|
|
3242
3307
|
Progress.Indicator,
|
|
3243
3308
|
{
|
|
3244
|
-
className: "h-full w-full flex-1 bg-brand-primary transition-
|
|
3309
|
+
className: "h-full w-full flex-1 bg-brand-primary transition-transform",
|
|
3245
3310
|
style: { transform: `translateX(-${100 - (value ?? 0)}%)` }
|
|
3246
3311
|
}
|
|
3247
3312
|
)
|
|
@@ -3303,7 +3368,8 @@ function RadioCards({ options, value, onValueChange, columns = 3, className }) {
|
|
|
3303
3368
|
disabled: option.disabled,
|
|
3304
3369
|
onClick: () => !option.disabled && onValueChange?.(option.value),
|
|
3305
3370
|
className: cn(
|
|
3306
|
-
"relative flex cursor-pointer flex-col gap-1 rounded-xl border p-4 text-left transition-
|
|
3371
|
+
"relative flex cursor-pointer flex-col gap-1 rounded-xl border p-4 text-left transition-[background-color,border-color,box-shadow,opacity,scale]",
|
|
3372
|
+
"active:scale-[0.96]",
|
|
3307
3373
|
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-primary/30",
|
|
3308
3374
|
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
3309
3375
|
isSelected ? "border-brand-primary bg-card shadow-natural" : "border-border bg-card hover:border-border"
|
|
@@ -3323,13 +3389,13 @@ function RadioCards({ options, value, onValueChange, columns = 3, className }) {
|
|
|
3323
3389
|
"p",
|
|
3324
3390
|
{
|
|
3325
3391
|
className: cn(
|
|
3326
|
-
"body font-semibold",
|
|
3392
|
+
"body font-semibold text-pretty",
|
|
3327
3393
|
isSelected ? "text-foreground" : "text-muted-foreground"
|
|
3328
3394
|
),
|
|
3329
3395
|
children: option.label
|
|
3330
3396
|
}
|
|
3331
3397
|
),
|
|
3332
|
-
option.description && /* @__PURE__ */ jsx("p", { className: "mt-0.5 caption text-muted-foreground", children: option.description })
|
|
3398
|
+
option.description && /* @__PURE__ */ jsx("p", { className: "mt-0.5 caption text-pretty text-muted-foreground", children: option.description })
|
|
3333
3399
|
] }),
|
|
3334
3400
|
/* @__PURE__ */ jsx(
|
|
3335
3401
|
"div",
|
|
@@ -3366,7 +3432,8 @@ var RadioGroupItem = React17.forwardRef(({ className, ...props }, ref) => /* @__
|
|
|
3366
3432
|
{
|
|
3367
3433
|
ref,
|
|
3368
3434
|
className: cn(
|
|
3369
|
-
"aspect-square size-4 rounded-full border border-border text-foreground",
|
|
3435
|
+
"relative aspect-square size-4 rounded-full border border-border text-foreground",
|
|
3436
|
+
"after:absolute after:left-1/2 after:top-1/2 after:size-10 after:-translate-x-1/2 after:-translate-y-1/2",
|
|
3370
3437
|
"shadow-none transition-colors",
|
|
3371
3438
|
"focus:outline-none focus-visible:ring-2 focus-visible:ring-ring/20",
|
|
3372
3439
|
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
@@ -3464,8 +3531,8 @@ function SectionHeading({
|
|
|
3464
3531
|
),
|
|
3465
3532
|
children: [
|
|
3466
3533
|
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
3467
|
-
/* @__PURE__ */ jsx("h2", { className: "heading text-foreground truncate", children: title }),
|
|
3468
|
-
description && /* @__PURE__ */ jsx("p", { className: "mt-1 body text-muted-foreground", children: description })
|
|
3534
|
+
/* @__PURE__ */ jsx("h2", { className: "heading text-balance text-foreground truncate", children: title }),
|
|
3535
|
+
description && /* @__PURE__ */ jsx("p", { className: "mt-1 body text-pretty text-muted-foreground", children: description })
|
|
3469
3536
|
] }),
|
|
3470
3537
|
actions && actions.length > 0 && /* @__PURE__ */ jsx("div", { className: "flex shrink-0 items-center gap-2 pt-1", children: actions.map(
|
|
3471
3538
|
(action, i) => action.href ? /* @__PURE__ */ jsx(Button, { size: "sm", variant: action.variant ?? "default", asChild: true, children: /* @__PURE__ */ jsx("a", { href: action.href, children: action.label }) }, i) : /* @__PURE__ */ jsx(
|
|
@@ -3491,7 +3558,7 @@ var SelectTrigger = React17.forwardRef(({ className, children, ...props }, ref)
|
|
|
3491
3558
|
{
|
|
3492
3559
|
ref,
|
|
3493
3560
|
className: cn(
|
|
3494
|
-
"flex h-
|
|
3561
|
+
"flex h-10 w-full items-center justify-between rounded-xl bg-card px-3 py-2",
|
|
3495
3562
|
"body text-foreground shadow-natural",
|
|
3496
3563
|
"focus:outline-none focus:ring-2 focus:ring-ring/20",
|
|
3497
3564
|
"disabled:opacity-50 disabled:cursor-not-allowed",
|
|
@@ -3544,7 +3611,7 @@ var SelectItem = React17.forwardRef(({ className, children, ...props }, ref) =>
|
|
|
3544
3611
|
{
|
|
3545
3612
|
ref,
|
|
3546
3613
|
className: cn(
|
|
3547
|
-
"relative flex w-full cursor-default select-none items-center rounded-md px-2.5 py-
|
|
3614
|
+
"relative flex min-h-10 w-full cursor-default select-none items-center rounded-md px-2.5 py-2",
|
|
3548
3615
|
"body text-muted-foreground outline-none",
|
|
3549
3616
|
"focus:bg-muted focus:text-foreground",
|
|
3550
3617
|
"data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
@@ -3605,7 +3672,7 @@ var sheetContentVariants = cva(
|
|
|
3605
3672
|
[
|
|
3606
3673
|
"fixed z-50 bg-card shadow-elevated p-6",
|
|
3607
3674
|
"data-[state=open]:animate-in data-[state=closed]:animate-out",
|
|
3608
|
-
"transition ease-in-out duration-300"
|
|
3675
|
+
"transition-transform ease-in-out duration-300"
|
|
3609
3676
|
],
|
|
3610
3677
|
{
|
|
3611
3678
|
variants: {
|
|
@@ -3632,7 +3699,7 @@ var SheetContent = React17.forwardRef(
|
|
|
3632
3699
|
...props,
|
|
3633
3700
|
children: [
|
|
3634
3701
|
children,
|
|
3635
|
-
/* @__PURE__ */ jsxs(Dialog.Close, { className: "absolute right-
|
|
3702
|
+
/* @__PURE__ */ jsxs(Dialog.Close, { className: "absolute right-3 top-3 flex size-10 items-center justify-center rounded-md text-muted-foreground opacity-70 transition-[opacity,scale] hover:opacity-100 active:scale-[0.96] focus:outline-none focus:ring-2 focus:ring-ground-900/20", children: [
|
|
3636
3703
|
/* @__PURE__ */ jsx(X, { size: 16 }),
|
|
3637
3704
|
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
|
|
3638
3705
|
] })
|
|
@@ -3654,12 +3721,19 @@ var SheetTitle = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
3654
3721
|
Dialog.Title,
|
|
3655
3722
|
{
|
|
3656
3723
|
ref,
|
|
3657
|
-
className: cn("body-lg font-semibold text-foreground", className),
|
|
3724
|
+
className: cn("body-lg font-semibold text-balance text-foreground", className),
|
|
3658
3725
|
...props
|
|
3659
3726
|
}
|
|
3660
3727
|
));
|
|
3661
3728
|
SheetTitle.displayName = "SheetTitle";
|
|
3662
|
-
var SheetDescription = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3729
|
+
var SheetDescription = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3730
|
+
Dialog.Description,
|
|
3731
|
+
{
|
|
3732
|
+
ref,
|
|
3733
|
+
className: cn("body text-pretty text-muted-foreground", className),
|
|
3734
|
+
...props
|
|
3735
|
+
}
|
|
3736
|
+
));
|
|
3663
3737
|
SheetDescription.displayName = "SheetDescription";
|
|
3664
3738
|
function TooltipProvider({
|
|
3665
3739
|
children,
|
|
@@ -3815,8 +3889,8 @@ function SidebarTrigger({ className, onClick, ...props }) {
|
|
|
3815
3889
|
{
|
|
3816
3890
|
"data-sidebar": "trigger",
|
|
3817
3891
|
variant: "ghost",
|
|
3818
|
-
size: "
|
|
3819
|
-
className
|
|
3892
|
+
size: "icon",
|
|
3893
|
+
className,
|
|
3820
3894
|
onClick: (e) => {
|
|
3821
3895
|
onClick?.(e);
|
|
3822
3896
|
toggleSidebar();
|
|
@@ -3840,7 +3914,7 @@ function SidebarRail({ className, ...props }) {
|
|
|
3840
3914
|
onClick: toggleSidebar,
|
|
3841
3915
|
title: "Toggle sidebar",
|
|
3842
3916
|
className: cn(
|
|
3843
|
-
"absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 cursor-col-resize transition-
|
|
3917
|
+
"absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 cursor-col-resize transition-[left,right,width] ease-linear",
|
|
3844
3918
|
"after:absolute after:inset-y-0 after:left-1/2 after:w-[2px]",
|
|
3845
3919
|
"hover:after:bg-brand-primary/30",
|
|
3846
3920
|
"group-data-[side=left]:-right-4 group-data-[side=right]:left-0",
|
|
@@ -3949,7 +4023,7 @@ function SidebarGroupAction({
|
|
|
3949
4023
|
{
|
|
3950
4024
|
"data-sidebar": "group-action",
|
|
3951
4025
|
className: cn(
|
|
3952
|
-
"absolute right-
|
|
4026
|
+
"absolute right-2 top-2 flex size-8 items-center justify-center",
|
|
3953
4027
|
"rounded-md text-muted-foreground hover:bg-muted hover:text-foreground",
|
|
3954
4028
|
"outline-none focus-visible:ring-2 focus-visible:ring-brand-primary/30",
|
|
3955
4029
|
className
|
|
@@ -3989,7 +4063,7 @@ function SidebarMenuButton({
|
|
|
3989
4063
|
"data-size": size,
|
|
3990
4064
|
className: cn(
|
|
3991
4065
|
// Base
|
|
3992
|
-
"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 body-sm text-left",
|
|
4066
|
+
"peer/menu-button flex min-h-10 w-full items-center gap-2 overflow-hidden rounded-md p-2 body-sm text-left",
|
|
3993
4067
|
"outline-none ring-ring",
|
|
3994
4068
|
"transition-[width,height,padding] duration-150",
|
|
3995
4069
|
"hover:bg-muted hover:text-foreground",
|
|
@@ -4007,7 +4081,7 @@ function SidebarMenuButton({
|
|
|
4007
4081
|
],
|
|
4008
4082
|
// Collapsed state
|
|
4009
4083
|
"group-data-[state=collapsed]/sidebar-wrapper:justify-center",
|
|
4010
|
-
"group-data-[state=collapsed]/sidebar-wrapper:size-
|
|
4084
|
+
"group-data-[state=collapsed]/sidebar-wrapper:size-10",
|
|
4011
4085
|
"group-data-[state=collapsed]/sidebar-wrapper:p-0",
|
|
4012
4086
|
className
|
|
4013
4087
|
),
|
|
@@ -4045,7 +4119,7 @@ function SidebarMenuAction({
|
|
|
4045
4119
|
{
|
|
4046
4120
|
"data-sidebar": "menu-action",
|
|
4047
4121
|
className: cn(
|
|
4048
|
-
"absolute right-1 top-1/2 -translate-y-1/2
|
|
4122
|
+
"absolute right-1 top-1/2 flex size-8 -translate-y-1/2 items-center justify-center",
|
|
4049
4123
|
"rounded-md text-muted-foreground hover:bg-muted hover:text-foreground",
|
|
4050
4124
|
"outline-none focus-visible:ring-2 focus-visible:ring-brand-primary/30",
|
|
4051
4125
|
showOnHover && [
|
|
@@ -4139,7 +4213,7 @@ function SidebarMenuSubButton({
|
|
|
4139
4213
|
"data-sidebar": "menu-sub-button",
|
|
4140
4214
|
"data-active": isActive,
|
|
4141
4215
|
className: cn(
|
|
4142
|
-
"flex h-
|
|
4216
|
+
"flex min-h-8 min-w-0 items-center gap-2 overflow-hidden rounded-md px-2",
|
|
4143
4217
|
"body text-muted-foreground outline-none",
|
|
4144
4218
|
"transition-colors duration-150",
|
|
4145
4219
|
"hover:text-foreground hover:bg-muted",
|
|
@@ -4171,7 +4245,7 @@ var SliderRoot = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
4171
4245
|
...props,
|
|
4172
4246
|
children: [
|
|
4173
4247
|
/* @__PURE__ */ jsx(Slider.Track, { className: "relative h-1.5 w-full grow overflow-hidden rounded-full bg-muted", children: /* @__PURE__ */ jsx(Slider.Range, { className: "absolute h-full bg-brand-primary" }) }),
|
|
4174
|
-
/* @__PURE__ */ jsx(Slider.Thumb, { className: "block size-4 rounded-full border-2 border-brand-primary bg-card shadow-natural transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-primary/30 disabled:pointer-events-none disabled:opacity-50" })
|
|
4248
|
+
/* @__PURE__ */ jsx(Slider.Thumb, { className: "relative block size-4 rounded-full border-2 border-brand-primary bg-card shadow-natural transition-colors after:absolute after:left-1/2 after:top-1/2 after:size-10 after:-translate-x-1/2 after:-translate-y-1/2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-primary/30 disabled:pointer-events-none disabled:opacity-50" })
|
|
4175
4249
|
]
|
|
4176
4250
|
}
|
|
4177
4251
|
));
|
|
@@ -4275,12 +4349,12 @@ function StatCard({ label, value, trend, icon, className }) {
|
|
|
4275
4349
|
/* @__PURE__ */ jsx("p", { className: "label text-muted-foreground", children: label }),
|
|
4276
4350
|
icon && /* @__PURE__ */ jsx("div", { className: "flex size-8 shrink-0 items-center justify-center rounded-lg bg-muted text-muted-foreground", children: icon })
|
|
4277
4351
|
] }),
|
|
4278
|
-
/* @__PURE__ */ jsx("p", { className: "heading-xl mt-2 text-foreground", children: value }),
|
|
4352
|
+
/* @__PURE__ */ jsx("p", { className: "heading-xl mt-2 tabular-nums text-foreground", children: value }),
|
|
4279
4353
|
trend && (() => {
|
|
4280
4354
|
const Icon = TrendIcon[trend.direction];
|
|
4281
4355
|
return /* @__PURE__ */ jsxs("div", { className: cn("mt-2 flex items-center gap-1", trendColor[trend.direction]), children: [
|
|
4282
4356
|
/* @__PURE__ */ jsx(Icon, { size: 12 }),
|
|
4283
|
-
/* @__PURE__ */ jsx("span", { className: "caption font-medium", children: trend.value })
|
|
4357
|
+
/* @__PURE__ */ jsx("span", { className: "caption tabular-nums font-medium", children: trend.value })
|
|
4284
4358
|
] });
|
|
4285
4359
|
})()
|
|
4286
4360
|
] });
|
|
@@ -4290,7 +4364,7 @@ function CirclesSteps({ steps, className }) {
|
|
|
4290
4364
|
return /* @__PURE__ */ jsx("nav", { "aria-label": "Progress", className, children: /* @__PURE__ */ jsx("ol", { role: "list", className: "flex items-center", children: steps.map((step, i) => {
|
|
4291
4365
|
const isLast = i === steps.length - 1;
|
|
4292
4366
|
return /* @__PURE__ */ jsxs("li", { className: cn("relative", !isLast && "flex-1"), children: [
|
|
4293
|
-
!isLast && /* @__PURE__ */ jsx("div", { className: "absolute
|
|
4367
|
+
!isLast && /* @__PURE__ */ jsx("div", { className: "absolute left-10 right-0 top-5 h-0.5", "aria-hidden": "true", children: /* @__PURE__ */ jsx(
|
|
4294
4368
|
"div",
|
|
4295
4369
|
{
|
|
4296
4370
|
className: cn(
|
|
@@ -4310,12 +4384,12 @@ function CirclesSteps({ steps, className }) {
|
|
|
4310
4384
|
"span",
|
|
4311
4385
|
{
|
|
4312
4386
|
className: cn(
|
|
4313
|
-
"relative z-10 flex size-
|
|
4387
|
+
"relative z-10 flex size-10 items-center justify-center rounded-full transition-colors",
|
|
4314
4388
|
step.status === "complete" && "bg-brand-primary group-hover:bg-brand-primary/80",
|
|
4315
4389
|
step.status === "current" && "border-2 border-brand-primary bg-card",
|
|
4316
4390
|
step.status === "upcoming" && "border-2 border-border bg-card group-hover:border-border"
|
|
4317
4391
|
),
|
|
4318
|
-
children: step.status === "complete" ? /* @__PURE__ */ jsx(Check, { size: 14, className: "text-background", strokeWidth: 2.5 }) : step.status === "current" ? /* @__PURE__ */ jsx("span", { className: "size-
|
|
4392
|
+
children: step.status === "complete" ? /* @__PURE__ */ jsx(Check, { size: 14, className: "text-background", strokeWidth: 2.5 }) : step.status === "current" ? /* @__PURE__ */ jsx("span", { className: "size-3 rounded-full bg-brand-primary" }) : /* @__PURE__ */ jsx("span", { className: "size-3 rounded-full bg-transparent group-hover:bg-muted" })
|
|
4319
4393
|
}
|
|
4320
4394
|
),
|
|
4321
4395
|
/* @__PURE__ */ jsxs("span", { className: "flex flex-col items-center", children: [
|
|
@@ -4329,7 +4403,7 @@ function CirclesSteps({ steps, className }) {
|
|
|
4329
4403
|
children: step.name
|
|
4330
4404
|
}
|
|
4331
4405
|
),
|
|
4332
|
-
step.description && /* @__PURE__ */ jsx("span", { className: "caption text-muted-foreground", children: step.description })
|
|
4406
|
+
step.description && /* @__PURE__ */ jsx("span", { className: "caption text-pretty text-muted-foreground", children: step.description })
|
|
4333
4407
|
] })
|
|
4334
4408
|
]
|
|
4335
4409
|
}
|
|
@@ -4340,7 +4414,7 @@ function CirclesSteps({ steps, className }) {
|
|
|
4340
4414
|
function BulletsSteps({ steps, className }) {
|
|
4341
4415
|
const currentIdx = steps.findIndex((s) => s.status === "current");
|
|
4342
4416
|
return /* @__PURE__ */ jsxs("nav", { className: cn("flex items-center gap-4", className), "aria-label": "Progress", children: [
|
|
4343
|
-
/* @__PURE__ */ jsxs("p", { className: "body font-medium text-muted-foreground", children: [
|
|
4417
|
+
/* @__PURE__ */ jsxs("p", { className: "body font-medium tabular-nums text-muted-foreground", children: [
|
|
4344
4418
|
"Step ",
|
|
4345
4419
|
currentIdx + 1,
|
|
4346
4420
|
" of ",
|
|
@@ -4351,11 +4425,11 @@ function BulletsSteps({ steps, className }) {
|
|
|
4351
4425
|
{
|
|
4352
4426
|
href: step.href ?? "#",
|
|
4353
4427
|
onClick: !step.href ? (e) => e.preventDefault() : void 0,
|
|
4354
|
-
className: "
|
|
4428
|
+
className: "relative flex size-10 items-center justify-center",
|
|
4355
4429
|
children: step.status === "complete" ? /* @__PURE__ */ jsx(
|
|
4356
4430
|
"span",
|
|
4357
4431
|
{
|
|
4358
|
-
className: "block size-2.5 rounded-full bg-brand-primary hover:bg-brand-primary/80
|
|
4432
|
+
className: "block size-2.5 rounded-full bg-brand-primary transition-colors hover:bg-brand-primary/80",
|
|
4359
4433
|
"aria-label": `${step.name}: completed`
|
|
4360
4434
|
}
|
|
4361
4435
|
) : step.status === "current" ? /* @__PURE__ */ jsxs(
|
|
@@ -4372,7 +4446,7 @@ function BulletsSteps({ steps, className }) {
|
|
|
4372
4446
|
) : /* @__PURE__ */ jsx(
|
|
4373
4447
|
"span",
|
|
4374
4448
|
{
|
|
4375
|
-
className: "block size-2.5 rounded-full bg-muted hover:bg-muted
|
|
4449
|
+
className: "block size-2.5 rounded-full bg-muted transition-colors hover:bg-muted",
|
|
4376
4450
|
"aria-label": `${step.name}: upcoming`
|
|
4377
4451
|
}
|
|
4378
4452
|
)
|
|
@@ -4388,7 +4462,7 @@ function ProgressSteps({ steps, className }) {
|
|
|
4388
4462
|
/* @__PURE__ */ jsx("div", { className: "h-1.5 w-full overflow-hidden rounded-full bg-muted", children: /* @__PURE__ */ jsx(
|
|
4389
4463
|
"div",
|
|
4390
4464
|
{
|
|
4391
|
-
className: "h-full rounded-full bg-brand-primary transition-
|
|
4465
|
+
className: "h-full rounded-full bg-brand-primary transition-[width] duration-500",
|
|
4392
4466
|
style: { width: `${progress}%` }
|
|
4393
4467
|
}
|
|
4394
4468
|
) }),
|
|
@@ -4398,7 +4472,7 @@ function ProgressSteps({ steps, className }) {
|
|
|
4398
4472
|
"div",
|
|
4399
4473
|
{
|
|
4400
4474
|
className: cn(
|
|
4401
|
-
"caption font-medium",
|
|
4475
|
+
"caption font-medium text-pretty",
|
|
4402
4476
|
i === 0 ? "text-left" : isLast ? "text-right" : "text-center",
|
|
4403
4477
|
step.status === "upcoming" ? "text-muted-foreground" : "text-foreground"
|
|
4404
4478
|
),
|
|
@@ -4421,8 +4495,8 @@ var SwitchRoot = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
4421
4495
|
{
|
|
4422
4496
|
ref,
|
|
4423
4497
|
className: cn(
|
|
4424
|
-
"peer inline-flex h-
|
|
4425
|
-
"border-2 border-transparent transition-
|
|
4498
|
+
"peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full",
|
|
4499
|
+
"border-2 border-transparent transition-[background-color,border-color,box-shadow] duration-150",
|
|
4426
4500
|
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-primary/30",
|
|
4427
4501
|
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
4428
4502
|
"data-[state=unchecked]:bg-muted data-[state=checked]:bg-brand-primary",
|
|
@@ -4433,8 +4507,8 @@ var SwitchRoot = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
4433
4507
|
Switch.Thumb,
|
|
4434
4508
|
{
|
|
4435
4509
|
className: cn(
|
|
4436
|
-
"pointer-events-none block size-
|
|
4437
|
-
"transition-transform data-[state=unchecked]:translate-x-0 data-[state=checked]:translate-x-
|
|
4510
|
+
"pointer-events-none block size-5 rounded-full bg-card shadow-natural",
|
|
4511
|
+
"transition-transform data-[state=unchecked]:translate-x-0 data-[state=checked]:translate-x-5"
|
|
4438
4512
|
)
|
|
4439
4513
|
}
|
|
4440
4514
|
)
|
|
@@ -4492,7 +4566,7 @@ var toggleVariants = cva(
|
|
|
4492
4566
|
[
|
|
4493
4567
|
"inline-flex shrink-0 items-center justify-center gap-2",
|
|
4494
4568
|
"body font-medium whitespace-nowrap rounded-md",
|
|
4495
|
-
"transition-
|
|
4569
|
+
"transition-[background-color,border-color,box-shadow,color,opacity,scale] duration-150 outline-none active:scale-[0.96]",
|
|
4496
4570
|
"focus-visible:ring-2 focus-visible:ring-brand-primary/30 focus-visible:ring-offset-1",
|
|
4497
4571
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
4498
4572
|
"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4"
|
|
@@ -4518,11 +4592,11 @@ var toggleVariants = cva(
|
|
|
4518
4592
|
},
|
|
4519
4593
|
size: {
|
|
4520
4594
|
sm: "h-8 gap-1.5 px-3",
|
|
4521
|
-
default: "h-
|
|
4522
|
-
lg: "h-
|
|
4523
|
-
icon: "size-
|
|
4595
|
+
default: "h-10 px-3",
|
|
4596
|
+
lg: "h-11 px-4",
|
|
4597
|
+
icon: "size-10",
|
|
4524
4598
|
"icon-sm": "size-8",
|
|
4525
|
-
"icon-lg": "size-
|
|
4599
|
+
"icon-lg": "size-11"
|
|
4526
4600
|
}
|
|
4527
4601
|
},
|
|
4528
4602
|
defaultVariants: {
|