@trackunit/react-components 2.12.0 → 2.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/index.cjs.js +579 -468
  2. package/index.esm.js +580 -469
  3. package/package.json +6 -6
  4. package/src/components/Alert/Alert.variants.d.ts +220 -21
  5. package/src/components/Badge/Badge.variants.d.ts +82 -6
  6. package/src/components/Breadcrumb/Breadcrumb.variant.d.ts +45 -6
  7. package/src/components/Card/Card.variants.d.ts +202 -20
  8. package/src/components/Clickable/Clickable.variants.d.ts +27 -3
  9. package/src/components/Collapse/Collapse.variants.d.ts +248 -24
  10. package/src/components/CopyableText/CopyableText.variants.d.ts +41 -4
  11. package/src/components/DetailsList/DetailsList.variants.d.ts +30 -4
  12. package/src/components/EmptyState/EmptyState.variants.d.ts +12 -2
  13. package/src/components/EmptyValue/EmptyValue.variants.d.ts +6 -1
  14. package/src/components/ExternalLink/ExternalLink.variants.d.ts +27 -3
  15. package/src/components/Heading/Heading.variants.d.ts +66 -5
  16. package/src/components/Highlight/Highlight.variants.d.ts +59 -5
  17. package/src/components/HorizontalOverflowScroller/HorizontalOverflowScroller.variants.d.ts +12 -2
  18. package/src/components/HorizontalOverflowScroller/OverflowIndicator.variants.d.ts +56 -8
  19. package/src/components/Icon/Icon.variants.d.ts +174 -5
  20. package/src/components/Indicator/Indicator.variants.d.ts +340 -14
  21. package/src/components/InteractableItem/InteractableItem.variants.d.ts +95 -6
  22. package/src/components/KPI/KPI.variants.d.ts +66 -6
  23. package/src/components/KPICard/KPICard.variants.d.ts +84 -9
  24. package/src/components/LabeledValue/LabeledValue.variants.d.ts +72 -9
  25. package/src/components/List/List.variants.d.ts +81 -8
  26. package/src/components/ListItem/ListItem.variants.d.ts +64 -10
  27. package/src/components/Menu/MenuContent/MenuContent.variants.d.ts +51 -7
  28. package/src/components/Menu/MenuItem/MenuItem.variants.d.ts +224 -20
  29. package/src/components/Menu/MoreMenu/MoreMenu.variants.d.ts +6 -1
  30. package/src/components/Notice/Notice.variants.d.ts +92 -8
  31. package/src/components/Page/Page.variants.d.ts +63 -6
  32. package/src/components/Page/PageContent.d.ts +4 -0
  33. package/src/components/PageHeader/PageHeader.variants.d.ts +34 -5
  34. package/src/components/Pagination/Pagination.variants.d.ts +12 -2
  35. package/src/components/Popover/Popover.variants.d.ts +34 -5
  36. package/src/components/PreferenceCard/PreferenceCard.variants.d.ts +187 -20
  37. package/src/components/Sheet/Sheet.variants.d.ts +101 -10
  38. package/src/components/Sidebar/Sidebar.variants.d.ts +43 -4
  39. package/src/components/SidebarContentLayout/SidebarContentLayout.variants.d.ts +111 -9
  40. package/src/components/Skeleton/Skeleton.variants.d.ts +55 -3
  41. package/src/components/SkeletonLines/SkeletonLines.variants.d.ts +6 -1
  42. package/src/components/Spacer/Spacer.variants.d.ts +44 -4
  43. package/src/components/Spinner/Spinner.variants.d.ts +100 -10
  44. package/src/components/Tabs/Tabs.variants.d.ts +45 -6
  45. package/src/components/Tag/Tag.variants.d.ts +157 -11
  46. package/src/components/Text/Text.variants.d.ts +127 -11
  47. package/src/components/ToggleGroup/ToggleGroup.variants.d.ts +178 -17
  48. package/src/components/Tooltip/Tooltip.variants.d.ts +135 -12
  49. package/src/components/ValueBar/SegmentedValueBar.variants.d.ts +57 -6
  50. package/src/components/ValueBar/ValueBar.shared.d.ts +27 -3
  51. package/src/components/ValueBar/ValueBar.variants.d.ts +30 -3
  52. package/src/components/ZStack/ZStack.variants.d.ts +12 -2
  53. package/src/components/buttons/shared/Button.variants.d.ts +389 -20
  54. package/migrations/entry.js.map +0 -1
  55. package/migrations/utils/jsx-utils.js.map +0 -1
  56. package/migrations/v2-0-0/breadcrumb-remove-deprecated-props.js.map +0 -1
  57. package/migrations/v2-0-0/cardheader-onclickclose-to-actions.js.map +0 -1
  58. package/migrations/v2-0-0/iconbutton-add-required-name.js.map +0 -1
  59. package/migrations/v2-0-0/kpi-tooltiplabel-to-wrapper.js.map +0 -1
  60. package/migrations/v2-0-0/notice-tooltiplabel-to-wrapper.js.map +0 -1
  61. package/migrations/v2-0-0/pagination-add-required-titles.js.map +0 -1
  62. package/migrations/v2-0-0/tag-add-removetaglabel.js.map +0 -1
  63. package/migrations/v2-0-0/togglegroup-remove-item-style.js.map +0 -1
  64. package/migrations/v3-0-0/menulist-rename-to-menucontent.js.map +0 -1
package/index.cjs.js CHANGED
@@ -74,7 +74,8 @@ const setupLibraryTranslations = () => {
74
74
  i18nLibraryTranslation.registerTranslations(translations);
75
75
  };
76
76
 
