@maxsteinwender/sort-ui 1.0.3 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -238,17 +238,17 @@ var buttonVariants = cva(
238
238
  variants: {
239
239
  variant: {
240
240
  // Primary — Sort UI: bg/state/primary, text/white-default, icon/white-default
241
- default: "bg-sui-bg-state-primary text-sui-text-white-default [text-shadow:var(--shadow-text)] [&_i]:text-icon-white-default [&_i]:[text-shadow:none] [&_svg]:text-icon-white-default [&_svg]:[text-shadow:none] shadow-button-default active:shadow-button-press hover:bg-sui-bg-state-primary-hover active:bg-sui-bg-state-primary-press disabled:bg-sui-bg-state-disabled disabled:[text-shadow:none]",
241
+ default: "bg-sui-bg-state-primary text-sui-text-white-default [text-shadow:var(--shadow-text)] [&_i]:text-icon-white-default [&_i]:[text-shadow:none] [&_svg]:text-icon-white-default [&_svg]:[text-shadow:none] shadow-button-default active:shadow-button-press [@media(hover:hover)]:hover:bg-sui-bg-state-primary-hover active:bg-sui-bg-state-primary-press disabled:bg-sui-bg-state-disabled disabled:[text-shadow:none]",
242
242
  // Soft — Sort UI: bg/state/soft, text/subtle, icon/default-muted
243
- secondary: "bg-sui-bg-state-soft text-sui-text-subtle [&_i]:text-icon-default-muted [&_svg]:text-icon-default-muted hover:bg-sui-bg-state-soft-hover active:bg-sui-bg-state-soft-press disabled:bg-sui-bg-state-disabled",
243
+ secondary: "bg-sui-bg-state-soft text-sui-text-subtle [&_i]:text-icon-default-muted [&_svg]:text-icon-default-muted [@media(hover:hover)]:hover:bg-sui-bg-state-soft-hover active:bg-sui-bg-state-soft-press disabled:bg-sui-bg-state-disabled",
244
244
  // Secondary — Sort UI: bg/state/secondary, border/darker, text/default, icon/default-muted
245
- outline: "bg-sui-bg-state-secondary border border-sui-border-darker text-sui-text-default [&_i]:text-icon-default-muted [&_svg]:text-icon-default-muted shadow-button-secondary active:shadow-button-secondary-press hover:bg-sui-bg-state-secondary-hover active:bg-sui-bg-state-secondary-press disabled:bg-sui-bg-state-disabled disabled:border-sui-border-default",
245
+ outline: "bg-sui-bg-state-secondary border border-sui-border-darker text-sui-text-default [&_i]:text-icon-default-muted [&_svg]:text-icon-default-muted shadow-button-secondary active:shadow-button-secondary-press [@media(hover:hover)]:hover:bg-sui-bg-state-secondary-hover active:bg-sui-bg-state-secondary-press disabled:bg-sui-bg-state-disabled disabled:border-sui-border-default",
246
246
  // Ghost — Sort UI: bg/state/ghost, text/default, icon/default-muted
247
- ghost: "bg-sui-bg-state-ghost text-sui-text-default [&_i]:text-icon-default-muted [&_svg]:text-icon-default-muted hover:bg-sui-bg-state-ghost-hover active:bg-sui-bg-state-ghost-press",
247
+ ghost: "bg-sui-bg-state-ghost text-sui-text-default [&_i]:text-icon-default-muted [&_svg]:text-icon-default-muted [@media(hover:hover)]:hover:bg-sui-bg-state-ghost-hover active:bg-sui-bg-state-ghost-press",
248
248
  // Destructive — Sort UI: bg/state/destructive, text/white-default, icon/white-default
249
- destructive: "bg-sui-bg-state-destructive text-sui-text-white-default [text-shadow:var(--shadow-text)] [&_i]:text-icon-white-default [&_i]:[text-shadow:none] [&_svg]:text-icon-white-default [&_svg]:[text-shadow:none] shadow-button-default active:shadow-button-press hover:bg-sui-bg-state-destructive-hover active:bg-sui-bg-state-destructive-press disabled:bg-sui-bg-state-disabled disabled:[text-shadow:none]",
249
+ destructive: "bg-sui-bg-state-destructive text-sui-text-white-default [text-shadow:var(--shadow-text)] [&_i]:text-icon-white-default [&_i]:[text-shadow:none] [&_svg]:text-icon-white-default [&_svg]:[text-shadow:none] shadow-button-default active:shadow-button-press [@media(hover:hover)]:hover:bg-sui-bg-state-destructive-hover active:bg-sui-bg-state-destructive-press disabled:bg-sui-bg-state-disabled disabled:[text-shadow:none]",
250
250
  // Ghost Muted — Sort UI: bg/state/ghost, text/muted, icon/default-muted
251
- "ghost-muted": "bg-sui-bg-state-ghost text-sui-text-muted [&_i]:text-icon-default-muted [&_svg]:text-icon-default-muted hover:bg-sui-bg-state-ghost-hover active:bg-sui-bg-state-ghost-press"
251
+ "ghost-muted": "bg-sui-bg-state-ghost text-sui-text-muted [&_i]:text-icon-default-muted [&_svg]:text-icon-default-muted [@media(hover:hover)]:hover:bg-sui-bg-state-ghost-hover active:bg-sui-bg-state-ghost-press"
252
252
  },
253
253
  shape: {
254
254
  rounded: "rounded-md",
@@ -791,8 +791,10 @@ var Avatar = React77.forwardRef((_a, ref) => {
791
791
  ring = false,
792
792
  topBadge = false,
793
793
  topBadgeVariant = "verified",
794
+ topBadgeLabel,
794
795
  bottomBadge = false,
795
796
  bottomBadgeVariant = "online",
797
+ bottomBadgeLabel,
796
798
  color = "gray",
797
799
  children
798
800
  } = _b, props = __objRest(_b, [
@@ -805,8 +807,10 @@ var Avatar = React77.forwardRef((_a, ref) => {
805
807
  "ring",
806
808
  "topBadge",
807
809
  "topBadgeVariant",
810
+ "topBadgeLabel",
808
811
  "bottomBadge",
809
812
  "bottomBadgeVariant",
813
+ "bottomBadgeLabel",
810
814
  "color",
811
815
  "children"
812
816
  ]);
@@ -842,6 +846,11 @@ var Avatar = React77.forwardRef((_a, ref) => {
842
846
  })
843
847
  ) });
844
848
  }
849
+ const badgeLabelParts = [
850
+ topBadge && topBadgeLabel ? topBadgeLabel : null,
851
+ bottomBadge && bottomBadgeLabel ? bottomBadgeLabel : null
852
+ ].filter(Boolean);
853
+ const wrapperAriaLabel = badgeLabelParts.length > 0 ? [alt, badgeLabelParts.join(", ")].filter(Boolean).join(" \u2014 ") : alt || void 0;
845
854
  const offset = (_a2 = badgeOffset[resolvedSize]) != null ? _a2 : badgeOffset["md"];
846
855
  const topPositionClasses = `${offset.top} ${offset.right}`;
847
856
  const bottomPositionClasses = `${offset.bottom} ${offset.right}`;
@@ -854,7 +863,9 @@ var Avatar = React77.forwardRef((_a, ref) => {
854
863
  // Wrapper = avatar size (NOT ring size) — badges positioned relative to this
855
864
  avatarWrapperSize[resolvedSize],
856
865
  className
857
- )
866
+ ),
867
+ "aria-label": wrapperAriaLabel,
868
+ role: wrapperAriaLabel ? "img" : void 0
858
869
  }, props), {
859
870
  children: [
860
871
  ring && /* @__PURE__ */ jsx(
@@ -922,7 +933,7 @@ var Avatar = React77.forwardRef((_a, ref) => {
922
933
  })
923
934
  ) });
