@maxsteinwender/sort-ui 1.0.8 → 1.1.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.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import * as React77 from 'react';
2
+ import * as React78 from 'react';
3
3
  import * as AccordionPrimitive from '@radix-ui/react-accordion';
4
4
  import { cva } from 'class-variance-authority';
5
5
  import { clsx } from 'clsx';
@@ -79,11 +79,11 @@ var accordionItemVariants = cva(
79
79
  "shadow-card",
80
80
  /* inset bottom shadow via combined card token */
81
81
  "relative after:pointer-events-none after:absolute after:inset-0 after:rounded-[inherit]",
82
- "hover:bg-sui-bg-state-secondary-hover"
82
+ "[@media(hover:hover)]:hover:bg-sui-bg-state-secondary-hover"
83
83
  ],
84
84
  soft: [
85
85
  "bg-sui-bg-state-soft rounded-card-sm",
86
- "hover:bg-sui-bg-state-soft-hover",
86
+ "[@media(hover:hover)]:hover:bg-sui-bg-state-soft-hover",
87
87
  /* always-present border prevents layout shift on open */
88
88
  "border border-transparent",
89
89
  /* opened → switches to secondary/card appearance */
@@ -92,11 +92,11 @@ var accordionItemVariants = cva(
92
92
  "data-[state=open]:border-sui-border-default",
93
93
  "data-[state=open]:shadow-card",
94
94
  "data-[state=open]:after:shadow-none",
95
- "data-[state=open]:hover:bg-sui-bg-state-secondary-hover"
95
+ "data-[state=open]:[@media(hover:hover)]:hover:bg-sui-bg-state-secondary-hover"
96
96
  ],
97
97
  ghost: [
98
98
  "bg-sui-bg-state-ghost rounded-card-sm",
99
- "hover:bg-sui-bg-state-ghost-hover",
99
+ "[@media(hover:hover)]:hover:bg-sui-bg-state-ghost-hover",
100
100
  /* always-present border prevents layout shift on open */
101
101
  "border border-transparent",
102
102
  /* opened → switches to secondary/card appearance */
@@ -105,11 +105,11 @@ var accordionItemVariants = cva(
105
105
  "data-[state=open]:border-sui-border-default",
106
106
  "data-[state=open]:shadow-card",
107
107
  "data-[state=open]:after:shadow-none",
108
- "data-[state=open]:hover:bg-sui-bg-state-secondary-hover"
108
+ "data-[state=open]:[@media(hover:hover)]:hover:bg-sui-bg-state-secondary-hover"
109
109
  ],
110
110
  line: [
111
111
  "border-b border-sui-border-default",
112
- "hover:border-sui-border-strong"
112
+ "[@media(hover:hover)]:hover:border-sui-border-strong"
113
113
  ]
114
114
  }
115
115
  },
@@ -118,7 +118,7 @@ var accordionItemVariants = cva(
118
118
  }
119
119
  }
120
120
  );