77
- const cvaIcon = cssClassVarianceUtilities.cvaMerge(["aspect-square", "inline-grid", "relative", "shrink-0"], {
77
+ const cvaIcon = cssClassVarianceUtilities.cva({
78
+ base: ["aspect-square", "inline-grid", "relative", "shrink-0"],
78
79
  variants: {
79
80
  color: {
80
81
  primary: "text-primary-600",
@@ -1363,8 +1364,9 @@ const isElementVisible = (element) => {
1363
1364
  return true;
1364
1365
  };
1365
1366
 
1366
- const cvaPopoverContainer = cssClassVarianceUtilities.cvaMerge(["z-popover", "animate-fade-in-fast"]);
1367
- const cvaPopoverTitleContainer = cssClassVarianceUtilities.cvaMerge(["flex", "items-center", "px-2", "py-1"], {
1367
+ const cvaPopoverContainer = cssClassVarianceUtilities.cva({ base: ["z-popover", "animate-fade-in-fast"] });
1368
+ const cvaPopoverTitleContainer = cssClassVarianceUtilities.cva({
1369
+ base: ["flex", "items-center", "px-2", "py-1"],
1368
1370
  variants: {
1369
1371
  divider: {
1370
1372
  true: ["border-b", "border-solid", "border-b-neutral-100", "mb-1"],
@@ -1372,7 +1374,7 @@ const cvaPopoverTitleContainer = cssClassVarianceUtilities.cvaMerge(["flex", "it
1372
1374
  },
1373
1375
  },
1374
1376
  });
1375
- const cvaPopoverTitleText = cssClassVarianceUtilities.cvaMerge(["flex-1", "text-neutral-500"]);
1377
+ const cvaPopoverTitleText = cssClassVarianceUtilities.cva({ base: ["flex-1", "text-neutral-500"] });
1376
1378
 
1377
1379
  /**
1378
1380
  * Wraps a `returnFocus` ref so Floating UI's live `ref.current` read at close time (see
@@ -1444,7 +1446,8 @@ const PopoverContent = function PopoverContent({ className, "data-testid": dataT
1444
1446
  }, ...context.getFloatingProps(props), children: typeof children === "function" ? children(() => context.setIsOpen(false)) : children }) })) : null }));
1445
1447
  };
1446
1448
 
1447
- const cvaSpinner = cssClassVarianceUtilities.cvaMerge(["bg-transparent", "rounded-full", "border-2", "border-solid", "inline-block", "animate-spin", "cursor-wait"], {
1449
+ const cvaSpinner = cssClassVarianceUtilities.cva({
1450
+ base: ["bg-transparent", "rounded-full", "border-2", "border-solid", "inline-block", "animate-spin", "cursor-wait"],
1448
1451
  variants: {
1449
1452
  size: {
1450
1453
  small: ["w-4", "h-4"],
@@ -1461,8 +1464,9 @@ const cvaSpinner = cssClassVarianceUtilities.cvaMerge(["bg-transparent", "rounde
1461
1464
  mode: "light",
1462
1465
  },
1463
1466
  });
1464
- const cvaSpinnerContainerInner = cssClassVarianceUtilities.cvaMerge(["gap-responsive-space-sm", "grid", "place-items-center"]);
1465
- const cvaSpinnerContainer = cssClassVarianceUtilities.cvaMerge(["box-border", "p-0.5", "overflow-hidden"], {
1467
+ const cvaSpinnerContainerInner = cssClassVarianceUtilities.cva({ base: ["gap-responsive-space-sm", "grid", "place-items-center"] });
1468
+ const cvaSpinnerContainer = cssClassVarianceUtilities.cva({
1469
+ base: ["box-border", "p-0.5", "overflow-hidden"],
1466
1470
  variants: {
1467
1471
  centering: {
1468
1472
  centered: ["grid", "h-full", "w-full", "place-items-center"],
@@ -1479,7 +1483,7 @@ const cvaSpinnerContainer = cssClassVarianceUtilities.cvaMerge(["box-border", "p
1479
1483
  mode: "light",
1480
1484
  },
1481
1485
  });
1482
- const cvaSpinnerLabel = cssClassVarianceUtilities.cvaMerge(["self-center", "text-center", "text-current"]);
1486
+ const cvaSpinnerLabel = cssClassVarianceUtilities.cva({ base: ["self-center", "text-center", "text-current"] });
1483
1487
 
1484
1488
  /**
1485
1489
  * Spinner provides visual feedback that data is being processed. It reassures users that their action is being handled
@@ -1520,27 +1524,28 @@ const Spinner = ({ mode = "light", size = "medium", centering = "centered", clas
1520
1524
  return (jsxRuntime.jsx("div", { className: cvaSpinnerContainer({ centering, className: containerClassName }), ref: ref, style: style, children: jsxRuntime.jsxs("div", { className: cvaSpinnerContainerInner(), children: [jsxRuntime.jsx("div", { className: cvaSpinner({ size, mode, className }), "data-testid": dataTestId, role: "spinbutton" }), label ? jsxRuntime.jsx("span", { className: cvaSpinnerLabel(), children: label }) : null] }) }));
1521
1525
  };
1522
1526
 
1523
- const cvaButton = cssClassVarianceUtilities.cvaMerge([
1524
- "flex-row",
1525
- "inline-flex",
1526
- "gap-2",
1527
- "box-border",
1528
- "justify-center",
1529
- "items-center",
1530
- "whitespace-nowrap",
1531
- "max-w-full",
1532
- "transition-all",
1533
- "ease-in-out",
1534
- "cursor-pointer",
1535
- "flex-none",
1536
- "component-button-border",
1537
- "component-button-padding",
1538
- "component-button-height",
1539
- "disabled:cursor-not-allowed",
1540
- "font-medium",
1541
- "align-middle",
1542
- "rounded-md",
1543
- ], {
1527
+ const cvaButton = cssClassVarianceUtilities.cva({
1528
+ base: [
1529
+ "flex-row",
1530
+ "inline-flex",
1531
+ "gap-2",
1532
+ "box-border",
1533
+ "justify-center",
1534
+ "items-center",
1535
+ "whitespace-nowrap",
1536
+ "max-w-full",
1537
+ "transition-all",
1538
+ "ease-in-out",
1539
+ "cursor-pointer",
1540
+ "flex-none",
1541
+ "component-button-border",
1542
+ "component-button-padding",
1543
+ "component-button-height",
1544
+ "disabled:cursor-not-allowed",
1545
+ "font-medium",
1546
+ "align-middle",
1547
+ "rounded-md",
1548
+ ],
1544
1549
  variants: {
1545
1550
  variant: {
1546
1551
  primary: [
@@ -1735,8 +1740,9 @@ const cvaButton = cssClassVarianceUtilities.cvaMerge([
1735
1740
  disabled: false,
1736
1741
  },
1737
1742
  });
1738
- const cvaButtonSpinnerContainer = cssClassVarianceUtilities.cvaMerge(["p-0", "h-auto"]);
1739
- const cvaButtonSpinner = cssClassVarianceUtilities.cvaMerge([], {
1743
+ const cvaButtonSpinnerContainer = cssClassVarianceUtilities.cva({ base: ["p-0", "h-auto"] });
1744
+ const cvaButtonSpinner = cssClassVarianceUtilities.cva({
1745
+ base: [],
1740
1746
  variants: {
1741
1747
  variant: {
1742
1748
  primary: ["border-white/[0.32]", "border-b-white"],
@@ -1752,7 +1758,8 @@ const cvaButtonSpinner = cssClassVarianceUtilities.cvaMerge([], {
1752
1758
  variant: "primary",
1753
1759
  },
1754
1760
  });
1755
- const cvaButtonPrefixSuffix = cssClassVarianceUtilities.cvaMerge(["flex", "items-center"], {
1761
+ const cvaButtonPrefixSuffix = cssClassVarianceUtilities.cva({
1762
+ base: ["flex", "items-center"],
1756
1763
  variants: {
1757
1764
  size: {
1758
1765
  small: ["h-4"],
@@ -1821,7 +1828,8 @@ const cvaButtonPrefixSuffix = cssClassVarianceUtilities.cvaMerge(["flex", "items
1821
1828
  disabled: false,
1822
1829
  },
1823
1830
  });
1824
- const cvaIconButton = cssClassVarianceUtilities.cvaMerge([], {
1831
+ const cvaIconButton = cssClassVarianceUtilities.cva({
1832
+ base: [],
1825
1833
  variants: {
1826
1834
  size: {
1827
1835
  /**
@@ -1970,7 +1978,8 @@ const PopoverTrigger = function PopoverTrigger({ children, renderButton = false,
1970
1978
  return (jsxRuntime.jsx(Button, { "data-state": dataState, ref: ref, type: "button", ...buttonProps, className: tree !== null ? tailwindMerge.twMerge(props.className, "pointer-events-auto") : props.className, children: children }));
1971
1979
  };
1972
1980
 
1973
- const cvaText = cssClassVarianceUtilities.cvaMerge(["text-black", "m-0", "relative", "text-sm", "font-normal"], {
1981
+ const cvaText = cssClassVarianceUtilities.cva({
1982
+ base: ["text-black", "m-0", "relative", "text-sm", "font-normal"],
1974
1983
  variants: {
1975
1984
  align: {
1976
1985
  left: "text-left",
@@ -2079,7 +2088,8 @@ const Text = ({ children, type = "p", size = "medium", align = "left", weight =
2079
2088
  };
2080
2089
  Text.displayName = "Text";
2081
2090
 
2082
- const cvaTooltipIcon = cssClassVarianceUtilities.cvaMerge(["text-neutral-300", "transition", "hover:cursor-pointer", "hover:text-neutral-400"], {
2091
+ const cvaTooltipIcon = cssClassVarianceUtilities.cva({
2092
+ base: ["text-neutral-300", "transition", "hover:cursor-pointer", "hover:text-neutral-400"],
2083
2093
  variants: {
2084
2094
  color: {
2085
2095
  light: "hover:text-white",
@@ -2090,8 +2100,9 @@ const cvaTooltipIcon = cssClassVarianceUtilities.cvaMerge(["text-neutral-300", "
2090
2100
  },
2091
2101
  },
2092
2102
  });
2093
- const cvaTooltipPopover = cssClassVarianceUtilities.cvaMerge(["origin-center"]);
2094
- const cvaTooltipPopoverTail = cssClassVarianceUtilities.cvaMerge("", {
2103
+ const cvaTooltipPopover = cssClassVarianceUtilities.cva({ base: ["origin-center"] });
2104
+ const cvaTooltipPopoverTail = cssClassVarianceUtilities.cva({
2105
+ base: "",
2095
2106
  variants: {
2096
2107
  placement: {
2097
2108
  top: "left-2/4 top-full ml-[-5px]",
@@ -2117,7 +2128,8 @@ const cvaTooltipPopoverTail = cssClassVarianceUtilities.cvaMerge("", {
2117
2128
  mode: "dark",
2118
2129
  },
2119
2130
  });
2120
- const cvaTooltipPopoverContent = cssClassVarianceUtilities.cvaMerge(["max-w-sm", "rounded", "p-2"], {
2131
+ const cvaTooltipPopoverContent = cssClassVarianceUtilities.cva({
2132
+ base: ["max-w-sm", "rounded", "p-2"],
2121
2133
  variants: {
2122
2134
  color: {
2123
2135
  light: "bg-white shadow-lg",
@@ -2211,26 +2223,27 @@ const Tooltip = ({ children, "data-testid": dataTestId, disabled = false, label,
2211
2223
  * This is the source of truth - use parseTailwindArbitraryValue to derive the numeric value.
2212
2224
  */
2213
2225
  const TAG_TEXT_MIN_WIDTH_CLASS = "min-w-[80px]";
2214
- const cvaTag = cssClassVarianceUtilities.cvaMerge([
2215
- "grid",
2216
- "grid-cols-[1fr]",
2217
- "has-[[data-slot=icon]]:grid-cols-[auto_1fr]",
2218
- "has-[[data-slot=dismiss]]:grid-cols-[1fr_auto]",
2219
- "has-[[data-slot=icon]]:has-[[data-slot=dismiss]]:grid-cols-[auto_1fr_auto]",
2220
- "justify-center",
2221
- "items-center",
2222
- "rounded-full",
2223
- "py-1",
2224
- "px-2",
2225
- "text-center",
2226
- "h-min",
2227
- "font-medium",
2228
- "max-w-full",
2229
- "w-fit",
2230
- "overflow-hidden",
2231
- "min-w-min",
2232
- "text-xs",
2233
- ], {
2226
+ const cvaTag = cssClassVarianceUtilities.cva({
2227
+ base: [
2228
+ "grid",
2229
+ "grid-cols-[1fr]",
2230
+ "has-[[data-slot=icon]]:grid-cols-[auto_1fr]",
2231
+ "has-[[data-slot=dismiss]]:grid-cols-[1fr_auto]",
2232
+ "has-[[data-slot=icon]]:has-[[data-slot=dismiss]]:grid-cols-[auto_1fr_auto]",
2233
+ "justify-center",
2234
+ "items-center",
2235
+ "rounded-full",
2236
+ "py-1",
2237
+ "px-2",
2238
+ "text-center",
2239
+ "h-min",
2240
+ "font-medium",
2241
+ "max-w-full",
2242
+ "w-fit",
2243
+ "overflow-hidden",
2244
+ "min-w-min",
2245
+ "text-xs",
2246
+ ],
2234
2247
  variants: {
2235
2248
  size: {
2236
2249
  small: "px-2 py-px",
@@ -2272,7 +2285,8 @@ const cvaTag = cssClassVarianceUtilities.cvaMerge([
2272
2285
  color: "info",
2273
2286
  },
2274
2287
  });
2275
- const cvaTagText = cssClassVarianceUtilities.cvaMerge(["whitespace-nowrap"], {
2288
+ const cvaTagText = cssClassVarianceUtilities.cva({
2289
+ base: ["whitespace-nowrap"],
2276
2290
  variants: {
2277
2291
  truncate: {
2278
2292
  true: ["truncate", TAG_TEXT_MIN_WIDTH_CLASS],
@@ -2283,8 +2297,10 @@ const cvaTagText = cssClassVarianceUtilities.cvaMerge(["whitespace-nowrap"], {
2283
2297
  truncate: true,
2284
2298
  },
2285
2299
  });
2286
- const cvaTagIconContainer = cssClassVarianceUtilities.cvaMerge(["shrink-0", "inline-flex", "self-center"]);
2287
- const cvaTagIcon = cssClassVarianceUtilities.cvaMerge(["cursor-pointer", "transition-opacity", "hover:opacity-70", "text-neutral-500"]);
2300
+ const cvaTagIconContainer = cssClassVarianceUtilities.cva({ base: ["shrink-0", "inline-flex", "self-center"] });
2301
+ const cvaTagIcon = cssClassVarianceUtilities.cva({
2302
+ base: ["cursor-pointer", "transition-opacity", "hover:opacity-70", "text-neutral-500"],
2303
+ });
2288
2304
 
2289
2305
  const TAG_TEXT_MIN_WIDTH_PX = sharedUtils.parseTailwindArbitraryValue(TAG_TEXT_MIN_WIDTH_CLASS);
2290
2306
  /**
@@ -2592,7 +2608,8 @@ const IconButton = ({ icon, size = "medium", square = true, loading = false, dis
2592
2608
  };
2593
2609
  IconButton.displayName = "IconButton";
2594
2610
 
2595
- const cvaAlert = cssClassVarianceUtilities.cvaMerge(["flex", "flex-col", "gap-3", "relative", "p-3", "rounded-lg", "@container"], {
2611
+ const cvaAlert = cssClassVarianceUtilities.cva({
2612
+ base: ["flex", "flex-col", "gap-3", "relative", "p-3", "rounded-lg", "@container"],
2596
2613
  variants: {
2597
2614
  color: {
2598
2615
  danger: ["bg-danger-100"],
@@ -2611,7 +2628,8 @@ const cvaAlert = cssClassVarianceUtilities.cvaMerge(["flex", "flex-col", "gap-3"
2611
2628
  actionsInline: false,
2612
2629
  },
2613
2630
  });
2614
- const cvaAlertActionsContainer = cssClassVarianceUtilities.cvaMerge(["flex", "gap-2"], {
2631
+ const cvaAlertActionsContainer = cssClassVarianceUtilities.cva({
2632
+ base: ["flex", "gap-2"],
2615
2633
  variants: {
2616
2634
  inline: {
2617
2635
  true: ["flex-row", "shrink-0"],
@@ -2627,8 +2645,9 @@ const cvaAlertActionsContainer = cssClassVarianceUtilities.cvaMerge(["flex", "ga
2627
2645
  actionsInline: false,
2628
2646
  },
2629
2647
  });
2630
- const cvaContent = cssClassVarianceUtilities.cvaMerge(["flex-grow"]);
2631
- const cvaAlertContentContainer = cssClassVarianceUtilities.cvaMerge(["flex", "flex-row", "h-full", "gap-2"], {
2648
+ const cvaContent = cssClassVarianceUtilities.cva({ base: ["flex-grow"] });
2649
+ const cvaAlertContentContainer = cssClassVarianceUtilities.cva({
2650
+ base: ["flex", "flex-row", "h-full", "gap-2"],
2632
2651
  variants: {
2633
2652
  inline: {
2634
2653
  true: ["items-center", "justify-between"],
@@ -2644,7 +2663,8 @@ const cvaAlertContentContainer = cssClassVarianceUtilities.cvaMerge(["flex", "fl
2644
2663
  actionsInline: false,
2645
2664
  },
2646
2665
  });
2647
- const cvaAlertCloseButtonContainer = cssClassVarianceUtilities.cvaMerge(["flex", "w-min", "shrink-0"], {
2666
+ const cvaAlertCloseButtonContainer = cssClassVarianceUtilities.cva({
2667
+ base: ["flex", "w-min", "shrink-0"],
2648
2668
  variants: {
2649
2669
  inline: {
2650
2670
  true: ["self-center"],
@@ -2660,7 +2680,8 @@ const cvaAlertCloseButtonContainer = cssClassVarianceUtilities.cvaMerge(["flex",
2660
2680
  actionsInline: false,
2661
2681
  },
2662
2682
  });
2663
- const cvaAlertIconContainer = cssClassVarianceUtilities.cvaMerge(["shrink-0", "grid", "w-min", "flex"], {
2683
+ const cvaAlertIconContainer = cssClassVarianceUtilities.cva({
2684
+ base: ["shrink-0", "grid", "w-min", "flex"],
2664
2685
  variants: {
2665
2686
  inline: {
2666
2687
  true: ["self-center"],
@@ -2785,19 +2806,20 @@ const getIconName = (color) => {
2785
2806
  }
2786
2807
  };
2787
2808
 
2788
- const cvaBadge = cssClassVarianceUtilities.cvaMerge([
2789
- "box-border",
2790
- "whitespace-nowrap",
2791
- "overflow-hidden",
2792
- "text-ellipsis",
2793
- "inline-flex",
2794
- "items-center",
2795
- "justify-center",
2796
- "rounded-full",
2797
- "font-bold",
2798
- "text-center",
2799
- "tabular-nums",
2800
- ], {
2809
+ const cvaBadge = cssClassVarianceUtilities.cva({
2810
+ base: [
2811
+ "box-border",
2812
+ "whitespace-nowrap",
2813
+ "overflow-hidden",
2814
+ "text-ellipsis",
2815
+ "inline-flex",
2816
+ "items-center",
2817
+ "justify-center",
2818
+ "rounded-full",
2819
+ "font-bold",
2820
+ "text-center",
2821
+ "tabular-nums",
2822
+ ],
2801
2823
  variants: {
2802
2824
  color: {
2803
2825
  primary: "bg-primary-600 text-white",
@@ -2807,11 +2829,11 @@ const cvaBadge = cssClassVarianceUtilities.cvaMerge([
2807
2829
  },
2808
2830
  compact: {
2809
2831
  true: "size-2",
2810
- false: "h-fit min-h-4 w-fit min-w-4",
2832
+ false: "min-h-4 min-w-4 h-fit w-fit",
2811
2833
  },
2812
2834
  size: {
2813
2835
  default: "text-xs",
2814
- condensed: "h-3.5 min-h-3.5 min-w-3.5 text-[10px]",
2836
+ condensed: "min-h-3.5 min-w-3.5 h-3.5 text-[10px]",
2815
2837
  },
2816
2838
  isSingleChar: {
2817
2839
  true: "aspect-square",
@@ -2888,10 +2910,11 @@ const Badge = ({ color = "primary", size = "default", compact = false, className
2888
2910
  return (jsxRuntime.jsx("span", { className: cvaBadge({ color, size, className, compact, isSingleChar }), "data-testid": dataTestId, ref: ref, style: style, children: compact ? null : displayedCount }));
2889
2911
  };
2890
2912
 
2891
- const cvaBreadcrumb = cssClassVarianceUtilities.cvaMerge(["my-4", "flex", "place-items-center"]);
2892
- const cvaBreadcrumbItem = cssClassVarianceUtilities.cvaMerge(["flex", "items-center"]);
2893
- const cvaBreadcrumbForLargeScreen = cssClassVarianceUtilities.cvaMerge(["flex", "flex-nowrap", "items-center"]);
2894
- const cvaBreadcrumbForMediumScreen = cssClassVarianceUtilities.cvaMerge(["flex", "items-center"], {
2913
+ const cvaBreadcrumb = cssClassVarianceUtilities.cva({ base: ["my-4", "flex", "place-items-center"] });
2914
+ const cvaBreadcrumbItem = cssClassVarianceUtilities.cva({ base: ["flex", "items-center"] });
2915
+ const cvaBreadcrumbForLargeScreen = cssClassVarianceUtilities.cva({ base: ["flex", "flex-nowrap", "items-center"] });
2916
+ const cvaBreadcrumbForMediumScreen = cssClassVarianceUtilities.cva({
2917
+ base: ["flex", "items-center"],
2895
2918
  variants: {
2896
2919
  expanded: {
2897
2920
  true: "flex-wrap",
@@ -3143,18 +3166,19 @@ const StarButton = ({ starred, onClick, className, "data-testid": dataTestId, st
3143
3166
  return (jsxRuntime.jsx("div", { className: className, "data-testid": dataTestId ?? "starred-filter", onClick: onClick, ref: ref, style: style, children: jsxRuntime.jsx(Icon, { color: starred ? "primary" : "neutral", name: "Star", size: "medium" }) }));
3144
3167
  };
3145
3168
 
3146
- const cvaCard = cssClassVarianceUtilities.cvaMerge([
3147
- "flex",
3148
- "border",
3149
- "flex-col",
3150
- "relative",
3151
- "bg-white",
3152
- "component-card-shadow",
3153
- "component-card-border",
3154
- "transition-colors",
3155
- "ease-in-out",
3156
- "overflow-clip", //otherwise rounded corners are not respected (clip is preferable to hidden since it doesn't create a scroll clipping box. )
3157
- ], {
3169
+ const cvaCard = cssClassVarianceUtilities.cva({
3170
+ base: [
3171
+ "flex",
3172
+ "border",
3173
+ "flex-col",
3174
+ "relative",
3175
+ "bg-white",
3176
+ "component-card-shadow",
3177
+ "component-card-border",
3178
+ "transition-colors",
3179
+ "ease-in-out",
3180
+ "overflow-clip", //otherwise rounded corners are not respected (clip is preferable to hidden since it doesn't create a scroll clipping box. )
3181
+ ],
3158
3182
  variants: {
3159
3183
  clickable: {
3160
3184
  false: "",
@@ -3170,7 +3194,8 @@ const cvaCard = cssClassVarianceUtilities.cvaMerge([
3170
3194
  fullHeight: false,
3171
3195
  },
3172
3196
  });
3173
- const cvaCardFooterContainerRoot = cssClassVarianceUtilities.cvaMerge(["flex", "border-t", "border-neutral-200", "justify-end", "flex-row"], {
3197
+ const cvaCardFooterContainerRoot = cssClassVarianceUtilities.cva({
3198
+ base: ["flex", "border-t", "border-neutral-200", "justify-end", "flex-row"],
3174
3199
  variants: {
3175
3200
  border: {
3176
3201
  default: "",
@@ -3186,10 +3211,13 @@ const cvaCardFooterContainerRoot = cssClassVarianceUtilities.cvaMerge(["flex", "
3186
3211
  padding: "default",
3187
3212
  },
3188
3213
  });
3189
- const cvaCardFooterContainer = cssClassVarianceUtilities.cvaMerge(["justify-self-end", "grid", "auto-cols-max", "grid-flow-col", "gap-2"]);
3190
- const cvaCardHeader = cssClassVarianceUtilities.cvaMerge(["flex", "justify-between", "flex-1"]);
3191
- const cvaCardHeaderHeadingContainer = cssClassVarianceUtilities.cvaMerge(["flex", "gap-4", "items-center"]);
3192
- const cvaCardHeaderContainer = cssClassVarianceUtilities.cvaMerge(["flex", "border-b", "border-neutral-200"], {
3214
+ const cvaCardFooterContainer = cssClassVarianceUtilities.cva({
3215
+ base: ["justify-self-end", "grid", "auto-cols-max", "grid-flow-col", "gap-2"],
3216
+ });
3217
+ const cvaCardHeader = cssClassVarianceUtilities.cva({ base: ["flex", "justify-between", "flex-1"] });
3218
+ const cvaCardHeaderHeadingContainer = cssClassVarianceUtilities.cva({ base: ["flex", "gap-4", "items-center"] });
3219
+ const cvaCardHeaderContainer = cssClassVarianceUtilities.cva({
3220
+ base: ["flex", "border-b", "border-neutral-200"],
3193
3221
  variants: {
3194
3222
  border: {
3195
3223
  default: "",
@@ -3205,7 +3233,8 @@ const cvaCardHeaderContainer = cssClassVarianceUtilities.cvaMerge(["flex", "bord
3205
3233
  padding: "default",
3206
3234
  },
3207
3235
  });
3208
- const cvaCardBodyContainer = cssClassVarianceUtilities.cvaMerge(["flex", "flex-grow", "overflow-auto"], {
3236
+ const cvaCardBodyContainer = cssClassVarianceUtilities.cva({
3237
+ base: ["flex", "flex-grow", "overflow-auto"],
3209
3238
  variants: {
3210
3239
  direction: {
3211
3240
  row: "flex-row",
@@ -3391,7 +3420,8 @@ const CardFooter = ({ "data-testid": dataTestId, className, children, padding =
3391
3420
  }), "data-card-footer": true, "data-testid": dataTestId, ref: ref, style: style, children: jsxRuntime.jsx("div", { className: cvaCardFooterContainer(), children: children }) }));
3392
3421
  };
3393
3422
 
3394
- const cvaHeading = cssClassVarianceUtilities.cvaMerge(["m-0", "leading-normal", "text-black"], {
3423
+ const cvaHeading = cssClassVarianceUtilities.cva({
3424
+ base: ["m-0", "leading-normal", "text-black"],
3395
3425
  variants: {
3396
3426
  subtle: {
3397
3427
  true: "text-neutral-600",
@@ -3519,17 +3549,18 @@ const CardHeader = ({ heading, headingVariant = "secondary", subHeading, "data-t
3519
3549
  }), "data-card-header": true, "data-testid": dataTestId, ref: ref, style: style, children: jsxRuntime.jsxs("div", { className: cvaCardHeader(), children: [jsxRuntime.jsxs("div", { children: [jsxRuntime.jsxs("div", { className: cvaCardHeaderHeadingContainer(), children: [jsxRuntime.jsx(Heading, { className: "self-center", variant: headingVariant, children: heading }), accessories] }), subHeading !== null && subHeading !== undefined ? (jsxRuntime.jsx(Heading, { subtle: true, variant: "subtitle", children: subHeading })) : null, children] }), jsxRuntime.jsx("div", { className: "flex place-items-center gap-x-2 gap-y-1", children: actions })] }) }));
3520
3550
  };
3521
3551
 
3522
- const cvaClickable = cssClassVarianceUtilities.cvaMerge([
3523
- "rounded-lg",
3524
- "p-3",
3525
- "bg-neutral-50",
3526
- "transition-all",
3527
- "border-2",
3528
- "border-solid",
3529
- "border-neutral-100",
3530
- "cursor-pointer",
3531
- "hover:border-neutral-300",
3532
- ], {
3552
+ const cvaClickable = cssClassVarianceUtilities.cva({
3553
+ base: [
3554
+ "rounded-lg",
3555
+ "p-3",
3556
+ "bg-neutral-50",
3557
+ "transition-all",
3558
+ "border-2",
3559
+ "border-solid",
3560
+ "border-neutral-100",
3561
+ "cursor-pointer",
3562
+ "hover:border-neutral-300",
3563
+ ],
3533
3564
  variants: {
3534
3565
  disabled: {
3535
3566
  false: "",
@@ -3615,7 +3646,8 @@ const useMeasure = ({ skip = false, onChange, } = {}) => {
3615
3646
  return react.useMemo(() => ({ geometry, ref, element }), [geometry, ref, element]);
3616
3647
  };
3617
3648
 
3618
- const cvaCollapse = cssClassVarianceUtilities.cvaMerge(["flex", "flex-col", "overflow-hidden"], {
3649
+ const cvaCollapse = cssClassVarianceUtilities.cva({
3650
+ base: ["flex", "flex-col", "overflow-hidden"],
3619
3651
  variants: {
3620
3652
  variant: {
3621
3653
  primary: ["border", "border-solid", "border-neutral-300", "rounded-md", "bg-white"],
@@ -3623,7 +3655,8 @@ const cvaCollapse = cssClassVarianceUtilities.cvaMerge(["flex", "flex-col", "ove
3623
3655
  },
3624
3656
  },
3625
3657
  });
3626
- const cvaCollapseHeader = cssClassVarianceUtilities.cvaMerge(["flex", "items-center", "cursor-pointer", "transition-all", "group/collapse"], {
3658
+ const cvaCollapseHeader = cssClassVarianceUtilities.cva({
3659
+ base: ["flex", "items-center", "cursor-pointer", "transition-all", "group/collapse"],
3627
3660
  variants: {
3628
3661
  expanded: { true: [], false: [] },
3629
3662
  variant: {
@@ -3668,7 +3701,8 @@ const cvaCollapseHeader = cssClassVarianceUtilities.cvaMerge(["flex", "items-cen
3668
3701
  },
3669
3702
  ],
3670
3703
  });
3671
- const cvaCollapseLabelContainer = cssClassVarianceUtilities.cvaMerge(["flex", "items-center"], {
3704
+ const cvaCollapseLabelContainer = cssClassVarianceUtilities.cva({
3705
+ base: ["flex", "items-center"],
3672
3706
  variants: {
3673
3707
  variant: {
3674
3708
  primary: ["w-full", "justify-between"],
@@ -3676,7 +3710,8 @@ const cvaCollapseLabelContainer = cssClassVarianceUtilities.cvaMerge(["flex", "i
3676
3710
  },
3677
3711
  },
3678
3712
  });
3679
- const cvaCollapseLabel = cssClassVarianceUtilities.cvaMerge([""], {
3713
+ const cvaCollapseLabel = cssClassVarianceUtilities.cva({
3714
+ base: [""],
3680
3715
  variants: {
3681
3716
  variant: {
3682
3717
  primary: [""],
@@ -3684,7 +3719,8 @@ const cvaCollapseLabel = cssClassVarianceUtilities.cvaMerge([""], {
3684
3719
  },
3685
3720
  },
3686
3721
  });
3687
- const cvaCollapsible = cssClassVarianceUtilities.cvaMerge(["block", "relative"], {
3722
+ const cvaCollapsible = cssClassVarianceUtilities.cva({
3723
+ base: ["block", "relative"],
3688
3724
  variants: {
3689
3725
  variant: {
3690
3726
  primary: [],
@@ -3718,7 +3754,8 @@ const cvaCollapsible = cssClassVarianceUtilities.cvaMerge(["block", "relative"],
3718
3754
  },
3719
3755
  ],
3720
3756
  });
3721
- const cvaCollapseAnimated = cssClassVarianceUtilities.cvaMerge(["overflow-y-hidden", "transition-all"], {
3757
+ const cvaCollapseAnimated = cssClassVarianceUtilities.cva({
3758
+ base: ["overflow-y-hidden", "transition-all"],
3722
3759
  variants: {
3723
3760
  expanded: {
3724
3761
  true: "block",
@@ -3729,7 +3766,8 @@ const cvaCollapseAnimated = cssClassVarianceUtilities.cvaMerge(["overflow-y-hidd
3729
3766
  expanded: false,
3730
3767
  },
3731
3768
  });
3732
- const cvaChevronIcon = cssClassVarianceUtilities.cvaMerge(["transition-transform"], {
3769
+ const cvaChevronIcon = cssClassVarianceUtilities.cva({
3770
+ base: ["transition-transform"],
3733
3771
  variants: {
3734
3772
  expanded: {
3735
3773
  true: "rotate-180",
@@ -3951,21 +3989,22 @@ const useHover = ({ debounced = false, delay = 100, direction = "out" } = { debo
3951
3989
  }), [onMouseEnter, onMouseLeave, value]);
3952
3990
  };
3953
3991
 
3954
- const cvaCopyableText = cssClassVarianceUtilities.cvaMerge([
3955
- "rounded",
3956
- "cursor-pointer",
3957
- "transition-all",
3958
- "ease-in-out",
3959
- "inline-flex",
3960
- "items-center",
3961
- "gap-1",
3962
- "bg-transparent",
3963
- "border-none",
3964
- "outline-none",
3965
- "hover:bg-neutral-200",
3966
- "py-0.5",
3967
- "px-1",
3968
- ], {
3992
+ const cvaCopyableText = cssClassVarianceUtilities.cva({
3993
+ base: [
3994
+ "rounded",
3995
+ "cursor-pointer",
3996
+ "transition-all",
3997
+ "ease-in-out",
3998
+ "inline-flex",
3999
+ "items-center",
4000
+ "gap-1",
4001
+ "bg-transparent",
4002
+ "border-none",
4003
+ "outline-none",
4004
+ "hover:bg-neutral-200",
4005
+ "py-0.5",
4006
+ "px-1",
4007
+ ],
3969
4008
  variants: {
3970
4009
  animating: {
3971
4010
  false: "",
@@ -4131,7 +4170,8 @@ const CopyButton = ({ value, copyLabel, copiedLabel, size = "small", label, vari
4131
4170
  CopyButton.displayName = "CopyButton";
4132
4171
  const COPIED_FEEDBACK_DURATION_MS = 2000;
4133
4172
 
4134
- const cvaDetailsList = cssClassVarianceUtilities.cvaMerge(["flex", "w-full", "min-w-0", "items-center", "truncate", "text-xs", "text-neutral-600", "font-medium", "pt-0"], {
4173
+ const cvaDetailsList = cssClassVarianceUtilities.cva({
4174
+ base: ["flex", "w-full", "min-w-0", "items-center", "truncate", "text-xs", "text-neutral-600", "font-medium", "pt-0"],
4135
4175
  variants: {
4136
4176
  hasLink: {
4137
4177
  true: "pl-1",
@@ -4141,7 +4181,7 @@ const cvaDetailsList = cssClassVarianceUtilities.cvaMerge(["flex", "w-full", "mi
4141
4181
  hasLink: false,
4142
4182
  },
4143
4183
  });
4144
- const cvaDetailsListItem = cssClassVarianceUtilities.cvaMerge(["last:truncate"]);
4184
+ const cvaDetailsListItem = cssClassVarianceUtilities.cva({ base: ["last:truncate"] });
4145
4185
 
4146
4186
  /**
4147
4187
  * DetailsList renders a one-line list of text values separated by slash icons.
@@ -4279,31 +4319,32 @@ const useRandomCSSLengths = ({ count, min, max, unit = "%", }) => {
4279
4319
  return react.useMemo(() => Array.from({ length: count }, () => getRandomCSSLength({ min, max, unit })), [count, min, max, unit]);
4280
4320
  };
4281
4321
 
4282
- const cvaSkeleton = cssClassVarianceUtilities.cvaMerge([
4283
- "relative",
4284
- "overflow-hidden",
4285
- "rounded-lg",
4286
- // Gradient background
4287
- "bg-linear-to-r",
4288
- "from-neutral-200/80",
4289
- "via-neutral-300/60",
4290
- "to-neutral-200/80",
4291
- // Pulse animation
4292
- "animate-pulse",
4293
- // Shimmer overlay
4294
- "before:absolute",
4295
- "before:inset-0",
4296
- "before:bg-linear-to-r",
4297
- "before:from-transparent",
4298
- "before:via-white/50",
4299
- "before:to-transparent",
4300
- "before:opacity-0",
4301
- "before:animate-pulse",
4302
- // Smooth transitions for accessibility
4303
- "transition-all",
4304
- "duration-300",
4305
- "ease-in-out",
4306
- ], {
4322
+ const cvaSkeleton = cssClassVarianceUtilities.cva({
4323
+ base: [
4324
+ "relative",
4325
+ "overflow-hidden",
4326
+ "rounded-lg",
4327
+ // Gradient background
4328
+ "bg-linear-to-r",
4329
+ "from-neutral-200/80",
4330
+ "via-neutral-300/60",
4331
+ "to-neutral-200/80",
4332
+ // Pulse animation
4333
+ "animate-pulse",
4334
+ // Shimmer overlay
4335
+ "before:absolute",
4336
+ "before:inset-0",
4337
+ "before:bg-linear-to-r",
4338
+ "before:from-transparent",
4339
+ "before:via-white/50",
4340
+ "before:to-transparent",
4341
+ "before:opacity-0",
4342
+ "before:animate-pulse",
4343
+ // Smooth transitions for accessibility
4344
+ "transition-all",
4345
+ "duration-300",
4346
+ "ease-in-out",
4347
+ ],
4307
4348
  variants: {
4308
4349
  textSize: {
4309
4350
  "text-xs": ["my-[calc((var(--line-height-xs)-var(--font-size-xs)*0.7)/2)]"],
@@ -4360,20 +4401,22 @@ const SkeletonLabel = react.memo((props) => {
4360
4401
  });
4361
4402
  SkeletonLabel.displayName = "SkeletonLabel";
4362
4403
 
4363
- const cvaContainerStyles = cssClassVarianceUtilities.cvaMerge([
4364
- "flex",
4365
- "flex-col",
4366
- "items-center",
4367
- "gap-0",
4368
- "p-4",
4369
- "sm:p-6",
4370
- "md:p-12",
4371
- "text-center",
4372
- "justify-center",
4373
- "h-full",
4374
- "self-center",
4375
- ]);
4376
- const cvaImgStyles = cssClassVarianceUtilities.cvaMerge(["w-full", "min-w-[60px]", "max-w-[200px]"]);
4404
+ const cvaContainerStyles = cssClassVarianceUtilities.cva({
4405
+ base: [
4406
+ "flex",
4407
+ "flex-col",
4408
+ "items-center",
4409
+ "gap-0",
4410
+ "p-4",
4411
+ "sm:p-6",
4412
+ "md:p-12",
4413
+ "text-center",
4414
+ "justify-center",
4415
+ "h-full",
4416
+ "self-center",
4417
+ ],
4418
+ });
4419
+ const cvaImgStyles = cssClassVarianceUtilities.cva({ base: ["w-full", "min-w-[60px]", "max-w-[200px]"] });
4377
4420
 
4378
4421
  /**
4379
4422
  * The Graphic for the BuildingError EmptyState
@@ -4493,7 +4536,7 @@ const EmptyState = ({ description, altText, image = "SEARCH_DOCUMENT", customIma
4493
4536
  return (jsxRuntime.jsx("div", { className: cvaContainerStyles({ className }), "data-testid": dataTestId ?? "empty-state", ref: ref, style: style, children: loading ? (jsxRuntime.jsxs("div", { className: "flex w-full flex-col items-center gap-4", children: [jsxRuntime.jsx(Spinner, { centering: "centered", "data-testid": "spinner" }), jsxRuntime.jsx(SkeletonLabel, { textSize: "text-base", width: "clamp(20%, 200px, 80%)" })] })) : (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [customImageSrc !== null && customImageSrc !== undefined ? (typeof customImageSrc === "string" ? (jsxRuntime.jsx("img", { alt: altText, className: cvaImgStyles(), height: 200, src: customImageSrc, width: 200 })) : (customImageSrc)) : (typeof ImageSource !== "undefined" && (jsxRuntime.jsx(ImageSource, { "data-testid": "empty-state-image", height: 200, width: 200 }, image))), description !== undefined && description !== "" ? (jsxRuntime.jsx(Text, { align: "center", size: "medium", children: description })) : null, jsxRuntime.jsxs("div", { className: "mt-4 grid gap-3", children: [jsxRuntime.jsxs("div", { className: "flex gap-3", children: [secondaryAction ? (jsxRuntime.jsx(Button, { "data-testid": "empty-state-secondary-button", disabled: secondaryAction.disabled, onClick: secondaryAction.onClick, variant: "secondary", children: secondaryAction.to ? (jsxRuntime.jsx(reactRouter.Link, { params: secondaryAction.to.parameters, to: secondaryAction.to.pathname, children: secondaryAction.title })) : (secondaryAction.title) })) : null, primaryAction ? (jsxRuntime.jsx(Button, { "data-testid": "empty-state-primary-button", disabled: primaryAction.disabled, onClick: primaryAction.onClick, children: primaryAction.to ? (jsxRuntime.jsx(reactRouter.Link, { params: primaryAction.to.parameters, to: primaryAction.to.pathname, children: primaryAction.title })) : (primaryAction.title) })) : null] }), additionalHelpAction?.to ? (jsxRuntime.jsx(Button, { asChild: true, "data-testid": "empty-state-additional-button", disabled: additionalHelpAction.disabled, onClick: additionalHelpAction.onClick, suffix: jsxRuntime.jsx(Icon, { name: "ArrowTopRightOnSquare", size: "small" }), variant: "ghost", children: jsxRuntime.jsx(reactRouter.Link, { params: additionalHelpAction.to.parameters, target: additionalHelpAction.to.target, to: additionalHelpAction.to.pathname, children: additionalHelpAction.title }) })) : null] })] })) }));
4494
4537
  };
4495
4538
 
4496
- const cvaEmptyValue = cssClassVarianceUtilities.cvaMerge(["text-neutral-400"]);
4539
+ const cvaEmptyValue = cssClassVarianceUtilities.cva({ base: ["text-neutral-400"] });
4497
4540
 
4498
4541
  /**
4499
4542
  * EmptyValue renders a consistent dash symbol ("–") to represent missing, null, undefined, or not applicable values.
@@ -4523,7 +4566,8 @@ const EmptyValue = ({ className, "data-testid": dataTestId, style, ref }) => {
4523
4566
  return (jsxRuntime.jsx("div", { className: cvaEmptyValue({ className }), "data-testid": dataTestId, ref: ref, style: style, children: "-" }));
4524
4567
  };
4525
4568
 
4526
- const cvaExternalLink = cssClassVarianceUtilities.cvaMerge(["underline", "decoration-[1.5px]", "underline-offset-2", "text-sm"], {
4569
+ const cvaExternalLink = cssClassVarianceUtilities.cva({
4570
+ base: ["underline", "decoration-[1.5px]", "underline-offset-2", "text-sm"],
4527
4571
  variants: {
4528
4572
  color: {
4529
4573
  primary: [
@@ -5345,21 +5389,22 @@ function useGridAreas(config) {
5345
5389
  }, [id, config, validationRef]);
5346
5390
  }
5347
5391
 
5348
- const cvaHighlight = cssClassVarianceUtilities.cvaMerge([
5349
- "inline-flex",
5350
- "justify-center",
5351
- "items-center",
5352
- "rounded",
5353
- "py-0.5",
5354
- "px-1",
5355
- "text-center",
5356
- "h-min",
5357
- "min-w-[1.5rem]",
5358
- "font-medium",
5359
- "truncate",
5360
- "max-w-full",
5361
- "w-fit",
5362
- ], {
5392
+ const cvaHighlight = cssClassVarianceUtilities.cva({
5393
+ base: [
5394
+ "inline-flex",
5395
+ "justify-center",
5396
+ "items-center",
5397
+ "rounded",
5398
+ "py-0.5",
5399
+ "px-1",
5400
+ "text-center",
5401
+ "h-min",
5402
+ "min-w-[1.5rem]",
5403
+ "font-medium",
5404
+ "truncate",
5405
+ "max-w-full",
5406
+ "w-fit",
5407
+ ],
5363
5408
  variants: {
5364
5409
  size: {
5365
5410
  small: ["text-xs"],
@@ -5379,7 +5424,7 @@ const cvaHighlight = cssClassVarianceUtilities.cvaMerge([
5379
5424
  color: "warning",
5380
5425
  },
5381
5426
  });
5382
- const cvaHighlightText = cssClassVarianceUtilities.cvaMerge(["truncate"]);
5427
+ const cvaHighlightText = cssClassVarianceUtilities.cva({ base: ["truncate"] });
5383
5428
 
5384
5429
  /**
5385
5430
  * Highlight draws visual attention to data values that may require user action, monitoring, or investigation.
@@ -5702,8 +5747,8 @@ const useScrollDetection = (options) => {
5702
5747
  }), [ref, element, scrollState]);
5703
5748
  };
5704
5749
 
5705
- const cvaZStackContainer = cssClassVarianceUtilities.cvaMerge(["grid", "grid-cols-1", "grid-rows-1", "isolate"]);
5706
- const cvaZStackItem = cssClassVarianceUtilities.cvaMerge(["col-start-1", "col-end-1", "row-start-1", "row-end-2"]);
5750
+ const cvaZStackContainer = cssClassVarianceUtilities.cva({ base: ["grid", "grid-cols-1", "grid-rows-1", "isolate"] });
5751
+ const cvaZStackItem = cssClassVarianceUtilities.cva({ base: ["col-start-1", "col-end-1", "row-start-1", "row-end-2"] });
5707
5752
 
5708
5753
  /**
5709
5754
  * ZStack stacks its children on the z-axis (overlaying them on top of each other).
@@ -5743,28 +5788,25 @@ const ZStack = ({ children, className, "data-testid": dataTestId, style, ref })
5743
5788
  }) }));
5744
5789
  };
5745
5790
 
5746
- const cvaHorizontalOverflowScroller = cssClassVarianceUtilities.cvaMerge([
5747
- "flex",
5748
- "flex-nowrap",
5749
- "gap-1",
5750
- "overflow-y-hidden",
5751
- "overflow-x-scroll",
5752
- "w-full",
5753
- "no-scrollbar",
5754
- ]);
5755
- const cvaHorizontalOverflowScrollerAndIndicatorsContainer = cssClassVarianceUtilities.cvaMerge(["group", "w-full", "overflow-clip"]);
5756
-
5757
- const cvaOverflowIndicatorContainer = cssClassVarianceUtilities.cvaMerge(["pointer-events-none", "h-full", "w-full", "isolate", "pb-px"]);
5758
- const cvaOverflowIndicatorGradient = cssClassVarianceUtilities.cvaMerge([
5759
- "pointer-events-none",
5760
- "self-stretch",
5761
- "w-16",
5762
- "opacity-0",
5763
- "transition-opacity",
5764
- "duration-200",
5765
- "group-hover:opacity-100",
5766
- "group-focus-within:opacity-100",
5767
- ], {
5791
+ const cvaHorizontalOverflowScroller = cssClassVarianceUtilities.cva({
5792
+ base: ["flex", "flex-nowrap", "gap-1", "overflow-y-hidden", "overflow-x-scroll", "w-full", "no-scrollbar"],
5793
+ });
5794
+ const cvaHorizontalOverflowScrollerAndIndicatorsContainer = cssClassVarianceUtilities.cva({ base: ["group", "w-full", "overflow-clip"] });
5795
+
5796
+ const cvaOverflowIndicatorContainer = cssClassVarianceUtilities.cva({
5797
+ base: ["pointer-events-none", "h-full", "w-full", "isolate", "pb-px"],
5798
+ });
5799
+ const cvaOverflowIndicatorGradient = cssClassVarianceUtilities.cva({
5800
+ base: [
5801
+ "pointer-events-none",
5802
+ "self-stretch",
5803
+ "w-16",
5804
+ "opacity-0",
5805
+ "transition-opacity",
5806
+ "duration-200",
5807
+ "group-hover:opacity-100",
5808
+ "group-focus-within:opacity-100",
5809
+ ],
5768
5810
  variants: {
5769
5811
  direction: {
5770
5812
  left: ["bg-gradient-to-r", "from-white", "from-30%", "to-transparent"],
@@ -5772,7 +5814,8 @@ const cvaOverflowIndicatorGradient = cssClassVarianceUtilities.cvaMerge([
5772
5814
  },
5773
5815
  },
5774
5816
  });
5775
- const cvaJustificationContainer = cssClassVarianceUtilities.cvaMerge(["flex", "w-full", "items-center", "pointer-events-none"], {
5817
+ const cvaJustificationContainer = cssClassVarianceUtilities.cva({
5818
+ base: ["flex", "w-full", "items-center", "pointer-events-none"],
5776
5819
  variants: {
5777
5820
  direction: {
5778
5821
  left: ["justify-start"],
@@ -5780,18 +5823,20 @@ const cvaJustificationContainer = cssClassVarianceUtilities.cvaMerge(["flex", "w
5780
5823
  },
5781
5824
  },
5782
5825
  });
5783
- const cvaOverflowIndicatorButton = cssClassVarianceUtilities.cvaMerge([
5784
- "shadow-md",
5785
- "opacity-0",
5786
- "transition-opacity",
5787
- "duration-200",
5788
- "pointer-events-auto",
5789
- "starting:opacity-0",
5790
- "group-hover:opacity-100",
5791
- "group-focus-within:opacity-100",
5792
- "rounded-full",
5793
- "mx-1",
5794
- ]);
5826
+ const cvaOverflowIndicatorButton = cssClassVarianceUtilities.cva({
5827
+ base: [
5828
+ "shadow-md",
5829
+ "opacity-0",
5830
+ "transition-opacity",
5831
+ "duration-200",
5832
+ "pointer-events-auto",
5833
+ "starting:opacity-0",
5834
+ "group-hover:opacity-100",
5835
+ "group-focus-within:opacity-100",
5836
+ "rounded-full",
5837
+ "mx-1",
5838
+ ],
5839
+ });
5795
5840
 
5796
5841
  /**
5797
5842
  * Overflow indicator component that shows visual cues when content extends beyond visible area
@@ -5866,9 +5911,10 @@ const HorizontalOverflowScroller = ({ className, "data-testid": dataTestId, chil
5866
5911
  return (jsxRuntime.jsxs(ZStack, { className: cvaHorizontalOverflowScrollerAndIndicatorsContainer({ className }), style: style, children: [jsxRuntime.jsx("div", { className: cvaHorizontalOverflowScroller(), "data-testid": dataTestId, ref: mergedRef, children: childrenArray.map((child, index) => (jsxRuntime.jsx(react.Fragment, { children: child }, index))) }), isScrollable && !isAtBeginning ? (jsxRuntime.jsx(OverflowIndicator, { "data-testid": `${dataTestId}-left-indicator`, direction: "left", onClickScroll: handleScrollLeft })) : null, isScrollable && !isAtEnd ? (jsxRuntime.jsx(OverflowIndicator, { "data-testid": `${dataTestId}-right-indicator`, direction: "right", onClickScroll: handleScrollRight })) : null] }));
5867
5912
  };
5868
5913
 
5869
- const cvaIndicator = cssClassVarianceUtilities.cvaMerge(["inline-flex", "items-center"]);
5870
- const cvaIndicatorIcon = cssClassVarianceUtilities.cvaMerge(["mr-2"]);
5871
- const cvaIndicatorLabel = cssClassVarianceUtilities.cvaMerge(["capitalize"], {
5914
+ const cvaIndicator = cssClassVarianceUtilities.cva({ base: ["inline-flex", "items-center"] });
5915
+ const cvaIndicatorIcon = cssClassVarianceUtilities.cva({ base: ["mr-2"] });
5916
+ const cvaIndicatorLabel = cssClassVarianceUtilities.cva({
5917
+ base: ["capitalize"],
5872
5918
  variants: {
5873
5919
  size: {
5874
5920
  small: "text-xs",
@@ -5889,7 +5935,17 @@ const cvaIndicatorLabel = cssClassVarianceUtilities.cvaMerge(["capitalize"], {
5889
5935
  background: "visible",
5890
5936
  },
5891
5937
  });
5892
- const cvaIndicatorPing = cssClassVarianceUtilities.cvaMerge(["animate-ping-sm", "absolute", "inline-flex", "h-full", "w-full", "rounded-full", "opacity-75", "bg-neutral-600"], {
5938
+ const cvaIndicatorPing = cssClassVarianceUtilities.cva({
5939
+ base: [
5940
+ "animate-ping-sm",
5941
+ "absolute",
5942
+ "inline-flex",
5943
+ "h-full",
5944
+ "w-full",
5945
+ "rounded-full",
5946
+ "opacity-75",
5947
+ "bg-neutral-600",
5948
+ ],
5893
5949
  variants: {
5894
5950
  color: {
5895
5951
  primary: "bg-primary-600",
@@ -5932,7 +5988,8 @@ const cvaIndicatorPing = cssClassVarianceUtilities.cvaMerge(["animate-ping-sm",
5932
5988
  },
5933
5989
  },
5934
5990
  });
5935
- const cvaIndicatorIconBackground = cssClassVarianceUtilities.cvaMerge(["rounded-full", "items-center", "justify-center", "flex", "relative"], {
5991
+ const cvaIndicatorIconBackground = cssClassVarianceUtilities.cva({
5992
+ base: ["rounded-full", "items-center", "justify-center", "flex", "relative"],
5936
5993
  variants: {
5937
5994
  color: {
5938
5995
  primary: "bg-primary-100 text-primary-600",
@@ -6039,7 +6096,8 @@ const Indicator = ({ "data-testid": dataTestId, icon, label, color = "unknown",
6039
6096
  *
6040
6097
  * @returns tailwind class names on the basis on the provided props.
6041
6098
  */
6042
- const cvaInteractableItem = cssClassVarianceUtilities.cvaMerge(["transition-colors", "duration-100", "ease-in-out"], {
6099
+ const cvaInteractableItem = cssClassVarianceUtilities.cva({
6100
+ base: ["transition-colors", "duration-100", "ease-in-out"],
6043
6101
  variants: {
6044
6102
  cursor: {
6045
6103
  pointer: "cursor-pointer",
@@ -6086,7 +6144,8 @@ const cvaInteractableItem = cssClassVarianceUtilities.cvaMerge(["transition-colo
6086
6144
  },
6087
6145
  });
6088
6146
 
6089
- const cvaKPI = cssClassVarianceUtilities.cvaMerge(["flex", "flex-col"], {
6147
+ const cvaKPI = cssClassVarianceUtilities.cva({
6148
+ base: ["flex", "flex-col"],
6090
6149
  variants: {
6091
6150
  variant: {
6092
6151
  small: ["px-3", "py-2"],
@@ -6098,7 +6157,8 @@ const cvaKPI = cssClassVarianceUtilities.cvaMerge(["flex", "flex-col"], {
6098
6157
  variant: "default",
6099
6158
  },
6100
6159
  });
6101
- const cvaKPITrendPercentage = cssClassVarianceUtilities.cvaMerge([""], {
6160
+ const cvaKPITrendPercentage = cssClassVarianceUtilities.cva({
6161
+ base: [""],
6102
6162
  variants: {
6103
6163
  color: {
6104
6164
  success: ["text-success-600"],
@@ -6212,7 +6272,8 @@ const TrendIndicators = ({ trends, "data-testid": dataTestId, className, style,
6212
6272
  };
6213
6273
 
6214
6274
  const valueBarContainerClassName = "relative flex w-full items-center gap-2";
6215
- const cvaValueBarText = cssClassVarianceUtilities.cvaMerge(["whitespace-nowrap"], {
6275
+ const cvaValueBarText = cssClassVarianceUtilities.cva({
6276
+ base: ["whitespace-nowrap"],
6216
6277
  variants: {
6217
6278
  size: {
6218
6279
  small: "leading-xs text-xs font-medium text-neutral-600",
@@ -6224,16 +6285,17 @@ const cvaValueBarText = cssClassVarianceUtilities.cvaMerge(["whitespace-nowrap"]
6224
6285
  },
6225
6286
  });
6226
6287
 
6227
- const cvaValueBar = cssClassVarianceUtilities.cvaMerge([
6228
- "w-full",
6229
- "overflow-hidden",
6230
- "rounded",
6231
- "bg-neutral-100",
6232
- "appearance-none",
6233
- "[&::-webkit-progress-bar]:bg-transparent",
6234
- "[&::-webkit-progress-value]:bg-current",
6235
- "[&::-moz-progress-bar]:bg-current",
6236
- ], {
6288
+ const cvaValueBar = cssClassVarianceUtilities.cva({
6289
+ base: [
6290
+ "w-full",
6291
+ "overflow-hidden",
6292
+ "rounded",
6293
+ "bg-neutral-100",
6294
+ "appearance-none",
6295
+ "[&::-webkit-progress-bar]:bg-transparent",
6296
+ "[&::-webkit-progress-value]:bg-current",
6297
+ "[&::-moz-progress-bar]:bg-current",
6298
+ ],
6237
6299
  variants: {
6238
6300
  size: {
6239
6301
  extraSmall: "h-1",
@@ -6362,11 +6424,12 @@ const ValueBar = ({ value, min = 0, max = 100, unit, size = "small", levelColors
6362
6424
  return (jsxRuntime.jsxs("span", { className: valueBarContainerClassName, "data-testid": dataTestId, ref: ref, style: style, children: [jsxRuntime.jsx("progress", { "aria-label": valueText, className: cvaValueBar({ className, size }), max: 100, style: { color: barFillColor }, value: score * 100 }), showValue && (size === "small" || size === "large") ? (jsxRuntime.jsx(Text, { className: cvaValueBarText({ size }), "data-testid": dataTestId ? `${dataTestId}-value` : undefined, children: jsxRuntime.jsx("span", { style: valueColor ? { color: valueColor } : undefined, children: valueText }) })) : null] }));
6363
6425
  };
6364
6426
 
6365
- const cvaKPICard = cssClassVarianceUtilities.cvaMerge([
6366
- "inline-flex",
6367
- "gap-1",
6368
- "hover:shadow-none", // overwriting the Card hover shadow when wrapped in a KPICard
6369
- ], {
6427
+ const cvaKPICard = cssClassVarianceUtilities.cva({
6428
+ base: [
6429
+ "inline-flex",
6430
+ "gap-1",
6431
+ "hover:shadow-none", // overwriting the Card hover shadow when wrapped in a KPICard
6432
+ ],
6370
6433
  variants: {
6371
6434
  isClickable: {
6372
6435
  true: ["hover:bg-neutral-50", "component-card-border"],
@@ -6382,9 +6445,10 @@ const cvaKPICard = cssClassVarianceUtilities.cvaMerge([
6382
6445
  isActive: false,
6383
6446
  },
6384
6447
  });
6385
- const cvaKPICardBody = cssClassVarianceUtilities.cvaMerge(["grid", "gap-2", "px-3", "pb-2", "pt-3"]);
6386
- const cvaKPICardHeader = cssClassVarianceUtilities.cvaMerge(["grid", "grid-cols-[1fr_auto]", "justify-between", "gap-2"]);
6387
- const cvaKPIIconContainer = cssClassVarianceUtilities.cvaMerge(["flex", "items-center", "justify-center", "w-7", "h-7", "rounded-md", "text-white"], {
6448
+ const cvaKPICardBody = cssClassVarianceUtilities.cva({ base: ["grid", "gap-2", "px-3", "pb-2", "pt-3"] });
6449
+ const cvaKPICardHeader = cssClassVarianceUtilities.cva({ base: ["grid", "grid-cols-[1fr_auto]", "justify-between", "gap-2"] });
6450
+ const cvaKPIIconContainer = cssClassVarianceUtilities.cva({
6451
+ base: ["flex", "items-center", "justify-center", "w-7", "h-7", "rounded-md", "text-white"],
6388
6452
  variants: {
6389
6453
  iconColor: {
6390
6454
  success: ["bg-success-600"],
@@ -6523,7 +6587,8 @@ const KPICardSkeleton = ({ hasIcon = false, hasTrends = false, hasValueBar = fal
6523
6587
  return (jsxRuntime.jsx(Card, { className: cvaKPICard({ className }), "data-testid": dataTestId, ref: ref, style: style, ...rest, children: jsxRuntime.jsxs(CardBody, { className: cvaKPICardBody(), gap: "none", padding: "none", children: [jsxRuntime.jsxs("div", { className: cvaKPICardHeader(), children: [jsxRuntime.jsx(KPISkeleton, { className: "p-0", "data-testid": dataTestId ? `${dataTestId}-kpi` : undefined }), hasIcon ? (jsxRuntime.jsx(SkeletonBlock, { "data-testid": dataTestId ? `${dataTestId}-icon-loading` : undefined, height: 28, width: 28 })) : null] }), hasTrends ? (jsxRuntime.jsx(SkeletonLabel, { "data-testid": dataTestId ? `${dataTestId}-trend-indicator-loading` : undefined, textSize: "text-xs", width: "100%" })) : null, hasValueBar ? (jsxRuntime.jsx(SkeletonLabel, { "data-testid": dataTestId ? `${dataTestId}-value-bar-loading` : undefined, textSize: "text-xs", width: "100%" })) : null, hasNotice ? (jsxRuntime.jsx(SkeletonLabel, { "data-testid": dataTestId ? `${dataTestId}-notice-loading` : undefined, textSize: "text-xs", width: "100%" })) : null, children] }) }));
6524
6588
  };
6525
6589
 
6526
- const cvaLabeledValue = cssClassVarianceUtilities.cvaMerge(["flex", "text-sm"], {
6590
+ const cvaLabeledValue = cssClassVarianceUtilities.cva({
6591
+ base: ["flex", "text-sm"],
6527
6592
  variants: {
6528
6593
  orientation: {
6529
6594
  horizontal: ["flex-row", "items-start", "gap-6"],
@@ -6534,7 +6599,8 @@ const cvaLabeledValue = cssClassVarianceUtilities.cvaMerge(["flex", "text-sm"],
6534
6599
  orientation: "horizontal",
6535
6600
  },
6536
6601
  });
6537
- const cvaLabeledValueLabel = cssClassVarianceUtilities.cvaMerge(["font-medium", "text-neutral-500"], {
6602
+ const cvaLabeledValueLabel = cssClassVarianceUtilities.cva({
6603
+ base: ["font-medium", "text-neutral-500"],
6538
6604
  variants: {
6539
6605
  orientation: {
6540
6606
  horizontal: ["min-w-[40%]", "max-w-[40%]"],
@@ -6545,9 +6611,9 @@ const cvaLabeledValueLabel = cssClassVarianceUtilities.cvaMerge(["font-medium",
6545
6611
  orientation: "horizontal",
6546
6612
  },
6547
6613
  });
6548
- const cvaLabeledValueValue = cssClassVarianceUtilities.cvaMerge(["min-w-0", "font-medium", "text-neutral-900"]);
6549
- const cvaLabeledValueList = cssClassVarianceUtilities.cvaMerge(["flex", "flex-col", "gap-4"]);
6550
- const cvaLabeledValueTooltip = cssClassVarianceUtilities.cvaMerge(["ml-1", "inline-flex", "align-sub"]);
6614
+ const cvaLabeledValueValue = cssClassVarianceUtilities.cva({ base: ["min-w-0", "font-medium", "text-neutral-900"] });
6615
+ const cvaLabeledValueList = cssClassVarianceUtilities.cva({ base: ["flex", "flex-col", "gap-4"] });
6616
+ const cvaLabeledValueTooltip = cssClassVarianceUtilities.cva({ base: ["ml-1", "inline-flex", "align-sub"] });
6551
6617
 
6552
6618
  /**
6553
6619
  * LabeledValue displays a single piece of labeled information, pairing a descriptive label with its corresponding value.
@@ -6610,7 +6676,8 @@ const LabeledValueList = ({ items, orientation = "horizontal", className, "data-
6610
6676
  return (jsxRuntime.jsx("div", { className: cvaLabeledValueList({ className }), "data-testid": dataTestId, ref: ref, style: style, children: items.map((item, index) => (jsxRuntime.jsx(LabeledValue, { orientation: orientation, ...item }, item["data-testid"] ?? `${item.label}-${index}`))) }));
6611
6677
  };
6612
6678
 
6613
- const cvaListContainer = cssClassVarianceUtilities.cvaMerge(["overflow-y-auto", "overflow-x-hidden", "h-full"], {
6679
+ const cvaListContainer = cssClassVarianceUtilities.cva({
6680
+ base: ["overflow-y-auto", "overflow-x-hidden", "h-full"],
6614
6681
  variants: {
6615
6682
  withTopSeparator: {
6616
6683
  true: ["border-t", "border-neutral-200", "transition-colors duration-200 ease-in"],
@@ -6621,8 +6688,9 @@ const cvaListContainer = cssClassVarianceUtilities.cvaMerge(["overflow-y-auto",
6621
6688
  withTopSeparator: false,
6622
6689
  },
6623
6690
  });
6624
- const cvaList = cssClassVarianceUtilities.cvaMerge(["relative"]);
6625
- const cvaListItem$1 = cssClassVarianceUtilities.cvaMerge(["absolute", "top-0", "left-0", "w-full"], {
6691
+ const cvaList = cssClassVarianceUtilities.cva({ base: ["relative"] });
6692
+ const cvaListItem$1 = cssClassVarianceUtilities.cva({
6693
+ base: ["absolute", "top-0", "left-0", "w-full"],
6626
6694
  variants: {
6627
6695
  separator: {
6628
6696
  line: "border-neutral-200",
@@ -6650,8 +6718,11 @@ const cvaListItem$1 = cssClassVarianceUtilities.cvaMerge(["absolute", "top-0", "
6650
6718
  },
6651
6719
  });
6652
6720
 
6653
- const cvaListItem = cssClassVarianceUtilities.cvaMerge(["py-3", "px-4", "min-h-14", "w-full", "flex", "justify-between", "items-center"]);
6654
- const cvaMainInformationClass = cssClassVarianceUtilities.cvaMerge(["grid", "items-center", "text-sm", "gap-2"], {
6721
+ const cvaListItem = cssClassVarianceUtilities.cva({
6722
+ base: ["py-3", "px-4", "min-h-14", "w-full", "flex", "justify-between", "items-center"],
6723
+ });
6724
+ const cvaMainInformationClass = cssClassVarianceUtilities.cva({
6725
+ base: ["grid", "items-center", "text-sm", "gap-2"],
6655
6726
  variants: {
6656
6727
  hasThumbnail: {
6657
6728
  true: "grid-cols-min-fr",
@@ -6659,20 +6730,20 @@ const cvaMainInformationClass = cssClassVarianceUtilities.cvaMerge(["grid", "ite
6659
6730
  },
6660
6731
  },
6661
6732
  });
6662
- const cvaThumbnailContainer = cssClassVarianceUtilities.cvaMerge([
6663
- "flex",
6664
- "h-8",
6665
- "w-8",
6666
- "items-center",
6667
- "justify-center",
6668
- "overflow-hidden",
6669
- "rounded-md",
6670
- ]);
6671
- const cvaTextContainer = cssClassVarianceUtilities.cvaMerge(["grid-rows-min-fr", "grid", "items-center", "text-sm"]);
6672
- const cvaTitleRow = cssClassVarianceUtilities.cvaMerge(["gap-responsive-space-sm", "flex", "w-full", "min-w-0", "items-center", "text-sm"]);
6673
- const cvaDescriptionRow = cssClassVarianceUtilities.cvaMerge(["gap-responsive-space-sm", "flex", "w-full", "min-w-0", "items-center"]);
6674
- const cvaMetaRow = cssClassVarianceUtilities.cvaMerge(["gap-responsive-space-sm", "flex", "w-full", "min-w-0", "items-center", "pt-0.5"]);
6675
- const cvaDetailsContainer = cssClassVarianceUtilities.cvaMerge(["flex", "items-center", "gap-0.5", "text-nowrap", "pl-2"]);
6733
+ const cvaThumbnailContainer = cssClassVarianceUtilities.cva({
6734
+ base: ["flex", "h-8", "w-8", "items-center", "justify-center", "overflow-hidden", "rounded-md"],
6735
+ });
6736
+ const cvaTextContainer = cssClassVarianceUtilities.cva({ base: ["grid-rows-min-fr", "grid", "items-center", "text-sm"] });
6737
+ const cvaTitleRow = cssClassVarianceUtilities.cva({
6738
+ base: ["gap-responsive-space-sm", "flex", "w-full", "min-w-0", "items-center", "text-sm"],
6739
+ });
6740
+ const cvaDescriptionRow = cssClassVarianceUtilities.cva({
6741
+ base: ["gap-responsive-space-sm", "flex", "w-full", "min-w-0", "items-center"],
6742
+ });
6743
+ const cvaMetaRow = cssClassVarianceUtilities.cva({
6744
+ base: ["gap-responsive-space-sm", "flex", "w-full", "min-w-0", "items-center", "pt-0.5"],
6745
+ });
6746
+ const cvaDetailsContainer = cssClassVarianceUtilities.cva({ base: ["flex", "items-center", "gap-0.5", "text-nowrap", "pl-2"] });
6676
6747
 
6677
6748
  /**
6678
6749
  * Default property values for ListItemSkeleton component.
@@ -7291,17 +7362,18 @@ const useListItemHeight = () => {
7291
7362
 
7292
7363
  // These must be two separate divs (menu and menulist) so that the overflow-clip can be applied to the parent and the overflow-y-auto can be applied to the child.
7293
7364
  // * Note that the cvaMenu is also used for Select component
7294
- const cvaMenu = cssClassVarianceUtilities.cvaMerge([
7295
- "shadow",
7296
- "rounded-lg",
7297
- "bg-white",
7298
- "border",
7299
- "border-neutral-300",
7300
- "z-popover",
7301
- "grid",
7302
- "min-w-[200px]",
7303
- "overflow-clip",
7304
- ], {
7365
+ const cvaMenu = cssClassVarianceUtilities.cva({
7366
+ base: [
7367
+ "shadow",
7368
+ "rounded-lg",
7369
+ "bg-white",
7370
+ "border",
7371
+ "border-neutral-300",
7372
+ "z-popover",
7373
+ "grid",
7374
+ "min-w-[200px]",
7375
+ "overflow-clip",
7376
+ ],
7305
7377
  variants: {
7306
7378
  limitWidth: {
7307
7379
  true: "max-w-[300px]",
@@ -7313,20 +7385,18 @@ const cvaMenu = cssClassVarianceUtilities.cvaMerge([
7313
7385
  },
7314
7386
  });
7315
7387
  // * Note that the cvaMenuList is also used for Select component
7316
- const cvaMenuList = cssClassVarianceUtilities.cvaMerge([
7317
- "p-1",
7318
- "gap-y-0.5",
7319
- "grid",
7320
- "max-h-[max(40dvh,var(--spacing-64))]",
7321
- "overflow-y-auto",
7322
- ]);
7323
- const cvaMenuListDivider = cssClassVarianceUtilities.cvaMerge(["mx-[-4px]", "my-0.5", "min-h-px", "bg-neutral-300"]);
7324
- const cvaMenuListMultiSelect = cssClassVarianceUtilities.cvaMerge([
7325
- "!has-[:checked]:bg-primary-100",
7326
- "!hover:has-[:checked]:bg-primary-200",
7327
- "!focus-within:has-[:checked]:bg-primary-100",
7328
- ]);
7329
- const cvaMenuListItem = cssClassVarianceUtilities.cvaMerge("max-w-full");
7388
+ const cvaMenuList = cssClassVarianceUtilities.cva({
7389
+ base: ["p-1", "gap-y-0.5", "grid", "max-h-[max(40dvh,var(--spacing-64))]", "overflow-y-auto"],
7390
+ });
7391
+ const cvaMenuListDivider = cssClassVarianceUtilities.cva({ base: ["mx-[-4px]", "my-0.5", "min-h-px", "bg-neutral-300"] });
7392
+ const cvaMenuListMultiSelect = cssClassVarianceUtilities.cva({
7393
+ base: [
7394
+ "!has-[:checked]:bg-primary-100",
7395
+ "!hover:has-[:checked]:bg-primary-200",
7396
+ "!focus-within:has-[:checked]:bg-primary-100",
7397
+ ],
7398
+ });
7399
+ const cvaMenuListItem = cssClassVarianceUtilities.cva({ base: "max-w-full" });
7330
7400
 
7331
7401
  const MenuContentContext = react.createContext(null);
7332
7402
  /**
@@ -7760,44 +7830,44 @@ const cvaMenuItem = (props) => {
7760
7830
  focus: focused === true ? "focused" : "unfocused",
7761
7831
  }), className);
7762
7832
  };
7763
- const cvaMenuItemStyle = cssClassVarianceUtilities.cvaMerge(
7764
- // `min-w-0` overrides the flex/grid item default of `min-width: auto`, which otherwise refuses to
7765
- // shrink this row below the intrinsic (unwrapped) width of its `truncate`d label -- without it, the
7766
- // label's ellipsis truncation never kicks in and the ancestor menu list scrolls horizontally instead.
7767
- //
7768
- // `outline-hidden`: `MenuContent`'s roving-tabindex keyboard nav calls this element's own `.focus()`
7769
- // on hover too (to keep keyboard nav in sync with the pointer -- see `onMouseMove` on `MenuItemProps`),
7770
- // and Chromium's `:focus-visible` heuristic treats a script-triggered `.focus()` on a non-native
7771
- // control as visible-by-default, so the browser's native ring was showing on every hover. The active
7772
- // item is already indicated by `cvaInteractableItem`'s `hover:`/`focus-within:` background tint, so the
7773
- // native ring is redundant (and, via hover, actively misleading) for both mouse and keyboard users.
7774
- //
7775
- // `data-[state=open]:…` / `data-hover-scroll-suppressed`: a submenu trigger's open state is held still
7776
- // across scroll-induced phantom `:hover` flips (see `hoverScrollGuard`). Non-open rows freeze their
7777
- // *hover* tint back to their own resting background (added per-`selected` value below, since that
7778
- // resting background differs) while the guard's root attribute is set -- matching the open-state
7779
- // freeze without a React render per scroll tick, and *without* `pointer-events-none`: an earlier
7780
- // version took the row out of hit-testing entirely, which silently swallowed real clicks landing
7781
- // within the same ~100ms window (not just the phantom hover this guards against) -- see the
7782
- // "Service Management Edit notification" e2e flake this caused. Excludes `:focus-within`
7783
- // (`:not(:focus-within)`): the frozen background is `!important`, so without the exclusion it would
7784
- // outrank `cvaInteractableItem`'s plain `focus-within:` tint whenever the hovered row is also the
7785
- // keyboard-navigated one (the common case, since `MenuContent`'s roving tabindex focuses the row
7786
- // under the cursor) -- blanking the keyboard-navigated row's only visual indicator (the native ring
7787
- // is suppressed by `outline-hidden` above) for the whole scroll-suppression window.
7788
- [
7789
- "px-2",
7790
- "h-auto",
7791
- "flex",
7792
- "flex-row",
7793
- "items-center",
7794
- "gap-x-2",
7795
- "select-none",
7796
- "rounded",
7797
- "min-w-0",
7798
- "outline-hidden",
7799
- "data-[state=open]:bg-neutral-600/5",
7800
- ], {
7833
+ const cvaMenuItemStyle = cssClassVarianceUtilities.cva({
7834
+ // `min-w-0` overrides the flex/grid item default of `min-width: auto`, which otherwise refuses to
7835
+ // shrink this row below the intrinsic (unwrapped) width of its `truncate`d label -- without it, the
7836
+ // label's ellipsis truncation never kicks in and the ancestor menu list scrolls horizontally instead.
7837
+ //
7838
+ // `outline-hidden`: `MenuContent`'s roving-tabindex keyboard nav calls this element's own `.focus()`
7839
+ // on hover too (to keep keyboard nav in sync with the pointer -- see `onMouseMove` on `MenuItemProps`),
7840
+ // and Chromium's `:focus-visible` heuristic treats a script-triggered `.focus()` on a non-native
7841
+ // control as visible-by-default, so the browser's native ring was showing on every hover. The active
7842
+ // item is already indicated by `cvaInteractableItem`'s `hover:`/`focus-within:` background tint, so the
7843
+ // native ring is redundant (and, via hover, actively misleading) for both mouse and keyboard users.
7844
+ //
7845
+ // `data-[state=open]:…` / `data-hover-scroll-suppressed`: a submenu trigger's open state is held still
7846
+ // across scroll-induced phantom `:hover` flips (see `hoverScrollGuard`). Non-open rows freeze their
7847
+ // *hover* tint back to their own resting background (added per-`selected` value below, since that
7848
+ // resting background differs) while the guard's root attribute is set -- matching the open-state
7849
+ // freeze without a React render per scroll tick, and *without* `pointer-events-none`: an earlier
7850
+ // version took the row out of hit-testing entirely, which silently swallowed real clicks landing
7851
+ // within the same ~100ms window (not just the phantom hover this guards against) -- see the
7852
+ // "Service Management Edit notification" e2e flake this caused. Excludes `:focus-within`
7853
+ // (`:not(:focus-within)`): the frozen background is `!important`, so without the exclusion it would
7854
+ // outrank `cvaInteractableItem`'s plain `focus-within:` tint whenever the hovered row is also the
7855
+ // keyboard-navigated one (the common case, since `MenuContent`'s roving tabindex focuses the row
7856
+ // under the cursor) -- blanking the keyboard-navigated row's only visual indicator (the native ring
7857
+ // is suppressed by `outline-hidden` above) for the whole scroll-suppression window.
7858
+ base: [
7859
+ "px-2",
7860
+ "h-auto",
7861
+ "flex",
7862
+ "flex-row",
7863
+ "items-center",
7864
+ "gap-x-2",
7865
+ "select-none",
7866
+ "rounded",
7867
+ "min-w-0",
7868
+ "outline-hidden",
7869
+ "data-[state=open]:bg-neutral-600/5",
7870
+ ],
7801
7871
  variants: {
7802
7872
  fieldSize: {
7803
7873
  small: ["text-xs", "py-1.5"],
@@ -7820,9 +7890,7 @@ const cvaMenuItemStyle = cssClassVarianceUtilities.cvaMerge(
7820
7890
  // `cvaInteractableItem`), everything else rests transparent. The `selected` + `variant="danger"`
7821
7891
  // compound below rests on `!bg-white` instead and gets its own freeze override there.
7822
7892
  selected: {
7823
- true: [
7824
- "[:root[data-hover-scroll-suppressed]_&:not([data-state=open]):not(:focus-within)]:hover:!bg-primary-50",
7825
- ],
7893
+ true: ["[:root[data-hover-scroll-suppressed]_&:not([data-state=open]):not(:focus-within)]:hover:!bg-primary-50"],
7826
7894
  false: [
7827
7895
  "[:root[data-hover-scroll-suppressed]_&:not([data-state=open]):not(:focus-within)]:hover:!bg-transparent",
7828
7896
  ],
@@ -7852,12 +7920,12 @@ const cvaMenuItemStyle = cssClassVarianceUtilities.cvaMerge(
7852
7920
  disabled: false,
7853
7921
  },
7854
7922
  });
7855
- const cvaMenuItemLabel = cssClassVarianceUtilities.cvaMerge(
7856
- // No `truncate` here: `text-overflow: ellipsis` only applies to block containers, not flex containers,
7857
- // and this wrapper is `flex` (to align prefix/label/description). The actual truncation lives on the
7858
- // nested label `<span>` in `MenuItem.tsx`, which gets auto-blockified for being a flex item. `min-w-0`
7859
- // (rather than `truncate`'s `overflow-hidden`) is what lets this wrapper shrink below its content size.
7860
- ["flex-grow", "min-w-0", "text-black", "font-normal", "flex", "items-center"], {
7923
+ const cvaMenuItemLabel = cssClassVarianceUtilities.cva({
7924
+ // No `truncate` here: `text-overflow: ellipsis` only applies to block containers, not flex containers,
7925
+ // and this wrapper is `flex` (to align prefix/label/description). The actual truncation lives on the
7926
+ // nested label `<span>` in `MenuItem.tsx`, which gets auto-blockified for being a flex item. `min-w-0`
7927
+ // (rather than `truncate`'s `overflow-hidden`) is what lets this wrapper shrink below its content size.
7928
+ base: ["flex-grow", "min-w-0", "text-black", "font-normal", "flex", "items-center"],
7861
7929
  variants: {
7862
7930
  variant: {
7863
7931
  primary: [],
@@ -7873,15 +7941,16 @@ const cvaMenuItemLabel = cssClassVarianceUtilities.cvaMerge(
7873
7941
  disabled: false,
7874
7942
  },
7875
7943
  });
7876
- const cvaMenuItemPrefix = cssClassVarianceUtilities.cvaMerge([
7877
- "text-neutral-400",
7878
- "hover:text-neutral-500",
7879
- "focus:text-neutral-500",
7880
- "h-min",
7881
- "leading-[0]",
7882
- "flex",
7883
- "items-center",
7884
- ], {
7944
+ const cvaMenuItemPrefix = cssClassVarianceUtilities.cva({
7945
+ base: [
7946
+ "text-neutral-400",
7947
+ "hover:text-neutral-500",
7948
+ "focus:text-neutral-500",
7949
+ "h-min",
7950
+ "leading-[0]",
7951
+ "flex",
7952
+ "items-center",
7953
+ ],
7885
7954
  variants: {
7886
7955
  selected: {
7887
7956
  true: "text-primary-600",
@@ -7901,7 +7970,8 @@ const cvaMenuItemPrefix = cssClassVarianceUtilities.cvaMerge([
7901
7970
  disabled: false,
7902
7971
  },
7903
7972
  });
7904
- const cvaMenuItemSuffix = cssClassVarianceUtilities.cvaMerge(["text-neutral-400", "text-sm", "flex", "items-center"], {
7973
+ const cvaMenuItemSuffix = cssClassVarianceUtilities.cva({
7974
+ base: ["text-neutral-400", "text-sm", "flex", "items-center"],
7905
7975
  variants: {
7906
7976
  selected: {
7907
7977
  true: "text-neutral-600",
@@ -8209,7 +8279,7 @@ const MenuItem = ({ className, "data-testid": dataTestId, label, children, selec
8209
8279
  return (jsxRuntime.jsxs(Popover, { activation: { click: !disabled, hover: disabled ? false : { delayed: true } }, isOpen: submenuOpen, onOpenStateChange: setSubmenuOpen, placement: "right-start", sizing: submenuSizing, children: [jsxRuntime.jsx(PopoverTrigger, { ref: mergedTriggerRef, children: jsxRuntime.jsx(MenuItemRow, { ...itemRowProps, "aria-expanded": submenuOpen, "aria-haspopup": "menu" }) }), jsxRuntime.jsx(PopoverContent, { initialFocus: 1, returnFocus: returnFocusRef, children: submenu })] }));
8210
8280
  };
8211
8281
 
8212
- const cvaMoreMenu = cssClassVarianceUtilities.cvaMerge(["p-0"]);
8282
+ const cvaMoreMenu = cssClassVarianceUtilities.cva({ base: ["p-0"] });
8213
8283
 
8214
8284
  /**
8215
8285
  * MoreMenu (kebab menu) renders a three-dot button that opens a popover with a list of actions.
@@ -8269,8 +8339,9 @@ const MoreMenu = ({ className, "data-testid": dataTestId, popoverProps, iconProp
8269
8339
  return (jsxRuntime.jsx("div", { className: cvaMoreMenu({ className }), "data-testid": dataTestId ? dataTestId : undefined, ref: mergedRef, style: style, children: jsxRuntime.jsx(MenuTree, { children: jsxRuntime.jsx(Popover, { placement: "bottom-end", ...popoverProps, children: modalState => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(PopoverTrigger, { children: customButton ?? (jsxRuntime.jsx(IconButton, { ...iconButtonProps, "data-testid": iconButtonProps["data-testid"] ?? "more-menu-icon", icon: jsxRuntime.jsx(Icon, { name: "EllipsisHorizontal", ...iconProps }), ...(modalState.isOpen ? { ariaLabel: resolvedButtonLabel } : { title: resolvedButtonLabel }) })) }), jsxRuntime.jsx(PopoverContent, { portalId: customPortalId, children: close => (typeof children === "function" ? children(close) : children) })] })) }) }) }));
8270
8340
  };
8271
8341
 
8272
- const cvaNotice = cssClassVarianceUtilities.cvaMerge(["flex", "items-center", "gap-1"]);
8273
- const cvaNoticeLabel = cssClassVarianceUtilities.cvaMerge(["font-medium", "text-sm", "overflow-hidden", "text-ellipsis", "whitespace-nowrap"], {
8342
+ const cvaNotice = cssClassVarianceUtilities.cva({ base: ["flex", "items-center", "gap-1"] });
8343
+ const cvaNoticeLabel = cssClassVarianceUtilities.cva({
8344
+ base: ["font-medium", "text-sm", "overflow-hidden", "text-ellipsis", "whitespace-nowrap"],
8274
8345
  variants: {
8275
8346
  color: {
8276
8347
  neutral: "text-neutral-400",
@@ -8289,7 +8360,8 @@ const cvaNoticeLabel = cssClassVarianceUtilities.cvaMerge(["font-medium", "text-
8289
8360
  size: "medium",
8290
8361
  },
8291
8362
  });
8292
- const cvaNoticeIcon = cssClassVarianceUtilities.cvaMerge(["rounded-full", "items-center", "justify-center", "flex", "relative"], {
8363
+ const cvaNoticeIcon = cssClassVarianceUtilities.cva({
8364
+ base: ["rounded-full", "items-center", "justify-center", "flex", "relative"],
8293
8365
  variants: {
8294
8366
  color: {
8295
8367
  neutral: "text-neutral-400",
@@ -8348,7 +8420,8 @@ const Notice = ({ "data-testid": dataTestId, iconName = undefined, iconSize = "m
8348
8420
  return (jsxRuntime.jsxs("div", { "aria-label": label, className: cvaNotice({ className }), "data-testid": dataTestId, ref: ref, ...rest, children: [sharedUtils.nonNullable(iconName) ? (jsxRuntime.jsx("div", { className: cvaNoticeIcon({ color: iconColor || color }), "data-testid": dataTestId ? `${dataTestId}-icon` : "notice-icon", children: jsxRuntime.jsx(Icon, { name: iconName, size: iconSize }) })) : null, label && withLabel ? (jsxRuntime.jsx("div", { className: cvaNoticeLabel({ color, size }), "data-testid": dataTestId ? `${dataTestId}-label` : "notice-label", children: label })) : null] }));
8349
8421
  };
8350
8422
 
8351
- const cvaPage = cssClassVarianceUtilities.cvaMerge(["grid", "h-full"], {
8423
+ const cvaPage = cssClassVarianceUtilities.cva({
8424
+ base: ["grid", "h-full"],
8352
8425
  variants: {
8353
8426
  layout: {
8354
8427
  content: ["grid-rows-1"],
@@ -8361,7 +8434,8 @@ const cvaPage = cssClassVarianceUtilities.cvaMerge(["grid", "h-full"], {
8361
8434
  layout: "none",
8362
8435
  },
8363
8436
  });
8364
- const cvaPageContent = cssClassVarianceUtilities.cvaMerge(["overflow-auto", "page-content", "grid", "gap-4"], {
8437
+ const cvaPageContent = cssClassVarianceUtilities.cva({
8438
+ base: ["overflow-auto", "page-content", "grid", "gap-4"],
8365
8439
  variants: {
8366
8440
  layout: {
8367
8441
  content: "grid-rows-fr",
@@ -8492,7 +8566,7 @@ const PRESET_CONFIGURATIONS = {
8492
8566
  ],
8493
8567
  };
8494
8568
 
8495
- const cvaSkeletonContainer = cssClassVarianceUtilities.cvaMerge(["flex", "flex-col"]);
8569
+ const cvaSkeletonContainer = cssClassVarianceUtilities.cva({ base: ["flex", "flex-col"] });
8496
8570
 
8497
8571
  /**
8498
8572
  * SkeletonLines renders multiple animated placeholder text lines before data loads.
@@ -8694,7 +8768,8 @@ const useIsTextTruncated = (text, { skip = false } = {}) => {
8694
8768
  return react.useMemo(() => ({ ref, isTextTruncated }), [isTextTruncated]);
8695
8769
  };
8696
8770
 
8697
- const cvaPageHeaderContainer = cssClassVarianceUtilities.cvaMerge(["bg-white", "tu-page-header"], {
8771
+ const cvaPageHeaderContainer = cssClassVarianceUtilities.cva({
8772
+ base: ["bg-white", "tu-page-header"],
8698
8773
  variants: {
8699
8774
  withBorder: {
8700
8775
  true: ["border-b", "border-b-neutral-200"],
@@ -8702,8 +8777,8 @@ const cvaPageHeaderContainer = cssClassVarianceUtilities.cvaMerge(["bg-white", "
8702
8777
  },
8703
8778
  },
8704
8779
  });
8705
- const cvaPageHeader = cssClassVarianceUtilities.cvaMerge(["box-border", "py-4", "px-4", "flex", "items-center", "gap-y-1"]);
8706
- const cvaPageHeaderHeading = cssClassVarianceUtilities.cvaMerge(["text-neutral-900", "text-xl", "font-semibold", "truncate"]);
8780
+ const cvaPageHeader = cssClassVarianceUtilities.cva({ base: ["box-border", "py-4", "px-4", "flex", "items-center", "gap-y-1"] });
8781
+ const cvaPageHeaderHeading = cssClassVarianceUtilities.cva({ base: ["text-neutral-900", "text-xl", "font-semibold", "truncate"] });
8707
8782
 
8708
8783
  /**
8709
8784
  * The PageHeaderTitle component is used to display the title of the page header.
@@ -8795,8 +8870,8 @@ const PageHeader = ({ className, "data-testid": dataTestId, showLoading = false,
8795
8870
  discriminatedProps.primaryAction.tooltipLabel === "", label: discriminatedProps.primaryAction.tooltipLabel, children: jsxRuntime.jsx(Button, { "data-testid": discriminatedProps.primaryAction["data-testid"], disabled: discriminatedProps.primaryAction.disabled, loading: discriminatedProps.primaryAction.loading, onClick: () => discriminatedProps.primaryAction?.actionCallback?.(), prefix: discriminatedProps.primaryAction.prefixIconName !== undefined ? (jsxRuntime.jsx(Icon, { name: discriminatedProps.primaryAction.prefixIconName, size: "small" })) : undefined, size: "small", style: discriminatedProps.primaryAction.style, variant: discriminatedProps.primaryAction.variant, children: discriminatedProps.primaryAction.actionText }) })) : null] })] }), tabsList] }));
8796
8871
  };
8797
8872
 
8798
- const cvaPagination = cssClassVarianceUtilities.cvaMerge(["flex", "items-center", "gap-1"]);
8799
- const cvaPaginationText = cssClassVarianceUtilities.cvaMerge("whitespace-nowrap");
8873
+ const cvaPagination = cssClassVarianceUtilities.cva({ base: ["flex", "items-center", "gap-1"] });
8874
+ const cvaPaginationText = cssClassVarianceUtilities.cva({ base: "whitespace-nowrap" });
8800
8875
 
8801
8876
  /**
8802
8877
  * Pagination provides previous/next page navigation with an optional page counter and jump-to-page input.
@@ -8977,20 +9052,21 @@ const PopoverTitle = ({ children, action, divider = false, className, "data-test
8977
9052
  return (jsxRuntime.jsxs("div", { className: cvaPopoverTitleContainer({ divider, className }), "data-testid": dataTestId, ref: ref, style: style, children: [jsxRuntime.jsx(Text, { className: cvaPopoverTitleText(), size: "small", subtle: true, type: "div", uppercase: true, weight: "bold", children: children }), action] }));
8978
9053
  };
8979
9054
 
8980
- const cvaPreferenceCard = cssClassVarianceUtilities.cvaMerge([
8981
- "rounded-lg",
8982
- "border",
8983
- "border-neutral-200",
8984
- "bg-white",
8985
- "w-full",
8986
- "grid",
8987
- "gap-y-2",
8988
- "@container",
8989
- "grid-rows-1",
8990
- "grid-cols-1",
8991
- "[&:has([data-slot=input-container])]:grid-cols-min-fr", // When the input container is present, the grid columns are set to min-fr
8992
- "[&:has([data-slot=input-container]_:focus-visible)]:outline-native",
8993
- ], {
9055
+ const cvaPreferenceCard = cssClassVarianceUtilities.cva({
9056
+ base: [
9057
+ "rounded-lg",
9058
+ "border",
9059
+ "border-neutral-200",
9060
+ "bg-white",
9061
+ "w-full",
9062
+ "grid",
9063
+ "gap-y-2",
9064
+ "@container",
9065
+ "grid-rows-1",
9066
+ "grid-cols-1",
9067
+ "[&:has([data-slot=input-container])]:grid-cols-min-fr", // When the input container is present, the grid columns are set to min-fr
9068
+ "[&:has([data-slot=input-container]_:focus-visible)]:outline-native",
9069
+ ],
8994
9070
  variants: {
8995
9071
  disabled: {
8996
9072
  true: "",
@@ -9013,7 +9089,8 @@ const cvaPreferenceCard = cssClassVarianceUtilities.cvaMerge([
9013
9089
  clickable: false,
9014
9090
  },
9015
9091
  });
9016
- const cvaInputContainer = cssClassVarianceUtilities.cvaMerge(["flex", "p-4", "rounded-l-lg", "border", "border-transparent", "bg-neutral-50", "border-r-neutral-200"], {
9092
+ const cvaInputContainer = cssClassVarianceUtilities.cva({
9093
+ base: ["flex", "p-4", "rounded-l-lg", "border", "border-transparent", "bg-neutral-50", "border-r-neutral-200"],
9017
9094
  variants: {
9018
9095
  itemPlacement: {
9019
9096
  center: "items-center",
@@ -9024,11 +9101,12 @@ const cvaInputContainer = cssClassVarianceUtilities.cvaMerge(["flex", "p-4", "ro
9024
9101
  itemPlacement: "start",
9025
9102
  },
9026
9103
  });
9027
- const cvaContentContainer = cssClassVarianceUtilities.cvaMerge([
9028
- "grid",
9029
- "gap-x-3",
9030
- //* Grid template areas are applied with GridAreas component)
9031
- ], {
9104
+ const cvaContentContainer = cssClassVarianceUtilities.cva({
9105
+ base: [
9106
+ "grid",
9107
+ "gap-x-3",
9108
+ //* Grid template areas are applied with GridAreas component)
9109
+ ],
9032
9110
  variants: {
9033
9111
  itemPlacement: {
9034
9112
  center: "items-center",
@@ -9039,7 +9117,8 @@ const cvaContentContainer = cssClassVarianceUtilities.cvaMerge([
9039
9117
  itemPlacement: "start",
9040
9118
  },
9041
9119
  });
9042
- const cvaTitleCard = cssClassVarianceUtilities.cvaMerge(["min-w-0", "overflow-hidden", "text-ellipsis", "whitespace-nowrap"], {
9120
+ const cvaTitleCard = cssClassVarianceUtilities.cva({
9121
+ base: ["min-w-0", "overflow-hidden", "text-ellipsis", "whitespace-nowrap"],
9043
9122
  variants: {
9044
9123
  disabled: {
9045
9124
  true: "text-neutral-400",
@@ -9050,7 +9129,8 @@ const cvaTitleCard = cssClassVarianceUtilities.cvaMerge(["min-w-0", "overflow-hi
9050
9129
  disabled: false,
9051
9130
  },
9052
9131
  });
9053
- const cvaDescriptionCard = cssClassVarianceUtilities.cvaMerge([], {
9132
+ const cvaDescriptionCard = cssClassVarianceUtilities.cva({
9133
+ base: [],
9054
9134
  variants: {
9055
9135
  disabled: {
9056
9136
  true: "text-neutral-400",
@@ -9061,7 +9141,8 @@ const cvaDescriptionCard = cssClassVarianceUtilities.cvaMerge([], {
9061
9141
  disabled: false,
9062
9142
  },
9063
9143
  });
9064
- const cvaIconBackground = cssClassVarianceUtilities.cvaMerge(["flex", "h-8", "w-8", "items-center", "justify-center", "rounded-md", "shrink-0"], {
9144
+ const cvaIconBackground = cssClassVarianceUtilities.cva({
9145
+ base: ["flex", "h-8", "w-8", "items-center", "justify-center", "rounded-md", "shrink-0"],
9065
9146
  variants: {
9066
9147
  disabled: {
9067
9148
  true: "bg-neutral-200",
@@ -9072,7 +9153,7 @@ const cvaIconBackground = cssClassVarianceUtilities.cvaMerge(["flex", "h-8", "w-
9072
9153
  disabled: false,
9073
9154
  },
9074
9155
  });
9075
- const cvaContentWrapper = cssClassVarianceUtilities.cvaMerge(["grid", "gap-2", "px-4", "py-3"]);
9156
+ const cvaContentWrapper = cssClassVarianceUtilities.cva({ base: ["grid", "gap-2", "px-4", "py-3"] });
9076
9157
 
9077
9158
  const CENTER_INPUT_HEIGHT_THRESHOLD = 92;
9078
9159
  /**
@@ -9306,7 +9387,8 @@ const Prompt = ({ when, message }) => {
9306
9387
  return null;
9307
9388
  };
9308
9389
 
9309
- const cvaSpacer = cssClassVarianceUtilities.cvaMerge([], {
9390
+ const cvaSpacer = cssClassVarianceUtilities.cva({
9391
+ base: [],
9310
9392
  variants: {
9311
9393
  border: {
9312
9394
  true: ["border-t", "border-solid", "border-neutral-100", "min-h-[1px]"],
@@ -9512,7 +9594,8 @@ const getSnapLevelCssHeight = (levelIndex, totalLevels, dockingEnabled, dockedHe
9512
9594
  *
9513
9595
  * Always absolutely positioned within the provided container element.
9514
9596
  */
9515
- const cvaSheetContainer = cssClassVarianceUtilities.cvaMerge(["absolute", "inset-0", "z-overlay", "overflow-clip", "[container-type:size]"], {
9597
+ const cvaSheetContainer = cssClassVarianceUtilities.cva({
9598
+ base: ["absolute", "inset-0", "z-overlay", "overflow-clip", "[container-type:size]"],
9516
9599
  variants: {
9517
9600
  docked: {
9518
9601
  true: ["pointer-events-none"],
@@ -9539,7 +9622,17 @@ const cvaSheetContainer = cssClassVarianceUtilities.cvaMerge(["absolute", "inset
9539
9622
  * During drag, the gesture hook sets `--sheet-drag-height` and `transition: none`
9540
9623
  * directly on the element for immediate visual feedback, then restores on release.
9541
9624
  */
9542
- const cvaSheetPanel = cssClassVarianceUtilities.cvaMerge(["absolute", "bottom-0", "flex", "flex-col", "pointer-events-auto", "rounded-b-none", "rounded-t-xl", "z-overlay"], {
9625
+ const cvaSheetPanel = cssClassVarianceUtilities.cva({
9626
+ base: [
9627
+ "absolute",
9628
+ "bottom-0",
9629
+ "flex",
9630
+ "flex-col",
9631
+ "pointer-events-auto",
9632
+ "rounded-b-none",
9633
+ "rounded-t-xl",
9634
+ "z-overlay",
9635
+ ],
9543
9636
  variants: {
9544
9637
  anchor: {
9545
9638
  center: ["inset-x-0", "mx-auto", "max-w-3xl"],
@@ -9567,7 +9660,8 @@ const cvaSheetPanel = cssClassVarianceUtilities.cvaMerge(["absolute", "bottom-0"
9567
9660
  * for fit mode so that `scrollHeight` reflects natural content height rather
9568
9661
  * than the stretched layout — critical for correct fit-height measurement.
9569
9662
  */
9570
- const cvaSheetScrollArea = cssClassVarianceUtilities.cvaMerge(["flex", "flex-col", "min-h-0", "overflow-x-hidden", "overflow-y-auto"], {
9663
+ const cvaSheetScrollArea = cssClassVarianceUtilities.cva({
9664
+ base: ["flex", "flex-col", "min-h-0", "overflow-x-hidden", "overflow-y-auto"],
9571
9665
  variants: {
9572
9666
  fillHeight: {
9573
9667
  true: ["flex-grow"],
@@ -9697,17 +9791,18 @@ const HANDLE_VISUALS = {
9697
9791
  proximityWeight: 0.5,
9698
9792
  },
9699
9793
  };
9700
- const cvaSheetHandle = cssClassVarianceUtilities.cvaMerge([
9701
- "flex",
9702
- "items-center",
9703
- "justify-center",
9704
- "w-full",
9705
- "py-3",
9706
- "touch-action-none",
9707
- "select-none",
9708
- "shrink-0",
9709
- "bg-white",
9710
- ], {
9794
+ const cvaSheetHandle = cssClassVarianceUtilities.cva({
9795
+ base: [
9796
+ "flex",
9797
+ "items-center",
9798
+ "justify-center",
9799
+ "w-full",
9800
+ "py-3",
9801
+ "touch-action-none",
9802
+ "select-none",
9803
+ "shrink-0",
9804
+ "bg-white",
9805
+ ],
9711
9806
  variants: {
9712
9807
  isDragging: {
9713
9808
  true: ["cursor-grabbing", "[--handle-interaction:0.25]"],
@@ -9723,7 +9818,8 @@ const cvaSheetHandle = cssClassVarianceUtilities.cvaMerge([
9723
9818
  isDragging: false,
9724
9819
  },
9725
9820
  });
9726
- const cvaSheetHandleLine = cssClassVarianceUtilities.cvaMerge(["w-8", "h-1", "rounded-full", "origin-center"], {
9821
+ const cvaSheetHandleLine = cssClassVarianceUtilities.cva({
9822
+ base: ["w-8", "h-1", "rounded-full", "origin-center"],
9727
9823
  variants: {
9728
9824
  isDragging: {
9729
9825
  true: [],
@@ -9764,7 +9860,14 @@ const SheetHandle = ({ onPointerDown, onPointerMove, onPointerUp, onLostPointerC
9764
9860
  } }) }));
9765
9861
  };
9766
9862
 
9767
- const cvaSheetOverlay = cssClassVarianceUtilities.cvaMerge(["absolute", "inset-0", "transition-opacity", "duration-300", "[transition-timing-function:cubic-bezier(0.2,0,0,1)]"], {
9863
+ const cvaSheetOverlay = cssClassVarianceUtilities.cva({
9864
+ base: [
9865
+ "absolute",
9866
+ "inset-0",
9867
+ "transition-opacity",
9868
+ "duration-300",
9869
+ "[transition-timing-function:cubic-bezier(0.2,0,0,1)]",
9870
+ ],
9768
9871
  variants: {
9769
9872
  visible: {
9770
9873
  true: ["bg-black/50", "pointer-events-auto"],
@@ -11450,8 +11553,9 @@ const useSheet = (props) => {
11450
11553
  }), [isOpen, state, variant, open, close, snap, floatingUi, onGeometryChange, onSnap, onClickHandle, onCloseGesture]);
11451
11554
  };
11452
11555
 
11453
- const cvaSidebar = cssClassVarianceUtilities.cvaMerge(["apply", "grid", "grid-cols-fr-min", "items-center"]);
11454
- const cvaSidebarChildContainer = cssClassVarianceUtilities.cvaMerge(["apply", "flex", "overflow-hidden", "gap-2", "p-1", "max-w-full"], {
11556
+ const cvaSidebar = cssClassVarianceUtilities.cva({ base: ["apply", "grid", "grid-cols-fr-min", "items-center"] });
11557
+ const cvaSidebarChildContainer = cssClassVarianceUtilities.cva({
11558
+ base: ["apply", "flex", "overflow-hidden", "gap-2", "p-1", "max-w-full"],
11455
11559
  variants: {
11456
11560
  breakpoint: {
11457
11561
  xs: ["xs:overflow-visible", "xs:p-0", "xs:grid", "xs:grid-cols-1", "xs:w-full"],
@@ -11659,7 +11763,8 @@ const Sidebar = ({ childContainerClassName, children, breakpoint = "lg", classNa
11659
11763
  * would never appear as a complete literal string anywhere in this file and so would silently fail
11660
11764
  * to generate any CSS at all.
11661
11765
  */
11662
- const cvaSidebarContentLayout = cssClassVarianceUtilities.cvaMerge(["grid", "min-h-0", "flex-1", "grid-rows-[min-content_minmax(0px,1fr)]"], {
11766
+ const cvaSidebarContentLayout = cssClassVarianceUtilities.cva({
11767
+ base: ["grid", "min-h-0", "flex-1", "grid-rows-[min-content_minmax(0px,1fr)]"],
11663
11768
  variants: {
11664
11769
  breakpoint: {
11665
11770
  xs: ["grid-cols-1", "xs:grid-cols-[200px_minmax(0px,1fr)]", "xs:grid-rows-none"],
@@ -11715,7 +11820,8 @@ const cvaSidebarContentLayout = cssClassVarianceUtilities.cvaMerge(["grid", "min
11715
11820
  * `p-content-space` already owns - it is deliberately *not* zero, but not enough to look like a second
11716
11821
  * gap either.
11717
11822
  */
11718
- const cvaSidebarContentLayoutSidebar = cssClassVarianceUtilities.cvaMerge(["pt-4", "pl-4", "pr-4"], {
11823
+ const cvaSidebarContentLayoutSidebar = cssClassVarianceUtilities.cva({
11824
+ base: ["pt-4", "pl-4", "pr-4"],
11719
11825
  variants: {
11720
11826
  breakpoint: {
11721
11827
  xs: ["xs:pr-2", "xs:h-full", "xs:min-h-0", "xs:overflow-y-auto", "xs:[scrollbar-gutter:stable]"],
@@ -11742,7 +11848,8 @@ const cvaSidebarContentLayoutSidebar = cssClassVarianceUtilities.cvaMerge(["pt-4
11742
11848
  * ancestor. Callers rendering a route that must sit flush (e.g. a full-page extension iframe) opt
11743
11849
  * out with `contentSpace={false}`.
11744
11850
  */
11745
- const cvaSidebarContentLayoutContent = cssClassVarianceUtilities.cvaMerge(["relative", "h-full", "min-h-0", "overflow-y-auto"], {
11851
+ const cvaSidebarContentLayoutContent = cssClassVarianceUtilities.cva({
11852
+ base: ["relative", "h-full", "min-h-0", "overflow-y-auto"],
11746
11853
  variants: {
11747
11854
  contentSpace: {
11748
11855
  true: ["p-content-space"],
@@ -11794,42 +11901,38 @@ const SidebarContentLayout = ({ breakpoint = "lg", className, content, contentSp
11794
11901
  return (jsxRuntime.jsxs("div", { className: cvaSidebarContentLayout({ breakpoint, className }), "data-testid": dataTestId, ref: ref, style: style, children: [jsxRuntime.jsx("div", { className: cvaSidebarContentLayoutSidebar({ breakpoint }), "data-testid": `${dataTestId}-sidebar`, children: jsxRuntime.jsx(Sidebar, { breakpoint: breakpoint, children: sidebar }) }), jsxRuntime.jsx("div", { className: cvaSidebarContentLayoutContent({ contentSpace }), "data-testid": `${dataTestId}-content`, children: content })] }));
11795
11902
  };
11796
11903
 
11797
- const cvaTabsRoot = cssClassVarianceUtilities.cvaMerge([]);
11798
- const cvaTabList = cssClassVarianceUtilities.cvaMerge([
11799
- "flex",
11800
- "flex-row",
11801
- "border-b",
11802
- "border-b-neutral-200",
11803
- "overflow-auto",
11804
- "no-scrollbar",
11805
- ]);
11806
- const cvaTabContent = cssClassVarianceUtilities.cvaMerge([]);
11807
- const cvaTab = cssClassVarianceUtilities.cvaMerge([
11808
- "flex",
11809
- "items-center",
11810
- "justify-center",
11811
- "gap-2",
11812
- "text-sm",
11813
- "px-4",
11814
- "py-2",
11815
- "cursor-pointer",
11816
- "transition",
11817
- "duration-200",
11818
- "ease-in-out",
11819
- "whitespace-nowrap",
11820
- "border-b-2",
11821
- "border-b-transparent",
11822
- "hover:border-b-transparent",
11823
- "data-[state=active]:border-b-primary-600",
11824
- "data-[state=active]:font-semibold",
11825
- "data-[state=active]:text-neutral-900",
11826
- "data-[state=inactive]:font-medium",
11827
- "data-[state=inactive]:text-neutral-700",
11828
- "data-[state=inactive]:hover:text-neutral-900",
11829
- "disabled:cursor-not-allowed",
11830
- "data-[state=active]disabled:text-neutral-400",
11831
- "data-[state=inactive]:disabled:text-neutral-400",
11832
- ], {
11904
+ const cvaTabsRoot = cssClassVarianceUtilities.cva({ base: [] });
11905
+ const cvaTabList = cssClassVarianceUtilities.cva({
11906
+ base: ["flex", "flex-row", "border-b", "border-b-neutral-200", "overflow-auto", "no-scrollbar"],
11907
+ });
11908
+ const cvaTabContent = cssClassVarianceUtilities.cva({ base: [] });
11909
+ const cvaTab = cssClassVarianceUtilities.cva({
11910
+ base: [
11911
+ "flex",
11912
+ "items-center",
11913
+ "justify-center",
11914
+ "gap-2",
11915
+ "text-sm",
11916
+ "px-4",
11917
+ "py-2",
11918
+ "cursor-pointer",
11919
+ "transition",
11920
+ "duration-200",
11921
+ "ease-in-out",
11922
+ "whitespace-nowrap",
11923
+ "border-b-2",
11924
+ "border-b-transparent",
11925
+ "hover:border-b-transparent",
11926
+ "data-[state=active]:border-b-primary-600",
11927
+ "data-[state=active]:font-semibold",
11928
+ "data-[state=active]:text-neutral-900",
11929
+ "data-[state=inactive]:font-medium",
11930
+ "data-[state=inactive]:text-neutral-700",
11931
+ "data-[state=inactive]:hover:text-neutral-900",
11932
+ "disabled:cursor-not-allowed",
11933
+ "data-[state=active]disabled:text-neutral-400",
11934
+ "data-[state=inactive]:disabled:text-neutral-400",
11935
+ ],
11833
11936
  variants: {
11834
11937
  isFullWidth: {
11835
11938
  true: "w-full",
@@ -12064,8 +12167,11 @@ const Tabs = ({ children, forceRender, className, "data-testid": dataTestId, ful
12064
12167
  return (jsxRuntime.jsx(reactTabs.Root, { className: cvaTabsRoot({ className }), "data-testid": dataTestId, ref: ref, ...rest, children: children }));
12065
12168
  };
12066
12169
 
12067
- const cvaToggleGroup = cssClassVarianceUtilities.cvaMerge(["inline-flex", "p-0.5", "bg-neutral-200", "rounded-md", "gap-1", "relative"]);
12068
- const cvaToggleItem = cssClassVarianceUtilities.cvaMerge(["z-10", "group"], {
12170
+ const cvaToggleGroup = cssClassVarianceUtilities.cva({
12171
+ base: ["inline-flex", "p-0.5", "bg-neutral-200", "rounded-md", "gap-1", "relative"],
12172
+ });
12173
+ const cvaToggleItem = cssClassVarianceUtilities.cva({
12174
+ base: ["z-10", "group"],
12069
12175
  variants: {
12070
12176
  selected: {
12071
12177
  true: [],
@@ -12084,7 +12190,8 @@ const cvaToggleItem = cssClassVarianceUtilities.cvaMerge(["z-10", "group"], {
12084
12190
  },
12085
12191
  ],
12086
12192
  });
12087
- const cvaToggleGroupWithSlidingBackground = cssClassVarianceUtilities.cvaMerge([], {
12193
+ const cvaToggleGroupWithSlidingBackground = cssClassVarianceUtilities.cva({
12194
+ base: [],
12088
12195
  variants: {
12089
12196
  isMounted: {
12090
12197
  true: [
@@ -12105,7 +12212,8 @@ const cvaToggleGroupWithSlidingBackground = cssClassVarianceUtilities.cvaMerge([
12105
12212
  },
12106
12213
  },
12107
12214
  });
12108
- const cvaToggleItemText = cssClassVarianceUtilities.cvaMerge(["text-ellipsis", "truncate", "flex-grow", "font-medium"], {
12215
+ const cvaToggleItemText = cssClassVarianceUtilities.cva({
12216
+ base: ["text-ellipsis", "truncate", "flex-grow", "font-medium"],
12109
12217
  variants: {
12110
12218
  maxWidth: {
12111
12219
  sm: ["max-w-[80px]"],
@@ -12143,7 +12251,8 @@ const cvaToggleItemText = cssClassVarianceUtilities.cvaMerge(["text-ellipsis", "
12143
12251
  },
12144
12252
  ],
12145
12253
  });
12146
- const cvaToggleItemContent = cssClassVarianceUtilities.cvaMerge([], {
12254
+ const cvaToggleItemContent = cssClassVarianceUtilities.cva({
12255
+ base: [],
12147
12256
  variants: {
12148
12257
  selected: {
12149
12258
  true: [],
@@ -12297,7 +12406,8 @@ const ToggleButton = ({ title, size, children, "data-testid": dataTestId, classN
12297
12406
  return (jsxRuntime.jsx("button", { ...rest, className: tailwindMerge.twMerge("flex items-center justify-center gap-1 self-stretch", paddingClasses, className), "data-testid": dataTestId, title: isIconOnly ? title : undefined, type: "button", children: isIconOnly ? (icon) : (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [iconPrefix, children] })) }));
12298
12407
  };
12299
12408
 
12300
- const cvaSegmentedValueBar = cssClassVarianceUtilities.cvaMerge(["flex-1", "overflow-hidden", "rounded", "bg-neutral-100", "flex"], {
12409
+ const cvaSegmentedValueBar = cssClassVarianceUtilities.cva({
12410
+ base: ["flex-1", "overflow-hidden", "rounded", "bg-neutral-100", "flex"],
12301
12411
  variants: {
12302
12412
  size: {
12303
12413
  extraSmall: "h-1",
@@ -12309,7 +12419,8 @@ const cvaSegmentedValueBar = cssClassVarianceUtilities.cvaMerge(["flex-1", "over
12309
12419
  size: "small",
12310
12420
  },
12311
12421
  });
12312
- const cvaSegmentedValueBarText = cssClassVarianceUtilities.cvaMerge(["whitespace-nowrap", "tabular-nums", "shrink-0"], {
12422
+ const cvaSegmentedValueBarText = cssClassVarianceUtilities.cva({
12423
+ base: ["whitespace-nowrap", "tabular-nums", "shrink-0"],
12313
12424
  variants: {
12314
12425
  size: {
12315
12426
  small: "leading-xs text-xs font-medium text-neutral-600",