924
935
  });
925
- Avatar.displayName = AvatarPrimitive.Root.displayName;
936
+ Avatar.displayName = "Avatar";
926
937
  var AvatarImage = React77.forwardRef((_a, ref) => {
927
938
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
928
939
  return /* @__PURE__ */ jsx(
@@ -933,7 +944,7 @@ var AvatarImage = React77.forwardRef((_a, ref) => {
933
944
  }, props)
934
945
  );
935
946
  });
936
- AvatarImage.displayName = AvatarPrimitive.Image.displayName;
947
+ AvatarImage.displayName = "AvatarImage";
937
948
  var AvatarFallback = React77.forwardRef((_a, ref) => {
938
949
  var _b = _a, { className, fallback, children } = _b, props = __objRest(_b, ["className", "fallback", "children"]);
939
950
  var _a2, _b2, _c;
@@ -965,7 +976,7 @@ var AvatarFallback = React77.forwardRef((_a, ref) => {
965
976
  })
966
977
  );
967
978
  });
968
- AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
979
+ AvatarFallback.displayName = "AvatarFallback";
969
980
  var avatarButtonVariants = cva(
970
981
  "relative inline-flex items-center rounded-full whitespace-nowrap text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-sui-border-highlight focus-visible:ring-offset-[1px] focus-visible:ring-offset-sui-bg-default disabled:pointer-events-none after:absolute after:content-[''] after:inset-x-0",
971
982
  {
@@ -1291,6 +1302,7 @@ function Badge(_a) {
1291
1302
  shape = "rounded",
1292
1303
  variant = "label",
1293
1304
  src,
1305
+ icon,
1294
1306
  border = false,
1295
1307
  onClose,
1296
1308
  closeAsSpan = false,
@@ -1302,6 +1314,7 @@ function Badge(_a) {
1302
1314
  "shape",
1303
1315
  "variant",
1304
1316
  "src",
1317
+ "icon",
1305
1318
  "border",
1306
1319
  "onClose",
1307
1320
  "closeAsSpan",
@@ -1331,13 +1344,17 @@ function Badge(_a) {
1331
1344
  variant === "label" && // Inner frame: px-1 (4px) each side — same for lg and sm
1332
1345
  /* @__PURE__ */ jsx("span", { className: "px-1", children }),
1333
1346
  variant === "icon" && /* @__PURE__ */ jsxs(Fragment, { children: [
1334
- /* @__PURE__ */ jsx("span", { className: "flex size-4 shrink-0 items-center justify-center", children: /* @__PURE__ */ jsx(
1335
- "i",
1347
+ /* @__PURE__ */ jsx(
1348
+ "span",
1336
1349
  {
1337
- className: cn("ri-user-3-fill leading-none", iconFontSize[size]),
1338
- "aria-hidden": "true"
1350
+ className: cn(
1351
+ "flex size-4 shrink-0 items-center justify-center leading-none",
1352
+ iconFontSize[size]
1353
+ ),
1354
+ "aria-hidden": "true",
1355
+ children: icon != null ? icon : /* @__PURE__ */ jsx("i", { className: "ri-user-3-fill" })
1339
1356
  }
1340
- ) }),
1357
+ ),
1341
1358
  /* @__PURE__ */ jsx("span", { className: "pl-0.5 pr-1", children })
1342
1359
  ] }),
1343
1360
  variant === "image" && /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -1473,41 +1490,55 @@ var BreadcrumbEllipsis = (_a) => {
1473
1490
  );
1474
1491
  };
1475
1492
  BreadcrumbEllipsis.displayName = "BreadcrumbElipssis";
1493
+ var dividerVariants = cva(
1494
+ "flex size-5 shrink-0 items-center justify-center",
1495
+ {
1496
+ variants: {
1497
+ variant: {
1498
+ slash: "",
1499
+ arrow: "",
1500
+ dot: ""
1501
+ }
1502
+ },
1503
+ defaultVariants: {
1504
+ variant: "slash"
1505
+ }
1506
+ }
1507
+ );
1476
1508
  function BreadcrumbDivider({ variant }) {
1477
- return /* @__PURE__ */ jsxs("span", { className: "flex size-5 shrink-0 items-center justify-center", "aria-hidden": "true", children: [
1509
+ return /* @__PURE__ */ jsxs("span", { className: dividerVariants({ variant }), "aria-hidden": "true", children: [
1478
1510
  variant === "slash" && /* @__PURE__ */ jsx("span", { className: "text-sm font-medium leading-5 text-sui-text-hint", children: "/" }),
1479
1511
  variant === "arrow" && /* @__PURE__ */ jsx("i", { className: "ri-arrow-right-s-line text-xl leading-none text-sui-text-muted" }),
1480
1512
  variant === "dot" && /* @__PURE__ */ jsx("span", { className: "size-1 rounded-full bg-sui-text-muted" })
1481
1513
  ] });
1482
1514
  }
1483
- function SortBreadcrumb({
1484
- items,
1485
- variant = "slash",
1486
- className
1487
- }) {
1488
- return /* @__PURE__ */ jsx("nav", { "aria-label": "Breadcrumb", children: /* @__PURE__ */ jsx(
1489
- "ol",
1490
- {
1491
- className: cn(
1492
- "flex items-center gap-sui-2",
1493
- className
1494
- ),
1495
- children: items.map((item, index) => {
1496
- const isLast = index === items.length - 1;
1497
- return /* @__PURE__ */ jsxs(React77.Fragment, { children: [
1498
- /* @__PURE__ */ jsx("li", { className: "inline-flex", children: /* @__PURE__ */ jsx(
1499
- SortBreadcrumbItem,
1500
- __spreadProps(__spreadValues({}, item), {
1501
- state: isLast ? "current" : "default",
1502
- leadIcon: item.leadIcon
1503
- })
1504
- ) }),
1505
- !isLast && /* @__PURE__ */ jsx("li", { className: "inline-flex", role: "presentation", children: /* @__PURE__ */ jsx(BreadcrumbDivider, { variant }) })
1506
- ] }, index);
1507
- })
1508
- }
1509
- ) });
1510
- }
1515
+ var SortBreadcrumb = React77.forwardRef(
1516
+ ({ items, variant = "slash", className }, ref) => {
1517
+ return /* @__PURE__ */ jsx("nav", { ref, "aria-label": "Breadcrumb", children: /* @__PURE__ */ jsx(
1518
+ "ol",
1519
+ {
1520
+ className: cn(
1521
+ "flex items-center gap-sui-2",
1522
+ className
1523
+ ),
1524
+ children: items.map((item, index) => {
1525
+ const isLast = index === items.length - 1;
1526
+ return /* @__PURE__ */ jsxs(React77.Fragment, { children: [
1527
+ /* @__PURE__ */ jsx("li", { className: "inline-flex", children: /* @__PURE__ */ jsx(
1528
+ SortBreadcrumbItem,
1529
+ __spreadProps(__spreadValues({}, item), {
1530
+ state: isLast ? "current" : "default",
1531
+ leadIcon: item.leadIcon
1532
+ })
1533
+ ) }),
1534
+ !isLast && /* @__PURE__ */ jsx("li", { className: "inline-flex", role: "presentation", children: /* @__PURE__ */ jsx(BreadcrumbDivider, { variant }) })
1535
+ ] }, index);
1536
+ })
1537
+ }
1538
+ ) });
1539
+ }
1540
+ );
1541
+ SortBreadcrumb.displayName = "SortBreadcrumb";
1511
1542
  function SortBreadcrumbItem({
1512
1543
  label,
1513
1544
  href,
@@ -1684,6 +1715,7 @@ var ButtonGroupItem = React77.forwardRef(
1684
1715
  showSeparator = false,
1685
1716
  size = "lg",
1686
1717
  disabled = false,
1718
+ asChild = false,
1687
1719
  className
1688
1720
  } = _b, props = __objRest(_b, [
1689
1721
  "label",
@@ -1694,14 +1726,16 @@ var ButtonGroupItem = React77.forwardRef(
1694
1726
  "showSeparator",
1695
1727
  "size",
1696
1728
  "disabled",
1729
+ "asChild",
1697
1730
  "className"
1698
1731
  ]);
1699
1732
  const s = size != null ? size : "lg";
1733
+ const Comp = asChild ? Slot : "button";
1700
1734
  return /* @__PURE__ */ jsxs(
1701
- "button",
1735
+ Comp,
1702
1736
  __spreadProps(__spreadValues({
1703
1737
  ref,
1704
- type: "button",
1738
+ type: asChild ? void 0 : "button",
1705
1739
  disabled,
1706
1740
  className: cn(
1707
1741
  buttonGroupItemVariants({ size }),
@@ -1998,8 +2032,8 @@ var socialButtonVariants = cva(
1998
2032
  variants: {
1999
2033
  variant: {
2000
2034
  // --sb-bg is a runtime brand slot set via inline style — intentional, not a token violation
2001
- brand: "bg-[var(--sb-bg,var(--social-brand-default))] text-sui-text-white-default shadow-button-default active:shadow-button-press hover:bg-[color-mix(in_srgb,#fff_15%,var(--sb-bg,var(--social-brand-default)))] active:bg-[color-mix(in_srgb,#fff_25%,var(--sb-bg,var(--social-brand-default)))]",
2002
- secondary: "bg-sui-bg-default border border-sui-border-darker text-sui-text-default shadow-button-secondary active:shadow-button-secondary-press hover:bg-sui-bg-state-secondary-hover active:bg-sui-bg-state-secondary-press"
2035
+ brand: "bg-[var(--sb-bg,var(--social-brand-default))] text-sui-text-white-default shadow-button-default active:shadow-button-press [@media(hover:hover)]:hover:bg-[color-mix(in_srgb,#fff_15%,var(--sb-bg,var(--social-brand-default)))] active:bg-[color-mix(in_srgb,#fff_25%,var(--sb-bg,var(--social-brand-default)))]",
2036
+ secondary: "bg-sui-bg-state-secondary border border-sui-border-darker text-sui-text-default shadow-button-secondary active:shadow-button-secondary-press [@media(hover:hover)]:hover:bg-sui-bg-state-secondary-hover active:bg-sui-bg-state-secondary-press"
2003
2037
  },
2004
2038
  shape: {
2005
2039
  rounded: "rounded-md",
@@ -3026,25 +3060,25 @@ var unselectedStyles = {
3026
3060
  default: [
3027
3061
  "bg-sui-bg-state-secondary border-sui-border-darker text-sui-text-muted",
3028
3062
  "[&_i]:text-icon-default-muted",
3029
- "hover:bg-sui-bg-state-secondary-hover hover:text-sui-text-subtle hover:[&_i]:text-icon-default-subtle",
3063
+ "[@media(hover:hover)]:hover:bg-sui-bg-state-secondary-hover [@media(hover:hover)]:hover:text-sui-text-subtle [@media(hover:hover)]:hover:[&_i]:text-icon-default-subtle",
3030
3064
  "active:bg-sui-bg-state-secondary-press active:text-sui-text-subtle active:[&_i]:text-icon-default-subtle"
3031
3065
  ].join(" "),
3032
3066
  soft: [
3033
3067
  "bg-sui-bg-state-soft text-sui-text-muted",
3034
3068
  "[&_i]:text-icon-default-muted",
3035
- "hover:bg-sui-bg-state-soft-hover hover:text-sui-text-subtle hover:[&_i]:text-icon-default-subtle",
3069
+ "[@media(hover:hover)]:hover:bg-sui-bg-state-soft-hover [@media(hover:hover)]:hover:text-sui-text-subtle [@media(hover:hover)]:hover:[&_i]:text-icon-default-subtle",
3036
3070
  "active:bg-sui-bg-state-soft-press active:text-sui-text-subtle active:[&_i]:text-icon-default-subtle"
3037
3071
  ].join(" "),
3038
3072
  ghost: [
3039
3073
  "bg-sui-bg-state-ghost text-sui-text-muted",
3040
3074
  "[&_i]:text-icon-default-muted",
3041
- "hover:bg-sui-bg-state-ghost-hover hover:text-sui-text-subtle hover:[&_i]:text-icon-default-subtle",
3075
+ "[@media(hover:hover)]:hover:bg-sui-bg-state-ghost-hover [@media(hover:hover)]:hover:text-sui-text-subtle [@media(hover:hover)]:hover:[&_i]:text-icon-default-subtle",
3042
3076
  "active:bg-sui-bg-state-ghost-press active:text-sui-text-subtle active:[&_i]:text-icon-default-subtle"
3043
3077
  ].join(" "),
3044
3078
  "ghost-muted": [
3045
3079
  "bg-sui-bg-state-ghost text-sui-text-muted",
3046
3080
  "[&_i]:text-icon-default-muted",
3047
- "hover:bg-sui-bg-state-ghost-hover hover:text-sui-text-subtle hover:[&_i]:text-icon-default-subtle",
3081
+ "[@media(hover:hover)]:hover:bg-sui-bg-state-ghost-hover [@media(hover:hover)]:hover:text-sui-text-subtle [@media(hover:hover)]:hover:[&_i]:text-icon-default-subtle",
3048
3082
  "active:bg-sui-bg-state-ghost-press active:text-sui-text-subtle active:[&_i]:text-icon-default-subtle"
3049
3083
  ].join(" ")
3050
3084
  };
@@ -3177,7 +3211,16 @@ var Chip = React77.forwardRef(
3177
3211
  )
3178
3212
  }), props), {
3179
3213
  children: [
3180
- (leadIcon || iconOnly) && /* @__PURE__ */ jsx("i", { className: iconName, "aria-hidden": "true" }),
3214
+ (leadIcon || iconOnly) && /* @__PURE__ */ jsx(
3215
+ "i",
3216
+ {
3217
+ className: cn(
3218
+ iconName,
3219
+ selected && iconOnly && v === "ghost-muted" && "text-icon-default"
3220
+ ),
3221
+ "aria-hidden": "true"
3222
+ }
3223
+ ),
3181
3224
  !iconOnly && /* @__PURE__ */ jsx("span", { className: cn("px-sui-2", labelClasses2[s]), children: label })
3182
3225
  ]
3183
3226
  })
@@ -5452,7 +5495,7 @@ function DatePickerInput({
5452
5495
  ] });
5453
5496
  }
5454
5497
  DatePickerInput.displayName = "DatePickerInput";
5455
- var dividerVariants = cva("flex w-full items-center", {
5498
+ var dividerVariants2 = cva("flex w-full items-center", {
5456
5499
  variants: {
5457
5500
  type: {
5458
5501
  default: "gap-0",
@@ -5513,7 +5556,7 @@ var Divider = React77.forwardRef(
5513
5556
  ref,
5514
5557
  role: "separator",
5515
5558
  "aria-orientation": "horizontal",
5516
- className: cn(dividerVariants({ type }), className)
5559
+ className: cn(dividerVariants2({ type }), className)
5517
5560
  }, props), {
5518
5561
  children: [
5519
5562
  showLeftLine && /* @__PURE__ */ jsx("div", { className: lineClasses }),
@@ -7889,7 +7932,7 @@ var pageItemVariants = cva(
7889
7932
  // Default state
7890
7933
  "bg-sui-bg-state-ghost text-sui-text-hint",
7891
7934
  // Hover state
7892
- "hover:bg-sui-bg-state-ghost-hover hover:text-sui-text-muted",
7935
+ "[@media(hover:hover)]:hover:bg-sui-bg-state-ghost-hover [@media(hover:hover)]:hover:text-sui-text-muted",
7893
7936
  // Disabled state
7894
7937
  "disabled:bg-sui-bg-state-ghost disabled:text-sui-text-hint"
7895
7938
  ].join(" "),
@@ -7900,7 +7943,7 @@ var pageItemVariants = cva(
7900
7943
  // Default state
7901
7944
  "bg-sui-bg-state-soft",
7902
7945
  // Hover state (soft-hover too subtle for small dots, use stronger token)
7903
- "hover:bg-sui-bg-state-soft-hover",
7946
+ "[@media(hover:hover)]:hover:bg-sui-bg-state-soft-hover",
7904
7947
  // Disabled state
7905
7948
  "disabled:bg-sui-bg-state-disabled"
7906
7949
  ].join(" ")
@@ -7916,17 +7959,18 @@ var activeDefaultClasses = [
7916
7959
  // Blue text/border: uses bg-basic-blue tokens because text-informative shifts to orange in Theme 2
7917
7960
  "text-sui-bg-basic-blue-strong",
7918
7961
  "border border-sui-bg-basic-blue-accent",
7919
- "hover:bg-sui-bg-state-ghost hover:text-sui-bg-basic-blue-strong"
7962
+ "[@media(hover:hover)]:hover:bg-sui-bg-state-ghost [@media(hover:hover)]:hover:text-sui-bg-basic-blue-strong"
7920
7963
  ].join(" ");
7921
7964
  var activeDotClasses = [
7922
7965
  "bg-sui-bg-basic-blue-accent",
7923
- "hover:bg-sui-bg-basic-blue-accent"
7966
+ "[@media(hover:hover)]:hover:bg-sui-bg-basic-blue-accent"
7924
7967
  ].join(" ");
7925
7968
  var PageItem = React77.forwardRef(
7926
7969
  (_a, ref) => {
7927
- var _b = _a, { className, variant = "default", active = false, label = "0", disabled } = _b, props = __objRest(_b, ["className", "variant", "active", "label", "disabled"]);
7970
+ var _b = _a, { className, variant = "default", active = false, label = "0", disabled, asChild = false } = _b, props = __objRest(_b, ["className", "variant", "active", "label", "disabled", "asChild"]);
7971
+ const Comp = asChild ? Slot : "button";
7928
7972
  return /* @__PURE__ */ jsx(
7929
- "button",
7973
+ Comp,
7930
7974
  __spreadProps(__spreadValues({
7931
7975
  ref,
7932
7976
  disabled,
@@ -8595,6 +8639,7 @@ var RadioButtonCard = React77.forwardRef(
8595
8639
  variant = "default",
8596
8640
  radioPosition = "off",
8597
8641
  layout = "horizontal",
8642
+ icon,
8598
8643
  value,
8599
8644
  disabled = false,
8600
8645
  className
@@ -8647,6 +8692,17 @@ var RadioButtonCard = React77.forwardRef(
8647
8692
  "flex flex-col gap-1 text-left",
8648
8693
  isHorizontal ? "flex-1 min-w-0" : "w-full"
8649
8694
  ), children: [
8695
+ icon && /* @__PURE__ */ jsx(
8696
+ "span",
8697
+ {
8698
+ className: cn(
8699
+ "flex size-4 shrink-0 items-center leading-none text-base",
8700
+ disabled ? "text-sui-text-hint" : "text-icon-default-subtle"
8701
+ ),
8702
+ "aria-hidden": "true",
8703
+ children: icon
8704
+ }
8705
+ ),
8650
8706
  /* @__PURE__ */ jsx("span", { id: titleId, className: titleClass, children: title }),
8651
8707
  description && /* @__PURE__ */ jsx("span", { id: descriptionId, className: descriptionClass, children: description })
8652
8708
  ] }),
@@ -10537,7 +10593,7 @@ var interactiveBase = [
10537
10593
  "flex items-center rounded-sm",
10538
10594
  "transition-colors cursor-pointer",
10539
10595
  "bg-sui-bg-state-ghost",
10540
- "hover:bg-sui-bg-state-ghost-hover active:bg-sui-bg-state-ghost-press",
10596
+ "[@media(hover:hover)]:hover:bg-sui-bg-state-ghost-hover active:bg-sui-bg-state-ghost-press",
10541
10597
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sui-border-highlight focus-visible:ring-offset-2 focus-visible:ring-offset-sui-bg-default"
10542
10598
  ];
10543
10599
  var sidebarMenuItemVariants = cva("", {
@@ -10623,7 +10679,7 @@ var SidebarMenuItem2 = React77.forwardRef(
10623
10679
  }
10624
10680
  );
10625
10681
  }
10626
- const activeClasses = active ? "bg-sui-bg-state-soft hover:bg-sui-bg-state-soft-hover active:bg-sui-bg-state-soft-press" : "";
10682
+ const activeClasses = active ? "bg-sui-bg-state-soft [@media(hover:hover)]:hover:bg-sui-bg-state-soft-hover active:bg-sui-bg-state-soft-press" : "";
10627
10683
  const labelColorClass = active ? "text-sui-text-default" : "text-sui-text-subtle";
10628
10684
  if (variant === "collapsed") {
10629
10685
  const button = /* @__PURE__ */ jsx(
@@ -13465,4 +13521,4 @@ var VerticalStepper = React77.forwardRef(
13465
13521
  );
13466
13522
  VerticalStepper.displayName = "VerticalStepper";
13467
13523
 
13468
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, Avatar, AvatarButton, AvatarFallback, AvatarGroup, AvatarImage, AvatarUpload, Badge, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupItem, Calendar, CalendarDayButton, Card, CardContent, CardCover, CardDescription, CardFooter, CardHeader, CardTitle, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, CheckboxCard, CheckboxList, CheckboxWithText, Chip, CodeBlock, Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ControlButton, DataRangeSlider, DataRangeSliderInput, DatePicker, DatePickerInput, DatePickerWithPresets, DateRangePicker, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Divider, DropdownMenu, DropdownMenuCaption, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuLargeItem, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, DropdownMenuUserbar, EmptyState, FileUpload, FileUploadArea, FileUploadCard, FilterButton, GridTableCell, GridTableHeaderItem, GridTableRow, GridTableSlotItem, HorizontalStepper, HorizontalStepperItem, InlineTips, Input, InputButton, InputCaption, InputField, InputStepper, Label, LinkButton, MenuSearchInput, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, PageItem, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Paginator, Popover, PopoverContent, PopoverTrigger, Progress, ProgressBar, RadialProgressBar, RadioButton, RadioButtonCard, RadioButtonList, RadioButtonWithText, RadioCardGroup, RadioGroup2 as RadioGroup, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectInput, SelectItem, SelectLabel, SelectMenu, SelectMenuDescription, SelectMenuFooterButton, SelectMenuItem, SelectMenuLabel, SelectMenuLargeItem, SelectMenuSeparator, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator3 as Separator, Toaster2 as ShadcnToaster, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Sidebar, SidebarCard, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem2 as SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Slider, SliderHandle, SliderInput, SliderRange, SliderRangeInput, SocialButton, SortBreadcrumb, SortBreadcrumbItem, StatusBadge, StepperIcon, StepperNumber, Switch, SwitchList, SwitchWithText, TabItem, TabList, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableHeaderItem, TableItem, TablePagination, TableRow, TableRowSort, TableSkeletonRow, Tabs, TabsContent, TabsList, TabsTrigger, TextAreaField, Textarea, Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip2 as Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, UnderlineTabItem, UnderlineTabsList, Userbar, VerticalStepper, VerticalStepperItem, accordionItemVariants, avatarButtonVariants, avatarVariants, buttonGroupItemVariants, buttonVariants, cardVariants, checkboxCardVariants, checkboxVariants, checkboxWithTextVariants, chipVariants, controlButtonVariants, datePickerInputContainerVariants, dividerVariants, emptyStateVariants, extractInitials, fileUploadCardVariants, filterButtonVariants, formatBytes, gridTableHeaderItemVariants, gridTableRowVariants, gridTableSlotItemVariants, horizontalStepperItemVariants, inlineTipsVariants, inputButtonVariants, inputContainerVariants, lineVariants, linkButtonVariants, navigationMenuTriggerStyle, pageItemVariants, progressBarVariants, radialProgressBarVariants, radioButtonCardVariants, radioButtonVariants, radioButtonWithTextVariants, sidebarCardVariants, sidebarMenuItemVariants, sliderHandleVariants, socialButtonVariants, stepperIconVariants, stepperNumberVariants, tabItemVariants, tabListVariants, tableHeaderItemVariants, tableItemVariants, tableRowSortVariants, textAreaContainerVariants, toggleVariants, tooltipContentVariants, underlineTabItemVariants, underlineTabsListVariants, useSidebar, userbarVariants, validateFile };
13524
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, Avatar, AvatarButton, AvatarFallback, AvatarGroup, AvatarImage, AvatarUpload, Badge, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupItem, Calendar, CalendarDayButton, Card, CardContent, CardCover, CardDescription, CardFooter, CardHeader, CardTitle, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, CheckboxCard, CheckboxList, CheckboxWithText, Chip, CodeBlock, Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ControlButton, DataRangeSlider, DataRangeSliderInput, DatePicker, DatePickerInput, DatePickerWithPresets, DateRangePicker, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Divider, DropdownMenu, DropdownMenuCaption, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuLargeItem, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, DropdownMenuUserbar, EmptyState, FileUpload, FileUploadArea, FileUploadCard, FilterButton, GridTableCell, GridTableHeaderItem, GridTableRow, GridTableSlotItem, HorizontalStepper, HorizontalStepperItem, InlineTips, Input, InputButton, InputCaption, InputField, InputStepper, Label, LinkButton, MenuSearchInput, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, PageItem, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Paginator, Popover, PopoverContent, PopoverTrigger, Progress, ProgressBar, RadialProgressBar, RadioButton, RadioButtonCard, RadioButtonList, RadioButtonWithText, RadioCardGroup, RadioGroup2 as RadioGroup, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectInput, SelectItem, SelectLabel, SelectMenu, SelectMenuDescription, SelectMenuFooterButton, SelectMenuItem, SelectMenuLabel, SelectMenuLargeItem, SelectMenuSeparator, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator3 as Separator, Toaster2 as ShadcnToaster, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Sidebar, SidebarCard, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem2 as SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Slider, SliderHandle, SliderInput, SliderRange, SliderRangeInput, SocialButton, SortBreadcrumb, SortBreadcrumbItem, StatusBadge, StepperIcon, StepperNumber, Switch, SwitchList, SwitchWithText, TabItem, TabList, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableHeaderItem, TableItem, TablePagination, TableRow, TableRowSort, TableSkeletonRow, Tabs, TabsContent, TabsList, TabsTrigger, TextAreaField, Textarea, Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip2 as Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, UnderlineTabItem, UnderlineTabsList, Userbar, VerticalStepper, VerticalStepperItem, accordionItemVariants, avatarButtonVariants, avatarVariants, buttonGroupItemVariants, buttonVariants, cardVariants, checkboxCardVariants, checkboxVariants, checkboxWithTextVariants, chipVariants, controlButtonVariants, datePickerInputContainerVariants, dividerVariants2 as dividerVariants, emptyStateVariants, extractInitials, fileUploadCardVariants, filterButtonVariants, formatBytes, gridTableHeaderItemVariants, gridTableRowVariants, gridTableSlotItemVariants, horizontalStepperItemVariants, inlineTipsVariants, inputButtonVariants, inputContainerVariants, lineVariants, linkButtonVariants, navigationMenuTriggerStyle, pageItemVariants, progressBarVariants, radialProgressBarVariants, radioButtonCardVariants, radioButtonVariants, radioButtonWithTextVariants, sidebarCardVariants, sidebarMenuItemVariants, sliderHandleVariants, socialButtonVariants, stepperIconVariants, stepperNumberVariants, tabItemVariants, tabListVariants, tableHeaderItemVariants, tableItemVariants, tableRowSortVariants, textAreaContainerVariants, toggleVariants, tooltipContentVariants, underlineTabItemVariants, underlineTabsListVariants, useSidebar, userbarVariants, validateFile };