@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.cjs CHANGED
@@ -192,7 +192,7 @@ function cn(...inputs) {
192
192
  // src/components/button.tsx
193
193
  var import_jsx_runtime = require("react/jsx-runtime");
194
194
  var buttonVariants = (0, import_class_variance_authority.cva)(
195
- "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",
195
+ "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",
196
196
  {
197
197
  variants: {
198
198
  variant: {
@@ -203,8 +203,12 @@ var buttonVariants = (0, import_class_variance_authority.cva)(
203
203
  // Hover darkens to a deeper shade instead of opacity-90, which would
204
204
  // composite the fill toward the page and drop white text under 4.5:1.
205
205
  destructive: "bg-destructive-solid text-destructive-foreground border border-transparent hover:bg-destructive-700",
206
- // border-border (not a faint primary alpha) so the outline is a visible
207
- // boundary at the 3:1 UI minimum.
206
+ // border-border is the decorative separator token, and it is the right
207
+ // one here: a button is identified by its label and fill, so its edge
208
+ // carries no meaning on its own and is not held to the 3:1 minimum that
209
+ // border-input meets for controls identified by their boundary. It is
210
+ // still used in preference to a faint primary alpha, which reads as a
211
+ // tint of the brand colour rather than as an edge.
208
212
  outline: "border border-border text-foreground hover-unified bg-background",
209
213
  secondary: "bg-background border border-border text-foreground hover:bg-primary/5",
210
214
  ghost: "text-foreground border border-transparent hover-unified",
@@ -212,7 +216,7 @@ var buttonVariants = (0, import_class_variance_authority.cva)(
212
216
  },
213
217
  size: {
214
218
  default: "h-[var(--nx-control-height)] px-6 py-2",
215
- sm: "h-[var(--nx-control-height-md)] px-4 text-[13px]",
219
+ sm: "h-[var(--nx-control-height-md)] px-4 text-sm",
216
220
  md: "h-[var(--nx-control-height)] px-6 text-sm",
217
221
  lg: "h-[var(--nx-control-height-lg)] px-8 text-base",
218
222
  icon: "h-[var(--nx-control-height)] w-[var(--nx-control-height)] p-0",
@@ -259,7 +263,7 @@ var import_class_variance_authority2 = require("class-variance-authority");
259
263
  var import_react2 = require("react");
260
264
  var import_jsx_runtime2 = require("react/jsx-runtime");
261
265
  var inputVariants = (0, import_class_variance_authority2.cva)(
262
- "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!",
266
+ "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!",
263
267
  {
264
268
  variants: {
265
269
  size: {
@@ -300,7 +304,7 @@ var Textarea = (0, import_react3.forwardRef)(({ className, ...props }, ref) => {
300
304
  className: cn(
301
305
  // hover:border-primary (full strength) keeps the hover boundary more
302
306
  // visible than the resting border-input, not a fainter alpha of it.
303
- "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",
307
+ "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",
304
308
  "aria-invalid:border-destructive aria-invalid:focus:border-destructive!",
305
309
  className
306
310
  ),
@@ -369,7 +373,7 @@ var TooltipContent = (0, import_react5.forwardRef)(({ className, sideOffset = 4,
369
373
  sideOffset,
370
374
  "data-slot": "tooltip-content",
371
375
  className: cn(
372
- "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",
376
+ "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",
373
377
  className
374
378
  ),
375
379
  ...props
@@ -414,7 +418,7 @@ var FormLabelWithTooltip = React2.forwardRef(
414
418
  {
415
419
  side: "right",
416
420
  className: cn(
417
- "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",
421
+ "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",
418
422
  tooltipClassName
419
423
  ),
420
424
  children: description
@@ -430,7 +434,7 @@ FormLabelWithTooltip.displayName = "FormLabelWithTooltip";
430
434
  var import_class_variance_authority3 = require("class-variance-authority");
431
435
  var import_jsx_runtime8 = require("react/jsx-runtime");
432
436
  var badgeVariants = (0, import_class_variance_authority3.cva)(
433
- "inline-flex items-center rounded-none px-2.5 py-0.5 h-[22px] text-xs font-medium transition-colors",
437
+ "inline-flex items-center rounded-sm px-2.5 py-0.5 h-[22px] text-xs font-medium transition-colors",
434
438
  {
435
439
  variants: {
436
440
  variant: {
@@ -465,7 +469,7 @@ var import_class_variance_authority4 = require("class-variance-authority");
465
469
  var import_react6 = require("react");
466
470
  var import_jsx_runtime9 = require("react/jsx-runtime");
467
471
  var cardVariants = (0, import_class_variance_authority4.cva)(
468
- "bg-card text-foreground rounded-none border border-border transition-all duration-200",
472
+ "bg-card text-foreground rounded-lg border border-border transition-all duration-200",
469
473
  {
470
474
  variants: {
471
475
  variant: {
@@ -501,7 +505,14 @@ var CardHeader = (0, import_react6.forwardRef)(
501
505
  ref,
502
506
  "data-slot": "card-header",
503
507
  className: cn(
504
- "flex flex-col p-4",
508
+ // Mirrors CardFooter: a header that carries its own tint runs the full
509
+ // width of the card, so at a nonzero --radius it would paint square
510
+ // across the card's curved top corners. `inherit` takes the parent's
511
+ // computed radius rather than restating a step. It only helps when the
512
+ // header is a direct child of the card; a header nested inside another
513
+ // wrapper inherits that wrapper's radius instead, and such a card needs
514
+ // `overflow-hidden` to clip the fill.
515
+ "flex flex-col rounded-t-[inherit] p-4",
505
516
  !noBorder && "border-b border-border",
506
517
  className
507
518
  ),
@@ -575,7 +586,13 @@ var CardFooter = (0, import_react6.forwardRef)(
575
586
  ref,
576
587
  "data-slot": "card-footer",
577
588
  className: cn(
578
- "flex items-center px-6 py-4 border-t border-border bg-primary/5",
589
+ // The footer's tint runs the full width of the card, so at a nonzero
590
+ // --radius it would paint square across the card's curved bottom
591
+ // corners. `inherit` takes the card's own computed radius rather than
592
+ // restating a step, so a card whose radius is overridden stays
593
+ // matched, and it can never disagree with the card at any --radius,
594
+ // including the shipped 0 where `rounded-lg` is 0.
595
+ "flex items-center px-6 py-4 border-t border-border bg-primary/5 rounded-b-[inherit]",
579
596
  className
580
597
  ),
581
598
  ...props
@@ -644,7 +661,7 @@ var import_class_variance_authority5 = require("class-variance-authority");
644
661
  var import_react8 = require("react");
645
662
  var import_jsx_runtime11 = require("react/jsx-runtime");
646
663
  var alertVariants = (0, import_class_variance_authority5.cva)(
647
- "relative flex items-start gap-3 rounded-none border border-border p-4 text-sm transition-colors duration-150",
664
+ "relative flex items-start gap-3 rounded-md border border-border p-4 text-sm transition-colors duration-150",
648
665
  {
649
666
  variants: {
650
667
  variant: {
@@ -748,7 +765,7 @@ var Skeleton = React3.forwardRef(
748
765
  "data-slot": "skeleton",
749
766
  "aria-hidden": "true",
750
767
  className: cn(
751
- "bg-primary/5 animate-pulse rounded-none motion-reduce:animate-none",
768
+ "bg-primary/5 animate-pulse rounded-md motion-reduce:animate-none",
752
769
  className
753
770
  ),
754
771
  ...props
@@ -795,7 +812,7 @@ var Progress = React4.forwardRef(
795
812
  "aria-valuemax": max,
796
813
  "aria-label": ariaLabel || `Progress: ${Math.round(percentage)}%`,
797
814
  className: cn(
798
- "relative h-2 w-full overflow-hidden rounded-none bg-accent",
815
+ "relative h-2 w-full overflow-hidden rounded-full bg-accent",
799
816
  className
800
817
  ),
801
818
  ...props,
@@ -828,7 +845,7 @@ var Checkbox = (0, import_react9.forwardRef)(({ className, indeterminate, ...pro
828
845
  className: cn(
829
846
  // Resting border uses border-input (a visible 3:1 boundary); the checked
830
847
  // state switches to border-primary below, keeping the two states distinct.
831
- "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",
848
+ "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",
832
849
  className
833
850
  ),
834
851
  ...props,
@@ -870,11 +887,15 @@ var RadioGroupItem = (0, import_react10.forwardRef)(({ className, ...props }, re
870
887
  // (~5% opacity, effectively invisible); hover strengthens above the resting state.
871
888
  // Resting border uses border-input (a visible 3:1 boundary); the checked
872
889
  // state switches to border-primary below, keeping the two states distinct.
873
- "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]",
890
+ // rounded-full is fixed rather than derived from --radius: the circle is
891
+ // what tells the user only one option can be chosen. The thick checked
892
+ // border leaves a background-coloured core, and because the border's
893
+ // inner edge is curved too that core reads as a round dot.
894
+ "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]",
874
895
  className
875
896
  ),
876
897
  ...props,
877
- children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(RadioGroupPrimitive.Indicator, {})
898
+ children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(RadioGroupPrimitive.Indicator, { className: "block size-full rounded-full" })
878
899
  }
879
900
  );
880
901
  });
@@ -889,7 +910,7 @@ function Switch({ className, ...props }) {
889
910
  {
890
911
  "data-slot": "switch",
891
912
  className: cn(
892
- "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",
913
+ "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",
893
914
  "data-[state=checked]:bg-primary data-[state=checked]:border-primary!",
894
915
  "data-[state=unchecked]:bg-input data-[state=unchecked]:border-border dark:data-[state=unchecked]:bg-input/80",
895
916
  className
@@ -900,7 +921,7 @@ function Switch({ className, ...props }) {
900
921
  {
901
922
  "data-slot": "switch-thumb",
902
923
  className: cn(
903
- "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"
924
+ "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"
904
925
  )
905
926
  }
906
927
  )
@@ -971,7 +992,7 @@ var import_class_variance_authority7 = require("class-variance-authority");
971
992
  var import_react12 = require("react");
972
993
  var import_jsx_runtime19 = require("react/jsx-runtime");
973
994
  var avatarVariants = (0, import_class_variance_authority7.cva)(
974
- "relative inline-flex shrink-0 overflow-hidden rounded-none items-center justify-center bg-primary/5 text-muted-foreground",
995
+ "relative inline-flex shrink-0 overflow-hidden rounded-full items-center justify-center bg-primary/5 text-muted-foreground",
975
996
  {
976
997
  variants: {
977
998
  size: {
@@ -1038,7 +1059,7 @@ var AvatarFallback = (0, import_react12.forwardRef)(
1038
1059
  ref,
1039
1060
  "data-slot": "avatar-fallback",
1040
1061
  className: cn(
1041
- "bg-primary/5 text-muted-foreground flex size-full items-center justify-center rounded-none font-medium",
1062
+ "bg-primary/5 text-muted-foreground flex size-full items-center justify-center rounded-full font-medium",
1042
1063
  textSize,
1043
1064
  className
1044
1065
  ),
@@ -1062,6 +1083,7 @@ var TabsList = (0, import_react13.forwardRef)(
1062
1083
  ref,
1063
1084
  "data-slot": "tabs-list",
1064
1085
  className: cn(
1086
+ // Square corners: underline tabs, so the list never draws a rounded surface.
1065
1087
  "inline-flex h-10 items-center justify-center gap-1 rounded-none p-0 text-muted-foreground",
1066
1088
  className
1067
1089
  ),
@@ -1077,6 +1099,8 @@ var TabsTrigger = (0, import_react13.forwardRef)(
1077
1099
  ref,
1078
1100
  "data-slot": "tabs-trigger",
1079
1101
  className: cn(
1102
+ // Square corners: the active state is a 2px bottom border that has to
1103
+ // run the full width of the trigger.
1080
1104
  "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",
1081
1105
  className
1082
1106
  ),
@@ -1118,7 +1142,7 @@ var PopoverContent = React5.forwardRef(({ className, align = "center", sideOffse
1118
1142
  sideOffset,
1119
1143
  "data-slot": "popover-content",
1120
1144
  className: cn(
1121
- "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]",
1145
+ "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]",
1122
1146
  className
1123
1147
  ),
1124
1148
  ...props
@@ -1143,6 +1167,9 @@ var DialogOverlay = (0, import_react14.forwardRef)(({ className, ...props }, ref
1143
1167
  ref,
1144
1168
  "data-slot": "dialog-overlay",
1145
1169
  className: cn(
1170
+ // A modal scrim: a black wash is the point, so it stays a literal
1171
+ // rather than a surface token. Painting it from `background` would
1172
+ // make it a white veil in light mode and near-invisible in dark.
1146
1173
  "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",
1147
1174
  className
1148
1175
  ),
@@ -1174,7 +1201,7 @@ var DialogContent = (0, import_react14.forwardRef)(({ className, children, size,
1174
1201
  ref,
1175
1202
  "data-slot": "dialog-content",
1176
1203
  className: cn(
1177
- "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%]",
1204
+ "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%]",
1178
1205
  dialogContentVariants({ size }),
1179
1206
  className
1180
1207
  ),
@@ -1185,7 +1212,7 @@ var DialogContent = (0, import_react14.forwardRef)(({ className, children, size,
1185
1212
  DialogPrimitive.Close,
1186
1213
  {
1187
1214
  "data-slot": "dialog-close",
1188
- 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",
1215
+ 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",
1189
1216
  children: [
1190
1217
  /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_lucide_react4.X, { className: "h-4 w-4" }),
1191
1218
  /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "sr-only", children: "Close" })
@@ -1260,6 +1287,9 @@ var AlertDialogOverlay = (0, import_react15.forwardRef)(({ className, ...props }
1260
1287
  {
1261
1288
  ref,
1262
1289
  className: cn(
1290
+ // A modal scrim: a black wash is the point, so it stays a literal
1291
+ // rather than a surface token. Painting it from `background` would
1292
+ // make it a white veil in light mode and near-invisible in dark.
1263
1293
  "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",
1264
1294
  className
1265
1295
  ),
@@ -1276,7 +1306,7 @@ var AlertDialogContent = (0, import_react15.forwardRef)(({ className, ...props }
1276
1306
  {
1277
1307
  ref,
1278
1308
  className: cn(
1279
- "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%]",
1309
+ "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%]",
1280
1310
  className
1281
1311
  ),
1282
1312
  ...props
@@ -1376,7 +1406,7 @@ var DropdownMenuSubTrigger = React6.forwardRef(({ className, inset, children, ..
1376
1406
  {
1377
1407
  ref,
1378
1408
  className: cn(
1379
- "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",
1409
+ "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",
1380
1410
  menuItemBase,
1381
1411
  inset && "pl-8",
1382
1412
  className
@@ -1394,7 +1424,7 @@ var DropdownMenuSubContent = React6.forwardRef(({ className, ...props }, ref) =>
1394
1424
  {
1395
1425
  ref,
1396
1426
  className: cn(
1397
- "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]",
1427
+ "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]",
1398
1428
  className
1399
1429
  ),
1400
1430
  ...props
@@ -1409,7 +1439,7 @@ var DropdownMenuContent = React6.forwardRef(({ className, sideOffset = 4, ...pro
1409
1439
  ref,
1410
1440
  sideOffset,
1411
1441
  className: cn(
1412
- "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]",
1442
+ "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]",
1413
1443
  className
1414
1444
  ),
1415
1445
  ...props
@@ -1422,7 +1452,7 @@ var DropdownMenuItem = React6.forwardRef(({ className, inset, ...props }, ref) =
1422
1452
  {
1423
1453
  ref,
1424
1454
  className: cn(
1425
- "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",
1455
+ "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",
1426
1456
  menuItemBase,
1427
1457
  inset && "pl-8",
1428
1458
  className
@@ -1436,7 +1466,7 @@ var DropdownMenuCheckboxItem = React6.forwardRef(({ className, children, checked
1436
1466
  {
1437
1467
  ref,
1438
1468
  className: cn(
1439
- "relative flex select-none items-center rounded-none py-1.5 pl-8 pr-2 text-sm outline-none",
1469
+ "relative flex select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none",
1440
1470
  menuItemBase,
1441
1471
  className
1442
1472
  ),
@@ -1454,7 +1484,7 @@ var DropdownMenuRadioItem = React6.forwardRef(({ className, children, ...props }
1454
1484
  {
1455
1485
  ref,
1456
1486
  className: cn(
1457
- "relative flex select-none items-center rounded-none py-1.5 pl-8 pr-2 text-sm outline-none",
1487
+ "relative flex select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none",
1458
1488
  menuItemBase,
1459
1489
  className
1460
1490
  ),
@@ -1522,7 +1552,7 @@ function SelectValue({
1522
1552
  var selectTriggerVariants = (0, import_class_variance_authority9.cva)(
1523
1553
  // hover:border-primary (full strength) keeps the hover boundary more visible
1524
1554
  // than the resting border-input, not a fainter alpha of it.
1525
- "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",
1555
+ "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",
1526
1556
  {
1527
1557
  variants: {
1528
1558
  size: {
@@ -1564,7 +1594,7 @@ function SelectContent({
1564
1594
  {
1565
1595
  "data-slot": "select-content",
1566
1596
  className: cn(
1567
- "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",
1597
+ "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",
1568
1598
  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",
1569
1599
  className
1570
1600
  ),
@@ -1610,7 +1640,7 @@ function SelectItem({
1610
1640
  {
1611
1641
  "data-slot": "select-item",
1612
1642
  className: cn(
1613
- "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",
1643
+ "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",
1614
1644
  className
1615
1645
  ),
1616
1646
  ...props,
@@ -1682,6 +1712,9 @@ var SheetOverlay = React7.forwardRef(({ className, ...props }, ref) => /* @__PUR
1682
1712
  DialogPrimitive2.Overlay,
1683
1713
  {
1684
1714
  className: cn(
1715
+ // A modal scrim: a black wash is the point, so it stays a literal
1716
+ // rather than a surface token. Painting it from `background` would
1717
+ // make it a white veil in light mode and near-invisible in dark.
1685
1718
  "fixed inset-0 z-50 bg-black/50 backdrop-blur-sm",
1686
1719
  "data-[state=open]:animate-in data-[state=closed]:animate-out",
1687
1720
  "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
@@ -1784,7 +1817,7 @@ var Command = (0, import_react17.forwardRef)(
1784
1817
  {
1785
1818
  ref,
1786
1819
  className: cn(
1787
- "flex h-full w-full flex-col overflow-hidden rounded-none bg-background text-foreground",
1820
+ "flex h-full w-full flex-col overflow-hidden rounded-lg bg-background text-foreground",
1788
1821
  className
1789
1822
  ),
1790
1823
  ...props
@@ -1797,6 +1830,9 @@ var CommandDialogOverlay = (0, import_react17.forwardRef)(({ className, ...props
1797
1830
  {
1798
1831
  ref,
1799
1832
  className: cn(
1833
+ // A modal scrim: a black wash is the point, so it stays a literal
1834
+ // rather than a surface token. Painting it from `background` would
1835
+ // make it a white veil in light mode and near-invisible in dark.
1800
1836
  "fixed inset-0 z-[99] bg-black/80 backdrop-blur-sm",
1801
1837
  "data-[state=open]:animate-in data-[state=closed]:animate-out",
1802
1838
  "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
@@ -1831,7 +1867,7 @@ var CommandDialog = ({ children, ...props }) => {
1831
1867
  "m-4 sm:m-0",
1832
1868
  // 16px margin on mobile, no margin on desktop
1833
1869
  // Visual
1834
- "overflow-hidden rounded-none border border-border bg-background shadow-xl",
1870
+ "overflow-hidden rounded-lg border border-border bg-background shadow-xl",
1835
1871
  // Animation
1836
1872
  "duration-200",
1837
1873
  "data-[state=open]:animate-in data-[state=closed]:animate-out",
@@ -1937,7 +1973,7 @@ var CommandItem = (0, import_react17.forwardRef)(({ className, ...props }, ref)
1937
1973
  // Spacing
1938
1974
  "px-3 py-2.5",
1939
1975
  // Visual
1940
- "rounded-none text-base sm:text-sm outline-none",
1976
+ "rounded-sm text-base sm:text-sm outline-none",
1941
1977
  // Transitions
1942
1978
  "transition-all duration-200 ease-(--ease-premium)",
1943
1979
  // Hover state - shared dashboard hover treatment
@@ -1966,7 +2002,7 @@ var CommandShortcut = (0, import_react17.forwardRef)(
1966
2002
  "text-xs font-mono",
1967
2003
  // Visual
1968
2004
  "text-muted-foreground bg-primary/5",
1969
- "border border-border rounded-none",
2005
+ "border border-border rounded-md",
1970
2006
  // Spacing
1971
2007
  "px-1.5 py-0.5",
1972
2008
  className
@@ -2155,7 +2191,7 @@ function TableSearch({
2155
2191
  value,
2156
2192
  onChange: (e) => onChange(e.target.value),
2157
2193
  "aria-busy": isLoading,
2158
- 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"
2194
+ 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"
2159
2195
  }
2160
2196
  ),
2161
2197
  (value || isLoading) && /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: "absolute right-3 top-1/2 -translate-y-1/2 flex items-center gap-2", children: [
@@ -2165,7 +2201,7 @@ function TableSearch({
2165
2201
  {
2166
2202
  type: "button",
2167
2203
  onClick: onClear,
2168
- className: "text-muted-foreground hover:text-foreground transition-colors p-0.5 rounded-none hover:bg-primary/5",
2204
+ className: "text-muted-foreground hover:text-foreground transition-colors p-0.5 rounded-md hover:bg-primary/5",
2169
2205
  "aria-label": "Clear search",
2170
2206
  children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_lucide_react10.X, { className: "w-3.5 h-3.5" })
2171
2207
  }
@@ -2193,7 +2229,7 @@ function TableLoading() {
2193
2229
  }
2194
2230
  function TableEmpty({ message = "No records found" }) {
2195
2231
  return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "flex flex-col items-center justify-center gap-4 p-16 text-center text-muted-foreground", children: [
2196
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "flex h-12 w-12 items-center justify-center rounded-none bg-primary/5", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react11.FileQuestion, { className: "h-6 w-6" }) }),
2232
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "flex h-12 w-12 items-center justify-center rounded-md bg-primary/5", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react11.FileQuestion, { className: "h-6 w-6" }) }),
2197
2233
  /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "text-sm font-medium", children: message })
2198
2234
  ] });
2199
2235
  }
@@ -2209,9 +2245,9 @@ var TableSkeleton = ({
2209
2245
  }) => {
2210
2246
  const content = /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_jsx_runtime33.Fragment, { children: [
2211
2247
  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "border-0 rounded-none shadow-none", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(Table, { children: [
2212
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableRow, { children: Array.from({ length: columns }).map((_, colIdx) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableHead, { className: "py-3", children: colIdx === 0 ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(GrayBar, { className: "h-4 w-4" }) : colIdx === columns - 1 ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "flex justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Skeleton, { className: "h-4 w-4 rounded-none" }) }) : colIdx === 1 ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(GrayBar, { className: "h-4 w-[70%] max-w-[180px]" }) : /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(GrayBar, { className: "h-4 w-[60%] max-w-[120px]" }) }, `skeleton-header-${colIdx}`)) }) }),
2213
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableBody, { children: Array.from({ length: rowCount }).map((_, rowIdx) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableRow, { className: "border-b border-border", children: Array.from({ length: columns }).map((_2, colIdx) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableCell, { className: "py-3", children: colIdx === 0 ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(GrayBar, { className: "h-4 w-4" }) : colIdx === columns - 1 ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "flex justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Skeleton, { className: "h-8 w-8 rounded-none" }) }) : colIdx === 1 ? /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "flex items-center gap-3", children: [
2214
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Skeleton, { className: "w-9 rounded-none shrink-0" }),
2248
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableRow, { children: Array.from({ length: columns }).map((_, colIdx) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableHead, { className: "py-3", children: colIdx === 0 ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(GrayBar, { className: "h-4 w-4" }) : colIdx === columns - 1 ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "flex justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Skeleton, { className: "h-4 w-4 rounded-sm" }) }) : colIdx === 1 ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(GrayBar, { className: "h-4 w-[70%] max-w-[180px]" }) : /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(GrayBar, { className: "h-4 w-[60%] max-w-[120px]" }) }, `skeleton-header-${colIdx}`)) }) }),
2249
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableBody, { children: Array.from({ length: rowCount }).map((_, rowIdx) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableRow, { className: "border-b border-border", children: Array.from({ length: columns }).map((_2, colIdx) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableCell, { className: "py-3", children: colIdx === 0 ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(GrayBar, { className: "h-4 w-4" }) : colIdx === columns - 1 ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "flex justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Skeleton, { className: "h-8 w-8 rounded-md" }) }) : colIdx === 1 ? /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "flex items-center gap-3", children: [
2250
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Skeleton, { className: "w-9 rounded-md shrink-0" }),
2215
2251
  /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "space-y-1.5 flex-1", children: [
2216
2252
  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Skeleton, { className: "h-4 w-[120px]" }),
2217
2253
  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Skeleton, { className: "h-3 w-[80px]" })
@@ -2239,7 +2275,7 @@ var TableSkeleton = ({
2239
2275
  if (hideWrapper) {
2240
2276
  return content;
2241
2277
  }
2242
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "table-wrapper rounded-none border border-border bg-card overflow-hidden", children: content });
2278
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "table-wrapper rounded-md border border-border bg-card overflow-hidden", children: content });
2243
2279
  };
2244
2280
  TableSkeleton.displayName = "TableSkeleton";
2245
2281
  // Annotate the CommonJS export names for ESM import in node: