@nextlyhq/ui 0.0.2-alpha.42 → 0.0.2-alpha.44

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.mjs CHANGED
@@ -16,7 +16,7 @@ function cn(...inputs) {
16
16
  // src/components/button.tsx
17
17
  import { jsx } from "react/jsx-runtime";
18
18
  var buttonVariants = cva(
19
- "inline-flex items-center justify-center whitespace-nowrap rounded-none text-sm font-medium cursor-pointer transition-all duration-150 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-0 disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed active:scale-[0.98] [&_svg]:text-current",
19
+ "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium cursor-pointer transition-all duration-150 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-0 disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed active:scale-[0.98] [&_svg]:text-current",
20
20
  {
21
21
  variants: {
22
22
  variant: {
@@ -27,8 +27,12 @@ var buttonVariants = cva(
27
27
  // Hover darkens to a deeper shade instead of opacity-90, which would
28
28
  // composite the fill toward the page and drop white text under 4.5:1.
29
29
  destructive: "bg-destructive-solid text-destructive-foreground border border-transparent hover:bg-destructive-700",
30
- // border-border (not a faint primary alpha) so the outline is a visible
31
- // boundary at the 3:1 UI minimum.
30
+ // border-border is the decorative separator token, and it is the right
31
+ // one here: a button is identified by its label and fill, so its edge
32
+ // carries no meaning on its own and is not held to the 3:1 minimum that
33
+ // border-input meets for controls identified by their boundary. It is
34
+ // still used in preference to a faint primary alpha, which reads as a
35
+ // tint of the brand colour rather than as an edge.
32
36
  outline: "border border-border text-foreground hover-unified bg-background",
33
37
  secondary: "bg-background border border-border text-foreground hover:bg-primary/5",
34
38
  ghost: "text-foreground border border-transparent hover-unified",
@@ -36,7 +40,7 @@ var buttonVariants = cva(
36
40
  },
37
41
  size: {
38
42
  default: "h-[var(--nx-control-height)] px-6 py-2",
39
- sm: "h-[var(--nx-control-height-md)] px-4 text-[13px]",
43
+ sm: "h-[var(--nx-control-height-md)] px-4 text-sm",
40
44
  md: "h-[var(--nx-control-height)] px-6 text-sm",
41
45
  lg: "h-[var(--nx-control-height-lg)] px-8 text-base",
42
46
  icon: "h-[var(--nx-control-height)] w-[var(--nx-control-height)] p-0",
@@ -83,7 +87,7 @@ import { cva as cva2 } from "class-variance-authority";
83
87
  import { forwardRef as forwardRef2 } from "react";
84
88
  import { jsx as jsx2 } from "react/jsx-runtime";
85
89
  var inputVariants = cva2(
86
- "file:text-foreground placeholder:text-muted-foreground placeholder:opacity-50 selection:bg-primary selection:text-primary-foreground w-full min-w-0 rounded-none border border-input bg-background text-sm transition-all duration-150 outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 focus:ring-0 focus:ring-offset-0 focus:outline-none focus:border-primary! focus-visible:border-primary! aria-invalid:border-destructive aria-invalid:focus:border-destructive! data-[invalid=true]:border-destructive data-[invalid=true]:focus:border-destructive!",
90
+ "file:text-foreground placeholder:text-muted-foreground placeholder:opacity-50 selection:bg-primary selection:text-primary-foreground w-full min-w-0 rounded-md border border-input bg-background text-sm transition-all duration-150 outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 focus:ring-0 focus:ring-offset-0 focus:outline-none focus:border-primary! focus-visible:border-primary! aria-invalid:border-destructive aria-invalid:focus:border-destructive! data-[invalid=true]:border-destructive data-[invalid=true]:focus:border-destructive!",
87
91
  {
88
92
  variants: {
89
93
  size: {
@@ -124,7 +128,7 @@ var Textarea = forwardRef3(({ className, ...props }, ref) => {
124
128
  className: cn(
125
129
  // hover:border-primary (full strength) keeps the hover boundary more
126
130
  // visible than the resting border-input, not a fainter alpha of it.
127
- "flex min-h-[80px] w-full rounded-none border border-input bg-background px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground placeholder:opacity-50 transition-all duration-200 focus:border-primary! focus-visible:border-primary! focus:outline-none hover:border-primary disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-primary/5 resize-y",
131
+ "flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground placeholder:opacity-50 transition-all duration-200 focus:border-primary! focus-visible:border-primary! focus:outline-none hover:border-primary disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-primary/5 resize-y",
128
132
  "aria-invalid:border-destructive aria-invalid:focus:border-destructive!",
129
133
  className
130
134
  ),
@@ -199,7 +203,7 @@ var TooltipContent = forwardRef4(({ className, sideOffset = 4, ...props }, ref)
199
203
  sideOffset,
200
204
  "data-slot": "tooltip-content",
201
205
  className: cn(
202
- "z-50 overflow-hidden rounded-none px-3 py-1.5 text-xs shadow-lg border border-border bg-popover text-popover-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
206
+ "z-50 overflow-hidden rounded-lg px-3 py-1.5 text-xs shadow-lg border border-border bg-popover text-popover-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
203
207
  className
204
208
  ),
205
209
  ...props
@@ -244,7 +248,7 @@ var FormLabelWithTooltip = React2.forwardRef(
244
248
  {
245
249
  side: "right",
246
250
  className: cn(
247
- "max-w-[250px] text-[12px] break-words relative z-[100] shadow-md border border-border bg-primary text-primary-foreground px-3 py-2 rounded-none",
251
+ "max-w-[250px] text-xs break-words relative z-[100] shadow-md border border-border bg-primary text-primary-foreground px-3 py-2 rounded-lg",
248
252
  tooltipClassName
249
253
  ),
250
254
  children: description
@@ -260,7 +264,7 @@ FormLabelWithTooltip.displayName = "FormLabelWithTooltip";
260
264
  import { cva as cva3 } from "class-variance-authority";
261
265
  import { jsx as jsx8 } from "react/jsx-runtime";
262
266
  var badgeVariants = cva3(
263
- "inline-flex items-center rounded-none px-2.5 py-0.5 h-[22px] text-xs font-medium transition-colors",
267
+ "inline-flex items-center rounded-sm px-2.5 py-0.5 h-[22px] text-xs font-medium transition-colors",
264
268
  {
265
269
  variants: {
266
270
  variant: {
@@ -295,7 +299,7 @@ import { cva as cva4 } from "class-variance-authority";
295
299
  import { forwardRef as forwardRef6 } from "react";
296
300
  import { jsx as jsx9 } from "react/jsx-runtime";
297
301
  var cardVariants = cva4(
298
- "bg-card text-foreground rounded-none border border-border transition-all duration-200",
302
+ "bg-card text-foreground rounded-lg border border-border transition-all duration-200",
299
303
  {
300
304
  variants: {
301
305
  variant: {
@@ -331,7 +335,14 @@ var CardHeader = forwardRef6(
331
335
  ref,
332
336
  "data-slot": "card-header",
333
337
  className: cn(
334
- "flex flex-col p-4",
338
+ // Mirrors CardFooter: a header that carries its own tint runs the full
339
+ // width of the card, so at a nonzero --radius it would paint square
340
+ // across the card's curved top corners. `inherit` takes the parent's
341
+ // computed radius rather than restating a step. It only helps when the
342
+ // header is a direct child of the card; a header nested inside another
343
+ // wrapper inherits that wrapper's radius instead, and such a card needs
344
+ // `overflow-hidden` to clip the fill.
345
+ "flex flex-col rounded-t-[inherit] p-4",
335
346
  !noBorder && "border-b border-border",
336
347
  className
337
348
  ),
@@ -405,7 +416,13 @@ var CardFooter = forwardRef6(
405
416
  ref,
406
417
  "data-slot": "card-footer",
407
418
  className: cn(
408
- "flex items-center px-6 py-4 border-t border-border bg-primary/5",
419
+ // The footer's tint runs the full width of the card, so at a nonzero
420
+ // --radius it would paint square across the card's curved bottom
421
+ // corners. `inherit` takes the card's own computed radius rather than
422
+ // restating a step, so a card whose radius is overridden stays
423
+ // matched, and it can never disagree with the card at any --radius,
424
+ // including the shipped 0 where `rounded-lg` is 0.
425
+ "flex items-center px-6 py-4 border-t border-border bg-primary/5 rounded-b-[inherit]",
409
426
  className
410
427
  ),
411
428
  ...props
@@ -474,7 +491,7 @@ import { cva as cva5 } from "class-variance-authority";
474
491
  import { forwardRef as forwardRef8 } from "react";
475
492
  import { jsx as jsx11 } from "react/jsx-runtime";
476
493
  var alertVariants = cva5(
477
- "relative flex items-start gap-3 rounded-none border border-border p-4 text-sm transition-colors duration-150",
494
+ "relative flex items-start gap-3 rounded-md border border-border p-4 text-sm transition-colors duration-150",
478
495
  {
479
496
  variants: {
480
497
  variant: {
@@ -578,7 +595,7 @@ var Skeleton = React3.forwardRef(
578
595
  "data-slot": "skeleton",
579
596
  "aria-hidden": "true",
580
597
  className: cn(
581
- "bg-primary/5 animate-pulse rounded-none motion-reduce:animate-none",
598
+ "bg-primary/5 animate-pulse rounded-md motion-reduce:animate-none",
582
599
  className
583
600
  ),
584
601
  ...props
@@ -625,7 +642,7 @@ var Progress = React4.forwardRef(
625
642
  "aria-valuemax": max,
626
643
  "aria-label": ariaLabel || `Progress: ${Math.round(percentage)}%`,
627
644
  className: cn(
628
- "relative h-2 w-full overflow-hidden rounded-none bg-accent",
645
+ "relative h-2 w-full overflow-hidden rounded-full bg-accent",
629
646
  className
630
647
  ),
631
648
  ...props,
@@ -658,7 +675,7 @@ var Checkbox = forwardRef11(({ className, indeterminate, ...props }, ref) => /*
658
675
  className: cn(
659
676
  // Resting border uses border-input (a visible 3:1 boundary); the checked
660
677
  // state switches to border-primary below, keeping the two states distinct.
661
- "peer relative h-4 w-4 shrink-0 rounded-none border border-input ring-offset-background before:absolute before:left-1/2 before:top-1/2 before:h-6 before:w-6 before:-translate-x-1/2 before:-translate-y-1/2 before:content-[''] focus:border-primary! focus-visible:border-primary! focus:outline-none focus-visible:outline-none aria-invalid:border-destructive aria-invalid:focus:border-destructive! aria-invalid:focus-visible:border-destructive! disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary data-[state=indeterminate]:bg-primary data-[state=indeterminate]:text-primary-foreground data-[state=indeterminate]:border-primary transition-all duration-200",
678
+ "peer relative h-4 w-4 shrink-0 rounded-sm border border-input ring-offset-background before:absolute before:left-1/2 before:top-1/2 before:h-6 before:w-6 before:-translate-x-1/2 before:-translate-y-1/2 before:content-[''] focus:border-primary! focus-visible:border-primary! focus:outline-none focus-visible:outline-none aria-invalid:border-destructive aria-invalid:focus:border-destructive! aria-invalid:focus-visible:border-destructive! disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary data-[state=indeterminate]:bg-primary data-[state=indeterminate]:text-primary-foreground data-[state=indeterminate]:border-primary transition-all duration-200",
662
679
  className
663
680
  ),
664
681
  ...props,
@@ -700,11 +717,15 @@ var RadioGroupItem = forwardRef12(({ className, ...props }, ref) => {
700
717
  // (~5% opacity, effectively invisible); hover strengthens above the resting state.
701
718
  // Resting border uses border-input (a visible 3:1 boundary); the checked
702
719
  // state switches to border-primary below, keeping the two states distinct.
703
- "peer h-4 w-4 shrink-0 rounded-none border border-input bg-background cursor-pointer transition-all duration-150 focus:border-primary! focus-visible:border-primary! focus:outline-none focus-visible:outline-none aria-invalid:border-destructive aria-invalid:focus:border-destructive! aria-invalid:focus-visible:border-destructive! disabled:cursor-not-allowed disabled:opacity-50 hover:border-primary/70 data-[state=checked]:border-primary data-[state=checked]:border-[5px]",
720
+ // rounded-full is fixed rather than derived from --radius: the circle is
721
+ // what tells the user only one option can be chosen. The thick checked
722
+ // border leaves a background-coloured core, and because the border's
723
+ // inner edge is curved too that core reads as a round dot.
724
+ "peer h-4 w-4 shrink-0 rounded-full border border-input bg-background cursor-pointer transition-all duration-150 focus:border-primary! focus-visible:border-primary! focus:outline-none focus-visible:outline-none aria-invalid:border-destructive aria-invalid:focus:border-destructive! aria-invalid:focus-visible:border-destructive! disabled:cursor-not-allowed disabled:opacity-50 hover:border-primary/70 data-[state=checked]:border-primary data-[state=checked]:border-[5px]",
704
725
  className
705
726
  ),
706
727
  ...props,
707
- children: /* @__PURE__ */ jsx16(RadioGroupPrimitive.Indicator, {})
728
+ children: /* @__PURE__ */ jsx16(RadioGroupPrimitive.Indicator, { className: "block size-full rounded-full" })
708
729
  }
709
730
  );
710
731
  });
@@ -722,7 +743,7 @@ function Switch({ className, ...props }) {
722
743
  {
723
744
  "data-slot": "switch",
724
745
  className: cn(
725
- "peer inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-none border border-border transition-all outline-none focus-visible:border-primary aria-invalid:border-destructive aria-invalid:focus-visible:border-destructive! disabled:cursor-not-allowed disabled:opacity-50",
746
+ "peer inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-border transition-all outline-none focus-visible:border-primary aria-invalid:border-destructive aria-invalid:focus-visible:border-destructive! disabled:cursor-not-allowed disabled:opacity-50",
726
747
  "data-[state=checked]:bg-primary data-[state=checked]:border-primary!",
727
748
  "data-[state=unchecked]:bg-input data-[state=unchecked]:border-border dark:data-[state=unchecked]:bg-input/80",
728
749
  className
@@ -733,7 +754,7 @@ function Switch({ className, ...props }) {
733
754
  {
734
755
  "data-slot": "switch-thumb",
735
756
  className: cn(
736
- "bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-none ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0"
757
+ "bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0"
737
758
  )
738
759
  }
739
760
  )
@@ -808,7 +829,7 @@ import { cva as cva7 } from "class-variance-authority";
808
829
  import { createContext as createContext2, forwardRef as forwardRef14, useContext as useContext2 } from "react";
809
830
  import { jsx as jsx19 } from "react/jsx-runtime";
810
831
  var avatarVariants = cva7(
811
- "relative inline-flex shrink-0 overflow-hidden rounded-none items-center justify-center bg-primary/5 text-muted-foreground",
832
+ "relative inline-flex shrink-0 overflow-hidden rounded-full items-center justify-center bg-primary/5 text-muted-foreground",
812
833
  {
813
834
  variants: {
814
835
  size: {
@@ -875,7 +896,7 @@ var AvatarFallback = forwardRef14(
875
896
  ref,
876
897
  "data-slot": "avatar-fallback",
877
898
  className: cn(
878
- "bg-primary/5 text-muted-foreground flex size-full items-center justify-center rounded-none font-medium",
899
+ "bg-primary/5 text-muted-foreground flex size-full items-center justify-center rounded-full font-medium",
879
900
  textSize,
880
901
  className
881
902
  ),
@@ -899,6 +920,7 @@ var TabsList = forwardRef15(
899
920
  ref,
900
921
  "data-slot": "tabs-list",
901
922
  className: cn(
923
+ // Square corners: underline tabs, so the list never draws a rounded surface.
902
924
  "inline-flex h-10 items-center justify-center gap-1 rounded-none p-0 text-muted-foreground",
903
925
  className
904
926
  ),
@@ -914,6 +936,8 @@ var TabsTrigger = forwardRef15(
914
936
  ref,
915
937
  "data-slot": "tabs-trigger",
916
938
  className: cn(
939
+ // Square corners: the active state is a 2px bottom border that has to
940
+ // run the full width of the trigger.
917
941
  "inline-flex items-center justify-center whitespace-nowrap rounded-none bg-transparent px-4 py-2 text-sm font-medium cursor-pointer transition-all duration-200 border-b-2 relative -mb-0.5 data-[state=active]:border-b-primary! data-[state=active]:text-primary data-[state=inactive]:border-transparent data-[state=inactive]:text-muted-foreground hover:text-primary hover:border-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed",
918
942
  className
919
943
  ),
@@ -955,7 +979,7 @@ var PopoverContent = React5.forwardRef(({ className, align = "center", sideOffse
955
979
  sideOffset,
956
980
  "data-slot": "popover-content",
957
981
  className: cn(
958
- "z-[100] w-72 rounded-none border border-border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-popover-content-transform-origin]",
982
+ "z-[100] w-72 rounded-lg border border-border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-popover-content-transform-origin]",
959
983
  className
960
984
  ),
961
985
  ...props
@@ -980,6 +1004,9 @@ var DialogOverlay = forwardRef17(({ className, ...props }, ref) => /* @__PURE__
980
1004
  ref,
981
1005
  "data-slot": "dialog-overlay",
982
1006
  className: cn(
1007
+ // A modal scrim: a black wash is the point, so it stays a literal
1008
+ // rather than a surface token. Painting it from `background` would
1009
+ // make it a white veil in light mode and near-invisible in dark.
983
1010
  "fixed inset-0 z-50 bg-black/80 backdrop-blur-sm transition-opacity duration-150 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
984
1011
  className
985
1012
  ),
@@ -1011,7 +1038,7 @@ var DialogContent = forwardRef17(({ className, children, size, ...props }, ref)
1011
1038
  ref,
1012
1039
  "data-slot": "dialog-content",
1013
1040
  className: cn(
1014
- "fixed left-[50%] top-[50%] z-[51] grid w-full translate-x-[-50%] translate-y-[-50%] gap-4 border border-border bg-background p-6 shadow-xl rounded-none duration-150 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]",
1041
+ "fixed left-[50%] top-[50%] z-[51] grid w-full translate-x-[-50%] translate-y-[-50%] gap-4 border border-border bg-background p-6 shadow-xl rounded-lg duration-150 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]",
1015
1042
  dialogContentVariants({ size }),
1016
1043
  className
1017
1044
  ),
@@ -1022,7 +1049,7 @@ var DialogContent = forwardRef17(({ className, children, size, ...props }, ref)
1022
1049
  DialogPrimitive.Close,
1023
1050
  {
1024
1051
  "data-slot": "dialog-close",
1025
- className: "absolute right-4 top-4 rounded-none p-1 text-muted-foreground cursor-pointer transition-colors duration-150 hover-unified focus:outline-none focus:ring-2 focus:ring-ring disabled:pointer-events-none disabled:cursor-not-allowed",
1052
+ className: "absolute right-4 top-4 rounded-md p-1 text-muted-foreground cursor-pointer transition-colors duration-150 hover-unified focus:outline-none focus:ring-2 focus:ring-ring disabled:pointer-events-none disabled:cursor-not-allowed",
1026
1053
  children: [
1027
1054
  /* @__PURE__ */ jsx22(X, { className: "h-4 w-4" }),
1028
1055
  /* @__PURE__ */ jsx22("span", { className: "sr-only", children: "Close" })
@@ -1099,6 +1126,9 @@ var AlertDialogOverlay = forwardRef18(({ className, ...props }, ref) => /* @__PU
1099
1126
  {
1100
1127
  ref,
1101
1128
  className: cn(
1129
+ // A modal scrim: a black wash is the point, so it stays a literal
1130
+ // rather than a surface token. Painting it from `background` would
1131
+ // make it a white veil in light mode and near-invisible in dark.
1102
1132
  "fixed inset-0 z-50 bg-black/80 backdrop-blur-sm transition-opacity duration-150 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
1103
1133
  className
1104
1134
  ),
@@ -1115,7 +1145,7 @@ var AlertDialogContent = forwardRef18(({ className, ...props }, ref) => {
1115
1145
  {
1116
1146
  ref,
1117
1147
  className: cn(
1118
- "fixed left-[50%] top-[50%] z-[51] grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-border bg-background p-6 shadow-xl rounded-none duration-150 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]",
1148
+ "fixed left-[50%] top-[50%] z-[51] grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-border bg-background p-6 shadow-xl rounded-lg duration-150 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]",
1119
1149
  className
1120
1150
  ),
1121
1151
  ...props
@@ -1215,7 +1245,7 @@ var DropdownMenuSubTrigger = React6.forwardRef(({ className, inset, children, ..
1215
1245
  {
1216
1246
  ref,
1217
1247
  className: cn(
1218
- "flex select-none items-center gap-2 rounded-none px-2 py-1.5 text-sm outline-none data-[state=open]:bg-muted data-[state=open]:text-foreground [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
1248
+ "flex select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none data-[state=open]:bg-muted data-[state=open]:text-foreground [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
1219
1249
  menuItemBase,
1220
1250
  inset && "pl-8",
1221
1251
  className
@@ -1233,7 +1263,7 @@ var DropdownMenuSubContent = React6.forwardRef(({ className, ...props }, ref) =>
1233
1263
  {
1234
1264
  ref,
1235
1265
  className: cn(
1236
- "z-50 min-w-[8rem] overflow-hidden rounded-none border border-border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-dropdown-menu-content-transform-origin]",
1266
+ "z-50 min-w-[8rem] overflow-hidden rounded-lg border border-border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-dropdown-menu-content-transform-origin]",
1237
1267
  className
1238
1268
  ),
1239
1269
  ...props
@@ -1248,7 +1278,7 @@ var DropdownMenuContent = React6.forwardRef(({ className, sideOffset = 4, ...pro
1248
1278
  ref,
1249
1279
  sideOffset,
1250
1280
  className: cn(
1251
- "z-50 max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-none border border-border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-dropdown-menu-content-transform-origin]",
1281
+ "z-50 max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-lg border border-border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-dropdown-menu-content-transform-origin]",
1252
1282
  className
1253
1283
  ),
1254
1284
  ...props
@@ -1261,7 +1291,7 @@ var DropdownMenuItem = React6.forwardRef(({ className, inset, ...props }, ref) =
1261
1291
  {
1262
1292
  ref,
1263
1293
  className: cn(
1264
- "relative flex select-none items-center gap-2 rounded-none px-2 py-1.5 text-sm outline-none [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
1294
+ "relative flex select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
1265
1295
  menuItemBase,
1266
1296
  inset && "pl-8",
1267
1297
  className
@@ -1275,7 +1305,7 @@ var DropdownMenuCheckboxItem = React6.forwardRef(({ className, children, checked
1275
1305
  {
1276
1306
  ref,
1277
1307
  className: cn(
1278
- "relative flex select-none items-center rounded-none py-1.5 pl-8 pr-2 text-sm outline-none",
1308
+ "relative flex select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none",
1279
1309
  menuItemBase,
1280
1310
  className
1281
1311
  ),
@@ -1293,7 +1323,7 @@ var DropdownMenuRadioItem = React6.forwardRef(({ className, children, ...props }
1293
1323
  {
1294
1324
  ref,
1295
1325
  className: cn(
1296
- "relative flex select-none items-center rounded-none py-1.5 pl-8 pr-2 text-sm outline-none",
1326
+ "relative flex select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none",
1297
1327
  menuItemBase,
1298
1328
  className
1299
1329
  ),
@@ -1361,7 +1391,7 @@ function SelectValue({
1361
1391
  var selectTriggerVariants = cva9(
1362
1392
  // hover:border-primary (full strength) keeps the hover boundary more visible
1363
1393
  // than the resting border-input, not a fainter alpha of it.
1364
- "flex w-full items-center justify-between gap-2 rounded-none border border-input bg-background px-3 text-sm text-foreground cursor-pointer transition-all duration-150 focus:border-primary! focus-visible:border-primary! focus:outline-none hover:border-primary disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-primary/5 data-[placeholder]:text-muted-foreground aria-[invalid=true]:border-destructive aria-[invalid=true]:focus:border-destructive! [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:size-4",
1394
+ "flex w-full items-center justify-between gap-2 rounded-md border border-input bg-background px-3 text-sm text-foreground cursor-pointer transition-all duration-150 focus:border-primary! focus-visible:border-primary! focus:outline-none hover:border-primary disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-primary/5 data-[placeholder]:text-muted-foreground aria-[invalid=true]:border-destructive aria-[invalid=true]:focus:border-destructive! [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:size-4",
1365
1395
  {
1366
1396
  variants: {
1367
1397
  size: {
@@ -1403,7 +1433,7 @@ function SelectContent({
1403
1433
  {
1404
1434
  "data-slot": "select-content",
1405
1435
  className: cn(
1406
- "bg-popover text-popover-foreground border border-border shadow-none rounded-none z-9999 max-h-(--radix-select-content-available-height) min-w-32 overflow-hidden data-[state=open]:animate-zoom-in-95 data-[state=closed]:animate-zoom-out-95 data-[side=bottom]:animate-slide-in-from-top-2 data-[side=left]:animate-slide-in-from-right-2 data-[side=right]:animate-slide-in-from-left-2 data-[side=top]:animate-slide-in-from-bottom-2",
1436
+ "bg-popover text-popover-foreground border border-border shadow-none rounded-lg z-9999 max-h-(--radix-select-content-available-height) min-w-32 overflow-hidden data-[state=open]:animate-zoom-in-95 data-[state=closed]:animate-zoom-out-95 data-[side=bottom]:animate-slide-in-from-top-2 data-[side=left]:animate-slide-in-from-right-2 data-[side=right]:animate-slide-in-from-left-2 data-[side=top]:animate-slide-in-from-bottom-2",
1407
1437
  position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
1408
1438
  className
1409
1439
  ),
@@ -1449,7 +1479,7 @@ function SelectItem({
1449
1479
  {
1450
1480
  "data-slot": "select-item",
1451
1481
  className: cn(
1452
- "relative flex w-full cursor-pointer items-center gap-2 rounded-none py-2 pr-8 pl-2 text-sm text-foreground outline-none select-none transition-colors hover-unified focus:bg-primary/5 focus:text-primary data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:size-4",
1482
+ "relative flex w-full cursor-pointer items-center gap-2 rounded-sm py-2 pr-8 pl-2 text-sm text-foreground outline-none select-none transition-colors hover-unified focus:bg-primary/5 focus:text-primary data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:size-4",
1453
1483
  className
1454
1484
  ),
1455
1485
  ...props,
@@ -1521,6 +1551,9 @@ var SheetOverlay = React7.forwardRef(({ className, ...props }, ref) => /* @__PUR
1521
1551
  DialogPrimitive2.Overlay,
1522
1552
  {
1523
1553
  className: cn(
1554
+ // A modal scrim: a black wash is the point, so it stays a literal
1555
+ // rather than a surface token. Painting it from `background` would
1556
+ // make it a white veil in light mode and near-invisible in dark.
1524
1557
  "fixed inset-0 z-50 bg-black/50 backdrop-blur-sm",
1525
1558
  "data-[state=open]:animate-in data-[state=closed]:animate-out",
1526
1559
  "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
@@ -1623,7 +1656,7 @@ var Command = forwardRef22(
1623
1656
  {
1624
1657
  ref,
1625
1658
  className: cn(
1626
- "flex h-full w-full flex-col overflow-hidden rounded-none bg-background text-foreground",
1659
+ "flex h-full w-full flex-col overflow-hidden rounded-lg bg-background text-foreground",
1627
1660
  className
1628
1661
  ),
1629
1662
  ...props
@@ -1636,6 +1669,9 @@ var CommandDialogOverlay = forwardRef22(({ className, ...props }, ref) => /* @__
1636
1669
  {
1637
1670
  ref,
1638
1671
  className: cn(
1672
+ // A modal scrim: a black wash is the point, so it stays a literal
1673
+ // rather than a surface token. Painting it from `background` would
1674
+ // make it a white veil in light mode and near-invisible in dark.
1639
1675
  "fixed inset-0 z-[99] bg-black/80 backdrop-blur-sm",
1640
1676
  "data-[state=open]:animate-in data-[state=closed]:animate-out",
1641
1677
  "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
@@ -1670,7 +1706,7 @@ var CommandDialog = ({ children, ...props }) => {
1670
1706
  "m-4 sm:m-0",
1671
1707
  // 16px margin on mobile, no margin on desktop
1672
1708
  // Visual
1673
- "overflow-hidden rounded-none border border-border bg-background shadow-xl",
1709
+ "overflow-hidden rounded-lg border border-border bg-background shadow-xl",
1674
1710
  // Animation
1675
1711
  "duration-200",
1676
1712
  "data-[state=open]:animate-in data-[state=closed]:animate-out",
@@ -1776,7 +1812,7 @@ var CommandItem = forwardRef22(({ className, ...props }, ref) => /* @__PURE__ */
1776
1812
  // Spacing
1777
1813
  "px-3 py-2.5",
1778
1814
  // Visual
1779
- "rounded-none text-base sm:text-sm outline-none",
1815
+ "rounded-sm text-base sm:text-sm outline-none",
1780
1816
  // Transitions
1781
1817
  "transition-all duration-200 ease-(--ease-premium)",
1782
1818
  // Hover state - shared dashboard hover treatment
@@ -1805,7 +1841,7 @@ var CommandShortcut = forwardRef22(
1805
1841
  "text-xs font-mono",
1806
1842
  // Visual
1807
1843
  "text-muted-foreground bg-primary/5",
1808
- "border border-border rounded-none",
1844
+ "border border-border rounded-md",
1809
1845
  // Spacing
1810
1846
  "px-1.5 py-0.5",
1811
1847
  className
@@ -2000,7 +2036,7 @@ function TableSearch({
2000
2036
  value,
2001
2037
  onChange: (e) => onChange(e.target.value),
2002
2038
  "aria-busy": isLoading,
2003
- className: "h-10 w-full rounded-none border border-border bg-background pl-10 pr-10 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 transition-all"
2039
+ className: "h-10 w-full rounded-md border border-input bg-background pl-10 pr-10 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 transition-all"
2004
2040
  }
2005
2041
  ),
2006
2042
  (value || isLoading) && /* @__PURE__ */ jsxs10("div", { className: "absolute right-3 top-1/2 -translate-y-1/2 flex items-center gap-2", children: [
@@ -2010,7 +2046,7 @@ function TableSearch({
2010
2046
  {
2011
2047
  type: "button",
2012
2048
  onClick: onClear,
2013
- className: "text-muted-foreground hover:text-foreground transition-colors p-0.5 rounded-none hover:bg-primary/5",
2049
+ className: "text-muted-foreground hover:text-foreground transition-colors p-0.5 rounded-md hover:bg-primary/5",
2014
2050
  "aria-label": "Clear search",
2015
2051
  children: /* @__PURE__ */ jsx31(X2, { className: "w-3.5 h-3.5" })
2016
2052
  }
@@ -2038,7 +2074,7 @@ function TableLoading() {
2038
2074
  }
2039
2075
  function TableEmpty({ message = "No records found" }) {
2040
2076
  return /* @__PURE__ */ jsxs11("div", { className: "flex flex-col items-center justify-center gap-4 p-16 text-center text-muted-foreground", children: [
2041
- /* @__PURE__ */ jsx32("div", { className: "flex h-12 w-12 items-center justify-center rounded-none bg-primary/5", children: /* @__PURE__ */ jsx32(FileQuestion, { className: "h-6 w-6" }) }),
2077
+ /* @__PURE__ */ jsx32("div", { className: "flex h-12 w-12 items-center justify-center rounded-md bg-primary/5", children: /* @__PURE__ */ jsx32(FileQuestion, { className: "h-6 w-6" }) }),
2042
2078
  /* @__PURE__ */ jsx32("span", { className: "text-sm font-medium", children: message })
2043
2079
  ] });
2044
2080
  }
@@ -2054,9 +2090,9 @@ var TableSkeleton = ({
2054
2090
  }) => {
2055
2091
  const content = /* @__PURE__ */ jsxs12(Fragment, { children: [
2056
2092
  /* @__PURE__ */ jsx33("div", { className: "border-0 rounded-none shadow-none", children: /* @__PURE__ */ jsxs12(Table, { children: [
2057
- /* @__PURE__ */ jsx33(TableHeader, { children: /* @__PURE__ */ jsx33(TableRow, { children: Array.from({ length: columns }).map((_, colIdx) => /* @__PURE__ */ jsx33(TableHead, { className: "py-3", children: colIdx === 0 ? /* @__PURE__ */ jsx33(GrayBar, { className: "h-4 w-4" }) : colIdx === columns - 1 ? /* @__PURE__ */ jsx33("div", { className: "flex justify-center", children: /* @__PURE__ */ jsx33(Skeleton, { className: "h-4 w-4 rounded-none" }) }) : colIdx === 1 ? /* @__PURE__ */ jsx33(GrayBar, { className: "h-4 w-[70%] max-w-[180px]" }) : /* @__PURE__ */ jsx33(GrayBar, { className: "h-4 w-[60%] max-w-[120px]" }) }, `skeleton-header-${colIdx}`)) }) }),
2058
- /* @__PURE__ */ jsx33(TableBody, { children: Array.from({ length: rowCount }).map((_, rowIdx) => /* @__PURE__ */ jsx33(TableRow, { className: "border-b border-border", children: Array.from({ length: columns }).map((_2, colIdx) => /* @__PURE__ */ jsx33(TableCell, { className: "py-3", children: colIdx === 0 ? /* @__PURE__ */ jsx33(GrayBar, { className: "h-4 w-4" }) : colIdx === columns - 1 ? /* @__PURE__ */ jsx33("div", { className: "flex justify-center", children: /* @__PURE__ */ jsx33(Skeleton, { className: "h-8 w-8 rounded-none" }) }) : colIdx === 1 ? /* @__PURE__ */ jsxs12("div", { className: "flex items-center gap-3", children: [
2059
- /* @__PURE__ */ jsx33(Skeleton, { className: "w-9 rounded-none shrink-0" }),
2093
+ /* @__PURE__ */ jsx33(TableHeader, { children: /* @__PURE__ */ jsx33(TableRow, { children: Array.from({ length: columns }).map((_, colIdx) => /* @__PURE__ */ jsx33(TableHead, { className: "py-3", children: colIdx === 0 ? /* @__PURE__ */ jsx33(GrayBar, { className: "h-4 w-4" }) : colIdx === columns - 1 ? /* @__PURE__ */ jsx33("div", { className: "flex justify-center", children: /* @__PURE__ */ jsx33(Skeleton, { className: "h-4 w-4 rounded-sm" }) }) : colIdx === 1 ? /* @__PURE__ */ jsx33(GrayBar, { className: "h-4 w-[70%] max-w-[180px]" }) : /* @__PURE__ */ jsx33(GrayBar, { className: "h-4 w-[60%] max-w-[120px]" }) }, `skeleton-header-${colIdx}`)) }) }),
2094
+ /* @__PURE__ */ jsx33(TableBody, { children: Array.from({ length: rowCount }).map((_, rowIdx) => /* @__PURE__ */ jsx33(TableRow, { className: "border-b border-border", children: Array.from({ length: columns }).map((_2, colIdx) => /* @__PURE__ */ jsx33(TableCell, { className: "py-3", children: colIdx === 0 ? /* @__PURE__ */ jsx33(GrayBar, { className: "h-4 w-4" }) : colIdx === columns - 1 ? /* @__PURE__ */ jsx33("div", { className: "flex justify-center", children: /* @__PURE__ */ jsx33(Skeleton, { className: "h-8 w-8 rounded-md" }) }) : colIdx === 1 ? /* @__PURE__ */ jsxs12("div", { className: "flex items-center gap-3", children: [
2095
+ /* @__PURE__ */ jsx33(Skeleton, { className: "w-9 rounded-md shrink-0" }),
2060
2096
  /* @__PURE__ */ jsxs12("div", { className: "space-y-1.5 flex-1", children: [
2061
2097
  /* @__PURE__ */ jsx33(Skeleton, { className: "h-4 w-[120px]" }),
2062
2098
  /* @__PURE__ */ jsx33(Skeleton, { className: "h-3 w-[80px]" })
@@ -2084,7 +2120,7 @@ var TableSkeleton = ({
2084
2120
  if (hideWrapper) {
2085
2121
  return content;
2086
2122
  }
2087
- return /* @__PURE__ */ jsx33("div", { className: "table-wrapper rounded-none border border-border bg-card overflow-hidden", children: content });
2123
+ return /* @__PURE__ */ jsx33("div", { className: "table-wrapper rounded-md border border-border bg-card overflow-hidden", children: content });
2088
2124
  };
2089
2125
  TableSkeleton.displayName = "TableSkeleton";
2090
2126
  export {