@hex-core/components 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -16,8 +16,10 @@ function cn(...inputs) {
16
16
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
17
17
  var buttonVariants = cva(
18
18
  [
19
- "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium",
20
- "transition-all duration-200 ease-out",
19
+ // Tokens consumed (fall back to Tailwind defaults when no theme is loaded):
20
+ // --gap-sm, --duration-normal, --control-height-{sm,md,lg}, --space-{2,3,4,8}
21
+ "inline-flex items-center justify-center gap-[var(--gap-sm,0.5rem)] whitespace-nowrap rounded-md text-sm font-medium",
22
+ "transition-all duration-[var(--duration-normal,200ms)] ease-out",
21
23
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
22
24
  "disabled:pointer-events-none disabled:opacity-50",
23
25
  "active:scale-[0.98]",
@@ -50,10 +52,10 @@ var buttonVariants = cva(
50
52
  link: "text-primary underline-offset-4 hover:underline"
51
53
  },
52
54
  size: {
53
- default: "h-10 px-4 py-2",
54
- sm: "h-9 rounded-md px-3",
55
- lg: "h-11 rounded-md px-8 text-base",
56
- icon: "h-10 w-10"
55
+ default: "h-[var(--control-height-md,2.5rem)] px-[var(--space-4,1rem)] py-[var(--space-2,0.5rem)]",
56
+ sm: "h-[var(--control-height-sm,2.25rem)] rounded-md px-[var(--space-3,0.75rem)]",
57
+ lg: "h-[var(--control-height-lg,2.75rem)] rounded-md px-[var(--space-8,2rem)] text-base",
58
+ icon: "h-[var(--control-height-md,2.5rem)] w-[var(--control-height-md,2.5rem)]"
57
59
  }
58
60
  },
59
61
  defaultVariants: {
@@ -123,8 +125,8 @@ var Input = React2.forwardRef(
123
125
  {
124
126
  type,
125
127
  className: cn(
126
- "flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm",
127
- "transition-all duration-200 ease-out",
128
+ "flex h-[var(--control-height-md,2.5rem)] w-full rounded-md border border-input bg-background px-[var(--space-3,0.75rem)] py-[var(--space-2,0.5rem)] text-sm",
129
+ "transition-all duration-[var(--duration-normal,200ms)] ease-out",
128
130
  "shadow-sm",
129
131
  "file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground",
130
132
  "placeholder:text-muted-foreground",
@@ -164,8 +166,8 @@ var Textarea = React4.forwardRef(
164
166
  "textarea",
165
167
  {
166
168
  className: cn(
167
- "flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm",
168
- "transition-all duration-200 ease-out",
169
+ "flex min-h-[80px] w-full rounded-md border border-input bg-background px-[var(--space-3,0.75rem)] py-[var(--space-2,0.5rem)] text-sm",
170
+ "transition-all duration-[var(--duration-normal,200ms)] ease-out",
169
171
  "shadow-sm",
170
172
  "placeholder:text-muted-foreground",
171
173
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
@@ -192,7 +194,7 @@ var Checkbox = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__
192
194
  ref,
193
195
  className: cn(
194
196
  "group h-4 w-4 shrink-0 rounded-sm border border-input",
195
- "transition-all duration-200 ease-out",
197
+ "transition-all duration-[var(--duration-normal,200ms)] ease-out",
196
198
  "shadow-sm",
197
199
  "hover:border-ring/50 hover:shadow-md",
198
200
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
@@ -247,8 +249,8 @@ var Switch = React6.forwardRef(
247
249
  SwitchPrimitive.Root,
248
250
  {
249
251
  className: cn(
250
- "peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent",
251
- "transition-all duration-200 ease-out",
252
+ "peer inline-flex h-6 w-[var(--control-height-lg,2.75rem)] shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent",
253
+ "transition-all duration-[var(--duration-normal,200ms)] ease-out",
252
254
  "shadow-sm",
253
255
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",
254
256
  "disabled:cursor-not-allowed disabled:opacity-50",
@@ -263,7 +265,7 @@ var Switch = React6.forwardRef(
263
265
  {
264
266
  className: cn(
265
267
  "pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0",
266
- "transition-transform duration-200 ease-out",
268
+ "transition-transform duration-[var(--duration-normal,200ms)] ease-out",
267
269
  "data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0"
268
270
  )
269
271
  }
@@ -279,7 +281,7 @@ import { jsx as jsx7 } from "react/jsx-runtime";
279
281
  var badgeVariants = cva3(
280
282
  [
281
283
  "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold",
282
- "transition-all duration-200 ease-out",
284
+ "transition-all duration-[var(--duration-normal,200ms)] ease-out",
283
285
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"
284
286
  ].join(" "),
285
287
  {
@@ -332,8 +334,8 @@ var SelectTrigger = React8.forwardRef(({ className, children, ...props }, ref) =
332
334
  {
333
335
  ref,
334
336
  className: cn(
335
- "flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm",
336
- "transition-all duration-200 ease-out shadow-sm",
337
+ "flex h-[var(--control-height-md,2.5rem)] w-full items-center justify-between rounded-md border border-input bg-background px-[var(--space-3,0.75rem)] py-[var(--space-2,0.5rem)] text-sm",
338
+ "transition-all duration-[var(--duration-normal,200ms)] ease-out shadow-sm",
337
339
  "placeholder:text-muted-foreground",
338
340
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
339
341
  "focus-visible:shadow-md focus-visible:border-ring/50",
@@ -386,7 +388,7 @@ var SelectContent = React8.forwardRef(({ className, children, position = "popper
386
388
  SelectPrimitive.Viewport,
387
389
  {
388
390
  className: cn(
389
- "p-1",
391
+ "p-[var(--space-1,0.25rem)]",
390
392
  position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"
391
393
  ),
392
394
  children
@@ -399,7 +401,7 @@ var SelectLabel = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE
399
401
  SelectPrimitive.Label,
400
402
  {
401
403
  ref,
402
- className: cn("py-1.5 pl-8 pr-2 text-sm font-semibold", className),
404
+ className: cn("py-1.5 pl-[var(--space-8,2rem)] pr-[var(--space-2,0.5rem)] text-sm font-semibold", className),
403
405
  ...props
404
406
  }
405
407
  ));
@@ -409,8 +411,8 @@ var SelectItem = React8.forwardRef(({ className, children, ...props }, ref) => /
409
411
  {
410
412
  ref,
411
413
  className: cn(
412
- "relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none",
413
- "transition-all duration-200 ease-out",
414
+ "relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-[var(--space-8,2rem)] pr-[var(--space-2,0.5rem)] text-sm outline-none",
415
+ "transition-all duration-[var(--duration-normal,200ms)] ease-out",
414
416
  "focus:bg-accent focus:text-accent-foreground",
415
417
  "data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
416
418
  className
@@ -441,7 +443,7 @@ var SelectSeparator = React8.forwardRef(({ className, ...props }, ref) => /* @__
441
443
  SelectPrimitive.Separator,
442
444
  {
443
445
  ref,
444
- className: cn("-mx-1 my-1 h-px bg-muted", className),
446
+ className: cn("-mx-[var(--space-1,0.25rem)] my-[var(--space-1,0.25rem)] h-px bg-muted", className),
445
447
  ...props
446
448
  }
447
449
  ));
@@ -455,7 +457,7 @@ var RadioGroup = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE_
455
457
  RadioGroupPrimitive.Root,
456
458
  {
457
459
  className: cn(
458
- "grid gap-2 data-[orientation=horizontal]:flex data-[orientation=horizontal]:flex-row",
460
+ "grid gap-[var(--gap-sm,0.5rem)] data-[orientation=horizontal]:flex data-[orientation=horizontal]:flex-row",
459
461
  className
460
462
  ),
461
463
  ref,
@@ -469,7 +471,7 @@ var RadioGroupItem = React9.forwardRef(({ className, ...props }, ref) => /* @__P
469
471
  ref,
470
472
  className: cn(
471
473
  "aspect-square h-4 w-4 rounded-full border border-input",
472
- "transition-all duration-200 ease-out shadow-sm",
474
+ "transition-all duration-[var(--duration-normal,200ms)] ease-out shadow-sm",
473
475
  "hover:border-ring/50 hover:shadow-md",
474
476
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
475
477
  "disabled:cursor-not-allowed disabled:opacity-50",
@@ -499,7 +501,7 @@ var Slider = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ *
499
501
  {
500
502
  className: cn(
501
503
  "block h-5 w-5 rounded-full border-2 border-primary bg-background",
502
- "transition-all duration-200 ease-out shadow-md",
504
+ "transition-all duration-[var(--duration-normal,200ms)] ease-out shadow-md",
503
505
  "hover:shadow-lg hover:scale-110",
504
506
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
505
507
  "disabled:pointer-events-none disabled:opacity-50"
@@ -520,7 +522,7 @@ import { jsx as jsx12 } from "react/jsx-runtime";
520
522
  var toggleVariants = cva4(
521
523
  [
522
524
  "inline-flex items-center justify-center rounded-md text-sm font-medium",
523
- "transition-all duration-200 ease-out",
525
+ "transition-all duration-[var(--duration-normal,200ms)] ease-out",
524
526
  "hover:bg-muted hover:text-muted-foreground",
525
527
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
526
528
  "disabled:pointer-events-none disabled:opacity-50",
@@ -534,9 +536,9 @@ var toggleVariants = cva4(
534
536
  outline: "border border-input bg-transparent shadow-sm hover:bg-accent hover:text-accent-foreground"
535
537
  },
536
538
  size: {
537
- default: "h-10 px-3 min-w-10",
538
- sm: "h-9 px-2.5 min-w-9",
539
- lg: "h-11 px-5 min-w-11"
539
+ default: "h-[var(--control-height-md,2.5rem)] px-[var(--space-3,0.75rem)] min-w-[var(--control-height-md,2.5rem)]",
540
+ sm: "h-[var(--control-height-sm,2.25rem)] px-2.5 min-w-[var(--control-height-sm,2.25rem)]",
541
+ lg: "h-[var(--control-height-lg,2.75rem)] px-5 min-w-[var(--control-height-lg,2.75rem)]"
540
542
  }
541
543
  },
542
544
  defaultVariants: { variant: "default", size: "default" }
@@ -598,7 +600,7 @@ var Avatar = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ *
598
600
  AvatarPrimitive.Root,
599
601
  {
600
602
  ref,
601
- className: cn("relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full", className),
603
+ className: cn("relative flex h-[var(--control-height-md,2.5rem)] w-[var(--control-height-md,2.5rem)] shrink-0 overflow-hidden rounded-full", className),
602
604
  ...props
603
605
  }
604
606
  ));
@@ -685,7 +687,7 @@ var ScrollBar = React15.forwardRef(({ className, orientation = "vertical", ...pr
685
687
  ref,
686
688
  orientation,
687
689
  className: cn(
688
- "flex touch-none select-none transition-all duration-200 ease-out",
690
+ "flex touch-none select-none transition-all duration-[var(--duration-normal,200ms)] ease-out",
689
691
  orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent p-[1px]",
690
692
  orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent p-[1px]",
691
693
  className
@@ -710,7 +712,7 @@ var Card = React16.forwardRef(
710
712
  ref,
711
713
  className: cn(
712
714
  "rounded-lg border bg-card text-card-foreground",
713
- "shadow-sm transition-all duration-200 ease-out",
715
+ "shadow-sm transition-all duration-[var(--duration-normal,200ms)] ease-out",
714
716
  "hover:shadow-md",
715
717
  className
716
718
  ),
@@ -720,7 +722,14 @@ var Card = React16.forwardRef(
720
722
  );
721
723
  Card.displayName = "Card";
722
724
  var CardHeader = React16.forwardRef(
723
- ({ className, ...props }, ref) => /* @__PURE__ */ jsx18("div", { ref, className: cn("flex flex-col space-y-1.5 p-6", className), ...props })
725
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx18(
726
+ "div",
727
+ {
728
+ ref,
729
+ className: cn("flex flex-col space-y-1.5 p-[var(--space-6,1.5rem)]", className),
730
+ ...props
731
+ }
732
+ )
724
733
  );
725
734
  CardHeader.displayName = "CardHeader";
726
735
  var CardTitle = React16.forwardRef(
@@ -737,11 +746,18 @@ CardTitle.displayName = "CardTitle";
737
746
  var CardDescription = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx18("p", { ref, className: cn("text-sm text-muted-foreground", className), ...props }));
738
747
  CardDescription.displayName = "CardDescription";
739
748
  var CardContent = React16.forwardRef(
740
- ({ className, ...props }, ref) => /* @__PURE__ */ jsx18("div", { ref, className: cn("p-6 pt-0", className), ...props })
749
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx18("div", { ref, className: cn("p-[var(--space-6,1.5rem)] pt-0", className), ...props })
741
750
  );
742
751
  CardContent.displayName = "CardContent";
743
752
  var CardFooter = React16.forwardRef(
744
- ({ className, ...props }, ref) => /* @__PURE__ */ jsx18("div", { ref, className: cn("flex items-center p-6 pt-0", className), ...props })
753
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx18(
754
+ "div",
755
+ {
756
+ ref,
757
+ className: cn("flex items-center p-[var(--space-6,1.5rem)] pt-0", className),
758
+ ...props
759
+ }
760
+ )
745
761
  );
746
762
  CardFooter.displayName = "CardFooter";
747
763
 
@@ -755,7 +771,7 @@ var TabsList = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__
755
771
  {
756
772
  ref,
757
773
  className: cn(
758
- "inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",
774
+ "inline-flex h-[var(--control-height-md,2.5rem)] items-center justify-center rounded-md bg-muted p-[var(--space-1,0.25rem)] text-muted-foreground",
759
775
  className
760
776
  ),
761
777
  ...props
@@ -767,8 +783,8 @@ var TabsTrigger = React17.forwardRef(({ className, ...props }, ref) => /* @__PUR
767
783
  {
768
784
  ref,
769
785
  className: cn(
770
- "inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium",
771
- "transition-all duration-200 ease-out",
786
+ "inline-flex items-center justify-center whitespace-nowrap rounded-sm px-[var(--space-3,0.75rem)] py-1.5 text-sm font-medium",
787
+ "transition-all duration-[var(--duration-normal,200ms)] ease-out",
772
788
  "ring-offset-background hover:text-foreground",
773
789
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
774
790
  "disabled:pointer-events-none disabled:opacity-50",
@@ -784,7 +800,7 @@ var TabsContent = React17.forwardRef(({ className, ...props }, ref) => /* @__PUR
784
800
  {
785
801
  ref,
786
802
  className: cn(
787
- "mt-2 ring-offset-background",
803
+ "mt-[var(--space-2,0.5rem)] ring-offset-background",
788
804
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
789
805
  className
790
806
  ),
@@ -805,8 +821,8 @@ var AccordionTrigger = React18.forwardRef(({ className, children, ...props }, re
805
821
  {
806
822
  ref,
807
823
  className: cn(
808
- "flex flex-1 items-center justify-between py-4 font-medium",
809
- "transition-all duration-200 ease-out",
824
+ "flex flex-1 items-center justify-between py-[var(--space-4,1rem)] font-medium",
825
+ "transition-all duration-[var(--duration-normal,200ms)] ease-out",
810
826
  "hover:underline",
811
827
  "[&[data-state=open]>svg]:rotate-180",
812
828
  className
@@ -826,7 +842,7 @@ var AccordionTrigger = React18.forwardRef(({ className, children, ...props }, re
826
842
  strokeWidth: "2",
827
843
  strokeLinecap: "round",
828
844
  strokeLinejoin: "round",
829
- className: "h-4 w-4 shrink-0 transition-transform duration-200",
845
+ className: "h-4 w-4 shrink-0 transition-transform duration-[var(--duration-normal,200ms)]",
830
846
  "aria-hidden": "true",
831
847
  children: /* @__PURE__ */ jsx20("polyline", { points: "6 9 12 15 18 9" })
832
848
  }
@@ -841,7 +857,7 @@ var AccordionContent = React18.forwardRef(({ className, children, ...props }, re
841
857
  ref,
842
858
  className: "overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
843
859
  ...props,
844
- children: /* @__PURE__ */ jsx20("div", { className: cn("pb-4 pt-0", className), children })
860
+ children: /* @__PURE__ */ jsx20("div", { className: cn("pb-[var(--space-4,1rem)] pt-0", className), children })
845
861
  }
846
862
  ));
847
863
  AccordionContent.displayName = "AccordionContent";
@@ -875,9 +891,9 @@ var DialogContent = React19.forwardRef(({ className, children, ...props }, ref)
875
891
  {
876
892
  ref,
877
893
  className: cn(
878
- "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4",
879
- "border bg-background p-6 shadow-lg rounded-lg",
880
- "duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out",
894
+ "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-[var(--gap-md,1rem)]",
895
+ "border bg-background p-[var(--space-6,1.5rem)] shadow-lg rounded-lg",
896
+ "duration-[var(--duration-normal,200ms)] data-[state=open]:animate-in data-[state=closed]:animate-out",
881
897
  "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
882
898
  "data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
883
899
  className
@@ -890,7 +906,7 @@ var DialogContent = React19.forwardRef(({ className, children, ...props }, ref)
890
906
  {
891
907
  className: cn(
892
908
  "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background",
893
- "transition-all duration-200 ease-out hover:opacity-100",
909
+ "transition-all duration-[var(--duration-normal,200ms)] ease-out hover:opacity-100",
894
910
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
895
911
  "disabled:pointer-events-none"
896
912
  ),
@@ -990,9 +1006,9 @@ var AlertDialogContent = React20.forwardRef(({ className, ...props }, ref) => /*
990
1006
  {
991
1007
  ref,
992
1008
  className: cn(
993
- "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4",
994
- "border bg-background p-6 shadow-lg rounded-lg",
995
- "duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out",
1009
+ "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-[var(--gap-md,1rem)]",
1010
+ "border bg-background p-[var(--space-6,1.5rem)] shadow-lg rounded-lg",
1011
+ "duration-[var(--duration-normal,200ms)] data-[state=open]:animate-in data-[state=closed]:animate-out",
996
1012
  "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
997
1013
  "data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
998
1014
  className
@@ -1046,9 +1062,9 @@ var AlertDialogAction = React20.forwardRef(({ className, ...props }, ref) => /*
1046
1062
  {
1047
1063
  ref,
1048
1064
  className: cn(
1049
- "inline-flex h-10 items-center justify-center rounded-md px-4 py-2 text-sm font-medium",
1065
+ "inline-flex h-[var(--control-height-md,2.5rem)] items-center justify-center rounded-md px-[var(--space-4,1rem)] py-[var(--space-2,0.5rem)] text-sm font-medium",
1050
1066
  "bg-destructive text-destructive-foreground shadow-sm",
1051
- "transition-all duration-200 ease-out",
1067
+ "transition-all duration-[var(--duration-normal,200ms)] ease-out",
1052
1068
  "hover:bg-destructive/90 hover:shadow-md",
1053
1069
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
1054
1070
  "disabled:pointer-events-none disabled:opacity-50",
@@ -1064,12 +1080,12 @@ var AlertDialogCancel = React20.forwardRef(({ className, ...props }, ref) => /*
1064
1080
  {
1065
1081
  ref,
1066
1082
  className: cn(
1067
- "inline-flex h-10 items-center justify-center rounded-md px-4 py-2 text-sm font-medium",
1083
+ "inline-flex h-[var(--control-height-md,2.5rem)] items-center justify-center rounded-md px-[var(--space-4,1rem)] py-[var(--space-2,0.5rem)] text-sm font-medium",
1068
1084
  "border border-input bg-background shadow-sm",
1069
- "transition-all duration-200 ease-out",
1085
+ "transition-all duration-[var(--duration-normal,200ms)] ease-out",
1070
1086
  "hover:bg-accent hover:text-accent-foreground hover:shadow-md",
1071
1087
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
1072
- "mt-2 sm:mt-0",
1088
+ "mt-[var(--space-2,0.5rem)] sm:mt-0",
1073
1089
  "active:scale-[0.98]",
1074
1090
  className
1075
1091
  ),
@@ -1094,7 +1110,7 @@ var DropdownMenuContent = React21.forwardRef(({ className, sideOffset = 4, ...pr
1094
1110
  ref,
1095
1111
  sideOffset,
1096
1112
  className: cn(
1097
- "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md",
1113
+ "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-[var(--space-1,0.25rem)] text-popover-foreground shadow-md",
1098
1114
  "data-[state=open]:animate-in data-[state=closed]:animate-out",
1099
1115
  "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
1100
1116
  "data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
@@ -1110,11 +1126,11 @@ var DropdownMenuItem = React21.forwardRef(({ className, inset, ...props }, ref)
1110
1126
  {
1111
1127
  ref,
1112
1128
  className: cn(
1113
- "relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none",
1114
- "transition-all duration-200 ease-out",
1129
+ "relative flex cursor-default select-none items-center gap-[var(--gap-sm,0.5rem)] rounded-sm px-[var(--space-2,0.5rem)] py-1.5 text-sm outline-none",
1130
+ "transition-all duration-[var(--duration-normal,200ms)] ease-out",
1115
1131
  "focus:bg-accent focus:text-accent-foreground",
1116
1132
  "data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
1117
- inset && "pl-8",
1133
+ inset && "pl-[var(--space-8,2rem)]",
1118
1134
  className
1119
1135
  ),
1120
1136
  ...props
@@ -1126,8 +1142,8 @@ var DropdownMenuCheckboxItem = React21.forwardRef(({ className, children, checke
1126
1142
  {
1127
1143
  ref,
1128
1144
  className: cn(
1129
- "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none",
1130
- "transition-all duration-200 ease-out",
1145
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-[var(--space-8,2rem)] pr-[var(--space-2,0.5rem)] text-sm outline-none",
1146
+ "transition-all duration-[var(--duration-normal,200ms)] ease-out",
1131
1147
  "focus:bg-accent focus:text-accent-foreground",
1132
1148
  "data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
1133
1149
  className
@@ -1160,8 +1176,8 @@ var DropdownMenuRadioItem = React21.forwardRef(({ className, children, ...props
1160
1176
  {
1161
1177
  ref,
1162
1178
  className: cn(
1163
- "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none",
1164
- "transition-all duration-200 ease-out",
1179
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-[var(--space-8,2rem)] pr-[var(--space-2,0.5rem)] text-sm outline-none",
1180
+ "transition-all duration-[var(--duration-normal,200ms)] ease-out",
1165
1181
  "focus:bg-accent focus:text-accent-foreground",
1166
1182
  "data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
1167
1183
  className
@@ -1178,7 +1194,7 @@ var DropdownMenuLabel = React21.forwardRef(({ className, inset, ...props }, ref)
1178
1194
  DropdownMenuPrimitive.Label,
1179
1195
  {
1180
1196
  ref,
1181
- className: cn("px-2 py-1.5 text-sm font-semibold", inset && "pl-8", className),
1197
+ className: cn("px-[var(--space-2,0.5rem)] py-1.5 text-sm font-semibold", inset && "pl-[var(--space-8,2rem)]", className),
1182
1198
  ...props
1183
1199
  }
1184
1200
  ));
@@ -1187,7 +1203,7 @@ var DropdownMenuSeparator = React21.forwardRef(({ className, ...props }, ref) =>
1187
1203
  DropdownMenuPrimitive.Separator,
1188
1204
  {
1189
1205
  ref,
1190
- className: cn("-mx-1 my-1 h-px bg-muted", className),
1206
+ className: cn("-mx-[var(--space-1,0.25rem)] my-[var(--space-1,0.25rem)] h-px bg-muted", className),
1191
1207
  ...props
1192
1208
  }
1193
1209
  ));
@@ -1216,7 +1232,7 @@ var PopoverContent = React22.forwardRef(({ className, align = "center", sideOffs
1216
1232
  align,
1217
1233
  sideOffset,
1218
1234
  className: cn(
1219
- "z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none",
1235
+ "z-50 w-72 rounded-md border bg-popover p-[var(--space-4,1rem)] text-popover-foreground shadow-md outline-none",
1220
1236
  "data-[state=open]:animate-in data-[state=closed]:animate-out",
1221
1237
  "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
1222
1238
  "data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
@@ -1241,7 +1257,7 @@ var TooltipContent = React23.forwardRef(({ className, sideOffset = 4, ...props }
1241
1257
  ref,
1242
1258
  sideOffset,
1243
1259
  className: cn(
1244
- "z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground shadow-md",
1260
+ "z-50 overflow-hidden rounded-md bg-primary px-[var(--space-3,0.75rem)] py-1.5 text-xs text-primary-foreground shadow-md",
1245
1261
  "animate-in fade-in-0 zoom-in-95",
1246
1262
  "data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
1247
1263
  "data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
@@ -1359,8 +1375,8 @@ import * as React25 from "react";
1359
1375
  import { jsx as jsx27 } from "react/jsx-runtime";
1360
1376
  var alertVariants = cva5(
1361
1377
  [
1362
- "relative w-full rounded-lg border px-4 py-3 text-sm",
1363
- "transition-all duration-200 ease-out",
1378
+ "relative w-full rounded-lg border px-[var(--space-4,1rem)] py-[var(--space-3,0.75rem)] text-sm",
1379
+ "transition-all duration-[var(--duration-normal,200ms)] ease-out",
1364
1380
  "[&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:h-4 [&>svg]:w-4 [&>svg]:text-foreground",
1365
1381
  "[&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px]"
1366
1382
  ].join(" "),
@@ -1388,7 +1404,7 @@ var AlertTitle = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE
1388
1404
  "h5",
1389
1405
  {
1390
1406
  ref,
1391
- className: cn("mb-1 font-medium leading-none tracking-tight", className),
1407
+ className: cn("mb-[var(--space-1,0.25rem)] font-medium leading-none tracking-tight", className),
1392
1408
  ...props
1393
1409
  }
1394
1410
  ));
@@ -1439,7 +1455,7 @@ var HoverCardContent = React26.forwardRef(({ className, align = "center", sideOf
1439
1455
  align,
1440
1456
  sideOffset,
1441
1457
  className: cn(
1442
- "z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none",
1458
+ "z-50 w-64 rounded-md border bg-popover p-[var(--space-4,1rem)] text-popover-foreground shadow-md outline-none",
1443
1459
  "data-[state=open]:animate-in data-[state=closed]:animate-out",
1444
1460
  "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
1445
1461
  "data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
@@ -1465,7 +1481,7 @@ var ContextMenuContent = React27.forwardRef(({ className, ...props }, ref) => /*
1465
1481
  {
1466
1482
  ref,
1467
1483
  className: cn(
1468
- "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md",
1484
+ "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-[var(--space-1,0.25rem)] text-popover-foreground shadow-md",
1469
1485
  "data-[state=open]:animate-in data-[state=closed]:animate-out",
1470
1486
  "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
1471
1487
  "data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
@@ -1480,11 +1496,11 @@ var ContextMenuItem = React27.forwardRef(({ className, inset, ...props }, ref) =
1480
1496
  {
1481
1497
  ref,
1482
1498
  className: cn(
1483
- "relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none",
1484
- "transition-all duration-200 ease-out",
1499
+ "relative flex cursor-default select-none items-center gap-[var(--gap-sm,0.5rem)] rounded-sm px-[var(--space-2,0.5rem)] py-1.5 text-sm outline-none",
1500
+ "transition-all duration-[var(--duration-normal,200ms)] ease-out",
1485
1501
  "focus:bg-accent focus:text-accent-foreground",
1486
1502
  "data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
1487
- inset && "pl-8",
1503
+ inset && "pl-[var(--space-8,2rem)]",
1488
1504
  className
1489
1505
  ),
1490
1506
  ...props
@@ -1496,8 +1512,8 @@ var ContextMenuCheckboxItem = React27.forwardRef(({ className, children, checked
1496
1512
  {
1497
1513
  ref,
1498
1514
  className: cn(
1499
- "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none",
1500
- "transition-all duration-200 ease-out",
1515
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-[var(--space-8,2rem)] pr-[var(--space-2,0.5rem)] text-sm outline-none",
1516
+ "transition-all duration-[var(--duration-normal,200ms)] ease-out",
1501
1517
  "focus:bg-accent focus:text-accent-foreground",
1502
1518
  "data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
1503
1519
  className
@@ -1530,8 +1546,8 @@ var ContextMenuRadioItem = React27.forwardRef(({ className, children, ...props }
1530
1546
  {
1531
1547
  ref,
1532
1548
  className: cn(
1533
- "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none",
1534
- "transition-all duration-200 ease-out",
1549
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-[var(--space-8,2rem)] pr-[var(--space-2,0.5rem)] text-sm outline-none",
1550
+ "transition-all duration-[var(--duration-normal,200ms)] ease-out",
1535
1551
  "focus:bg-accent focus:text-accent-foreground",
1536
1552
  "data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
1537
1553
  className
@@ -1548,7 +1564,7 @@ var ContextMenuLabel = React27.forwardRef(({ className, inset, ...props }, ref)
1548
1564
  ContextMenuPrimitive.Label,
1549
1565
  {
1550
1566
  ref,
1551
- className: cn("px-2 py-1.5 text-sm font-semibold text-foreground", inset && "pl-8", className),
1567
+ className: cn("px-[var(--space-2,0.5rem)] py-1.5 text-sm font-semibold text-foreground", inset && "pl-[var(--space-8,2rem)]", className),
1552
1568
  ...props
1553
1569
  }
1554
1570
  ));
@@ -1557,7 +1573,7 @@ var ContextMenuSeparator = React27.forwardRef(({ className, ...props }, ref) =>
1557
1573
  ContextMenuPrimitive.Separator,
1558
1574
  {
1559
1575
  ref,
1560
- className: cn("-mx-1 my-1 h-px bg-border", className),
1576
+ className: cn("-mx-[var(--space-1,0.25rem)] my-[var(--space-1,0.25rem)] h-px bg-border", className),
1561
1577
  ...props
1562
1578
  }
1563
1579
  ));
@@ -1581,7 +1597,7 @@ var Menubar = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__
1581
1597
  {
1582
1598
  ref,
1583
1599
  className: cn(
1584
- "flex h-10 items-center space-x-1 rounded-md border bg-background p-1",
1600
+ "flex h-[var(--control-height-md,2.5rem)] items-center space-x-1 rounded-md border bg-background p-[var(--space-1,0.25rem)]",
1585
1601
  className
1586
1602
  ),
1587
1603
  ...props
@@ -1597,8 +1613,8 @@ var MenubarTrigger = React28.forwardRef(({ className, ...props }, ref) => /* @__
1597
1613
  {
1598
1614
  ref,
1599
1615
  className: cn(
1600
- "flex cursor-default select-none items-center rounded-sm px-3 py-1.5 text-sm font-medium outline-none",
1601
- "transition-all duration-200 ease-out",
1616
+ "flex cursor-default select-none items-center rounded-sm px-[var(--space-3,0.75rem)] py-1.5 text-sm font-medium outline-none",
1617
+ "transition-all duration-[var(--duration-normal,200ms)] ease-out",
1602
1618
  "focus:bg-accent focus:text-accent-foreground",
1603
1619
  "data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
1604
1620
  className
@@ -1615,7 +1631,7 @@ var MenubarContent = React28.forwardRef(({ className, align = "start", alignOffs
1615
1631
  alignOffset,
1616
1632
  sideOffset,
1617
1633
  className: cn(
1618
- "z-50 min-w-[12rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md",
1634
+ "z-50 min-w-[12rem] overflow-hidden rounded-md border bg-popover p-[var(--space-1,0.25rem)] text-popover-foreground shadow-md",
1619
1635
  "data-[state=open]:animate-in data-[state=closed]:animate-out",
1620
1636
  "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
1621
1637
  "data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
@@ -1630,11 +1646,11 @@ var MenubarItem = React28.forwardRef(({ className, inset, ...props }, ref) => /*
1630
1646
  {
1631
1647
  ref,
1632
1648
  className: cn(
1633
- "relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none",
1634
- "transition-all duration-200 ease-out",
1649
+ "relative flex cursor-default select-none items-center gap-[var(--gap-sm,0.5rem)] rounded-sm px-[var(--space-2,0.5rem)] py-1.5 text-sm outline-none",
1650
+ "transition-all duration-[var(--duration-normal,200ms)] ease-out",
1635
1651
  "focus:bg-accent focus:text-accent-foreground",
1636
1652
  "data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
1637
- inset && "pl-8",
1653
+ inset && "pl-[var(--space-8,2rem)]",
1638
1654
  className
1639
1655
  ),
1640
1656
  ...props
@@ -1645,7 +1661,7 @@ var MenubarLabel = React28.forwardRef(({ className, inset, ...props }, ref) => /
1645
1661
  MenubarPrimitive.Label,
1646
1662
  {
1647
1663
  ref,
1648
- className: cn("px-2 py-1.5 text-sm font-semibold", inset && "pl-8", className),
1664
+ className: cn("px-[var(--space-2,0.5rem)] py-1.5 text-sm font-semibold", inset && "pl-[var(--space-8,2rem)]", className),
1649
1665
  ...props
1650
1666
  }
1651
1667
  ));
@@ -1654,7 +1670,7 @@ var MenubarSeparator = React28.forwardRef(({ className, ...props }, ref) => /* @
1654
1670
  MenubarPrimitive.Separator,
1655
1671
  {
1656
1672
  ref,
1657
- className: cn("-mx-1 my-1 h-px bg-muted", className),
1673
+ className: cn("-mx-[var(--space-1,0.25rem)] my-[var(--space-1,0.25rem)] h-px bg-muted", className),
1658
1674
  ...props
1659
1675
  }
1660
1676
  ));
@@ -1698,7 +1714,7 @@ var NavigationMenuList = React29.forwardRef(({ className, ...props }, ref) => /*
1698
1714
  NavigationMenuList.displayName = "NavigationMenuList";
1699
1715
  var NavigationMenuItem = NavigationMenuPrimitive.Item;
1700
1716
  var navigationMenuTriggerStyle = cva6(
1701
- "group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-all duration-200 ease-out hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50"
1717
+ "group inline-flex h-[var(--control-height-md,2.5rem)] w-max items-center justify-center rounded-md bg-background px-[var(--space-4,1rem)] py-[var(--space-2,0.5rem)] text-sm font-medium transition-all duration-[var(--duration-normal,200ms)] ease-out hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50"
1702
1718
  );
1703
1719
  var NavigationMenuTrigger = React29.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs11(
1704
1720
  NavigationMenuPrimitive.Trigger,
@@ -1718,7 +1734,7 @@ var NavigationMenuTrigger = React29.forwardRef(({ className, children, ...props
1718
1734
  strokeWidth: "2",
1719
1735
  strokeLinecap: "round",
1720
1736
  strokeLinejoin: "round",
1721
- className: "relative top-[1px] ml-1 h-3 w-3 transition duration-200 group-data-[state=open]:rotate-180",
1737
+ className: "relative top-[1px] ml-[var(--space-1,0.25rem)] h-3 w-3 transition duration-[var(--duration-normal,200ms)] group-data-[state=open]:rotate-180",
1722
1738
  "aria-hidden": "true",
1723
1739
  children: /* @__PURE__ */ jsx32("polyline", { points: "6 9 12 15 18 9" })
1724
1740
  }
@@ -1782,7 +1798,7 @@ var BreadcrumbList = React30.forwardRef(
1782
1798
  {
1783
1799
  ref,
1784
1800
  className: cn(
1785
- "flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5",
1801
+ "flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-[var(--gap-sm,0.5rem)].5",
1786
1802
  className
1787
1803
  ),
1788
1804
  ...props
@@ -1807,7 +1823,7 @@ var BreadcrumbLink = React30.forwardRef(({ asChild, className, ...props }, ref)
1807
1823
  Comp,
1808
1824
  {
1809
1825
  ref,
1810
- className: cn("transition-all duration-200 ease-out hover:text-foreground", className),
1826
+ className: cn("transition-all duration-[var(--duration-normal,200ms)] ease-out hover:text-foreground", className),
1811
1827
  ...props
1812
1828
  }
1813
1829
  );
@@ -1851,7 +1867,7 @@ function BreadcrumbEllipsis({ className, ...props }) {
1851
1867
  return /* @__PURE__ */ jsxs12(
1852
1868
  "span",
1853
1869
  {
1854
- className: cn("flex h-9 w-9 items-center justify-center", className),
1870
+ className: cn("flex h-[var(--control-height-sm,2.25rem)] w-[var(--control-height-sm,2.25rem)] items-center justify-center", className),
1855
1871
  ...props,
1856
1872
  children: [
1857
1873
  /* @__PURE__ */ jsxs12(
@@ -1914,7 +1930,7 @@ var TableRow = React31.forwardRef(({ className, ...props }, ref) => /* @__PURE__
1914
1930
  {
1915
1931
  ref,
1916
1932
  className: cn(
1917
- "border-b transition-all duration-200 ease-out hover:bg-muted/50 data-[state=selected]:bg-muted",
1933
+ "border-b transition-all duration-[var(--duration-normal,200ms)] ease-out hover:bg-muted/50 data-[state=selected]:bg-muted",
1918
1934
  className
1919
1935
  ),
1920
1936
  ...props
@@ -1926,7 +1942,7 @@ var TableHead = React31.forwardRef(({ className, ...props }, ref) => /* @__PURE_
1926
1942
  {
1927
1943
  ref,
1928
1944
  className: cn(
1929
- "h-10 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0",
1945
+ "h-[var(--control-height-md,2.5rem)] px-[var(--space-4,1rem)] text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0",
1930
1946
  className
1931
1947
  ),
1932
1948
  ...props
@@ -1937,7 +1953,7 @@ var TableCell = React31.forwardRef(({ className, ...props }, ref) => /* @__PURE_
1937
1953
  "td",
1938
1954
  {
1939
1955
  ref,
1940
- className: cn("p-4 align-middle [&:has([role=checkbox])]:pr-0", className),
1956
+ className: cn("p-[var(--space-4,1rem)] align-middle [&:has([role=checkbox])]:pr-0", className),
1941
1957
  ...props
1942
1958
  }
1943
1959
  ));
@@ -1946,7 +1962,7 @@ var TableCaption = React31.forwardRef(({ className, ...props }, ref) => /* @__PU
1946
1962
  "caption",
1947
1963
  {
1948
1964
  ref,
1949
- className: cn("mt-4 text-sm text-muted-foreground", className),
1965
+ className: cn("mt-[var(--space-4,1rem)] text-sm text-muted-foreground", className),
1950
1966
  ...props
1951
1967
  }
1952
1968
  ));
@@ -2080,7 +2096,7 @@ function PaginationEllipsis({ className, ...props }) {
2080
2096
  return /* @__PURE__ */ jsxs14(
2081
2097
  "span",
2082
2098
  {
2083
- className: cn("flex h-9 w-9 items-center justify-center", className),
2099
+ className: cn("flex h-[var(--control-height-sm,2.25rem)] w-[var(--control-height-sm,2.25rem)] items-center justify-center", className),
2084
2100
  ...props,
2085
2101
  children: [
2086
2102
  /* @__PURE__ */ jsxs14(
@@ -2121,25 +2137,25 @@ function Calendar({
2121
2137
  DayPicker,
2122
2138
  {
2123
2139
  showOutsideDays,
2124
- className: cn("relative p-3", className),
2140
+ className: cn("relative p-[var(--space-3,0.75rem)]", className),
2125
2141
  classNames: {
2126
- months: "flex flex-col sm:flex-row gap-4",
2127
- month: "flex flex-col gap-4",
2142
+ months: "flex flex-col sm:flex-row gap-[var(--gap-md,1rem)]",
2143
+ month: "flex flex-col gap-[var(--gap-md,1rem)]",
2128
2144
  month_caption: "flex h-7 items-center justify-center",
2129
2145
  caption_label: "text-sm font-medium",
2130
2146
  nav: "absolute inset-x-3 top-3 z-10 flex items-center justify-between pointer-events-none [&>button]:pointer-events-auto",
2131
2147
  button_previous: cn(
2132
- "inline-flex h-7 w-7 items-center justify-center rounded-md border bg-transparent p-0 opacity-60 transition-all duration-200 ease-out hover:opacity-100 disabled:pointer-events-none disabled:opacity-30"
2148
+ "inline-flex h-7 w-7 items-center justify-center rounded-md border bg-transparent p-0 opacity-60 transition-all duration-[var(--duration-normal,200ms)] ease-out hover:opacity-100 disabled:pointer-events-none disabled:opacity-30"
2133
2149
  ),
2134
2150
  button_next: cn(
2135
- "inline-flex h-7 w-7 items-center justify-center rounded-md border bg-transparent p-0 opacity-60 transition-all duration-200 ease-out hover:opacity-100 disabled:pointer-events-none disabled:opacity-30"
2151
+ "inline-flex h-7 w-7 items-center justify-center rounded-md border bg-transparent p-0 opacity-60 transition-all duration-[var(--duration-normal,200ms)] ease-out hover:opacity-100 disabled:pointer-events-none disabled:opacity-30"
2136
2152
  ),
2137
2153
  month_grid: "w-full border-collapse space-y-1",
2138
2154
  weekdays: "flex",
2139
- weekday: "text-muted-foreground rounded-md w-9 font-normal text-[0.8rem]",
2140
- week: "flex w-full mt-2",
2155
+ weekday: "text-muted-foreground rounded-md w-[var(--control-height-sm,2.25rem)] font-normal text-[0.8rem]",
2156
+ week: "flex w-full mt-[var(--space-2,0.5rem)]",
2141
2157
  day: "relative p-0 text-center text-sm focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-accent [&:has([aria-selected].range-end)]:rounded-r-md [&:has([aria-selected].range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md",
2142
- day_button: "inline-flex h-9 w-9 items-center justify-center rounded-md p-0 text-sm font-normal transition-all duration-200 ease-out hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 aria-selected:opacity-100",
2158
+ day_button: "inline-flex h-[var(--control-height-sm,2.25rem)] w-[var(--control-height-sm,2.25rem)] items-center justify-center rounded-md p-0 text-sm font-normal transition-all duration-[var(--duration-normal,200ms)] ease-out hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 aria-selected:opacity-100",
2143
2159
  selected: "bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground",
2144
2160
  today: "bg-accent text-accent-foreground",
2145
2161
  outside: "day-outside text-muted-foreground aria-selected:bg-accent/50 aria-selected:text-muted-foreground",
@@ -2198,7 +2214,7 @@ function DatePicker({
2198
2214
  disabled,
2199
2215
  "aria-label": ariaLabel ?? placeholder,
2200
2216
  className: cn(
2201
- "inline-flex h-10 w-[240px] items-center justify-start gap-2 rounded-md border border-input bg-background px-3 py-2 text-left text-sm font-normal transition-all duration-200 ease-out",
2217
+ "inline-flex h-[var(--control-height-md,2.5rem)] w-[240px] items-center justify-start gap-[var(--gap-sm,0.5rem)] rounded-md border border-input bg-background px-[var(--space-3,0.75rem)] py-[var(--space-2,0.5rem)] text-left text-sm font-normal transition-all duration-[var(--duration-normal,200ms)] ease-out",
2202
2218
  "hover:bg-accent hover:text-accent-foreground",
2203
2219
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
2204
2220
  "disabled:pointer-events-none disabled:opacity-50",
@@ -2256,7 +2272,7 @@ var InputOTP = React34.forwardRef(
2256
2272
  {
2257
2273
  ref,
2258
2274
  containerClassName: cn(
2259
- "flex items-center gap-2 has-[:disabled]:opacity-50",
2275
+ "flex items-center gap-[var(--gap-sm,0.5rem)] has-[:disabled]:opacity-50",
2260
2276
  containerClassName
2261
2277
  ),
2262
2278
  className: cn("disabled:cursor-not-allowed", className),
@@ -2279,7 +2295,7 @@ var InputOTPSlot = React34.forwardRef(
2279
2295
  {
2280
2296
  ref,
2281
2297
  className: cn(
2282
- "relative flex h-10 w-10 items-center justify-center border-y border-r border-input text-sm transition-all duration-200 ease-out",
2298
+ "relative flex h-[var(--control-height-md,2.5rem)] w-[var(--control-height-md,2.5rem)] items-center justify-center border-y border-r border-input text-sm transition-all duration-[var(--duration-normal,200ms)] ease-out",
2283
2299
  "first:rounded-l-md first:border-l last:rounded-r-md",
2284
2300
  isActive && "z-10 ring-2 ring-ring ring-offset-2 ring-offset-background",
2285
2301
  className
@@ -2334,10 +2350,10 @@ function CommandDialog({
2334
2350
  /* @__PURE__ */ jsx40(DialogTitle, { children: title }),
2335
2351
  /* @__PURE__ */ jsx40(DialogDescription, { children: description })
2336
2352
  ] }),
2337
- /* @__PURE__ */ jsx40(DialogContent, { className: "overflow-hidden p-0", children: /* @__PURE__ */ jsx40(Command, { className: "[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5", children }) })
2353
+ /* @__PURE__ */ jsx40(DialogContent, { className: "overflow-hidden p-0", children: /* @__PURE__ */ jsx40(Command, { className: "[&_[cmdk-group-heading]]:px-[var(--space-2,0.5rem)] [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-[var(--space-2,0.5rem)] [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-[var(--space-2,0.5rem)] [&_[cmdk-item]]:py-[var(--space-3,0.75rem)] [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5", children }) })
2338
2354
  ] });
2339
2355
  }
2340
- var CommandInput = React35.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs17("div", { className: "flex items-center border-b px-3", "cmdk-input-wrapper": "", children: [
2356
+ var CommandInput = React35.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs17("div", { className: "flex items-center border-b px-[var(--space-3,0.75rem)]", "cmdk-input-wrapper": "", children: [
2341
2357
  /* @__PURE__ */ jsxs17(
2342
2358
  "svg",
2343
2359
  {
@@ -2348,7 +2364,7 @@ var CommandInput = React35.forwardRef(({ className, ...props }, ref) => /* @__PU
2348
2364
  strokeWidth: "2",
2349
2365
  strokeLinecap: "round",
2350
2366
  strokeLinejoin: "round",
2351
- className: "mr-2 h-4 w-4 shrink-0 opacity-50",
2367
+ className: "mr-[var(--space-2,0.5rem)] h-4 w-4 shrink-0 opacity-50",
2352
2368
  "aria-hidden": "true",
2353
2369
  children: [
2354
2370
  /* @__PURE__ */ jsx40("circle", { cx: "11", cy: "11", r: "8" }),
@@ -2361,7 +2377,7 @@ var CommandInput = React35.forwardRef(({ className, ...props }, ref) => /* @__PU
2361
2377
  {
2362
2378
  ref,
2363
2379
  className: cn(
2364
- "flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
2380
+ "flex h-[var(--control-height-lg,2.75rem)] w-full rounded-md bg-transparent py-[var(--space-3,0.75rem)] text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
2365
2381
  className
2366
2382
  ),
2367
2383
  ...props
@@ -2378,14 +2394,14 @@ var CommandList = React35.forwardRef(({ className, ...props }, ref) => /* @__PUR
2378
2394
  }
2379
2395
  ));
2380
2396
  CommandList.displayName = "CommandList";
2381
- var CommandEmpty = React35.forwardRef((props, ref) => /* @__PURE__ */ jsx40(CommandPrimitive.Empty, { ref, className: "py-6 text-center text-sm", ...props }));
2397
+ var CommandEmpty = React35.forwardRef((props, ref) => /* @__PURE__ */ jsx40(CommandPrimitive.Empty, { ref, className: "py-[var(--space-6,1.5rem)] text-center text-sm", ...props }));
2382
2398
  CommandEmpty.displayName = "CommandEmpty";
2383
2399
  var CommandGroup = React35.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx40(
2384
2400
  CommandPrimitive.Group,
2385
2401
  {
2386
2402
  ref,
2387
2403
  className: cn(
2388
- "overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",
2404
+ "overflow-hidden p-[var(--space-1,0.25rem)] text-foreground [&_[cmdk-group-heading]]:px-[var(--space-2,0.5rem)] [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",
2389
2405
  className
2390
2406
  ),
2391
2407
  ...props
@@ -2396,7 +2412,7 @@ var CommandSeparator = React35.forwardRef(({ className, ...props }, ref) => /* @
2396
2412
  CommandPrimitive.Separator,
2397
2413
  {
2398
2414
  ref,
2399
- className: cn("-mx-1 h-px bg-border", className),
2415
+ className: cn("-mx-[var(--space-1,0.25rem)] h-px bg-border", className),
2400
2416
  ...props
2401
2417
  }
2402
2418
  ));
@@ -2406,7 +2422,7 @@ var CommandItem = React35.forwardRef(({ className, ...props }, ref) => /* @__PUR
2406
2422
  {
2407
2423
  ref,
2408
2424
  className: cn(
2409
- "relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-all duration-200 ease-out",
2425
+ "relative flex cursor-default select-none items-center gap-[var(--gap-sm,0.5rem)] rounded-sm px-[var(--space-2,0.5rem)] py-1.5 text-sm outline-none transition-all duration-[var(--duration-normal,200ms)] ease-out",
2410
2426
  "data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50",
2411
2427
  "data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground",
2412
2428
  "[&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
@@ -2457,7 +2473,7 @@ function Combobox({
2457
2473
  "aria-label": ariaLabel,
2458
2474
  disabled,
2459
2475
  className: cn(
2460
- "inline-flex h-10 w-[240px] items-center justify-between gap-2 rounded-md border border-input bg-background px-3 py-2 text-sm font-normal transition-all duration-200 ease-out",
2476
+ "inline-flex h-[var(--control-height-md,2.5rem)] w-[240px] items-center justify-between gap-[var(--gap-sm,0.5rem)] rounded-md border border-input bg-background px-[var(--space-3,0.75rem)] py-[var(--space-2,0.5rem)] text-sm font-normal transition-all duration-[var(--duration-normal,200ms)] ease-out",
2461
2477
  "hover:bg-accent hover:text-accent-foreground",
2462
2478
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
2463
2479
  "disabled:pointer-events-none disabled:opacity-50",
@@ -2509,7 +2525,7 @@ function Combobox({
2509
2525
  strokeLinecap: "round",
2510
2526
  strokeLinejoin: "round",
2511
2527
  className: cn(
2512
- "mr-2 h-4 w-4",
2528
+ "mr-[var(--space-2,0.5rem)] h-4 w-4",
2513
2529
  value === option.value ? "opacity-100" : "opacity-0"
2514
2530
  ),
2515
2531
  "aria-hidden": "true",
@@ -2552,9 +2568,9 @@ var SheetOverlay = React37.forwardRef(({ className, ...props }, ref) => /* @__PU
2552
2568
  SheetOverlay.displayName = "SheetOverlay";
2553
2569
  var sheetVariants = cva7(
2554
2570
  cn(
2555
- "fixed z-50 gap-4 bg-background p-6 shadow-lg",
2571
+ "fixed z-50 gap-[var(--gap-md,1rem)] bg-background p-[var(--space-6,1.5rem)] shadow-lg",
2556
2572
  "transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out",
2557
- "data-[state=closed]:duration-300 data-[state=open]:duration-500"
2573
+ "data-[state=closed]:duration-[var(--duration-slow,300ms)] data-[state=open]:duration-500"
2558
2574
  ),
2559
2575
  {
2560
2576
  variants: {
@@ -2585,7 +2601,7 @@ var SheetContent = React37.forwardRef(({ side = "right", className, children, ..
2585
2601
  {
2586
2602
  className: cn(
2587
2603
  "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background",
2588
- "transition-all duration-200 ease-out hover:opacity-100",
2604
+ "transition-all duration-[var(--duration-normal,200ms)] ease-out hover:opacity-100",
2589
2605
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
2590
2606
  "disabled:pointer-events-none"
2591
2607
  ),
@@ -2692,7 +2708,7 @@ var DrawerContent = React38.forwardRef(({ className, children, ...props }, ref)
2692
2708
  ),
2693
2709
  ...props,
2694
2710
  children: [
2695
- /* @__PURE__ */ jsx43("div", { className: "mx-auto mt-4 h-2 w-[100px] rounded-full bg-muted", "aria-hidden": "true" }),
2711
+ /* @__PURE__ */ jsx43("div", { className: "mx-auto mt-[var(--space-4,1rem)] h-2 w-[100px] rounded-full bg-muted", "aria-hidden": "true" }),
2696
2712
  children
2697
2713
  ]
2698
2714
  }
@@ -2703,13 +2719,13 @@ function DrawerHeader({ className, ...props }) {
2703
2719
  return /* @__PURE__ */ jsx43(
2704
2720
  "div",
2705
2721
  {
2706
- className: cn("grid gap-1.5 p-4 text-center sm:text-left", className),
2722
+ className: cn("grid gap-1.5 p-[var(--space-4,1rem)] text-center sm:text-left", className),
2707
2723
  ...props
2708
2724
  }
2709
2725
  );
2710
2726
  }
2711
2727
  function DrawerFooter({ className, ...props }) {
2712
- return /* @__PURE__ */ jsx43("div", { className: cn("mt-auto flex flex-col gap-2 p-4", className), ...props });
2728
+ return /* @__PURE__ */ jsx43("div", { className: cn("mt-auto flex flex-col gap-[var(--gap-sm,0.5rem)] p-[var(--space-4,1rem)]", className), ...props });
2713
2729
  }
2714
2730
  var DrawerTitle = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx43(
2715
2731
  DrawerPrimitive.Title,
@@ -2759,7 +2775,7 @@ function ResizableHandle({ withHandle, className, ...props }) {
2759
2775
  ResizablePrimitiveSeparator,
2760
2776
  {
2761
2777
  className: cn(
2762
- "relative flex w-px items-center justify-center bg-border transition-all duration-200 ease-out hover:bg-ring data-[separator=active]:bg-ring",
2778
+ "relative flex w-px items-center justify-center bg-border transition-all duration-[var(--duration-normal,200ms)] ease-out hover:bg-ring data-[separator=active]:bg-ring",
2763
2779
  "after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2",
2764
2780
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
2765
2781
  "aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full",
@@ -2837,7 +2853,7 @@ SidebarProvider.displayName = "SidebarProvider";
2837
2853
  var sidebarVariants = cva8(
2838
2854
  cn(
2839
2855
  "flex h-full shrink-0 flex-col border-r bg-background text-foreground",
2840
- "transition-[width] duration-200 ease-out"
2856
+ "transition-[width] duration-[var(--duration-normal,200ms)] ease-out"
2841
2857
  ),
2842
2858
  {
2843
2859
  variants: {
@@ -2893,8 +2909,8 @@ var SidebarTrigger = React39.forwardRef(
2893
2909
  }
2894
2910
  },
2895
2911
  className: cn(
2896
- "inline-flex h-9 w-9 items-center justify-center rounded-md text-muted-foreground",
2897
- "transition-all duration-200 ease-out hover:bg-accent hover:text-accent-foreground",
2912
+ "inline-flex h-[var(--control-height-sm,2.25rem)] w-[var(--control-height-sm,2.25rem)] items-center justify-center rounded-md text-muted-foreground",
2913
+ "transition-all duration-[var(--duration-normal,200ms)] ease-out hover:bg-accent hover:text-accent-foreground",
2898
2914
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
2899
2915
  className
2900
2916
  ),
@@ -2930,7 +2946,7 @@ var SidebarHeader = React39.forwardRef(
2930
2946
  "div",
2931
2947
  {
2932
2948
  ref,
2933
- className: cn("flex items-center gap-2 border-b p-4", className),
2949
+ className: cn("flex items-center gap-[var(--gap-sm,0.5rem)] border-b p-[var(--space-4,1rem)]", className),
2934
2950
  ...props
2935
2951
  }
2936
2952
  )
@@ -2941,7 +2957,7 @@ var SidebarContent = React39.forwardRef(
2941
2957
  "div",
2942
2958
  {
2943
2959
  ref,
2944
- className: cn("flex-1 overflow-auto p-2", className),
2960
+ className: cn("flex-1 overflow-auto p-[var(--space-2,0.5rem)]", className),
2945
2961
  ...props
2946
2962
  }
2947
2963
  )
@@ -2952,7 +2968,7 @@ var SidebarFooter = React39.forwardRef(
2952
2968
  "div",
2953
2969
  {
2954
2970
  ref,
2955
- className: cn("mt-auto border-t p-4", className),
2971
+ className: cn("mt-auto border-t p-[var(--space-4,1rem)]", className),
2956
2972
  ...props
2957
2973
  }
2958
2974
  )
@@ -2969,8 +2985,8 @@ var SidebarItem = React39.forwardRef(
2969
2985
  "aria-current": active ? "page" : void 0,
2970
2986
  "data-active": active ? "" : void 0,
2971
2987
  className: cn(
2972
- "inline-flex w-full items-center gap-2 rounded-md px-3 py-2 text-sm font-medium",
2973
- "transition-all duration-200 ease-out",
2988
+ "inline-flex w-full items-center gap-[var(--gap-sm,0.5rem)] rounded-md px-[var(--space-3,0.75rem)] py-[var(--space-2,0.5rem)] text-sm font-medium",
2989
+ "transition-all duration-[var(--duration-normal,200ms)] ease-out",
2974
2990
  "hover:bg-accent hover:text-accent-foreground",
2975
2991
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
2976
2992
  "data-[active]:bg-accent data-[active]:text-accent-foreground",