@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.
Files changed (61) hide show
  1. package/dist/{chunk-5JX2YKJM.js → chunk-MAHPAP65.js} +65 -11
  2. package/dist/chunk-MAHPAP65.js.map +1 -0
  3. package/dist/icons.d.ts +1 -1
  4. package/dist/icons.js +1 -1
  5. package/dist/index.js +224 -150
  6. package/dist/index.js.map +1 -1
  7. package/dist/tokens.css +10 -0
  8. package/dist/tokens.d.ts +9 -0
  9. package/dist/tokens.js +1 -1
  10. package/package.json +1 -1
  11. package/src/components/account-menu.tsx +3 -10
  12. package/src/components/action-panel.tsx +10 -7
  13. package/src/components/alert-dialog.tsx +10 -6
  14. package/src/components/alert.tsx +6 -2
  15. package/src/components/avatar-stack.tsx +6 -1
  16. package/src/components/avatar.tsx +4 -1
  17. package/src/components/breadcrumb.tsx +6 -1
  18. package/src/components/button-group.tsx +6 -5
  19. package/src/components/button.tsx +9 -7
  20. package/src/components/calendar.tsx +6 -5
  21. package/src/components/card-heading.tsx +4 -2
  22. package/src/components/card.tsx +2 -2
  23. package/src/components/carousel.tsx +2 -2
  24. package/src/components/checkbox.tsx +2 -1
  25. package/src/components/color-picker.tsx +4 -4
  26. package/src/components/combobox.tsx +17 -7
  27. package/src/components/command-palette.tsx +4 -2
  28. package/src/components/command.tsx +4 -2
  29. package/src/components/context-menu.tsx +4 -4
  30. package/src/components/data-table.tsx +7 -4
  31. package/src/components/description-list.tsx +4 -2
  32. package/src/components/dialog.tsx +7 -3
  33. package/src/components/dropdown-menu.tsx +4 -4
  34. package/src/components/empty-state.tsx +4 -2
  35. package/src/components/field.tsx +11 -3
  36. package/src/components/grid-list.tsx +3 -3
  37. package/src/components/input-group.tsx +1 -1
  38. package/src/components/input-number.tsx +4 -1
  39. package/src/components/input-otp.tsx +1 -1
  40. package/src/components/input.tsx +1 -1
  41. package/src/components/menubar.tsx +7 -11
  42. package/src/components/native-select.tsx +1 -1
  43. package/src/components/navigation-menu.tsx +3 -3
  44. package/src/components/notification.tsx +6 -4
  45. package/src/components/page-heading.tsx +4 -2
  46. package/src/components/pagination.tsx +2 -2
  47. package/src/components/progress.tsx +1 -1
  48. package/src/components/radio-card.tsx +7 -6
  49. package/src/components/radio-group.tsx +2 -1
  50. package/src/components/section-heading.tsx +4 -2
  51. package/src/components/select.tsx +2 -2
  52. package/src/components/sheet.tsx +8 -4
  53. package/src/components/sidebar.tsx +8 -8
  54. package/src/components/slider.tsx +1 -1
  55. package/src/components/stat-card.tsx +2 -2
  56. package/src/components/steps.tsx +13 -11
  57. package/src/components/switch.tsx +4 -4
  58. package/src/components/toggle.tsx +5 -5
  59. package/src/icons.ts +4 -0
  60. package/src/tokens/tokens.ts +65 -10
  61. package/dist/chunk-5JX2YKJM.js.map +0 -1
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { tokens } from './chunk-5JX2YKJM.js';
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-1.5",
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 py-1.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 py-1.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-1.5",
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("aspect-square h-full w-full object-cover", className),
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-all duration-150 outline-none",
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-9 px-4 py-2 rounded-md",
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-10 px-6 rounded-md",
358
- icon: "size-9 rounded-md",
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-10 rounded-md"
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 transition-colors inline-flex items-center gap-1",
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 transition-colors inline-flex items-center gap-1",
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("p", { className: cn("body text-muted-foreground", layout === "stacked" ? "mt-1" : ""), children: description }),
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(AlertDialog.Description, { ref, className: cn("body text-muted-foreground", className), ...props }));
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-9 items-center justify-center rounded-md px-4",
550
- "body font-medium whitespace-nowrap transition-all duration-150",
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-9 items-center justify-center rounded-md px-4",
566
- "body font-medium whitespace-nowrap transition-all duration-150",
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("p", { ref, className: cn("mb-0.5 body font-semibold leading-tight", className), ...props })
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("img", { src: avatar.src, alt: avatar.name, className: "size-full object-cover" }) : /* @__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("li", { role: "presentation", "aria-hidden": "true", className: cn("text-muted-foreground", className), ...props, children: children ?? /* @__PURE__ */ jsx(ChevronRight, { size: 14 }) });
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 divide-x divide-border overflow-hidden rounded-lg border border-border bg-card shadow-natural",
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 transition-colors",
748
- "focus:z-10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/30 focus-visible:ring-inset",
749
- active ? "bg-foreground text-background" : "text-muted-foreground hover:bg-muted hover:text-foreground",
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 h-7 w-7 flex items-center justify-center rounded-md",
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 h-7 w-7 flex items-center justify-center rounded-md",
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: "w-9 h-9 flex items-center justify-center label text-muted-foreground font-normal",
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
- "h-9 w-9 flex items-center justify-center rounded-full body font-normal",
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 truncate", children: title }),
820
- description && /* @__PURE__ */ jsx("p", { className: "caption text-muted-foreground mt-0.5", children: description })
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 h-9 w-9 rounded-full",
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 h-9 w-9 rounded-full",
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 h-8 w-8 items-center justify-center rounded-md border border-border bg-card",
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 h-7 rounded-md border border-border bg-card px-2 caption text-foreground focus:outline-none focus:border-brand-primary"
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-8 gap-1.5", children: presets.map((p) => /* @__PURE__ */ jsx(
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: "h-5 w-5 rounded-sm border border-black/10 transition-transform hover:scale-110 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-primary/30",
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-9 w-full rounded-lg border border-border bg-card pr-8 body text-foreground",
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 px-2 text-muted-foreground hover:text-muted-foreground transition-colors",
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-4 top-4 rounded-md p-1 text-muted-foreground opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring/20", children: [
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(Dialog.Description, { ref, className: cn("body text-muted-foreground", className), ...props }));
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(CommandCtx.Provider, { value: { query, setQuery, ...onSelect !== void 0 && { onSelect }, reportVisible }, children: /* @__PURE__ */ jsx(CommandVisibleCtx.Provider, { value: visibleCount, children: /* @__PURE__ */ jsx(
1658
- "div",
1709
+ return /* @__PURE__ */ jsx(
1710
+ CommandCtx.Provider,
1659
1711
  {
1660
- className: cn(
1661
- "flex flex-col overflow-hidden rounded-xl border border-border bg-card",
1662
- className
1663
- ),
1664
- ...props,
1665
- children
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-1.5 mx-1",
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-1.5",
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 py-1.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 py-1.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-1.5",
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-9 w-full rounded-md border border-border bg-card px-3 py-1",
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(TableCell, { colSpan: columns.length, className: "h-24 text-center text-muted-foreground", children: "No results." }) }) })
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-9 w-full border bg-card body text-foreground placeholder:text-muted-foreground",
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("span", { "aria-hidden": true, className: "caption-xs text-muted-foreground self-center pr-1.5 select-none", children: unit }),
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-all",
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-9 items-center gap-0.5 rounded-lg border border-border bg-card px-1",
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-1.5",
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 py-1.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 py-1.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-1.5",
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-9 w-full appearance-none rounded-lg border border-border bg-card pl-3 pr-8",
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-9 w-max items-center justify-center gap-1 rounded-md px-3 py-2",
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-9 w-max items-center justify-center gap-1 rounded-md px-3 py-2",
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 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/30",
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 max-w-2xl", children: description }),
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-8 rounded-md body",
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-8 items-center justify-center text-muted-foreground", className),
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-all",
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-all",
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-9 w-full items-center justify-between rounded-xl bg-card px-3 py-2",
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-1.5",
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-4 top-4 rounded-md p-1 text-muted-foreground opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring/20", children: [
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(Dialog.Description, { ref, className: cn("body text-muted-foreground", className), ...props }));
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: "sm",
3819
- className: cn("h-7 w-7", 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-all ease-linear",
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-3 top-3.5 flex aspect-square w-5 items-center justify-center",
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-9",
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 flex aspect-square w-5 items-center justify-center",
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-7 min-w-0 items-center gap-2 overflow-hidden rounded-md px-2",
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 top-4 left-8 -right-px h-0.5", "aria-hidden": "true", children: /* @__PURE__ */ jsx(
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-8 items-center justify-center rounded-full transition-colors",
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-2.5 rounded-full bg-brand-primary" }) : /* @__PURE__ */ jsx("span", { className: "size-2.5 rounded-full bg-transparent group-hover:bg-muted" })
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: "block",
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 transition-colors",
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 transition-colors",
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-all duration-500",
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-5 w-9 shrink-0 cursor-pointer items-center rounded-full",
4425
- "border-2 border-transparent transition-colors",
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-4 rounded-full bg-card shadow-natural",
4437
- "transition-transform data-[state=unchecked]:translate-x-0 data-[state=checked]:translate-x-4"
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-all duration-150 outline-none",
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-9 px-3",
4522
- lg: "h-10 px-4",
4523
- icon: "size-9",
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-10"
4599
+ "icon-lg": "size-11"
4526
4600
  }
4527
4601
  },
4528
4602
  defaultVariants: {