121
- var AccordionItem = React77.forwardRef((_a, ref) => {
121
+ var AccordionItem = React78.forwardRef((_a, ref) => {
122
122
  var _b = _a, { className, variant } = _b, props = __objRest(_b, ["className", "variant"]);
123
123
  return /* @__PURE__ */ jsx(
124
124
  AccordionPrimitive.Item,
@@ -129,7 +129,7 @@ var AccordionItem = React77.forwardRef((_a, ref) => {
129
129
  );
130
130
  });
131
131
  AccordionItem.displayName = "AccordionItem";
132
- var AccordionTrigger = React77.forwardRef((_a, ref) => {
132
+ var AccordionTrigger = React78.forwardRef((_a, ref) => {
133
133
  var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
134
134
  return /* @__PURE__ */ jsx(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
135
135
  AccordionPrimitive.Trigger,
@@ -151,7 +151,7 @@ var AccordionTrigger = React77.forwardRef((_a, ref) => {
151
151
  ) });
152
152
  });
153
153
  AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
154
- var AccordionContent = React77.forwardRef((_a, ref) => {
154
+ var AccordionContent = React78.forwardRef((_a, ref) => {
155
155
  var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
156
156
  return /* @__PURE__ */ jsx(
157
157
  AccordionPrimitive.Content,
@@ -196,7 +196,7 @@ var alertVariants = cva(
196
196
  }
197
197
  }
198
198
  );
199
- var Alert = React77.forwardRef((_a, ref) => {
199
+ var Alert = React78.forwardRef((_a, ref) => {
200
200
  var _b = _a, { className, variant } = _b, props = __objRest(_b, ["className", "variant"]);
201
201
  return /* @__PURE__ */ jsx(
202
202
  "div",
@@ -208,7 +208,7 @@ var Alert = React77.forwardRef((_a, ref) => {
208
208
  );
209
209
  });
210
210
  Alert.displayName = "Alert";
211
- var AlertTitle = React77.forwardRef((_a, ref) => {
211
+ var AlertTitle = React78.forwardRef((_a, ref) => {
212
212
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
213
213
  return /* @__PURE__ */ jsx(
214
214
  "h5",
@@ -219,7 +219,7 @@ var AlertTitle = React77.forwardRef((_a, ref) => {
219
219
  );
220
220
  });
221
221
  AlertTitle.displayName = "AlertTitle";
222
- var AlertDescription = React77.forwardRef((_a, ref) => {
222
+ var AlertDescription = React78.forwardRef((_a, ref) => {
223
223
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
224
224
  return /* @__PURE__ */ jsx(
225
225
  "div",
@@ -230,6 +230,19 @@ var AlertDescription = React77.forwardRef((_a, ref) => {
230
230
  );
231
231
  });
232
232
  AlertDescription.displayName = "AlertDescription";
233
+ function useDevWarnIconOnlyAriaLabel(isIconOnly, ariaLabel, ariaLabelledBy, componentName) {
234
+ const warnedRef = React78.useRef(false);
235
+ React78.useEffect(() => {
236
+ if (process.env.NODE_ENV === "production") return;
237
+ if (warnedRef.current) return;
238
+ if (!isIconOnly) return;
239
+ if (ariaLabel || ariaLabelledBy) return;
240
+ console.warn(
241
+ `[Sort UI] <${componentName}> with iconOnly is missing an aria-label. Screen reader users will have no accessible name for this control. Pass aria-label (or aria-labelledby) describing the action. See Web Interface Guidelines #47.`
242
+ );
243
+ warnedRef.current = true;
244
+ }, [isIconOnly, ariaLabel, ariaLabelledBy, componentName]);
245
+ }
233
246
  var buttonVariants = cva(
234
247
  // Sort UI base: font-medium, Remixicon via [&_i], SVG via [&_svg]; shape variant controls border-radius
235
248
  // ghost + ghost-muted hover intentionally identical per Sort UI spec
@@ -349,13 +362,13 @@ var loadingTextColorMap = {
349
362
  "ghost-muted": "text-sui-text-muted"
350
363
  };
351
364
  var loadingShadowVariants = /* @__PURE__ */ new Set(["default", "outline", "destructive"]);
352
- var Button = React77.forwardRef(
353
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
365
+ var Button = React78.forwardRef(
354
366
  (_a, ref) => {
355
367
  var _b = _a, { className, variant, size, shape, iconOnly, loading, leadIcon: _leadIcon, tailIcon: _tailIcon, badgeLeft: _badgeLeft, badgeRight: _badgeRight, asChild = false, children, showSeparator: _showSeparator } = _b, props = __objRest(_b, ["className", "variant", "size", "shape", "iconOnly", "loading", "leadIcon", "tailIcon", "badgeLeft", "badgeRight", "asChild", "children", "showSeparator"]);
356
368
  const Comp = asChild ? Slot : "button";
357
369
  const resolvedSize = size != null ? size : "lg";
358
370
  const resolvedVariant = variant != null ? variant : "default";
371
+ useDevWarnIconOnlyAriaLabel(iconOnly, props["aria-label"], props["aria-labelledby"], "Button");
359
372
  const isLoading = loading && !asChild;
360
373
  const hasBadges = !iconOnly && !asChild;
361
374
  const badgeColor = badgeColorMap[resolvedVariant];
@@ -420,7 +433,7 @@ Button.displayName = "Button";
420
433
  var AlertDialog = AlertDialogPrimitive.Root;
421
434
  var AlertDialogTrigger = AlertDialogPrimitive.Trigger;
422
435
  var AlertDialogPortal = AlertDialogPrimitive.Portal;
423
- var AlertDialogOverlay = React77.forwardRef((_a, ref) => {
436
+ var AlertDialogOverlay = React78.forwardRef((_a, ref) => {
424
437
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
425
438
  return /* @__PURE__ */ jsx(
426
439
  AlertDialogPrimitive.Overlay,
@@ -435,7 +448,7 @@ var AlertDialogOverlay = React77.forwardRef((_a, ref) => {
435
448
  );
436
449
  });
437
450
  AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
438
- var AlertDialogContent = React77.forwardRef((_a, ref) => {
451
+ var AlertDialogContent = React78.forwardRef((_a, ref) => {
439
452
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
440
453
  return /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [
441
454
  /* @__PURE__ */ jsx(AlertDialogOverlay, {}),
@@ -486,7 +499,7 @@ var AlertDialogFooter = (_a) => {
486
499
  );
487
500
  };
488
501
  AlertDialogFooter.displayName = "AlertDialogFooter";
489
- var AlertDialogTitle = React77.forwardRef((_a, ref) => {
502
+ var AlertDialogTitle = React78.forwardRef((_a, ref) => {
490
503
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
491
504
  return /* @__PURE__ */ jsx(
492
505
  AlertDialogPrimitive.Title,
@@ -497,7 +510,7 @@ var AlertDialogTitle = React77.forwardRef((_a, ref) => {
497
510
  );
498
511
  });
499
512
  AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
500
- var AlertDialogDescription = React77.forwardRef((_a, ref) => {
513
+ var AlertDialogDescription = React78.forwardRef((_a, ref) => {
501
514
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
502
515
  return /* @__PURE__ */ jsx(
503
516
  AlertDialogPrimitive.Description,
@@ -508,7 +521,7 @@ var AlertDialogDescription = React77.forwardRef((_a, ref) => {
508
521
  );
509
522
  });
510
523
  AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;
511
- var AlertDialogAction = React77.forwardRef((_a, ref) => {
524
+ var AlertDialogAction = React78.forwardRef((_a, ref) => {
512
525
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
513
526
  return /* @__PURE__ */ jsx(
514
527
  AlertDialogPrimitive.Action,
@@ -519,7 +532,7 @@ var AlertDialogAction = React77.forwardRef((_a, ref) => {
519
532
  );
520
533
  });
521
534
  AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
522
- var AlertDialogCancel = React77.forwardRef((_a, ref) => {
535
+ var AlertDialogCancel = React78.forwardRef((_a, ref) => {
523
536
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
524
537
  return /* @__PURE__ */ jsx(
525
538
  AlertDialogPrimitive.Cancel,
@@ -558,11 +571,11 @@ var awayIconSize = {
558
571
  "lg": "14px",
559
572
  "default": "16px"
560
573
  };
561
- var StatusBadge = React77.forwardRef(
574
+ var StatusBadge = React78.forwardRef(
562
575
  (_a, ref) => {
563
576
  var _b = _a, { variant, size = "default", src, className } = _b, props = __objRest(_b, ["variant", "size", "src", "className"]);
564
- const [imgError, setImgError] = React77.useState(false);
565
- React77.useEffect(() => {
577
+ const [imgError, setImgError] = React78.useState(false);
578
+ React78.useEffect(() => {
566
579
  setImgError(false);
567
580
  }, [src]);
568
581
  const sizeClass = containerSize[size];
@@ -775,12 +788,12 @@ function extractInitials(value) {
775
788
  }
776
789
  return trimmed.slice(0, 2).toUpperCase();
777
790
  }
778
- var AvatarContext = React77.createContext({
791
+ var AvatarContext = React78.createContext({
779
792
  size: "md",
780
793
  shape: "circular",
781
794
  color: "gray"
782
795
  });
783
- var Avatar = React77.forwardRef((_a, ref) => {
796
+ var Avatar = React78.forwardRef((_a, ref) => {
784
797
  var _b = _a, {
785
798
  className,
786
799
  size = "md",
@@ -934,7 +947,7 @@ var Avatar = React77.forwardRef((_a, ref) => {
934
947
  ) });
935
948
  });
936
949
  Avatar.displayName = "Avatar";
937
- var AvatarImage = React77.forwardRef((_a, ref) => {
950
+ var AvatarImage = React78.forwardRef((_a, ref) => {
938
951
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
939
952
  return /* @__PURE__ */ jsx(
940
953
  AvatarPrimitive.Image,
@@ -945,10 +958,10 @@ var AvatarImage = React77.forwardRef((_a, ref) => {
945
958
  );
946
959
  });
947
960
  AvatarImage.displayName = "AvatarImage";
948
- var AvatarFallback = React77.forwardRef((_a, ref) => {
961
+ var AvatarFallback = React78.forwardRef((_a, ref) => {
949
962
  var _b = _a, { className, fallback, children } = _b, props = __objRest(_b, ["className", "fallback", "children"]);
950
963
  var _a2, _b2, _c;
951
- const { size, shape, color } = React77.useContext(AvatarContext);
964
+ const { size, shape, color } = React78.useContext(AvatarContext);
952
965
  const shapeClass = shape === "rounded" ? "rounded-sm" : "rounded-full";
953
966
  const fontClass = (_a2 = initialsFontSize[size]) != null ? _a2 : "text-sm";
954
967
  const iconClass = (_b2 = iconSize[size]) != null ? _b2 : "text-lg";
@@ -982,8 +995,8 @@ var avatarButtonVariants = cva(
982
995
  {
983
996
  variants: {
984
997
  variant: {
985
- default: "bg-sui-bg-state-secondary border border-sui-border-darker shadow-default hover:bg-sui-bg-state-secondary-hover active:bg-sui-bg-state-secondary-press disabled:bg-sui-bg-state-disabled disabled:border-sui-border-default disabled:shadow-none",
986
- soft: "bg-sui-bg-state-soft hover:bg-sui-bg-state-soft-hover active:bg-sui-bg-state-soft-press"
998
+ default: "bg-sui-bg-state-secondary border border-sui-border-darker shadow-default [@media(hover:hover)]:hover:bg-sui-bg-state-secondary-hover active:bg-sui-bg-state-secondary-press disabled:bg-sui-bg-state-disabled disabled:border-sui-border-default disabled:shadow-none",
999
+ soft: "bg-sui-bg-state-soft [@media(hover:hover)]:hover:bg-sui-bg-state-soft-hover active:bg-sui-bg-state-soft-press"
987
1000
  },
988
1001
  size: {
989
1002
  // py-1.5 (6px × 2) + avatar 20px = 32px visible; after:-inset-y-1.5 adds 6px top+bottom → 44px hit area
@@ -998,7 +1011,7 @@ var avatarButtonVariants = cva(
998
1011
  }
999
1012
  }
1000
1013
  );
1001
- var AvatarButton = React77.forwardRef(
1014
+ var AvatarButton = React78.forwardRef(
1002
1015
  (_a, ref) => {
1003
1016
  var _b = _a, {
1004
1017
  className,
@@ -1092,7 +1105,7 @@ var paddingBySize = {
1092
1105
  "2xl": "pr-sui-10",
1093
1106
  "3xl": "pr-sui-12"
1094
1107
  };
1095
- var AvatarGroup = React77.forwardRef(
1108
+ var AvatarGroup = React78.forwardRef(
1096
1109
  (_a, ref) => {
1097
1110
  var _b = _a, { className, size = "md", stacking = "last-on-top", items } = _b, props = __objRest(_b, ["className", "size", "stacking", "items"]);
1098
1111
  const isFirstOnTop = stacking === "first-on-top";
@@ -1134,7 +1147,7 @@ var AvatarGroup = React77.forwardRef(
1134
1147
  }
1135
1148
  );
1136
1149
  AvatarGroup.displayName = "AvatarGroup";
1137
- var AvatarUpload = React77.forwardRef(
1150
+ var AvatarUpload = React78.forwardRef(
1138
1151
  ({
1139
1152
  src,
1140
1153
  alt = "",
@@ -1202,8 +1215,8 @@ var controlButtonVariants = cva(
1202
1215
  {
1203
1216
  variants: {
1204
1217
  variant: {
1205
- default: "text-icon-default-muted bg-transparent hover:bg-sui-bg-state-ghost-hover active:bg-sui-bg-state-ghost-press",
1206
- inverted: "text-icon-inverted-default bg-transparent hover:bg-sui-bg-state-ghost-hover-inverted active:bg-sui-bg-state-ghost-press-inverted"
1218
+ default: "text-icon-default-muted bg-transparent [@media(hover:hover)]:hover:bg-sui-bg-state-ghost-hover active:bg-sui-bg-state-ghost-press",
1219
+ inverted: "text-icon-inverted-default bg-transparent [@media(hover:hover)]:hover:bg-sui-bg-state-ghost-hover-inverted active:bg-sui-bg-state-ghost-press-inverted"
1207
1220
  },
1208
1221
  size: {
1209
1222
  // lg: 24px — meets WCAG 2.5.8 AA minimum (24×24px)
@@ -1227,7 +1240,7 @@ var controlButtonVariants = cva(
1227
1240
  }
1228
1241
  }
1229
1242
  );
1230
- var ControlButton = React77.forwardRef(
1243
+ var ControlButton = React78.forwardRef(
1231
1244
  (_a, ref) => {
1232
1245
  var _b = _a, {
1233
1246
  className,
@@ -1395,12 +1408,12 @@ function Badge(_a) {
1395
1408
  })
1396
1409
  );
1397
1410
  }
1398
- var Breadcrumb = React77.forwardRef((_a, ref) => {
1411
+ var Breadcrumb = React78.forwardRef((_a, ref) => {
1399
1412
  var props = __objRest(_a, []);
1400
1413
  return /* @__PURE__ */ jsx("nav", __spreadValues({ ref, "aria-label": "breadcrumb" }, props));
1401
1414
  });
1402
1415
  Breadcrumb.displayName = "Breadcrumb";
1403
- var BreadcrumbList = React77.forwardRef((_a, ref) => {
1416
+ var BreadcrumbList = React78.forwardRef((_a, ref) => {
1404
1417
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1405
1418
  return /* @__PURE__ */ jsx(
1406
1419
  "ol",
@@ -1414,7 +1427,7 @@ var BreadcrumbList = React77.forwardRef((_a, ref) => {
1414
1427
  );
1415
1428
  });
1416
1429
  BreadcrumbList.displayName = "BreadcrumbList";
1417
- var BreadcrumbItem = React77.forwardRef((_a, ref) => {
1430
+ var BreadcrumbItem = React78.forwardRef((_a, ref) => {
1418
1431
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1419
1432
  return /* @__PURE__ */ jsx(
1420
1433
  "li",
@@ -1425,7 +1438,7 @@ var BreadcrumbItem = React77.forwardRef((_a, ref) => {
1425
1438
  );
1426
1439
  });
1427
1440
  BreadcrumbItem.displayName = "BreadcrumbItem";
1428
- var BreadcrumbLink = React77.forwardRef((_a, ref) => {
1441
+ var BreadcrumbLink = React78.forwardRef((_a, ref) => {
1429
1442
  var _b = _a, { asChild, className } = _b, props = __objRest(_b, ["asChild", "className"]);
1430
1443
  const Comp = asChild ? Slot : "a";
1431
1444
  return /* @__PURE__ */ jsx(
@@ -1433,14 +1446,15 @@ var BreadcrumbLink = React77.forwardRef((_a, ref) => {
1433
1446
  __spreadValues({
1434
1447
  ref,
1435
1448
  className: cn(
1436
- "rounded-sm transition-colors hover:text-sui-text-default focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-sui-border-highlight",
1449
+ // Web Interface Guidelines #42 — focus ring via box-shadow (ring), not outline.
1450
+ "rounded-sm transition-colors [@media(hover:hover)]:hover:text-sui-text-default focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-sui-border-highlight",
1437
1451
  className
1438
1452
  )
1439
1453
  }, props)
1440
1454
  );
1441
1455
  });
1442
1456
  BreadcrumbLink.displayName = "BreadcrumbLink";
1443
- var BreadcrumbPage = React77.forwardRef((_a, ref) => {
1457
+ var BreadcrumbPage = React78.forwardRef((_a, ref) => {
1444
1458
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1445
1459
  return /* @__PURE__ */ jsx(
1446
1460
  "span",
@@ -1512,7 +1526,7 @@ function BreadcrumbDivider({ variant }) {
1512
1526
  variant === "dot" && /* @__PURE__ */ jsx("span", { className: "size-1 rounded-full bg-sui-text-muted" })
1513
1527
  ] });
1514
1528
  }
1515
- var SortBreadcrumb = React77.forwardRef(
1529
+ var SortBreadcrumb = React78.forwardRef(
1516
1530
  ({ items, variant = "slash", className }, ref) => {
1517
1531
  return /* @__PURE__ */ jsx("nav", { ref, "aria-label": "Breadcrumb", children: /* @__PURE__ */ jsx(
1518
1532
  "ol",
@@ -1523,7 +1537,7 @@ var SortBreadcrumb = React77.forwardRef(
1523
1537
  ),
1524
1538
  children: items.map((item, index) => {
1525
1539
  const isLast = index === items.length - 1;
1526
- return /* @__PURE__ */ jsxs(React77.Fragment, { children: [
1540
+ return /* @__PURE__ */ jsxs(React78.Fragment, { children: [
1527
1541
  /* @__PURE__ */ jsx("li", { className: "inline-flex", children: /* @__PURE__ */ jsx(
1528
1542
  SortBreadcrumbItem,
1529
1543
  __spreadProps(__spreadValues({}, item), {
@@ -1559,7 +1573,8 @@ function SortBreadcrumbItem({
1559
1573
  className: cn(
1560
1574
  "inline-flex items-center select-none",
1561
1575
  type === "avatar" ? "gap-sui-6" : "gap-sui-4",
1562
- Comp === "a" && "rounded-sm focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring",
1576
+ // Web Interface Guidelines #42 focus ring via box-shadow (ring), not outline.
1577
+ Comp === "a" && "rounded-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sui-border-highlight focus-visible:ring-offset-2 focus-visible:ring-offset-sui-bg-default",
1563
1578
  className
1564
1579
  )
1565
1580
  }), isCurrent ? { "aria-current": "page" } : {}), {
@@ -1614,7 +1629,7 @@ var verticalChildRadius = {
1614
1629
  xs: "[&>button:first-child]:rounded-t-md [&>button:last-of-type]:rounded-b-md",
1615
1630
  "2xs": "[&>button:first-child]:rounded-t-sm [&>button:last-of-type]:rounded-b-sm"
1616
1631
  };
1617
- var ButtonGroup = React77.forwardRef(
1632
+ var ButtonGroup = React78.forwardRef(
1618
1633
  (_a, ref) => {
1619
1634
  var _b = _a, { size = "lg", orientation = "horizontal", className, children } = _b, props = __objRest(_b, ["size", "orientation", "className", "children"]);
1620
1635
  const isVertical = orientation === "vertical";
@@ -1633,9 +1648,9 @@ var ButtonGroup = React77.forwardRef(
1633
1648
  className
1634
1649
  )
1635
1650
  }, props), {
1636
- children: React77.Children.map(children, (child, index) => {
1637
- if (React77.isValidElement(child)) {
1638
- return React77.cloneElement(
1651
+ children: React78.Children.map(children, (child, index) => {
1652
+ if (React78.isValidElement(child)) {
1653
+ return React78.cloneElement(
1639
1654
  child,
1640
1655
  {
1641
1656
  showSeparator: index > 0,
@@ -1654,7 +1669,8 @@ var buttonGroupItemVariants = cva(
1654
1669
  // Base: layout, focus ring, icon sizing, transition
1655
1670
  [
1656
1671
  "relative inline-flex items-center justify-center select-none cursor-pointer transition-colors",
1657
- "focus-visible:outline focus-visible:outline-[3px] focus-visible:outline-sui-border-highlight focus-visible:outline-offset-[1px] focus-visible:z-10",
1672
+ // Web Interface Guidelines #42 — focus ring via box-shadow (ring), not outline, so it respects border-radius.
1673
+ "focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-sui-border-highlight focus-visible:ring-offset-[1px] focus-visible:z-10",
1658
1674
  "[&_i]:pointer-events-none [&_i]:shrink-0 [&_i]:text-md [&_i]:leading-[1] [&_i]:h-4",
1659
1675
  "[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:size-4"
1660
1676
  ],
@@ -1676,7 +1692,7 @@ var buttonGroupItemVariants = cva(
1676
1692
  var stateStyles = [
1677
1693
  "bg-sui-bg-state-ghost text-sui-text-subtle",
1678
1694
  "[&_i]:text-icon-default-muted [&_svg]:text-icon-default-muted",
1679
- "hover:bg-sui-bg-state-ghost-hover",
1695
+ "[@media(hover:hover)]:hover:bg-sui-bg-state-ghost-hover",
1680
1696
  "active:bg-sui-bg-state-ghost-press active:text-sui-text-default"
1681
1697
  ].join(" ");
1682
1698
  var disabledStyles = [
@@ -1704,7 +1720,7 @@ var badgeClasses = {
1704
1720
  xs: "text-xs font-medium leading-4 py-sui-2",
1705
1721
  "2xs": "text-xs font-medium leading-4 py-0"
1706
1722
  };
1707
- var ButtonGroupItem = React77.forwardRef(
1723
+ var ButtonGroupItem = React78.forwardRef(
1708
1724
  (_a, ref) => {
1709
1725
  var _b = _a, {
1710
1726
  label,
@@ -1731,6 +1747,7 @@ var ButtonGroupItem = React77.forwardRef(
1731
1747
  ]);
1732
1748
  const s = size != null ? size : "lg";
1733
1749
  const Comp = asChild ? Slot : "button";
1750
+ useDevWarnIconOnlyAriaLabel(iconOnly, props["aria-label"], props["aria-labelledby"], "ButtonGroupItem");
1734
1751
  return /* @__PURE__ */ jsxs(
1735
1752
  Comp,
1736
1753
  __spreadProps(__spreadValues({
@@ -1791,7 +1808,7 @@ var filterButtonVariants = cva(
1791
1808
  );
1792
1809
  var getVisualStateClasses = (selected) => selected ? "bg-sui-bg-state-secondary border border-solid border-sui-border-darker text-sui-text-muted [&_i]:text-icon-default-muted [&_svg]:text-icon-default-muted shadow-default" : "bg-sui-bg-state-secondary border border-dashed border-sui-border-darker text-sui-text-muted [&_i]:text-icon-default-muted [&_svg]:text-icon-default-muted";
1793
1810
  var SUB_BUTTON_FOCUS = "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sui-border-highlight focus-visible:ring-offset-1 rounded-sm";
1794
- var FilterButton = React77.forwardRef(
1811
+ var FilterButton = React78.forwardRef(
1795
1812
  (_a, ref) => {
1796
1813
  var _b = _a, {
1797
1814
  className,
@@ -1918,7 +1935,7 @@ var FilterButton = React77.forwardRef(
1918
1935
  className: cn(
1919
1936
  filterButtonVariants({ size, shape }),
1920
1937
  getVisualStateClasses(selected),
1921
- "hover:bg-sui-bg-state-secondary-hover active:bg-sui-bg-state-secondary-press",
1938
+ "[@media(hover:hover)]:hover:bg-sui-bg-state-secondary-hover active:bg-sui-bg-state-secondary-press",
1922
1939
  className
1923
1940
  ),
1924
1941
  ref,
@@ -1960,9 +1977,9 @@ var linkButtonVariants = cva(
1960
1977
  {
1961
1978
  variants: {
1962
1979
  variant: {
1963
- default: "text-sui-text-default hover:text-sui-text-muted",
1964
- muted: "text-sui-text-muted hover:text-sui-text-default",
1965
- informative: "text-sui-text-informative hover:text-sui-text-informative"
1980
+ default: "text-sui-text-default [@media(hover:hover)]:hover:text-sui-text-muted",
1981
+ muted: "text-sui-text-muted [@media(hover:hover)]:hover:text-sui-text-default",
1982
+ informative: "text-sui-text-informative [@media(hover:hover)]:hover:text-sui-text-informative"
1966
1983
  },
1967
1984
  size: {
1968
1985
  sm: "text-xs leading-4",
@@ -1981,11 +1998,18 @@ var underlineOffsetMap = {
1981
1998
  md: "after:bottom-0",
1982
1999
  lg: "after:bottom-0"
1983
2000
  };
1984
- var LinkButton = React77.forwardRef(
2001
+ var LinkButton = React78.forwardRef(
1985
2002
  (_a, ref) => {
1986
2003
  var _b = _a, { className, variant, size, asChild = false, leadIcon, tailIcon, disabled, children } = _b, props = __objRest(_b, ["className", "variant", "size", "asChild", "leadIcon", "tailIcon", "disabled", "children"]);
1987
2004
  const Comp = asChild ? Slot : "button";
1988
2005
  const resolvedSize = size != null ? size : "lg";
2006
+ const isIconOnly = (children == null || children === false || children === "") && Boolean(leadIcon || tailIcon);
2007
+ useDevWarnIconOnlyAriaLabel(
2008
+ isIconOnly,
2009
+ props["aria-label"],
2010
+ props["aria-labelledby"],
2011
+ "LinkButton"
2012
+ );
1989
2013
  const iconColor = disabled ? "text-icon-default-disabled" : variant === "informative" ? "text-icon-informative" : "text-icon-default-muted";
1990
2014
  const underlineColor = disabled ? "var(--border-darker)" : variant === "informative" ? "var(--border-informative)" : "var(--border-darker)";
1991
2015
  return /* @__PURE__ */ jsxs(
@@ -1997,8 +2021,9 @@ var LinkButton = React77.forwardRef(
1997
2021
  // pointer-events-none prevents click; aria-disabled="true" is set below.
1998
2022
  disabled && "pointer-events-none text-sui-text-hint",
1999
2023
  // Focus ring: encloses the full component (WCAG 2.4.11 AA).
2024
+ // Web Interface Guidelines #42 — box-shadow (ring) respects border-radius, outline did not pre-Safari 16.4.
2000
2025
  // focus-visible scopes to keyboard navigation only — no ring on mouse click.
2001
- "rounded-sm focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--border-informative)]",
2026
+ "rounded-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-[var(--border-informative)]",
2002
2027
  className
2003
2028
  ),
2004
2029
  ref,
@@ -2056,7 +2081,7 @@ var brandMap = {
2056
2081
  dropbox: { icon: "ri-dropbox-fill", label: "Dropbox", bg: "var(--social-brand-dropbox)" },
2057
2082
  github: { icon: "ri-github-fill", label: "Github" }
2058
2083
  };
2059
- var SocialButton = React77.forwardRef(
2084
+ var SocialButton = React78.forwardRef(
2060
2085
  (_a, ref) => {
2061
2086
  var _b = _a, { className, variant, shape, brand, iconOnly, asChild = false, children } = _b, props = __objRest(_b, ["className", "variant", "shape", "brand", "iconOnly", "asChild", "children"]);
2062
2087
  const Comp = asChild ? Slot : "button";
@@ -2261,8 +2286,8 @@ function CalendarDayButton(_a) {
2261
2286
  "modifiers"
2262
2287
  ]);
2263
2288
  const defaultClassNames = getDefaultClassNames();
2264
- const ref = React77.useRef(null);
2265
- React77.useEffect(() => {
2289
+ const ref = React78.useRef(null);
2290
+ React78.useEffect(() => {
2266
2291
  var _a2;
2267
2292
  if (modifiers.focused) (_a2 = ref.current) == null ? void 0 : _a2.focus();
2268
2293
  }, [modifiers.focused]);
@@ -2288,18 +2313,18 @@ function CalendarDayButton(_a) {
2288
2313
  // Default state
2289
2314
  "bg-sui-bg-state-ghost text-sui-text-default",
2290
2315
  // Hover
2291
- "hover:bg-sui-bg-state-ghost-hover",
2316
+ "[@media(hover:hover)]:hover:bg-sui-bg-state-ghost-hover",
2292
2317
  // Focus
2293
2318
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sui-border-highlight focus-visible:ring-offset-0",
2294
2319
  // Disabled
2295
2320
  "disabled:pointer-events-none disabled:text-sui-text-hint",
2296
2321
  // Selected (single date)
2297
- "data-[selected-single=true]:bg-sui-bg-state-brand data-[selected-single=true]:text-sui-text-white-default data-[selected-single=true]:hover:bg-sui-bg-state-brand-hover",
2322
+ "data-[selected-single=true]:bg-sui-bg-state-brand data-[selected-single=true]:text-sui-text-white-default data-[selected-single=true]:[@media(hover:hover)]:hover:bg-sui-bg-state-brand-hover",
2298
2323
  // Range start & end
2299
2324
  "data-[range-start=true]:bg-sui-bg-state-brand data-[range-start=true]:text-sui-text-white-default data-[range-start=true]:rounded-xs",
2300
2325
  "data-[range-end=true]:bg-sui-bg-state-brand data-[range-end=true]:text-sui-text-white-default data-[range-end=true]:rounded-xs",
2301
2326
  // Range middle
2302
- "data-[range-middle=true]:bg-sui-bg-state-soft data-[range-middle=true]:text-sui-text-informative data-[range-middle=true]:rounded-none data-[range-middle=true]:hover:bg-sui-bg-state-soft-hover",
2327
+ "data-[range-middle=true]:bg-sui-bg-state-soft data-[range-middle=true]:text-sui-text-informative data-[range-middle=true]:rounded-none data-[range-middle=true]:[@media(hover:hover)]:hover:bg-sui-bg-state-soft-hover",
2303
2328
  // Today indicator (red circle)
2304
2329
  "data-[today=true]:relative",
2305
2330
  // Focus ring on parent
@@ -2334,20 +2359,30 @@ var cardVariants = cva(
2334
2359
  }
2335
2360
  }
2336
2361
  );
2337
- var Card = React77.forwardRef(
2362
+ var Card = React78.forwardRef(
2338
2363
  (_a, ref) => {
2339
- var _b = _a, { className, variant } = _b, props = __objRest(_b, ["className", "variant"]);
2364
+ var _b = _a, { className, variant, interactive, asChild = false } = _b, props = __objRest(_b, ["className", "variant", "interactive", "asChild"]);
2365
+ const Comp = asChild ? Slot : "div";
2340
2366
  return /* @__PURE__ */ jsx(
2341
- "div",
2367
+ Comp,
2342
2368
  __spreadValues({
2343
2369
  ref,
2344
- className: cn(cardVariants({ variant }), className)
2370
+ className: cn(
2371
+ cardVariants({ variant }),
2372
+ interactive && [
2373
+ "cursor-pointer transition-transform duration-fast",
2374
+ "[@media(hover:hover)]:hover:shadow-modal-sm",
2375
+ "active:scale-press",
2376
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sui-border-highlight focus-visible:ring-offset-2 focus-visible:ring-offset-sui-bg-default"
2377
+ ],
2378
+ className
2379
+ )
2345
2380
  }, props)
2346
2381
  );
2347
2382
  }
2348
2383
  );
2349
2384
  Card.displayName = "Card";
2350
- var CardHeader = React77.forwardRef((_a, ref) => {
2385
+ var CardHeader = React78.forwardRef((_a, ref) => {
2351
2386
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2352
2387
  return /* @__PURE__ */ jsx(
2353
2388
  "div",
@@ -2358,7 +2393,7 @@ var CardHeader = React77.forwardRef((_a, ref) => {
2358
2393
  );
2359
2394
  });
2360
2395
  CardHeader.displayName = "CardHeader";
2361
- var CardTitle = React77.forwardRef((_a, ref) => {
2396
+ var CardTitle = React78.forwardRef((_a, ref) => {
2362
2397
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2363
2398
  return /* @__PURE__ */ jsx(
2364
2399
  "div",
@@ -2372,7 +2407,7 @@ var CardTitle = React77.forwardRef((_a, ref) => {
2372
2407
  );
2373
2408
  });
2374
2409
  CardTitle.displayName = "CardTitle";
2375
- var CardDescription = React77.forwardRef((_a, ref) => {
2410
+ var CardDescription = React78.forwardRef((_a, ref) => {
2376
2411
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2377
2412
  return /* @__PURE__ */ jsx(
2378
2413
  "div",
@@ -2383,12 +2418,12 @@ var CardDescription = React77.forwardRef((_a, ref) => {
2383
2418
  );
2384
2419
  });
2385
2420
  CardDescription.displayName = "CardDescription";
2386
- var CardContent = React77.forwardRef((_a, ref) => {
2421
+ var CardContent = React78.forwardRef((_a, ref) => {
2387
2422
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2388
2423
  return /* @__PURE__ */ jsx("div", __spreadValues({ ref, className: cn("p-6 pt-0", className) }, props));
2389
2424
  });
2390
2425
  CardContent.displayName = "CardContent";
2391
- var CardFooter = React77.forwardRef((_a, ref) => {
2426
+ var CardFooter = React78.forwardRef((_a, ref) => {
2392
2427
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2393
2428
  return /* @__PURE__ */ jsx(
2394
2429
  "div",
@@ -2399,7 +2434,7 @@ var CardFooter = React77.forwardRef((_a, ref) => {
2399
2434
  );
2400
2435
  });
2401
2436
  CardFooter.displayName = "CardFooter";
2402
- var CardCover = React77.forwardRef(
2437
+ var CardCover = React78.forwardRef(
2403
2438
  (_a, ref) => {
2404
2439
  var _b = _a, { className, flush = false, aspectRatio = "3/2", style, children } = _b, props = __objRest(_b, ["className", "flush", "aspectRatio", "style", "children"]);
2405
2440
  return /* @__PURE__ */ jsx(
@@ -2420,17 +2455,17 @@ var CardCover = React77.forwardRef(
2420
2455
  );
2421
2456
  CardCover.displayName = "CardCover";
2422
2457
  var THEMES = { light: "", dark: ".dark" };
2423
- var ChartContext = React77.createContext(null);
2458
+ var ChartContext = React78.createContext(null);
2424
2459
  function useChart() {
2425
- const context = React77.useContext(ChartContext);
2460
+ const context = React78.useContext(ChartContext);
2426
2461
  if (!context) {
2427
2462
  throw new Error("useChart must be used within a <ChartContainer />");
2428
2463
  }
2429
2464
  return context;
2430
2465
  }
2431
- var ChartContainer = React77.forwardRef((_a, ref) => {
2466
+ var ChartContainer = React78.forwardRef((_a, ref) => {
2432
2467
  var _b = _a, { id, className, children, config } = _b, props = __objRest(_b, ["id", "className", "children", "config"]);
2433
- const uniqueId = React77.useId();
2468
+ const uniqueId = React78.useId();
2434
2469
  const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
2435
2470
  return /* @__PURE__ */ jsx(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ jsxs(
2436
2471
  "div",
@@ -2477,7 +2512,7 @@ ${colorConfig.map(([key, itemConfig]) => {
2477
2512
  );
2478
2513
  };
2479
2514
  var ChartTooltip = RechartsPrimitive.Tooltip;
2480
- var ChartTooltipContent = React77.forwardRef(
2515
+ var ChartTooltipContent = React78.forwardRef(
2481
2516
  ({
2482
2517
  active,
2483
2518
  payload,
@@ -2494,7 +2529,7 @@ var ChartTooltipContent = React77.forwardRef(
2494
2529
  labelKey
2495
2530
  }, ref) => {
2496
2531
  const { config } = useChart();
2497
- const tooltipLabel = React77.useMemo(() => {
2532
+ const tooltipLabel = React78.useMemo(() => {
2498
2533
  var _a;
2499
2534
  if (hideLabel || !(payload == null ? void 0 : payload.length)) {
2500
2535
  return null;
@@ -2591,7 +2626,7 @@ var ChartTooltipContent = React77.forwardRef(
2591
2626
  );
2592
2627
  ChartTooltipContent.displayName = "ChartTooltip";
2593
2628
  var ChartLegend = RechartsPrimitive.Legend;
2594
- var ChartLegendContent = React77.forwardRef(
2629
+ var ChartLegendContent = React78.forwardRef(
2595
2630
  ({ className, hideIcon = false, payload, verticalAlign = "bottom", nameKey }, ref) => {
2596
2631
  const { config } = useChart();
2597
2632
  if (!(payload == null ? void 0 : payload.length)) {
@@ -2667,12 +2702,12 @@ var checkboxVariants = cva(
2667
2702
  "data-[state=indeterminate]:bg-sui-bg-checkbox-active",
2668
2703
  "data-[state=indeterminate]:border-sui-bg-checkbox-active",
2669
2704
  // Hover unchecked: stronger border
2670
- "hover:data-[state=unchecked]:border-sui-border-strong",
2705
+ "[@media(hover:hover)]:hover:data-[state=unchecked]:border-sui-border-strong",
2671
2706
  // Hover checked/indeterminate: hover bg + matching border
2672
- "hover:data-[state=checked]:bg-sui-bg-checkbox-active-hover",
2673
- "hover:data-[state=checked]:border-sui-bg-checkbox-active-hover",
2674
- "hover:data-[state=indeterminate]:bg-sui-bg-checkbox-active-hover",
2675
- "hover:data-[state=indeterminate]:border-sui-bg-checkbox-active-hover",
2707
+ "[@media(hover:hover)]:hover:data-[state=checked]:bg-sui-bg-checkbox-active-hover",
2708
+ "[@media(hover:hover)]:hover:data-[state=checked]:border-sui-bg-checkbox-active-hover",
2709
+ "[@media(hover:hover)]:hover:data-[state=indeterminate]:bg-sui-bg-checkbox-active-hover",
2710
+ "[@media(hover:hover)]:hover:data-[state=indeterminate]:border-sui-bg-checkbox-active-hover",
2676
2711
  // Invalid (aria-invalid) — compound selectors for specificity over data-[state] rules
2677
2712
  "aria-[invalid=true]:data-[state=unchecked]:border-sui-border-destructive",
2678
2713
  "aria-[invalid=true]:data-[state=checked]:border-sui-border-destructive",
@@ -2710,13 +2745,14 @@ var checkboxVariants = cva(
2710
2745
  }
2711
2746
  }
2712
2747
  );
2713
- var Checkbox = React77.forwardRef((_a, ref) => {
2714
- var _b = _a, { className, variant } = _b, props = __objRest(_b, ["className", "variant"]);
2748
+ var Checkbox = React78.forwardRef((_a, ref) => {
2749
+ var _b = _a, { className, variant, checked, indeterminate } = _b, props = __objRest(_b, ["className", "variant", "checked", "indeterminate"]);
2715
2750
  return /* @__PURE__ */ jsxs(
2716
2751
  CheckboxPrimitive.Root,
2717
2752
  __spreadProps(__spreadValues({
2718
2753
  ref,
2719
- className: cn(checkboxVariants({ variant, className }))
2754
+ className: cn(checkboxVariants({ variant, className })),
2755
+ checked: indeterminate ? "indeterminate" : checked
2720
2756
  }, props), {
2721
2757
  children: [
2722
2758
  /* @__PURE__ */ jsxs(CheckboxPrimitive.Indicator, { className: "flex items-center justify-center", children: [
@@ -2831,7 +2867,7 @@ var checkboxCardVariants = cva(
2831
2867
  }
2832
2868
  }
2833
2869
  );
2834
- var CheckboxCard = React77.forwardRef(
2870
+ var CheckboxCard = React78.forwardRef(
2835
2871
  ({
2836
2872
  title,
2837
2873
  description,
@@ -2845,7 +2881,7 @@ var CheckboxCard = React77.forwardRef(
2845
2881
  disabled = false,
2846
2882
  className
2847
2883
  }, ref) => {
2848
- const generatedId = React77.useId();
2884
+ const generatedId = React78.useId();
2849
2885
  const checkboxId = `checkbox-card-${generatedId}`;
2850
2886
  const titleId = `checkbox-card-title-${generatedId}`;
2851
2887
  const descriptionId = `checkbox-card-desc-${generatedId}`;
@@ -2941,10 +2977,10 @@ var CheckboxCard = React77.forwardRef(
2941
2977
  }
2942
2978
  );
2943
2979
  CheckboxCard.displayName = "CheckboxCard";
2944
- var CheckboxList = React77.forwardRef(
2980
+ var CheckboxList = React78.forwardRef(
2945
2981
  (_a, ref) => {
2946
2982
  var _b = _a, { className, divider = true, children } = _b, props = __objRest(_b, ["className", "divider", "children"]);
2947
- const items = React77.Children.toArray(children);
2983
+ const items = React78.Children.toArray(children);
2948
2984
  return /* @__PURE__ */ jsx(
2949
2985
  "div",
2950
2986
  __spreadProps(__spreadValues({
@@ -2986,7 +3022,7 @@ var checkboxWithTextVariants = cva(
2986
3022
  }
2987
3023
  }
2988
3024
  );
2989
- var CheckboxWithText = React77.forwardRef(
3025
+ var CheckboxWithText = React78.forwardRef(
2990
3026
  ({
2991
3027
  label,
2992
3028
  description,
@@ -2999,7 +3035,7 @@ var CheckboxWithText = React77.forwardRef(
2999
3035
  className,
3000
3036
  id
3001
3037
  }, ref) => {
3002
- const generatedId = React77.useId();
3038
+ const generatedId = React78.useId();
3003
3039
  const checkboxId = id || generatedId;
3004
3040
  return /* @__PURE__ */ jsxs(
3005
3041
  "div",
@@ -3147,7 +3183,7 @@ var labelClasses2 = {
3147
3183
  md: "text-sm font-medium leading-5",
3148
3184
  sm: "text-xs font-medium leading-4"
3149
3185
  };
3150
- var Chip = React77.forwardRef(
3186
+ var Chip = React78.forwardRef(
3151
3187
  (_a, ref) => {
3152
3188
  var _b = _a, {
3153
3189
  label,
@@ -3176,7 +3212,7 @@ var Chip = React77.forwardRef(
3176
3212
  "className",
3177
3213
  "onClick"
3178
3214
  ]);
3179
- const [internalSelected, setInternalSelected] = React77.useState(false);
3215
+ const [internalSelected, setInternalSelected] = React78.useState(false);
3180
3216
  const isControlled = controlledSelected !== void 0;
3181
3217
  const selected = isControlled ? controlledSelected : internalSelected;
3182
3218
  const handleClick = (e) => {
@@ -3274,7 +3310,7 @@ var badgeStyles = [
3274
3310
  "bg-sui-bg-state-soft border border-sui-border-darker rounded-xs",
3275
3311
  "text-sui-text-subtle text-xs font-medium leading-4"
3276
3312
  ].join(" ");
3277
- var TooltipContent = React77.forwardRef((_a, ref) => {
3313
+ var TooltipContent = React78.forwardRef((_a, ref) => {
3278
3314
  var _b = _a, { className, variant = "default", weight = "subtle", shortcut, sideOffset = 4, children } = _b, props = __objRest(_b, ["className", "variant", "weight", "shortcut", "sideOffset", "children"]);
3279
3315
  return /* @__PURE__ */ jsxs(
3280
3316
  TooltipPrimitive.Content,
@@ -3310,7 +3346,7 @@ var underlineTabsListVariants = cva(
3310
3346
  }
3311
3347
  }
3312
3348
  );
3313
- var UnderlineTabsList = React77.forwardRef((_a, ref) => {
3349
+ var UnderlineTabsList = React78.forwardRef((_a, ref) => {
3314
3350
  var _b = _a, { className, layout, size } = _b, props = __objRest(_b, ["className", "layout", "size"]);
3315
3351
  return /* @__PURE__ */ jsx(
3316
3352
  TabsPrimitive4.List,
@@ -3334,8 +3370,8 @@ var underlineTabItemVariants = cva(
3334
3370
  "[&_i]:text-icon-default-muted [&_i]:pointer-events-none [&_i]:shrink-0 [&_i]:text-md [&_i]:leading-none",
3335
3371
  "[&_svg]:text-icon-default-muted [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:size-4",
3336
3372
  // Hover
3337
- "hover:text-sui-text-subtle hover:border-sui-border-darker",
3338
- "hover:[&_i]:text-icon-default-subtle hover:[&_svg]:text-icon-default-subtle",
3373
+ "[@media(hover:hover)]:hover:text-sui-text-subtle [@media(hover:hover)]:hover:border-sui-border-darker",
3374
+ "[@media(hover:hover)]:hover:[&_i]:text-icon-default-subtle [@media(hover:hover)]:hover:[&_svg]:text-icon-default-subtle",
3339
3375
  // Active (Radix data attribute)
3340
3376
  "data-[state=active]:text-sui-text-default data-[state=active]:border-sui-border-accent",
3341
3377
  "data-[state=active]:[&_i]:text-icon-default data-[state=active]:[&_svg]:text-icon-default",
@@ -3357,7 +3393,7 @@ var underlineTabItemVariants = cva(
3357
3393
  }
3358
3394
  }
3359
3395
  );
3360
- var UnderlineTabItem = React77.forwardRef(
3396
+ var UnderlineTabItem = React78.forwardRef(
3361
3397
  (_a, ref) => {
3362
3398
  var _b = _a, {
3363
3399
  className,
@@ -3395,7 +3431,7 @@ var UnderlineTabItem = React77.forwardRef(
3395
3431
  );
3396
3432
  UnderlineTabItem.displayName = "UnderlineTabItem";
3397
3433
  var DEFAULT_LANGUAGES = ["React", "JavaScript", "TypeScript", "Next.js"];
3398
- var CodeBlock = React77.forwardRef(
3434
+ var CodeBlock = React78.forwardRef(
3399
3435
  (_a, ref) => {
3400
3436
  var _b = _a, {
3401
3437
  className,
@@ -3425,10 +3461,10 @@ var CodeBlock = React77.forwardRef(
3425
3461
  "showLineNumbers"
3426
3462
  ]);
3427
3463
  var _a2, _b2, _c, _d, _e, _f;
3428
- const [activeTab, setActiveTab] = React77.useState((_b2 = (_a2 = tabs == null ? void 0 : tabs[0]) == null ? void 0 : _a2.label) != null ? _b2 : "");
3429
- const [copied, setCopied] = React77.useState(false);
3464
+ const [activeTab, setActiveTab] = React78.useState((_b2 = (_a2 = tabs == null ? void 0 : tabs[0]) == null ? void 0 : _a2.label) != null ? _b2 : "");
3465
+ const [copied, setCopied] = React78.useState(false);
3430
3466
  const activeCode = variant === "advanced" ? (_f = (_e = (_c = tabs == null ? void 0 : tabs.find((t) => t.label === activeTab)) == null ? void 0 : _c.code) != null ? _e : (_d = tabs == null ? void 0 : tabs[0]) == null ? void 0 : _d.code) != null ? _f : "" : code;
3431
- const handleCopy = React77.useCallback(() => {
3467
+ const handleCopy = React78.useCallback(() => {
3432
3468
  if (onCopy) {
3433
3469
  onCopy();
3434
3470
  } else {
@@ -3619,7 +3655,7 @@ var Dialog = DialogPrimitive.Root;
3619
3655
  var DialogTrigger = DialogPrimitive.Trigger;
3620
3656
  var DialogPortal = DialogPrimitive.Portal;
3621
3657
  var DialogClose = DialogPrimitive.Close;
3622
- var DialogOverlay = React77.forwardRef((_a, ref) => {
3658
+ var DialogOverlay = React78.forwardRef((_a, ref) => {
3623
3659
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3624
3660
  return /* @__PURE__ */ jsx(
3625
3661
  DialogPrimitive.Overlay,
@@ -3633,7 +3669,7 @@ var DialogOverlay = React77.forwardRef((_a, ref) => {
3633
3669
  );
3634
3670
  });
3635
3671
  DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
3636
- var DialogContent = React77.forwardRef((_a, ref) => {
3672
+ var DialogContent = React78.forwardRef((_a, ref) => {
3637
3673
  var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
3638
3674
  return /* @__PURE__ */ jsxs(DialogPortal, { children: [
3639
3675
  /* @__PURE__ */ jsx(DialogOverlay, {}),
@@ -3648,7 +3684,7 @@ var DialogContent = React77.forwardRef((_a, ref) => {
3648
3684
  }, props), {
3649
3685
  children: [
3650
3686
  children,
3651
- /* @__PURE__ */ jsxs(DialogPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-sui-bg-default transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-sui-border-highlight focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-sui-bg-state-ghost-hover data-[state=open]:text-sui-text-muted", children: [
3687
+ /* @__PURE__ */ jsxs(DialogPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-sui-bg-default transition-opacity [@media(hover:hover)]:hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-sui-border-highlight focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-sui-bg-state-ghost-hover data-[state=open]:text-sui-text-muted", children: [
3652
3688
  /* @__PURE__ */ jsx("i", { className: "ri-close-line text-base", "aria-hidden": true }),
3653
3689
  /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
3654
3690
  ] })
@@ -3692,7 +3728,7 @@ var DialogFooter = (_a) => {
3692
3728
  );
3693
3729
  };
3694
3730
  DialogFooter.displayName = "DialogFooter";
3695
- var DialogTitle = React77.forwardRef((_a, ref) => {
3731
+ var DialogTitle = React78.forwardRef((_a, ref) => {
3696
3732
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3697
3733
  return /* @__PURE__ */ jsx(
3698
3734
  DialogPrimitive.Title,
@@ -3706,7 +3742,7 @@ var DialogTitle = React77.forwardRef((_a, ref) => {
3706
3742
  );
3707
3743
  });
3708
3744
  DialogTitle.displayName = DialogPrimitive.Title.displayName;
3709
- var DialogDescription = React77.forwardRef((_a, ref) => {
3745
+ var DialogDescription = React78.forwardRef((_a, ref) => {
3710
3746
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3711
3747
  return /* @__PURE__ */ jsx(
3712
3748
  DialogPrimitive.Description,
@@ -3717,7 +3753,7 @@ var DialogDescription = React77.forwardRef((_a, ref) => {
3717
3753
  );
3718
3754
  });
3719
3755
  DialogDescription.displayName = DialogPrimitive.Description.displayName;
3720
- var Command = React77.forwardRef((_a, ref) => {
3756
+ var Command = React78.forwardRef((_a, ref) => {
3721
3757
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3722
3758
  return /* @__PURE__ */ jsx(
3723
3759
  Command$1,
@@ -3735,7 +3771,7 @@ var CommandDialog = (_a) => {
3735
3771
  var _b = _a, { children } = _b, props = __objRest(_b, ["children"]);
3736
3772
  return /* @__PURE__ */ jsx(Dialog, __spreadProps(__spreadValues({}, props), { children: /* @__PURE__ */ jsx(DialogContent, { className: "overflow-hidden p-0 shadow-card max-w-[560px]", children: /* @__PURE__ */ jsx(Command, { className: "[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-sui-text-hint [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_i]:h-4 [&_[cmdk-input-wrapper]_i]:w-4 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_i]:h-4 [&_[cmdk-item]_i]:w-4", children }) }) }));
3737
3773
  };
3738
- var CommandInput = React77.forwardRef((_a, ref) => {
3774
+ var CommandInput = React78.forwardRef((_a, ref) => {
3739
3775
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3740
3776
  return /* @__PURE__ */ jsxs("div", { className: "flex items-center border-b border-sui-border-default px-3", "cmdk-input-wrapper": "", children: [
3741
3777
  /* @__PURE__ */ jsx("i", { className: "ri-search-line mr-2 shrink-0 text-icon-default-muted" }),
@@ -3752,7 +3788,7 @@ var CommandInput = React77.forwardRef((_a, ref) => {
3752
3788
  ] });
3753
3789
  });
3754
3790
  CommandInput.displayName = Command$1.Input.displayName;
3755
- var CommandList = React77.forwardRef((_a, ref) => {
3791
+ var CommandList = React78.forwardRef((_a, ref) => {
3756
3792
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3757
3793
  return /* @__PURE__ */ jsx(
3758
3794
  Command$1.List,
@@ -3763,7 +3799,7 @@ var CommandList = React77.forwardRef((_a, ref) => {
3763
3799
  );
3764
3800
  });
3765
3801
  CommandList.displayName = Command$1.List.displayName;
3766
- var CommandEmpty = React77.forwardRef((props, ref) => /* @__PURE__ */ jsx(
3802
+ var CommandEmpty = React78.forwardRef((props, ref) => /* @__PURE__ */ jsx(
3767
3803
  Command$1.Empty,
3768
3804
  __spreadValues({
3769
3805
  ref,
@@ -3771,7 +3807,7 @@ var CommandEmpty = React77.forwardRef((props, ref) => /* @__PURE__ */ jsx(
3771
3807
  }, props)
3772
3808
  ));
3773
3809
  CommandEmpty.displayName = Command$1.Empty.displayName;
3774
- var CommandGroup = React77.forwardRef((_a, ref) => {
3810
+ var CommandGroup = React78.forwardRef((_a, ref) => {
3775
3811
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3776
3812
  return /* @__PURE__ */ jsx(
3777
3813
  Command$1.Group,
@@ -3785,7 +3821,7 @@ var CommandGroup = React77.forwardRef((_a, ref) => {
3785
3821
  );
3786
3822
  });
3787
3823
  CommandGroup.displayName = Command$1.Group.displayName;
3788
- var CommandSeparator = React77.forwardRef((_a, ref) => {
3824
+ var CommandSeparator = React78.forwardRef((_a, ref) => {
3789
3825
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3790
3826
  return /* @__PURE__ */ jsx(
3791
3827
  Command$1.Separator,
@@ -3796,7 +3832,7 @@ var CommandSeparator = React77.forwardRef((_a, ref) => {
3796
3832
  );
3797
3833
  });
3798
3834
  CommandSeparator.displayName = Command$1.Separator.displayName;
3799
- var CommandItem = React77.forwardRef((_a, ref) => {
3835
+ var CommandItem = React78.forwardRef((_a, ref) => {
3800
3836
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3801
3837
  return /* @__PURE__ */ jsx(
3802
3838
  Command$1.Item,
@@ -3859,7 +3895,7 @@ var sliderHandleVariants = cva(
3859
3895
  }
3860
3896
  }
3861
3897
  );
3862
- var SliderHandle = React77.forwardRef(
3898
+ var SliderHandle = React78.forwardRef(
3863
3899
  (_a, ref) => {
3864
3900
  var _b = _a, { className, state, value, showTooltip = false } = _b, props = __objRest(_b, ["className", "state", "value", "showTooltip"]);
3865
3901
  const isDisabled = state === "disabled";
@@ -3922,7 +3958,7 @@ function buildHistogramPath(data, width, height) {
3922
3958
  path += ` L ${width} ${height} Z`;
3923
3959
  return path;
3924
3960
  }
3925
- var DataRangeSlider = React77.forwardRef(
3961
+ var DataRangeSlider = React78.forwardRef(
3926
3962
  (_a, ref) => {
3927
3963
  var _b = _a, {
3928
3964
  className,
@@ -3953,15 +3989,18 @@ var DataRangeSlider = React77.forwardRef(
3953
3989
  "formatValue",
3954
3990
  "onValueChange"
3955
3991
  ]);
3956
- const trackRef = React77.useRef(null);
3957
- const [draggingHandle, setDraggingHandle] = React77.useState(null);
3958
- const [focusedHandle, setFocusedHandle] = React77.useState(null);
3959
- const clipId = React77.useId();
3992
+ const trackRef = React78.useRef(null);
3993
+ const [draggingHandle, setDraggingHandle] = React78.useState(null);
3994
+ const [focusedHandle, setFocusedHandle] = React78.useState(null);
3995
+ const clipId = React78.useId();
3960
3996
  const [rangeMin, rangeMax] = value;
3961
3997
  const pctMin = percent(rangeMin, min, max);
3962
3998
  const pctMax = percent(rangeMax, min, max);
3963
- const fmt = (v) => formatValue ? formatValue(v) : `${v}`;
3964
- const getValueFromPointer = React77.useCallback(
3999
+ const fmt = React78.useCallback(
4000
+ (v) => formatValue ? formatValue(v) : `${v}`,
4001
+ [formatValue]
4002
+ );
4003
+ const getValueFromPointer = React78.useCallback(
3965
4004
  (clientX) => {
3966
4005
  const track = trackRef.current;
3967
4006
  if (!track) return 0;
@@ -3972,7 +4011,7 @@ var DataRangeSlider = React77.forwardRef(
3972
4011
  },
3973
4012
  [min, max, step]
3974
4013
  );
3975
- const closestHandle = React77.useCallback(
4014
+ const closestHandle = React78.useCallback(
3976
4015
  (pointerValue) => {
3977
4016
  const distMin = Math.abs(pointerValue - rangeMin);
3978
4017
  const distMax = Math.abs(pointerValue - rangeMax);
@@ -3980,7 +4019,7 @@ var DataRangeSlider = React77.forwardRef(
3980
4019
  },
3981
4020
  [rangeMin, rangeMax]
3982
4021
  );
3983
- const updateValue = React77.useCallback(
4022
+ const updateValue = React78.useCallback(
3984
4023
  (handle, newVal) => {
3985
4024
  if (handle === 0) {
3986
4025
  const clamped = clamp(newVal, min, rangeMax);
@@ -3992,7 +4031,7 @@ var DataRangeSlider = React77.forwardRef(
3992
4031
  },
3993
4032
  [min, max, rangeMin, rangeMax, onValueChange]
3994
4033
  );
3995
- const handlePointerDown = React77.useCallback(
4034
+ const handlePointerDown = React78.useCallback(
3996
4035
  (e) => {
3997
4036
  if (disabled) return;
3998
4037
  e.preventDefault();
@@ -4004,7 +4043,7 @@ var DataRangeSlider = React77.forwardRef(
4004
4043
  },
4005
4044
  [disabled, getValueFromPointer, closestHandle, updateValue]
4006
4045
  );
4007
- const handlePointerMove = React77.useCallback(
4046
+ const handlePointerMove = React78.useCallback(
4008
4047
  (e) => {
4009
4048
  if (draggingHandle === null || disabled) return;
4010
4049
  const newVal = getValueFromPointer(e.clientX);
@@ -4012,10 +4051,10 @@ var DataRangeSlider = React77.forwardRef(
4012
4051
  },
4013
4052
  [draggingHandle, disabled, getValueFromPointer, updateValue]
4014
4053
  );
4015
- const handlePointerUp = React77.useCallback(() => {
4054
+ const handlePointerUp = React78.useCallback(() => {
4016
4055
  setDraggingHandle(null);
4017
4056
  }, []);
4018
- const makeKeyHandler = React77.useCallback(
4057
+ const makeKeyHandler = React78.useCallback(
4019
4058
  (handle) => (e) => {
4020
4059
  if (disabled) return;
4021
4060
  const currentVal = handle === 0 ? rangeMin : rangeMax;
@@ -4043,7 +4082,7 @@ var DataRangeSlider = React77.forwardRef(
4043
4082
  },
4044
4083
  [disabled, rangeMin, rangeMax, step, min, max, updateValue]
4045
4084
  );
4046
- const tickLabels = React77.useMemo(() => {
4085
+ const tickLabels = React78.useMemo(() => {
4047
4086
  if (pointLabels) return pointLabels;
4048
4087
  const labels = [];
4049
4088
  for (let i = 0; i < pointCount; i++) {
@@ -4054,7 +4093,7 @@ var DataRangeSlider = React77.forwardRef(
4054
4093
  }, [pointLabels, pointCount, min, max, fmt]);
4055
4094
  const chartWidth = 320;
4056
4095
  const chartHeight = 32;
4057
- const histogramPath = React77.useMemo(
4096
+ const histogramPath = React78.useMemo(
4058
4097
  () => buildHistogramPath(data, chartWidth, chartHeight),
4059
4098
  [data]
4060
4099
  );
@@ -4201,7 +4240,7 @@ DataRangeSlider.displayName = "DataRangeSlider";
4201
4240
  var labelVariants = cva(
4202
4241
  "text-sm font-medium leading-5 text-sui-text-default"
4203
4242
  );
4204
- var Label = React77.forwardRef((_a, ref) => {
4243
+ var Label = React78.forwardRef((_a, ref) => {
4205
4244
  var _b = _a, { className, required, supportText, tailIcon, children } = _b, props = __objRest(_b, ["className", "required", "supportText", "tailIcon", "children"]);
4206
4245
  const hasTail = !!(supportText || tailIcon);
4207
4246
  return /* @__PURE__ */ jsxs(
@@ -4262,7 +4301,7 @@ var inputContainerVariants = cva(
4262
4301
  }
4263
4302
  }
4264
4303
  );
4265
- var InputField = React77.forwardRef(
4304
+ var InputField = React78.forwardRef(
4266
4305
  (_a, ref) => {
4267
4306
  var _b = _a, {
4268
4307
  className,
@@ -4287,7 +4326,9 @@ var InputField = React77.forwardRef(
4287
4326
  tailAddon,
4288
4327
  inputClassName,
4289
4328
  disabled,
4290
- id
4329
+ id,
4330
+ spellCheck,
4331
+ autoComplete
4291
4332
  } = _b, props = __objRest(_b, [
4292
4333
  "className",
4293
4334
  "inputStyle",
@@ -4311,14 +4352,29 @@ var InputField = React77.forwardRef(
4311
4352
  "tailAddon",
4312
4353
  "inputClassName",
4313
4354
  "disabled",
4314
- "id"
4355
+ "id",
4356
+ "spellCheck",
4357
+ "autoComplete"
4315
4358
  ]);
4316
- const generatedId = React77.useId();
4359
+ const generatedId = React78.useId();
4317
4360
  const inputId = id || generatedId;
4318
4361
  const captionId = `${inputId}-caption`;
4319
4362
  const hasError = !!error;
4320
4363
  const helperText = hasError ? error : caption;
4321
4364
  const hasInlineTags = !!(tags && tags.length > 0 && !hasError && !disabled);
4365
+ const innerRef = React78.useRef(null);
4366
+ React78.useImperativeHandle(ref, () => innerRef.current, []);
4367
+ const focusInputOnDecorationClick = (e) => {
4368
+ var _a2;
4369
+ if (disabled) return;
4370
+ const target = e.target;
4371
+ if (target === innerRef.current) return;
4372
+ if (target.closest('button, a, input, textarea, select, [role="button"]')) return;
4373
+ e.preventDefault();
4374
+ (_a2 = innerRef.current) == null ? void 0 : _a2.focus();
4375
+ };
4376
+ const resolvedSpellCheck = spellCheck != null ? spellCheck : false;
4377
+ const resolvedAutoComplete = autoComplete != null ? autoComplete : "off";
4322
4378
  return /* @__PURE__ */ jsxs("div", { className: cn("flex w-full flex-col gap-2", className), children: [
4323
4379
  label && /* @__PURE__ */ jsx(
4324
4380
  Label,
@@ -4333,6 +4389,7 @@ var InputField = React77.forwardRef(
4333
4389
  /* @__PURE__ */ jsxs(
4334
4390
  "div",
4335
4391
  {
4392
+ onPointerDown: focusInputOnDecorationClick,
4336
4393
  className: cn(
4337
4394
  inputContainerVariants({ inputStyle }),
4338
4395
  // Inline tags: let content determine height; standard: fix height to prevent inflation
@@ -4385,13 +4442,15 @@ var InputField = React77.forwardRef(
4385
4442
  /* @__PURE__ */ jsx(
4386
4443
  "input",
4387
4444
  __spreadValues({
4388
- ref,
4445
+ ref: innerRef,
4389
4446
  id: inputId,
4390
4447
  disabled,
4391
4448
  required,
4449
+ spellCheck: resolvedSpellCheck,
4450
+ autoComplete: resolvedAutoComplete,
4392
4451
  "aria-invalid": hasError || void 0,
4393
4452
  "aria-describedby": helperText ? captionId : void 0,
4394
- className: cn("flex-1 min-w-0 bg-transparent px-1 text-sm leading-5 outline-none text-sui-text-default placeholder:text-sui-text-hint", inputClassName)
4453
+ className: cn("flex-1 min-w-0 bg-transparent px-1 text-base md:text-sm leading-5 outline-none text-sui-text-default placeholder:text-sui-text-hint", inputClassName)
4395
4454
  }, props)
4396
4455
  )
4397
4456
  ] }),
@@ -4425,14 +4484,17 @@ var InputField = React77.forwardRef(
4425
4484
  /* @__PURE__ */ jsx(
4426
4485
  "input",
4427
4486
  __spreadValues({
4428
- ref,
4487
+ ref: innerRef,
4429
4488
  id: inputId,
4430
4489
  disabled,
4431
4490
  required,
4491
+ spellCheck: resolvedSpellCheck,
4492
+ autoComplete: resolvedAutoComplete,
4432
4493
  "aria-invalid": hasError || void 0,
4433
4494
  "aria-describedby": helperText ? captionId : void 0,
4434
4495
  className: cn(
4435
- "flex-1 min-w-0 bg-transparent px-1 text-sm leading-5 outline-none",
4496
+ // #29 16px on touch (prevents iOS zoom), 14px on md+
4497
+ "flex-1 min-w-0 bg-transparent px-1 text-base md:text-sm leading-5 outline-none",
4436
4498
  "text-sui-text-default",
4437
4499
  "placeholder:text-sui-text-muted",
4438
4500
  disabled && "text-sui-text-hint placeholder:text-sui-text-hint cursor-not-allowed",
@@ -4493,7 +4555,7 @@ var InputField = React77.forwardRef(
4493
4555
  }
4494
4556
  );
4495
4557
  InputField.displayName = "InputField";
4496
- var DataRangeSliderInput = React77.forwardRef(
4558
+ var DataRangeSliderInput = React78.forwardRef(
4497
4559
  (_a, ref) => {
4498
4560
  var _b = _a, {
4499
4561
  className,
@@ -4613,7 +4675,7 @@ var DataRangeSliderInput = React77.forwardRef(
4613
4675
  DataRangeSliderInput.displayName = "DataRangeSliderInput";
4614
4676
  var Popover = PopoverPrimitive.Root;
4615
4677
  var PopoverTrigger = PopoverPrimitive.Trigger;
4616
- var PopoverContent = React77.forwardRef((_a, ref) => {
4678
+ var PopoverContent = React78.forwardRef((_a, ref) => {
4617
4679
  var _b = _a, { className, align = "center", sideOffset = 4 } = _b, props = __objRest(_b, ["className", "align", "sideOffset"]);
4618
4680
  return /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(
4619
4681
  PopoverPrimitive.Content,
@@ -4636,7 +4698,7 @@ function DatePicker({
4636
4698
  className,
4637
4699
  disabled
4638
4700
  }) {
4639
- const [open, setOpen] = React77.useState(false);
4701
+ const [open, setOpen] = React78.useState(false);
4640
4702
  return /* @__PURE__ */ jsxs(Popover, { open, onOpenChange: setOpen, children: [
4641
4703
  /* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
4642
4704
  Button,
@@ -4677,7 +4739,7 @@ function DateRangePicker({
4677
4739
  className,
4678
4740
  disabled
4679
4741
  }) {
4680
- const [open, setOpen] = React77.useState(false);
4742
+ const [open, setOpen] = React78.useState(false);
4681
4743
  return /* @__PURE__ */ jsxs(Popover, { open, onOpenChange: setOpen, children: [
4682
4744
  /* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
4683
4745
  Button,
@@ -4728,7 +4790,7 @@ function DatePickerWithPresets({
4728
4790
  className,
4729
4791
  disabled
4730
4792
  }) {
4731
- const [open, setOpen] = React77.useState(false);
4793
+ const [open, setOpen] = React78.useState(false);
4732
4794
  return /* @__PURE__ */ jsxs(Popover, { open, onOpenChange: setOpen, children: [
4733
4795
  /* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
4734
4796
  Button,
@@ -4761,7 +4823,7 @@ function DatePickerWithPresets({
4761
4823
  className: cn(
4762
4824
  "w-[150px] rounded-xs px-2 py-1 text-left text-sm font-medium transition-colors",
4763
4825
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sui-border-highlight",
4764
- isSelected ? "bg-sui-bg-state-brand text-sui-text-white-default" : "bg-sui-bg-state-ghost text-sui-text-muted hover:bg-sui-bg-state-ghost-hover"
4826
+ isSelected ? "bg-sui-bg-state-brand text-sui-text-white-default" : "bg-sui-bg-state-ghost text-sui-text-muted [@media(hover:hover)]:hover:bg-sui-bg-state-ghost-hover"
4765
4827
  ),
4766
4828
  children: preset.label
4767
4829
  },
@@ -4849,7 +4911,7 @@ function RequirementItem({ label, met }) {
4849
4911
  )
4850
4912
  ] });
4851
4913
  }
4852
- var InputCaption = React77.forwardRef(
4914
+ var InputCaption = React78.forwardRef(
4853
4915
  (_a, ref) => {
4854
4916
  var _b = _a, {
4855
4917
  variant = "default",
@@ -4940,9 +5002,9 @@ var InputCaption = React77.forwardRef(
4940
5002
  className
4941
5003
  )
4942
5004
  }, props), {
4943
- children: React77.Children.map(children, (child) => {
4944
- if (!React77.isValidElement(child)) return child;
4945
- return React77.cloneElement(child, {
5005
+ children: React78.Children.map(children, (child) => {
5006
+ if (!React78.isValidElement(child)) return child;
5007
+ return React78.cloneElement(child, {
4946
5008
  className: cn(
4947
5009
  "flex-1",
4948
5010
  child.props.className
@@ -5043,43 +5105,49 @@ function DateSegment({
5043
5105
  const handleFocus = (e) => {
5044
5106
  e.target.select();
5045
5107
  };
5046
- return /* @__PURE__ */ jsx(
5047
- "input",
5048
- {
5049
- ref: segmentRef,
5050
- id,
5051
- type: "text",
5052
- inputMode: "numeric",
5053
- maxLength,
5054
- size: maxLength,
5055
- placeholder,
5056
- value,
5057
- disabled,
5058
- onChange: handleChange,
5059
- onKeyDown: handleKeyDown,
5060
- onFocus: handleFocus,
5061
- "aria-label": placeholder === "dd" ? "Day" : placeholder === "mm" ? "Month" : "Year",
5062
- className: cn(
5063
- // Layout — min-w-0 prevents browser input minimum width
5064
- "min-w-0 shrink-0 rounded-xs px-1 text-center",
5065
- // Explicit widths — enough room for text + px-1 padding
5066
- maxLength === 4 ? "w-12" : "w-8",
5067
- // Typography
5068
- "text-sm font-normal leading-5",
5069
- // Background
5070
- "bg-sui-bg-state-ghost",
5071
- // Text colors
5072
- value ? "text-sui-text-default" : "text-sui-text-muted",
5073
- // Hover
5074
- "hover:bg-sui-bg-state-ghost-hover",
5075
- // Focus
5076
- "focus:bg-sui-bg-state-ghost-hover focus:outline-none",
5077
- // Disabled
5078
- "disabled:pointer-events-none disabled:text-sui-text-hint disabled:bg-transparent",
5079
- // Placeholder
5080
- "placeholder:text-sui-text-muted disabled:placeholder:text-sui-text-hint"
5081
- )
5082
- }
5108
+ return (
5109
+ // Web Interface Guidelines #4 spellcheck/autocomplete off, #29 16px on touch,
5110
+ // #28 hover only on pointer devices (avoid sticky hover after tap on touch).
5111
+ /* @__PURE__ */ jsx(
5112
+ "input",
5113
+ {
5114
+ ref: segmentRef,
5115
+ id,
5116
+ type: "text",
5117
+ inputMode: "numeric",
5118
+ spellCheck: false,
5119
+ autoComplete: "off",
5120
+ maxLength,
5121
+ size: maxLength,
5122
+ placeholder,
5123
+ value,
5124
+ disabled,
5125
+ onChange: handleChange,
5126
+ onKeyDown: handleKeyDown,
5127
+ onFocus: handleFocus,
5128
+ "aria-label": placeholder === "dd" ? "Day" : placeholder === "mm" ? "Month" : "Year",
5129
+ className: cn(
5130
+ // Layout — min-w-0 prevents browser input minimum width
5131
+ "min-w-0 shrink-0 rounded-xs px-1 text-center",
5132
+ // Explicit widths — enough room for text + px-1 padding
5133
+ maxLength === 4 ? "w-12" : "w-8",
5134
+ // Typography 16px on touch (prevents iOS zoom on focus), 14px on md+
5135
+ "text-base md:text-sm font-normal leading-5 tabular-nums",
5136
+ // Background
5137
+ "bg-sui-bg-state-ghost",
5138
+ // Text colors
5139
+ value ? "text-sui-text-default" : "text-sui-text-muted",
5140
+ // Hover (pointer devices only — no sticky hover after tap)
5141
+ "[@media(hover:hover)]:hover:bg-sui-bg-state-ghost-hover",
5142
+ // Focus
5143
+ "focus:bg-sui-bg-state-ghost-hover focus:outline-none",
5144
+ // Disabled
5145
+ "disabled:pointer-events-none disabled:text-sui-text-hint disabled:bg-transparent",
5146
+ // Placeholder
5147
+ "placeholder:text-sui-text-muted disabled:placeholder:text-sui-text-hint"
5148
+ )
5149
+ }
5150
+ )
5083
5151
  );
5084
5152
  }
5085
5153
  function DateSegmentGroup({
@@ -5212,38 +5280,38 @@ function DatePickerInput({
5212
5280
  disabled = false,
5213
5281
  className
5214
5282
  }) {
5215
- const [calendarOpen, setCalendarOpen] = React77.useState(false);
5283
+ const [calendarOpen, setCalendarOpen] = React78.useState(false);
5216
5284
  const hasError = !!error;
5217
5285
  const helperText = hasError ? error : caption;
5218
5286
  const singleSegments = dateToSegments(date);
5219
- const [singleDay, setSingleDay] = React77.useState(singleSegments.day);
5220
- const [singleMonth, setSingleMonth] = React77.useState(singleSegments.month);
5221
- const [singleYear, setSingleYear] = React77.useState(singleSegments.year);
5287
+ const [singleDay, setSingleDay] = React78.useState(singleSegments.day);
5288
+ const [singleMonth, setSingleMonth] = React78.useState(singleSegments.month);
5289
+ const [singleYear, setSingleYear] = React78.useState(singleSegments.year);
5222
5290
  const startSegments = dateToSegments(dateRange == null ? void 0 : dateRange.from);
5223
5291
  const endSegments = dateToSegments(dateRange == null ? void 0 : dateRange.to);
5224
- const [startDay, setStartDay] = React77.useState(startSegments.day);
5225
- const [startMonth, setStartMonth] = React77.useState(startSegments.month);
5226
- const [startYear, setStartYear] = React77.useState(startSegments.year);
5227
- const [endDay, setEndDay] = React77.useState(endSegments.day);
5228
- const [endMonth, setEndMonth] = React77.useState(endSegments.month);
5229
- const [endYear, setEndYear] = React77.useState(endSegments.year);
5230
- const singleDayRef = React77.useRef(null);
5231
- const singleMonthRef = React77.useRef(null);
5232
- const singleYearRef = React77.useRef(null);
5233
- const startDayRef = React77.useRef(null);
5234
- const startMonthRef = React77.useRef(null);
5235
- const startYearRef = React77.useRef(null);
5236
- const endDayRef = React77.useRef(null);
5237
- const endMonthRef = React77.useRef(null);
5238
- const endYearRef = React77.useRef(null);
5239
- const calendarIconRef = React77.useRef(null);
5240
- React77.useEffect(() => {
5292
+ const [startDay, setStartDay] = React78.useState(startSegments.day);
5293
+ const [startMonth, setStartMonth] = React78.useState(startSegments.month);
5294
+ const [startYear, setStartYear] = React78.useState(startSegments.year);
5295
+ const [endDay, setEndDay] = React78.useState(endSegments.day);
5296
+ const [endMonth, setEndMonth] = React78.useState(endSegments.month);
5297
+ const [endYear, setEndYear] = React78.useState(endSegments.year);
5298
+ const singleDayRef = React78.useRef(null);
5299
+ const singleMonthRef = React78.useRef(null);
5300
+ const singleYearRef = React78.useRef(null);
5301
+ const startDayRef = React78.useRef(null);
5302
+ const startMonthRef = React78.useRef(null);
5303
+ const startYearRef = React78.useRef(null);
5304
+ const endDayRef = React78.useRef(null);
5305
+ const endMonthRef = React78.useRef(null);
5306
+ const endYearRef = React78.useRef(null);
5307
+ const calendarIconRef = React78.useRef(null);
5308
+ React78.useEffect(() => {
5241
5309
  const s = dateToSegments(date);
5242
5310
  setSingleDay(s.day);
5243
5311
  setSingleMonth(s.month);
5244
5312
  setSingleYear(s.year);
5245
5313
  }, [date]);
5246
- React77.useEffect(() => {
5314
+ React78.useEffect(() => {
5247
5315
  const s = dateToSegments(dateRange == null ? void 0 : dateRange.from);
5248
5316
  setStartDay(s.day);
5249
5317
  setStartMonth(s.month);
@@ -5253,7 +5321,7 @@ function DatePickerInput({
5253
5321
  setEndMonth(e.month);
5254
5322
  setEndYear(e.year);
5255
5323
  }, [dateRange]);
5256
- const handleSingleSegmentChange = React77.useCallback(
5324
+ const handleSingleSegmentChange = React78.useCallback(
5257
5325
  (day, month, year) => {
5258
5326
  const d = segmentsToDate(day, month, year);
5259
5327
  if (day.length === 2 && month.length === 2 && year.length === 4) {
@@ -5264,7 +5332,7 @@ function DatePickerInput({
5264
5332
  },
5265
5333
  [onDateChange]
5266
5334
  );
5267
- const handleRangeSegmentChange = React77.useCallback(
5335
+ const handleRangeSegmentChange = React78.useCallback(
5268
5336
  (sd, sm, sy, ed, em, ey) => {
5269
5337
  const from = segmentsToDate(sd, sm, sy);
5270
5338
  const to = segmentsToDate(ed, em, ey);
@@ -5339,7 +5407,7 @@ function DatePickerInput({
5339
5407
  setCalendarOpen(false);
5340
5408
  }
5341
5409
  };
5342
- const inputId = React77.useId();
5410
+ const inputId = React78.useId();
5343
5411
  return /* @__PURE__ */ jsxs("div", { className: cn("flex w-full flex-col gap-2", className), children: [
5344
5412
  label && /* @__PURE__ */ jsx(Label, { htmlFor: inputId, children: label }),
5345
5413
  /* @__PURE__ */ jsxs(Popover, { open: calendarOpen, onOpenChange: setCalendarOpen, children: [
@@ -5453,7 +5521,7 @@ function DatePickerInput({
5453
5521
  "flex shrink-0 items-center justify-center size-5 mr-2",
5454
5522
  "rounded-xs transition-colors",
5455
5523
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sui-border-highlight",
5456
- "hover:bg-sui-bg-state-ghost-hover",
5524
+ "[@media(hover:hover)]:hover:bg-sui-bg-state-ghost-hover",
5457
5525
  "disabled:pointer-events-none"
5458
5526
  ),
5459
5527
  children: /* @__PURE__ */ jsx(
@@ -5525,7 +5593,7 @@ var lineVariants = cva("h-px min-w-0 flex-1 border-t border-sui-border-default",
5525
5593
  lineStyle: "solid"
5526
5594
  }
5527
5595
  });
5528
- var Divider = React77.forwardRef(
5596
+ var Divider = React78.forwardRef(
5529
5597
  (_a, ref) => {
5530
5598
  var _b = _a, {
5531
5599
  className,
@@ -5583,7 +5651,7 @@ var Divider = React77.forwardRef(
5583
5651
  "shadow-default",
5584
5652
  "relative overflow-hidden",
5585
5653
  "transition-colors duration-150",
5586
- "hover:bg-sui-bg-state-secondary-hover",
5654
+ "[@media(hover:hover)]:hover:bg-sui-bg-state-secondary-hover",
5587
5655
  "active:bg-sui-bg-state-secondary-press",
5588
5656
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sui-border-highlight focus-visible:ring-offset-2 focus-visible:ring-offset-sui-bg-default"
5589
5657
  ),
@@ -5600,7 +5668,7 @@ var Divider = React77.forwardRef(
5600
5668
  }
5601
5669
  );
5602
5670
  Divider.displayName = "Divider";
5603
- var MenuSearchInput = React77.forwardRef(
5671
+ var MenuSearchInput = React78.forwardRef(
5604
5672
  (_a, ref) => {
5605
5673
  var _b = _a, {
5606
5674
  className,
@@ -5621,44 +5689,45 @@ var MenuSearchInput = React77.forwardRef(
5621
5689
  "defaultValue",
5622
5690
  "id"
5623
5691
  ]);
5624
- const internalRef = React77.useRef(null);
5692
+ var _a2, _b2;
5693
+ const internalRef = React78.useRef(null);
5625
5694
  const inputRef = ref || internalRef;
5626
- const [internalValue, setInternalValue] = React77.useState(
5695
+ const [internalValue, setInternalValue] = React78.useState(
5627
5696
  defaultValue || ""
5628
5697
  );
5629
5698
  const isControlled = value !== void 0;
5630
5699
  const currentValue = isControlled ? String(value) : internalValue;
5631
5700
  const hasValue = currentValue.length > 0;
5632
- const generatedId = React77.useId();
5701
+ const generatedId = React78.useId();
5633
5702
  const inputId = id || generatedId;
5634
5703
  const handleChange = (e) => {
5635
- var _a2;
5704
+ var _a3;
5636
5705
  if (!isControlled) {
5637
5706
  setInternalValue(e.target.value);
5638
5707
  }
5639
- (_a2 = props.onChange) == null ? void 0 : _a2.call(props, e);
5708
+ (_a3 = props.onChange) == null ? void 0 : _a3.call(props, e);
5640
5709
  };
5641
5710
  const handleClear = () => {
5642
- var _a2;
5711
+ var _a3;
5643
5712
  if (!isControlled) {
5644
5713
  setInternalValue("");
5645
5714
  }
5646
5715
  onClear == null ? void 0 : onClear();
5647
5716
  if (inputRef && "current" in inputRef) {
5648
- (_a2 = inputRef.current) == null ? void 0 : _a2.focus();
5717
+ (_a3 = inputRef.current) == null ? void 0 : _a3.focus();
5649
5718
  }
5650
5719
  };
5651
- const [isFocused, setIsFocused] = React77.useState(false);
5720
+ const [isFocused, setIsFocused] = React78.useState(false);
5652
5721
  const showShortcut = !!shortcutKey && !hasValue && !isFocused && !disabled;
5653
5722
  const handleFocus = (e) => {
5654
- var _a2;
5723
+ var _a3;
5655
5724
  setIsFocused(true);
5656
- (_a2 = props.onFocus) == null ? void 0 : _a2.call(props, e);
5725
+ (_a3 = props.onFocus) == null ? void 0 : _a3.call(props, e);
5657
5726
  };
5658
5727
  const handleBlur = (e) => {
5659
- var _a2;
5728
+ var _a3;
5660
5729
  setIsFocused(false);
5661
- (_a2 = props.onBlur) == null ? void 0 : _a2.call(props, e);
5730
+ (_a3 = props.onBlur) == null ? void 0 : _a3.call(props, e);
5662
5731
  };
5663
5732
  return /* @__PURE__ */ jsx(
5664
5733
  "div",
@@ -5701,13 +5770,15 @@ var MenuSearchInput = React77.forwardRef(
5701
5770
  type: "search",
5702
5771
  role: "searchbox",
5703
5772
  disabled,
5773
+ spellCheck: (_a2 = props.spellCheck) != null ? _a2 : false,
5774
+ autoComplete: (_b2 = props.autoComplete) != null ? _b2 : "off",
5704
5775
  value: isControlled ? value : internalValue,
5705
5776
  onChange: handleChange,
5706
5777
  onFocus: handleFocus,
5707
5778
  onBlur: handleBlur,
5708
5779
  "aria-label": props["aria-label"] || "Search menu",
5709
5780
  className: cn(
5710
- "flex-1 min-w-0 bg-transparent px-1 text-sm leading-5 outline-none",
5781
+ "flex-1 min-w-0 bg-transparent px-1 text-base md:text-sm leading-5 outline-none",
5711
5782
  "font-normal",
5712
5783
  "text-sui-text-default",
5713
5784
  "placeholder:text-sui-text-hint",
@@ -5739,7 +5810,7 @@ var MenuSearchInput = React77.forwardRef(
5739
5810
  "flex size-5 shrink-0 items-center justify-center",
5740
5811
  "rounded-xs transition-colors",
5741
5812
  "text-icon-default-muted",
5742
- "hover:text-icon-default-subtle",
5813
+ "[@media(hover:hover)]:hover:text-icon-default-subtle",
5743
5814
  "active:text-icon-default",
5744
5815
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sui-border-highlight"
5745
5816
  ),
@@ -5760,7 +5831,7 @@ var DropdownMenuGroup = DropdownMenuPrimitive.Group;
5760
5831
  var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
5761
5832
  var DropdownMenuSub = DropdownMenuPrimitive.Sub;
5762
5833
  var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
5763
- var DropdownMenuSubTrigger = React77.forwardRef((_a, ref) => {
5834
+ var DropdownMenuSubTrigger = React78.forwardRef((_a, ref) => {
5764
5835
  var _b = _a, { className, inset, children } = _b, props = __objRest(_b, ["className", "inset", "children"]);
5765
5836
  return /* @__PURE__ */ jsxs(
5766
5837
  DropdownMenuPrimitive.SubTrigger,
@@ -5784,7 +5855,7 @@ var DropdownMenuSubTrigger = React77.forwardRef((_a, ref) => {
5784
5855
  );
5785
5856
  });
5786
5857
  DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
5787
- var DropdownMenuSubContent = React77.forwardRef((_a, ref) => {
5858
+ var DropdownMenuSubContent = React78.forwardRef((_a, ref) => {
5788
5859
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
5789
5860
  return /* @__PURE__ */ jsx(
5790
5861
  DropdownMenuPrimitive.SubContent,
@@ -5799,7 +5870,7 @@ var DropdownMenuSubContent = React77.forwardRef((_a, ref) => {
5799
5870
  );
5800
5871
  });
5801
5872
  DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
5802
- var DropdownMenuContent = React77.forwardRef((_a, ref) => {
5873
+ var DropdownMenuContent = React78.forwardRef((_a, ref) => {
5803
5874
  var _b = _a, { className, sideOffset = 4, search, searchValue, onSearchChange, onSearchClear, searchPlaceholder = "Search", children } = _b, props = __objRest(_b, ["className", "sideOffset", "search", "searchValue", "onSearchChange", "onSearchClear", "searchPlaceholder", "children"]);
5804
5875
  return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
5805
5876
  DropdownMenuPrimitive.Content,
@@ -5837,7 +5908,7 @@ var DropdownMenuContent = React77.forwardRef((_a, ref) => {
5837
5908
  ) });
5838
5909
  });
5839
5910
  DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
5840
- var DropdownMenuItem = React77.forwardRef((_a, ref) => {
5911
+ var DropdownMenuItem = React78.forwardRef((_a, ref) => {
5841
5912
  var _b = _a, { className, inset, variant = "default" } = _b, props = __objRest(_b, ["className", "inset", "variant"]);
5842
5913
  return /* @__PURE__ */ jsx(
5843
5914
  DropdownMenuPrimitive.Item,
@@ -5858,7 +5929,7 @@ var DropdownMenuItem = React77.forwardRef((_a, ref) => {
5858
5929
  );
5859
5930
  });
5860
5931
  DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
5861
- var DropdownMenuCheckboxItem = React77.forwardRef((_a, ref) => {
5932
+ var DropdownMenuCheckboxItem = React78.forwardRef((_a, ref) => {
5862
5933
  var _b = _a, { className, children, checked } = _b, props = __objRest(_b, ["className", "children", "checked"]);
5863
5934
  return /* @__PURE__ */ jsxs(
5864
5935
  DropdownMenuPrimitive.CheckboxItem,
@@ -5880,7 +5951,7 @@ var DropdownMenuCheckboxItem = React77.forwardRef((_a, ref) => {
5880
5951
  );
5881
5952
  });
5882
5953
  DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
5883
- var DropdownMenuRadioItem = React77.forwardRef((_a, ref) => {
5954
+ var DropdownMenuRadioItem = React78.forwardRef((_a, ref) => {
5884
5955
  var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
5885
5956
  return /* @__PURE__ */ jsxs(
5886
5957
  DropdownMenuPrimitive.RadioItem,
@@ -5901,7 +5972,7 @@ var DropdownMenuRadioItem = React77.forwardRef((_a, ref) => {
5901
5972
  );
5902
5973
  });
5903
5974
  DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
5904
- var DropdownMenuLabel = React77.forwardRef((_a, ref) => {
5975
+ var DropdownMenuLabel = React78.forwardRef((_a, ref) => {
5905
5976
  var _b = _a, { className, inset } = _b, props = __objRest(_b, ["className", "inset"]);
5906
5977
  return /* @__PURE__ */ jsx(
5907
5978
  DropdownMenuPrimitive.Label,
@@ -5916,7 +5987,7 @@ var DropdownMenuLabel = React77.forwardRef((_a, ref) => {
5916
5987
  );
5917
5988
  });
5918
5989
  DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
5919
- var DropdownMenuSeparator = React77.forwardRef((_a, ref) => {
5990
+ var DropdownMenuSeparator = React78.forwardRef((_a, ref) => {
5920
5991
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
5921
5992
  return /* @__PURE__ */ jsx(
5922
5993
  DropdownMenuPrimitive.Separator,
@@ -5945,7 +6016,7 @@ var DropdownMenuShortcut = (_a) => {
5945
6016
  );
5946
6017
  };
5947
6018
  DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
5948
- var DropdownMenuCaption = React77.forwardRef((_a, ref) => {
6019
+ var DropdownMenuCaption = React78.forwardRef((_a, ref) => {
5949
6020
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
5950
6021
  return /* @__PURE__ */ jsx(
5951
6022
  "p",
@@ -5960,7 +6031,7 @@ var DropdownMenuCaption = React77.forwardRef((_a, ref) => {
5960
6031
  );
5961
6032
  });
5962
6033
  DropdownMenuCaption.displayName = "DropdownMenuCaption";
5963
- var DropdownMenuUserbar = React77.forwardRef((_a, ref) => {
6034
+ var DropdownMenuUserbar = React78.forwardRef((_a, ref) => {
5964
6035
  var _b = _a, { className, name, email, avatar, badge } = _b, props = __objRest(_b, ["className", "name", "email", "avatar", "badge"]);
5965
6036
  return /* @__PURE__ */ jsxs(
5966
6037
  "div",
@@ -5985,7 +6056,7 @@ var DropdownMenuUserbar = React77.forwardRef((_a, ref) => {
5985
6056
  );
5986
6057
  });
5987
6058
  DropdownMenuUserbar.displayName = "DropdownMenuUserbar";
5988
- var DropdownMenuLargeItem = React77.forwardRef((_a, ref) => {
6059
+ var DropdownMenuLargeItem = React78.forwardRef((_a, ref) => {
5989
6060
  var _b = _a, { className, label, caption, icon, badge, tailIcon } = _b, props = __objRest(_b, ["className", "label", "caption", "icon", "badge", "tailIcon"]);
5990
6061
  return /* @__PURE__ */ jsxs(
5991
6062
  DropdownMenuPrimitive.Item,
@@ -6026,7 +6097,7 @@ var emptyStateVariants = cva(
6026
6097
  }
6027
6098
  }
6028
6099
  );
6029
- var EmptyState = React77.forwardRef(
6100
+ var EmptyState = React78.forwardRef(
6030
6101
  (_a, ref) => {
6031
6102
  var _b = _a, {
6032
6103
  className,
@@ -6084,14 +6155,15 @@ var EmptyState = React77.forwardRef(
6084
6155
  EmptyState.displayName = "EmptyState";
6085
6156
  function EmptyStateText({
6086
6157
  title,
6087
- description
6158
+ description,
6159
+ titleAs: TitleTag = "h3"
6088
6160
  }) {
6089
6161
  return /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-1 text-center w-full", children: [
6090
- /* @__PURE__ */ jsx("p", { className: "text-sm font-medium leading-5 text-sui-text-subtle w-full", children: title }),
6162
+ /* @__PURE__ */ jsx(TitleTag, { className: "text-sm font-medium leading-5 text-sui-text-subtle w-full m-0", children: title }),
6091
6163
  /* @__PURE__ */ jsx("p", { className: "text-xs leading-4 text-sui-text-muted w-full", children: description })
6092
6164
  ] });
6093
6165
  }
6094
- var FileUploadArea = React77.forwardRef(
6166
+ var FileUploadArea = React78.forwardRef(
6095
6167
  (_a, ref) => {
6096
6168
  var _b = _a, {
6097
6169
  className,
@@ -6116,8 +6188,8 @@ var FileUploadArea = React77.forwardRef(
6116
6188
  "onDrop",
6117
6189
  "onDragOver"
6118
6190
  ]);
6119
- const [isDragOver, setIsDragOver] = React77.useState(false);
6120
- const handleDragOver = React77.useCallback(
6191
+ const [isDragOver, setIsDragOver] = React78.useState(false);
6192
+ const handleDragOver = React78.useCallback(
6121
6193
  (e) => {
6122
6194
  if (disabled) return;
6123
6195
  e.preventDefault();
@@ -6126,10 +6198,10 @@ var FileUploadArea = React77.forwardRef(
6126
6198
  },
6127
6199
  [disabled, onDragOver]
6128
6200
  );
6129
- const handleDragLeave = React77.useCallback(() => {
6201
+ const handleDragLeave = React78.useCallback(() => {
6130
6202
  setIsDragOver(false);
6131
6203
  }, []);
6132
- const handleDrop = React77.useCallback(
6204
+ const handleDrop = React78.useCallback(
6133
6205
  (e) => {
6134
6206
  if (disabled) return;
6135
6207
  e.preventDefault();
@@ -6138,11 +6210,11 @@ var FileUploadArea = React77.forwardRef(
6138
6210
  },
6139
6211
  [disabled, onDrop]
6140
6212
  );
6141
- const handleClick = React77.useCallback(() => {
6213
+ const handleClick = React78.useCallback(() => {
6142
6214
  if (disabled) return;
6143
6215
  onClick == null ? void 0 : onClick();
6144
6216
  }, [disabled, onClick]);
6145
- const handleKeyDown = React77.useCallback(
6217
+ const handleKeyDown = React78.useCallback(
6146
6218
  (e) => {
6147
6219
  if (disabled) return;
6148
6220
  if (e.key === "Enter" || e.key === " ") {
@@ -6171,7 +6243,7 @@ var FileUploadArea = React77.forwardRef(
6171
6243
  // Focus
6172
6244
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sui-border-highlight focus-visible:ring-offset-2 focus-visible:ring-offset-sui-bg-default",
6173
6245
  // Hover (not disabled)
6174
- !disabled && "hover:bg-sui-bg-state-secondary-hover cursor-pointer",
6246
+ !disabled && "[@media(hover:hover)]:hover:bg-sui-bg-state-secondary-hover cursor-pointer",
6175
6247
  // Drag-over state
6176
6248
  !disabled && isDragOver && "bg-sui-bg-state-secondary-hover",
6177
6249
  // Disabled
@@ -6258,7 +6330,7 @@ var progressBarVariants = cva(
6258
6330
  }
6259
6331
  );
6260
6332
  var SEGMENT_COUNT = 10;
6261
- var ProgressBar = React77.forwardRef(
6333
+ var ProgressBar = React78.forwardRef(
6262
6334
  (_a, ref) => {
6263
6335
  var _b = _a, {
6264
6336
  className,
@@ -6280,7 +6352,7 @@ var ProgressBar = React77.forwardRef(
6280
6352
  const clampedValue = Math.min(100, Math.max(0, value != null ? value : 0));
6281
6353
  const displayPercentage = `${Math.round(clampedValue)}%`;
6282
6354
  const filledSegments = Math.round(clampedValue / 100 * SEGMENT_COUNT);
6283
- const generatedId = React77.useId();
6355
+ const generatedId = React78.useId();
6284
6356
  const labelId = `${generatedId}-label`;
6285
6357
  return /* @__PURE__ */ jsxs(
6286
6358
  "div",
@@ -6298,7 +6370,7 @@ var ProgressBar = React77.forwardRef(
6298
6370
  children: labelText
6299
6371
  }
6300
6372
  ) }),
6301
- /* @__PURE__ */ jsx("div", { className: "flex items-center gap-1", children: /* @__PURE__ */ jsx("span", { className: "text-sm font-normal leading-5 text-sui-text-muted", children: displayPercentage }) })
6373
+ /* @__PURE__ */ jsx("div", { className: "flex items-center gap-1", children: /* @__PURE__ */ jsx("span", { className: "text-sm font-normal leading-5 tabular-nums text-sui-text-muted", children: displayPercentage }) })
6302
6374
  ] }),
6303
6375
  variant === "dashed" ? (
6304
6376
  /* Dashed variant: 10 individual segments */
@@ -6366,7 +6438,7 @@ var statusLabel = {
6366
6438
  uploading: "Uploading...",
6367
6439
  failed: "Error"
6368
6440
  };
6369
- var FileUploadCard = React77.forwardRef(
6441
+ var FileUploadCard = React78.forwardRef(
6370
6442
  (_a, ref) => {
6371
6443
  var _b = _a, {
6372
6444
  className,
@@ -6578,7 +6650,7 @@ var lineColorMap = {
6578
6650
  warning: "bg-sui-bg-basic-orange-accent",
6579
6651
  error: "bg-sui-bg-basic-red-accent"
6580
6652
  };
6581
- var InlineTips = React77.forwardRef(
6653
+ var InlineTips = React78.forwardRef(
6582
6654
  (_a, ref) => {
6583
6655
  var _b = _a, {
6584
6656
  className,
@@ -6680,7 +6752,7 @@ function validateFile(file, accept, maxSize) {
6680
6752
  }
6681
6753
  return null;
6682
6754
  }
6683
- var FileUpload = React77.forwardRef(
6755
+ var FileUpload = React78.forwardRef(
6684
6756
  ({
6685
6757
  files = [],
6686
6758
  onFilesAdded,
@@ -6701,37 +6773,55 @@ var FileUpload = React77.forwardRef(
6701
6773
  icon,
6702
6774
  className
6703
6775
  }, ref) => {
6704
- const inputRef = React77.useRef(null);
6705
- const [errors, setErrors] = React77.useState([]);
6706
- const thumbnailCache = React77.useRef(/* @__PURE__ */ new Map());
6707
- React77.useEffect(() => {
6776
+ const inputRef = React78.useRef(null);
6777
+ const [errors, setErrors] = React78.useState([]);
6778
+ const [thumbnails, setThumbnails] = React78.useState(
6779
+ {}
6780
+ );
6781
+ const thumbnailsRef = React78.useRef(thumbnails);
6782
+ React78.useEffect(() => {
6783
+ thumbnailsRef.current = thumbnails;
6784
+ }, [thumbnails]);
6785
+ React78.useEffect(() => {
6708
6786
  if (!autoPreview) return;
6709
- const cache = thumbnailCache.current;
6710
- for (const f of files) {
6711
- if (!f.thumbnail && !cache.has(f.id)) {
6712
- const url = generateThumbnail(f.file);
6713
- if (url) cache.set(f.id, url);
6787
+ setThumbnails((prev) => {
6788
+ let next = prev;
6789
+ let changed = false;
6790
+ for (const f of files) {
6791
+ if (!f.thumbnail && !next[f.id]) {
6792
+ const url = generateThumbnail(f.file);
6793
+ if (url) {
6794
+ if (!changed) {
6795
+ next = __spreadValues({}, prev);
6796
+ changed = true;
6797
+ }
6798
+ next[f.id] = url;
6799
+ }
6800
+ }
6714
6801
  }
6715
- }
6716
- const currentIds = new Set(files.map((f) => f.id));
6717
- for (const [id, url] of cache) {
6718
- if (!currentIds.has(id)) {
6719
- URL.revokeObjectURL(url);
6720
- cache.delete(id);
6802
+ const currentIds = new Set(files.map((f) => f.id));
6803
+ for (const id of Object.keys(prev)) {
6804
+ if (!currentIds.has(id)) {
6805
+ URL.revokeObjectURL(prev[id]);
6806
+ if (!changed) {
6807
+ next = __spreadValues({}, prev);
6808
+ changed = true;
6809
+ }
6810
+ delete next[id];
6811
+ }
6721
6812
  }
6722
- }
6813
+ return changed ? next : prev;
6814
+ });
6723
6815
  }, [files, autoPreview]);
6724
- React77.useEffect(() => {
6725
- const cache = thumbnailCache.current;
6816
+ React78.useEffect(() => {
6726
6817
  return () => {
6727
- for (const url of cache.values()) {
6818
+ for (const url of Object.values(thumbnailsRef.current)) {
6728
6819
  URL.revokeObjectURL(url);
6729
6820
  }
6730
- cache.clear();
6731
6821
  };
6732
6822
  }, []);
6733
6823
  const resolvedDescription = description != null ? description : generateDescription(accept, maxSize, maxFiles);
6734
- const processFiles = React77.useCallback(
6824
+ const processFiles = React78.useCallback(
6735
6825
  (fileList) => {
6736
6826
  const newFiles = Array.from(fileList);
6737
6827
  const validationErrors = [];
@@ -6759,11 +6849,11 @@ var FileUpload = React77.forwardRef(
6759
6849
  },
6760
6850
  [files.length, maxFiles, accept, maxSize, onFilesAdded]
6761
6851
  );
6762
- const handleClick = React77.useCallback(() => {
6852
+ const handleClick = React78.useCallback(() => {
6763
6853
  var _a;
6764
6854
  (_a = inputRef.current) == null ? void 0 : _a.click();
6765
6855
  }, []);
6766
- const handleInputChange = React77.useCallback(
6856
+ const handleInputChange = React78.useCallback(
6767
6857
  (e) => {
6768
6858
  if (e.target.files && e.target.files.length > 0) {
6769
6859
  processFiles(e.target.files);
@@ -6772,7 +6862,7 @@ var FileUpload = React77.forwardRef(
6772
6862
  },
6773
6863
  [processFiles]
6774
6864
  );
6775
- const handleDrop = React77.useCallback(
6865
+ const handleDrop = React78.useCallback(
6776
6866
  (e) => {
6777
6867
  if (e.dataTransfer.files && e.dataTransfer.files.length > 0) {
6778
6868
  processFiles(e.dataTransfer.files);
@@ -6780,10 +6870,10 @@ var FileUpload = React77.forwardRef(
6780
6870
  },
6781
6871
  [processFiles]
6782
6872
  );
6783
- const dismissError = React77.useCallback((index) => {
6873
+ const dismissError = React78.useCallback((index) => {
6784
6874
  setErrors((prev) => prev.filter((_, i) => i !== index));
6785
6875
  }, []);
6786
- const handlePaste = React77.useCallback(
6876
+ const handlePaste = React78.useCallback(
6787
6877
  (e) => {
6788
6878
  var _a;
6789
6879
  if (disabled || !pasteEnabled) return;
@@ -6804,7 +6894,7 @@ var FileUpload = React77.forwardRef(
6804
6894
  },
6805
6895
  [disabled, pasteEnabled, processFiles]
6806
6896
  );
6807
- const handleCancel = React77.useCallback(
6897
+ const handleCancel = React78.useCallback(
6808
6898
  (id) => {
6809
6899
  const uploadFile = files.find((f) => f.id === id);
6810
6900
  if (uploadFile == null ? void 0 : uploadFile.abortController) {
@@ -6880,7 +6970,7 @@ var FileUpload = React77.forwardRef(
6880
6970
  fileSize: formatBytes(uploadFile.file.size),
6881
6971
  state: uploadFile.state,
6882
6972
  size: cardSize,
6883
- thumbnail: (_a = uploadFile.thumbnail) != null ? _a : autoPreview ? thumbnailCache.current.get(uploadFile.id) : void 0,
6973
+ thumbnail: (_a = uploadFile.thumbnail) != null ? _a : autoPreview ? thumbnails[uploadFile.id] : void 0,
6884
6974
  progress: uploadFile.progress,
6885
6975
  onRemove: uploadFile.state === "uploading" && onCancel ? () => handleCancel(uploadFile.id) : onRemove ? () => onRemove(uploadFile.id) : void 0,
6886
6976
  onRetry: uploadFile.state === "failed" && onRetry ? () => onRetry(uploadFile.id) : void 0,
@@ -6921,7 +7011,7 @@ var ariaSortMap = {
6921
7011
  desc: "descending",
6922
7012
  none: "none"
6923
7013
  };
6924
- var GridTableHeaderItem = React77.forwardRef(
7014
+ var GridTableHeaderItem = React78.forwardRef(
6925
7015
  (_a, ref) => {
6926
7016
  var _b = _a, {
6927
7017
  className,
@@ -7023,7 +7113,7 @@ var gridTableRowVariants = cva(
7023
7113
  }
7024
7114
  }
7025
7115
  );
7026
- var GridTableRow = React77.forwardRef(
7116
+ var GridTableRow = React78.forwardRef(
7027
7117
  (_a, ref) => {
7028
7118
  var _b = _a, { className, variant = "default", children } = _b, props = __objRest(_b, ["className", "variant", "children"]);
7029
7119
  return /* @__PURE__ */ jsx(
@@ -7039,7 +7129,7 @@ var GridTableRow = React77.forwardRef(
7039
7129
  }
7040
7130
  );
7041
7131
  GridTableRow.displayName = "GridTableRow";
7042
- var GridTableCell = React77.forwardRef(
7132
+ var GridTableCell = React78.forwardRef(
7043
7133
  (_a, ref) => {
7044
7134
  var _b = _a, { className, bordered = true, children } = _b, props = __objRest(_b, ["className", "bordered", "children"]);
7045
7135
  return /* @__PURE__ */ jsx(
@@ -7083,7 +7173,7 @@ var gridTableSlotItemVariants = cva(
7083
7173
  }
7084
7174
  }
7085
7175
  );
7086
- var GridTableSlotItem = React77.forwardRef(
7176
+ var GridTableSlotItem = React78.forwardRef(
7087
7177
  (_a, ref) => {
7088
7178
  var _b = _a, {
7089
7179
  className,
@@ -7194,7 +7284,8 @@ var GridTableSlotItem = React77.forwardRef(
7194
7284
  );
7195
7285
  GridTableSlotItem.displayName = "GridTableSlotItem";
7196
7286
  var stepperNumberVariants = cva(
7197
- "relative flex items-center justify-center overflow-hidden rounded-full border border-sui-border-darker font-semibold shadow-default transition-colors duration-200",
7287
+ // tabular-nums keeps step counter from jiggling between numbers (Web Interface Guidelines #19)
7288
+ "relative flex items-center justify-center overflow-hidden rounded-full border border-sui-border-darker font-semibold tabular-nums shadow-default transition-colors duration-200",
7198
7289
  {
7199
7290
  variants: {
7200
7291
  size: {
@@ -7230,7 +7321,7 @@ var stepperNumberVariants = cva(
7230
7321
  }
7231
7322
  }
7232
7323
  );
7233
- var StepperNumber = React77.forwardRef(
7324
+ var StepperNumber = React78.forwardRef(
7234
7325
  (_a, ref) => {
7235
7326
  var _b = _a, { className, size, color, number = "1" } = _b, props = __objRest(_b, ["className", "size", "color", "number"]);
7236
7327
  return /* @__PURE__ */ jsxs(
@@ -7269,7 +7360,7 @@ var stepperIconVariants = cva(
7269
7360
  }
7270
7361
  }
7271
7362
  );
7272
- var StepperIcon = React77.forwardRef(
7363
+ var StepperIcon = React78.forwardRef(
7273
7364
  (_a, ref) => {
7274
7365
  var _b = _a, { className, variant = "dot-large", icon } = _b, props = __objRest(_b, ["className", "variant", "icon"]);
7275
7366
  return /* @__PURE__ */ jsxs(
@@ -7323,7 +7414,7 @@ function ConnectorLine({ success }) {
7323
7414
  }
7324
7415
  );
7325
7416
  }
7326
- var HorizontalStepperItem = React77.forwardRef(
7417
+ var HorizontalStepperItem = React78.forwardRef(
7327
7418
  (_a, ref) => {
7328
7419
  var _b = _a, {
7329
7420
  className,
@@ -7448,7 +7539,7 @@ var HorizontalStepperItem = React77.forwardRef(
7448
7539
  }
7449
7540
  );
7450
7541
  HorizontalStepperItem.displayName = "HorizontalStepperItem";
7451
- var HorizontalStepper = React77.forwardRef(
7542
+ var HorizontalStepper = React78.forwardRef(
7452
7543
  (_a, ref) => {
7453
7544
  var _b = _a, {
7454
7545
  className,
@@ -7523,13 +7614,15 @@ var HorizontalStepper = React77.forwardRef(
7523
7614
  }
7524
7615
  );
7525
7616
  HorizontalStepper.displayName = "HorizontalStepper";
7526
- var Input = React77.forwardRef(
7617
+ var Input = React78.forwardRef(
7527
7618
  (_a, ref) => {
7528
- var _b = _a, { className, type } = _b, props = __objRest(_b, ["className", "type"]);
7619
+ var _b = _a, { className, type, spellCheck, autoComplete } = _b, props = __objRest(_b, ["className", "type", "spellCheck", "autoComplete"]);
7529
7620
  return /* @__PURE__ */ jsx(
7530
7621
  "input",
7531
7622
  __spreadValues({
7532
7623
  type,
7624
+ spellCheck: spellCheck != null ? spellCheck : false,
7625
+ autoComplete: autoComplete != null ? autoComplete : "off",
7533
7626
  className: cn(
7534
7627
  "flex h-10 w-full rounded-md border border-sui-border-darker bg-sui-bg-input px-3 py-2 text-base ring-offset-sui-bg-default file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-sui-text-default placeholder:text-sui-text-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sui-border-highlight focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:text-sui-text-hint disabled:pointer-events-none md:text-sm",
7535
7628
  className
@@ -7561,7 +7654,7 @@ var inputButtonVariants = cva(
7561
7654
  inputButtonStyle: {
7562
7655
  default: [
7563
7656
  "bg-sui-bg-state-ghost",
7564
- "hover:bg-sui-bg-state-ghost-hover",
7657
+ "[@media(hover:hover)]:hover:bg-sui-bg-state-ghost-hover",
7565
7658
  "active:bg-sui-bg-state-ghost-press",
7566
7659
  "text-sui-text-default",
7567
7660
  "[&_i]:text-icon-default-muted [&_svg]:text-icon-default-muted",
@@ -7570,10 +7663,10 @@ var inputButtonVariants = cva(
7570
7663
  ],
7571
7664
  muted: [
7572
7665
  "bg-sui-bg-state-ghost",
7573
- "hover:bg-sui-bg-state-ghost-hover",
7666
+ "[@media(hover:hover)]:hover:bg-sui-bg-state-ghost-hover",
7574
7667
  "active:bg-sui-bg-state-ghost-press",
7575
7668
  "text-sui-text-muted",
7576
- "hover:text-sui-text-default",
7669
+ "[@media(hover:hover)]:hover:text-sui-text-default",
7577
7670
  "[&_i]:text-icon-default-muted [&_svg]:text-icon-default-muted",
7578
7671
  "disabled:text-sui-text-hint",
7579
7672
  "[&:disabled_i]:text-icon-default-disabled [&:disabled_svg]:text-icon-default-disabled"
@@ -7581,7 +7674,7 @@ var inputButtonVariants = cva(
7581
7674
  inline: [
7582
7675
  "bg-transparent",
7583
7676
  "text-sui-text-muted",
7584
- "hover:text-sui-text-default",
7677
+ "[@media(hover:hover)]:hover:text-sui-text-default",
7585
7678
  "[&_i]:text-icon-default-muted [&_svg]:text-icon-default-muted",
7586
7679
  "disabled:text-sui-text-hint",
7587
7680
  "[&:disabled_i]:text-icon-default-disabled [&:disabled_svg]:text-icon-default-disabled"
@@ -7613,8 +7706,8 @@ var inputButtonVariants = cva(
7613
7706
  }
7614
7707
  }
7615
7708
  );
7616
- var iconOnlyHoverClasses = "hover:[&_i]:text-icon-default-subtle hover:[&_svg]:text-icon-default-subtle active:[&_i]:text-icon-default-subtle active:[&_svg]:text-icon-default-subtle";
7617
- var InputButton = React77.forwardRef(
7709
+ var iconOnlyHoverClasses = "[@media(hover:hover)]:hover:[&_i]:text-icon-default-subtle [@media(hover:hover)]:hover:[&_svg]:text-icon-default-subtle active:[&_i]:text-icon-default-subtle active:[&_svg]:text-icon-default-subtle";
7710
+ var InputButton = React78.forwardRef(
7618
7711
  (_a, ref) => {
7619
7712
  var _b = _a, {
7620
7713
  className,
@@ -7649,9 +7742,7 @@ var InputButton = React77.forwardRef(
7649
7742
  const isIconOnly = variant === "icon-only";
7650
7743
  const isShortcut = variant === "shortcut";
7651
7744
  const isTags = variant === "tags";
7652
- if (process.env.NODE_ENV !== "production" && isIconOnly && !props["aria-label"]) {
7653
- console.warn("InputButton: icon-only variant requires an `aria-label` for accessibility.");
7654
- }
7745
+ useDevWarnIconOnlyAriaLabel(isIconOnly, props["aria-label"], props["aria-labelledby"], "InputButton");
7655
7746
  const a11yProps = {};
7656
7747
  if (isShortcut && shortcutKey && !props["aria-keyshortcuts"]) {
7657
7748
  a11yProps["aria-keyshortcuts"] = shortcutKey;
@@ -7748,7 +7839,7 @@ var InputButton = React77.forwardRef(
7748
7839
  }
7749
7840
  );
7750
7841
  InputButton.displayName = "InputButton";
7751
- var InputStepper = React77.forwardRef(
7842
+ var InputStepper = React78.forwardRef(
7752
7843
  ({ onIncrement, onDecrement, disabled, className }, ref) => {
7753
7844
  return /* @__PURE__ */ jsxs(
7754
7845
  "div",
@@ -7769,7 +7860,7 @@ var InputStepper = React77.forwardRef(
7769
7860
  className: cn(
7770
7861
  "flex flex-1 w-full min-h-0 items-center justify-center",
7771
7862
  "transition-colors",
7772
- "hover:bg-sui-bg-state-ghost-hover active:bg-sui-bg-state-ghost-press",
7863
+ "[@media(hover:hover)]:hover:bg-sui-bg-state-ghost-hover active:bg-sui-bg-state-ghost-press",
7773
7864
  "focus-visible:outline-none focus-visible:bg-sui-bg-state-ghost-hover",
7774
7865
  "disabled:pointer-events-none",
7775
7866
  disabled ? "[&_i]:text-icon-default-disabled [&_svg]:text-icon-default-disabled" : "[&_i]:text-icon-default-muted [&_svg]:text-icon-default-muted"
@@ -7791,7 +7882,7 @@ var InputStepper = React77.forwardRef(
7791
7882
  className: cn(
7792
7883
  "flex flex-1 w-full min-h-0 items-center justify-center",
7793
7884
  "transition-colors",
7794
- "hover:bg-sui-bg-state-ghost-hover active:bg-sui-bg-state-ghost-press",
7885
+ "[@media(hover:hover)]:hover:bg-sui-bg-state-ghost-hover active:bg-sui-bg-state-ghost-press",
7795
7886
  "focus-visible:outline-none focus-visible:bg-sui-bg-state-ghost-hover",
7796
7887
  "disabled:pointer-events-none",
7797
7888
  disabled ? "[&_i]:text-icon-default-disabled [&_svg]:text-icon-default-disabled" : "[&_i]:text-icon-default-muted [&_svg]:text-icon-default-muted"
@@ -7805,7 +7896,7 @@ var InputStepper = React77.forwardRef(
7805
7896
  }
7806
7897
  );
7807
7898
  InputStepper.displayName = "InputStepper";
7808
- var NavigationMenu = React77.forwardRef((_a, ref) => {
7899
+ var NavigationMenu = React78.forwardRef((_a, ref) => {
7809
7900
  var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
7810
7901
  return /* @__PURE__ */ jsxs(
7811
7902
  NavigationMenuPrimitive.Root,
@@ -7824,7 +7915,7 @@ var NavigationMenu = React77.forwardRef((_a, ref) => {
7824
7915
  );
7825
7916
  });
7826
7917
  NavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName;
7827
- var NavigationMenuList = React77.forwardRef((_a, ref) => {
7918
+ var NavigationMenuList = React78.forwardRef((_a, ref) => {
7828
7919
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
7829
7920
  return /* @__PURE__ */ jsx(
7830
7921
  NavigationMenuPrimitive.List,
@@ -7840,9 +7931,9 @@ var NavigationMenuList = React77.forwardRef((_a, ref) => {
7840
7931
  NavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName;
7841
7932
  var NavigationMenuItem = NavigationMenuPrimitive.Item;
7842
7933
  var navigationMenuTriggerStyle = cva(
7843
- "group inline-flex h-10 w-max items-center justify-center rounded-md bg-transparent px-4 py-2 text-sm font-medium text-sui-text-default transition-colors hover:bg-sui-bg-state-ghost-hover hover:text-sui-text-default focus:bg-sui-bg-state-ghost-hover focus:text-sui-text-default focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sui-border-highlight focus-visible:ring-offset-2 focus-visible:ring-offset-sui-bg-default disabled:text-sui-text-hint disabled:pointer-events-none data-[state=open]:text-sui-text-default data-[state=open]:bg-sui-bg-state-ghost-hover"
7934
+ "group inline-flex h-10 w-max items-center justify-center rounded-md bg-transparent px-4 py-2 text-sm font-medium text-sui-text-default transition-colors [@media(hover:hover)]:hover:bg-sui-bg-state-ghost-hover [@media(hover:hover)]:hover:text-sui-text-default focus:bg-sui-bg-state-ghost-hover focus:text-sui-text-default focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sui-border-highlight focus-visible:ring-offset-2 focus-visible:ring-offset-sui-bg-default disabled:text-sui-text-hint disabled:pointer-events-none data-[state=open]:text-sui-text-default data-[state=open]:bg-sui-bg-state-ghost-hover"
7844
7935
  );
7845
- var NavigationMenuTrigger = React77.forwardRef((_a, ref) => {
7936
+ var NavigationMenuTrigger = React78.forwardRef((_a, ref) => {
7846
7937
  var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
7847
7938
  return /* @__PURE__ */ jsxs(
7848
7939
  NavigationMenuPrimitive.Trigger,
@@ -7865,7 +7956,7 @@ var NavigationMenuTrigger = React77.forwardRef((_a, ref) => {
7865
7956
  );
7866
7957
  });
7867
7958
  NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName;
7868
- var NavigationMenuContent = React77.forwardRef((_a, ref) => {
7959
+ var NavigationMenuContent = React78.forwardRef((_a, ref) => {
7869
7960
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
7870
7961
  return /* @__PURE__ */ jsx(
7871
7962
  NavigationMenuPrimitive.Content,
@@ -7880,7 +7971,7 @@ var NavigationMenuContent = React77.forwardRef((_a, ref) => {
7880
7971
  });
7881
7972
  NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName;
7882
7973
  var NavigationMenuLink = NavigationMenuPrimitive.Link;
7883
- var NavigationMenuViewport = React77.forwardRef((_a, ref) => {
7974
+ var NavigationMenuViewport = React78.forwardRef((_a, ref) => {
7884
7975
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
7885
7976
  return /* @__PURE__ */ jsx("div", { className: cn("absolute left-0 top-full flex justify-center"), children: /* @__PURE__ */ jsx(
7886
7977
  NavigationMenuPrimitive.Viewport,
@@ -7894,7 +7985,7 @@ var NavigationMenuViewport = React77.forwardRef((_a, ref) => {
7894
7985
  ) });
7895
7986
  });
7896
7987
  NavigationMenuViewport.displayName = NavigationMenuPrimitive.Viewport.displayName;
7897
- var NavigationMenuIndicator = React77.forwardRef((_a, ref) => {
7988
+ var NavigationMenuIndicator = React78.forwardRef((_a, ref) => {
7898
7989
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
7899
7990
  return /* @__PURE__ */ jsx(
7900
7991
  NavigationMenuPrimitive.Indicator,
@@ -7927,8 +8018,8 @@ var pageItemVariants = cva(
7927
8018
  "inline-flex items-center justify-center",
7928
8019
  "size-8 min-h-8 min-w-8",
7929
8020
  "rounded-sm overflow-clip cursor-pointer",
7930
- // Typography
7931
- "font-sans font-medium text-sm leading-5 text-center whitespace-nowrap",
8021
+ // Typography — tabular-nums keeps page numbers from jiggling as values change (Web Interface Guidelines #19)
8022
+ "font-sans font-medium text-sm leading-5 text-center whitespace-nowrap tabular-nums",
7932
8023
  // Default state
7933
8024
  "bg-sui-bg-state-ghost text-sui-text-hint",
7934
8025
  // Hover state
@@ -7965,7 +8056,7 @@ var activeDotClasses = [
7965
8056
  "bg-sui-bg-basic-blue-accent",
7966
8057
  "[@media(hover:hover)]:hover:bg-sui-bg-basic-blue-accent"
7967
8058
  ].join(" ");
7968
- var PageItem = React77.forwardRef(
8059
+ var PageItem = React78.forwardRef(
7969
8060
  (_a, ref) => {
7970
8061
  var _b = _a, { className, variant = "default", active = false, label = "0", disabled, asChild = false } = _b, props = __objRest(_b, ["className", "variant", "active", "label", "disabled", "asChild"]);
7971
8062
  const Comp = asChild ? Slot : "button";
@@ -8000,7 +8091,7 @@ var Pagination = (_a) => {
8000
8091
  );
8001
8092
  };
8002
8093
  Pagination.displayName = "Pagination";
8003
- var PaginationContent = React77.forwardRef((_a, ref) => {
8094
+ var PaginationContent = React78.forwardRef((_a, ref) => {
8004
8095
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
8005
8096
  return /* @__PURE__ */ jsx(
8006
8097
  "ul",
@@ -8011,7 +8102,7 @@ var PaginationContent = React77.forwardRef((_a, ref) => {
8011
8102
  );
8012
8103
  });
8013
8104
  PaginationContent.displayName = "PaginationContent";
8014
- var PaginationItem = React77.forwardRef((_a, ref) => {
8105
+ var PaginationItem = React78.forwardRef((_a, ref) => {
8015
8106
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
8016
8107
  return /* @__PURE__ */ jsx("li", __spreadValues({ ref, className: cn("", className) }, props));
8017
8108
  });
@@ -8132,7 +8223,7 @@ function getPageRange(currentPage, totalPages, maxVisible) {
8132
8223
  }
8133
8224
  return pages;
8134
8225
  }
8135
- var Paginator = React77.forwardRef(
8226
+ var Paginator = React78.forwardRef(
8136
8227
  (_a, ref) => {
8137
8228
  var _b = _a, {
8138
8229
  className,
@@ -8312,7 +8403,7 @@ var Paginator = React77.forwardRef(
8312
8403
  }
8313
8404
  );
8314
8405
  Paginator.displayName = "Paginator";
8315
- var Progress = React77.forwardRef((_a, ref) => {
8406
+ var Progress = React78.forwardRef((_a, ref) => {
8316
8407
  var _b = _a, { className, value } = _b, props = __objRest(_b, ["className", "value"]);
8317
8408
  return /* @__PURE__ */ jsx(
8318
8409
  ProgressPrimitive2.Root,
@@ -8362,7 +8453,7 @@ var arcStrokeVarMap = {
8362
8453
  success: "var(--text-success)",
8363
8454
  failed: "var(--text-destructive)"
8364
8455
  };
8365
- var RadialProgressBar = React77.forwardRef(
8456
+ var RadialProgressBar = React78.forwardRef(
8366
8457
  (_a, ref) => {
8367
8458
  var _b = _a, {
8368
8459
  className,
@@ -8464,7 +8555,8 @@ var RadialProgressBar = React77.forwardRef(
8464
8555
  {
8465
8556
  "aria-hidden": "true",
8466
8557
  className: cn(
8467
- "absolute text-sm font-medium leading-5 text-center select-none",
8558
+ // tabular-nums keeps percentage from jiggling as value changes (Web Interface Guidelines #19)
8559
+ "absolute text-sm font-medium leading-5 tabular-nums text-center select-none",
8468
8560
  textVariantMap[variant != null ? variant : "default"],
8469
8561
  isHalf ? "bottom-0" : ""
8470
8562
  ),
@@ -8481,7 +8573,7 @@ var RadialProgressBar = React77.forwardRef(
8481
8573
  }
8482
8574
  );
8483
8575
  RadialProgressBar.displayName = "RadialProgressBar";
8484
- var RadioGroup2 = React77.forwardRef((_a, ref) => {
8576
+ var RadioGroup2 = React78.forwardRef((_a, ref) => {
8485
8577
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
8486
8578
  return /* @__PURE__ */ jsx(
8487
8579
  RadioGroupPrimitive.Root,
@@ -8508,10 +8600,10 @@ var radioButtonVariants = cva(
8508
8600
  "data-[state=checked]:bg-sui-bg-checkbox-active",
8509
8601
  "data-[state=checked]:border-sui-bg-checkbox-active",
8510
8602
  // Hover unchecked: stronger border
8511
- "hover:data-[state=unchecked]:border-sui-border-strong",
8603
+ "[@media(hover:hover)]:hover:data-[state=unchecked]:border-sui-border-strong",
8512
8604
  // Hover checked: hover bg + matching border
8513
- "hover:data-[state=checked]:bg-sui-bg-checkbox-active-hover",
8514
- "hover:data-[state=checked]:border-sui-bg-checkbox-active-hover",
8605
+ "[@media(hover:hover)]:hover:data-[state=checked]:bg-sui-bg-checkbox-active-hover",
8606
+ "[@media(hover:hover)]:hover:data-[state=checked]:border-sui-bg-checkbox-active-hover",
8515
8607
  // Focus ring (Figma: 1px accent-inverted + 3px highlight)
8516
8608
  "focus-visible:outline-none",
8517
8609
  "focus-visible:shadow-misc-focus",
@@ -8541,7 +8633,7 @@ var radioButtonVariants = cva(
8541
8633
  }
8542
8634
  }
8543
8635
  );
8544
- var RadioButton = React77.forwardRef((_a, ref) => {
8636
+ var RadioButton = React78.forwardRef((_a, ref) => {
8545
8637
  var _b = _a, { className, variant } = _b, props = __objRest(_b, ["className", "variant"]);
8546
8638
  return /* @__PURE__ */ jsxs(
8547
8639
  RadioGroupPrimitive.Item,
@@ -8581,7 +8673,7 @@ var RadioButton = React77.forwardRef((_a, ref) => {
8581
8673
  );
8582
8674
  });
8583
8675
  RadioButton.displayName = "RadioButton";
8584
- var RadioCardGroup = React77.forwardRef((_a, ref) => {
8676
+ var RadioCardGroup = React78.forwardRef((_a, ref) => {
8585
8677
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
8586
8678
  return /* @__PURE__ */ jsx(
8587
8679
  RadioGroupPrimitive.Root,
@@ -8630,7 +8722,7 @@ var radioButtonCardVariants = cva(
8630
8722
  }
8631
8723
  }
8632
8724
  );
8633
- var RadioButtonCard = React77.forwardRef(
8725
+ var RadioButtonCard = React78.forwardRef(
8634
8726
  ({
8635
8727
  title,
8636
8728
  description,
@@ -8644,7 +8736,7 @@ var RadioButtonCard = React77.forwardRef(
8644
8736
  disabled = false,
8645
8737
  className
8646
8738
  }, ref) => {
8647
- const generatedId = React77.useId();
8739
+ const generatedId = React78.useId();
8648
8740
  const titleId = `radio-card-title-${generatedId}`;
8649
8741
  const descriptionId = `radio-card-desc-${generatedId}`;
8650
8742
  const isHorizontal = layout === "horizontal";
@@ -8752,9 +8844,9 @@ var RadioButtonCard = React77.forwardRef(
8752
8844
  }
8753
8845
  );
8754
8846
  RadioButtonCard.displayName = "RadioButtonCard";
8755
- var RadioButtonList = React77.forwardRef(
8847
+ var RadioButtonList = React78.forwardRef(
8756
8848
  ({ className, divider = true, value, defaultValue, onValueChange, disabled, children }, ref) => {
8757
- const items = React77.Children.toArray(children);
8849
+ const items = React78.Children.toArray(children);
8758
8850
  return /* @__PURE__ */ jsx(
8759
8851
  RadioGroup2,
8760
8852
  {
@@ -8798,7 +8890,7 @@ var radioButtonWithTextVariants = cva(
8798
8890
  }
8799
8891
  }
8800
8892
  );
8801
- var RadioButtonWithText = React77.forwardRef(
8893
+ var RadioButtonWithText = React78.forwardRef(
8802
8894
  ({
8803
8895
  label,
8804
8896
  description,
@@ -8809,7 +8901,7 @@ var RadioButtonWithText = React77.forwardRef(
8809
8901
  className,
8810
8902
  id
8811
8903
  }, ref) => {
8812
- const generatedId = React77.useId();
8904
+ const generatedId = React78.useId();
8813
8905
  const radioId = id || generatedId;
8814
8906
  return /* @__PURE__ */ jsxs(
8815
8907
  "div",
@@ -8864,7 +8956,7 @@ var RadioButtonWithText = React77.forwardRef(
8864
8956
  }
8865
8957
  );
8866
8958
  RadioButtonWithText.displayName = "RadioButtonWithText";
8867
- var ScrollArea = React77.forwardRef((_a, ref) => {
8959
+ var ScrollArea = React78.forwardRef((_a, ref) => {
8868
8960
  var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
8869
8961
  return /* @__PURE__ */ jsxs(
8870
8962
  ScrollAreaPrimitive.Root,
@@ -8881,7 +8973,7 @@ var ScrollArea = React77.forwardRef((_a, ref) => {
8881
8973
  );
8882
8974
  });
8883
8975
  ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
8884
- var ScrollBar = React77.forwardRef((_a, ref) => {
8976
+ var ScrollBar = React78.forwardRef((_a, ref) => {
8885
8977
  var _b = _a, { className, orientation = "vertical" } = _b, props = __objRest(_b, ["className", "orientation"]);
8886
8978
  return /* @__PURE__ */ jsx(
8887
8979
  ScrollAreaPrimitive.ScrollAreaScrollbar,
@@ -8903,7 +8995,7 @@ ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;
8903
8995
  var Select = SelectPrimitive.Root;
8904
8996
  var SelectGroup = SelectPrimitive.Group;
8905
8997
  var SelectValue = SelectPrimitive.Value;
8906
- var SelectTrigger = React77.forwardRef((_a, ref) => {
8998
+ var SelectTrigger = React78.forwardRef((_a, ref) => {
8907
8999
  var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
8908
9000
  return /* @__PURE__ */ jsxs(
8909
9001
  SelectPrimitive.Trigger,
@@ -8926,7 +9018,7 @@ var SelectTrigger = React77.forwardRef((_a, ref) => {
8926
9018
  );
8927
9019
  });
8928
9020
  SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
8929
- var SelectScrollUpButton = React77.forwardRef((_a, ref) => {
9021
+ var SelectScrollUpButton = React78.forwardRef((_a, ref) => {
8930
9022
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
8931
9023
  return /* @__PURE__ */ jsx(
8932
9024
  SelectPrimitive.ScrollUpButton,
@@ -8942,7 +9034,7 @@ var SelectScrollUpButton = React77.forwardRef((_a, ref) => {
8942
9034
  );
8943
9035
  });
8944
9036
  SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
8945
- var SelectScrollDownButton = React77.forwardRef((_a, ref) => {
9037
+ var SelectScrollDownButton = React78.forwardRef((_a, ref) => {
8946
9038
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
8947
9039
  return /* @__PURE__ */ jsx(
8948
9040
  SelectPrimitive.ScrollDownButton,
@@ -8958,7 +9050,7 @@ var SelectScrollDownButton = React77.forwardRef((_a, ref) => {
8958
9050
  );
8959
9051
  });
8960
9052
  SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
8961
- var SelectContent = React77.forwardRef((_a, ref) => {
9053
+ var SelectContent = React78.forwardRef((_a, ref) => {
8962
9054
  var _b = _a, { className, children, position = "popper" } = _b, props = __objRest(_b, ["className", "children", "position"]);
8963
9055
  return /* @__PURE__ */ jsx(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs(
8964
9056
  SelectPrimitive.Content,
@@ -8991,7 +9083,7 @@ var SelectContent = React77.forwardRef((_a, ref) => {
8991
9083
  ) });
8992
9084
  });
8993
9085
  SelectContent.displayName = SelectPrimitive.Content.displayName;
8994
- var SelectLabel = React77.forwardRef((_a, ref) => {
9086
+ var SelectLabel = React78.forwardRef((_a, ref) => {
8995
9087
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
8996
9088
  return /* @__PURE__ */ jsx(
8997
9089
  SelectPrimitive.Label,
@@ -9005,7 +9097,7 @@ var SelectLabel = React77.forwardRef((_a, ref) => {
9005
9097
  );
9006
9098
  });
9007
9099
  SelectLabel.displayName = SelectPrimitive.Label.displayName;
9008
- var SelectItem = React77.forwardRef((_a, ref) => {
9100
+ var SelectItem = React78.forwardRef((_a, ref) => {
9009
9101
  var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
9010
9102
  return /* @__PURE__ */ jsxs(
9011
9103
  SelectPrimitive.Item,
@@ -9030,7 +9122,7 @@ var SelectItem = React77.forwardRef((_a, ref) => {
9030
9122
  );
9031
9123
  });
9032
9124
  SelectItem.displayName = SelectPrimitive.Item.displayName;
9033
- var SelectSeparator = React77.forwardRef((_a, ref) => {
9125
+ var SelectSeparator = React78.forwardRef((_a, ref) => {
9034
9126
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
9035
9127
  return /* @__PURE__ */ jsx(
9036
9128
  SelectPrimitive.Separator,
@@ -9041,7 +9133,7 @@ var SelectSeparator = React77.forwardRef((_a, ref) => {
9041
9133
  );
9042
9134
  });
9043
9135
  SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
9044
- var SelectMenu = React77.forwardRef(
9136
+ var SelectMenu = React78.forwardRef(
9045
9137
  (_a, ref) => {
9046
9138
  var _b = _a, {
9047
9139
  className,
@@ -9072,19 +9164,19 @@ var SelectMenu = React77.forwardRef(
9072
9164
  ]);
9073
9165
  var _a2;
9074
9166
  const indicator = selectType === "checkbox" ? "checkbox" : selectType === "radio" ? "radio" : selectType === "default" ? "checkmark" : "none";
9075
- const hasChildren = React77.Children.count(children) > 0;
9076
- const generatedId = React77.useId();
9167
+ const hasChildren = React78.Children.count(children) > 0;
9168
+ const generatedId = React78.useId();
9077
9169
  const listId = `${generatedId}-list`;
9078
- const listRef = React77.useRef(null);
9079
- const [activeIndex, setActiveIndex] = React77.useState(-1);
9170
+ const listRef = React78.useRef(null);
9171
+ const [activeIndex, setActiveIndex] = React78.useState(-1);
9080
9172
  const activeItemId = activeIndex >= 0 ? `${listId}-item-${activeIndex}` : void 0;
9081
- const getItems = React77.useCallback(() => {
9173
+ const getItems = React78.useCallback(() => {
9082
9174
  if (!listRef.current) return [];
9083
9175
  return Array.from(
9084
9176
  listRef.current.querySelectorAll('[role="option"]')
9085
9177
  );
9086
9178
  }, []);
9087
- const handleKeyDown = React77.useCallback(
9179
+ const handleKeyDown = React78.useCallback(
9088
9180
  (e) => {
9089
9181
  var _a3;
9090
9182
  const items = getItems();
@@ -9167,8 +9259,8 @@ var SelectMenu = React77.forwardRef(
9167
9259
  "focus-visible:outline-none"
9168
9260
  ),
9169
9261
  style: listMaxHeight ? { maxHeight: listMaxHeight } : void 0,
9170
- children: hasChildren ? /* @__PURE__ */ jsx("div", { className: "flex flex-col px-1", role: "presentation", children: React77.Children.map(children, (child, index) => {
9171
- if (React77.isValidElement(child) && child.type.displayName === "SelectMenuItem") {
9262
+ children: hasChildren ? /* @__PURE__ */ jsx("div", { className: "flex flex-col px-1", role: "presentation", children: React78.Children.map(children, (child, index) => {
9263
+ if (React78.isValidElement(child) && child.type.displayName === "SelectMenuItem") {
9172
9264
  const itemProps = child.props;
9173
9265
  const overrides = {};
9174
9266
  if (indicator !== "none" && itemProps.indicator === void 0) {
@@ -9185,7 +9277,7 @@ var SelectMenu = React77.forwardRef(
9185
9277
  overrides["data-active"] = "true";
9186
9278
  }
9187
9279
  if (Object.keys(overrides).length > 0) {
9188
- return React77.cloneElement(
9280
+ return React78.cloneElement(
9189
9281
  child,
9190
9282
  overrides
9191
9283
  );
@@ -9210,7 +9302,7 @@ var SelectMenu = React77.forwardRef(
9210
9302
  }
9211
9303
  );
9212
9304
  SelectMenu.displayName = "SelectMenu";
9213
- var SelectMenuFooterButton = React77.forwardRef((_a, ref) => {
9305
+ var SelectMenuFooterButton = React78.forwardRef((_a, ref) => {
9214
9306
  var _b = _a, { className, icon = "ri-add-line", children = "Add new", disabled } = _b, props = __objRest(_b, ["className", "icon", "children", "disabled"]);
9215
9307
  return /* @__PURE__ */ jsxs(
9216
9308
  "button",
@@ -9224,7 +9316,7 @@ var SelectMenuFooterButton = React77.forwardRef((_a, ref) => {
9224
9316
  "px-2.5 py-2",
9225
9317
  // Colors
9226
9318
  "bg-sui-bg-state-ghost",
9227
- "hover:bg-sui-bg-state-ghost-hover",
9319
+ "[@media(hover:hover)]:hover:bg-sui-bg-state-ghost-hover",
9228
9320
  "active:bg-sui-bg-state-ghost-press",
9229
9321
  "text-sm font-medium leading-5 text-sui-text-default",
9230
9322
  "[&_i]:text-icon-default-muted [&_svg]:text-icon-default-muted",
@@ -9253,7 +9345,7 @@ var SelectMenuFooterButton = React77.forwardRef((_a, ref) => {
9253
9345
  );
9254
9346
  });
9255
9347
  SelectMenuFooterButton.displayName = "SelectMenuFooterButton";
9256
- var SelectInput = React77.forwardRef(
9348
+ var SelectInput = React78.forwardRef(
9257
9349
  ({
9258
9350
  label,
9259
9351
  required,
@@ -9285,10 +9377,10 @@ var SelectInput = React77.forwardRef(
9285
9377
  footer,
9286
9378
  className
9287
9379
  }, ref) => {
9288
- const [internalOpen, setInternalOpen] = React77.useState(false);
9380
+ const [internalOpen, setInternalOpen] = React78.useState(false);
9289
9381
  const isControlled = controlledOpen !== void 0;
9290
9382
  const isOpen = isControlled ? controlledOpen : internalOpen;
9291
- const handleOpenChange = React77.useCallback(
9383
+ const handleOpenChange = React78.useCallback(
9292
9384
  (next) => {
9293
9385
  if (disabled) return;
9294
9386
  if (!isControlled) setInternalOpen(next);
@@ -9296,7 +9388,7 @@ var SelectInput = React77.forwardRef(
9296
9388
  },
9297
9389
  [disabled, isControlled, onOpenChange]
9298
9390
  );
9299
- const generatedId = React77.useId();
9391
+ const generatedId = React78.useId();
9300
9392
  const hasError = !!error;
9301
9393
  const helperText = hasError ? error : caption;
9302
9394
  const hasTags = tags && tags.length > 0;
@@ -9323,7 +9415,6 @@ var SelectInput = React77.forwardRef(
9323
9415
  "aria-expanded": isOpen,
9324
9416
  "aria-haspopup": "listbox",
9325
9417
  "aria-controls": `${generatedId}-listbox`,
9326
- "aria-multiselectable": multiSelect || void 0,
9327
9418
  "aria-invalid": hasError || void 0,
9328
9419
  "aria-describedby": helperText ? `${generatedId}-caption` : void 0,
9329
9420
  disabled,
@@ -9341,8 +9432,8 @@ var SelectInput = React77.forwardRef(
9341
9432
  // Padding
9342
9433
  "px-2",
9343
9434
  // Hover
9344
- !isSoft && "hover:border-sui-border-strong",
9345
- isSoft && "hover:bg-sui-bg-input-soft",
9435
+ !isSoft && "[@media(hover:hover)]:hover:border-sui-border-strong",
9436
+ isSoft && "[@media(hover:hover)]:hover:bg-sui-bg-input-soft",
9346
9437
  // Focus / Open
9347
9438
  "data-[state=open]:bg-sui-bg-input data-[state=open]:shadow-input-focus",
9348
9439
  "focus-visible:outline-none focus-visible:shadow-input-focus",
@@ -9353,7 +9444,7 @@ var SelectInput = React77.forwardRef(
9353
9444
  hasError && "data-[state=open]:shadow-destructive-focus",
9354
9445
  // Disabled
9355
9446
  disabled && "bg-sui-bg-input-disabled shadow-none cursor-not-allowed",
9356
- disabled && !isSoft && "border-sui-border-default hover:border-sui-border-default",
9447
+ disabled && !isSoft && "border-sui-border-default [@media(hover:hover)]:hover:border-sui-border-default",
9357
9448
  disabled && isSoft && "border-sui-border-default"
9358
9449
  ),
9359
9450
  children: [
@@ -9376,7 +9467,7 @@ var SelectInput = React77.forwardRef(
9376
9467
  children: leadIcon
9377
9468
  }
9378
9469
  ) : null,
9379
- hasTags ? /* @__PURE__ */ jsx("span", { className: "flex min-w-0 flex-1 items-center gap-1 overflow-hidden", children: tags.map((tag, i) => /* @__PURE__ */ jsxs(React77.Fragment, { children: [
9470
+ hasTags ? /* @__PURE__ */ jsx("span", { className: "flex min-w-0 flex-1 items-center gap-1 overflow-hidden", children: tags.map((tag, i) => /* @__PURE__ */ jsxs(React78.Fragment, { children: [
9380
9471
  i > 0 && /* @__PURE__ */ jsx(
9381
9472
  "span",
9382
9473
  {
@@ -9439,6 +9530,8 @@ var SelectInput = React77.forwardRef(
9439
9530
  PopoverPrimitive.Content,
9440
9531
  __spreadProps(__spreadValues({
9441
9532
  id: `${generatedId}-listbox`,
9533
+ role: "listbox",
9534
+ "aria-multiselectable": multiSelect || void 0,
9442
9535
  align: "start",
9443
9536
  sideOffset: 6,
9444
9537
  className: cn(
@@ -9491,7 +9584,7 @@ var SelectInput = React77.forwardRef(
9491
9584
  }
9492
9585
  );
9493
9586
  SelectInput.displayName = "SelectInput";
9494
- var SelectMenuItem = React77.forwardRef(
9587
+ var SelectMenuItem = React78.forwardRef(
9495
9588
  (_a, ref) => {
9496
9589
  var _b = _a, {
9497
9590
  className,
@@ -9527,7 +9620,7 @@ var SelectMenuItem = React77.forwardRef(
9527
9620
  // Layout
9528
9621
  "group relative flex w-full cursor-default select-none items-center gap-1.5 rounded-xs p-1.5 text-sm outline-none transition-colors",
9529
9622
  // Hover / Active (keyboard navigation)
9530
- "hover:bg-sui-bg-state-ghost-hover",
9623
+ "[@media(hover:hover)]:hover:bg-sui-bg-state-ghost-hover",
9531
9624
  "data-[active=true]:bg-sui-bg-state-ghost-hover",
9532
9625
  // Focus
9533
9626
  "focus-visible:bg-sui-bg-state-ghost-hover focus-visible:outline-none",
@@ -9655,7 +9748,7 @@ var SelectMenuItem = React77.forwardRef(
9655
9748
  }
9656
9749
  );
9657
9750
  SelectMenuItem.displayName = "SelectMenuItem";
9658
- var SelectMenuLabel = React77.forwardRef(
9751
+ var SelectMenuLabel = React78.forwardRef(
9659
9752
  (_a, ref) => {
9660
9753
  var _b = _a, { className, caption, children } = _b, props = __objRest(_b, ["className", "caption", "children"]);
9661
9754
  return /* @__PURE__ */ jsxs(
@@ -9677,7 +9770,7 @@ var SelectMenuLabel = React77.forwardRef(
9677
9770
  }
9678
9771
  );
9679
9772
  SelectMenuLabel.displayName = "SelectMenuLabel";
9680
- var SelectMenuDescription = React77.forwardRef((_a, ref) => {
9773
+ var SelectMenuDescription = React78.forwardRef((_a, ref) => {
9681
9774
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
9682
9775
  return /* @__PURE__ */ jsx(
9683
9776
  "p",
@@ -9691,7 +9784,7 @@ var SelectMenuDescription = React77.forwardRef((_a, ref) => {
9691
9784
  );
9692
9785
  });
9693
9786
  SelectMenuDescription.displayName = "SelectMenuDescription";
9694
- var SelectMenuSeparator = React77.forwardRef((_a, ref) => {
9787
+ var SelectMenuSeparator = React78.forwardRef((_a, ref) => {
9695
9788
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
9696
9789
  return /* @__PURE__ */ jsx(
9697
9790
  "div",
@@ -9703,7 +9796,7 @@ var SelectMenuSeparator = React77.forwardRef((_a, ref) => {
9703
9796
  );
9704
9797
  });
9705
9798
  SelectMenuSeparator.displayName = "SelectMenuSeparator";
9706
- var SelectMenuLargeItem = React77.forwardRef(
9799
+ var SelectMenuLargeItem = React78.forwardRef(
9707
9800
  (_a, ref) => {
9708
9801
  var _b = _a, {
9709
9802
  className,
@@ -9733,7 +9826,7 @@ var SelectMenuLargeItem = React77.forwardRef(
9733
9826
  disabled,
9734
9827
  className: cn(
9735
9828
  "group relative flex w-full cursor-default select-none items-center rounded-xs px-2 py-1.5 outline-none transition-colors",
9736
- "hover:bg-sui-bg-state-ghost-hover",
9829
+ "[@media(hover:hover)]:hover:bg-sui-bg-state-ghost-hover",
9737
9830
  "focus-visible:bg-sui-bg-state-ghost-hover focus-visible:outline-none",
9738
9831
  "disabled:pointer-events-none",
9739
9832
  className
@@ -9799,7 +9892,7 @@ var SelectMenuLargeItem = React77.forwardRef(
9799
9892
  }
9800
9893
  );
9801
9894
  SelectMenuLargeItem.displayName = "SelectMenuLargeItem";
9802
- var Separator3 = React77.forwardRef(
9895
+ var Separator3 = React78.forwardRef(
9803
9896
  (_a, ref) => {
9804
9897
  var _b = _a, { className, orientation = "horizontal", decorative = true } = _b, props = __objRest(_b, ["className", "orientation", "decorative"]);
9805
9898
  return /* @__PURE__ */ jsx(
@@ -9822,7 +9915,7 @@ var Sheet = DialogPrimitive.Root;
9822
9915
  var SheetTrigger = DialogPrimitive.Trigger;
9823
9916
  var SheetClose = DialogPrimitive.Close;
9824
9917
  var SheetPortal = DialogPrimitive.Portal;
9825
- var SheetOverlay = React77.forwardRef((_a, ref) => {
9918
+ var SheetOverlay = React78.forwardRef((_a, ref) => {
9826
9919
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
9827
9920
  return /* @__PURE__ */ jsx(
9828
9921
  DialogPrimitive.Overlay,
@@ -9853,7 +9946,7 @@ var sheetVariants = cva(
9853
9946
  }
9854
9947
  }
9855
9948
  );
9856
- var SheetContent = React77.forwardRef((_a, ref) => {
9949
+ var SheetContent = React78.forwardRef((_a, ref) => {
9857
9950
  var _b = _a, { side = "right", className, children } = _b, props = __objRest(_b, ["side", "className", "children"]);
9858
9951
  return /* @__PURE__ */ jsxs(SheetPortal, { children: [
9859
9952
  /* @__PURE__ */ jsx(SheetOverlay, {}),
@@ -9865,7 +9958,7 @@ var SheetContent = React77.forwardRef((_a, ref) => {
9865
9958
  }, props), {
9866
9959
  children: [
9867
9960
  children,
9868
- /* @__PURE__ */ jsxs(DialogPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-sui-bg-default transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-sui-border-highlight focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-sui-bg-state-ghost-hover", children: [
9961
+ /* @__PURE__ */ jsxs(DialogPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-sui-bg-default transition-opacity [@media(hover:hover)]:hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-sui-border-highlight focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-sui-bg-state-ghost-hover", children: [
9869
9962
  /* @__PURE__ */ jsx("i", { className: "ri-close-line text-base", "aria-hidden": true }),
9870
9963
  /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
9871
9964
  ] })
@@ -9909,7 +10002,7 @@ var SheetFooter = (_a) => {
9909
10002
  );
9910
10003
  };
9911
10004
  SheetFooter.displayName = "SheetFooter";
9912
- var SheetTitle = React77.forwardRef((_a, ref) => {
10005
+ var SheetTitle = React78.forwardRef((_a, ref) => {
9913
10006
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
9914
10007
  return /* @__PURE__ */ jsx(
9915
10008
  DialogPrimitive.Title,
@@ -9920,7 +10013,7 @@ var SheetTitle = React77.forwardRef((_a, ref) => {
9920
10013
  );
9921
10014
  });
9922
10015
  SheetTitle.displayName = DialogPrimitive.Title.displayName;
9923
- var SheetDescription = React77.forwardRef((_a, ref) => {
10016
+ var SheetDescription = React78.forwardRef((_a, ref) => {
9924
10017
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
9925
10018
  return /* @__PURE__ */ jsx(
9926
10019
  DialogPrimitive.Description,
@@ -9933,8 +10026,8 @@ var SheetDescription = React77.forwardRef((_a, ref) => {
9933
10026
  SheetDescription.displayName = DialogPrimitive.Description.displayName;
9934
10027
  var MOBILE_BREAKPOINT = 768;
9935
10028
  function useIsMobile() {
9936
- const [isMobile, setIsMobile] = React77.useState(void 0);
9937
- React77.useEffect(() => {
10029
+ const [isMobile, setIsMobile] = React78.useState(void 0);
10030
+ React78.useEffect(() => {
9938
10031
  const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
9939
10032
  const onChange = () => {
9940
10033
  setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
@@ -9964,15 +10057,15 @@ var SIDEBAR_WIDTH = "16rem";
9964
10057
  var SIDEBAR_WIDTH_MOBILE = "18rem";
9965
10058
  var SIDEBAR_WIDTH_ICON = "3rem";
9966
10059
  var SIDEBAR_KEYBOARD_SHORTCUT = "b";
9967
- var SidebarContext = React77.createContext(null);
10060
+ var SidebarContext = React78.createContext(null);
9968
10061
  function useSidebar() {
9969
- const context = React77.useContext(SidebarContext);
10062
+ const context = React78.useContext(SidebarContext);
9970
10063
  if (!context) {
9971
10064
  throw new Error("useSidebar must be used within a SidebarProvider.");
9972
10065
  }
9973
10066
  return context;
9974
10067
  }
9975
- var SidebarProvider = React77.forwardRef(
10068
+ var SidebarProvider = React78.forwardRef(
9976
10069
  (_a, ref) => {
9977
10070
  var _b = _a, {
9978
10071
  defaultOpen = true,
@@ -9990,10 +10083,10 @@ var SidebarProvider = React77.forwardRef(
9990
10083
  "children"
9991
10084
  ]);
9992
10085
  const isMobile = useIsMobile();
9993
- const [openMobile, setOpenMobile] = React77.useState(false);
9994
- const [_open, _setOpen] = React77.useState(defaultOpen);
10086
+ const [openMobile, setOpenMobile] = React78.useState(false);
10087
+ const [_open, _setOpen] = React78.useState(defaultOpen);
9995
10088
  const open = openProp != null ? openProp : _open;
9996
- const setOpen = React77.useCallback(
10089
+ const setOpen = React78.useCallback(
9997
10090
  (value) => {
9998
10091
  const openState = typeof value === "function" ? value(open) : value;
9999
10092
  if (setOpenProp) {
@@ -10005,10 +10098,10 @@ var SidebarProvider = React77.forwardRef(
10005
10098
  },
10006
10099
  [setOpenProp, open]
10007
10100
  );
10008
- const toggleSidebar = React77.useCallback(() => {
10101
+ const toggleSidebar = React78.useCallback(() => {
10009
10102
  return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
10010
10103
  }, [isMobile, setOpen, setOpenMobile]);
10011
- React77.useEffect(() => {
10104
+ React78.useEffect(() => {
10012
10105
  const handleKeyDown = (event) => {
10013
10106
  if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
10014
10107
  event.preventDefault();
@@ -10019,7 +10112,7 @@ var SidebarProvider = React77.forwardRef(
10019
10112
  return () => window.removeEventListener("keydown", handleKeyDown);
10020
10113
  }, [toggleSidebar]);
10021
10114
  const state = open ? "expanded" : "collapsed";
10022
- const contextValue = React77.useMemo(
10115
+ const contextValue = React78.useMemo(
10023
10116
  () => ({
10024
10117
  state,
10025
10118
  open,
@@ -10050,7 +10143,7 @@ var SidebarProvider = React77.forwardRef(
10050
10143
  }
10051
10144
  );
10052
10145
  SidebarProvider.displayName = "SidebarProvider";
10053
- var Sidebar = React77.forwardRef(
10146
+ var Sidebar = React78.forwardRef(
10054
10147
  (_a, ref) => {
10055
10148
  var _b = _a, {
10056
10149
  side = "left",
@@ -10149,7 +10242,7 @@ var Sidebar = React77.forwardRef(
10149
10242
  }
10150
10243
  );
10151
10244
  Sidebar.displayName = "Sidebar";
10152
- var SidebarTrigger = React77.forwardRef((_a, ref) => {
10245
+ var SidebarTrigger = React78.forwardRef((_a, ref) => {
10153
10246
  var _b = _a, { className, onClick } = _b, props = __objRest(_b, ["className", "onClick"]);
10154
10247
  const { toggleSidebar } = useSidebar();
10155
10248
  return /* @__PURE__ */ jsxs(
@@ -10174,7 +10267,7 @@ var SidebarTrigger = React77.forwardRef((_a, ref) => {
10174
10267
  );
10175
10268
  });
10176
10269
  SidebarTrigger.displayName = "SidebarTrigger";
10177
- var SidebarRail = React77.forwardRef((_a, ref) => {
10270
+ var SidebarRail = React78.forwardRef((_a, ref) => {
10178
10271
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
10179
10272
  const { toggleSidebar } = useSidebar();
10180
10273
  return /* @__PURE__ */ jsx(
@@ -10187,10 +10280,10 @@ var SidebarRail = React77.forwardRef((_a, ref) => {
10187
10280
  onClick: toggleSidebar,
10188
10281
  title: "Toggle Sidebar",
10189
10282
  className: cn(
10190
- "absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex",
10283
+ "absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] [@media(hover:hover)]:hover:after:bg-sidebar-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex",
10191
10284
  "[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize",
10192
10285
  "[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize",
10193
- "group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar",
10286
+ "group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:[@media(hover:hover)]:hover:bg-sidebar",
10194
10287
  "[[data-side=left][data-collapsible=offcanvas]_&]:-right-2",
10195
10288
  "[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",
10196
10289
  className
@@ -10199,7 +10292,7 @@ var SidebarRail = React77.forwardRef((_a, ref) => {
10199
10292
  );
10200
10293
  });
10201
10294
  SidebarRail.displayName = "SidebarRail";
10202
- var SidebarInset = React77.forwardRef((_a, ref) => {
10295
+ var SidebarInset = React78.forwardRef((_a, ref) => {
10203
10296
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
10204
10297
  return /* @__PURE__ */ jsx(
10205
10298
  "main",
@@ -10214,7 +10307,7 @@ var SidebarInset = React77.forwardRef((_a, ref) => {
10214
10307
  );
10215
10308
  });
10216
10309
  SidebarInset.displayName = "SidebarInset";
10217
- var SidebarInput = React77.forwardRef((_a, ref) => {
10310
+ var SidebarInput = React78.forwardRef((_a, ref) => {
10218
10311
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
10219
10312
  return /* @__PURE__ */ jsx(
10220
10313
  Input,
@@ -10229,7 +10322,7 @@ var SidebarInput = React77.forwardRef((_a, ref) => {
10229
10322
  );
10230
10323
  });
10231
10324
  SidebarInput.displayName = "SidebarInput";
10232
- var SidebarHeader = React77.forwardRef((_a, ref) => {
10325
+ var SidebarHeader = React78.forwardRef((_a, ref) => {
10233
10326
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
10234
10327
  return /* @__PURE__ */ jsx(
10235
10328
  "div",
@@ -10241,7 +10334,7 @@ var SidebarHeader = React77.forwardRef((_a, ref) => {
10241
10334
  );
10242
10335
  });
10243
10336
  SidebarHeader.displayName = "SidebarHeader";
10244
- var SidebarFooter = React77.forwardRef((_a, ref) => {
10337
+ var SidebarFooter = React78.forwardRef((_a, ref) => {
10245
10338
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
10246
10339
  return /* @__PURE__ */ jsx(
10247
10340
  "div",
@@ -10253,7 +10346,7 @@ var SidebarFooter = React77.forwardRef((_a, ref) => {
10253
10346
  );
10254
10347
  });
10255
10348
  SidebarFooter.displayName = "SidebarFooter";
10256
- var SidebarSeparator = React77.forwardRef((_a, ref) => {
10349
+ var SidebarSeparator = React78.forwardRef((_a, ref) => {
10257
10350
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
10258
10351
  return /* @__PURE__ */ jsx(
10259
10352
  Separator3,
@@ -10265,7 +10358,7 @@ var SidebarSeparator = React77.forwardRef((_a, ref) => {
10265
10358
  );
10266
10359
  });
10267
10360
  SidebarSeparator.displayName = "SidebarSeparator";
10268
- var SidebarContent = React77.forwardRef((_a, ref) => {
10361
+ var SidebarContent = React78.forwardRef((_a, ref) => {
10269
10362
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
10270
10363
  return /* @__PURE__ */ jsx(
10271
10364
  "div",
@@ -10280,7 +10373,7 @@ var SidebarContent = React77.forwardRef((_a, ref) => {
10280
10373
  );
10281
10374
  });
10282
10375
  SidebarContent.displayName = "SidebarContent";
10283
- var SidebarGroup = React77.forwardRef((_a, ref) => {
10376
+ var SidebarGroup = React78.forwardRef((_a, ref) => {
10284
10377
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
10285
10378
  return /* @__PURE__ */ jsx(
10286
10379
  "div",
@@ -10292,7 +10385,7 @@ var SidebarGroup = React77.forwardRef((_a, ref) => {
10292
10385
  );
10293
10386
  });
10294
10387
  SidebarGroup.displayName = "SidebarGroup";
10295
- var SidebarGroupLabel = React77.forwardRef((_a, ref) => {
10388
+ var SidebarGroupLabel = React78.forwardRef((_a, ref) => {
10296
10389
  var _b = _a, { className, asChild = false } = _b, props = __objRest(_b, ["className", "asChild"]);
10297
10390
  const Comp = asChild ? Slot : "div";
10298
10391
  return /* @__PURE__ */ jsx(
@@ -10309,7 +10402,7 @@ var SidebarGroupLabel = React77.forwardRef((_a, ref) => {
10309
10402
  );
10310
10403
  });
10311
10404
  SidebarGroupLabel.displayName = "SidebarGroupLabel";
10312
- var SidebarGroupAction = React77.forwardRef((_a, ref) => {
10405
+ var SidebarGroupAction = React78.forwardRef((_a, ref) => {
10313
10406
  var _b = _a, { className, asChild = false } = _b, props = __objRest(_b, ["className", "asChild"]);
10314
10407
  const Comp = asChild ? Slot : "button";
10315
10408
  return /* @__PURE__ */ jsx(
@@ -10318,7 +10411,7 @@ var SidebarGroupAction = React77.forwardRef((_a, ref) => {
10318
10411
  ref,
10319
10412
  "data-sidebar": "group-action",
10320
10413
  className: cn(
10321
- "absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
10414
+ "absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform [@media(hover:hover)]:hover:bg-sidebar-accent [@media(hover:hover)]:hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
10322
10415
  // Increases the hit area of the button on mobile.
10323
10416
  "after:absolute after:-inset-2 after:md:hidden",
10324
10417
  "group-data-[collapsible=icon]:hidden",
@@ -10328,7 +10421,7 @@ var SidebarGroupAction = React77.forwardRef((_a, ref) => {
10328
10421
  );
10329
10422
  });
10330
10423
  SidebarGroupAction.displayName = "SidebarGroupAction";
10331
- var SidebarGroupContent = React77.forwardRef((_a, ref) => {
10424
+ var SidebarGroupContent = React78.forwardRef((_a, ref) => {
10332
10425
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
10333
10426
  return /* @__PURE__ */ jsx(
10334
10427
  "div",
@@ -10340,7 +10433,7 @@ var SidebarGroupContent = React77.forwardRef((_a, ref) => {
10340
10433
  );
10341
10434
  });
10342
10435
  SidebarGroupContent.displayName = "SidebarGroupContent";
10343
- var SidebarMenu = React77.forwardRef((_a, ref) => {
10436
+ var SidebarMenu = React78.forwardRef((_a, ref) => {
10344
10437
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
10345
10438
  return /* @__PURE__ */ jsx(
10346
10439
  "ul",
@@ -10352,7 +10445,7 @@ var SidebarMenu = React77.forwardRef((_a, ref) => {
10352
10445
  );
10353
10446
  });
10354
10447
  SidebarMenu.displayName = "SidebarMenu";
10355
- var SidebarMenuItem = React77.forwardRef((_a, ref) => {
10448
+ var SidebarMenuItem = React78.forwardRef((_a, ref) => {
10356
10449
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
10357
10450
  return /* @__PURE__ */ jsx(
10358
10451
  "li",
@@ -10365,12 +10458,12 @@ var SidebarMenuItem = React77.forwardRef((_a, ref) => {
10365
10458
  });
10366
10459
  SidebarMenuItem.displayName = "SidebarMenuItem";
10367
10460
  var sidebarMenuButtonVariants = cva(
10368
- "peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",
10461
+ "peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] [@media(hover:hover)]:hover:bg-sidebar-accent [@media(hover:hover)]:hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:[@media(hover:hover)]:hover:bg-sidebar-accent data-[state=open]:[@media(hover:hover)]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",
10369
10462
  {
10370
10463
  variants: {
10371
10464
  variant: {
10372
- default: "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
10373
- outline: "bg-sui-bg-default shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]"
10465
+ default: "[@media(hover:hover)]:hover:bg-sidebar-accent [@media(hover:hover)]:hover:text-sidebar-accent-foreground",
10466
+ outline: "bg-sui-bg-default shadow-[0_0_0_1px_hsl(var(--sidebar-border))] [@media(hover:hover)]:hover:bg-sidebar-accent [@media(hover:hover)]:hover:text-sidebar-accent-foreground [@media(hover:hover)]:hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]"
10374
10467
  },
10375
10468
  size: {
10376
10469
  default: "h-8 text-sm",
@@ -10384,7 +10477,7 @@ var sidebarMenuButtonVariants = cva(
10384
10477
  }
10385
10478
  }
10386
10479
  );
10387
- var SidebarMenuButton = React77.forwardRef(
10480
+ var SidebarMenuButton = React78.forwardRef(
10388
10481
  (_a, ref) => {
10389
10482
  var _b = _a, {
10390
10483
  asChild = false,
@@ -10435,7 +10528,7 @@ var SidebarMenuButton = React77.forwardRef(
10435
10528
  }
10436
10529
  );
10437
10530
  SidebarMenuButton.displayName = "SidebarMenuButton";
10438
- var SidebarMenuAction = React77.forwardRef((_a, ref) => {
10531
+ var SidebarMenuAction = React78.forwardRef((_a, ref) => {
10439
10532
  var _b = _a, { className, asChild = false, showOnHover = false } = _b, props = __objRest(_b, ["className", "asChild", "showOnHover"]);
10440
10533
  const Comp = asChild ? Slot : "button";
10441
10534
  return /* @__PURE__ */ jsx(
@@ -10444,7 +10537,7 @@ var SidebarMenuAction = React77.forwardRef((_a, ref) => {
10444
10537
  ref,
10445
10538
  "data-sidebar": "menu-action",
10446
10539
  className: cn(
10447
- "absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0",
10540
+ "absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform [@media(hover:hover)]:hover:bg-sidebar-accent [@media(hover:hover)]:hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0",
10448
10541
  // Increases the hit area of the button on mobile.
10449
10542
  "after:absolute after:-inset-2 after:md:hidden",
10450
10543
  "peer-data-[size=sm]/menu-button:top-1",
@@ -10458,7 +10551,7 @@ var SidebarMenuAction = React77.forwardRef((_a, ref) => {
10458
10551
  );
10459
10552
  });
10460
10553
  SidebarMenuAction.displayName = "SidebarMenuAction";
10461
- var SidebarMenuBadge = React77.forwardRef((_a, ref) => {
10554
+ var SidebarMenuBadge = React78.forwardRef((_a, ref) => {
10462
10555
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
10463
10556
  return /* @__PURE__ */ jsx(
10464
10557
  "div",
@@ -10478,11 +10571,13 @@ var SidebarMenuBadge = React77.forwardRef((_a, ref) => {
10478
10571
  );
10479
10572
  });
10480
10573
  SidebarMenuBadge.displayName = "SidebarMenuBadge";
10481
- var SidebarMenuSkeleton = React77.forwardRef((_a, ref) => {
10574
+ var SidebarMenuSkeleton = React78.forwardRef((_a, ref) => {
10482
10575
  var _b = _a, { className, showIcon = false } = _b, props = __objRest(_b, ["className", "showIcon"]);
10483
- const width = React77.useMemo(() => {
10484
- return `${Math.floor(Math.random() * 40) + 50}%`;
10485
- }, []);
10576
+ const id = React78.useId();
10577
+ const width = React78.useMemo(() => {
10578
+ const hash = id.split("").reduce((a, c) => a + c.charCodeAt(0), 0);
10579
+ return `${hash % 40 + 50}%`;
10580
+ }, [id]);
10486
10581
  return /* @__PURE__ */ jsxs(
10487
10582
  "div",
10488
10583
  __spreadProps(__spreadValues({
@@ -10513,7 +10608,7 @@ var SidebarMenuSkeleton = React77.forwardRef((_a, ref) => {
10513
10608
  );
10514
10609
  });
10515
10610
  SidebarMenuSkeleton.displayName = "SidebarMenuSkeleton";
10516
- var SidebarMenuSub = React77.forwardRef((_a, ref) => {
10611
+ var SidebarMenuSub = React78.forwardRef((_a, ref) => {
10517
10612
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
10518
10613
  return /* @__PURE__ */ jsx(
10519
10614
  "ul",
@@ -10529,12 +10624,12 @@ var SidebarMenuSub = React77.forwardRef((_a, ref) => {
10529
10624
  );
10530
10625
  });
10531
10626
  SidebarMenuSub.displayName = "SidebarMenuSub";
10532
- var SidebarMenuSubItem = React77.forwardRef((_a, ref) => {
10627
+ var SidebarMenuSubItem = React78.forwardRef((_a, ref) => {
10533
10628
  var props = __objRest(_a, []);
10534
10629
  return /* @__PURE__ */ jsx("li", __spreadValues({ ref }, props));
10535
10630
  });
10536
10631
  SidebarMenuSubItem.displayName = "SidebarMenuSubItem";
10537
- var SidebarMenuSubButton = React77.forwardRef((_a, ref) => {
10632
+ var SidebarMenuSubButton = React78.forwardRef((_a, ref) => {
10538
10633
  var _b = _a, { asChild = false, size = "md", isActive, className } = _b, props = __objRest(_b, ["asChild", "size", "isActive", "className"]);
10539
10634
  const Comp = asChild ? Slot : "a";
10540
10635
  return /* @__PURE__ */ jsx(
@@ -10545,7 +10640,7 @@ var SidebarMenuSubButton = React77.forwardRef((_a, ref) => {
10545
10640
  "data-size": size,
10546
10641
  "data-active": isActive,
10547
10642
  className: cn(
10548
- "flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-none ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground",
10643
+ "flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-none ring-sidebar-ring [@media(hover:hover)]:hover:bg-sidebar-accent [@media(hover:hover)]:hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground",
10549
10644
  "data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground",
10550
10645
  size === "sm" && "text-xs",
10551
10646
  size === "md" && "text-sm",
@@ -10574,7 +10669,7 @@ var sidebarCardVariants = cva(
10574
10669
  }
10575
10670
  }
10576
10671
  );
10577
- var SidebarCard = React77.forwardRef(
10672
+ var SidebarCard = React78.forwardRef(
10578
10673
  (_a, ref) => {
10579
10674
  var _b = _a, { className, variant, children } = _b, props = __objRest(_b, ["className", "variant", "children"]);
10580
10675
  return /* @__PURE__ */ jsx(
@@ -10613,7 +10708,7 @@ var sidebarMenuItemVariants = cva("", {
10613
10708
  variant: "default"
10614
10709
  }
10615
10710
  });
10616
- var SidebarMenuItem2 = React77.forwardRef(
10711
+ var SidebarMenuItem2 = React78.forwardRef(
10617
10712
  (_a, ref) => {
10618
10713
  var _b = _a, {
10619
10714
  className,
@@ -10809,7 +10904,7 @@ function percent2(value, min, max) {
10809
10904
  if (max === min) return 0;
10810
10905
  return (value - min) / (max - min) * 100;
10811
10906
  }
10812
- var Slider = React77.forwardRef(
10907
+ var Slider = React78.forwardRef(
10813
10908
  (_a, ref) => {
10814
10909
  var _b = _a, {
10815
10910
  className,
@@ -10842,12 +10937,12 @@ var Slider = React77.forwardRef(
10842
10937
  "formatValue",
10843
10938
  "onValueChange"
10844
10939
  ]);
10845
- const trackRef = React77.useRef(null);
10846
- const [isDragging, setIsDragging] = React77.useState(false);
10847
- const [isFocused, setIsFocused] = React77.useState(false);
10940
+ const trackRef = React78.useRef(null);
10941
+ const [isDragging, setIsDragging] = React78.useState(false);
10942
+ const [isFocused, setIsFocused] = React78.useState(false);
10848
10943
  const pct = percent2(value, min, max);
10849
10944
  const displayValue = formatValue ? formatValue(value) : `${value}`;
10850
- const getValueFromPointer = React77.useCallback(
10945
+ const getValueFromPointer = React78.useCallback(
10851
10946
  (clientX) => {
10852
10947
  const track = trackRef.current;
10853
10948
  if (!track) return 0;
@@ -10858,7 +10953,7 @@ var Slider = React77.forwardRef(
10858
10953
  },
10859
10954
  [min, max, step]
10860
10955
  );
10861
- const handlePointerDown = React77.useCallback(
10956
+ const handlePointerDown = React78.useCallback(
10862
10957
  (e) => {
10863
10958
  if (disabled) return;
10864
10959
  e.preventDefault();
@@ -10869,7 +10964,7 @@ var Slider = React77.forwardRef(
10869
10964
  },
10870
10965
  [disabled, getValueFromPointer, onValueChange, value]
10871
10966
  );
10872
- const handlePointerMove = React77.useCallback(
10967
+ const handlePointerMove = React78.useCallback(
10873
10968
  (e) => {
10874
10969
  if (!isDragging || disabled) return;
10875
10970
  const newValue = getValueFromPointer(e.clientX);
@@ -10877,10 +10972,10 @@ var Slider = React77.forwardRef(
10877
10972
  },
10878
10973
  [isDragging, disabled, getValueFromPointer, onValueChange, value]
10879
10974
  );
10880
- const handlePointerUp = React77.useCallback(() => {
10975
+ const handlePointerUp = React78.useCallback(() => {
10881
10976
  setIsDragging(false);
10882
10977
  }, []);
10883
- const handleKeyDown = React77.useCallback(
10978
+ const handleKeyDown = React78.useCallback(
10884
10979
  (e) => {
10885
10980
  if (disabled) return;
10886
10981
  let newValue = value;
@@ -10907,7 +11002,7 @@ var Slider = React77.forwardRef(
10907
11002
  },
10908
11003
  [disabled, value, step, min, max, onValueChange]
10909
11004
  );
10910
- const tickLabels = React77.useMemo(() => {
11005
+ const tickLabels = React78.useMemo(() => {
10911
11006
  if (pointLabels) return pointLabels;
10912
11007
  const count2 = pointCount;
10913
11008
  const labels = [];
@@ -11001,7 +11096,7 @@ Slider.displayName = "Slider";
11001
11096
  function clamp3(value, min, max) {
11002
11097
  return Math.min(Math.max(value, min), max);
11003
11098
  }
11004
- var SliderInput = React77.forwardRef(
11099
+ var SliderInput = React78.forwardRef(
11005
11100
  (_a, ref) => {
11006
11101
  var _b = _a, {
11007
11102
  className,
@@ -11024,8 +11119,8 @@ var SliderInput = React77.forwardRef(
11024
11119
  "formatValue",
11025
11120
  "onValueChange"
11026
11121
  ]);
11027
- const [internalValue, setInternalValue] = React77.useState(value);
11028
- React77.useEffect(() => {
11122
+ const [internalValue, setInternalValue] = React78.useState(value);
11123
+ React78.useEffect(() => {
11029
11124
  setInternalValue(value);
11030
11125
  }, [value]);
11031
11126
  const commit = (newVal) => {
@@ -11132,7 +11227,7 @@ function percent3(value, min, max) {
11132
11227
  if (max === min) return 0;
11133
11228
  return (value - min) / (max - min) * 100;
11134
11229
  }
11135
- var SliderRange = React77.forwardRef(
11230
+ var SliderRange = React78.forwardRef(
11136
11231
  (_a, ref) => {
11137
11232
  var _b = _a, {
11138
11233
  className,
@@ -11165,15 +11260,15 @@ var SliderRange = React77.forwardRef(
11165
11260
  "formatValue",
11166
11261
  "onValueChange"
11167
11262
  ]);
11168
- const trackRef = React77.useRef(null);
11169
- const [draggingHandle, setDraggingHandle] = React77.useState(null);
11170
- const [focusedHandle, setFocusedHandle] = React77.useState(null);
11263
+ const trackRef = React78.useRef(null);
11264
+ const [draggingHandle, setDraggingHandle] = React78.useState(null);
11265
+ const [focusedHandle, setFocusedHandle] = React78.useState(null);
11171
11266
  const [rangeMin, rangeMax] = value;
11172
11267
  const pctMin = percent3(rangeMin, min, max);
11173
11268
  const pctMax = percent3(rangeMax, min, max);
11174
11269
  const fmt = (v) => formatValue ? formatValue(v) : `${v}`;
11175
11270
  const displayValue = `${fmt(rangeMin)} \u2013 ${fmt(rangeMax)}`;
11176
- const getValueFromPointer = React77.useCallback(
11271
+ const getValueFromPointer = React78.useCallback(
11177
11272
  (clientX) => {
11178
11273
  const track = trackRef.current;
11179
11274
  if (!track) return 0;
@@ -11184,7 +11279,7 @@ var SliderRange = React77.forwardRef(
11184
11279
  },
11185
11280
  [min, max, step]
11186
11281
  );
11187
- const closestHandle = React77.useCallback(
11282
+ const closestHandle = React78.useCallback(
11188
11283
  (pointerValue) => {
11189
11284
  const distMin = Math.abs(pointerValue - rangeMin);
11190
11285
  const distMax = Math.abs(pointerValue - rangeMax);
@@ -11192,7 +11287,7 @@ var SliderRange = React77.forwardRef(
11192
11287
  },
11193
11288
  [rangeMin, rangeMax]
11194
11289
  );
11195
- const updateValue = React77.useCallback(
11290
+ const updateValue = React78.useCallback(
11196
11291
  (handle, newVal) => {
11197
11292
  if (handle === 0) {
11198
11293
  const clamped = clamp4(newVal, min, rangeMax);
@@ -11204,7 +11299,7 @@ var SliderRange = React77.forwardRef(
11204
11299
  },
11205
11300
  [min, max, rangeMin, rangeMax, onValueChange]
11206
11301
  );
11207
- const handlePointerDown = React77.useCallback(
11302
+ const handlePointerDown = React78.useCallback(
11208
11303
  (e) => {
11209
11304
  if (disabled) return;
11210
11305
  e.preventDefault();
@@ -11216,7 +11311,7 @@ var SliderRange = React77.forwardRef(
11216
11311
  },
11217
11312
  [disabled, getValueFromPointer, closestHandle, updateValue]
11218
11313
  );
11219
- const handlePointerMove = React77.useCallback(
11314
+ const handlePointerMove = React78.useCallback(
11220
11315
  (e) => {
11221
11316
  if (draggingHandle === null || disabled) return;
11222
11317
  const newVal = getValueFromPointer(e.clientX);
@@ -11224,10 +11319,10 @@ var SliderRange = React77.forwardRef(
11224
11319
  },
11225
11320
  [draggingHandle, disabled, getValueFromPointer, updateValue]
11226
11321
  );
11227
- const handlePointerUp = React77.useCallback(() => {
11322
+ const handlePointerUp = React78.useCallback(() => {
11228
11323
  setDraggingHandle(null);
11229
11324
  }, []);
11230
- const makeKeyHandler = React77.useCallback(
11325
+ const makeKeyHandler = React78.useCallback(
11231
11326
  (handle) => (e) => {
11232
11327
  if (disabled) return;
11233
11328
  const currentVal = handle === 0 ? rangeMin : rangeMax;
@@ -11255,7 +11350,7 @@ var SliderRange = React77.forwardRef(
11255
11350
  },
11256
11351
  [disabled, rangeMin, rangeMax, step, min, max, updateValue]
11257
11352
  );
11258
- const tickLabels = React77.useMemo(() => {
11353
+ const tickLabels = React78.useMemo(() => {
11259
11354
  if (pointLabels) return pointLabels;
11260
11355
  const labels = [];
11261
11356
  for (let i = 0; i < pointCount; i++) {
@@ -11372,7 +11467,7 @@ var SliderRange = React77.forwardRef(
11372
11467
  }
11373
11468
  );
11374
11469
  SliderRange.displayName = "SliderRange";
11375
- var SliderRangeInput = React77.forwardRef(
11470
+ var SliderRangeInput = React78.forwardRef(
11376
11471
  (_a, ref) => {
11377
11472
  var _b = _a, {
11378
11473
  className,
@@ -11514,7 +11609,7 @@ var Toaster = (_a) => {
11514
11609
  );
11515
11610
  };
11516
11611
  var ToastProvider = ToastPrimitives.Provider;
11517
- var ToastViewport = React77.forwardRef((_a, ref) => {
11612
+ var ToastViewport = React78.forwardRef((_a, ref) => {
11518
11613
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
11519
11614
  return /* @__PURE__ */ jsx(
11520
11615
  ToastPrimitives.Viewport,
@@ -11542,7 +11637,7 @@ var toastVariants = cva(
11542
11637
  }
11543
11638
  }
11544
11639
  );
11545
- var Toast = React77.forwardRef((_a, ref) => {
11640
+ var Toast = React78.forwardRef((_a, ref) => {
11546
11641
  var _b = _a, { className, variant } = _b, props = __objRest(_b, ["className", "variant"]);
11547
11642
  return /* @__PURE__ */ jsx(
11548
11643
  ToastPrimitives.Root,
@@ -11553,28 +11648,28 @@ var Toast = React77.forwardRef((_a, ref) => {
11553
11648
  );
11554
11649
  });
11555
11650
  Toast.displayName = ToastPrimitives.Root.displayName;
11556
- var ToastAction = React77.forwardRef((_a, ref) => {
11651
+ var ToastAction = React78.forwardRef((_a, ref) => {
11557
11652
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
11558
11653
  return /* @__PURE__ */ jsx(
11559
11654
  ToastPrimitives.Action,
11560
11655
  __spreadValues({
11561
11656
  ref,
11562
11657
  className: cn(
11563
- "inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-sui-bg-default transition-colors hover:bg-sui-bg-state-ghost-hover focus:outline-none focus:ring-2 focus:ring-sui-border-highlight focus:ring-offset-2 disabled:text-sui-text-hint disabled:pointer-events-none group-[.destructive]:border-sui-border-default/40 group-[.destructive]:hover:border-sui-bg-state-destructive/30 group-[.destructive]:hover:bg-sui-bg-state-destructive group-[.destructive]:hover:text-sui-text-white-default group-[.destructive]:focus:ring-sui-border-highlight",
11658
+ "inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-sui-bg-default transition-colors [@media(hover:hover)]:hover:bg-sui-bg-state-ghost-hover focus:outline-none focus:ring-2 focus:ring-sui-border-highlight focus:ring-offset-2 disabled:text-sui-text-hint disabled:pointer-events-none group-[.destructive]:border-sui-border-default/40 group-[.destructive]:[@media(hover:hover)]:hover:border-sui-bg-state-destructive/30 group-[.destructive]:[@media(hover:hover)]:hover:bg-sui-bg-state-destructive group-[.destructive]:[@media(hover:hover)]:hover:text-sui-text-white-default group-[.destructive]:focus:ring-sui-border-highlight",
11564
11659
  className
11565
11660
  )
11566
11661
  }, props)
11567
11662
  );
11568
11663
  });
11569
11664
  ToastAction.displayName = ToastPrimitives.Action.displayName;
11570
- var ToastClose = React77.forwardRef((_a, ref) => {
11665
+ var ToastClose = React78.forwardRef((_a, ref) => {
11571
11666
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
11572
11667
  return /* @__PURE__ */ jsx(
11573
11668
  ToastPrimitives.Close,
11574
11669
  __spreadProps(__spreadValues({
11575
11670
  ref,
11576
11671
  className: cn(
11577
- "absolute right-2 top-2 rounded-md p-1 text-sui-text-default/50 opacity-0 transition-opacity hover:text-sui-text-default focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-sui-text-white-default/70 group-[.destructive]:hover:text-sui-text-white-default group-[.destructive]:focus:ring-sui-border-highlight group-[.destructive]:focus:ring-offset-sui-bg-state-destructive",
11672
+ "absolute right-2 top-2 rounded-md p-1 text-sui-text-default/50 opacity-0 transition-opacity [@media(hover:hover)]:hover:text-sui-text-default focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-sui-text-white-default/70 group-[.destructive]:[@media(hover:hover)]:hover:text-sui-text-white-default group-[.destructive]:focus:ring-sui-border-highlight group-[.destructive]:focus:ring-offset-sui-bg-state-destructive",
11578
11673
  className
11579
11674
  ),
11580
11675
  "toast-close": ""
@@ -11584,7 +11679,7 @@ var ToastClose = React77.forwardRef((_a, ref) => {
11584
11679
  );
11585
11680
  });
11586
11681
  ToastClose.displayName = ToastPrimitives.Close.displayName;
11587
- var ToastTitle = React77.forwardRef((_a, ref) => {
11682
+ var ToastTitle = React78.forwardRef((_a, ref) => {
11588
11683
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
11589
11684
  return /* @__PURE__ */ jsx(
11590
11685
  ToastPrimitives.Title,
@@ -11595,7 +11690,7 @@ var ToastTitle = React77.forwardRef((_a, ref) => {
11595
11690
  );
11596
11691
  });
11597
11692
  ToastTitle.displayName = ToastPrimitives.Title.displayName;
11598
- var ToastDescription = React77.forwardRef((_a, ref) => {
11693
+ var ToastDescription = React78.forwardRef((_a, ref) => {
11599
11694
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
11600
11695
  return /* @__PURE__ */ jsx(
11601
11696
  ToastPrimitives.Description,
@@ -11700,8 +11795,8 @@ function toast(_a) {
11700
11795
  };
11701
11796
  }
11702
11797
  function useToast() {
11703
- const [state, setState] = React77.useState(memoryState);
11704
- React77.useEffect(() => {
11798
+ const [state, setState] = React78.useState(memoryState);
11799
+ React78.useEffect(() => {
11705
11800
  listeners.push(setState);
11706
11801
  return () => {
11707
11802
  const index = listeners.indexOf(setState);
@@ -11732,7 +11827,7 @@ function Toaster2() {
11732
11827
  /* @__PURE__ */ jsx(ToastViewport, {})
11733
11828
  ] });
11734
11829
  }
11735
- var Switch = React77.forwardRef((_a, ref) => {
11830
+ var Switch = React78.forwardRef((_a, ref) => {
11736
11831
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
11737
11832
  return /* @__PURE__ */ jsx(
11738
11833
  SwitchPrimitives.Root,
@@ -11744,10 +11839,10 @@ var Switch = React77.forwardRef((_a, ref) => {
11744
11839
  "transition-colors duration-150",
11745
11840
  // Unchecked track
11746
11841
  "data-[state=unchecked]:bg-sui-bg-switch-default",
11747
- "data-[state=unchecked]:hover:bg-sui-bg-switch-default-hover",
11842
+ "data-[state=unchecked]:[@media(hover:hover)]:hover:bg-sui-bg-switch-default-hover",
11748
11843
  // Checked track
11749
11844
  "data-[state=checked]:bg-sui-bg-switch-active",
11750
- "data-[state=checked]:hover:bg-sui-bg-switch-active-hover",
11845
+ "data-[state=checked]:[@media(hover:hover)]:hover:bg-sui-bg-switch-active-hover",
11751
11846
  // Focus: 1px accent-inverted + 3px highlight (matching Figma box-shadow ring)
11752
11847
  "focus-visible:outline-none",
11753
11848
  "focus-visible:shadow-misc-focus",
@@ -11784,10 +11879,10 @@ var Switch = React77.forwardRef((_a, ref) => {
11784
11879
  );
11785
11880
  });
11786
11881
  Switch.displayName = "Switch";
11787
- var SwitchList = React77.forwardRef(
11882
+ var SwitchList = React78.forwardRef(
11788
11883
  (_a, ref) => {
11789
11884
  var _b = _a, { className, divider = true, children } = _b, props = __objRest(_b, ["className", "divider", "children"]);
11790
- const items = React77.Children.toArray(children);
11885
+ const items = React78.Children.toArray(children);
11791
11886
  return /* @__PURE__ */ jsx(
11792
11887
  "div",
11793
11888
  __spreadProps(__spreadValues({
@@ -11815,7 +11910,7 @@ var SwitchList = React77.forwardRef(
11815
11910
  }
11816
11911
  );
11817
11912
  SwitchList.displayName = "SwitchList";
11818
- var SwitchWithText = React77.forwardRef(
11913
+ var SwitchWithText = React78.forwardRef(
11819
11914
  (_a, ref) => {
11820
11915
  var _b = _a, {
11821
11916
  className,
@@ -11832,7 +11927,7 @@ var SwitchWithText = React77.forwardRef(
11832
11927
  "disabled",
11833
11928
  "id"
11834
11929
  ]);
11835
- const generatedId = React77.useId();
11930
+ const generatedId = React78.useId();
11836
11931
  const switchId = id || generatedId;
11837
11932
  return /* @__PURE__ */ jsxs(
11838
11933
  "div",
@@ -11889,7 +11984,7 @@ var SwitchWithText = React77.forwardRef(
11889
11984
  }
11890
11985
  );
11891
11986
  SwitchWithText.displayName = "SwitchWithText";
11892
- var Table = React77.forwardRef((_a, ref) => {
11987
+ var Table = React78.forwardRef((_a, ref) => {
11893
11988
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
11894
11989
  return /* @__PURE__ */ jsx("div", { className: "relative w-full overflow-auto", children: /* @__PURE__ */ jsx(
11895
11990
  "table",
@@ -11900,12 +11995,12 @@ var Table = React77.forwardRef((_a, ref) => {
11900
11995
  ) });
11901
11996
  });
11902
11997
  Table.displayName = "Table";
11903
- var TableHeader = React77.forwardRef((_a, ref) => {
11998
+ var TableHeader = React78.forwardRef((_a, ref) => {
11904
11999
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
11905
12000
  return /* @__PURE__ */ jsx("thead", __spreadValues({ ref, className: cn("[&_tr]:border-b [&_tr]:border-sui-border-default", className) }, props));
11906
12001
  });
11907
12002
  TableHeader.displayName = "TableHeader";
11908
- var TableBody = React77.forwardRef((_a, ref) => {
12003
+ var TableBody = React78.forwardRef((_a, ref) => {
11909
12004
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
11910
12005
  return /* @__PURE__ */ jsx(
11911
12006
  "tbody",
@@ -11916,7 +12011,7 @@ var TableBody = React77.forwardRef((_a, ref) => {
11916
12011
  );
11917
12012
  });
11918
12013
  TableBody.displayName = "TableBody";
11919
- var TableFooter = React77.forwardRef((_a, ref) => {
12014
+ var TableFooter = React78.forwardRef((_a, ref) => {
11920
12015
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
11921
12016
  return /* @__PURE__ */ jsx(
11922
12017
  "tfoot",
@@ -11930,21 +12025,21 @@ var TableFooter = React77.forwardRef((_a, ref) => {
11930
12025
  );
11931
12026
  });
11932
12027
  TableFooter.displayName = "TableFooter";
11933
- var TableRow = React77.forwardRef((_a, ref) => {
12028
+ var TableRow = React78.forwardRef((_a, ref) => {
11934
12029
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
11935
12030
  return /* @__PURE__ */ jsx(
11936
12031
  "tr",
11937
12032
  __spreadValues({
11938
12033
  ref,
11939
12034
  className: cn(
11940
- "border-b border-sui-border-default transition-colors hover:bg-sui-bg-basic-gray-alpha-2 data-[state=selected]:bg-sui-bg-basic-gray-alpha-4",
12035
+ "border-b border-sui-border-default transition-colors [@media(hover:hover)]:hover:bg-sui-bg-basic-gray-alpha-2 data-[state=selected]:bg-sui-bg-basic-gray-alpha-4",
11941
12036
  className
11942
12037
  )
11943
12038
  }, props)
11944
12039
  );
11945
12040
  });
11946
12041
  TableRow.displayName = "TableRow";
11947
- var TableHead = React77.forwardRef((_a, ref) => {
12042
+ var TableHead = React78.forwardRef((_a, ref) => {
11948
12043
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
11949
12044
  return /* @__PURE__ */ jsx(
11950
12045
  "th",
@@ -11958,7 +12053,7 @@ var TableHead = React77.forwardRef((_a, ref) => {
11958
12053
  );
11959
12054
  });
11960
12055
  TableHead.displayName = "TableHead";
11961
- var TableCell = React77.forwardRef((_a, ref) => {
12056
+ var TableCell = React78.forwardRef((_a, ref) => {
11962
12057
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
11963
12058
  return /* @__PURE__ */ jsx(
11964
12059
  "td",
@@ -11969,7 +12064,7 @@ var TableCell = React77.forwardRef((_a, ref) => {
11969
12064
  );
11970
12065
  });
11971
12066
  TableCell.displayName = "TableCell";
11972
- var TableCaption = React77.forwardRef((_a, ref) => {
12067
+ var TableCaption = React78.forwardRef((_a, ref) => {
11973
12068
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
11974
12069
  return /* @__PURE__ */ jsx(
11975
12070
  "caption",
@@ -12005,7 +12100,7 @@ var ariaSortMap2 = {
12005
12100
  desc: "descending",
12006
12101
  none: "none"
12007
12102
  };
12008
- var TableHeaderItem = React77.forwardRef(
12103
+ var TableHeaderItem = React78.forwardRef(
12009
12104
  (_a, ref) => {
12010
12105
  var _b = _a, {
12011
12106
  className,
@@ -12066,7 +12161,7 @@ var TableHeaderItem = React77.forwardRef(
12066
12161
  resizable && /* @__PURE__ */ jsx(
12067
12162
  "div",
12068
12163
  {
12069
- className: "absolute right-0 top-0 h-full w-1 cursor-col-resize opacity-0 transition-opacity hover:opacity-100 hover:bg-sui-border-highlight z-10",
12164
+ className: "absolute right-0 top-0 h-full w-1 cursor-col-resize opacity-0 transition-opacity [@media(hover:hover)]:hover:opacity-100 [@media(hover:hover)]:hover:bg-sui-border-highlight z-10",
12070
12165
  onPointerDown: (e) => {
12071
12166
  e.stopPropagation();
12072
12167
  onResizeStart == null ? void 0 : onResizeStart(e);
@@ -12121,7 +12216,7 @@ var tableItemVariants = cva("flex items-center px-2", {
12121
12216
  size: "lg"
12122
12217
  }
12123
12218
  });
12124
- var TableItem = React77.forwardRef(
12219
+ var TableItem = React78.forwardRef(
12125
12220
  (_a, ref) => {
12126
12221
  var _b = _a, {
12127
12222
  className,
@@ -12205,7 +12300,7 @@ var TableItem = React77.forwardRef(
12205
12300
  }
12206
12301
  );
12207
12302
  TableItem.displayName = "TableItem";
12208
- var TablePagination = React77.forwardRef(
12303
+ var TablePagination = React78.forwardRef(
12209
12304
  (_a, ref) => {
12210
12305
  var _b = _a, {
12211
12306
  className,
@@ -12240,7 +12335,7 @@ var TablePagination = React77.forwardRef(
12240
12335
  )
12241
12336
  }, props), {
12242
12337
  children: paginatorVariant === "numbered" ? /* @__PURE__ */ jsxs(Fragment, { children: [
12243
- /* @__PURE__ */ jsxs("p", { className: "text-sm font-normal leading-5 text-sui-text-muted whitespace-nowrap", children: [
12338
+ /* @__PURE__ */ jsxs("p", { className: "text-sm font-normal leading-5 tabular-nums text-sui-text-muted whitespace-nowrap", children: [
12244
12339
  startResult,
12245
12340
  "\u2013",
12246
12341
  endResult,
@@ -12282,7 +12377,7 @@ var tableRowSortVariants = cva(
12282
12377
  variants: {
12283
12378
  variant: {
12284
12379
  header: "border-t",
12285
- default: "hover:bg-sui-bg-basic-gray-alpha-2",
12380
+ default: "[@media(hover:hover)]:hover:bg-sui-bg-basic-gray-alpha-2",
12286
12381
  hover: "bg-sui-bg-basic-gray-alpha-2",
12287
12382
  selected: "bg-sui-bg-basic-gray-alpha-4"
12288
12383
  }
@@ -12292,7 +12387,7 @@ var tableRowSortVariants = cva(
12292
12387
  }
12293
12388
  }
12294
12389
  );
12295
- var TableRowSort = React77.forwardRef(
12390
+ var TableRowSort = React78.forwardRef(
12296
12391
  (_a, ref) => {
12297
12392
  var _b = _a, { className, variant = "default", striped, sticky, children } = _b, props = __objRest(_b, ["className", "variant", "striped", "sticky", "children"]);
12298
12393
  return /* @__PURE__ */ jsx(
@@ -12315,7 +12410,7 @@ var TableRowSort = React77.forwardRef(
12315
12410
  TableRowSort.displayName = "TableRowSort";
12316
12411
  var textWidths = ["w-20", "w-28", "w-24", "w-32", "w-16", "w-26", "w-22", "w-30"];
12317
12412
  var skeletonBg = "bg-sui-bg-basic-gray-alpha-4";
12318
- var TableSkeletonRow = React77.forwardRef(
12413
+ var TableSkeletonRow = React78.forwardRef(
12319
12414
  (_a, ref) => {
12320
12415
  var _b = _a, { className, columns, rowCount = 5, size = "sm" } = _b, props = __objRest(_b, ["className", "columns", "rowCount", "size"]);
12321
12416
  return /* @__PURE__ */ jsx("div", __spreadProps(__spreadValues({ ref, className, "aria-hidden": "true" }, props), { children: Array.from({ length: rowCount }, (_, rowIdx) => /* @__PURE__ */ jsx(TableRowSort, { variant: "default", children: columns.map((col, colIdx) => {
@@ -12365,12 +12460,12 @@ var tabListVariants = cva(
12365
12460
  }
12366
12461
  }
12367
12462
  );
12368
- var TabList = React77.forwardRef((_a, ref) => {
12463
+ var TabList = React78.forwardRef((_a, ref) => {
12369
12464
  var _b = _a, { className, variant = "pill", shape = "pill", layout, children } = _b, props = __objRest(_b, ["className", "variant", "shape", "layout", "children"]);
12370
12465
  const childShape = variant === "segmented" && shape === "rounded" ? "rounded" : shape;
12371
12466
  const childRadiusOverride = variant === "segmented" && shape === "rounded" ? "rounded-sm" : void 0;
12372
- const enhancedChildren = React77.Children.map(children, (child) => {
12373
- if (!React77.isValidElement(child)) return child;
12467
+ const enhancedChildren = React78.Children.map(children, (child) => {
12468
+ if (!React78.isValidElement(child)) return child;
12374
12469
  const extraProps = {
12375
12470
  shape: childShape
12376
12471
  };
@@ -12378,7 +12473,7 @@ var TabList = React77.forwardRef((_a, ref) => {
12378
12473
  const existingClassName = child.props.className;
12379
12474
  extraProps.className = cn(existingClassName, childRadiusOverride);
12380
12475
  }
12381
- return React77.cloneElement(child, extraProps);
12476
+ return React78.cloneElement(child, extraProps);
12382
12477
  });
12383
12478
  return /* @__PURE__ */ jsx(
12384
12479
  TabsPrimitive4.List,
@@ -12408,8 +12503,8 @@ var tabItemVariants = cva(
12408
12503
  // Icon colors default
12409
12504
  "[&_i]:text-icon-default-muted [&_svg]:text-icon-default-muted",
12410
12505
  // Hover state
12411
- "hover:bg-sui-bg-state-ghost-hover hover:text-sui-text-default",
12412
- "hover:[&_i]:text-icon-default-subtle hover:[&_svg]:text-icon-default-subtle",
12506
+ "[@media(hover:hover)]:hover:bg-sui-bg-state-ghost-hover [@media(hover:hover)]:hover:text-sui-text-default",
12507
+ "[@media(hover:hover)]:hover:[&_i]:text-icon-default-subtle [@media(hover:hover)]:hover:[&_svg]:text-icon-default-subtle",
12413
12508
  // Active/selected state (Radix data attribute)
12414
12509
  // Border simulated via inset box-shadow (spread:1) to match Figma and avoid height increase
12415
12510
  "data-[state=active]:bg-sui-bg-state-secondary",
@@ -12440,7 +12535,7 @@ var tabItemVariants = cva(
12440
12535
  }
12441
12536
  }
12442
12537
  );
12443
- var TabItem = React77.forwardRef((_a, ref) => {
12538
+ var TabItem = React78.forwardRef((_a, ref) => {
12444
12539
  var _b = _a, { className, shape, size } = _b, props = __objRest(_b, ["className", "shape", "size"]);
12445
12540
  return /* @__PURE__ */ jsx(
12446
12541
  TabsPrimitive4.Trigger,
@@ -12452,7 +12547,7 @@ var TabItem = React77.forwardRef((_a, ref) => {
12452
12547
  });
12453
12548
  TabItem.displayName = "TabItem";
12454
12549
  var Tabs = TabsPrimitive4.Root;
12455
- var TabsList = React77.forwardRef((_a, ref) => {
12550
+ var TabsList = React78.forwardRef((_a, ref) => {
12456
12551
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
12457
12552
  return /* @__PURE__ */ jsx(
12458
12553
  TabsPrimitive4.List,
@@ -12466,7 +12561,7 @@ var TabsList = React77.forwardRef((_a, ref) => {
12466
12561
  );
12467
12562
  });
12468
12563
  TabsList.displayName = TabsPrimitive4.List.displayName;
12469
- var TabsTrigger = React77.forwardRef((_a, ref) => {
12564
+ var TabsTrigger = React78.forwardRef((_a, ref) => {
12470
12565
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
12471
12566
  return /* @__PURE__ */ jsx(
12472
12567
  TabsPrimitive4.Trigger,
@@ -12480,7 +12575,7 @@ var TabsTrigger = React77.forwardRef((_a, ref) => {
12480
12575
  );
12481
12576
  });
12482
12577
  TabsTrigger.displayName = TabsPrimitive4.Trigger.displayName;
12483
- var TabsContent = React77.forwardRef((_a, ref) => {
12578
+ var TabsContent = React78.forwardRef((_a, ref) => {
12484
12579
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
12485
12580
  return /* @__PURE__ */ jsx(
12486
12581
  TabsPrimitive4.Content,
@@ -12524,7 +12619,7 @@ var textAreaContainerVariants = cva(
12524
12619
  }
12525
12620
  }
12526
12621
  );
12527
- var TextAreaField = React77.forwardRef(
12622
+ var TextAreaField = React78.forwardRef(
12528
12623
  (_a, ref) => {
12529
12624
  var _b = _a, {
12530
12625
  className,
@@ -12546,7 +12641,9 @@ var TextAreaField = React77.forwardRef(
12546
12641
  id,
12547
12642
  value,
12548
12643
  defaultValue,
12549
- onChange
12644
+ onChange,
12645
+ spellCheck,
12646
+ autoComplete
12550
12647
  } = _b, props = __objRest(_b, [
12551
12648
  "className",
12552
12649
  "inputStyle",
@@ -12567,9 +12664,11 @@ var TextAreaField = React77.forwardRef(
12567
12664
  "id",
12568
12665
  "value",
12569
12666
  "defaultValue",
12570
- "onChange"
12667
+ "onChange",
12668
+ "spellCheck",
12669
+ "autoComplete"
12571
12670
  ]);
12572
- const generatedId = React77.useId();
12671
+ const generatedId = React78.useId();
12573
12672
  const textAreaId = id || generatedId;
12574
12673
  const captionId = `${textAreaId}-caption`;
12575
12674
  const charCountId = `${textAreaId}-charcount`;
@@ -12577,17 +12676,30 @@ var TextAreaField = React77.forwardRef(
12577
12676
  const helperText = hasError ? error : caption;
12578
12677
  const hasActionBar = !!(leadActions || tailActions);
12579
12678
  const showCount = !!(showCharCount && maxLength);
12679
+ const innerRef = React78.useRef(null);
12680
+ React78.useImperativeHandle(ref, () => innerRef.current, []);
12681
+ const focusTextareaOnDecorationClick = (e) => {
12682
+ var _a2;
12683
+ if (disabled) return;
12684
+ const target = e.target;
12685
+ if (target === innerRef.current) return;
12686
+ if (target.closest('button, a, input, textarea, select, [role="button"], [role="toolbar"]')) return;
12687
+ e.preventDefault();
12688
+ (_a2 = innerRef.current) == null ? void 0 : _a2.focus();
12689
+ };
12690
+ const resolvedSpellCheck = spellCheck != null ? spellCheck : false;
12691
+ const resolvedAutoComplete = autoComplete != null ? autoComplete : "off";
12580
12692
  const isResizable = !!(resizable && !compact && !bottomToolbar && !hasActionBar);
12581
12693
  const describedByIds = [
12582
12694
  helperText ? captionId : null,
12583
12695
  showCount ? charCountId : null
12584
12696
  ].filter(Boolean).join(" ") || void 0;
12585
- const [charCount, setCharCount] = React77.useState(() => {
12697
+ const [charCount, setCharCount] = React78.useState(() => {
12586
12698
  if (value !== void 0) return String(value).length;
12587
12699
  if (defaultValue !== void 0) return String(defaultValue).length;
12588
12700
  return 0;
12589
12701
  });
12590
- React77.useEffect(() => {
12702
+ React78.useEffect(() => {
12591
12703
  if (value !== void 0) {
12592
12704
  setCharCount(String(value).length);
12593
12705
  }
@@ -12610,6 +12722,7 @@ var TextAreaField = React77.forwardRef(
12610
12722
  /* @__PURE__ */ jsx(
12611
12723
  "div",
12612
12724
  {
12725
+ onPointerDown: focusTextareaOnDecorationClick,
12613
12726
  className: cn(
12614
12727
  textAreaContainerVariants({ inputStyle }),
12615
12728
  // overflow-clip clips rounded corners on children; disable when resizable
@@ -12640,11 +12753,13 @@ var TextAreaField = React77.forwardRef(
12640
12753
  /* @__PURE__ */ jsx(
12641
12754
  "textarea",
12642
12755
  __spreadValues({
12643
- ref,
12756
+ ref: innerRef,
12644
12757
  id: textAreaId,
12645
12758
  rows: 1,
12646
12759
  disabled,
12647
12760
  required,
12761
+ spellCheck: resolvedSpellCheck,
12762
+ autoComplete: resolvedAutoComplete,
12648
12763
  maxLength,
12649
12764
  value,
12650
12765
  defaultValue,
@@ -12653,7 +12768,8 @@ var TextAreaField = React77.forwardRef(
12653
12768
  "aria-describedby": describedByIds,
12654
12769
  className: cn(
12655
12770
  "flex-1 min-w-0 resize-none overflow-hidden bg-transparent outline-none",
12656
- "text-sm leading-5",
12771
+ // #29 16px on touch (prevents iOS zoom), 14px on md+
12772
+ "text-base md:text-sm leading-5",
12657
12773
  "text-sui-text-default",
12658
12774
  "placeholder:text-sui-text-muted",
12659
12775
  disabled && "text-sui-text-hint placeholder:text-sui-text-hint cursor-not-allowed"
@@ -12677,10 +12793,12 @@ var TextAreaField = React77.forwardRef(
12677
12793
  /* @__PURE__ */ jsx(
12678
12794
  "textarea",
12679
12795
  __spreadValues({
12680
- ref,
12796
+ ref: innerRef,
12681
12797
  id: textAreaId,
12682
12798
  disabled,
12683
12799
  required,
12800
+ spellCheck: resolvedSpellCheck,
12801
+ autoComplete: resolvedAutoComplete,
12684
12802
  maxLength,
12685
12803
  value,
12686
12804
  defaultValue,
@@ -12689,7 +12807,8 @@ var TextAreaField = React77.forwardRef(
12689
12807
  "aria-describedby": describedByIds,
12690
12808
  className: cn(
12691
12809
  "min-h-[60px] w-full bg-transparent outline-none",
12692
- "text-sm leading-5",
12810
+ // #29 16px on touch (prevents iOS zoom), 14px on md+
12811
+ "text-base md:text-sm leading-5",
12693
12812
  "text-sui-text-default",
12694
12813
  "placeholder:text-sui-text-muted",
12695
12814
  isResizable ? "resize-y overflow-y-auto pr-3 pb-3" : "flex-1 resize-none overflow-hidden",
@@ -12766,11 +12885,12 @@ var TextAreaField = React77.forwardRef(
12766
12885
  }
12767
12886
  );
12768
12887
  TextAreaField.displayName = "TextAreaField";
12769
- var Textarea = React77.forwardRef((_a, ref) => {
12770
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
12888
+ var Textarea = React78.forwardRef((_a, ref) => {
12889
+ var _b = _a, { className, spellCheck } = _b, props = __objRest(_b, ["className", "spellCheck"]);
12771
12890
  return /* @__PURE__ */ jsx(
12772
12891
  "textarea",
12773
12892
  __spreadValues({
12893
+ spellCheck: spellCheck != null ? spellCheck : false,
12774
12894
  className: cn(
12775
12895
  "flex min-h-[80px] w-full rounded-md border border-sui-border-darker bg-sui-bg-input px-3 py-2 text-base ring-offset-sui-bg-default placeholder:text-sui-text-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sui-border-highlight focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:text-sui-text-hint disabled:pointer-events-none md:text-sm",
12776
12896
  className
@@ -12794,13 +12914,13 @@ var toggleVariants = cva(
12794
12914
  variant: {
12795
12915
  default: [
12796
12916
  "bg-sui-bg-state-ghost text-sui-text-muted [&_svg]:text-icon-default-muted [&_i]:text-icon-default-muted",
12797
- "hover:bg-sui-bg-state-ghost-hover hover:text-sui-text-subtle",
12917
+ "[@media(hover:hover)]:hover:bg-sui-bg-state-ghost-hover [@media(hover:hover)]:hover:text-sui-text-subtle",
12798
12918
  "active:bg-sui-bg-state-ghost-press",
12799
12919
  "data-[state=on]:bg-sui-bg-badge-blue data-[state=on]:text-sui-bg-basic-blue-strong data-[state=on]:[&_svg]:text-sui-bg-basic-blue-strong data-[state=on]:[&_i]:text-sui-bg-basic-blue-strong"
12800
12920
  ].join(" "),
12801
12921
  outline: [
12802
12922
  "bg-sui-bg-state-secondary border border-sui-border-darker text-sui-text-muted [&_svg]:text-icon-default-muted [&_i]:text-icon-default-muted shadow-default",
12803
- "hover:bg-sui-bg-state-secondary-hover hover:text-sui-text-subtle",
12923
+ "[@media(hover:hover)]:hover:bg-sui-bg-state-secondary-hover [@media(hover:hover)]:hover:text-sui-text-subtle",
12804
12924
  "active:bg-sui-bg-state-secondary-press",
12805
12925
  "data-[state=on]:bg-sui-bg-badge-blue data-[state=on]:border-sui-border-blue data-[state=on]:text-sui-bg-basic-blue-strong data-[state=on]:[&_svg]:text-sui-bg-basic-blue-strong data-[state=on]:[&_i]:text-sui-bg-basic-blue-strong"
12806
12926
  ].join(" ")
@@ -12818,7 +12938,7 @@ var toggleVariants = cva(
12818
12938
  }
12819
12939
  }
12820
12940
  );
12821
- var Toggle = React77.forwardRef((_a, ref) => {
12941
+ var Toggle = React78.forwardRef((_a, ref) => {
12822
12942
  var _b = _a, { className, variant, size } = _b, props = __objRest(_b, ["className", "variant", "size"]);
12823
12943
  return /* @__PURE__ */ jsx(
12824
12944
  TogglePrimitive.Root,
@@ -12830,7 +12950,7 @@ var Toggle = React77.forwardRef((_a, ref) => {
12830
12950
  });
12831
12951
  Toggle.displayName = TogglePrimitive.Root.displayName;
12832
12952
  function useMergedRef(...refs) {
12833
- return React77.useCallback((node) => {
12953
+ return React78.useCallback((node) => {
12834
12954
  refs.forEach((ref) => {
12835
12955
  if (typeof ref === "function") ref(node);
12836
12956
  else if (ref && "current" in ref)
@@ -12859,13 +12979,13 @@ var chipSizeMap = {
12859
12979
  xs: "sm",
12860
12980
  "2xs": "sm"
12861
12981
  };
12862
- var ToggleGroupContext = React77.createContext(null);
12982
+ var ToggleGroupContext = React78.createContext(null);
12863
12983
  function useToggleGroup() {
12864
- const ctx = React77.useContext(ToggleGroupContext);
12984
+ const ctx = React78.useContext(ToggleGroupContext);
12865
12985
  if (!ctx) throw new Error("ToggleGroupItem must be used within a ToggleGroup");
12866
12986
  return ctx;
12867
12987
  }
12868
- var ToggleGroup = React77.forwardRef(
12988
+ var ToggleGroup = React78.forwardRef(
12869
12989
  (props, ref) => {
12870
12990
  const {
12871
12991
  type,
@@ -12880,16 +13000,16 @@ var ToggleGroup = React77.forwardRef(
12880
13000
  const controlledValue = "value" in props ? props.value : void 0;
12881
13001
  const defaultValue = "defaultValue" in props ? props.defaultValue : void 0;
12882
13002
  const onValueChange = "onValueChange" in props ? props.onValueChange : void 0;
12883
- const [internalValue, setInternalValue] = React77.useState(
13003
+ const [internalValue, setInternalValue] = React78.useState(
12884
13004
  defaultValue
12885
13005
  );
12886
13006
  const isControlled = controlledValue !== void 0;
12887
13007
  const value = isControlled ? controlledValue : internalValue;
12888
- const [rovingFocusValue, setRovingFocusValue] = React77.useState(null);
12889
- const itemRefs = React77.useRef(/* @__PURE__ */ new Map());
12890
- const itemValues = React77.useRef([]);
12891
- const [, notifyRegistration] = React77.useReducer((x) => x + 1, 0);
12892
- const isActive = React77.useCallback(
13008
+ const [rovingFocusValue, setRovingFocusValue] = React78.useState(null);
13009
+ const itemRefs = React78.useRef(/* @__PURE__ */ new Map());
13010
+ const itemValues = React78.useRef([]);
13011
+ const [, notifyRegistration] = React78.useReducer((x) => x + 1, 0);
13012
+ const isActive = React78.useCallback(
12893
13013
  (itemValue) => {
12894
13014
  if (type === "single") return value === itemValue;
12895
13015
  if (type === "multiple" && Array.isArray(value)) return value.includes(itemValue);
@@ -12897,7 +13017,7 @@ var ToggleGroup = React77.forwardRef(
12897
13017
  },
12898
13018
  [type, value]
12899
13019
  );
12900
- const toggle = React77.useCallback(
13020
+ const toggle = React78.useCallback(
12901
13021
  (itemValue) => {
12902
13022
  if (type === "single") {
12903
13023
  const newValue = value === itemValue ? void 0 : itemValue;
@@ -12941,7 +13061,7 @@ var ToggleGroup = React77.forwardRef(
12941
13061
  }
12942
13062
  );
12943
13063
  ToggleGroup.displayName = "ToggleGroup";
12944
- var ToggleGroupItem = React77.forwardRef(
13064
+ var ToggleGroupItem = React78.forwardRef(
12945
13065
  (_a, ref) => {
12946
13066
  var _b = _a, {
12947
13067
  value: itemValue,
@@ -12976,9 +13096,9 @@ var ToggleGroupItem = React77.forwardRef(
12976
13096
  const disabled = ctx.disabled || itemDisabled;
12977
13097
  const resolvedSize = bgSize != null ? bgSize : "lg";
12978
13098
  const chipSize = chipSizeMap[resolvedSize];
12979
- const internalRef = React77.useRef(null);
13099
+ const internalRef = React78.useRef(null);
12980
13100
  const mergedRef = useMergedRef(ref, internalRef);
12981
- React77.useEffect(() => {
13101
+ React78.useEffect(() => {
12982
13102
  const el = internalRef.current;
12983
13103
  if (!el) return;
12984
13104
  ctx.itemRefs.current.set(itemValue, el);
@@ -13108,11 +13228,11 @@ var ToggleGroupItem = React77.forwardRef(
13108
13228
  className: cn(
13109
13229
  "inline-flex items-center justify-center select-none transition-colors rounded-none",
13110
13230
  "[&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
13111
- "focus-visible:outline focus-visible:outline-[3px] focus-visible:outline-sui-border-highlight focus-visible:outline-offset-[1px] focus-visible:z-10",
13112
- "focus-visible:ring-0 focus-visible:ring-offset-0",
13231
+ // Web Interface Guidelines #42 — focus ring via box-shadow (ring), not outline.
13232
+ "focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-sui-border-highlight focus-visible:ring-offset-[1px] focus-visible:z-10",
13113
13233
  // Ghost-like unselected state
13114
13234
  "bg-sui-bg-state-ghost text-sui-text-muted [&_svg]:text-icon-default-muted",
13115
- "hover:bg-sui-bg-state-ghost-hover hover:text-sui-text-subtle hover:[&_svg]:text-icon-default-subtle",
13235
+ "[@media(hover:hover)]:hover:bg-sui-bg-state-ghost-hover [@media(hover:hover)]:hover:text-sui-text-subtle [@media(hover:hover)]:hover:[&_svg]:text-icon-default-subtle",
13116
13236
  "active:bg-sui-bg-state-ghost-press",
13117
13237
  // Selected state
13118
13238
  active && "bg-sui-bg-badge-blue text-sui-bg-basic-blue-strong [&_svg]:text-sui-bg-basic-blue-strong",
@@ -13146,9 +13266,9 @@ var ToggleGroupItem = React77.forwardRef(
13146
13266
  "aria-label": ariaLabel,
13147
13267
  className: cn(
13148
13268
  "rounded-none transition-all duration-200",
13149
- // Override Chip's ring-based focus ring with outline + z-10 (matches ButtonGroupItem)
13150
- "focus-visible:outline focus-visible:outline-[3px] focus-visible:outline-sui-border-highlight focus-visible:outline-offset-[1px] focus-visible:z-10",
13151
- "focus-visible:ring-0 focus-visible:ring-offset-0",
13269
+ // Web Interface Guidelines #42 — focus ring via box-shadow (ring), respects radius.
13270
+ // Overrides Chip's ring with z-10 so it sits above adjacent items.
13271
+ "focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-sui-border-highlight focus-visible:ring-offset-[1px] focus-visible:z-10",
13152
13272
  iconOnly ? iconOnlySizeOverrides[resolvedSize] : sizeOverrides[resolvedSize],
13153
13273
  showSeparator && "border-l border-l-sui-border-darker",
13154
13274
  className
@@ -13169,12 +13289,12 @@ var userbarVariants = cva(
13169
13289
  default: [
13170
13290
  "w-full gap-3 p-3",
13171
13291
  "bg-sui-bg-state-ghost border-b border-sui-border-default",
13172
- "hover:bg-sui-bg-state-ghost-hover active:bg-sui-bg-state-ghost-press"
13292
+ "[@media(hover:hover)]:hover:bg-sui-bg-state-ghost-hover active:bg-sui-bg-state-ghost-press"
13173
13293
  ],
13174
13294
  compact: [
13175
13295
  "gap-2 p-1 rounded-md",
13176
13296
  "bg-sui-bg-state-ghost",
13177
- "hover:bg-sui-bg-state-ghost-hover active:bg-sui-bg-state-ghost-press"
13297
+ "[@media(hover:hover)]:hover:bg-sui-bg-state-ghost-hover active:bg-sui-bg-state-ghost-press"
13178
13298
  ],
13179
13299
  contained: [
13180
13300
  "w-full p-3",
@@ -13195,7 +13315,7 @@ var containedInnerVariants = cva(
13195
13315
  "group-hover:bg-sui-bg-state-secondary-hover group-active:bg-sui-bg-state-secondary-press"
13196
13316
  ]
13197
13317
  );
13198
- var Userbar = React77.forwardRef(
13318
+ var Userbar = React78.forwardRef(
13199
13319
  (_a, ref) => {
13200
13320
  var _b = _a, {
13201
13321
  className,
@@ -13304,7 +13424,7 @@ var Userbar = React77.forwardRef(
13304
13424
  }
13305
13425
  );
13306
13426
  Userbar.displayName = "Userbar";
13307
- var VerticalStepperItem = React77.forwardRef(
13427
+ var VerticalStepperItem = React78.forwardRef(
13308
13428
  (_a, ref) => {
13309
13429
  var _b = _a, {
13310
13430
  className,
@@ -13440,7 +13560,7 @@ var VerticalStepperItem = React77.forwardRef(
13440
13560
  }
13441
13561
  );
13442
13562
  VerticalStepperItem.displayName = "VerticalStepperItem";
13443
- var VerticalStepper = React77.forwardRef(
13563
+ var VerticalStepper = React78.forwardRef(
13444
13564
  (_a, ref) => {
13445
13565
  var _b = _a, {
13446
13566
  className,