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