@designa8/vibedesign-stripe-deepseek-85ea 0.2.3 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -103,7 +103,8 @@ var ICON_REGISTRY = {
103
103
  "grip-vertical": { viewBox: "0 0 24 24", nodes: [{ tag: "circle", cx: "9", cy: "12", r: "1" }, { tag: "circle", cx: "9", cy: "5", r: "1" }, { tag: "circle", cx: "9", cy: "19", r: "1" }, { tag: "circle", cx: "15", cy: "12", r: "1" }, { tag: "circle", cx: "15", cy: "5", r: "1" }, { tag: "circle", cx: "15", cy: "19", r: "1" }] },
104
104
  "euro": { viewBox: "0 0 24 24", nodes: [{ tag: "path", d: "M4 10h12" }, { tag: "path", d: "M4 14h9" }, { tag: "path", d: "M19 6a7.7 7.7 0 0 0-5.2-2A7.9 7.9 0 0 0 6 12c0 4.4 3.5 8 7.8 8 2 0 3.8-.8 5.2-2" }] },
105
105
  "square": { viewBox: "0 0 24 24", nodes: [{ tag: "rect", width: "18", height: "18", x: "3", y: "3", rx: "2" }] },
106
- "eye-off": { viewBox: "0 0 24 24", nodes: [{ tag: "path", d: "M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49" }, { tag: "path", d: "M14.084 14.158a3 3 0 0 1-4.242-4.242" }, { tag: "path", d: "M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143" }, { tag: "path", d: "m2 2 20 20" }] }
106
+ "eye-off": { viewBox: "0 0 24 24", nodes: [{ tag: "path", d: "M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49" }, { tag: "path", d: "M14.084 14.158a3 3 0 0 1-4.242-4.242" }, { tag: "path", d: "M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143" }, { tag: "path", d: "m2 2 20 20" }] },
107
+ "chart-column": { viewBox: "0 0 24 24", nodes: [{ tag: "path", d: "M3 3v16a2 2 0 0 0 2 2h16" }, { tag: "path", d: "M18 17V9" }, { tag: "path", d: "M13 17V5" }, { tag: "path", d: "M8 17v-3" }] }
107
108
  };
108
109
 
109
110
  // virtual-pkg:src/atoms/Icon/Icon.tsx
@@ -4895,6 +4896,7 @@ function DataTableDesktopInner(props, ref) {
4895
4896
  onFilterChange,
4896
4897
  filterBy,
4897
4898
  searchPlaceholder,
4899
+ searchable = true,
4898
4900
  query,
4899
4901
  onQueryChange,
4900
4902
  searchBy,
@@ -5058,6 +5060,7 @@ function DataTableDesktopInner(props, ref) {
5058
5060
  const headCell = HEAD_CELL;
5059
5061
  const bodyCell = dense ? "px-sm py-sm align-middle text-body-sm" : "px-sm py-md align-middle";
5060
5062
  const rangeTriggerLabel = activeRange?.detail ?? activeRange?.label ?? "";
5063
+ const showToolRow = searchable || activeFilters.length > 0 || Boolean(activeRange) || Boolean(toolbar);
5061
5064
  return /* @__PURE__ */ jsxs26(
5062
5065
  "div",
5063
5066
  {
@@ -5073,8 +5076,8 @@ function DataTableDesktopInner(props, ref) {
5073
5076
  title ? /* @__PURE__ */ jsx29("p", { className: "text-body-lg text-ink", children: title }) : null,
5074
5077
  description ? /* @__PURE__ */ jsx29("p", { className: "text-body-sm text-muted", children: description }) : null
5075
5078
  ] }) : null,
5076
- /* @__PURE__ */ jsxs26("div", { className: "flex flex-wrap items-center gap-sm", children: [
5077
- /* @__PURE__ */ jsx29("div", { className: "w-full shrink-0 sm:w-64", children: /* @__PURE__ */ jsx29(
5079
+ showToolRow ? /* @__PURE__ */ jsxs26("div", { className: "flex flex-wrap items-center gap-sm", children: [
5080
+ searchable ? /* @__PURE__ */ jsx29("div", { className: "w-full shrink-0 sm:w-64", children: /* @__PURE__ */ jsx29(
5078
5081
  Input,
5079
5082
  {
5080
5083
  size: "md",
@@ -5085,7 +5088,7 @@ function DataTableDesktopInner(props, ref) {
5085
5088
  placeholder: searchPlaceholder ?? "Search",
5086
5089
  leading: /* @__PURE__ */ jsx29(Icon, { name: "search", size: 16, strokeWidth: 2, tone: "default" })
5087
5090
  }
5088
- ) }),
5091
+ ) }) : null,
5089
5092
  activeFilters.length > 0 ? /* @__PURE__ */ jsx29("div", { className: "flex flex-wrap items-center gap-xs", children: activeFilters.map((item) => /* @__PURE__ */ jsxs26(
5090
5093
  Chip,
5091
5094
  {
@@ -5141,7 +5144,7 @@ function DataTableDesktopInner(props, ref) {
5141
5144
  }
5142
5145
  ) }) : null,
5143
5146
  toolbar ? /* @__PURE__ */ jsx29("div", { className: "ml-auto flex shrink-0 items-center gap-xs", children: toolbar }) : null
5144
- ] })
5147
+ ] }) : null
5145
5148
  ] }),
5146
5149
  activeRange && typeof document !== "undefined" ? createPortal5(
5147
5150
  /* @__PURE__ */ jsx29(
@@ -5567,6 +5570,7 @@ function DataTableMobileInner(props, ref) {
5567
5570
  onFilterChange,
5568
5571
  filterBy,
5569
5572
  searchPlaceholder,
5573
+ searchable = true,
5570
5574
  query,
5571
5575
  onQueryChange,
5572
5576
  searchBy,
@@ -5653,6 +5657,10 @@ function DataTableMobileInner(props, ref) {
5653
5657
  const subtitleText = activeSpec?.subtitle;
5654
5658
  const trailingText = activeSpec?.trailing;
5655
5659
  const metaText = activeSpec?.meta;
5660
+ const hasRanges = Boolean(ranges && ranges.length > 0);
5661
+ const hasHeader = Boolean(
5662
+ title || description || searchable || activeFilters.length > 0 || hasRanges || toolbar
5663
+ );
5656
5664
  return /* @__PURE__ */ jsxs27(
5657
5665
  "div",
5658
5666
  {
@@ -5663,12 +5671,12 @@ function DataTableMobileInner(props, ref) {
5663
5671
  ),
5664
5672
  ...rest,
5665
5673
  children: [
5666
- /* @__PURE__ */ jsxs27("div", { className: "flex w-full flex-col gap-base px-lg pt-lg pb-base", children: [
5674
+ hasHeader ? /* @__PURE__ */ jsxs27("div", { className: "flex w-full flex-col gap-base px-lg pt-lg pb-base", children: [
5667
5675
  title || description ? /* @__PURE__ */ jsxs27("div", { className: "flex flex-col gap-xs", children: [
5668
5676
  title ? /* @__PURE__ */ jsx30("p", { className: "text-body-lg text-ink", children: title }) : null,
5669
5677
  description ? /* @__PURE__ */ jsx30("p", { className: "text-body-sm text-muted", children: description }) : null
5670
5678
  ] }) : null,
5671
- /* @__PURE__ */ jsx30(
5679
+ searchable ? /* @__PURE__ */ jsx30(
5672
5680
  "div",
5673
5681
  {
5674
5682
  className: cn24(
@@ -5693,7 +5701,7 @@ function DataTableMobileInner(props, ref) {
5693
5701
  }
5694
5702
  )
5695
5703
  }
5696
- ),
5704
+ ) : null,
5697
5705
  activeFilters.length > 0 ? /* @__PURE__ */ jsx30("div", { className: "flex flex-wrap items-center gap-xs", children: activeFilters.map((item) => /* @__PURE__ */ jsxs27(
5698
5706
  Chip,
5699
5707
  {
@@ -5708,7 +5716,7 @@ function DataTableMobileInner(props, ref) {
5708
5716
  },
5709
5717
  item.value
5710
5718
  )) }) : null,
5711
- ranges && ranges.length > 0 ? /* @__PURE__ */ jsx30("div", { className: "flex flex-wrap items-center gap-base", children: /* @__PURE__ */ jsx30(
5719
+ hasRanges && ranges ? /* @__PURE__ */ jsx30("div", { className: "flex flex-wrap items-center gap-base", children: /* @__PURE__ */ jsx30(
5712
5720
  FilterPill,
5713
5721
  {
5714
5722
  menuLabel: "Date range",
@@ -5721,7 +5729,7 @@ function DataTableMobileInner(props, ref) {
5721
5729
  }
5722
5730
  ) }) : null,
5723
5731
  toolbar ? /* @__PURE__ */ jsx30("div", { className: "flex flex-wrap items-center gap-xs", children: toolbar }) : null
5724
- ] }),
5732
+ ] }) : null,
5725
5733
  bulkActions && selected.length > 0 ? /* @__PURE__ */ jsxs27("div", { className: "flex flex-wrap items-center gap-sm border-t border-hairline bg-surface-soft px-lg py-sm", children: [
5726
5734
  /* @__PURE__ */ jsxs27("span", { className: "text-body-sm text-ink", children: [
5727
5735
  selected.length,
@@ -5876,6 +5884,7 @@ function DataTableInner(props, ref) {
5876
5884
  onFilterChange,
5877
5885
  filterBy,
5878
5886
  searchPlaceholder,
5887
+ searchable,
5879
5888
  query,
5880
5889
  onQueryChange,
5881
5890
  searchBy,
@@ -5937,6 +5946,7 @@ function DataTableInner(props, ref) {
5937
5946
  onFilterChange: handleFilter,
5938
5947
  filterBy,
5939
5948
  searchPlaceholder,
5949
+ searchable,
5940
5950
  query: activeQuery,
5941
5951
  onQueryChange: handleQuery,
5942
5952
  searchBy,
@@ -11671,20 +11681,75 @@ var Pagination = React59.forwardRef(
11671
11681
  );
11672
11682
  Pagination.displayName = "Pagination";
11673
11683
 
11684
+ // virtual-pkg:src/atoms/Panel/Panel.tsx
11685
+ import * as React60 from "react";
11686
+ import { jsx as jsx60, jsxs as jsxs57 } from "react/jsx-runtime";
11687
+ var cn51 = (...values) => values.filter(Boolean).join(" ");
11688
+ var Panel = React60.forwardRef(
11689
+ ({
11690
+ title,
11691
+ meta,
11692
+ actions,
11693
+ headingLevel = 2,
11694
+ id,
11695
+ children,
11696
+ className,
11697
+ ...rest
11698
+ }, ref) => {
11699
+ const generatedId = React60.useId();
11700
+ const baseId = id ?? generatedId;
11701
+ const titleId = `${baseId}-title`;
11702
+ const Heading = headingLevel === 3 ? "h3" : "h2";
11703
+ const hasTrailing = Boolean(meta) || Boolean(actions);
11704
+ return /* @__PURE__ */ jsxs57(
11705
+ "section",
11706
+ {
11707
+ ref,
11708
+ id,
11709
+ "aria-labelledby": titleId,
11710
+ className: cn51(
11711
+ "w-full min-w-0 overflow-hidden rounded-xl border border-hairline",
11712
+ "bg-surface p-xl shadow-card",
11713
+ className
11714
+ ),
11715
+ ...rest,
11716
+ children: [
11717
+ /* @__PURE__ */ jsxs57("div", { className: "mb-lg flex min-w-0 flex-wrap items-center justify-between gap-x-md gap-y-sm", children: [
11718
+ /* @__PURE__ */ jsx60(
11719
+ Heading,
11720
+ {
11721
+ id: titleId,
11722
+ className: "min-w-0 truncate text-heading-sm text-ink",
11723
+ children: title
11724
+ }
11725
+ ),
11726
+ hasTrailing ? /* @__PURE__ */ jsxs57("div", { className: "ml-auto flex shrink-0 items-center gap-md", children: [
11727
+ meta ? /* @__PURE__ */ jsx60("span", { className: "whitespace-nowrap text-caption text-muted", children: meta }) : null,
11728
+ actions
11729
+ ] }) : null
11730
+ ] }),
11731
+ /* @__PURE__ */ jsx60("div", { className: "flex min-w-0 flex-col gap-md", children })
11732
+ ]
11733
+ }
11734
+ );
11735
+ }
11736
+ );
11737
+ Panel.displayName = "Panel";
11738
+
11674
11739
  // virtual-pkg:src/atoms/PaymentRoutingCanvas/PaymentRoutingCanvas.tsx
11675
- import * as React63 from "react";
11740
+ import * as React64 from "react";
11676
11741
  import * as ReactDOM10 from "react-dom";
11677
11742
 
11678
11743
  // virtual-pkg:src/atoms/RoutingEdge/RoutingEdge.tsx
11679
- import * as React60 from "react";
11680
- import { jsx as jsx60, jsxs as jsxs57 } from "react/jsx-runtime";
11681
- var cn51 = (...values) => values.filter(Boolean).join(" ");
11744
+ import * as React61 from "react";
11745
+ import { jsx as jsx61, jsxs as jsxs58 } from "react/jsx-runtime";
11746
+ var cn52 = (...values) => values.filter(Boolean).join(" ");
11682
11747
  var toneColor = {
11683
11748
  primary: "var(--color-primary)",
11684
11749
  medium: "var(--color-hairline-strong)",
11685
11750
  light: "var(--color-hairline)"
11686
11751
  };
11687
- var RoutingEdge = React60.forwardRef(
11752
+ var RoutingEdge = React61.forwardRef(
11688
11753
  ({
11689
11754
  from,
11690
11755
  to,
@@ -11706,11 +11771,11 @@ var RoutingEdge = React60.forwardRef(
11706
11771
  const gap = Math.abs(to.y - from.y);
11707
11772
  const fill = (axis) => dashed || isUnreachable ? `repeating-linear-gradient(${axis === "x" ? "90deg" : "180deg"}, ${color} 0 var(--spacing-xs), transparent var(--spacing-xs) var(--spacing-sm))` : color;
11708
11773
  const segment = "absolute rounded-full transition-all duration-200 ease-out";
11709
- return /* @__PURE__ */ jsxs57(
11774
+ return /* @__PURE__ */ jsxs58(
11710
11775
  "div",
11711
11776
  {
11712
11777
  ref,
11713
- className: cn51(
11778
+ className: cn52(
11714
11779
  "pointer-events-none absolute inset-0",
11715
11780
  isDimmed ? "opacity-50" : "opacity-100",
11716
11781
  "transition-opacity duration-200 ease-out",
@@ -11720,7 +11785,7 @@ var RoutingEdge = React60.forwardRef(
11720
11785
  "data-edge-state": state,
11721
11786
  ...rest,
11722
11787
  children: [
11723
- /* @__PURE__ */ jsx60(
11788
+ /* @__PURE__ */ jsx61(
11724
11789
  "span",
11725
11790
  {
11726
11791
  "aria-hidden": "true",
@@ -11734,7 +11799,7 @@ var RoutingEdge = React60.forwardRef(
11734
11799
  }
11735
11800
  }
11736
11801
  ),
11737
- gap > 0 ? /* @__PURE__ */ jsx60(
11802
+ gap > 0 ? /* @__PURE__ */ jsx61(
11738
11803
  "span",
11739
11804
  {
11740
11805
  "aria-hidden": "true",
@@ -11748,7 +11813,7 @@ var RoutingEdge = React60.forwardRef(
11748
11813
  }
11749
11814
  }
11750
11815
  ) : null,
11751
- /* @__PURE__ */ jsx60(
11816
+ /* @__PURE__ */ jsx61(
11752
11817
  "span",
11753
11818
  {
11754
11819
  "aria-hidden": "true",
@@ -11762,10 +11827,10 @@ var RoutingEdge = React60.forwardRef(
11762
11827
  }
11763
11828
  }
11764
11829
  ),
11765
- label ? /* @__PURE__ */ jsx60(
11830
+ label ? /* @__PURE__ */ jsx61(
11766
11831
  "span",
11767
11832
  {
11768
- className: cn51(
11833
+ className: cn52(
11769
11834
  "absolute -translate-x-1/2 -translate-y-1/2 whitespace-nowrap rounded-sm border px-xs py-xxs",
11770
11835
  "text-caption transition duration-200 ease-out",
11771
11836
  isActive ? "border-transparent bg-primary text-on-primary shadow-sm" : isUnreachable ? "border-semantic-error/40 bg-surface text-semantic-error" : "border-hairline-soft bg-surface text-muted"
@@ -11782,9 +11847,9 @@ var RoutingEdge = React60.forwardRef(
11782
11847
  RoutingEdge.displayName = "RoutingEdge";
11783
11848
 
11784
11849
  // virtual-pkg:src/atoms/RoutingNode/RoutingNode.tsx
11785
- import * as React61 from "react";
11786
- import { jsx as jsx61, jsxs as jsxs58 } from "react/jsx-runtime";
11787
- var cn52 = (...values) => values.filter(Boolean).join(" ");
11850
+ import * as React62 from "react";
11851
+ import { jsx as jsx62, jsxs as jsxs59 } from "react/jsx-runtime";
11852
+ var cn53 = (...values) => values.filter(Boolean).join(" ");
11788
11853
  var NODE_WIDTH = "var(--container-node, 228px)";
11789
11854
  var accentByType = {
11790
11855
  source: "bg-primary",
@@ -11810,7 +11875,7 @@ var eyebrowByType2 = {
11810
11875
  processor: "Processor",
11811
11876
  fallback: "Fallback"
11812
11877
  };
11813
- var RoutingNode = React61.forwardRef(
11878
+ var RoutingNode = React62.forwardRef(
11814
11879
  ({
11815
11880
  type,
11816
11881
  title,
@@ -11833,21 +11898,21 @@ var RoutingNode = React61.forwardRef(
11833
11898
  }, ref) => {
11834
11899
  const glyph5 = icon ?? defaultIconByType[type];
11835
11900
  const highlighted = selected || active;
11836
- return /* @__PURE__ */ jsxs58(
11901
+ return /* @__PURE__ */ jsxs59(
11837
11902
  "div",
11838
11903
  {
11839
11904
  ref,
11840
- className: cn52("group/node relative shrink-0", className),
11905
+ className: cn53("group/node relative shrink-0", className),
11841
11906
  style: { width: NODE_WIDTH, ...style },
11842
11907
  "data-node-type": type,
11843
11908
  "data-selected": selected || void 0,
11844
11909
  "data-active": active || void 0,
11845
11910
  ...rest,
11846
11911
  children: [
11847
- /* @__PURE__ */ jsxs58(
11912
+ /* @__PURE__ */ jsxs59(
11848
11913
  "div",
11849
11914
  {
11850
- className: cn52(
11915
+ className: cn53(
11851
11916
  "flex items-stretch overflow-hidden rounded-md border bg-surface",
11852
11917
  "transition duration-150 ease-out",
11853
11918
  disabled ? "border-hairline-soft opacity-50" : selected && unreachable ? "border-dashed border-semantic-warning ring-2 ring-primary" : selected ? "border-primary ring-2 ring-primary" : unreachable ? "border-dashed border-semantic-warning" : active ? "border-primary ring-2 ring-primary/25" : conflict ? "border-semantic-error/50" : "border-hairline",
@@ -11855,29 +11920,29 @@ var RoutingNode = React61.forwardRef(
11855
11920
  disabled ? "" : "group-hover/node:border-hairline-strong group-hover/node:shadow-md"
11856
11921
  ),
11857
11922
  children: [
11858
- /* @__PURE__ */ jsx61(
11923
+ /* @__PURE__ */ jsx62(
11859
11924
  "span",
11860
11925
  {
11861
11926
  "aria-hidden": "true",
11862
- className: cn52("w-xs shrink-0", disabled ? "bg-hairline" : accentByType[type])
11927
+ className: cn53("w-xs shrink-0", disabled ? "bg-hairline" : accentByType[type])
11863
11928
  }
11864
11929
  ),
11865
- /* @__PURE__ */ jsxs58("div", { className: "flex min-w-0 flex-1 items-start gap-sm p-sm", children: [
11866
- /* @__PURE__ */ jsx61(
11930
+ /* @__PURE__ */ jsxs59("div", { className: "flex min-w-0 flex-1 items-start gap-sm p-sm", children: [
11931
+ /* @__PURE__ */ jsx62(
11867
11932
  "span",
11868
11933
  {
11869
11934
  "aria-hidden": "true",
11870
- className: cn52(
11935
+ className: cn53(
11871
11936
  "flex size-lg shrink-0 items-center justify-center rounded-xs",
11872
11937
  disabled ? "bg-surface-strong text-muted-soft" : glyphTintByType[type]
11873
11938
  ),
11874
- children: /* @__PURE__ */ jsx61(Icon, { name: glyph5, size: 12, strokeWidth: 1.75 })
11939
+ children: /* @__PURE__ */ jsx62(Icon, { name: glyph5, size: 12, strokeWidth: 1.75 })
11875
11940
  }
11876
11941
  ),
11877
- /* @__PURE__ */ jsxs58("div", { className: "flex min-w-0 flex-1 flex-col gap-xxs", children: [
11878
- /* @__PURE__ */ jsxs58("div", { className: "flex items-center gap-xs", children: [
11879
- /* @__PURE__ */ jsx61("span", { className: "truncate text-micro-cap text-muted", children: eyebrowByType2[type] }),
11880
- unreachable ? /* @__PURE__ */ jsx61(
11942
+ /* @__PURE__ */ jsxs59("div", { className: "flex min-w-0 flex-1 flex-col gap-xxs", children: [
11943
+ /* @__PURE__ */ jsxs59("div", { className: "flex items-center gap-xs", children: [
11944
+ /* @__PURE__ */ jsx62("span", { className: "truncate text-micro-cap text-muted", children: eyebrowByType2[type] }),
11945
+ unreachable ? /* @__PURE__ */ jsx62(
11881
11946
  Icon,
11882
11947
  {
11883
11948
  name: "triangle",
@@ -11887,45 +11952,45 @@ var RoutingNode = React61.forwardRef(
11887
11952
  }
11888
11953
  ) : null
11889
11954
  ] }),
11890
- /* @__PURE__ */ jsx61("span", { className: "text-body-sm text-ink", children: title }),
11891
- noFallback ? /* @__PURE__ */ jsxs58("span", { className: "mt-xxs inline-flex items-center gap-xs self-start rounded-xs bg-semantic-warning-soft px-sm py-xxs text-caption text-semantic-warning", children: [
11892
- /* @__PURE__ */ jsx61(Icon, { name: "triangle", size: 11, strokeWidth: 2, className: "shrink-0" }),
11955
+ /* @__PURE__ */ jsx62("span", { className: "text-body-sm text-ink", children: title }),
11956
+ noFallback ? /* @__PURE__ */ jsxs59("span", { className: "mt-xxs inline-flex items-center gap-xs self-start rounded-xs bg-semantic-warning-soft px-sm py-xxs text-caption text-semantic-warning", children: [
11957
+ /* @__PURE__ */ jsx62(Icon, { name: "triangle", size: 11, strokeWidth: 2, className: "shrink-0" }),
11893
11958
  "No fallback"
11894
- ] }) : metric || trailing ? /* @__PURE__ */ jsxs58("div", { className: "flex min-w-0 items-baseline justify-between gap-xs", children: [
11895
- metric ? /* @__PURE__ */ jsx61("span", { className: "truncate text-caption text-muted", children: metric }) : null,
11896
- trailing ? /* @__PURE__ */ jsx61("span", { className: "shrink-0 text-caption text-muted", children: trailing }) : null
11959
+ ] }) : metric || trailing ? /* @__PURE__ */ jsxs59("div", { className: "flex min-w-0 items-baseline justify-between gap-xs", children: [
11960
+ metric ? /* @__PURE__ */ jsx62("span", { className: "truncate text-caption text-muted", children: metric }) : null,
11961
+ trailing ? /* @__PURE__ */ jsx62("span", { className: "shrink-0 text-caption text-muted", children: trailing }) : null
11897
11962
  ] }) : null,
11898
- conflict ? /* @__PURE__ */ jsx61("span", { className: "text-caption text-semantic-error", children: conflict }) : null
11963
+ conflict ? /* @__PURE__ */ jsx62("span", { className: "text-caption text-semantic-error", children: conflict }) : null
11899
11964
  ] })
11900
11965
  ] })
11901
11966
  ]
11902
11967
  }
11903
11968
  ),
11904
- /* @__PURE__ */ jsx61(
11969
+ /* @__PURE__ */ jsx62(
11905
11970
  "span",
11906
11971
  {
11907
11972
  "aria-hidden": "true",
11908
- className: cn52(
11973
+ className: cn53(
11909
11974
  "absolute -left-xs top-1/2 size-sm -translate-y-1/2 rounded-full border-2 transition-colors duration-150 ease-out",
11910
11975
  highlighted ? "border-primary bg-primary" : "border-hairline-strong bg-surface"
11911
11976
  )
11912
11977
  }
11913
11978
  ),
11914
- /* @__PURE__ */ jsx61(
11979
+ /* @__PURE__ */ jsx62(
11915
11980
  "span",
11916
11981
  {
11917
11982
  "aria-hidden": "true",
11918
- className: cn52(
11983
+ className: cn53(
11919
11984
  "absolute -right-xs top-1/2 size-sm -translate-y-1/2 rounded-full border-2 transition-colors duration-150 ease-out",
11920
11985
  highlighted ? "border-primary bg-primary" : "border-hairline-strong bg-surface"
11921
11986
  )
11922
11987
  }
11923
11988
  ),
11924
- /* @__PURE__ */ jsx61(
11989
+ /* @__PURE__ */ jsx62(
11925
11990
  "span",
11926
11991
  {
11927
11992
  "aria-hidden": "true",
11928
- className: cn52(
11993
+ className: cn53(
11929
11994
  "pointer-events-none absolute -top-xl left-md whitespace-nowrap rounded-full bg-primary px-md py-xs text-caption text-on-primary shadow-sm",
11930
11995
  "transition duration-150 ease-out",
11931
11996
  showHint ? "translate-y-0 opacity-100" : "-translate-y-xs opacity-0"
@@ -11933,7 +11998,7 @@ var RoutingNode = React61.forwardRef(
11933
11998
  children: "Press Enter"
11934
11999
  }
11935
12000
  ),
11936
- /* @__PURE__ */ jsx61(
12001
+ /* @__PURE__ */ jsx62(
11937
12002
  Button,
11938
12003
  {
11939
12004
  variant: "bare",
@@ -11943,7 +12008,7 @@ var RoutingNode = React61.forwardRef(
11943
12008
  "aria-pressed": selected,
11944
12009
  onClick: onNodeSelect,
11945
12010
  className: "absolute inset-0 rounded-md focus-visible:ring-focus-blue focus-visible:ring-offset-0",
11946
- children: /* @__PURE__ */ jsx61("span", { className: "sr-only", children: title })
12011
+ children: /* @__PURE__ */ jsx62("span", { className: "sr-only", children: title })
11947
12012
  }
11948
12013
  )
11949
12014
  ]
@@ -11954,10 +12019,10 @@ var RoutingNode = React61.forwardRef(
11954
12019
  RoutingNode.displayName = "RoutingNode";
11955
12020
 
11956
12021
  // virtual-pkg:src/atoms/SimulationControls/SimulationControls.tsx
11957
- import * as React62 from "react";
11958
- import { jsx as jsx62, jsxs as jsxs59 } from "react/jsx-runtime";
11959
- var cn53 = (...values) => values.filter(Boolean).join(" ");
11960
- var SimulationControls = React62.forwardRef(
12022
+ import * as React63 from "react";
12023
+ import { jsx as jsx63, jsxs as jsxs60 } from "react/jsx-runtime";
12024
+ var cn54 = (...values) => values.filter(Boolean).join(" ");
12025
+ var SimulationControls = React63.forwardRef(
11961
12026
  ({
11962
12027
  running = false,
11963
12028
  on = false,
@@ -11969,12 +12034,12 @@ var SimulationControls = React62.forwardRef(
11969
12034
  className,
11970
12035
  ...rest
11971
12036
  }, ref) => {
11972
- const trackRef = React62.useRef(null);
11973
- const segmentRef = React62.useRef(null);
11974
- const [pill, setPill] = React62.useState(
12037
+ const trackRef = React63.useRef(null);
12038
+ const segmentRef = React63.useRef(null);
12039
+ const [pill, setPill] = React63.useState(
11975
12040
  null
11976
12041
  );
11977
- React62.useEffect(() => {
12042
+ React63.useEffect(() => {
11978
12043
  const measure = () => {
11979
12044
  const track = trackRef.current;
11980
12045
  const segment = segmentRef.current;
@@ -11987,7 +12052,7 @@ var SimulationControls = React62.forwardRef(
11987
12052
  return () => observer.disconnect();
11988
12053
  }, []);
11989
12054
  const armed = on || running;
11990
- return /* @__PURE__ */ jsxs59(
12055
+ return /* @__PURE__ */ jsxs60(
11991
12056
  "div",
11992
12057
  {
11993
12058
  ref: (node) => {
@@ -11997,18 +12062,18 @@ var SimulationControls = React62.forwardRef(
11997
12062
  },
11998
12063
  role: "group",
11999
12064
  "aria-label": label,
12000
- className: cn53(
12065
+ className: cn54(
12001
12066
  "relative inline-flex items-center gap-xxs rounded-full border border-hairline bg-surface-soft p-xxs",
12002
12067
  "transition-colors duration-150 ease-out",
12003
12068
  className
12004
12069
  ),
12005
12070
  ...rest,
12006
12071
  children: [
12007
- /* @__PURE__ */ jsx62(
12072
+ /* @__PURE__ */ jsx63(
12008
12073
  "span",
12009
12074
  {
12010
12075
  "aria-hidden": "true",
12011
- className: cn53(
12076
+ className: cn54(
12012
12077
  "pointer-events-none absolute bottom-xxs top-xxs rounded-full bg-primary shadow-sm",
12013
12078
  "transition duration-200 ease-out",
12014
12079
  armed ? "opacity-100" : "opacity-0"
@@ -12016,7 +12081,7 @@ var SimulationControls = React62.forwardRef(
12016
12081
  style: { left: pill?.left ?? 0, width: pill?.width ?? 0 }
12017
12082
  }
12018
12083
  ),
12019
- /* @__PURE__ */ jsx62(
12084
+ /* @__PURE__ */ jsx63(
12020
12085
  Button,
12021
12086
  {
12022
12087
  variant: "bare",
@@ -12024,14 +12089,14 @@ var SimulationControls = React62.forwardRef(
12024
12089
  onClick: onReplay,
12025
12090
  disabled: running,
12026
12091
  "aria-label": "Replay sample transaction",
12027
- className: cn53(
12092
+ className: cn54(
12028
12093
  "relative z-10 size-7 shrink-0 rounded-full text-body",
12029
12094
  "hover:bg-surface-strong hover:text-ink disabled:hover:bg-transparent"
12030
12095
  ),
12031
- children: /* @__PURE__ */ jsx62(Icon, { name: "play", size: 13, strokeWidth: 2 })
12096
+ children: /* @__PURE__ */ jsx63(Icon, { name: "play", size: 13, strokeWidth: 2 })
12032
12097
  }
12033
12098
  ),
12034
- /* @__PURE__ */ jsxs59(
12099
+ /* @__PURE__ */ jsxs60(
12035
12100
  Button,
12036
12101
  {
12037
12102
  ref: segmentRef,
@@ -12040,20 +12105,20 @@ var SimulationControls = React62.forwardRef(
12040
12105
  onClick: () => onToggle?.(!on),
12041
12106
  "aria-pressed": armed,
12042
12107
  "aria-label": "Simulation mode",
12043
- className: cn53(
12108
+ className: cn54(
12044
12109
  "relative z-10 shrink-0 rounded-full",
12045
12110
  armed ? "text-on-primary" : "text-muted"
12046
12111
  ),
12047
12112
  children: [
12048
- /* @__PURE__ */ jsx62(Icon, { name: running ? "square" : "play", size: 10, strokeWidth: 2.5 }),
12113
+ /* @__PURE__ */ jsx63(Icon, { name: running ? "square" : "play", size: 10, strokeWidth: 2.5 }),
12049
12114
  "Simulation"
12050
12115
  ]
12051
12116
  }
12052
12117
  ),
12053
- /* @__PURE__ */ jsxs59(
12118
+ /* @__PURE__ */ jsxs60(
12054
12119
  "span",
12055
12120
  {
12056
- className: cn53(
12121
+ className: cn54(
12057
12122
  "relative z-10 px-sm text-caption",
12058
12123
  armed ? "text-ink" : "text-muted"
12059
12124
  ),
@@ -12073,8 +12138,8 @@ var SimulationControls = React62.forwardRef(
12073
12138
  SimulationControls.displayName = "SimulationControls";
12074
12139
 
12075
12140
  // virtual-pkg:src/atoms/PaymentRoutingCanvas/PaymentRoutingCanvas.tsx
12076
- import { jsx as jsx63, jsxs as jsxs60 } from "react/jsx-runtime";
12077
- var cn54 = (...values) => values.filter(Boolean).join(" ");
12141
+ import { jsx as jsx64, jsxs as jsxs61 } from "react/jsx-runtime";
12142
+ var cn55 = (...values) => values.filter(Boolean).join(" ");
12078
12143
  var NODE_W = 228;
12079
12144
  var NODE_H = 78;
12080
12145
  var SOURCE_X = 0;
@@ -12241,7 +12306,7 @@ var computeIssues = (nodes, edges) => {
12241
12306
  return issues;
12242
12307
  };
12243
12308
  var sameIds = (a, b) => a.length === b.length && a.every((id, index) => id === b[index]);
12244
- var PaymentRoutingCanvas = React63.forwardRef(
12309
+ var PaymentRoutingCanvas = React64.forwardRef(
12245
12310
  ({
12246
12311
  nodes,
12247
12312
  edges,
@@ -12260,50 +12325,50 @@ var PaymentRoutingCanvas = React63.forwardRef(
12260
12325
  const incomingNodes = nodes ?? DEFAULT_NODES;
12261
12326
  const graphEdges = edges ?? DEFAULT_EDGES;
12262
12327
  const samples = sampleTransaction ?? DEFAULT_SAMPLES;
12263
- const [localNodes, setLocalNodes] = React63.useState(incomingNodes);
12264
- const [panelNodeId, setPanelNodeId] = React63.useState("brand");
12265
- const [panelOpen, setPanelOpen] = React63.useState(true);
12266
- const [zoom, setZoom] = React63.useState(1);
12267
- const [fit, setFit] = React63.useState(1);
12268
- const [planeHeight, setPlaneHeight] = React63.useState(PLANE_H);
12269
- const [pan, setPan] = React63.useState({ x: 0, y: 0 });
12270
- const [issuesOpen, setIssuesOpen] = React63.useState(false);
12271
- const [priority, setPriority] = React63.useState([
12328
+ const [localNodes, setLocalNodes] = React64.useState(incomingNodes);
12329
+ const [panelNodeId, setPanelNodeId] = React64.useState("brand");
12330
+ const [panelOpen, setPanelOpen] = React64.useState(true);
12331
+ const [zoom, setZoom] = React64.useState(1);
12332
+ const [fit, setFit] = React64.useState(1);
12333
+ const [planeHeight, setPlaneHeight] = React64.useState(PLANE_H);
12334
+ const [pan, setPan] = React64.useState({ x: 0, y: 0 });
12335
+ const [issuesOpen, setIssuesOpen] = React64.useState(false);
12336
+ const [priority, setPriority] = React64.useState([
12272
12337
  { id: "p1", label: "Card brand = credit" },
12273
12338
  { id: "p2", label: "Country = DE" },
12274
12339
  { id: "p3", label: "Risk score \u2265 70" }
12275
12340
  ]);
12276
- const [fallbackEnabled, setFallbackEnabled] = React63.useState(true);
12277
- const [sampleIndex, setSampleIndex] = React63.useState(0);
12278
- const [stepIndex, setStepIndex] = React63.useState(2);
12279
- const [replaying, setReplaying] = React63.useState(false);
12280
- const [focusedId, setFocusedId] = React63.useState(null);
12281
- const [anchor, setAnchor] = React63.useState({ top: 0, right: 16 });
12341
+ const [fallbackEnabled, setFallbackEnabled] = React64.useState(true);
12342
+ const [sampleIndex, setSampleIndex] = React64.useState(0);
12343
+ const [stepIndex, setStepIndex] = React64.useState(2);
12344
+ const [replaying, setReplaying] = React64.useState(false);
12345
+ const [focusedId, setFocusedId] = React64.useState(null);
12346
+ const [anchor, setAnchor] = React64.useState({ top: 0, right: 16 });
12282
12347
  const controlledSelection = selectedNodeIds !== void 0;
12283
- const [internalSelection, setInternalSelection] = React63.useState(
12348
+ const [internalSelection, setInternalSelection] = React64.useState(
12284
12349
  () => defaultSelectedNodeIds ?? DEFAULT_SELECTION
12285
12350
  );
12286
12351
  const selection = controlledSelection ? selectedNodeIds : internalSelection;
12287
- const selectionRef = React63.useRef(selection);
12352
+ const selectionRef = React64.useRef(selection);
12288
12353
  selectionRef.current = selection;
12289
- const onSelectionChangeRef = React63.useRef(onSelectionChange);
12354
+ const onSelectionChangeRef = React64.useRef(onSelectionChange);
12290
12355
  onSelectionChangeRef.current = onSelectionChange;
12291
- const [marqueeBox, setMarqueeBox] = React63.useState(null);
12292
- const [marqueeIds, setMarqueeIds] = React63.useState(null);
12293
- const marqueeRef = React63.useRef(null);
12294
- const [modifierHeld, setModifierHeld] = React63.useState(false);
12295
- const rootRef = React63.useRef(null);
12296
- const planeRef = React63.useRef(null);
12297
- const triggerRef = React63.useRef(null);
12298
- const nodeRefs = React63.useRef({});
12299
- const suppressClick = React63.useRef(false);
12300
- const nodeDragActive = React63.useRef(false);
12301
- const nodesRef = React63.useRef(localNodes);
12356
+ const [marqueeBox, setMarqueeBox] = React64.useState(null);
12357
+ const [marqueeIds, setMarqueeIds] = React64.useState(null);
12358
+ const marqueeRef = React64.useRef(null);
12359
+ const [modifierHeld, setModifierHeld] = React64.useState(false);
12360
+ const rootRef = React64.useRef(null);
12361
+ const planeRef = React64.useRef(null);
12362
+ const triggerRef = React64.useRef(null);
12363
+ const nodeRefs = React64.useRef({});
12364
+ const suppressClick = React64.useRef(false);
12365
+ const nodeDragActive = React64.useRef(false);
12366
+ const nodesRef = React64.useRef(localNodes);
12302
12367
  nodesRef.current = localNodes;
12303
- React63.useEffect(() => {
12368
+ React64.useEffect(() => {
12304
12369
  setLocalNodes(incomingNodes);
12305
12370
  }, [incomingNodes]);
12306
- React63.useEffect(() => {
12371
+ React64.useEffect(() => {
12307
12372
  const syncModifier = (event) => setModifierHeld(Boolean(event.metaKey || event.ctrlKey));
12308
12373
  const releaseModifier = () => setModifierHeld(false);
12309
12374
  window.addEventListener("keydown", syncModifier);
@@ -12315,7 +12380,7 @@ var PaymentRoutingCanvas = React63.forwardRef(
12315
12380
  window.removeEventListener("blur", releaseModifier);
12316
12381
  };
12317
12382
  }, []);
12318
- React63.useEffect(() => {
12383
+ React64.useEffect(() => {
12319
12384
  const plane = planeRef.current;
12320
12385
  if (!plane) return;
12321
12386
  const measure = () => {
@@ -12336,16 +12401,16 @@ var PaymentRoutingCanvas = React63.forwardRef(
12336
12401
  observer.observe(plane);
12337
12402
  return () => observer.disconnect();
12338
12403
  }, []);
12339
- const issues = React63.useMemo(
12404
+ const issues = React64.useMemo(
12340
12405
  () => computeIssues(localNodes, graphEdges),
12341
12406
  [localNodes, graphEdges]
12342
12407
  );
12343
- React63.useEffect(() => {
12408
+ React64.useEffect(() => {
12344
12409
  onValidationChange?.(issues);
12345
12410
  }, [issues, onValidationChange]);
12346
12411
  const sample = samples[sampleIndex] ?? samples[0];
12347
12412
  const steps = sample?.steps ?? [];
12348
- React63.useEffect(() => {
12413
+ React64.useEffect(() => {
12349
12414
  if (!replaying) return;
12350
12415
  if (stepIndex >= steps.length - 1) {
12351
12416
  setReplaying(false);
@@ -12360,11 +12425,11 @@ var PaymentRoutingCanvas = React63.forwardRef(
12360
12425
  }, 900);
12361
12426
  return () => window.clearTimeout(timer);
12362
12427
  }, [replaying, stepIndex, steps, onSimulationStep]);
12363
- const traversed = React63.useMemo(
12428
+ const traversed = React64.useMemo(
12364
12429
  () => new Set(steps.slice(0, stepIndex + 1).map((step) => step.nodeId)),
12365
12430
  [steps, stepIndex]
12366
12431
  );
12367
- const activeEdges = React63.useMemo(() => {
12432
+ const activeEdges = React64.useMemo(() => {
12368
12433
  const pairs = [];
12369
12434
  for (let index = 0; index < stepIndex; index += 1) {
12370
12435
  const from = steps[index]?.nodeId;
@@ -12373,7 +12438,7 @@ var PaymentRoutingCanvas = React63.forwardRef(
12373
12438
  }
12374
12439
  return new Set(pairs);
12375
12440
  }, [steps, stepIndex]);
12376
- const nodeById = React63.useMemo(() => {
12441
+ const nodeById = React64.useMemo(() => {
12377
12442
  const map = /* @__PURE__ */ new Map();
12378
12443
  localNodes.forEach((node) => map.set(node.id, node));
12379
12444
  return map;
@@ -12383,9 +12448,9 @@ var PaymentRoutingCanvas = React63.forwardRef(
12383
12448
  y: node.y + (node.h ?? NODE_H) / 2
12384
12449
  });
12385
12450
  const focusedNode = panelNodeId ? nodeById.get(panelNodeId) : void 0;
12386
- const selectionSet = React63.useMemo(() => new Set(selection), [selection]);
12387
- const marqueeSet = React63.useMemo(() => new Set(marqueeIds ?? []), [marqueeIds]);
12388
- const commitSelection = React63.useCallback(
12451
+ const selectionSet = React64.useMemo(() => new Set(selection), [selection]);
12452
+ const marqueeSet = React64.useMemo(() => new Set(marqueeIds ?? []), [marqueeIds]);
12453
+ const commitSelection = React64.useCallback(
12389
12454
  (next) => {
12390
12455
  const unique = next.filter((id, index) => next.indexOf(id) === index);
12391
12456
  if (sameIds(unique, selectionRef.current)) return;
@@ -12657,7 +12722,7 @@ var PaymentRoutingCanvas = React63.forwardRef(
12657
12722
  setIssuesOpen((current) => !current);
12658
12723
  };
12659
12724
  const scale = fit * zoom;
12660
- return /* @__PURE__ */ jsxs60(
12725
+ return /* @__PURE__ */ jsxs61(
12661
12726
  "div",
12662
12727
  {
12663
12728
  ref: (node) => {
@@ -12665,20 +12730,20 @@ var PaymentRoutingCanvas = React63.forwardRef(
12665
12730
  if (typeof ref === "function") ref(node);
12666
12731
  else if (ref) ref.current = node;
12667
12732
  },
12668
- className: cn54(
12733
+ className: cn55(
12669
12734
  "flex min-h-0 w-full flex-col overflow-hidden rounded-lg border border-hairline bg-surface shadow-card",
12670
12735
  className
12671
12736
  ),
12672
12737
  "data-simulating": replaying || void 0,
12673
12738
  ...rest,
12674
12739
  children: [
12675
- /* @__PURE__ */ jsxs60("div", { className: "flex shrink-0 flex-wrap items-center justify-between gap-md border-b border-hairline px-lg py-md", children: [
12676
- /* @__PURE__ */ jsxs60("div", { className: "flex min-w-0 flex-col gap-xxs", children: [
12677
- /* @__PURE__ */ jsx63("span", { className: "text-body-md text-ink", children: "Payment routing" }),
12678
- /* @__PURE__ */ jsx63("span", { className: "text-caption text-muted", children: "12,480 payments \xB7 last 24h" })
12740
+ /* @__PURE__ */ jsxs61("div", { className: "flex shrink-0 flex-wrap items-center justify-between gap-md border-b border-hairline px-lg py-md", children: [
12741
+ /* @__PURE__ */ jsxs61("div", { className: "flex min-w-0 flex-col gap-xxs", children: [
12742
+ /* @__PURE__ */ jsx64("span", { className: "text-body-md text-ink", children: "Payment routing" }),
12743
+ /* @__PURE__ */ jsx64("span", { className: "text-caption text-muted", children: "12,480 payments \xB7 last 24h" })
12679
12744
  ] }),
12680
- /* @__PURE__ */ jsxs60("div", { className: "flex flex-wrap items-center gap-md", children: [
12681
- /* @__PURE__ */ jsx63(
12745
+ /* @__PURE__ */ jsxs61("div", { className: "flex flex-wrap items-center gap-md", children: [
12746
+ /* @__PURE__ */ jsx64(
12682
12747
  SimulationControls,
12683
12748
  {
12684
12749
  running: replaying,
@@ -12695,7 +12760,7 @@ var PaymentRoutingCanvas = React63.forwardRef(
12695
12760
  }
12696
12761
  }
12697
12762
  ),
12698
- /* @__PURE__ */ jsx63(
12763
+ /* @__PURE__ */ jsx64(
12699
12764
  Button,
12700
12765
  {
12701
12766
  ref: triggerRef,
@@ -12704,7 +12769,7 @@ var PaymentRoutingCanvas = React63.forwardRef(
12704
12769
  "aria-expanded": issuesOpen,
12705
12770
  "aria-controls": "routing-validation-summary",
12706
12771
  onClick: openIssues,
12707
- leadingIcon: /* @__PURE__ */ jsx63(
12772
+ leadingIcon: /* @__PURE__ */ jsx64(
12708
12773
  Icon,
12709
12774
  {
12710
12775
  name: issues.length > 0 ? "triangle" : "check",
@@ -12712,7 +12777,7 @@ var PaymentRoutingCanvas = React63.forwardRef(
12712
12777
  strokeWidth: 2
12713
12778
  }
12714
12779
  ),
12715
- className: cn54(
12780
+ className: cn55(
12716
12781
  "rounded-full border-transparent",
12717
12782
  issues.length > 0 ? "bg-semantic-error-soft text-semantic-error hover:bg-semantic-error-soft/70" : "bg-semantic-success-soft text-semantic-success"
12718
12783
  ),
@@ -12721,9 +12786,9 @@ var PaymentRoutingCanvas = React63.forwardRef(
12721
12786
  )
12722
12787
  ] })
12723
12788
  ] }),
12724
- /* @__PURE__ */ jsxs60("div", { className: "flex min-h-0 flex-1 items-stretch", children: [
12725
- /* @__PURE__ */ jsxs60("div", { className: "flex min-h-0 min-w-0 flex-1 flex-col", children: [
12726
- /* @__PURE__ */ jsxs60(
12789
+ /* @__PURE__ */ jsxs61("div", { className: "flex min-h-0 flex-1 items-stretch", children: [
12790
+ /* @__PURE__ */ jsxs61("div", { className: "flex min-h-0 min-w-0 flex-1 flex-col", children: [
12791
+ /* @__PURE__ */ jsxs61(
12727
12792
  "div",
12728
12793
  {
12729
12794
  ref: planeRef,
@@ -12765,7 +12830,7 @@ var PaymentRoutingCanvas = React63.forwardRef(
12765
12830
  setPan({ x: 0, y: 0 });
12766
12831
  }
12767
12832
  },
12768
- className: cn54(
12833
+ className: cn55(
12769
12834
  "relative min-h-0 min-w-0 flex-1 overflow-hidden bg-canvas",
12770
12835
  // Held Cmd / Ctrl over the background means "drag to select".
12771
12836
  modifierHeld || marqueeBox ? "cursor-crosshair" : "cursor-grab",
@@ -12779,8 +12844,8 @@ var PaymentRoutingCanvas = React63.forwardRef(
12779
12844
  backgroundSize: "16px 16px"
12780
12845
  },
12781
12846
  children: [
12782
- /* @__PURE__ */ jsx63("p", { id: "routing-selection-status", role: "status", "aria-live": "polite", className: "sr-only", children: selection.length === 0 ? "No nodes selected" : `${selection.length} node${selection.length === 1 ? "" : "s"} selected` }),
12783
- /* @__PURE__ */ jsxs60(
12847
+ /* @__PURE__ */ jsx64("p", { id: "routing-selection-status", role: "status", "aria-live": "polite", className: "sr-only", children: selection.length === 0 ? "No nodes selected" : `${selection.length} node${selection.length === 1 ? "" : "s"} selected` }),
12848
+ /* @__PURE__ */ jsxs61(
12784
12849
  "div",
12785
12850
  {
12786
12851
  className: "relative",
@@ -12800,7 +12865,7 @@ var PaymentRoutingCanvas = React63.forwardRef(
12800
12865
  const unreachable = issueByNode(to.id).some(
12801
12866
  (issue) => issue.kind === "unreachable"
12802
12867
  );
12803
- return /* @__PURE__ */ jsx63(
12868
+ return /* @__PURE__ */ jsx64(
12804
12869
  RoutingEdge,
12805
12870
  {
12806
12871
  from: portOf(from, "out"),
@@ -12825,7 +12890,7 @@ var PaymentRoutingCanvas = React63.forwardRef(
12825
12890
  );
12826
12891
  const active = traversed.has(node.id);
12827
12892
  const isSelected = selectionSet.has(node.id) || marqueeSet.has(node.id);
12828
- return /* @__PURE__ */ jsx63(
12893
+ return /* @__PURE__ */ jsx64(
12829
12894
  "div",
12830
12895
  {
12831
12896
  ref: (element) => {
@@ -12834,7 +12899,7 @@ var PaymentRoutingCanvas = React63.forwardRef(
12834
12899
  className: "absolute",
12835
12900
  style: { left: node.x, top: node.y, width: NODE_W },
12836
12901
  onPointerDown: (event) => beginDrag(event, node),
12837
- children: /* @__PURE__ */ jsx63(
12902
+ children: /* @__PURE__ */ jsx64(
12838
12903
  RoutingNode,
12839
12904
  {
12840
12905
  type: node.type,
@@ -12882,12 +12947,12 @@ var PaymentRoutingCanvas = React63.forwardRef(
12882
12947
  ]
12883
12948
  }
12884
12949
  ),
12885
- /* @__PURE__ */ jsx63(
12950
+ /* @__PURE__ */ jsx64(
12886
12951
  "div",
12887
12952
  {
12888
12953
  "aria-hidden": "true",
12889
12954
  "data-state": marqueeBox ? "active" : "idle",
12890
- className: cn54(
12955
+ className: cn55(
12891
12956
  "pointer-events-none absolute rounded-xs border border-dashed border-primary bg-primary/10",
12892
12957
  "transition-opacity duration-150 ease-out",
12893
12958
  marqueeBox ? "opacity-100" : "opacity-0"
@@ -12901,22 +12966,22 @@ var PaymentRoutingCanvas = React63.forwardRef(
12901
12966
  }
12902
12967
  }
12903
12968
  ),
12904
- /* @__PURE__ */ jsx63("ol", { className: "sr-only", children: graphEdges.map((edge) => {
12969
+ /* @__PURE__ */ jsx64("ol", { className: "sr-only", children: graphEdges.map((edge) => {
12905
12970
  const from = nodeById.get(edge.from);
12906
12971
  const to = nodeById.get(edge.to);
12907
- return /* @__PURE__ */ jsx63("li", { children: `Edge: ${from?.title ?? edge.from} to ${to?.title ?? edge.to}${edge.label ? `, ${edge.label}` : ""}` }, edge.id);
12972
+ return /* @__PURE__ */ jsx64("li", { children: `Edge: ${from?.title ?? edge.from} to ${to?.title ?? edge.to}${edge.label ? `, ${edge.label}` : ""}` }, edge.id);
12908
12973
  }) })
12909
12974
  ]
12910
12975
  }
12911
12976
  ),
12912
- /* @__PURE__ */ jsxs60("div", { className: "flex shrink-0 flex-wrap items-center justify-between gap-md border-t border-hairline px-lg py-md", children: [
12913
- /* @__PURE__ */ jsx63("p", { className: "min-w-0 flex-1 text-caption text-body", children: currentStep ? currentStep.reason : "Replay a sample transaction to watch the path." }),
12914
- /* @__PURE__ */ jsxs60("div", { className: "flex shrink-0 items-center gap-sm", children: [
12915
- settled ? /* @__PURE__ */ jsxs60("span", { className: "inline-flex items-center gap-xs rounded-full bg-semantic-success-soft px-sm py-xxs text-caption text-semantic-success", children: [
12916
- /* @__PURE__ */ jsx63(Icon, { name: "check", size: 11, strokeWidth: 2 }),
12977
+ /* @__PURE__ */ jsxs61("div", { className: "flex shrink-0 flex-wrap items-center justify-between gap-md border-t border-hairline px-lg py-md", children: [
12978
+ /* @__PURE__ */ jsx64("p", { className: "min-w-0 flex-1 text-caption text-body", children: currentStep ? currentStep.reason : "Replay a sample transaction to watch the path." }),
12979
+ /* @__PURE__ */ jsxs61("div", { className: "flex shrink-0 items-center gap-sm", children: [
12980
+ settled ? /* @__PURE__ */ jsxs61("span", { className: "inline-flex items-center gap-xs rounded-full bg-semantic-success-soft px-sm py-xxs text-caption text-semantic-success", children: [
12981
+ /* @__PURE__ */ jsx64(Icon, { name: "check", size: 11, strokeWidth: 2 }),
12917
12982
  "Settlement"
12918
12983
  ] }) : null,
12919
- /* @__PURE__ */ jsx63(
12984
+ /* @__PURE__ */ jsx64(
12920
12985
  CanvasMinimap,
12921
12986
  {
12922
12987
  blocks: minimapBlocks,
@@ -12930,8 +12995,8 @@ var PaymentRoutingCanvas = React63.forwardRef(
12930
12995
  }
12931
12996
  }
12932
12997
  ),
12933
- /* @__PURE__ */ jsxs60("div", { className: "inline-flex items-center gap-xxs rounded-md border border-hairline bg-surface p-xxs shadow-sm", children: [
12934
- /* @__PURE__ */ jsx63(
12998
+ /* @__PURE__ */ jsxs61("div", { className: "inline-flex items-center gap-xxs rounded-md border border-hairline bg-surface p-xxs shadow-sm", children: [
12999
+ /* @__PURE__ */ jsx64(
12935
13000
  Button,
12936
13001
  {
12937
13002
  variant: "bare",
@@ -12939,10 +13004,10 @@ var PaymentRoutingCanvas = React63.forwardRef(
12939
13004
  "aria-label": "Zoom out",
12940
13005
  onClick: () => setZoom((current) => Math.max(current - 0.1, 0.6)),
12941
13006
  className: "size-7 rounded-sm text-body hover:bg-surface-soft",
12942
- children: /* @__PURE__ */ jsx63(Icon, { name: "minus", size: 14, strokeWidth: 2 })
13007
+ children: /* @__PURE__ */ jsx64(Icon, { name: "minus", size: 14, strokeWidth: 2 })
12943
13008
  }
12944
13009
  ),
12945
- /* @__PURE__ */ jsx63(
13010
+ /* @__PURE__ */ jsx64(
12946
13011
  Button,
12947
13012
  {
12948
13013
  variant: "bare",
@@ -12950,10 +13015,10 @@ var PaymentRoutingCanvas = React63.forwardRef(
12950
13015
  "aria-label": "Zoom in",
12951
13016
  onClick: () => setZoom((current) => Math.min(current + 0.1, 1.6)),
12952
13017
  className: "size-7 rounded-sm text-body hover:bg-surface-soft",
12953
- children: /* @__PURE__ */ jsx63(Icon, { name: "plus", size: 14, strokeWidth: 2 })
13018
+ children: /* @__PURE__ */ jsx64(Icon, { name: "plus", size: 14, strokeWidth: 2 })
12954
13019
  }
12955
13020
  ),
12956
- /* @__PURE__ */ jsx63(
13021
+ /* @__PURE__ */ jsx64(
12957
13022
  Button,
12958
13023
  {
12959
13024
  variant: "bare",
@@ -12964,19 +13029,19 @@ var PaymentRoutingCanvas = React63.forwardRef(
12964
13029
  setPan({ x: 0, y: 0 });
12965
13030
  },
12966
13031
  className: "size-7 rounded-sm text-body hover:bg-surface-soft",
12967
- children: /* @__PURE__ */ jsx63(Icon, { name: "layers", size: 14, strokeWidth: 2 })
13032
+ children: /* @__PURE__ */ jsx64(Icon, { name: "layers", size: 14, strokeWidth: 2 })
12968
13033
  }
12969
13034
  )
12970
13035
  ] })
12971
13036
  ] })
12972
13037
  ] })
12973
13038
  ] }),
12974
- /* @__PURE__ */ jsx63(
13039
+ /* @__PURE__ */ jsx64(
12975
13040
  "div",
12976
13041
  {
12977
13042
  className: "flex min-h-0 shrink-0 flex-col self-stretch border-l border-hairline",
12978
13043
  style: { width: PANEL_W },
12979
- children: /* @__PURE__ */ jsx63(
13044
+ children: /* @__PURE__ */ jsx64(
12980
13045
  NodeConfigPanel,
12981
13046
  {
12982
13047
  open: panelOpen,
@@ -12996,7 +13061,7 @@ var PaymentRoutingCanvas = React63.forwardRef(
12996
13061
  )
12997
13062
  ] }),
12998
13063
  ReactDOM10.createPortal(
12999
- /* @__PURE__ */ jsxs60(
13064
+ /* @__PURE__ */ jsxs61(
13000
13065
  "div",
13001
13066
  {
13002
13067
  id: "routing-validation-summary",
@@ -13010,27 +13075,27 @@ var PaymentRoutingCanvas = React63.forwardRef(
13010
13075
  right: anchor.right,
13011
13076
  zIndex: "var(--z-popover, 1300)"
13012
13077
  },
13013
- className: cn54(
13078
+ className: cn55(
13014
13079
  "w-80 origin-top rounded-md border border-hairline bg-surface shadow-modal",
13015
13080
  "transition duration-200 ease-out",
13016
13081
  issuesOpen ? "pointer-events-auto translate-y-0 scale-100 opacity-100" : "pointer-events-none -translate-y-1 scale-95 opacity-0"
13017
13082
  ),
13018
13083
  children: [
13019
- /* @__PURE__ */ jsx63("p", { className: "border-b border-hairline-soft px-md py-sm text-micro-cap text-muted", children: "Validation" }),
13020
- /* @__PURE__ */ jsx63("ul", { className: "max-h-64 overflow-y-auto overscroll-contain p-xs", children: issues.length === 0 ? /* @__PURE__ */ jsx63("li", { className: "px-sm py-sm text-caption text-muted", children: "Every rule resolves to a processor." }) : issues.map((issue) => /* @__PURE__ */ jsx63("li", { children: /* @__PURE__ */ jsxs60("div", { className: "flex items-start gap-sm rounded-sm px-sm py-sm hover:bg-surface-soft", children: [
13021
- /* @__PURE__ */ jsx63(
13084
+ /* @__PURE__ */ jsx64("p", { className: "border-b border-hairline-soft px-md py-sm text-micro-cap text-muted", children: "Validation" }),
13085
+ /* @__PURE__ */ jsx64("ul", { className: "max-h-64 overflow-y-auto overscroll-contain p-xs", children: issues.length === 0 ? /* @__PURE__ */ jsx64("li", { className: "px-sm py-sm text-caption text-muted", children: "Every rule resolves to a processor." }) : issues.map((issue) => /* @__PURE__ */ jsx64("li", { children: /* @__PURE__ */ jsxs61("div", { className: "flex items-start gap-sm rounded-sm px-sm py-sm hover:bg-surface-soft", children: [
13086
+ /* @__PURE__ */ jsx64(
13022
13087
  Icon,
13023
13088
  {
13024
13089
  name: "triangle",
13025
13090
  size: 12,
13026
13091
  strokeWidth: 2,
13027
- className: cn54(
13092
+ className: cn55(
13028
13093
  "mt-xxs shrink-0",
13029
13094
  issue.kind === "conflict" ? "text-semantic-error" : "text-semantic-warning"
13030
13095
  )
13031
13096
  }
13032
13097
  ),
13033
- /* @__PURE__ */ jsx63("span", { className: "min-w-0 text-caption text-body", children: issue.message })
13098
+ /* @__PURE__ */ jsx64("span", { className: "min-w-0 text-caption text-body", children: issue.message })
13034
13099
  ] }) }, issue.id)) })
13035
13100
  ]
13036
13101
  }
@@ -13045,11 +13110,11 @@ var PaymentRoutingCanvas = React63.forwardRef(
13045
13110
  PaymentRoutingCanvas.displayName = "PaymentRoutingCanvas";
13046
13111
 
13047
13112
  // virtual-pkg:src/atoms/PricingTable/PricingTable.tsx
13048
- import * as React66 from "react";
13113
+ import * as React67 from "react";
13049
13114
 
13050
13115
  // virtual-pkg:src/atoms/PricingTableDesktop/PricingTableDesktop.tsx
13051
- import * as React64 from "react";
13052
- import { jsx as jsx64, jsxs as jsxs61 } from "react/jsx-runtime";
13116
+ import * as React65 from "react";
13117
+ import { jsx as jsx65, jsxs as jsxs62 } from "react/jsx-runtime";
13053
13118
  var DEFAULT_TIERS = [
13054
13119
  {
13055
13120
  id: "starter",
@@ -13105,8 +13170,8 @@ var DEFAULT_TIERS = [
13105
13170
  }
13106
13171
  ];
13107
13172
  var TABULAR = { fontFeatureSettings: '"tnum"' };
13108
- var cn55 = (...values) => values.filter(Boolean).join(" ");
13109
- var PricingTableDesktop = React64.forwardRef(
13173
+ var cn56 = (...values) => values.filter(Boolean).join(" ");
13174
+ var PricingTableDesktop = React65.forwardRef(
13110
13175
  ({
13111
13176
  title = "Pricing table",
13112
13177
  subtitle,
@@ -13115,60 +13180,60 @@ var PricingTableDesktop = React64.forwardRef(
13115
13180
  className,
13116
13181
  ...rest
13117
13182
  }, ref) => {
13118
- const headingId = React64.useId();
13119
- return /* @__PURE__ */ jsxs61(
13183
+ const headingId = React65.useId();
13184
+ return /* @__PURE__ */ jsxs62(
13120
13185
  "section",
13121
13186
  {
13122
13187
  ref,
13123
13188
  "aria-labelledby": headingId,
13124
- className: cn55("w-full bg-canvas px-base py-xl", className),
13189
+ className: cn56("w-full bg-canvas px-base py-xl", className),
13125
13190
  ...rest,
13126
13191
  children: [
13127
- /* @__PURE__ */ jsxs61("div", { className: "flex w-full flex-col gap-sm px-sm pb-lg", children: [
13128
- /* @__PURE__ */ jsx64("h2", { id: headingId, className: "text-display-lg text-ink", children: title }),
13129
- subtitle ? /* @__PURE__ */ jsx64("p", { className: "text-body-md text-muted", children: subtitle }) : null
13192
+ /* @__PURE__ */ jsxs62("div", { className: "flex w-full flex-col gap-sm px-sm pb-lg", children: [
13193
+ /* @__PURE__ */ jsx65("h2", { id: headingId, className: "text-display-lg text-ink", children: title }),
13194
+ subtitle ? /* @__PURE__ */ jsx65("p", { className: "text-body-md text-muted", children: subtitle }) : null
13130
13195
  ] }),
13131
- /* @__PURE__ */ jsx64("div", { className: "w-full rounded-xl bg-surface-soft p-base lg:p-xl", children: /* @__PURE__ */ jsx64("div", { className: "grid grid-cols-1 items-stretch gap-base sm:grid-cols-2 md:grid-cols-system md:gap-md lg:gap-xl lg:py-md", children: tiers.map((tier) => {
13196
+ /* @__PURE__ */ jsx65("div", { className: "w-full rounded-xl bg-surface-soft p-base lg:p-xl", children: /* @__PURE__ */ jsx65("div", { className: "grid grid-cols-1 items-stretch gap-base sm:grid-cols-2 md:grid-cols-system md:gap-md lg:gap-xl lg:py-md", children: tiers.map((tier) => {
13132
13197
  const featured = Boolean(tier.featured);
13133
13198
  const tierHeadingId = `${headingId}-${tier.id}`;
13134
- return /* @__PURE__ */ jsxs61(
13199
+ return /* @__PURE__ */ jsxs62(
13135
13200
  "article",
13136
13201
  {
13137
13202
  "aria-labelledby": tierHeadingId,
13138
13203
  "data-featured": featured ? "true" : void 0,
13139
- className: cn55(
13204
+ className: cn56(
13140
13205
  "flex h-full flex-col rounded-lg border p-lg transition duration-200 ease-out md:col-span-3",
13141
13206
  featured ? "border-transparent bg-brand-dark text-on-primary shadow-lg md:-my-md md:py-xxl" : "border-hairline bg-canvas text-ink shadow-sm hover:border-hairline-strong hover:shadow-md"
13142
13207
  ),
13143
13208
  children: [
13144
- tier.badge ? /* @__PURE__ */ jsx64("div", { className: "mb-md flex", children: /* @__PURE__ */ jsx64(Badge, { variant: "soft", tone: "info", size: "sm", children: tier.badge }) }) : null,
13145
- /* @__PURE__ */ jsx64(
13209
+ tier.badge ? /* @__PURE__ */ jsx65("div", { className: "mb-md flex", children: /* @__PURE__ */ jsx65(Badge, { variant: "soft", tone: "info", size: "sm", children: tier.badge }) }) : null,
13210
+ /* @__PURE__ */ jsx65(
13146
13211
  "h3",
13147
13212
  {
13148
13213
  id: tierHeadingId,
13149
- className: cn55(
13214
+ className: cn56(
13150
13215
  "text-heading-lg",
13151
13216
  featured ? "text-on-primary" : "text-ink"
13152
13217
  ),
13153
13218
  children: tier.name
13154
13219
  }
13155
13220
  ),
13156
- /* @__PURE__ */ jsxs61("p", { className: "mt-md flex items-baseline gap-sm whitespace-nowrap", children: [
13157
- /* @__PURE__ */ jsx64(
13221
+ /* @__PURE__ */ jsxs62("p", { className: "mt-md flex items-baseline gap-sm whitespace-nowrap", children: [
13222
+ /* @__PURE__ */ jsx65(
13158
13223
  "span",
13159
13224
  {
13160
13225
  style: TABULAR,
13161
- className: cn55(
13226
+ className: cn56(
13162
13227
  "text-display-md",
13163
13228
  featured ? "text-on-primary" : "text-ink"
13164
13229
  ),
13165
13230
  children: tier.price
13166
13231
  }
13167
13232
  ),
13168
- tier.period ? /* @__PURE__ */ jsxs61(
13233
+ tier.period ? /* @__PURE__ */ jsxs62(
13169
13234
  "span",
13170
13235
  {
13171
- className: cn55(
13236
+ className: cn56(
13172
13237
  "text-body-sm",
13173
13238
  featured ? "text-on-primary/70" : "text-muted"
13174
13239
  ),
@@ -13179,22 +13244,22 @@ var PricingTableDesktop = React64.forwardRef(
13179
13244
  }
13180
13245
  ) : null
13181
13246
  ] }),
13182
- featured ? /* @__PURE__ */ jsx64(
13247
+ featured ? /* @__PURE__ */ jsx65(
13183
13248
  "div",
13184
13249
  {
13185
13250
  "aria-hidden": "true",
13186
13251
  className: "my-lg h-px w-full bg-on-primary/20"
13187
13252
  }
13188
- ) : /* @__PURE__ */ jsx64(Divider, { decorative: true, className: "my-lg" }),
13189
- /* @__PURE__ */ jsx64("ul", { className: "flex flex-col gap-base", children: tier.features.map((feature) => /* @__PURE__ */ jsxs61(
13253
+ ) : /* @__PURE__ */ jsx65(Divider, { decorative: true, className: "my-lg" }),
13254
+ /* @__PURE__ */ jsx65("ul", { className: "flex flex-col gap-base", children: tier.features.map((feature) => /* @__PURE__ */ jsxs62(
13190
13255
  "li",
13191
13256
  {
13192
- className: cn55(
13257
+ className: cn56(
13193
13258
  "flex items-start gap-md text-body-md",
13194
13259
  featured ? "text-on-primary" : "text-body"
13195
13260
  ),
13196
13261
  children: [
13197
- /* @__PURE__ */ jsx64(
13262
+ /* @__PURE__ */ jsx65(
13198
13263
  Icon,
13199
13264
  {
13200
13265
  name: "check",
@@ -13204,13 +13269,13 @@ var PricingTableDesktop = React64.forwardRef(
13204
13269
  className: "mt-xxs"
13205
13270
  }
13206
13271
  ),
13207
- /* @__PURE__ */ jsx64("span", { className: "min-w-0", children: feature })
13272
+ /* @__PURE__ */ jsx65("span", { className: "min-w-0", children: feature })
13208
13273
  ]
13209
13274
  },
13210
13275
  feature
13211
13276
  )) }),
13212
- /* @__PURE__ */ jsxs61("div", { className: "mt-auto flex flex-col gap-sm pt-xl", children: [
13213
- /* @__PURE__ */ jsx64(
13277
+ /* @__PURE__ */ jsxs62("div", { className: "mt-auto flex flex-col gap-sm pt-xl", children: [
13278
+ /* @__PURE__ */ jsx65(
13214
13279
  Button,
13215
13280
  {
13216
13281
  variant: featured ? "primary" : "outline-brand",
@@ -13221,7 +13286,7 @@ var PricingTableDesktop = React64.forwardRef(
13221
13286
  children: tier.primaryAction
13222
13287
  }
13223
13288
  ),
13224
- tier.secondaryAction ? /* @__PURE__ */ jsx64(
13289
+ tier.secondaryAction ? /* @__PURE__ */ jsx65(
13225
13290
  Button,
13226
13291
  {
13227
13292
  variant: "inverse-outline",
@@ -13246,8 +13311,8 @@ var PricingTableDesktop = React64.forwardRef(
13246
13311
  PricingTableDesktop.displayName = "PricingTableDesktop";
13247
13312
 
13248
13313
  // virtual-pkg:src/atoms/PricingTableMobile/PricingTableMobile.tsx
13249
- import * as React65 from "react";
13250
- import { jsx as jsx65, jsxs as jsxs62 } from "react/jsx-runtime";
13314
+ import * as React66 from "react";
13315
+ import { jsx as jsx66, jsxs as jsxs63 } from "react/jsx-runtime";
13251
13316
  var DEFAULT_PLANS = [
13252
13317
  { id: "starter", name: "Starter", price: "$0.00", period: "mo" },
13253
13318
  { id: "growth", name: "Growth", price: "$49.00", period: "mo" },
@@ -13262,8 +13327,8 @@ var DEFAULT_PLANS = [
13262
13327
  { id: "enterprise", name: "Enterprise", price: "Custom" }
13263
13328
  ];
13264
13329
  var TABULAR2 = { fontFeatureSettings: '"tnum"' };
13265
- var cn56 = (...values) => values.filter(Boolean).join(" ");
13266
- var PricingTableMobile = React65.forwardRef(
13330
+ var cn57 = (...values) => values.filter(Boolean).join(" ");
13331
+ var PricingTableMobile = React66.forwardRef(
13267
13332
  ({
13268
13333
  title,
13269
13334
  subtitle,
@@ -13274,19 +13339,19 @@ var PricingTableMobile = React65.forwardRef(
13274
13339
  className,
13275
13340
  ...rest
13276
13341
  }, ref) => {
13277
- const headingId = React65.useId();
13278
- const [innerSelected, setInnerSelected] = React65.useState(void 0);
13342
+ const headingId = React66.useId();
13343
+ const [innerSelected, setInnerSelected] = React66.useState(void 0);
13279
13344
  const activeId = selectedId ?? innerSelected;
13280
13345
  const handleSelect = (planId) => {
13281
13346
  setInnerSelected(planId);
13282
13347
  onSelect?.(planId);
13283
13348
  };
13284
- return /* @__PURE__ */ jsx65("div", { ref, className: cn56("w-full", className), ...rest, children: /* @__PURE__ */ jsxs62("div", { className: "mx-auto flex w-full max-w-md flex-col gap-md", children: [
13285
- title || subtitle ? /* @__PURE__ */ jsxs62("div", { className: "flex flex-col gap-xxs px-sm pb-xs", children: [
13286
- title ? /* @__PURE__ */ jsx65("h2", { id: headingId, className: "text-heading-md text-ink", children: title }) : null,
13287
- subtitle ? /* @__PURE__ */ jsx65("p", { className: "text-body-sm text-muted", children: subtitle }) : null
13349
+ return /* @__PURE__ */ jsx66("div", { ref, className: cn57("w-full", className), ...rest, children: /* @__PURE__ */ jsxs63("div", { className: "mx-auto flex w-full max-w-md flex-col gap-md", children: [
13350
+ title || subtitle ? /* @__PURE__ */ jsxs63("div", { className: "flex flex-col gap-xxs px-sm pb-xs", children: [
13351
+ title ? /* @__PURE__ */ jsx66("h2", { id: headingId, className: "text-heading-md text-ink", children: title }) : null,
13352
+ subtitle ? /* @__PURE__ */ jsx66("p", { className: "text-body-sm text-muted", children: subtitle }) : null
13288
13353
  ] }) : null,
13289
- /* @__PURE__ */ jsx65(
13354
+ /* @__PURE__ */ jsx66(
13290
13355
  "div",
13291
13356
  {
13292
13357
  role: "group",
@@ -13296,7 +13361,7 @@ var PricingTableMobile = React65.forwardRef(
13296
13361
  children: plans.map((plan) => {
13297
13362
  const featured = Boolean(plan.featured);
13298
13363
  const selected = activeId === plan.id;
13299
- return /* @__PURE__ */ jsxs62(
13364
+ return /* @__PURE__ */ jsxs63(
13300
13365
  Button,
13301
13366
  {
13302
13367
  variant: "card-row",
@@ -13308,36 +13373,36 @@ var PricingTableMobile = React65.forwardRef(
13308
13373
  onClick: () => handleSelect(plan.id),
13309
13374
  className: "group",
13310
13375
  children: [
13311
- /* @__PURE__ */ jsxs62("span", { className: "flex min-w-0 flex-1 flex-col gap-xs", children: [
13312
- /* @__PURE__ */ jsxs62("span", { className: "flex min-w-0 items-center gap-sm", children: [
13313
- /* @__PURE__ */ jsx65(
13376
+ /* @__PURE__ */ jsxs63("span", { className: "flex min-w-0 flex-1 flex-col gap-xs", children: [
13377
+ /* @__PURE__ */ jsxs63("span", { className: "flex min-w-0 items-center gap-sm", children: [
13378
+ /* @__PURE__ */ jsx66(
13314
13379
  "span",
13315
13380
  {
13316
- className: cn56(
13381
+ className: cn57(
13317
13382
  "truncate text-body-lg",
13318
13383
  featured ? "text-on-primary" : "text-body"
13319
13384
  ),
13320
13385
  children: plan.name
13321
13386
  }
13322
13387
  ),
13323
- plan.badge ? /* @__PURE__ */ jsx65(Badge, { variant: "soft", tone: "info", size: "sm", children: plan.badge }) : null
13388
+ plan.badge ? /* @__PURE__ */ jsx66(Badge, { variant: "soft", tone: "info", size: "sm", children: plan.badge }) : null
13324
13389
  ] }),
13325
- /* @__PURE__ */ jsxs62("span", { className: "flex items-baseline gap-xxs whitespace-nowrap", children: [
13326
- /* @__PURE__ */ jsx65(
13390
+ /* @__PURE__ */ jsxs63("span", { className: "flex items-baseline gap-xxs whitespace-nowrap", children: [
13391
+ /* @__PURE__ */ jsx66(
13327
13392
  "span",
13328
13393
  {
13329
13394
  style: TABULAR2,
13330
- className: cn56(
13395
+ className: cn57(
13331
13396
  "text-display-lg",
13332
13397
  featured ? "text-on-primary" : "text-ink"
13333
13398
  ),
13334
13399
  children: plan.price
13335
13400
  }
13336
13401
  ),
13337
- plan.period ? /* @__PURE__ */ jsxs62(
13402
+ plan.period ? /* @__PURE__ */ jsxs63(
13338
13403
  "span",
13339
13404
  {
13340
- className: cn56(
13405
+ className: cn57(
13341
13406
  "text-heading-md",
13342
13407
  featured ? "text-on-primary/85" : "text-body"
13343
13408
  ),
@@ -13349,7 +13414,7 @@ var PricingTableMobile = React65.forwardRef(
13349
13414
  ) : null
13350
13415
  ] })
13351
13416
  ] }),
13352
- /* @__PURE__ */ jsx65(
13417
+ /* @__PURE__ */ jsx66(
13353
13418
  Icon,
13354
13419
  {
13355
13420
  name: "chevron-right",
@@ -13372,7 +13437,7 @@ var PricingTableMobile = React65.forwardRef(
13372
13437
  PricingTableMobile.displayName = "PricingTableMobile";
13373
13438
 
13374
13439
  // virtual-pkg:src/atoms/PricingTable/PricingTable.tsx
13375
- import { jsx as jsx66, jsxs as jsxs63 } from "react/jsx-runtime";
13440
+ import { jsx as jsx67, jsxs as jsxs64 } from "react/jsx-runtime";
13376
13441
  var DEFAULT_TIERS2 = [
13377
13442
  {
13378
13443
  id: "starter",
@@ -13409,7 +13474,7 @@ var DEFAULT_TIERS2 = [
13409
13474
  primaryAction: "Contact sales"
13410
13475
  }
13411
13476
  ];
13412
- var cn57 = (...values) => values.filter(Boolean).join(" ");
13477
+ var cn58 = (...values) => values.filter(Boolean).join(" ");
13413
13478
  var toPlan = (tier) => ({
13414
13479
  id: tier.id,
13415
13480
  name: tier.name,
@@ -13418,7 +13483,7 @@ var toPlan = (tier) => ({
13418
13483
  badge: tier.badge,
13419
13484
  featured: tier.featured
13420
13485
  });
13421
- var PricingTable = React66.forwardRef(
13486
+ var PricingTable = React67.forwardRef(
13422
13487
  ({
13423
13488
  title = "Pricing table",
13424
13489
  subtitle,
@@ -13433,12 +13498,12 @@ var PricingTable = React66.forwardRef(
13433
13498
  className,
13434
13499
  ...rest
13435
13500
  }, ref) => {
13436
- const derivedPlans = React66.useMemo(
13501
+ const derivedPlans = React67.useMemo(
13437
13502
  () => plans ?? tiers.map(toPlan),
13438
13503
  [plans, tiers]
13439
13504
  );
13440
- return /* @__PURE__ */ jsxs63("div", { ref, className: cn57("w-full", className), ...rest, children: [
13441
- /* @__PURE__ */ jsx66("div", { className: cn57("hidden w-full md:block", desktopClassName), children: /* @__PURE__ */ jsx66(
13505
+ return /* @__PURE__ */ jsxs64("div", { ref, className: cn58("w-full", className), ...rest, children: [
13506
+ /* @__PURE__ */ jsx67("div", { className: cn58("hidden w-full md:block", desktopClassName), children: /* @__PURE__ */ jsx67(
13442
13507
  PricingTableDesktop,
13443
13508
  {
13444
13509
  title,
@@ -13447,7 +13512,7 @@ var PricingTable = React66.forwardRef(
13447
13512
  onAction
13448
13513
  }
13449
13514
  ) }),
13450
- /* @__PURE__ */ jsx66("div", { className: cn57("w-full md:hidden", mobileClassName), children: /* @__PURE__ */ jsx66(
13515
+ /* @__PURE__ */ jsx67("div", { className: cn58("w-full md:hidden", mobileClassName), children: /* @__PURE__ */ jsx67(
13451
13516
  PricingTableMobile,
13452
13517
  {
13453
13518
  title,
@@ -13464,10 +13529,10 @@ var PricingTable = React66.forwardRef(
13464
13529
  PricingTable.displayName = "PricingTable";
13465
13530
 
13466
13531
  // virtual-pkg:src/atoms/ProductCard/ProductCard.tsx
13467
- import * as React67 from "react";
13468
- import { jsx as jsx67, jsxs as jsxs64 } from "react/jsx-runtime";
13469
- var cn58 = (...values) => values.filter(Boolean).join(" ");
13470
- var ProductCard = React67.forwardRef(
13532
+ import * as React68 from "react";
13533
+ import { jsx as jsx68, jsxs as jsxs65 } from "react/jsx-runtime";
13534
+ var cn59 = (...values) => values.filter(Boolean).join(" ");
13535
+ var ProductCard = React68.forwardRef(
13471
13536
  ({
13472
13537
  title = "Payment link \u2014 Standard",
13473
13538
  status = "Live mode",
@@ -13482,13 +13547,13 @@ var ProductCard = React67.forwardRef(
13482
13547
  className,
13483
13548
  ...rest
13484
13549
  }, ref) => {
13485
- const titleId = React67.useId();
13486
- return /* @__PURE__ */ jsxs64(
13550
+ const titleId = React68.useId();
13551
+ return /* @__PURE__ */ jsxs65(
13487
13552
  "article",
13488
13553
  {
13489
13554
  ref,
13490
13555
  "aria-labelledby": titleId,
13491
- className: cn58(
13556
+ className: cn59(
13492
13557
  "flex w-full flex-col rounded-lg border bg-surface p-xl",
13493
13558
  "transition duration-200 ease-out",
13494
13559
  elevated ? "border-hairline-strong shadow-md" : "border-hairline shadow-card",
@@ -13496,14 +13561,14 @@ var ProductCard = React67.forwardRef(
13496
13561
  ),
13497
13562
  ...rest,
13498
13563
  children: [
13499
- /* @__PURE__ */ jsx67(
13564
+ /* @__PURE__ */ jsx68(
13500
13565
  "div",
13501
13566
  {
13502
13567
  "aria-hidden": "true",
13503
13568
  className: "rounded-md bg-gradient-to-b from-surface-soft to-surface-strong p-md",
13504
- children: /* @__PURE__ */ jsxs64("div", { className: "rounded-sm border border-hairline-soft bg-surface p-md shadow-sm", children: [
13505
- /* @__PURE__ */ jsxs64("div", { className: "flex items-center gap-sm", children: [
13506
- /* @__PURE__ */ jsx67(
13569
+ children: /* @__PURE__ */ jsxs65("div", { className: "rounded-sm border border-hairline-soft bg-surface p-md shadow-sm", children: [
13570
+ /* @__PURE__ */ jsxs65("div", { className: "flex items-center gap-sm", children: [
13571
+ /* @__PURE__ */ jsx68(
13507
13572
  Icon,
13508
13573
  {
13509
13574
  name: icon,
@@ -13512,24 +13577,24 @@ var ProductCard = React67.forwardRef(
13512
13577
  className: "text-primary"
13513
13578
  }
13514
13579
  ),
13515
- /* @__PURE__ */ jsx67("span", { className: "min-w-0 truncate text-body-sm text-ink", children: mockupLabel })
13580
+ /* @__PURE__ */ jsx68("span", { className: "min-w-0 truncate text-body-sm text-ink", children: mockupLabel })
13516
13581
  ] }),
13517
- /* @__PURE__ */ jsxs64("div", { className: "mt-md flex flex-col gap-sm", children: [
13518
- /* @__PURE__ */ jsx67("span", { className: "h-2 w-full rounded-full bg-skeleton" }),
13519
- /* @__PURE__ */ jsx67("span", { className: "h-2 w-4/5 rounded-full bg-skeleton" }),
13520
- /* @__PURE__ */ jsx67("span", { className: "h-2 w-1/2 rounded-full bg-skeleton" })
13582
+ /* @__PURE__ */ jsxs65("div", { className: "mt-md flex flex-col gap-sm", children: [
13583
+ /* @__PURE__ */ jsx68("span", { className: "h-2 w-full rounded-full bg-skeleton" }),
13584
+ /* @__PURE__ */ jsx68("span", { className: "h-2 w-4/5 rounded-full bg-skeleton" }),
13585
+ /* @__PURE__ */ jsx68("span", { className: "h-2 w-1/2 rounded-full bg-skeleton" })
13521
13586
  ] }),
13522
- /* @__PURE__ */ jsx67("span", { className: "mt-md block h-5 w-full rounded-full bg-primary" })
13587
+ /* @__PURE__ */ jsx68("span", { className: "mt-md block h-5 w-full rounded-full bg-primary" })
13523
13588
  ] })
13524
13589
  }
13525
13590
  ),
13526
- /* @__PURE__ */ jsx67("h3", { id: titleId, className: "mt-lg text-heading-lg text-ink text-balance", children: title }),
13527
- /* @__PURE__ */ jsx67("div", { className: "mt-md", children: /* @__PURE__ */ jsx67(Badge, { variant: "soft", tone: "info", size: "sm", children: /* @__PURE__ */ jsx67("span", { className: "text-micro-cap", children: status }) }) }),
13528
- /* @__PURE__ */ jsxs64("p", { className: "mt-md flex flex-wrap items-baseline gap-sm", children: [
13529
- /* @__PURE__ */ jsx67("span", { className: "text-display-md text-ink tabular-nums", children: amount }),
13530
- period ? /* @__PURE__ */ jsx67("span", { className: "text-body-lg text-muted", children: period }) : null
13591
+ /* @__PURE__ */ jsx68("h3", { id: titleId, className: "mt-lg text-heading-lg text-ink text-balance", children: title }),
13592
+ /* @__PURE__ */ jsx68("div", { className: "mt-md", children: /* @__PURE__ */ jsx68(Badge, { variant: "soft", tone: "info", size: "sm", children: /* @__PURE__ */ jsx68("span", { className: "text-micro-cap", children: status }) }) }),
13593
+ /* @__PURE__ */ jsxs65("p", { className: "mt-md flex flex-wrap items-baseline gap-sm", children: [
13594
+ /* @__PURE__ */ jsx68("span", { className: "text-display-md text-ink tabular-nums", children: amount }),
13595
+ period ? /* @__PURE__ */ jsx68("span", { className: "text-body-lg text-muted", children: period }) : null
13531
13596
  ] }),
13532
- /* @__PURE__ */ jsx67("div", { className: "mt-auto pt-xl", children: /* @__PURE__ */ jsx67(
13597
+ /* @__PURE__ */ jsx68("div", { className: "mt-auto pt-xl", children: /* @__PURE__ */ jsx68(
13533
13598
  Button,
13534
13599
  {
13535
13600
  variant: "primary",
@@ -13548,9 +13613,9 @@ var ProductCard = React67.forwardRef(
13548
13613
  ProductCard.displayName = "ProductCard";
13549
13614
 
13550
13615
  // virtual-pkg:src/atoms/ProductCardGrid/ProductCardGrid.tsx
13551
- import * as React68 from "react";
13552
- import { jsx as jsx68, jsxs as jsxs65 } from "react/jsx-runtime";
13553
- var cn59 = (...values) => values.filter(Boolean).join(" ");
13616
+ import * as React69 from "react";
13617
+ import { jsx as jsx69, jsxs as jsxs66 } from "react/jsx-runtime";
13618
+ var cn60 = (...values) => values.filter(Boolean).join(" ");
13554
13619
  var DEFAULT_ITEMS5 = [
13555
13620
  {
13556
13621
  id: "standard",
@@ -13577,7 +13642,7 @@ var DEFAULT_ITEMS5 = [
13577
13642
  icon: "layers"
13578
13643
  }
13579
13644
  ];
13580
- var ProductCardGrid = React68.forwardRef(
13645
+ var ProductCardGrid = React69.forwardRef(
13581
13646
  ({
13582
13647
  heading = "Product card grid",
13583
13648
  description,
@@ -13588,27 +13653,27 @@ var ProductCardGrid = React68.forwardRef(
13588
13653
  className,
13589
13654
  ...rest
13590
13655
  }, ref) => {
13591
- const [internalSelected, setInternalSelected] = React68.useState(defaultSelectedId);
13656
+ const [internalSelected, setInternalSelected] = React69.useState(defaultSelectedId);
13592
13657
  const isControlled = selectedId !== void 0;
13593
13658
  const activeId = isControlled ? selectedId : internalSelected;
13594
- const headingId = React68.useId();
13659
+ const headingId = React69.useId();
13595
13660
  const handleSelect = (id) => {
13596
13661
  if (!isControlled) setInternalSelected(id);
13597
13662
  onSelect?.(id);
13598
13663
  };
13599
- return /* @__PURE__ */ jsxs65(
13664
+ return /* @__PURE__ */ jsxs66(
13600
13665
  "section",
13601
13666
  {
13602
13667
  ref,
13603
13668
  "aria-labelledby": headingId,
13604
- className: cn59("w-full rounded-lg", className),
13669
+ className: cn60("w-full rounded-lg", className),
13605
13670
  ...rest,
13606
13671
  children: [
13607
- /* @__PURE__ */ jsx68("h2", { id: headingId, className: "text-display-lg text-ink", children: heading }),
13608
- description ? /* @__PURE__ */ jsx68("p", { className: "mt-sm max-w-2xl text-body-lg text-muted", children: description }) : null,
13609
- /* @__PURE__ */ jsx68("div", { className: "mt-xl grid grid-cols-1 gap-gutter sm:grid-cols-2 md:grid-cols-3", children: items.map((item) => {
13672
+ /* @__PURE__ */ jsx69("h2", { id: headingId, className: "text-display-lg text-ink", children: heading }),
13673
+ description ? /* @__PURE__ */ jsx69("p", { className: "mt-sm max-w-2xl text-body-lg text-muted", children: description }) : null,
13674
+ /* @__PURE__ */ jsx69("div", { className: "mt-xl grid grid-cols-1 gap-gutter sm:grid-cols-2 md:grid-cols-3", children: items.map((item) => {
13610
13675
  const { id, className: itemClassName, ...cardProps } = item;
13611
- return /* @__PURE__ */ jsx68(
13676
+ return /* @__PURE__ */ jsx69(
13612
13677
  ProductCard,
13613
13678
  {
13614
13679
  ...cardProps,
@@ -13630,9 +13695,9 @@ var ProductCardGrid = React68.forwardRef(
13630
13695
  ProductCardGrid.displayName = "ProductCardGrid";
13631
13696
 
13632
13697
  // virtual-pkg:src/atoms/ProgressBar/ProgressBar.tsx
13633
- import * as React69 from "react";
13634
- import { jsx as jsx69, jsxs as jsxs66 } from "react/jsx-runtime";
13635
- var cn60 = (...values) => values.filter(Boolean).join(" ");
13698
+ import * as React70 from "react";
13699
+ import { jsx as jsx70, jsxs as jsxs67 } from "react/jsx-runtime";
13700
+ var cn61 = (...values) => values.filter(Boolean).join(" ");
13636
13701
  var STATE_TEXT = {
13637
13702
  complete: "complete",
13638
13703
  current: "current step",
@@ -13672,7 +13737,7 @@ var segmentStyles = {
13672
13737
  neutral: "bg-hairline-strong"
13673
13738
  };
13674
13739
  var tabular3 = { fontVariantNumeric: "tabular-nums" };
13675
- var ProgressBar = React69.forwardRef(
13740
+ var ProgressBar = React70.forwardRef(
13676
13741
  ({
13677
13742
  variant = "segments",
13678
13743
  steps = [],
@@ -13688,14 +13753,14 @@ var ProgressBar = React69.forwardRef(
13688
13753
  ...rest
13689
13754
  }, ref) => {
13690
13755
  if (variant === "steps") {
13691
- return /* @__PURE__ */ jsxs66(
13756
+ return /* @__PURE__ */ jsxs67(
13692
13757
  "div",
13693
13758
  {
13694
13759
  ref,
13695
- className: cn60("flex w-full items-center gap-lg", className),
13760
+ className: cn61("flex w-full items-center gap-lg", className),
13696
13761
  ...rest,
13697
13762
  children: [
13698
- /* @__PURE__ */ jsx69(
13763
+ /* @__PURE__ */ jsx70(
13699
13764
  "ol",
13700
13765
  {
13701
13766
  "aria-label": ariaLabel,
@@ -13706,42 +13771,42 @@ var ProgressBar = React69.forwardRef(
13706
13771
  children: steps.map((step, index) => {
13707
13772
  const state = step.state ?? "upcoming";
13708
13773
  const previous = index > 0 ? steps[index - 1] : void 0;
13709
- return /* @__PURE__ */ jsxs66(
13774
+ return /* @__PURE__ */ jsxs67(
13710
13775
  "li",
13711
13776
  {
13712
13777
  "aria-current": state === "current" ? "step" : void 0,
13713
13778
  className: "relative flex flex-col items-center",
13714
13779
  children: [
13715
- previous ? /* @__PURE__ */ jsx69(
13780
+ previous ? /* @__PURE__ */ jsx70(
13716
13781
  "span",
13717
13782
  {
13718
13783
  "aria-hidden": "true",
13719
- className: cn60(
13784
+ className: cn61(
13720
13785
  "absolute left-0 right-1/2 top-3.5 h-0.5 -translate-y-1/2 rounded-full transition-colors duration-200 ease-out",
13721
13786
  connectorColor(previous, step)
13722
13787
  )
13723
13788
  }
13724
13789
  ) : null,
13725
- /* @__PURE__ */ jsxs66("span", { className: "relative z-10 flex size-7 items-center justify-center", children: [
13726
- state === "current" ? /* @__PURE__ */ jsx69(
13790
+ /* @__PURE__ */ jsxs67("span", { className: "relative z-10 flex size-7 items-center justify-center", children: [
13791
+ state === "current" ? /* @__PURE__ */ jsx70(
13727
13792
  "span",
13728
13793
  {
13729
13794
  "aria-hidden": "true",
13730
13795
  className: "absolute size-6 rounded-full bg-primary/15"
13731
13796
  }
13732
13797
  ) : null,
13733
- /* @__PURE__ */ jsx69("span", { className: cn60(nodeBase, nodeStyles[state]), children: state === "error" ? /* @__PURE__ */ jsx69(Icon, { name: "x", size: 10, tone: "on-dark", strokeWidth: 3 }) : null })
13798
+ /* @__PURE__ */ jsx70("span", { className: cn61(nodeBase, nodeStyles[state]), children: state === "error" ? /* @__PURE__ */ jsx70(Icon, { name: "x", size: 10, tone: "on-dark", strokeWidth: 3 }) : null })
13734
13799
  ] }),
13735
- /* @__PURE__ */ jsxs66(
13800
+ /* @__PURE__ */ jsxs67(
13736
13801
  "span",
13737
13802
  {
13738
- className: cn60(
13803
+ className: cn61(
13739
13804
  "mt-sm whitespace-nowrap text-center text-body-sm",
13740
13805
  labelStyles[state]
13741
13806
  ),
13742
13807
  children: [
13743
13808
  step.label,
13744
- /* @__PURE__ */ jsx69("span", { className: "sr-only", children: ` (${STATE_TEXT[state]})` })
13809
+ /* @__PURE__ */ jsx70("span", { className: "sr-only", children: ` (${STATE_TEXT[state]})` })
13745
13810
  ]
13746
13811
  }
13747
13812
  )
@@ -13752,7 +13817,7 @@ var ProgressBar = React69.forwardRef(
13752
13817
  })
13753
13818
  }
13754
13819
  ),
13755
- status ? /* @__PURE__ */ jsx69("span", { className: "shrink-0 text-micro-cap uppercase tracking-micro-cap text-muted", children: status }) : null
13820
+ status ? /* @__PURE__ */ jsx70("span", { className: "shrink-0 text-micro-cap uppercase tracking-micro-cap text-muted", children: status }) : null
13756
13821
  ]
13757
13822
  }
13758
13823
  );
@@ -13760,20 +13825,20 @@ var ProgressBar = React69.forwardRef(
13760
13825
  const safeTotal = total > 0 ? total : 1;
13761
13826
  const counted = segments.reduce((sum, segment) => sum + segment.value, 0);
13762
13827
  const markerPercent = marker === void 0 ? null : Math.min(100, Math.max(0, marker / safeTotal * 100));
13763
- return /* @__PURE__ */ jsxs66("div", { ref, className: cn60("flex w-full flex-col", className), ...rest, children: [
13764
- valueLabel || valueDetail ? /* @__PURE__ */ jsxs66(
13828
+ return /* @__PURE__ */ jsxs67("div", { ref, className: cn61("flex w-full flex-col", className), ...rest, children: [
13829
+ valueLabel || valueDetail ? /* @__PURE__ */ jsxs67(
13765
13830
  "div",
13766
13831
  {
13767
13832
  className: "mb-md flex items-baseline justify-end gap-xs text-right",
13768
13833
  style: tabular3,
13769
13834
  children: [
13770
- valueLabel ? /* @__PURE__ */ jsx69("span", { className: "text-body-md text-ink", children: valueLabel }) : null,
13771
- valueDetail ? /* @__PURE__ */ jsx69("span", { className: "text-body-md text-muted", children: valueDetail }) : null
13835
+ valueLabel ? /* @__PURE__ */ jsx70("span", { className: "text-body-md text-ink", children: valueLabel }) : null,
13836
+ valueDetail ? /* @__PURE__ */ jsx70("span", { className: "text-body-md text-muted", children: valueDetail }) : null
13772
13837
  ]
13773
13838
  }
13774
13839
  ) : null,
13775
- /* @__PURE__ */ jsxs66("div", { className: "relative", children: [
13776
- /* @__PURE__ */ jsx69(
13840
+ /* @__PURE__ */ jsxs67("div", { className: "relative", children: [
13841
+ /* @__PURE__ */ jsx70(
13777
13842
  "div",
13778
13843
  {
13779
13844
  role: "progressbar",
@@ -13782,11 +13847,11 @@ var ProgressBar = React69.forwardRef(
13782
13847
  "aria-valuemax": safeTotal,
13783
13848
  "aria-valuenow": counted,
13784
13849
  className: "flex h-3 w-full overflow-hidden rounded-full bg-surface-strong",
13785
- children: segments.map((segment, index) => /* @__PURE__ */ jsx69(
13850
+ children: segments.map((segment, index) => /* @__PURE__ */ jsx70(
13786
13851
  "span",
13787
13852
  {
13788
13853
  "aria-hidden": "true",
13789
- className: cn60(
13854
+ className: cn61(
13790
13855
  "h-full transition-[width,background-color] duration-200 ease-out",
13791
13856
  segmentStyles[segment.tone ?? "primary"]
13792
13857
  ),
@@ -13798,7 +13863,7 @@ var ProgressBar = React69.forwardRef(
13798
13863
  ))
13799
13864
  }
13800
13865
  ),
13801
- markerPercent !== null ? /* @__PURE__ */ jsx69(
13866
+ markerPercent !== null ? /* @__PURE__ */ jsx70(
13802
13867
  "span",
13803
13868
  {
13804
13869
  "aria-hidden": "true",
@@ -13807,26 +13872,26 @@ var ProgressBar = React69.forwardRef(
13807
13872
  }
13808
13873
  ) : null
13809
13874
  ] }),
13810
- showLegend && segments.length > 0 ? /* @__PURE__ */ jsx69("ul", { className: "mt-lg flex list-none flex-wrap items-center gap-x-xl gap-y-sm p-0", children: segments.map((segment, index) => {
13875
+ showLegend && segments.length > 0 ? /* @__PURE__ */ jsx70("ul", { className: "mt-lg flex list-none flex-wrap items-center gap-x-xl gap-y-sm p-0", children: segments.map((segment, index) => {
13811
13876
  const tone = segment.tone ?? "primary";
13812
- return /* @__PURE__ */ jsxs66(
13877
+ return /* @__PURE__ */ jsxs67(
13813
13878
  "li",
13814
13879
  {
13815
13880
  className: "flex items-center gap-sm text-body-sm text-body",
13816
13881
  children: [
13817
- /* @__PURE__ */ jsx69(
13882
+ /* @__PURE__ */ jsx70(
13818
13883
  "span",
13819
13884
  {
13820
13885
  "aria-hidden": "true",
13821
- className: cn60(
13886
+ className: cn61(
13822
13887
  "size-2.5 shrink-0 rounded-xs",
13823
13888
  segmentStyles[tone]
13824
13889
  )
13825
13890
  }
13826
13891
  ),
13827
- /* @__PURE__ */ jsxs66("span", { children: [
13892
+ /* @__PURE__ */ jsxs67("span", { children: [
13828
13893
  segment.label,
13829
- /* @__PURE__ */ jsx69("span", { className: "ml-xxs text-body", style: tabular3, children: segment.value.toLocaleString("en-US") })
13894
+ /* @__PURE__ */ jsx70("span", { className: "ml-xxs text-body", style: tabular3, children: segment.value.toLocaleString("en-US") })
13830
13895
  ] })
13831
13896
  ]
13832
13897
  },
@@ -13839,10 +13904,10 @@ var ProgressBar = React69.forwardRef(
13839
13904
  ProgressBar.displayName = "ProgressBar";
13840
13905
 
13841
13906
  // virtual-pkg:src/atoms/Radio/Radio.tsx
13842
- import * as React70 from "react";
13843
- import { jsx as jsx70, jsxs as jsxs67 } from "react/jsx-runtime";
13844
- var cn61 = (...values) => values.filter(Boolean).join(" ");
13845
- var Radio = React70.forwardRef(
13907
+ import * as React71 from "react";
13908
+ import { jsx as jsx71, jsxs as jsxs68 } from "react/jsx-runtime";
13909
+ var cn62 = (...values) => values.filter(Boolean).join(" ");
13910
+ var Radio = React71.forwardRef(
13846
13911
  ({
13847
13912
  label,
13848
13913
  description,
@@ -13858,23 +13923,23 @@ var Radio = React70.forwardRef(
13858
13923
  className,
13859
13924
  ...rest
13860
13925
  }, ref) => {
13861
- const [internalChecked, setInternalChecked] = React70.useState(defaultChecked);
13926
+ const [internalChecked, setInternalChecked] = React71.useState(defaultChecked);
13862
13927
  const isControlled = checked !== void 0;
13863
13928
  const isChecked = isControlled ? Boolean(checked) : internalChecked;
13864
- const generatedId = React70.useId();
13929
+ const generatedId = React71.useId();
13865
13930
  const inputId = id ?? `radio-${generatedId}`;
13866
13931
  const isCard = chrome === "card";
13867
13932
  const handleChange = (event) => {
13868
13933
  if (!isControlled) setInternalChecked(event.target.checked);
13869
13934
  onChange?.(event.target.value, event);
13870
13935
  };
13871
- return /* @__PURE__ */ jsxs67(
13936
+ return /* @__PURE__ */ jsxs68(
13872
13937
  "label",
13873
13938
  {
13874
13939
  htmlFor: inputId,
13875
13940
  "data-state": isChecked ? "selected" : "unselected",
13876
13941
  "data-disabled": disabled ? "" : void 0,
13877
- className: cn61(
13942
+ className: cn62(
13878
13943
  "group/radio flex items-center gap-md transition duration-200 ease-out",
13879
13944
  isCard ? "w-full rounded-lg" : "w-auto",
13880
13945
  disabled ? "cursor-not-allowed" : "cursor-pointer",
@@ -13883,16 +13948,16 @@ var Radio = React70.forwardRef(
13883
13948
  className
13884
13949
  ),
13885
13950
  children: [
13886
- /* @__PURE__ */ jsxs67(
13951
+ /* @__PURE__ */ jsxs68(
13887
13952
  "span",
13888
13953
  {
13889
- className: cn61(
13954
+ className: cn62(
13890
13955
  "relative flex shrink-0 items-center justify-center rounded-full border-2 bg-canvas transition-colors duration-200 ease-out",
13891
13956
  size === "sm" ? "size-4" : "size-5",
13892
13957
  disabled ? "border-hairline" : isChecked ? "border-primary" : invalid ? "border-semantic-error" : "border-hairline-strong group-hover/radio:border-primary-focus"
13893
13958
  ),
13894
13959
  children: [
13895
- /* @__PURE__ */ jsx70(
13960
+ /* @__PURE__ */ jsx71(
13896
13961
  "input",
13897
13962
  {
13898
13963
  ref,
@@ -13907,11 +13972,11 @@ var Radio = React70.forwardRef(
13907
13972
  ...rest
13908
13973
  }
13909
13974
  ),
13910
- /* @__PURE__ */ jsx70(
13975
+ /* @__PURE__ */ jsx71(
13911
13976
  "span",
13912
13977
  {
13913
13978
  "aria-hidden": "true",
13914
- className: cn61(
13979
+ className: cn62(
13915
13980
  "rounded-full transition duration-200 ease-out",
13916
13981
  size === "sm" ? "size-1.5" : "size-2",
13917
13982
  disabled ? "bg-primary-disabled" : isChecked ? "scale-100 bg-primary opacity-100" : "scale-50 opacity-0"
@@ -13921,21 +13986,21 @@ var Radio = React70.forwardRef(
13921
13986
  ]
13922
13987
  }
13923
13988
  ),
13924
- label || description ? /* @__PURE__ */ jsxs67("span", { className: "flex min-w-0 flex-1 flex-col gap-xxs", children: [
13925
- label ? /* @__PURE__ */ jsx70(
13989
+ label || description ? /* @__PURE__ */ jsxs68("span", { className: "flex min-w-0 flex-1 flex-col gap-xxs", children: [
13990
+ label ? /* @__PURE__ */ jsx71(
13926
13991
  "span",
13927
13992
  {
13928
- className: cn61(
13993
+ className: cn62(
13929
13994
  "text-label truncate transition-colors duration-200 ease-out",
13930
13995
  disabled ? "text-muted" : isChecked ? "text-ink" : "text-body"
13931
13996
  ),
13932
13997
  children: label
13933
13998
  }
13934
13999
  ) : null,
13935
- description ? /* @__PURE__ */ jsx70(
14000
+ description ? /* @__PURE__ */ jsx71(
13936
14001
  "span",
13937
14002
  {
13938
- className: cn61(
14003
+ className: cn62(
13939
14004
  "text-caption truncate transition-colors duration-200 ease-out",
13940
14005
  disabled ? "text-muted-soft" : "text-muted"
13941
14006
  ),
@@ -13943,11 +14008,11 @@ var Radio = React70.forwardRef(
13943
14008
  }
13944
14009
  ) : null
13945
14010
  ] }) : null,
13946
- valueLabel ? /* @__PURE__ */ jsx70(
14011
+ valueLabel ? /* @__PURE__ */ jsx71(
13947
14012
  "span",
13948
14013
  {
13949
14014
  style: { fontVariantNumeric: "tabular-nums" },
13950
- className: cn61(
14015
+ className: cn62(
13951
14016
  "shrink-0 text-label transition-colors duration-200 ease-out",
13952
14017
  disabled ? "text-muted-soft" : isChecked ? "text-ink" : "text-body"
13953
14018
  ),
@@ -13962,9 +14027,9 @@ var Radio = React70.forwardRef(
13962
14027
  Radio.displayName = "Radio";
13963
14028
 
13964
14029
  // virtual-pkg:src/atoms/Rating/Rating.tsx
13965
- import * as React71 from "react";
13966
- import { jsx as jsx71, jsxs as jsxs68 } from "react/jsx-runtime";
13967
- var cn62 = (...values) => values.filter(Boolean).join(" ");
14030
+ import * as React72 from "react";
14031
+ import { jsx as jsx72, jsxs as jsxs69 } from "react/jsx-runtime";
14032
+ var cn63 = (...values) => values.filter(Boolean).join(" ");
13968
14033
  var STAR_PX = { sm: 16, md: 20, lg: 30 };
13969
14034
  var STAR_GAP = {
13970
14035
  sm: "gap-xxs",
@@ -13979,14 +14044,14 @@ var SCORE_TEXT = {
13979
14044
  var clamp = (input, min, max) => Math.min(max, Math.max(min, input));
13980
14045
  var formatScore = (input, precision) => input.toFixed(Math.max(0, precision));
13981
14046
  var tabular4 = { fontVariantNumeric: "tabular-nums" };
13982
- var StarGlyph = ({ fill, px }) => /* @__PURE__ */ jsxs68(
14047
+ var StarGlyph = ({ fill, px }) => /* @__PURE__ */ jsxs69(
13983
14048
  "span",
13984
14049
  {
13985
14050
  "aria-hidden": "true",
13986
14051
  className: "relative inline-flex shrink-0",
13987
14052
  style: { width: px, height: px },
13988
14053
  children: [
13989
- /* @__PURE__ */ jsx71(
14054
+ /* @__PURE__ */ jsx72(
13990
14055
  Icon,
13991
14056
  {
13992
14057
  name: "star",
@@ -13995,12 +14060,12 @@ var StarGlyph = ({ fill, px }) => /* @__PURE__ */ jsxs68(
13995
14060
  style: { color: "var(--color-hairline-strong)" }
13996
14061
  }
13997
14062
  ),
13998
- /* @__PURE__ */ jsx71(
14063
+ /* @__PURE__ */ jsx72(
13999
14064
  "span",
14000
14065
  {
14001
14066
  className: "absolute inset-y-0 left-0 overflow-hidden transition-[width] duration-200 ease-out",
14002
14067
  style: { width: `${fill * 100}%` },
14003
- children: /* @__PURE__ */ jsx71(
14068
+ children: /* @__PURE__ */ jsx72(
14004
14069
  Icon,
14005
14070
  {
14006
14071
  name: "star",
@@ -14015,7 +14080,7 @@ var StarGlyph = ({ fill, px }) => /* @__PURE__ */ jsxs68(
14015
14080
  ]
14016
14081
  }
14017
14082
  );
14018
- var Rating = React71.forwardRef(
14083
+ var Rating = React72.forwardRef(
14019
14084
  ({
14020
14085
  value,
14021
14086
  defaultValue,
@@ -14035,10 +14100,10 @@ var Rating = React71.forwardRef(
14035
14100
  className,
14036
14101
  ...rest
14037
14102
  }, ref) => {
14038
- const [uncontrolled, setUncontrolled] = React71.useState(
14103
+ const [uncontrolled, setUncontrolled] = React72.useState(
14039
14104
  defaultValue ?? value ?? 0
14040
14105
  );
14041
- const [hover, setHover] = React71.useState(null);
14106
+ const [hover, setHover] = React72.useState(null);
14042
14107
  const isControlled = value !== void 0;
14043
14108
  const committed = clamp(isControlled ? value : uncontrolled, 0, max);
14044
14109
  const interactive = !readOnly;
@@ -14077,10 +14142,10 @@ var Rating = React71.forwardRef(
14077
14142
  commit(next);
14078
14143
  };
14079
14144
  const px = STAR_PX[size];
14080
- const starRow = /* @__PURE__ */ jsx71(
14145
+ const starRow = /* @__PURE__ */ jsx72(
14081
14146
  "div",
14082
14147
  {
14083
- className: cn62("inline-flex items-center", STAR_GAP[size]),
14148
+ className: cn63("inline-flex items-center", STAR_GAP[size]),
14084
14149
  ...interactive ? {
14085
14150
  role: "radiogroup",
14086
14151
  "aria-label": label,
@@ -14095,9 +14160,9 @@ var Rating = React71.forwardRef(
14095
14160
  children: Array.from({ length: Math.max(1, max) }, (_, index) => {
14096
14161
  const fill = clamp(shown - index, 0, 1);
14097
14162
  if (!interactive) {
14098
- return /* @__PURE__ */ jsx71(StarGlyph, { fill, px }, index);
14163
+ return /* @__PURE__ */ jsx72(StarGlyph, { fill, px }, index);
14099
14164
  }
14100
- return /* @__PURE__ */ jsx71(
14165
+ return /* @__PURE__ */ jsx72(
14101
14166
  Button,
14102
14167
  {
14103
14168
  variant: "bare",
@@ -14110,43 +14175,43 @@ var Rating = React71.forwardRef(
14110
14175
  onMouseEnter: () => setHover(index + 1),
14111
14176
  onFocus: () => setHover(index + 1),
14112
14177
  className: "text-primary focus-visible:ring-focus-blue focus-visible:ring-offset-0",
14113
- children: /* @__PURE__ */ jsx71(StarGlyph, { fill, px })
14178
+ children: /* @__PURE__ */ jsx72(StarGlyph, { fill, px })
14114
14179
  },
14115
14180
  index
14116
14181
  );
14117
14182
  })
14118
14183
  }
14119
14184
  );
14120
- const scoreBlock = showValue || typeof count === "number" ? /* @__PURE__ */ jsxs68("div", { className: "flex flex-wrap items-baseline gap-sm", style: tabular4, children: [
14121
- showValue ? /* @__PURE__ */ jsx71(
14185
+ const scoreBlock = showValue || typeof count === "number" ? /* @__PURE__ */ jsxs69("div", { className: "flex flex-wrap items-baseline gap-sm", style: tabular4, children: [
14186
+ showValue ? /* @__PURE__ */ jsx72(
14122
14187
  "span",
14123
14188
  {
14124
14189
  "aria-hidden": "true",
14125
- className: cn62("text-ink", SCORE_TEXT[size]),
14190
+ className: cn63("text-ink", SCORE_TEXT[size]),
14126
14191
  children: formatScore(shown, precision)
14127
14192
  }
14128
14193
  ) : null,
14129
- typeof count === "number" ? /* @__PURE__ */ jsxs68("span", { "aria-hidden": "true", className: "text-body-sm text-muted", children: [
14194
+ typeof count === "number" ? /* @__PURE__ */ jsxs69("span", { "aria-hidden": "true", className: "text-body-sm text-muted", children: [
14130
14195
  "(",
14131
14196
  count.toLocaleString("en-US"),
14132
14197
  ")"
14133
14198
  ] }) : null
14134
14199
  ] }) : null;
14135
- return /* @__PURE__ */ jsxs68(
14200
+ return /* @__PURE__ */ jsxs69(
14136
14201
  "div",
14137
14202
  {
14138
14203
  ref,
14139
- className: cn62("flex w-full flex-col items-start", className),
14204
+ className: cn63("flex w-full flex-col items-start", className),
14140
14205
  ...rest,
14141
14206
  children: [
14142
- interactive ? null : /* @__PURE__ */ jsxs68("span", { className: "sr-only", children: [
14207
+ interactive ? null : /* @__PURE__ */ jsxs69("span", { className: "sr-only", children: [
14143
14208
  `${formatScore(committed, precision)} out of ${max} stars`,
14144
14209
  typeof count === "number" ? ` from ${count.toLocaleString("en-US")} ${countLabel}` : ""
14145
14210
  ] }),
14146
- /* @__PURE__ */ jsxs68(
14211
+ /* @__PURE__ */ jsxs69(
14147
14212
  "div",
14148
14213
  {
14149
- className: cn62(
14214
+ className: cn63(
14150
14215
  "flex w-full",
14151
14216
  valuePlacement === "inline" ? "flex-wrap items-center gap-sm" : "flex-col items-start gap-sm"
14152
14217
  ),
@@ -14156,14 +14221,14 @@ var Rating = React71.forwardRef(
14156
14221
  ]
14157
14222
  }
14158
14223
  ),
14159
- caption ? /* @__PURE__ */ jsx71("p", { className: "mt-xs text-body-sm text-muted", children: caption }) : null,
14160
- breakdown && breakdown.length > 0 ? /* @__PURE__ */ jsx71("ul", { className: "mt-lg flex w-full list-none flex-col gap-md p-0", children: breakdown.map((item) => /* @__PURE__ */ jsxs68(
14224
+ caption ? /* @__PURE__ */ jsx72("p", { className: "mt-xs text-body-sm text-muted", children: caption }) : null,
14225
+ breakdown && breakdown.length > 0 ? /* @__PURE__ */ jsx72("ul", { className: "mt-lg flex w-full list-none flex-col gap-md p-0", children: breakdown.map((item) => /* @__PURE__ */ jsxs69(
14161
14226
  "li",
14162
14227
  {
14163
14228
  className: "grid grid-cols-[minmax(0,5.5rem)_minmax(0,1fr)_auto] items-center gap-lg",
14164
14229
  children: [
14165
- /* @__PURE__ */ jsx71("span", { className: "truncate text-body-sm text-ink", children: item.label }),
14166
- /* @__PURE__ */ jsx71(
14230
+ /* @__PURE__ */ jsx72("span", { className: "truncate text-body-sm text-ink", children: item.label }),
14231
+ /* @__PURE__ */ jsx72(
14167
14232
  ProgressBar,
14168
14233
  {
14169
14234
  ariaLabel: `${item.label}: ${formatScore(clamp(item.value, 0, max), precision)} out of ${max}`,
@@ -14171,7 +14236,7 @@ var Rating = React71.forwardRef(
14171
14236
  total: max
14172
14237
  }
14173
14238
  ),
14174
- /* @__PURE__ */ jsx71(
14239
+ /* @__PURE__ */ jsx72(
14175
14240
  "span",
14176
14241
  {
14177
14242
  className: "text-body-sm text-ink",
@@ -14191,10 +14256,10 @@ var Rating = React71.forwardRef(
14191
14256
  Rating.displayName = "Rating";
14192
14257
 
14193
14258
  // virtual-pkg:src/atoms/SearchBar/SearchBar.tsx
14194
- import * as React72 from "react";
14195
- import { jsx as jsx72, jsxs as jsxs69 } from "react/jsx-runtime";
14196
- var cn63 = (...values) => values.filter(Boolean).join(" ");
14197
- var SearchBar = React72.forwardRef(
14259
+ import * as React73 from "react";
14260
+ import { jsx as jsx73, jsxs as jsxs70 } from "react/jsx-runtime";
14261
+ var cn64 = (...values) => values.filter(Boolean).join(" ");
14262
+ var SearchBar = React73.forwardRef(
14198
14263
  ({
14199
14264
  ariaLabel = "Search",
14200
14265
  placeholder = "Search payments",
@@ -14209,7 +14274,7 @@ var SearchBar = React72.forwardRef(
14209
14274
  className,
14210
14275
  ...rest
14211
14276
  }, ref) => {
14212
- const [internalQuery, setInternalQuery] = React72.useState(
14277
+ const [internalQuery, setInternalQuery] = React73.useState(
14213
14278
  defaultValue ?? ""
14214
14279
  );
14215
14280
  const query = value !== void 0 ? value : internalQuery;
@@ -14217,39 +14282,39 @@ var SearchBar = React72.forwardRef(
14217
14282
  if (value === void 0) setInternalQuery(event.target.value);
14218
14283
  onQueryChange?.(event.target.value);
14219
14284
  };
14220
- return /* @__PURE__ */ jsx72(
14285
+ return /* @__PURE__ */ jsx73(
14221
14286
  "form",
14222
14287
  {
14223
14288
  role: "search",
14224
- className: cn63("w-full max-w-3xl", className),
14289
+ className: cn64("w-full max-w-3xl", className),
14225
14290
  onSubmit: (event) => {
14226
14291
  event.preventDefault();
14227
14292
  if (disabled) return;
14228
14293
  onSearch?.(query);
14229
14294
  },
14230
14295
  ...rest,
14231
- children: /* @__PURE__ */ jsxs69(
14296
+ children: /* @__PURE__ */ jsxs70(
14232
14297
  "div",
14233
14298
  {
14234
- className: cn63(
14299
+ className: cn64(
14235
14300
  "flex w-full items-center gap-sm rounded-xl border bg-surface py-xxs pl-base pr-xxs",
14236
14301
  "transition duration-200 ease-out",
14237
14302
  disabled ? "border-hairline-soft bg-surface-soft" : "border-hairline-strong focus-within:border-primary focus-within:ring-2 focus-within:ring-focus-blue/25",
14238
14303
  forceFocus && !disabled ? "border-primary ring-2 ring-focus-blue/25" : ""
14239
14304
  ),
14240
14305
  children: [
14241
- /* @__PURE__ */ jsx72(
14306
+ /* @__PURE__ */ jsx73(
14242
14307
  "span",
14243
14308
  {
14244
14309
  "aria-hidden": "true",
14245
- className: cn63(
14310
+ className: cn64(
14246
14311
  "flex shrink-0 items-center pl-xs",
14247
14312
  disabled ? "text-muted-soft" : "text-ink"
14248
14313
  ),
14249
- children: /* @__PURE__ */ jsx72(Icon, { name: "search", size: 20, strokeWidth: 1.75 })
14314
+ children: /* @__PURE__ */ jsx73(Icon, { name: "search", size: 20, strokeWidth: 1.75 })
14250
14315
  }
14251
14316
  ),
14252
- /* @__PURE__ */ jsx72(
14317
+ /* @__PURE__ */ jsx73(
14253
14318
  Input,
14254
14319
  {
14255
14320
  ref,
@@ -14263,24 +14328,24 @@ var SearchBar = React72.forwardRef(
14263
14328
  disabled,
14264
14329
  autoComplete: "off",
14265
14330
  className: "flex-1",
14266
- inputClassName: cn63(
14331
+ inputClassName: cn64(
14267
14332
  "text-body-lg placeholder:text-muted",
14268
14333
  "[&::-webkit-search-cancel-button]:appearance-none"
14269
14334
  )
14270
14335
  }
14271
14336
  ),
14272
- hint ? /* @__PURE__ */ jsx72(
14337
+ hint ? /* @__PURE__ */ jsx73(
14273
14338
  "span",
14274
14339
  {
14275
14340
  "aria-live": "polite",
14276
- className: cn63(
14341
+ className: cn64(
14277
14342
  "hidden shrink-0 items-center rounded-xl bg-primary-subdued px-md py-xs",
14278
14343
  "text-caption font-weight-label text-primary-on-subdued sm:inline-flex"
14279
14344
  ),
14280
14345
  children: hint
14281
14346
  }
14282
14347
  ) : null,
14283
- /* @__PURE__ */ jsx72(
14348
+ /* @__PURE__ */ jsx73(
14284
14349
  Button,
14285
14350
  {
14286
14351
  type: "submit",
@@ -14301,10 +14366,10 @@ var SearchBar = React72.forwardRef(
14301
14366
  SearchBar.displayName = "SearchBar";
14302
14367
 
14303
14368
  // virtual-pkg:src/atoms/SearchResultsList/SearchResultsList.tsx
14304
- import * as React73 from "react";
14305
- import { jsx as jsx73, jsxs as jsxs70 } from "react/jsx-runtime";
14306
- var cn64 = (...values) => values.filter(Boolean).join(" ");
14307
- var SearchResultsList = React73.forwardRef(
14369
+ import * as React74 from "react";
14370
+ import { jsx as jsx74, jsxs as jsxs71 } from "react/jsx-runtime";
14371
+ var cn65 = (...values) => values.filter(Boolean).join(" ");
14372
+ var SearchResultsList = React74.forwardRef(
14308
14373
  ({
14309
14374
  title = "Search results list",
14310
14375
  searchLabel = "Search results",
@@ -14324,9 +14389,9 @@ var SearchResultsList = React73.forwardRef(
14324
14389
  className,
14325
14390
  ...rest
14326
14391
  }, ref) => {
14327
- const [internalQuery, setInternalQuery] = React73.useState(defaultQuery);
14392
+ const [internalQuery, setInternalQuery] = React74.useState(defaultQuery);
14328
14393
  const currentQuery = query !== void 0 ? query : internalQuery;
14329
- const [internalFilter, setInternalFilter] = React73.useState(
14394
+ const [internalFilter, setInternalFilter] = React74.useState(
14330
14395
  defaultFilter ?? allFilterId
14331
14396
  );
14332
14397
  const currentFilter = activeFilter !== void 0 ? activeFilter : internalFilter;
@@ -14342,7 +14407,7 @@ var SearchResultsList = React73.forwardRef(
14342
14407
  if (activeFilter === void 0) setInternalFilter(filterId);
14343
14408
  onFilterChange?.(filterId);
14344
14409
  };
14345
- const visibleItems = React73.useMemo(() => {
14410
+ const visibleItems = React74.useMemo(() => {
14346
14411
  const needle = currentQuery.trim().toLowerCase();
14347
14412
  return items.filter((item) => {
14348
14413
  const matchesFilter = currentFilter === allFilterId || !item.filter || item.filter === currentFilter;
@@ -14352,35 +14417,35 @@ var SearchResultsList = React73.forwardRef(
14352
14417
  });
14353
14418
  }, [items, currentQuery, currentFilter, allFilterId]);
14354
14419
  const hasQuery = currentQuery.length > 0;
14355
- return /* @__PURE__ */ jsxs70(
14420
+ return /* @__PURE__ */ jsxs71(
14356
14421
  "section",
14357
14422
  {
14358
14423
  ref,
14359
14424
  "aria-label": typeof title === "string" ? title : "Search results",
14360
- className: cn64("flex w-full flex-col gap-lg", className),
14425
+ className: cn65("flex w-full flex-col gap-lg", className),
14361
14426
  ...rest,
14362
14427
  children: [
14363
- title ? /* @__PURE__ */ jsx73("h2", { className: "text-display-lg text-ink", children: title }) : null,
14364
- /* @__PURE__ */ jsxs70("div", { className: "flex flex-col gap-sm md:flex-row md:items-center md:gap-md", children: [
14365
- /* @__PURE__ */ jsxs70(
14428
+ title ? /* @__PURE__ */ jsx74("h2", { className: "text-display-lg text-ink", children: title }) : null,
14429
+ /* @__PURE__ */ jsxs71("div", { className: "flex flex-col gap-sm md:flex-row md:items-center md:gap-md", children: [
14430
+ /* @__PURE__ */ jsxs71(
14366
14431
  "div",
14367
14432
  {
14368
- className: cn64(
14433
+ className: cn65(
14369
14434
  "flex w-full items-center gap-sm rounded-xl border bg-surface px-base py-xxs",
14370
14435
  "border-hairline-strong transition duration-200 ease-out",
14371
14436
  "focus-within:border-primary focus-within:ring-2 focus-within:ring-focus-blue/25",
14372
14437
  "md:min-w-0 md:basis-[46%]"
14373
14438
  ),
14374
14439
  children: [
14375
- /* @__PURE__ */ jsx73(
14440
+ /* @__PURE__ */ jsx74(
14376
14441
  "span",
14377
14442
  {
14378
14443
  "aria-hidden": "true",
14379
14444
  className: "flex shrink-0 items-center text-muted",
14380
- children: /* @__PURE__ */ jsx73(Icon, { name: "search", size: 18, strokeWidth: 1.75 })
14445
+ children: /* @__PURE__ */ jsx74(Icon, { name: "search", size: 18, strokeWidth: 1.75 })
14381
14446
  }
14382
14447
  ),
14383
- /* @__PURE__ */ jsx73(
14448
+ /* @__PURE__ */ jsx74(
14384
14449
  Input,
14385
14450
  {
14386
14451
  chrome: "embedded",
@@ -14391,13 +14456,13 @@ var SearchResultsList = React73.forwardRef(
14391
14456
  ariaLabel: searchLabel,
14392
14457
  autoComplete: "off",
14393
14458
  className: "min-w-0 flex-1",
14394
- inputClassName: cn64(
14459
+ inputClassName: cn65(
14395
14460
  "text-body-md placeholder:text-muted",
14396
14461
  "[&::-webkit-search-cancel-button]:appearance-none"
14397
14462
  )
14398
14463
  }
14399
14464
  ),
14400
- /* @__PURE__ */ jsx73(
14465
+ /* @__PURE__ */ jsx74(
14401
14466
  Button,
14402
14467
  {
14403
14468
  variant: "bare",
@@ -14405,18 +14470,18 @@ var SearchResultsList = React73.forwardRef(
14405
14470
  "aria-label": "Clear search",
14406
14471
  disabled: !hasQuery,
14407
14472
  onClick: handleClear,
14408
- className: cn64(
14473
+ className: cn65(
14409
14474
  "text-muted transition duration-200 ease-out",
14410
14475
  "hover:bg-surface-soft hover:text-ink",
14411
14476
  hasQuery ? "opacity-100" : "pointer-events-none opacity-0"
14412
14477
  ),
14413
- leadingIcon: /* @__PURE__ */ jsx73(Icon, { name: "x", size: 16, strokeWidth: 2 })
14478
+ leadingIcon: /* @__PURE__ */ jsx74(Icon, { name: "x", size: 16, strokeWidth: 2 })
14414
14479
  }
14415
14480
  )
14416
14481
  ]
14417
14482
  }
14418
14483
  ),
14419
- filters.length > 0 ? /* @__PURE__ */ jsx73("div", { className: "flex flex-wrap items-center gap-sm md:shrink-0", children: filters.map((filter) => /* @__PURE__ */ jsx73(
14484
+ filters.length > 0 ? /* @__PURE__ */ jsx74("div", { className: "flex flex-wrap items-center gap-sm md:shrink-0", children: filters.map((filter) => /* @__PURE__ */ jsx74(
14420
14485
  Chip,
14421
14486
  {
14422
14487
  appearance: "outline",
@@ -14428,14 +14493,14 @@ var SearchResultsList = React73.forwardRef(
14428
14493
  filter.id
14429
14494
  )) }) : null
14430
14495
  ] }),
14431
- /* @__PURE__ */ jsxs70("p", { "aria-live": "polite", className: "sr-only", children: [
14496
+ /* @__PURE__ */ jsxs71("p", { "aria-live": "polite", className: "sr-only", children: [
14432
14497
  visibleItems.length,
14433
14498
  " results"
14434
14499
  ] }),
14435
- /* @__PURE__ */ jsx73("div", { className: "overflow-hidden rounded-lg border border-hairline bg-canvas shadow-card", children: visibleItems.length > 0 ? /* @__PURE__ */ jsx73("ul", { className: "flex flex-col p-xs", children: visibleItems.map((item, index) => {
14500
+ /* @__PURE__ */ jsx74("div", { className: "overflow-hidden rounded-lg border border-hairline bg-canvas shadow-card", children: visibleItems.length > 0 ? /* @__PURE__ */ jsx74("ul", { className: "flex flex-col p-xs", children: visibleItems.map((item, index) => {
14436
14501
  const isSelected = item.id === selectedId;
14437
14502
  const isSettled = item.statusKind !== "review";
14438
- return /* @__PURE__ */ jsx73("li", { className: "flex", children: /* @__PURE__ */ jsxs70(
14503
+ return /* @__PURE__ */ jsx74("li", { className: "flex", children: /* @__PURE__ */ jsxs71(
14439
14504
  Button,
14440
14505
  {
14441
14506
  variant: "row",
@@ -14443,42 +14508,42 @@ var SearchResultsList = React73.forwardRef(
14443
14508
  "aria-current": isSelected ? "true" : void 0,
14444
14509
  "data-selected": isSelected || void 0,
14445
14510
  onClick: () => onSelect?.(item),
14446
- className: cn64(
14511
+ className: cn65(
14447
14512
  "py-md",
14448
14513
  index > 0 && "border-t border-hairline-soft",
14449
14514
  "[&>span:first-child]:w-full [&>span:first-child]:justify-start"
14450
14515
  ),
14451
14516
  children: [
14452
- /* @__PURE__ */ jsx73(
14517
+ /* @__PURE__ */ jsx74(
14453
14518
  "span",
14454
14519
  {
14455
14520
  "aria-hidden": "true",
14456
14521
  className: "flex size-11 shrink-0 items-center justify-center rounded-md border border-hairline bg-canvas text-ink",
14457
- children: /* @__PURE__ */ jsx73(Icon, { name: "store", size: 19, strokeWidth: 1.5 })
14522
+ children: /* @__PURE__ */ jsx74(Icon, { name: "store", size: 19, strokeWidth: 1.5 })
14458
14523
  }
14459
14524
  ),
14460
- /* @__PURE__ */ jsxs70("span", { className: "flex min-w-0 flex-1 flex-col gap-xxs pl-sm", children: [
14461
- /* @__PURE__ */ jsx73("span", { className: "truncate text-label text-ink", children: item.name }),
14462
- /* @__PURE__ */ jsx73("span", { className: "truncate text-body-sm text-muted", children: item.reference })
14525
+ /* @__PURE__ */ jsxs71("span", { className: "flex min-w-0 flex-1 flex-col gap-xxs pl-sm", children: [
14526
+ /* @__PURE__ */ jsx74("span", { className: "truncate text-label text-ink", children: item.name }),
14527
+ /* @__PURE__ */ jsx74("span", { className: "truncate text-body-sm text-muted", children: item.reference })
14463
14528
  ] }),
14464
- /* @__PURE__ */ jsx73("span", { className: "hidden w-32 shrink-0 text-body-md text-muted sm:block", children: item.date }),
14465
- /* @__PURE__ */ jsx73("span", { className: "flex w-40 shrink-0 items-center", children: isSettled ? /* @__PURE__ */ jsxs70("span", { className: "inline-flex min-w-0 items-center gap-sm text-body-md text-ink", children: [
14466
- /* @__PURE__ */ jsx73(
14529
+ /* @__PURE__ */ jsx74("span", { className: "hidden w-32 shrink-0 text-body-md text-muted sm:block", children: item.date }),
14530
+ /* @__PURE__ */ jsx74("span", { className: "flex w-40 shrink-0 items-center", children: isSettled ? /* @__PURE__ */ jsxs71("span", { className: "inline-flex min-w-0 items-center gap-sm text-body-md text-ink", children: [
14531
+ /* @__PURE__ */ jsx74(
14467
14532
  "span",
14468
14533
  {
14469
14534
  "aria-hidden": "true",
14470
14535
  className: "size-2 shrink-0 rounded-full bg-primary"
14471
14536
  }
14472
14537
  ),
14473
- /* @__PURE__ */ jsx73("span", { className: "truncate", children: item.status })
14474
- ] }) : /* @__PURE__ */ jsx73(Badge, { variant: "soft", tone: "info", size: "md", children: item.status }) }),
14475
- /* @__PURE__ */ jsx73("span", { className: "w-24 shrink-0 text-right text-body-tabular text-ink", children: item.amount })
14538
+ /* @__PURE__ */ jsx74("span", { className: "truncate", children: item.status })
14539
+ ] }) : /* @__PURE__ */ jsx74(Badge, { variant: "soft", tone: "info", size: "md", children: item.status }) }),
14540
+ /* @__PURE__ */ jsx74("span", { className: "w-24 shrink-0 text-right text-body-tabular text-ink", children: item.amount })
14476
14541
  ]
14477
14542
  }
14478
14543
  ) }, item.id);
14479
- }) }) : /* @__PURE__ */ jsxs70("div", { className: "flex flex-col items-center gap-xs px-lg py-xxl text-center", children: [
14480
- /* @__PURE__ */ jsx73("p", { className: "text-body-md text-ink", children: emptyLabel ?? "No results found" }),
14481
- /* @__PURE__ */ jsx73("p", { className: "text-body-sm text-muted", children: "Try a different name, reference, or filter." })
14544
+ }) }) : /* @__PURE__ */ jsxs71("div", { className: "flex flex-col items-center gap-xs px-lg py-xxl text-center", children: [
14545
+ /* @__PURE__ */ jsx74("p", { className: "text-body-md text-ink", children: emptyLabel ?? "No results found" }),
14546
+ /* @__PURE__ */ jsx74("p", { className: "text-body-sm text-muted", children: "Try a different name, reference, or filter." })
14482
14547
  ] }) })
14483
14548
  ]
14484
14549
  }
@@ -14488,13 +14553,13 @@ var SearchResultsList = React73.forwardRef(
14488
14553
  SearchResultsList.displayName = "SearchResultsList";
14489
14554
 
14490
14555
  // virtual-pkg:src/atoms/Sidebar/Sidebar.tsx
14491
- import * as React76 from "react";
14556
+ import * as React77 from "react";
14492
14557
 
14493
14558
  // virtual-pkg:src/atoms/SidebarDesktop/SidebarDesktop.tsx
14494
- import * as React74 from "react";
14559
+ import * as React75 from "react";
14495
14560
  import * as ReactDOM11 from "react-dom";
14496
- import { Fragment as Fragment10, jsx as jsx74, jsxs as jsxs71 } from "react/jsx-runtime";
14497
- var cn65 = (...values) => values.filter(Boolean).join(" ");
14561
+ import { Fragment as Fragment10, jsx as jsx75, jsxs as jsxs72 } from "react/jsx-runtime";
14562
+ var cn66 = (...values) => values.filter(Boolean).join(" ");
14498
14563
  var MENU_GAP2 = 6;
14499
14564
  var MENU_MIN_WIDTH = 224;
14500
14565
  var VIEWPORT_INSET6 = 12;
@@ -14524,7 +14589,7 @@ var SAMPLE_SECONDARY = [
14524
14589
  { id: "team", label: "Team", icon: "group", href: "#team" }
14525
14590
  ];
14526
14591
  var SAMPLE_PLAN = { name: "Pro", price: "$2,400.00 / month", href: "#plan" };
14527
- var glyph3 = (name, size = 16, strokeWidth = 1.75) => /* @__PURE__ */ jsx74(
14592
+ var glyph3 = (name, size = 16, strokeWidth = 1.75) => /* @__PURE__ */ jsx75(
14528
14593
  Icon,
14529
14594
  {
14530
14595
  name,
@@ -14553,12 +14618,12 @@ var rowAccessibleName = (label, badge) => {
14553
14618
  var RailBadge = ({
14554
14619
  badge,
14555
14620
  active
14556
- }) => /* @__PURE__ */ jsx74(
14621
+ }) => /* @__PURE__ */ jsx75(
14557
14622
  "span",
14558
14623
  {
14559
14624
  "aria-hidden": "true",
14560
14625
  "data-active": active || void 0,
14561
- className: cn65(
14626
+ className: cn66(
14562
14627
  "ml-auto flex h-4 min-w-4 shrink-0 items-center justify-center rounded-full",
14563
14628
  "bg-primary px-xxs text-caption text-on-primary",
14564
14629
  "data-[active=true]:bg-on-primary data-[active=true]:text-primary"
@@ -14566,13 +14631,13 @@ var RailBadge = ({
14566
14631
  children: badgeText(badge)
14567
14632
  }
14568
14633
  );
14569
- var railGlyph = (item, folded) => /* @__PURE__ */ jsxs71("span", { className: "relative inline-flex shrink-0 items-center", children: [
14634
+ var railGlyph = (item, folded) => /* @__PURE__ */ jsxs72("span", { className: "relative inline-flex shrink-0 items-center", children: [
14570
14635
  glyph3(item.icon, 16, 1.75),
14571
- folded && hasBadge(item.badge) ? /* @__PURE__ */ jsx74(
14636
+ folded && hasBadge(item.badge) ? /* @__PURE__ */ jsx75(
14572
14637
  "span",
14573
14638
  {
14574
14639
  "aria-hidden": "true",
14575
- className: cn65(
14640
+ className: cn66(
14576
14641
  "pointer-events-none absolute -right-xxs -top-xxs size-2 rounded-full",
14577
14642
  "bg-primary",
14578
14643
  "group-data-[active=true]:bg-on-primary"
@@ -14583,8 +14648,8 @@ var railGlyph = (item, folded) => /* @__PURE__ */ jsxs71("span", { className: "r
14583
14648
  var RowLabel = ({
14584
14649
  folded,
14585
14650
  children
14586
- }) => folded ? /* @__PURE__ */ jsx74("span", { className: "sr-only", children }) : /* @__PURE__ */ jsx74("span", { className: "truncate", children });
14587
- var railRowClass = (active, folded) => cn65(
14651
+ }) => folded ? /* @__PURE__ */ jsx75("span", { className: "sr-only", children }) : /* @__PURE__ */ jsx75("span", { className: "truncate", children });
14652
+ var railRowClass = (active, folded) => cn66(
14588
14653
  "group flex w-full cursor-pointer items-center rounded-lg border-0 bg-transparent",
14589
14654
  "text-body-md transition duration-150 ease-out",
14590
14655
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus-blue",
@@ -14593,7 +14658,7 @@ var railRowClass = (active, folded) => cn65(
14593
14658
  folded ? "justify-center px-md py-sm" : "gap-md px-lg py-sm"
14594
14659
  );
14595
14660
  var isModified = (event) => event.metaKey || event.ctrlKey || event.shiftKey || event.altKey ? true : event.button !== 0;
14596
- var SidebarDesktop = React74.forwardRef(
14661
+ var SidebarDesktop = React75.forwardRef(
14597
14662
  ({
14598
14663
  wordmark = "Nimbus",
14599
14664
  homeHref = "#home",
@@ -14623,27 +14688,27 @@ var SidebarDesktop = React74.forwardRef(
14623
14688
  className,
14624
14689
  ...rest
14625
14690
  }, ref) => {
14626
- const uid = React74.useId().replace(/[^a-zA-Z0-9-]/g, "");
14691
+ const uid = React75.useId().replace(/[^a-zA-Z0-9-]/g, "");
14627
14692
  const primaryNavId = `${uid}-primary`;
14628
14693
  const accountsPanelId = `${uid}-accounts`;
14629
- const triggerRef = React74.useRef(null);
14630
- const panelRef = React74.useRef(null);
14631
- const [internalFolded, setInternalFolded] = React74.useState(defaultFolded);
14694
+ const triggerRef = React75.useRef(null);
14695
+ const panelRef = React75.useRef(null);
14696
+ const [internalFolded, setInternalFolded] = React75.useState(defaultFolded);
14632
14697
  const isFolded = folded !== void 0 ? folded : internalFolded;
14633
14698
  const navItems = items ?? SAMPLE_ITEMS;
14634
14699
  const secondaryNav = secondaryItems ?? SAMPLE_SECONDARY;
14635
14700
  const accountList = accounts ?? SAMPLE_ACCOUNTS;
14636
14701
  const planTile = plan === void 0 ? SAMPLE_PLAN : plan;
14637
- const [internalAccount, setInternalAccount] = React74.useState(
14702
+ const [internalAccount, setInternalAccount] = React75.useState(
14638
14703
  defaultAccountValue ?? accountList[0]?.value
14639
14704
  );
14640
14705
  const selectedAccount = accountValue !== void 0 ? accountValue : internalAccount;
14641
14706
  const currentAccount = accountList.find(
14642
14707
  (account) => account.value === selectedAccount
14643
14708
  );
14644
- const [accountsOpen, setAccountsOpen] = React74.useState(false);
14645
- const [box, setBox] = React74.useState(null);
14646
- const [expandedId, setExpandedId] = React74.useState(
14709
+ const [accountsOpen, setAccountsOpen] = React75.useState(false);
14710
+ const [box, setBox] = React75.useState(null);
14711
+ const [expandedId, setExpandedId] = React75.useState(
14647
14712
  defaultExpandedId
14648
14713
  );
14649
14714
  const setFolded = (next) => {
@@ -14666,7 +14731,7 @@ var SidebarDesktop = React74.forwardRef(
14666
14731
  event.preventDefault();
14667
14732
  }
14668
14733
  };
14669
- const measure = React74.useCallback(() => {
14734
+ const measure = React75.useCallback(() => {
14670
14735
  const trigger = triggerRef.current;
14671
14736
  if (!trigger) {
14672
14737
  return;
@@ -14699,7 +14764,7 @@ var SidebarDesktop = React74.forwardRef(
14699
14764
  );
14700
14765
  setBox({ top: clampedTop, left, width, maxHeight });
14701
14766
  }, []);
14702
- React74.useEffect(() => {
14767
+ React75.useEffect(() => {
14703
14768
  if (!accountsOpen) {
14704
14769
  return;
14705
14770
  }
@@ -14747,7 +14812,7 @@ var SidebarDesktop = React74.forwardRef(
14747
14812
  const subRowClass2 = "flex w-full cursor-pointer items-center rounded-md px-lg py-xs text-body-sm text-on-primary/70 transition duration-150 ease-out hover:bg-on-primary/10 hover:text-on-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus-blue focus-visible:ring-inset";
14748
14813
  const bellLabel = notificationCount > 0 ? `${notificationsLabel}, ${notificationCount} unread` : notificationsLabel;
14749
14814
  const accountsPanel = typeof document === "undefined" ? null : ReactDOM11.createPortal(
14750
- /* @__PURE__ */ jsx74(
14815
+ /* @__PURE__ */ jsx75(
14751
14816
  "div",
14752
14817
  {
14753
14818
  ref: panelRef,
@@ -14764,7 +14829,7 @@ var SidebarDesktop = React74.forwardRef(
14764
14829
  maxHeight: box?.maxHeight ?? void 0,
14765
14830
  zIndex: "var(--z-popover, 1300)"
14766
14831
  },
14767
- className: cn65(
14832
+ className: cn66(
14768
14833
  "origin-top overflow-y-auto overscroll-contain rounded-lg border border-hairline",
14769
14834
  "bg-surface p-xs shadow-lg transition duration-200 ease-out",
14770
14835
  "data-[state=open]:translate-y-0 data-[state=open]:scale-100 data-[state=open]:opacity-100",
@@ -14772,7 +14837,7 @@ var SidebarDesktop = React74.forwardRef(
14772
14837
  ),
14773
14838
  children: accountList.map((account) => {
14774
14839
  const selected = account.value === selectedAccount;
14775
- return /* @__PURE__ */ jsx74(
14840
+ return /* @__PURE__ */ jsx75(
14776
14841
  Button,
14777
14842
  {
14778
14843
  variant: "row",
@@ -14782,8 +14847,8 @@ var SidebarDesktop = React74.forwardRef(
14782
14847
  "data-selected": selected,
14783
14848
  tabIndex: -1,
14784
14849
  onClick: () => chooseAccount(account),
14785
- leadingIcon: /* @__PURE__ */ jsx74(Icon, { name: "layers", size: 16, tone: "muted" }),
14786
- trailingIcon: selected ? /* @__PURE__ */ jsx74(
14850
+ leadingIcon: /* @__PURE__ */ jsx75(Icon, { name: "layers", size: 16, tone: "muted" }),
14851
+ trailingIcon: selected ? /* @__PURE__ */ jsx75(
14787
14852
  Icon,
14788
14853
  {
14789
14854
  name: "check",
@@ -14801,7 +14866,7 @@ var SidebarDesktop = React74.forwardRef(
14801
14866
  ),
14802
14867
  document.body
14803
14868
  );
14804
- return /* @__PURE__ */ jsxs71(
14869
+ return /* @__PURE__ */ jsxs72(
14805
14870
  "aside",
14806
14871
  {
14807
14872
  ref,
@@ -14809,7 +14874,7 @@ var SidebarDesktop = React74.forwardRef(
14809
14874
  style: {
14810
14875
  width: isFolded ? "var(--container-sidebar-rail, 72px)" : "var(--container-sidebar, 240px)"
14811
14876
  },
14812
- className: cn65(
14877
+ className: cn66(
14813
14878
  "flex h-full min-h-0 shrink-0 flex-col bg-brand-dark text-on-primary",
14814
14879
  "transition-[width] duration-200 ease-out",
14815
14880
  isFolded ? "px-xs" : "px-md",
@@ -14818,31 +14883,31 @@ var SidebarDesktop = React74.forwardRef(
14818
14883
  ),
14819
14884
  ...rest,
14820
14885
  children: [
14821
- /* @__PURE__ */ jsxs71(
14886
+ /* @__PURE__ */ jsxs72(
14822
14887
  "div",
14823
14888
  {
14824
- className: cn65(
14889
+ className: cn66(
14825
14890
  "flex w-full shrink-0 items-center pb-lg",
14826
14891
  isFolded ? "justify-center" : "justify-between gap-sm"
14827
14892
  ),
14828
14893
  children: [
14829
- isFolded ? null : /* @__PURE__ */ jsxs71(
14894
+ isFolded ? null : /* @__PURE__ */ jsxs72(
14830
14895
  "a",
14831
14896
  {
14832
14897
  href: homeHref,
14833
14898
  onClick: navigate({ id: "home", href: homeHref }),
14834
- className: cn65(
14899
+ className: cn66(
14835
14900
  "inline-flex min-w-0 cursor-pointer items-center gap-sm rounded-md px-xs text-on-primary",
14836
14901
  "transition duration-150 ease-out hover:opacity-80",
14837
14902
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus-blue"
14838
14903
  ),
14839
14904
  children: [
14840
14905
  glyph3("slash", 20, 3),
14841
- /* @__PURE__ */ jsx74("span", { className: "truncate text-body-lg font-weight-label", children: wordmark })
14906
+ /* @__PURE__ */ jsx75("span", { className: "truncate text-body-lg font-weight-label", children: wordmark })
14842
14907
  ]
14843
14908
  }
14844
14909
  ),
14845
- /* @__PURE__ */ jsx74(
14910
+ /* @__PURE__ */ jsx75(
14846
14911
  Button,
14847
14912
  {
14848
14913
  variant: "bare",
@@ -14851,7 +14916,7 @@ var SidebarDesktop = React74.forwardRef(
14851
14916
  "aria-expanded": !isFolded,
14852
14917
  "aria-controls": primaryNavId,
14853
14918
  onClick: () => setFolded(!isFolded),
14854
- className: cn65(
14919
+ className: cn66(
14855
14920
  "shrink-0 rounded-md text-on-primary/60",
14856
14921
  "hover:bg-on-primary/10 hover:text-on-primary"
14857
14922
  ),
@@ -14861,7 +14926,7 @@ var SidebarDesktop = React74.forwardRef(
14861
14926
  ]
14862
14927
  }
14863
14928
  ),
14864
- accountList.length > 1 ? /* @__PURE__ */ jsx74(
14929
+ accountList.length > 1 ? /* @__PURE__ */ jsx75(
14865
14930
  Button,
14866
14931
  {
14867
14932
  ref: triggerRef,
@@ -14877,43 +14942,43 @@ var SidebarDesktop = React74.forwardRef(
14877
14942
  setAccountsOpen((previous) => !previous);
14878
14943
  },
14879
14944
  className: "shrink-0",
14880
- trailingIcon: isFolded ? void 0 : /* @__PURE__ */ jsx74(
14945
+ trailingIcon: isFolded ? void 0 : /* @__PURE__ */ jsx75(
14881
14946
  "span",
14882
14947
  {
14883
14948
  "aria-hidden": "true",
14884
- className: cn65(
14949
+ className: cn66(
14885
14950
  "flex shrink-0 items-center transition-transform duration-200 ease-out",
14886
14951
  accountsOpen ? "rotate-180" : "rotate-0"
14887
14952
  ),
14888
14953
  children: glyph3("chevron-down", 16, 2)
14889
14954
  }
14890
14955
  ),
14891
- children: /* @__PURE__ */ jsxs71(
14956
+ children: /* @__PURE__ */ jsxs72(
14892
14957
  "span",
14893
14958
  {
14894
- className: cn65("flex min-w-0 items-center", isFolded ? "" : "gap-sm"),
14959
+ className: cn66("flex min-w-0 items-center", isFolded ? "" : "gap-sm"),
14895
14960
  children: [
14896
14961
  glyph3("layers", 16, 1.75),
14897
- isFolded ? /* @__PURE__ */ jsx74("span", { className: "sr-only", children: currentAccount?.label ?? "Choose account" }) : /* @__PURE__ */ jsx74("span", { className: "truncate", children: currentAccount?.label ?? "Choose account" })
14962
+ isFolded ? /* @__PURE__ */ jsx75("span", { className: "sr-only", children: currentAccount?.label ?? "Choose account" }) : /* @__PURE__ */ jsx75("span", { className: "truncate", children: currentAccount?.label ?? "Choose account" })
14898
14963
  ]
14899
14964
  }
14900
14965
  )
14901
14966
  }
14902
- ) : /* @__PURE__ */ jsxs71(
14967
+ ) : /* @__PURE__ */ jsxs72(
14903
14968
  "div",
14904
14969
  {
14905
- className: cn65(
14970
+ className: cn66(
14906
14971
  "flex w-full shrink-0 items-center rounded-lg bg-on-primary/10 py-sm text-body-md text-on-primary",
14907
14972
  isFolded ? "justify-center px-md" : "gap-sm px-md"
14908
14973
  ),
14909
14974
  children: [
14910
14975
  glyph3("layers", 16, 1.75),
14911
- isFolded ? /* @__PURE__ */ jsx74("span", { className: "sr-only", children: currentAccount?.label }) : /* @__PURE__ */ jsx74("span", { className: "truncate", children: currentAccount?.label })
14976
+ isFolded ? /* @__PURE__ */ jsx75("span", { className: "sr-only", children: currentAccount?.label }) : /* @__PURE__ */ jsx75("span", { className: "truncate", children: currentAccount?.label })
14912
14977
  ]
14913
14978
  }
14914
14979
  ),
14915
- /* @__PURE__ */ jsxs71("div", { className: "mt-lg flex min-h-0 flex-1 flex-col overflow-y-auto overscroll-contain", children: [
14916
- /* @__PURE__ */ jsx74(
14980
+ /* @__PURE__ */ jsxs72("div", { className: "mt-lg flex min-h-0 flex-1 flex-col overflow-y-auto overscroll-contain", children: [
14981
+ /* @__PURE__ */ jsx75(
14917
14982
  "nav",
14918
14983
  {
14919
14984
  id: primaryNavId,
@@ -14923,7 +14988,7 @@ var SidebarDesktop = React74.forwardRef(
14923
14988
  const active = item.id === activeId;
14924
14989
  const badged = hasBadge(item.badge);
14925
14990
  if (!item.children?.length) {
14926
- return /* @__PURE__ */ jsxs71(
14991
+ return /* @__PURE__ */ jsxs72(
14927
14992
  "a",
14928
14993
  {
14929
14994
  href: item.href ?? `#${item.id}`,
@@ -14934,8 +14999,8 @@ var SidebarDesktop = React74.forwardRef(
14934
14999
  className: railRowClass(active, isFolded),
14935
15000
  children: [
14936
15001
  railGlyph(item, isFolded),
14937
- /* @__PURE__ */ jsx74(RowLabel, { folded: isFolded, children: item.label }),
14938
- !isFolded && badged ? /* @__PURE__ */ jsx74(RailBadge, { badge: item.badge, active }) : null
15002
+ /* @__PURE__ */ jsx75(RowLabel, { folded: isFolded, children: item.label }),
15003
+ !isFolded && badged ? /* @__PURE__ */ jsx75(RailBadge, { badge: item.badge, active }) : null
14939
15004
  ]
14940
15005
  },
14941
15006
  item.id
@@ -14943,8 +15008,8 @@ var SidebarDesktop = React74.forwardRef(
14943
15008
  }
14944
15009
  const expanded = expandedId === item.id;
14945
15010
  const subId = `${uid}-${item.id}-sub`;
14946
- return /* @__PURE__ */ jsxs71("div", { className: "flex flex-col gap-xxs", children: [
14947
- /* @__PURE__ */ jsx74(
15011
+ return /* @__PURE__ */ jsxs72("div", { className: "flex flex-col gap-xxs", children: [
15012
+ /* @__PURE__ */ jsx75(
14948
15013
  Button,
14949
15014
  {
14950
15015
  variant: "rail-row",
@@ -14957,19 +15022,19 @@ var SidebarDesktop = React74.forwardRef(
14957
15022
  onClick: () => toggleExpanded(item.id),
14958
15023
  className: "group",
14959
15024
  leadingIcon: railGlyph(item, isFolded),
14960
- trailingIcon: isFolded ? void 0 : /* @__PURE__ */ jsxs71("span", { className: "flex items-center gap-xs", children: [
14961
- badged ? /* @__PURE__ */ jsx74(
15025
+ trailingIcon: isFolded ? void 0 : /* @__PURE__ */ jsxs72("span", { className: "flex items-center gap-xs", children: [
15026
+ badged ? /* @__PURE__ */ jsx75(
14962
15027
  RailBadge,
14963
15028
  {
14964
15029
  badge: item.badge,
14965
15030
  active
14966
15031
  }
14967
15032
  ) : null,
14968
- /* @__PURE__ */ jsx74(
15033
+ /* @__PURE__ */ jsx75(
14969
15034
  "span",
14970
15035
  {
14971
15036
  "aria-hidden": "true",
14972
- className: cn65(
15037
+ className: cn66(
14973
15038
  "flex shrink-0 items-center transition-transform duration-200 ease-out",
14974
15039
  expanded ? "rotate-180" : "rotate-0"
14975
15040
  ),
@@ -14977,19 +15042,19 @@ var SidebarDesktop = React74.forwardRef(
14977
15042
  }
14978
15043
  )
14979
15044
  ] }),
14980
- children: /* @__PURE__ */ jsx74(RowLabel, { folded: isFolded, children: item.label })
15045
+ children: /* @__PURE__ */ jsx75(RowLabel, { folded: isFolded, children: item.label })
14981
15046
  }
14982
15047
  ),
14983
- isFolded ? null : /* @__PURE__ */ jsx74(
15048
+ isFolded ? null : /* @__PURE__ */ jsx75(
14984
15049
  "div",
14985
15050
  {
14986
15051
  id: subId,
14987
15052
  "data-state": expanded ? "open" : "closed",
14988
- className: cn65(
15053
+ className: cn66(
14989
15054
  "grid transition-[grid-template-rows,opacity] duration-200 ease-out",
14990
15055
  expanded ? "grid-rows-[1fr] opacity-100" : "grid-rows-[0fr] opacity-0"
14991
15056
  ),
14992
- children: /* @__PURE__ */ jsx74("div", { className: "overflow-hidden", children: /* @__PURE__ */ jsx74("ul", { className: "flex flex-col gap-xxs pb-xs pl-xl pt-xxs", children: item.children.map((child) => /* @__PURE__ */ jsx74("li", { children: /* @__PURE__ */ jsx74(
15057
+ children: /* @__PURE__ */ jsx75("div", { className: "overflow-hidden", children: /* @__PURE__ */ jsx75("ul", { className: "flex flex-col gap-xxs pb-xs pl-xl pt-xxs", children: item.children.map((child) => /* @__PURE__ */ jsx75("li", { children: /* @__PURE__ */ jsx75(
14993
15058
  "a",
14994
15059
  {
14995
15060
  href: child.href ?? `#${child.id}`,
@@ -14999,7 +15064,7 @@ var SidebarDesktop = React74.forwardRef(
14999
15064
  }),
15000
15065
  tabIndex: expanded ? void 0 : -1,
15001
15066
  className: subRowClass2,
15002
- children: /* @__PURE__ */ jsx74("span", { className: "truncate", children: child.label })
15067
+ children: /* @__PURE__ */ jsx75("span", { className: "truncate", children: child.label })
15003
15068
  }
15004
15069
  ) }, child.id)) }) })
15005
15070
  }
@@ -15008,7 +15073,7 @@ var SidebarDesktop = React74.forwardRef(
15008
15073
  })
15009
15074
  }
15010
15075
  ),
15011
- /* @__PURE__ */ jsx74("div", { className: "mt-lg shrink-0", children: /* @__PURE__ */ jsx74(
15076
+ /* @__PURE__ */ jsx75("div", { className: "mt-lg shrink-0", children: /* @__PURE__ */ jsx75(
15012
15077
  Button,
15013
15078
  {
15014
15079
  variant: "inverse-outline",
@@ -15020,17 +15085,17 @@ var SidebarDesktop = React74.forwardRef(
15020
15085
  children: isFolded ? void 0 : primaryActionLabel
15021
15086
  }
15022
15087
  ) }),
15023
- /* @__PURE__ */ jsx74(
15088
+ /* @__PURE__ */ jsx75(
15024
15089
  "span",
15025
15090
  {
15026
15091
  "aria-hidden": "true",
15027
15092
  className: "mt-lg block h-px shrink-0 bg-on-primary/15"
15028
15093
  }
15029
15094
  ),
15030
- /* @__PURE__ */ jsx74("nav", { "aria-label": "Secondary", className: "mt-lg flex flex-col gap-xxs", children: secondaryNav.map((item) => {
15095
+ /* @__PURE__ */ jsx75("nav", { "aria-label": "Secondary", className: "mt-lg flex flex-col gap-xxs", children: secondaryNav.map((item) => {
15031
15096
  const active = item.id === secondaryActiveId;
15032
15097
  const badged = hasBadge(item.badge);
15033
- return /* @__PURE__ */ jsxs71(
15098
+ return /* @__PURE__ */ jsxs72(
15034
15099
  "a",
15035
15100
  {
15036
15101
  href: item.href ?? `#${item.id}`,
@@ -15041,21 +15106,21 @@ var SidebarDesktop = React74.forwardRef(
15041
15106
  className: railRowClass(active, isFolded),
15042
15107
  children: [
15043
15108
  railGlyph(item, isFolded),
15044
- /* @__PURE__ */ jsx74(RowLabel, { folded: isFolded, children: item.label }),
15045
- !isFolded && badged ? /* @__PURE__ */ jsx74(RailBadge, { badge: item.badge, active }) : null
15109
+ /* @__PURE__ */ jsx75(RowLabel, { folded: isFolded, children: item.label }),
15110
+ !isFolded && badged ? /* @__PURE__ */ jsx75(RailBadge, { badge: item.badge, active }) : null
15046
15111
  ]
15047
15112
  },
15048
15113
  item.id
15049
15114
  );
15050
15115
  }) })
15051
15116
  ] }),
15052
- /* @__PURE__ */ jsxs71("div", { className: "mt-lg shrink-0", children: [
15053
- planTile ? /* @__PURE__ */ jsxs71(
15117
+ /* @__PURE__ */ jsxs72("div", { className: "mt-lg shrink-0", children: [
15118
+ planTile ? /* @__PURE__ */ jsxs72(
15054
15119
  "a",
15055
15120
  {
15056
15121
  href: planTile.href ?? "#plan",
15057
15122
  onClick: navigate({ id: "plan", href: planTile.href }),
15058
- className: cn65(
15123
+ className: cn66(
15059
15124
  "flex w-full cursor-pointer items-center rounded-lg bg-on-primary/10",
15060
15125
  "transition duration-150 ease-out hover:bg-on-primary/15",
15061
15126
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus-blue",
@@ -15063,33 +15128,33 @@ var SidebarDesktop = React74.forwardRef(
15063
15128
  isFolded ? "justify-center p-sm" : "gap-sm p-sm"
15064
15129
  ),
15065
15130
  children: [
15066
- /* @__PURE__ */ jsx74("span", { className: "flex size-8 shrink-0 items-center justify-center rounded-md bg-primary text-on-primary", children: glyph3("chart-bar", 16, 2) }),
15067
- isFolded ? /* @__PURE__ */ jsx74("span", { className: "sr-only", children: `${planTile.name}, ${planTile.price}` }) : /* @__PURE__ */ jsxs71(Fragment10, { children: [
15068
- /* @__PURE__ */ jsxs71("span", { className: "flex min-w-0 flex-1 flex-col", children: [
15069
- /* @__PURE__ */ jsx74("span", { className: "truncate text-body-md text-on-primary", children: planTile.name }),
15070
- /* @__PURE__ */ jsx74("span", { className: "truncate text-caption text-on-primary/60", children: planTile.price })
15131
+ /* @__PURE__ */ jsx75("span", { className: "flex size-8 shrink-0 items-center justify-center rounded-md bg-primary text-on-primary", children: glyph3("chart-bar", 16, 2) }),
15132
+ isFolded ? /* @__PURE__ */ jsx75("span", { className: "sr-only", children: `${planTile.name}, ${planTile.price}` }) : /* @__PURE__ */ jsxs72(Fragment10, { children: [
15133
+ /* @__PURE__ */ jsxs72("span", { className: "flex min-w-0 flex-1 flex-col", children: [
15134
+ /* @__PURE__ */ jsx75("span", { className: "truncate text-body-md text-on-primary", children: planTile.name }),
15135
+ /* @__PURE__ */ jsx75("span", { className: "truncate text-caption text-on-primary/60", children: planTile.price })
15071
15136
  ] }),
15072
- /* @__PURE__ */ jsx74("span", { "aria-hidden": "true", className: "shrink-0 text-on-primary/60", children: glyph3("arrow-right", 16, 2) })
15137
+ /* @__PURE__ */ jsx75("span", { "aria-hidden": "true", className: "shrink-0 text-on-primary/60", children: glyph3("arrow-right", 16, 2) })
15073
15138
  ] })
15074
15139
  ]
15075
15140
  }
15076
15141
  ) : null,
15077
- /* @__PURE__ */ jsxs71(
15142
+ /* @__PURE__ */ jsxs72(
15078
15143
  "div",
15079
15144
  {
15080
- className: cn65(
15145
+ className: cn66(
15081
15146
  "mt-sm flex items-center",
15082
15147
  isFolded ? "justify-center" : "gap-sm pl-xs"
15083
15148
  ),
15084
15149
  children: [
15085
- /* @__PURE__ */ jsx74(Avatar, { name: profile.name, src: profile.src, size: "sm" }),
15086
- isFolded ? /* @__PURE__ */ jsx74("span", { className: "sr-only", children: profile.name }) : /* @__PURE__ */ jsxs71(Fragment10, { children: [
15087
- /* @__PURE__ */ jsxs71("span", { className: "flex min-w-0 flex-1 flex-col", children: [
15088
- /* @__PURE__ */ jsx74("span", { className: "truncate text-body-sm text-on-primary", children: profile.name }),
15089
- profile.email ? /* @__PURE__ */ jsx74("span", { className: "truncate text-caption text-on-primary/60", children: profile.email }) : null
15150
+ /* @__PURE__ */ jsx75(Avatar, { name: profile.name, src: profile.src, size: "sm" }),
15151
+ isFolded ? /* @__PURE__ */ jsx75("span", { className: "sr-only", children: profile.name }) : /* @__PURE__ */ jsxs72(Fragment10, { children: [
15152
+ /* @__PURE__ */ jsxs72("span", { className: "flex min-w-0 flex-1 flex-col", children: [
15153
+ /* @__PURE__ */ jsx75("span", { className: "truncate text-body-sm text-on-primary", children: profile.name }),
15154
+ profile.email ? /* @__PURE__ */ jsx75("span", { className: "truncate text-caption text-on-primary/60", children: profile.email }) : null
15090
15155
  ] }),
15091
- /* @__PURE__ */ jsxs71("span", { className: "relative inline-flex shrink-0", children: [
15092
- /* @__PURE__ */ jsx74(
15156
+ /* @__PURE__ */ jsxs72("span", { className: "relative inline-flex shrink-0", children: [
15157
+ /* @__PURE__ */ jsx75(
15093
15158
  Button,
15094
15159
  {
15095
15160
  variant: "bare",
@@ -15100,11 +15165,11 @@ var SidebarDesktop = React74.forwardRef(
15100
15165
  children: glyph3("bell", 16, 1.75)
15101
15166
  }
15102
15167
  ),
15103
- notificationCount > 0 ? /* @__PURE__ */ jsx74(
15168
+ notificationCount > 0 ? /* @__PURE__ */ jsx75(
15104
15169
  "span",
15105
15170
  {
15106
15171
  "aria-hidden": "true",
15107
- className: cn65(
15172
+ className: cn66(
15108
15173
  "pointer-events-none absolute -right-xxs -top-xxs",
15109
15174
  "flex h-4 min-w-4 items-center justify-center rounded-full",
15110
15175
  "bg-primary px-xxs text-caption text-on-primary"
@@ -15113,7 +15178,7 @@ var SidebarDesktop = React74.forwardRef(
15113
15178
  }
15114
15179
  ) : null
15115
15180
  ] }),
15116
- /* @__PURE__ */ jsx74(
15181
+ /* @__PURE__ */ jsx75(
15117
15182
  Button,
15118
15183
  {
15119
15184
  variant: "bare",
@@ -15138,10 +15203,10 @@ var SidebarDesktop = React74.forwardRef(
15138
15203
  SidebarDesktop.displayName = "SidebarDesktop";
15139
15204
 
15140
15205
  // virtual-pkg:src/atoms/SidebarMobile/SidebarMobile.tsx
15141
- import * as React75 from "react";
15206
+ import * as React76 from "react";
15142
15207
  import { createPortal as createPortal15 } from "react-dom";
15143
- import { jsx as jsx75, jsxs as jsxs72 } from "react/jsx-runtime";
15144
- var cn66 = (...values) => values.filter(Boolean).join(" ");
15208
+ import { jsx as jsx76, jsxs as jsxs73 } from "react/jsx-runtime";
15209
+ var cn67 = (...values) => values.filter(Boolean).join(" ");
15145
15210
  var SAMPLE_ACCOUNTS2 = [
15146
15211
  { value: "acme", label: "Acme Payments" },
15147
15212
  { value: "northwind", label: "Northwind Labs" },
@@ -15168,7 +15233,7 @@ var SAMPLE_SECONDARY2 = [
15168
15233
  { id: "team", label: "Team", icon: "group", href: "#team" }
15169
15234
  ];
15170
15235
  var SAMPLE_PLAN2 = { name: "Pro", price: "$2,400.00 / month", href: "#plan" };
15171
- var glyph4 = (name, size = 18, strokeWidth = 1.75) => /* @__PURE__ */ jsx75(Icon, { name, size, strokeWidth, style: { color: "inherit" } });
15236
+ var glyph4 = (name, size = 18, strokeWidth = 1.75) => /* @__PURE__ */ jsx76(Icon, { name, size, strokeWidth, style: { color: "inherit" } });
15172
15237
  var hasBadge2 = (badge) => {
15173
15238
  if (badge === void 0 || badge === null) {
15174
15239
  return false;
@@ -15189,12 +15254,12 @@ var rowAccessibleName2 = (label, badge) => {
15189
15254
  var NavBadge = ({
15190
15255
  badge,
15191
15256
  active
15192
- }) => /* @__PURE__ */ jsx75(
15257
+ }) => /* @__PURE__ */ jsx76(
15193
15258
  "span",
15194
15259
  {
15195
15260
  "aria-hidden": "true",
15196
15261
  "data-active": active || void 0,
15197
- className: cn66(
15262
+ className: cn67(
15198
15263
  "ml-auto flex h-4 min-w-4 shrink-0 items-center justify-center rounded-full",
15199
15264
  "bg-primary px-xxs text-caption text-on-primary",
15200
15265
  "data-[active=true]:bg-on-primary data-[active=true]:text-primary"
@@ -15202,14 +15267,14 @@ var NavBadge = ({
15202
15267
  children: badgeText2(badge)
15203
15268
  }
15204
15269
  );
15205
- var rowClass = (active) => cn66(
15270
+ var rowClass = (active) => cn67(
15206
15271
  "flex min-h-10 w-full cursor-pointer items-center gap-md rounded-lg px-md py-sm",
15207
15272
  "text-body-md transition duration-150 ease-out",
15208
15273
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus-blue",
15209
15274
  "focus-visible:ring-inset",
15210
15275
  active ? "bg-primary text-on-primary hover:bg-primary-hover active:bg-primary-active" : "text-ink hover:bg-surface-soft active:bg-surface-strong"
15211
15276
  );
15212
- var subRowClass = cn66(
15277
+ var subRowClass = cn67(
15213
15278
  "flex min-h-7 w-full cursor-pointer items-center gap-md rounded-md px-md py-xxs",
15214
15279
  "text-body-sm text-body transition duration-150 ease-out",
15215
15280
  "hover:bg-surface-soft hover:text-ink active:bg-surface-strong",
@@ -15217,7 +15282,7 @@ var subRowClass = cn66(
15217
15282
  "focus-visible:ring-inset"
15218
15283
  );
15219
15284
  var isModified2 = (event) => event.metaKey || event.ctrlKey || event.shiftKey || event.altKey ? true : event.button !== 0;
15220
- var SidebarMobile = React75.forwardRef(
15285
+ var SidebarMobile = React76.forwardRef(
15221
15286
  ({
15222
15287
  wordmark = "Nimbus",
15223
15288
  homeHref = "#home",
@@ -15252,31 +15317,31 @@ var SidebarMobile = React75.forwardRef(
15252
15317
  className,
15253
15318
  ...rest
15254
15319
  }, ref) => {
15255
- const uid = React75.useId().replace(/[^a-zA-Z0-9-]/g, "");
15320
+ const uid = React76.useId().replace(/[^a-zA-Z0-9-]/g, "");
15256
15321
  const drawerId = `${uid}-drawer`;
15257
15322
  const accountsPanelId = `${uid}-accounts`;
15258
- const toggleRef = React75.useRef(null);
15259
- const closeRef = React75.useRef(null);
15260
- const triggerRef = React75.useRef(null);
15261
- const panelRef = React75.useRef(null);
15262
- const [internalOpen, setInternalOpen] = React75.useState(defaultOpen);
15323
+ const toggleRef = React76.useRef(null);
15324
+ const closeRef = React76.useRef(null);
15325
+ const triggerRef = React76.useRef(null);
15326
+ const panelRef = React76.useRef(null);
15327
+ const [internalOpen, setInternalOpen] = React76.useState(defaultOpen);
15263
15328
  const isOpen = open !== void 0 ? open : internalOpen;
15264
15329
  const navItems = items ?? SAMPLE_ITEMS2;
15265
15330
  const secondaryNav = secondaryItems ?? SAMPLE_SECONDARY2;
15266
15331
  const accountList = accounts ?? SAMPLE_ACCOUNTS2;
15267
15332
  const planTile = plan === void 0 ? SAMPLE_PLAN2 : plan;
15268
- const [internalAccount, setInternalAccount] = React75.useState(
15333
+ const [internalAccount, setInternalAccount] = React76.useState(
15269
15334
  defaultAccountValue ?? accountList[0]?.value
15270
15335
  );
15271
15336
  const selectedAccount = accountValue !== void 0 ? accountValue : internalAccount;
15272
15337
  const currentAccount = accountList.find(
15273
15338
  (account) => account.value === selectedAccount
15274
15339
  );
15275
- const [accountsOpen, setAccountsOpen] = React75.useState(false);
15276
- const [expandedId, setExpandedId] = React75.useState(
15340
+ const [accountsOpen, setAccountsOpen] = React76.useState(false);
15341
+ const [expandedId, setExpandedId] = React76.useState(
15277
15342
  defaultExpandedId
15278
15343
  );
15279
- const setOpen = React75.useCallback(
15344
+ const setOpen = React76.useCallback(
15280
15345
  (next) => {
15281
15346
  if (open === void 0) {
15282
15347
  setInternalOpen(next);
@@ -15292,8 +15357,8 @@ var SidebarMobile = React75.forwardRef(
15292
15357
  }
15293
15358
  setOpen(false);
15294
15359
  };
15295
- const wasOpen = React75.useRef(isOpen);
15296
- React75.useEffect(() => {
15360
+ const wasOpen = React76.useRef(isOpen);
15361
+ React76.useEffect(() => {
15297
15362
  if (isOpen && !wasOpen.current) {
15298
15363
  closeRef.current?.focus();
15299
15364
  }
@@ -15303,7 +15368,7 @@ var SidebarMobile = React75.forwardRef(
15303
15368
  }
15304
15369
  wasOpen.current = isOpen;
15305
15370
  }, [isOpen]);
15306
- React75.useEffect(() => {
15371
+ React76.useEffect(() => {
15307
15372
  if (!isOpen) {
15308
15373
  return;
15309
15374
  }
@@ -15313,7 +15378,7 @@ var SidebarMobile = React75.forwardRef(
15313
15378
  document.body.style.overflow = overflow;
15314
15379
  };
15315
15380
  }, [isOpen]);
15316
- React75.useEffect(() => {
15381
+ React76.useEffect(() => {
15317
15382
  if (!isOpen) {
15318
15383
  return;
15319
15384
  }
@@ -15361,7 +15426,7 @@ var SidebarMobile = React75.forwardRef(
15361
15426
  };
15362
15427
  const bellLabel = notificationCount > 0 ? `${notificationsLabel}, ${notificationCount} unread` : notificationsLabel;
15363
15428
  const drawer = typeof document === "undefined" ? null : createPortal15(
15364
- /* @__PURE__ */ jsxs72(
15429
+ /* @__PURE__ */ jsxs73(
15365
15430
  "div",
15366
15431
  {
15367
15432
  "data-state": isOpen ? "open" : "closed",
@@ -15372,22 +15437,22 @@ var SidebarMobile = React75.forwardRef(
15372
15437
  inset: 0,
15373
15438
  zIndex: "var(--z-modal, 1200)"
15374
15439
  },
15375
- className: cn66(
15440
+ className: cn67(
15376
15441
  "transition-opacity duration-200 ease-out",
15377
15442
  isOpen ? "pointer-events-auto" : "pointer-events-none"
15378
15443
  ),
15379
15444
  children: [
15380
- /* @__PURE__ */ jsx75(
15445
+ /* @__PURE__ */ jsx76(
15381
15446
  "div",
15382
15447
  {
15383
15448
  "aria-hidden": "true",
15384
- className: cn66(
15449
+ className: cn67(
15385
15450
  "absolute inset-0 bg-scrim/50 transition-opacity duration-200 ease-out",
15386
15451
  isOpen ? "opacity-100" : "opacity-0"
15387
15452
  )
15388
15453
  }
15389
15454
  ),
15390
- /* @__PURE__ */ jsxs72(
15455
+ /* @__PURE__ */ jsxs73(
15391
15456
  "div",
15392
15457
  {
15393
15458
  id: drawerId,
@@ -15396,28 +15461,28 @@ var SidebarMobile = React75.forwardRef(
15396
15461
  "aria-modal": "true",
15397
15462
  "aria-label": menuLabel,
15398
15463
  "data-state": isOpen ? "open" : "closed",
15399
- className: cn66(
15464
+ className: cn67(
15400
15465
  "absolute inset-y-sm left-sm flex w-[86%] flex-col overflow-hidden",
15401
15466
  "max-w-[var(--container-drawer,360px)] rounded-xl bg-surface shadow-modal",
15402
15467
  "transition-[transform,visibility] duration-200 ease-out",
15403
15468
  isOpen ? "visible translate-x-0" : "invisible -translate-x-full"
15404
15469
  ),
15405
15470
  children: [
15406
- /* @__PURE__ */ jsxs72("div", { className: "flex shrink-0 items-center justify-between gap-md px-lg pb-sm pt-md", children: [
15407
- /* @__PURE__ */ jsx75(
15471
+ /* @__PURE__ */ jsxs73("div", { className: "flex shrink-0 items-center justify-between gap-md px-lg pb-sm pt-md", children: [
15472
+ /* @__PURE__ */ jsx76(
15408
15473
  "a",
15409
15474
  {
15410
15475
  href: homeHref,
15411
15476
  onClick: navigate({ id: "home", href: homeHref }),
15412
- className: cn66(
15477
+ className: cn67(
15413
15478
  "inline-flex min-w-0 cursor-pointer items-center rounded-xs",
15414
15479
  "transition duration-150 ease-out hover:opacity-80",
15415
15480
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus-blue"
15416
15481
  ),
15417
- children: /* @__PURE__ */ jsx75(Logo, { size: "md", wordmark })
15482
+ children: /* @__PURE__ */ jsx76(Logo, { size: "md", wordmark })
15418
15483
  }
15419
15484
  ),
15420
- /* @__PURE__ */ jsx75(
15485
+ /* @__PURE__ */ jsx76(
15421
15486
  Button,
15422
15487
  {
15423
15488
  ref: closeRef,
@@ -15430,9 +15495,9 @@ var SidebarMobile = React75.forwardRef(
15430
15495
  }
15431
15496
  )
15432
15497
  ] }),
15433
- /* @__PURE__ */ jsxs72("div", { className: "min-h-0 flex-1 overflow-y-auto overscroll-contain px-md pb-sm", children: [
15434
- /* @__PURE__ */ jsxs72("div", { className: "px-xs", children: [
15435
- accountList.length > 1 ? /* @__PURE__ */ jsx75(
15498
+ /* @__PURE__ */ jsxs73("div", { className: "min-h-0 flex-1 overflow-y-auto overscroll-contain px-md pb-sm", children: [
15499
+ /* @__PURE__ */ jsxs73("div", { className: "px-xs", children: [
15500
+ accountList.length > 1 ? /* @__PURE__ */ jsx76(
15436
15501
  Button,
15437
15502
  {
15438
15503
  ref: triggerRef,
@@ -15442,37 +15507,37 @@ var SidebarMobile = React75.forwardRef(
15442
15507
  "aria-expanded": accountsOpen,
15443
15508
  "aria-controls": accountsPanelId,
15444
15509
  onClick: () => setAccountsOpen((previous) => !previous),
15445
- trailingIcon: /* @__PURE__ */ jsx75(
15510
+ trailingIcon: /* @__PURE__ */ jsx76(
15446
15511
  "span",
15447
15512
  {
15448
15513
  "aria-hidden": "true",
15449
- className: cn66(
15514
+ className: cn67(
15450
15515
  "flex shrink-0 items-center transition-transform duration-200 ease-out",
15451
15516
  accountsOpen ? "rotate-180" : "rotate-0"
15452
15517
  ),
15453
15518
  children: glyph4("chevron-down", 16, 2)
15454
15519
  }
15455
15520
  ),
15456
- children: /* @__PURE__ */ jsxs72("span", { className: "flex min-w-0 items-center gap-sm", children: [
15521
+ children: /* @__PURE__ */ jsxs73("span", { className: "flex min-w-0 items-center gap-sm", children: [
15457
15522
  glyph4("layers", 18, 1.75),
15458
- /* @__PURE__ */ jsx75("span", { className: "truncate", children: currentAccount?.label ?? "Choose account" })
15523
+ /* @__PURE__ */ jsx76("span", { className: "truncate", children: currentAccount?.label ?? "Choose account" })
15459
15524
  ] })
15460
15525
  }
15461
- ) : /* @__PURE__ */ jsxs72("div", { className: "flex min-h-10 w-full items-center gap-sm rounded-lg bg-surface-soft px-md py-sm text-body-md text-ink", children: [
15526
+ ) : /* @__PURE__ */ jsxs73("div", { className: "flex min-h-10 w-full items-center gap-sm rounded-lg bg-surface-soft px-md py-sm text-body-md text-ink", children: [
15462
15527
  glyph4("layers", 18, 1.75),
15463
- /* @__PURE__ */ jsx75("span", { className: "truncate", children: currentAccount?.label })
15528
+ /* @__PURE__ */ jsx76("span", { className: "truncate", children: currentAccount?.label })
15464
15529
  ] }),
15465
- accountList.length > 1 ? /* @__PURE__ */ jsx75(
15530
+ accountList.length > 1 ? /* @__PURE__ */ jsx76(
15466
15531
  "div",
15467
15532
  {
15468
15533
  id: accountsPanelId,
15469
15534
  "data-state": accountsOpen ? "open" : "closed",
15470
15535
  "aria-hidden": accountsOpen ? void 0 : true,
15471
- className: cn66(
15536
+ className: cn67(
15472
15537
  "grid transition-[grid-template-rows,opacity] duration-200 ease-out",
15473
15538
  accountsOpen ? "grid-rows-[1fr] opacity-100" : "grid-rows-[0fr] opacity-0"
15474
15539
  ),
15475
- children: /* @__PURE__ */ jsx75("div", { className: "overflow-hidden", children: /* @__PURE__ */ jsx75(
15540
+ children: /* @__PURE__ */ jsx76("div", { className: "overflow-hidden", children: /* @__PURE__ */ jsx76(
15476
15541
  "div",
15477
15542
  {
15478
15543
  role: "listbox",
@@ -15480,7 +15545,7 @@ var SidebarMobile = React75.forwardRef(
15480
15545
  className: "mt-xs flex flex-col gap-xxs rounded-lg border border-hairline bg-surface p-xs shadow-sm",
15481
15546
  children: accountList.map((account) => {
15482
15547
  const selected = account.value === selectedAccount;
15483
- return /* @__PURE__ */ jsx75(
15548
+ return /* @__PURE__ */ jsx76(
15484
15549
  Button,
15485
15550
  {
15486
15551
  variant: "row",
@@ -15490,8 +15555,8 @@ var SidebarMobile = React75.forwardRef(
15490
15555
  "data-selected": selected,
15491
15556
  tabIndex: accountsOpen ? void 0 : -1,
15492
15557
  onClick: () => chooseAccount(account),
15493
- leadingIcon: /* @__PURE__ */ jsx75(Icon, { name: "layers", size: 16, tone: "muted" }),
15494
- trailingIcon: selected ? /* @__PURE__ */ jsx75(
15558
+ leadingIcon: /* @__PURE__ */ jsx76(Icon, { name: "layers", size: 16, tone: "muted" }),
15559
+ trailingIcon: selected ? /* @__PURE__ */ jsx76(
15495
15560
  Icon,
15496
15561
  {
15497
15562
  name: "check",
@@ -15502,7 +15567,7 @@ var SidebarMobile = React75.forwardRef(
15502
15567
  }
15503
15568
  }
15504
15569
  ) : void 0,
15505
- children: /* @__PURE__ */ jsx75("span", { className: "truncate", children: account.label })
15570
+ children: /* @__PURE__ */ jsx76("span", { className: "truncate", children: account.label })
15506
15571
  },
15507
15572
  account.value
15508
15573
  );
@@ -15512,11 +15577,11 @@ var SidebarMobile = React75.forwardRef(
15512
15577
  }
15513
15578
  ) : null
15514
15579
  ] }),
15515
- /* @__PURE__ */ jsx75("nav", { "aria-label": "Primary", className: "mt-md flex flex-col gap-xxs", children: navItems.map((item) => {
15580
+ /* @__PURE__ */ jsx76("nav", { "aria-label": "Primary", className: "mt-md flex flex-col gap-xxs", children: navItems.map((item) => {
15516
15581
  const active = item.id === activeId;
15517
15582
  const badged = hasBadge2(item.badge);
15518
15583
  if (!item.children?.length) {
15519
- return /* @__PURE__ */ jsxs72(
15584
+ return /* @__PURE__ */ jsxs73(
15520
15585
  "a",
15521
15586
  {
15522
15587
  href: item.href ?? `#${item.id}`,
@@ -15526,8 +15591,8 @@ var SidebarMobile = React75.forwardRef(
15526
15591
  className: rowClass(active),
15527
15592
  children: [
15528
15593
  glyph4(item.icon, 18, 1.75),
15529
- /* @__PURE__ */ jsx75("span", { className: "truncate", children: item.label }),
15530
- badged ? /* @__PURE__ */ jsx75(
15594
+ /* @__PURE__ */ jsx76("span", { className: "truncate", children: item.label }),
15595
+ badged ? /* @__PURE__ */ jsx76(
15531
15596
  NavBadge,
15532
15597
  {
15533
15598
  badge: item.badge,
@@ -15541,8 +15606,8 @@ var SidebarMobile = React75.forwardRef(
15541
15606
  }
15542
15607
  const expanded = expandedId === item.id;
15543
15608
  const subId = `${uid}-${item.id}-sub`;
15544
- return /* @__PURE__ */ jsxs72("div", { className: "flex flex-col gap-xxs", children: [
15545
- /* @__PURE__ */ jsx75(
15609
+ return /* @__PURE__ */ jsxs73("div", { className: "flex flex-col gap-xxs", children: [
15610
+ /* @__PURE__ */ jsx76(
15546
15611
  Button,
15547
15612
  {
15548
15613
  variant: "nav-row",
@@ -15554,19 +15619,19 @@ var SidebarMobile = React75.forwardRef(
15554
15619
  onClick: () => toggleExpanded(item.id),
15555
15620
  className: "px-md",
15556
15621
  leadingIcon: glyph4(item.icon, 18, 1.75),
15557
- trailingIcon: /* @__PURE__ */ jsxs72("span", { className: "flex items-center gap-xs", children: [
15558
- badged ? /* @__PURE__ */ jsx75(
15622
+ trailingIcon: /* @__PURE__ */ jsxs73("span", { className: "flex items-center gap-xs", children: [
15623
+ badged ? /* @__PURE__ */ jsx76(
15559
15624
  NavBadge,
15560
15625
  {
15561
15626
  badge: item.badge,
15562
15627
  active
15563
15628
  }
15564
15629
  ) : null,
15565
- /* @__PURE__ */ jsx75(
15630
+ /* @__PURE__ */ jsx76(
15566
15631
  "span",
15567
15632
  {
15568
15633
  "aria-hidden": "true",
15569
- className: cn66(
15634
+ className: cn67(
15570
15635
  "flex shrink-0 items-center transition-transform duration-200 ease-out",
15571
15636
  expanded ? "rotate-180" : "rotate-0"
15572
15637
  ),
@@ -15574,20 +15639,20 @@ var SidebarMobile = React75.forwardRef(
15574
15639
  }
15575
15640
  )
15576
15641
  ] }),
15577
- children: /* @__PURE__ */ jsx75("span", { className: "truncate text-left", children: item.label })
15642
+ children: /* @__PURE__ */ jsx76("span", { className: "truncate text-left", children: item.label })
15578
15643
  }
15579
15644
  ),
15580
- /* @__PURE__ */ jsx75(
15645
+ /* @__PURE__ */ jsx76(
15581
15646
  "div",
15582
15647
  {
15583
15648
  id: subId,
15584
15649
  "data-state": expanded ? "open" : "closed",
15585
15650
  "aria-hidden": expanded ? void 0 : true,
15586
- className: cn66(
15651
+ className: cn67(
15587
15652
  "grid transition-[grid-template-rows,opacity] duration-200 ease-out",
15588
15653
  expanded ? "grid-rows-[1fr] opacity-100" : "grid-rows-[0fr] opacity-0"
15589
15654
  ),
15590
- children: /* @__PURE__ */ jsx75("div", { className: "overflow-hidden", children: /* @__PURE__ */ jsx75("ul", { className: "flex flex-col", children: item.children.map((child) => /* @__PURE__ */ jsx75("li", { children: /* @__PURE__ */ jsxs72(
15655
+ children: /* @__PURE__ */ jsx76("div", { className: "overflow-hidden", children: /* @__PURE__ */ jsx76("ul", { className: "flex flex-col", children: item.children.map((child) => /* @__PURE__ */ jsx76("li", { children: /* @__PURE__ */ jsxs73(
15591
15656
  "a",
15592
15657
  {
15593
15658
  href: child.href ?? `#${child.id}`,
@@ -15598,14 +15663,14 @@ var SidebarMobile = React75.forwardRef(
15598
15663
  tabIndex: expanded ? void 0 : -1,
15599
15664
  className: subRowClass,
15600
15665
  children: [
15601
- /* @__PURE__ */ jsx75(
15666
+ /* @__PURE__ */ jsx76(
15602
15667
  "span",
15603
15668
  {
15604
15669
  "aria-hidden": "true",
15605
15670
  className: "size-4 shrink-0"
15606
15671
  }
15607
15672
  ),
15608
- /* @__PURE__ */ jsx75("span", { className: "truncate", children: child.label })
15673
+ /* @__PURE__ */ jsx76("span", { className: "truncate", children: child.label })
15609
15674
  ]
15610
15675
  }
15611
15676
  ) }, child.id)) }) })
@@ -15613,8 +15678,8 @@ var SidebarMobile = React75.forwardRef(
15613
15678
  )
15614
15679
  ] }, item.id);
15615
15680
  }) }),
15616
- /* @__PURE__ */ jsx75(Divider, { className: "my-md" }),
15617
- /* @__PURE__ */ jsx75(
15681
+ /* @__PURE__ */ jsx76(Divider, { className: "my-md" }),
15682
+ /* @__PURE__ */ jsx76(
15618
15683
  Button,
15619
15684
  {
15620
15685
  variant: "outline-soft",
@@ -15626,11 +15691,11 @@ var SidebarMobile = React75.forwardRef(
15626
15691
  children: primaryActionLabel
15627
15692
  }
15628
15693
  ),
15629
- /* @__PURE__ */ jsx75(Divider, { className: "my-md" }),
15630
- /* @__PURE__ */ jsx75("nav", { "aria-label": "Secondary", className: "flex flex-col gap-xxs", children: secondaryNav.map((item) => {
15694
+ /* @__PURE__ */ jsx76(Divider, { className: "my-md" }),
15695
+ /* @__PURE__ */ jsx76("nav", { "aria-label": "Secondary", className: "flex flex-col gap-xxs", children: secondaryNav.map((item) => {
15631
15696
  const active = item.id === secondaryActiveId;
15632
15697
  const badged = hasBadge2(item.badge);
15633
- return /* @__PURE__ */ jsxs72(
15698
+ return /* @__PURE__ */ jsxs73(
15634
15699
  "a",
15635
15700
  {
15636
15701
  href: item.href ?? `#${item.id}`,
@@ -15640,8 +15705,8 @@ var SidebarMobile = React75.forwardRef(
15640
15705
  className: rowClass(active),
15641
15706
  children: [
15642
15707
  glyph4(item.icon, 18, 1.75),
15643
- /* @__PURE__ */ jsx75("span", { className: "truncate", children: item.label }),
15644
- badged ? /* @__PURE__ */ jsx75(
15708
+ /* @__PURE__ */ jsx76("span", { className: "truncate", children: item.label }),
15709
+ badged ? /* @__PURE__ */ jsx76(
15645
15710
  NavBadge,
15646
15711
  {
15647
15712
  badge: item.badge,
@@ -15654,14 +15719,14 @@ var SidebarMobile = React75.forwardRef(
15654
15719
  );
15655
15720
  }) })
15656
15721
  ] }),
15657
- /* @__PURE__ */ jsxs72("div", { className: "flex shrink-0 flex-col gap-sm bg-surface px-md pb-md pt-xs", children: [
15722
+ /* @__PURE__ */ jsxs73("div", { className: "flex shrink-0 flex-col gap-sm bg-surface px-md pb-md pt-xs", children: [
15658
15723
  mobileDrawerFooter,
15659
- planTile ? /* @__PURE__ */ jsxs72(
15724
+ planTile ? /* @__PURE__ */ jsxs73(
15660
15725
  "a",
15661
15726
  {
15662
15727
  href: planTile.href ?? "#plan",
15663
15728
  onClick: navigate({ id: "plan", href: planTile.href }),
15664
- className: cn66(
15729
+ className: cn67(
15665
15730
  "flex w-full cursor-pointer items-center gap-md rounded-lg bg-primary-subdued",
15666
15731
  "px-md py-sm transition duration-150 ease-out",
15667
15732
  "hover:bg-primary-subdued-hover active:bg-primary-subdued-hover",
@@ -15669,23 +15734,23 @@ var SidebarMobile = React75.forwardRef(
15669
15734
  "focus-visible:ring-inset"
15670
15735
  ),
15671
15736
  children: [
15672
- /* @__PURE__ */ jsx75("span", { className: "flex shrink-0 items-center text-primary-on-subdued", children: glyph4("chart-bar", 18, 2) }),
15673
- /* @__PURE__ */ jsxs72("span", { className: "flex min-w-0 flex-1 flex-col", children: [
15674
- /* @__PURE__ */ jsx75("span", { className: "truncate text-body-md text-ink", children: planTile.name }),
15675
- /* @__PURE__ */ jsx75("span", { className: "truncate text-body-tabular text-body", children: planTile.price })
15737
+ /* @__PURE__ */ jsx76("span", { className: "flex shrink-0 items-center text-primary-on-subdued", children: glyph4("chart-bar", 18, 2) }),
15738
+ /* @__PURE__ */ jsxs73("span", { className: "flex min-w-0 flex-1 flex-col", children: [
15739
+ /* @__PURE__ */ jsx76("span", { className: "truncate text-body-md text-ink", children: planTile.name }),
15740
+ /* @__PURE__ */ jsx76("span", { className: "truncate text-body-tabular text-body", children: planTile.price })
15676
15741
  ] }),
15677
- /* @__PURE__ */ jsx75("span", { className: "shrink-0 text-primary-on-subdued", children: glyph4("arrow-up-right", 18, 2) })
15742
+ /* @__PURE__ */ jsx76("span", { className: "shrink-0 text-primary-on-subdued", children: glyph4("arrow-up-right", 18, 2) })
15678
15743
  ]
15679
15744
  }
15680
15745
  ) : null,
15681
- /* @__PURE__ */ jsxs72("div", { className: "flex items-center gap-sm px-xs", children: [
15682
- /* @__PURE__ */ jsx75(Avatar, { name: profile.name, src: profile.src, size: "md" }),
15683
- /* @__PURE__ */ jsxs72("span", { className: "flex min-w-0 flex-1 flex-col", children: [
15684
- /* @__PURE__ */ jsx75("span", { className: "truncate text-body-md text-ink", children: profile.name }),
15685
- profile.email ? /* @__PURE__ */ jsx75("span", { className: "truncate text-caption text-body", children: profile.email }) : null
15746
+ /* @__PURE__ */ jsxs73("div", { className: "flex items-center gap-sm px-xs", children: [
15747
+ /* @__PURE__ */ jsx76(Avatar, { name: profile.name, src: profile.src, size: "md" }),
15748
+ /* @__PURE__ */ jsxs73("span", { className: "flex min-w-0 flex-1 flex-col", children: [
15749
+ /* @__PURE__ */ jsx76("span", { className: "truncate text-body-md text-ink", children: profile.name }),
15750
+ profile.email ? /* @__PURE__ */ jsx76("span", { className: "truncate text-caption text-body", children: profile.email }) : null
15686
15751
  ] }),
15687
- /* @__PURE__ */ jsxs72("span", { className: "relative inline-flex shrink-0", children: [
15688
- /* @__PURE__ */ jsx75(
15752
+ /* @__PURE__ */ jsxs73("span", { className: "relative inline-flex shrink-0", children: [
15753
+ /* @__PURE__ */ jsx76(
15689
15754
  Button,
15690
15755
  {
15691
15756
  variant: "bare",
@@ -15696,11 +15761,11 @@ var SidebarMobile = React75.forwardRef(
15696
15761
  children: glyph4("bell", 20, 1.75)
15697
15762
  }
15698
15763
  ),
15699
- notificationCount > 0 ? /* @__PURE__ */ jsx75(
15764
+ notificationCount > 0 ? /* @__PURE__ */ jsx76(
15700
15765
  "span",
15701
15766
  {
15702
15767
  "aria-hidden": "true",
15703
- className: cn66(
15768
+ className: cn67(
15704
15769
  "pointer-events-none absolute -right-xxs -top-xxs",
15705
15770
  "flex h-4 min-w-4 items-center justify-center rounded-full",
15706
15771
  "bg-primary px-xxs text-caption text-on-primary"
@@ -15709,7 +15774,7 @@ var SidebarMobile = React75.forwardRef(
15709
15774
  }
15710
15775
  ) : null
15711
15776
  ] }),
15712
- /* @__PURE__ */ jsx75(
15777
+ /* @__PURE__ */ jsx76(
15713
15778
  Button,
15714
15779
  {
15715
15780
  variant: "bare",
@@ -15730,9 +15795,9 @@ var SidebarMobile = React75.forwardRef(
15730
15795
  ),
15731
15796
  document.body
15732
15797
  );
15733
- return /* @__PURE__ */ jsxs72("div", { ref, className: cn66("w-full", className), ...rest, children: [
15734
- /* @__PURE__ */ jsxs72("div", { className: "flex w-full items-center gap-xs border-b border-hairline bg-surface px-md py-sm", children: [
15735
- /* @__PURE__ */ jsx75(
15798
+ return /* @__PURE__ */ jsxs73("div", { ref, className: cn67("w-full", className), ...rest, children: [
15799
+ /* @__PURE__ */ jsxs73("div", { className: "flex w-full items-center gap-xs border-b border-hairline bg-surface px-md py-sm", children: [
15800
+ /* @__PURE__ */ jsx76(
15736
15801
  Button,
15737
15802
  {
15738
15803
  ref: toggleRef,
@@ -15746,20 +15811,20 @@ var SidebarMobile = React75.forwardRef(
15746
15811
  children: glyph4("menu", 22, 2)
15747
15812
  }
15748
15813
  ),
15749
- /* @__PURE__ */ jsx75(
15814
+ /* @__PURE__ */ jsx76(
15750
15815
  "a",
15751
15816
  {
15752
15817
  href: homeHref,
15753
15818
  onClick: navigate({ id: "home", href: homeHref }),
15754
- className: cn66(
15819
+ className: cn67(
15755
15820
  "inline-flex min-w-0 cursor-pointer items-center rounded-xs",
15756
15821
  "transition duration-150 ease-out hover:opacity-80",
15757
15822
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus-blue"
15758
15823
  ),
15759
- children: /* @__PURE__ */ jsx75(Logo, { size: "md", wordmark })
15824
+ children: /* @__PURE__ */ jsx76(Logo, { size: "md", wordmark })
15760
15825
  }
15761
15826
  ),
15762
- mobileActions ? /* @__PURE__ */ jsx75("div", { className: "ml-auto flex shrink-0 items-center gap-xs", children: mobileActions }) : null
15827
+ mobileActions ? /* @__PURE__ */ jsx76("div", { className: "ml-auto flex shrink-0 items-center gap-xs", children: mobileActions }) : null
15763
15828
  ] }),
15764
15829
  drawer
15765
15830
  ] });
@@ -15768,9 +15833,9 @@ var SidebarMobile = React75.forwardRef(
15768
15833
  SidebarMobile.displayName = "SidebarMobile";
15769
15834
 
15770
15835
  // virtual-pkg:src/atoms/Sidebar/Sidebar.tsx
15771
- import { jsx as jsx76, jsxs as jsxs73 } from "react/jsx-runtime";
15772
- var cn67 = (...values) => values.filter(Boolean).join(" ");
15773
- var Sidebar = React76.forwardRef(
15836
+ import { jsx as jsx77, jsxs as jsxs74 } from "react/jsx-runtime";
15837
+ var cn68 = (...values) => values.filter(Boolean).join(" ");
15838
+ var Sidebar = React77.forwardRef(
15774
15839
  ({
15775
15840
  wordmark,
15776
15841
  homeHref,
@@ -15809,8 +15874,8 @@ var Sidebar = React76.forwardRef(
15809
15874
  mobileClassName,
15810
15875
  className,
15811
15876
  ...rest
15812
- }, ref) => /* @__PURE__ */ jsxs73("div", { ref, className: cn67("h-full w-full", className), ...rest, children: [
15813
- /* @__PURE__ */ jsx76("div", { className: "hidden h-full md:block", children: /* @__PURE__ */ jsx76(
15877
+ }, ref) => /* @__PURE__ */ jsxs74("div", { ref, className: cn68("h-full w-full", className), ...rest, children: [
15878
+ /* @__PURE__ */ jsx77("div", { className: "hidden h-full md:block", children: /* @__PURE__ */ jsx77(
15814
15879
  SidebarDesktop,
15815
15880
  {
15816
15881
  className: desktopClassName,
@@ -15841,7 +15906,7 @@ var Sidebar = React76.forwardRef(
15841
15906
  onFoldedChange
15842
15907
  }
15843
15908
  ) }),
15844
- /* @__PURE__ */ jsx76("div", { className: "md:hidden", children: /* @__PURE__ */ jsx76(
15909
+ /* @__PURE__ */ jsx77("div", { className: "md:hidden", children: /* @__PURE__ */ jsx77(
15845
15910
  SidebarMobile,
15846
15911
  {
15847
15912
  className: mobileClassName,
@@ -15882,8 +15947,8 @@ var Sidebar = React76.forwardRef(
15882
15947
  Sidebar.displayName = "Sidebar";
15883
15948
 
15884
15949
  // virtual-pkg:src/atoms/Skeleton/Skeleton.tsx
15885
- import React77 from "react";
15886
- import { jsx as jsx77, jsxs as jsxs74 } from "react/jsx-runtime";
15950
+ import React78 from "react";
15951
+ import { jsx as jsx78, jsxs as jsxs75 } from "react/jsx-runtime";
15887
15952
  var cx2 = (...parts) => parts.filter(Boolean).join(" ");
15888
15953
  var CARD_ROWS = [
15889
15954
  ["w-[18%]", "w-[24%]", "w-[13%]"],
@@ -15892,7 +15957,7 @@ var CARD_ROWS = [
15892
15957
  ["w-[17%]", "w-[24%]", "w-[12%]"],
15893
15958
  ["w-[14%]", "w-[22%]", "w-[14%]"]
15894
15959
  ];
15895
- var Skeleton = React77.forwardRef(
15960
+ var Skeleton = React78.forwardRef(
15896
15961
  ({
15897
15962
  variant = "bar",
15898
15963
  lines = 2,
@@ -15910,7 +15975,7 @@ var Skeleton = React77.forwardRef(
15910
15975
  let content;
15911
15976
  switch (variant) {
15912
15977
  case "circle":
15913
- content = /* @__PURE__ */ jsx77(
15978
+ content = /* @__PURE__ */ jsx78(
15914
15979
  "div",
15915
15980
  {
15916
15981
  "aria-hidden": "true",
@@ -15920,7 +15985,7 @@ var Skeleton = React77.forwardRef(
15920
15985
  break;
15921
15986
  case "text": {
15922
15987
  const count = Math.max(1, lines);
15923
- content = /* @__PURE__ */ jsx77("div", { "aria-hidden": "true", className: "flex w-full flex-col gap-sm", children: Array.from({ length: count }).map((_, i) => /* @__PURE__ */ jsx77(
15988
+ content = /* @__PURE__ */ jsx78("div", { "aria-hidden": "true", className: "flex w-full flex-col gap-sm", children: Array.from({ length: count }).map((_, i) => /* @__PURE__ */ jsx78(
15924
15989
  "div",
15925
15990
  {
15926
15991
  className: cx2(
@@ -15934,49 +15999,49 @@ var Skeleton = React77.forwardRef(
15934
15999
  break;
15935
16000
  }
15936
16001
  case "media":
15937
- content = /* @__PURE__ */ jsxs74("div", { "aria-hidden": "true", className: "flex w-full items-center gap-md", children: [
15938
- /* @__PURE__ */ jsx77("div", { className: cx2(fill("shrink-0 rounded-full"), "size-xxl") }),
15939
- /* @__PURE__ */ jsxs74("div", { className: "flex w-full flex-col gap-sm", children: [
15940
- /* @__PURE__ */ jsx77("div", { className: cx2(fill("rounded-xs"), "h-sm w-[62%]") }),
15941
- /* @__PURE__ */ jsx77("div", { className: cx2(fill("rounded-xs"), "h-sm w-full") })
16002
+ content = /* @__PURE__ */ jsxs75("div", { "aria-hidden": "true", className: "flex w-full items-center gap-md", children: [
16003
+ /* @__PURE__ */ jsx78("div", { className: cx2(fill("shrink-0 rounded-full"), "size-xxl") }),
16004
+ /* @__PURE__ */ jsxs75("div", { className: "flex w-full flex-col gap-sm", children: [
16005
+ /* @__PURE__ */ jsx78("div", { className: cx2(fill("rounded-xs"), "h-sm w-[62%]") }),
16006
+ /* @__PURE__ */ jsx78("div", { className: cx2(fill("rounded-xs"), "h-sm w-full") })
15942
16007
  ] })
15943
16008
  ] });
15944
16009
  break;
15945
16010
  case "list-row":
15946
- content = /* @__PURE__ */ jsxs74(
16011
+ content = /* @__PURE__ */ jsxs75(
15947
16012
  "div",
15948
16013
  {
15949
16014
  "aria-hidden": "true",
15950
16015
  className: "flex w-full items-center rounded-md border border-hairline bg-surface px-base py-md shadow-card",
15951
16016
  children: [
15952
- /* @__PURE__ */ jsx77("div", { className: cx2(fill("rounded-sm"), "h-md w-[46%]") }),
15953
- /* @__PURE__ */ jsxs74("div", { className: "ml-auto flex items-center gap-md", children: [
15954
- /* @__PURE__ */ jsx77("div", { className: "h-lg w-px shrink-0 bg-hairline" }),
15955
- /* @__PURE__ */ jsx77("div", { className: cx2(fill("rounded-sm"), "size-md") }),
15956
- /* @__PURE__ */ jsx77("div", { className: cx2(fill("rounded-sm"), "size-md") })
16017
+ /* @__PURE__ */ jsx78("div", { className: cx2(fill("rounded-sm"), "h-md w-[46%]") }),
16018
+ /* @__PURE__ */ jsxs75("div", { className: "ml-auto flex items-center gap-md", children: [
16019
+ /* @__PURE__ */ jsx78("div", { className: "h-lg w-px shrink-0 bg-hairline" }),
16020
+ /* @__PURE__ */ jsx78("div", { className: cx2(fill("rounded-sm"), "size-md") }),
16021
+ /* @__PURE__ */ jsx78("div", { className: cx2(fill("rounded-sm"), "size-md") })
15957
16022
  ] })
15958
16023
  ]
15959
16024
  }
15960
16025
  );
15961
16026
  break;
15962
16027
  case "card":
15963
- content = /* @__PURE__ */ jsx77(
16028
+ content = /* @__PURE__ */ jsx78(
15964
16029
  "div",
15965
16030
  {
15966
16031
  "aria-hidden": "true",
15967
16032
  className: "w-full overflow-hidden rounded-lg border border-hairline bg-surface shadow-card",
15968
16033
  children: Array.from({ length: Math.max(1, rows) }).map((_, i) => {
15969
16034
  const [lead, mid, trail] = CARD_ROWS[i % CARD_ROWS.length];
15970
- return /* @__PURE__ */ jsxs74(
16035
+ return /* @__PURE__ */ jsxs75(
15971
16036
  "div",
15972
16037
  {
15973
16038
  className: "flex items-center justify-between gap-lg border-b border-hairline-soft px-lg py-md last:border-b-0",
15974
16039
  children: [
15975
- /* @__PURE__ */ jsxs74("div", { className: "flex min-w-0 flex-1 items-center gap-lg", children: [
15976
- /* @__PURE__ */ jsx77("div", { className: cx2(fill("shrink-0 rounded-sm"), "h-md", lead) }),
15977
- /* @__PURE__ */ jsx77("div", { className: cx2(fill("shrink-0 rounded-sm"), "h-md", mid) })
16040
+ /* @__PURE__ */ jsxs75("div", { className: "flex min-w-0 flex-1 items-center gap-lg", children: [
16041
+ /* @__PURE__ */ jsx78("div", { className: cx2(fill("shrink-0 rounded-sm"), "h-md", lead) }),
16042
+ /* @__PURE__ */ jsx78("div", { className: cx2(fill("shrink-0 rounded-sm"), "h-md", mid) })
15978
16043
  ] }),
15979
- /* @__PURE__ */ jsx77("div", { className: cx2(fill("shrink-0 rounded-sm"), "h-md", trail) })
16044
+ /* @__PURE__ */ jsx78("div", { className: cx2(fill("shrink-0 rounded-sm"), "h-md", trail) })
15980
16045
  ]
15981
16046
  },
15982
16047
  i
@@ -15987,7 +16052,7 @@ var Skeleton = React77.forwardRef(
15987
16052
  break;
15988
16053
  case "bar":
15989
16054
  default:
15990
- content = /* @__PURE__ */ jsx77(
16055
+ content = /* @__PURE__ */ jsx78(
15991
16056
  "div",
15992
16057
  {
15993
16058
  "aria-hidden": "true",
@@ -15996,7 +16061,7 @@ var Skeleton = React77.forwardRef(
15996
16061
  );
15997
16062
  break;
15998
16063
  }
15999
- return /* @__PURE__ */ jsx77(
16064
+ return /* @__PURE__ */ jsx78(
16000
16065
  "div",
16001
16066
  {
16002
16067
  ref,
@@ -16013,13 +16078,13 @@ var Skeleton = React77.forwardRef(
16013
16078
  Skeleton.displayName = "Skeleton";
16014
16079
 
16015
16080
  // virtual-pkg:src/atoms/Slider/Slider.tsx
16016
- import * as React78 from "react";
16017
- import { jsx as jsx78, jsxs as jsxs75 } from "react/jsx-runtime";
16018
- var cn68 = (...values) => values.filter(Boolean).join(" ");
16081
+ import * as React79 from "react";
16082
+ import { jsx as jsx79, jsxs as jsxs76 } from "react/jsx-runtime";
16083
+ var cn69 = (...values) => values.filter(Boolean).join(" ");
16019
16084
  var THUMB_PX = 24;
16020
16085
  var TRAVEL_INSET = THUMB_PX / 2;
16021
16086
  var defaultFormat = (value) => value.toLocaleString();
16022
- var Slider = React78.forwardRef(
16087
+ var Slider = React79.forwardRef(
16023
16088
  ({
16024
16089
  value,
16025
16090
  defaultValue,
@@ -16043,12 +16108,12 @@ var Slider = React78.forwardRef(
16043
16108
  "aria-label": ariaLabelProp,
16044
16109
  ...rest
16045
16110
  }, ref) => {
16046
- const generatedId = React78.useId();
16111
+ const generatedId = React79.useId();
16047
16112
  const sliderId = id ?? `slider-${generatedId}`;
16048
- const [internalValue, setInternalValue] = React78.useState(
16113
+ const [internalValue, setInternalValue] = React79.useState(
16049
16114
  defaultValue ?? min
16050
16115
  );
16051
- const [focused, setFocused] = React78.useState(false);
16116
+ const [focused, setFocused] = React79.useState(false);
16052
16117
  const isControlled = value !== void 0;
16053
16118
  const current = isControlled ? Number(value) : internalValue;
16054
16119
  const span = max - min;
@@ -16064,16 +16129,16 @@ var Slider = React78.forwardRef(
16064
16129
  const readout = format(current);
16065
16130
  const thumbLeft = `calc(${TRAVEL_INSET}px + (100% - ${THUMB_PX}px) * ${ratio})`;
16066
16131
  const fillWidth = `calc(${TRAVEL_INSET}px + (100% - ${THUMB_PX}px) * ${ratio})`;
16067
- return /* @__PURE__ */ jsxs75(
16132
+ return /* @__PURE__ */ jsxs76(
16068
16133
  "div",
16069
16134
  {
16070
- className: cn68(
16135
+ className: cn69(
16071
16136
  "flex w-full flex-col gap-lg transition-opacity duration-150 ease-out",
16072
16137
  disabled ? "opacity-50" : "",
16073
16138
  className
16074
16139
  ),
16075
16140
  children: [
16076
- label ? /* @__PURE__ */ jsx78(
16141
+ label ? /* @__PURE__ */ jsx79(
16077
16142
  Label,
16078
16143
  {
16079
16144
  htmlFor: sliderId,
@@ -16082,11 +16147,11 @@ var Slider = React78.forwardRef(
16082
16147
  children: label
16083
16148
  }
16084
16149
  ) : null,
16085
- showValue ? /* @__PURE__ */ jsx78(
16150
+ showValue ? /* @__PURE__ */ jsx79(
16086
16151
  "output",
16087
16152
  {
16088
16153
  htmlFor: sliderId,
16089
- className: cn68(
16154
+ className: cn69(
16090
16155
  "flex min-h-12 w-full items-center rounded-md border bg-surface px-lg py-sm",
16091
16156
  "transition-colors duration-150 ease-out",
16092
16157
  disabled ? "border-hairline-soft" : "border-hairline-strong",
@@ -16097,14 +16162,14 @@ var Slider = React78.forwardRef(
16097
16162
  children: readout
16098
16163
  }
16099
16164
  ) : null,
16100
- /* @__PURE__ */ jsxs75("div", { className: "flex w-full flex-col gap-sm", children: [
16101
- /* @__PURE__ */ jsxs75("div", { className: "group relative w-full", children: [
16102
- /* @__PURE__ */ jsx78("div", { className: "pointer-events-none flex h-10 w-full items-center px-sm", children: /* @__PURE__ */ jsxs75("div", { className: "relative h-1.5 w-full rounded-full bg-surface-strong", children: [
16103
- /* @__PURE__ */ jsx78(
16165
+ /* @__PURE__ */ jsxs76("div", { className: "flex w-full flex-col gap-sm", children: [
16166
+ /* @__PURE__ */ jsxs76("div", { className: "group relative w-full", children: [
16167
+ /* @__PURE__ */ jsx79("div", { className: "pointer-events-none flex h-10 w-full items-center px-sm", children: /* @__PURE__ */ jsxs76("div", { className: "relative h-1.5 w-full rounded-full bg-surface-strong", children: [
16168
+ /* @__PURE__ */ jsx79(
16104
16169
  "span",
16105
16170
  {
16106
16171
  "aria-hidden": "true",
16107
- className: cn68(
16172
+ className: cn69(
16108
16173
  "absolute left-0 top-0 h-full rounded-full",
16109
16174
  "transition-[width,background-color] duration-150 ease-out",
16110
16175
  disabled ? "bg-primary-disabled" : "bg-primary"
@@ -16112,11 +16177,11 @@ var Slider = React78.forwardRef(
16112
16177
  style: { width: fillWidth }
16113
16178
  }
16114
16179
  ),
16115
- /* @__PURE__ */ jsx78(
16180
+ /* @__PURE__ */ jsx79(
16116
16181
  "span",
16117
16182
  {
16118
16183
  "aria-hidden": "true",
16119
- className: cn68(
16184
+ className: cn69(
16120
16185
  "absolute top-1/2 size-6 -translate-x-1/2 -translate-y-1/2",
16121
16186
  "rounded-full border-2 bg-canvas shadow-sm",
16122
16187
  "transition duration-150 ease-out",
@@ -16127,7 +16192,7 @@ var Slider = React78.forwardRef(
16127
16192
  }
16128
16193
  )
16129
16194
  ] }) }),
16130
- /* @__PURE__ */ jsx78("div", { className: "absolute inset-0 z-10", children: /* @__PURE__ */ jsx78(
16195
+ /* @__PURE__ */ jsx79("div", { className: "absolute inset-0 z-10", children: /* @__PURE__ */ jsx79(
16131
16196
  Input,
16132
16197
  {
16133
16198
  ref,
@@ -16153,7 +16218,7 @@ var Slider = React78.forwardRef(
16153
16218
  },
16154
16219
  className: "h-full",
16155
16220
  fieldClassName: "h-10 gap-0",
16156
- inputClassName: cn68(
16221
+ inputClassName: cn69(
16157
16222
  "h-10 w-full appearance-none bg-transparent p-0 opacity-0",
16158
16223
  disabled ? "cursor-not-allowed" : "cursor-pointer"
16159
16224
  ),
@@ -16161,18 +16226,18 @@ var Slider = React78.forwardRef(
16161
16226
  }
16162
16227
  ) })
16163
16228
  ] }),
16164
- showBounds ? /* @__PURE__ */ jsxs75(
16229
+ showBounds ? /* @__PURE__ */ jsxs76(
16165
16230
  "div",
16166
16231
  {
16167
- className: cn68(
16232
+ className: cn69(
16168
16233
  "flex w-full items-center justify-between px-sm text-caption",
16169
16234
  disabled ? "text-muted-soft" : "text-muted",
16170
16235
  boundsClassName
16171
16236
  ),
16172
16237
  style: { fontVariantNumeric: "tabular-nums" },
16173
16238
  children: [
16174
- /* @__PURE__ */ jsx78("span", { children: formatBounds(min) }),
16175
- /* @__PURE__ */ jsx78("span", { children: formatBounds(max) })
16239
+ /* @__PURE__ */ jsx79("span", { children: formatBounds(min) }),
16240
+ /* @__PURE__ */ jsx79("span", { children: formatBounds(max) })
16176
16241
  ]
16177
16242
  }
16178
16243
  ) : null
@@ -16185,20 +16250,20 @@ var Slider = React78.forwardRef(
16185
16250
  Slider.displayName = "Slider";
16186
16251
 
16187
16252
  // virtual-pkg:src/atoms/Spinner/Spinner.tsx
16188
- import * as React79 from "react";
16189
- import { jsx as jsx79, jsxs as jsxs76 } from "react/jsx-runtime";
16190
- var cn69 = (...values) => values.filter(Boolean).join(" ");
16253
+ import * as React80 from "react";
16254
+ import { jsx as jsx80, jsxs as jsxs77 } from "react/jsx-runtime";
16255
+ var cn70 = (...values) => values.filter(Boolean).join(" ");
16191
16256
  var GEOMETRY = {
16192
16257
  sm: { box: 20, ring: 2, glyph: 11, stroke: 3.25, turn: 0.7 },
16193
16258
  md: { box: 32, ring: 3, glyph: 17, stroke: 2.9, turn: 0.9 },
16194
16259
  lg: { box: 56, ring: 4, glyph: 29, stroke: 2.4, turn: 1.1 }
16195
16260
  };
16196
16261
  var ARC = "conic-gradient(from 0deg, var(--color-hairline) 0deg, var(--color-primary) 62deg, var(--color-primary) 102deg, var(--color-hairline) 158deg, var(--color-hairline) 360deg)";
16197
- var Spinner = React79.forwardRef(
16262
+ var Spinner = React80.forwardRef(
16198
16263
  ({ size = "md", status = "loading", message, caption, className, ...rest }, ref) => {
16199
16264
  const { box, ring, glyph: glyph5, stroke, turn } = GEOMETRY[size];
16200
16265
  const hole = `radial-gradient(closest-side, transparent calc(100% - ${ring}px), black calc(100% - ${ring}px))`;
16201
- const indicator = /* @__PURE__ */ jsxs76(
16266
+ const indicator = /* @__PURE__ */ jsxs77(
16202
16267
  "span",
16203
16268
  {
16204
16269
  "aria-hidden": "true",
@@ -16206,10 +16271,10 @@ var Spinner = React79.forwardRef(
16206
16271
  className: "group relative inline-flex shrink-0 items-center justify-center",
16207
16272
  style: { width: box, height: box },
16208
16273
  children: [
16209
- /* @__PURE__ */ jsx79(
16274
+ /* @__PURE__ */ jsx80(
16210
16275
  "span",
16211
16276
  {
16212
- className: cn69(
16277
+ className: cn70(
16213
16278
  "absolute inset-0 rounded-full",
16214
16279
  "animate-spin motion-reduce:animate-none",
16215
16280
  "transition duration-200 ease-out",
@@ -16223,23 +16288,23 @@ var Spinner = React79.forwardRef(
16223
16288
  }
16224
16289
  }
16225
16290
  ),
16226
- /* @__PURE__ */ jsx79(
16291
+ /* @__PURE__ */ jsx80(
16227
16292
  "span",
16228
16293
  {
16229
- className: cn69(
16294
+ className: cn70(
16230
16295
  "absolute inset-0 inline-flex items-center justify-center rounded-full",
16231
16296
  "bg-primary text-on-primary",
16232
16297
  "transition duration-200 ease-out",
16233
16298
  "group-data-[status=loading]:scale-90 group-data-[status=loading]:opacity-0"
16234
16299
  ),
16235
- children: /* @__PURE__ */ jsx79(
16300
+ children: /* @__PURE__ */ jsx80(
16236
16301
  Icon,
16237
16302
  {
16238
16303
  name: "check",
16239
16304
  size: glyph5,
16240
16305
  strokeWidth: stroke,
16241
16306
  tone: "on-dark",
16242
- className: cn69(
16307
+ className: cn70(
16243
16308
  "transition duration-200 ease-out",
16244
16309
  "group-data-[status=success]:scale-100 group-data-[status=success]:opacity-100",
16245
16310
  "group-data-[status=loading]:scale-50 group-data-[status=loading]:opacity-0"
@@ -16251,26 +16316,26 @@ var Spinner = React79.forwardRef(
16251
16316
  ]
16252
16317
  }
16253
16318
  );
16254
- return /* @__PURE__ */ jsxs76(
16319
+ return /* @__PURE__ */ jsxs77(
16255
16320
  "div",
16256
16321
  {
16257
16322
  ref,
16258
16323
  role: "status",
16259
16324
  "aria-live": "polite",
16260
16325
  "data-status": status,
16261
- className: cn69(
16326
+ className: cn70(
16262
16327
  "inline-flex",
16263
16328
  caption ? "flex-col items-center gap-sm" : "items-center",
16264
16329
  className
16265
16330
  ),
16266
16331
  ...rest,
16267
16332
  children: [
16268
- message ? /* @__PURE__ */ jsxs76("span", { className: "inline-flex items-center gap-md", children: [
16333
+ message ? /* @__PURE__ */ jsxs77("span", { className: "inline-flex items-center gap-md", children: [
16269
16334
  indicator,
16270
- /* @__PURE__ */ jsx79("span", { className: "text-body-md text-ink transition-colors duration-200 ease-out", children: message })
16335
+ /* @__PURE__ */ jsx80("span", { className: "text-body-md text-ink transition-colors duration-200 ease-out", children: message })
16271
16336
  ] }) : indicator,
16272
- caption ? /* @__PURE__ */ jsx79("span", { className: "text-body-sm text-ink", children: caption }) : null,
16273
- /* @__PURE__ */ jsx79("span", { className: "sr-only", children: status === "success" ? caption ?? "Success" : message ?? "Loading" })
16337
+ caption ? /* @__PURE__ */ jsx80("span", { className: "text-body-sm text-ink", children: caption }) : null,
16338
+ /* @__PURE__ */ jsx80("span", { className: "sr-only", children: status === "success" ? caption ?? "Success" : message ?? "Loading" })
16274
16339
  ]
16275
16340
  }
16276
16341
  );
@@ -16279,9 +16344,9 @@ var Spinner = React79.forwardRef(
16279
16344
  Spinner.displayName = "Spinner";
16280
16345
 
16281
16346
  // virtual-pkg:src/atoms/StepperItem/StepperItem.tsx
16282
- import * as React80 from "react";
16283
- import { jsx as jsx80, jsxs as jsxs77 } from "react/jsx-runtime";
16284
- var cn70 = (...values) => values.filter(Boolean).join(" ");
16347
+ import * as React81 from "react";
16348
+ import { jsx as jsx81, jsxs as jsxs78 } from "react/jsx-runtime";
16349
+ var cn71 = (...values) => values.filter(Boolean).join(" ");
16285
16350
  var STATUS_TEXT = {
16286
16351
  upcoming: "Upcoming",
16287
16352
  active: "In progress",
@@ -16300,7 +16365,7 @@ var DOT_SKIN = {
16300
16365
  complete: "size-4 bg-primary",
16301
16366
  error: "size-4 bg-semantic-error"
16302
16367
  };
16303
- var StepperItem = React80.forwardRef(
16368
+ var StepperItem = React81.forwardRef(
16304
16369
  ({
16305
16370
  variant = "step",
16306
16371
  status = "upcoming",
@@ -16317,18 +16382,18 @@ var StepperItem = React80.forwardRef(
16317
16382
  const max = progressMax > 0 ? progressMax : 1;
16318
16383
  const value = Math.min(Math.max(progressValue, 0), max);
16319
16384
  const percent = Math.round(value / max * 100);
16320
- return /* @__PURE__ */ jsxs77(
16385
+ return /* @__PURE__ */ jsxs78(
16321
16386
  "div",
16322
16387
  {
16323
16388
  ref,
16324
- className: cn70(
16389
+ className: cn71(
16325
16390
  "flex w-full items-center gap-md rounded-xl border border-hairline bg-surface p-base shadow-card",
16326
16391
  className
16327
16392
  ),
16328
16393
  ...rest,
16329
16394
  children: [
16330
- /* @__PURE__ */ jsxs77("div", { className: "relative grid size-[4.5rem] shrink-0 place-items-center", children: [
16331
- /* @__PURE__ */ jsx80(
16395
+ /* @__PURE__ */ jsxs78("div", { className: "relative grid size-[4.5rem] shrink-0 place-items-center", children: [
16396
+ /* @__PURE__ */ jsx81(
16332
16397
  "span",
16333
16398
  {
16334
16399
  "aria-hidden": "true",
@@ -16338,48 +16403,48 @@ var StepperItem = React80.forwardRef(
16338
16403
  }
16339
16404
  }
16340
16405
  ),
16341
- /* @__PURE__ */ jsx80(
16406
+ /* @__PURE__ */ jsx81(
16342
16407
  "span",
16343
16408
  {
16344
16409
  "aria-hidden": "true",
16345
16410
  className: "absolute inset-sm rounded-full bg-surface"
16346
16411
  }
16347
16412
  ),
16348
- /* @__PURE__ */ jsxs77("span", { className: "relative text-center text-caption text-primary", children: [
16349
- /* @__PURE__ */ jsxs77("span", { className: "block whitespace-nowrap", children: [
16413
+ /* @__PURE__ */ jsxs78("span", { className: "relative text-center text-caption text-primary", children: [
16414
+ /* @__PURE__ */ jsxs78("span", { className: "block whitespace-nowrap", children: [
16350
16415
  value,
16351
16416
  " of ",
16352
16417
  max
16353
16418
  ] }),
16354
- /* @__PURE__ */ jsx80("span", { className: "block", children: progressUnit })
16419
+ /* @__PURE__ */ jsx81("span", { className: "block", children: progressUnit })
16355
16420
  ] })
16356
16421
  ] }),
16357
- /* @__PURE__ */ jsx80("p", { className: "min-w-0 flex-1 text-body-lg text-ink", children: label })
16422
+ /* @__PURE__ */ jsx81("p", { className: "min-w-0 flex-1 text-body-lg text-ink", children: label })
16358
16423
  ]
16359
16424
  }
16360
16425
  );
16361
16426
  }
16362
16427
  const dot = DOT_SKIN[status];
16363
- return /* @__PURE__ */ jsxs77(
16428
+ return /* @__PURE__ */ jsxs78(
16364
16429
  "div",
16365
16430
  {
16366
16431
  ref,
16367
16432
  "aria-current": status === "active" ? "step" : void 0,
16368
- className: cn70("flex w-full items-stretch gap-md", className),
16433
+ className: cn71("flex w-full items-stretch gap-md", className),
16369
16434
  ...rest,
16370
16435
  children: [
16371
- /* @__PURE__ */ jsxs77("div", { className: "flex w-6 shrink-0 flex-col items-center", children: [
16372
- /* @__PURE__ */ jsx80(
16436
+ /* @__PURE__ */ jsxs78("div", { className: "flex w-6 shrink-0 flex-col items-center", children: [
16437
+ /* @__PURE__ */ jsx81(
16373
16438
  "span",
16374
16439
  {
16375
- className: cn70(
16440
+ className: cn71(
16376
16441
  "grid size-6 shrink-0 place-items-center rounded-full transition-colors duration-200 ease-out",
16377
16442
  RING_SKIN[status]
16378
16443
  ),
16379
- children: dot ? /* @__PURE__ */ jsx80(
16444
+ children: dot ? /* @__PURE__ */ jsx81(
16380
16445
  "span",
16381
16446
  {
16382
- className: cn70(
16447
+ className: cn71(
16383
16448
  "rounded-full transition-colors duration-200 ease-out",
16384
16449
  dot
16385
16450
  )
@@ -16387,12 +16452,12 @@ var StepperItem = React80.forwardRef(
16387
16452
  ) : null
16388
16453
  }
16389
16454
  ),
16390
- connector ? /* @__PURE__ */ jsx80("span", { "aria-hidden": "true", className: "mt-sm w-px flex-1 bg-hairline" }) : null
16455
+ connector ? /* @__PURE__ */ jsx81("span", { "aria-hidden": "true", className: "mt-sm w-px flex-1 bg-hairline" }) : null
16391
16456
  ] }),
16392
- /* @__PURE__ */ jsxs77("div", { className: cn70("min-w-0 flex-1 pt-xl", connector ? "pb-xl" : "pb-0"), children: [
16393
- /* @__PURE__ */ jsx80("p", { className: "text-body-md text-ink", children: label }),
16394
- meta ? /* @__PURE__ */ jsx80("p", { className: "mt-xxs text-body-tabular text-muted", children: meta }) : null,
16395
- /* @__PURE__ */ jsx80("span", { className: "sr-only", children: STATUS_TEXT[status] })
16457
+ /* @__PURE__ */ jsxs78("div", { className: cn71("min-w-0 flex-1 pt-xl", connector ? "pb-xl" : "pb-0"), children: [
16458
+ /* @__PURE__ */ jsx81("p", { className: "text-body-md text-ink", children: label }),
16459
+ meta ? /* @__PURE__ */ jsx81("p", { className: "mt-xxs text-body-tabular text-muted", children: meta }) : null,
16460
+ /* @__PURE__ */ jsx81("span", { className: "sr-only", children: STATUS_TEXT[status] })
16396
16461
  ] })
16397
16462
  ]
16398
16463
  }
@@ -16402,14 +16467,14 @@ var StepperItem = React80.forwardRef(
16402
16467
  StepperItem.displayName = "StepperItem";
16403
16468
 
16404
16469
  // virtual-pkg:src/atoms/Tab/Tab.tsx
16405
- import * as React81 from "react";
16406
- import { jsx as jsx81, jsxs as jsxs78 } from "react/jsx-runtime";
16407
- var cn71 = (...values) => values.filter(Boolean).join(" ");
16470
+ import * as React82 from "react";
16471
+ import { jsx as jsx82, jsxs as jsxs79 } from "react/jsx-runtime";
16472
+ var cn72 = (...values) => values.filter(Boolean).join(" ");
16408
16473
  var pillPadding = {
16409
16474
  sm: "px-xs py-xxs text-caption",
16410
16475
  md: "px-sm py-xxs text-caption"
16411
16476
  };
16412
- var Tab = React81.forwardRef(
16477
+ var Tab = React82.forwardRef(
16413
16478
  ({
16414
16479
  label,
16415
16480
  count,
@@ -16419,7 +16484,7 @@ var Tab = React81.forwardRef(
16419
16484
  disabled = false,
16420
16485
  className,
16421
16486
  ...rest
16422
- }, ref) => /* @__PURE__ */ jsxs78(
16487
+ }, ref) => /* @__PURE__ */ jsxs79(
16423
16488
  Button,
16424
16489
  {
16425
16490
  ref,
@@ -16430,7 +16495,7 @@ var Tab = React81.forwardRef(
16430
16495
  "aria-selected": active,
16431
16496
  disabled,
16432
16497
  "data-active": active || void 0,
16433
- className: cn71(
16498
+ className: cn72(
16434
16499
  "cursor-pointer transition duration-150 ease-out active:scale-[0.98]",
16435
16500
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus-blue",
16436
16501
  "disabled:cursor-not-allowed disabled:opacity-50",
@@ -16439,20 +16504,20 @@ var Tab = React81.forwardRef(
16439
16504
  ),
16440
16505
  ...rest,
16441
16506
  children: [
16442
- /* @__PURE__ */ jsx81(
16507
+ /* @__PURE__ */ jsx82(
16443
16508
  "span",
16444
16509
  {
16445
- className: cn71(
16510
+ className: cn72(
16446
16511
  "whitespace-nowrap transition-colors duration-150 ease-out",
16447
16512
  size === "sm" ? "text-body-sm" : "text-label"
16448
16513
  ),
16449
16514
  children: label
16450
16515
  }
16451
16516
  ),
16452
- count !== void 0 && count !== null ? /* @__PURE__ */ jsx81(
16517
+ count !== void 0 && count !== null ? /* @__PURE__ */ jsx82(
16453
16518
  "span",
16454
16519
  {
16455
- className: cn71(
16520
+ className: cn72(
16456
16521
  "inline-flex shrink-0 items-center justify-center rounded-full",
16457
16522
  "tabular-nums font-weight-label leading-none",
16458
16523
  "transition-colors duration-150 ease-out",
@@ -16462,11 +16527,11 @@ var Tab = React81.forwardRef(
16462
16527
  children: count
16463
16528
  }
16464
16529
  ) : null,
16465
- indicator ? /* @__PURE__ */ jsx81(
16530
+ indicator ? /* @__PURE__ */ jsx82(
16466
16531
  "span",
16467
16532
  {
16468
16533
  "aria-hidden": "true",
16469
- className: cn71(
16534
+ className: cn72(
16470
16535
  "absolute -left-xs -right-xs bottom-0 rounded-full",
16471
16536
  "transition-colors duration-150 ease-out",
16472
16537
  active ? "h-xxs bg-primary" : "h-px bg-hairline"
@@ -16478,11 +16543,11 @@ var Tab = React81.forwardRef(
16478
16543
  )
16479
16544
  );
16480
16545
  Tab.displayName = "Tab";
16481
- var TabList = React81.forwardRef(
16546
+ var TabList = React82.forwardRef(
16482
16547
  ({ children, className, indicator = true, onKeyDown, ...rest }, ref) => {
16483
- const railRef = React81.useRef(null);
16484
- const [bar, setBar] = React81.useState({ left: 0, width: 0, visible: false });
16485
- const measure = React81.useCallback(() => {
16548
+ const railRef = React82.useRef(null);
16549
+ const [bar, setBar] = React82.useState({ left: 0, width: 0, visible: false });
16550
+ const measure = React82.useCallback(() => {
16486
16551
  const item = railRef.current?.querySelector(
16487
16552
  '[role="tab"][aria-selected="true"]'
16488
16553
  );
@@ -16495,19 +16560,19 @@ var TabList = React81.forwardRef(
16495
16560
  (prev) => prev.left === next.left && prev.width === next.width && prev.visible === next.visible ? prev : next
16496
16561
  );
16497
16562
  }, []);
16498
- React81.useLayoutEffect(() => {
16563
+ React82.useLayoutEffect(() => {
16499
16564
  measure();
16500
16565
  });
16501
- React81.useEffect(() => {
16566
+ React82.useEffect(() => {
16502
16567
  const rail = railRef.current;
16503
16568
  if (!rail || typeof ResizeObserver === "undefined") return;
16504
16569
  const observer = new ResizeObserver(measure);
16505
16570
  observer.observe(rail);
16506
16571
  return () => observer.disconnect();
16507
16572
  }, [measure]);
16508
- const items = React81.Children.map(
16573
+ const items = React82.Children.map(
16509
16574
  children,
16510
- (child) => React81.isValidElement(child) && child.type === Tab ? React81.cloneElement(child, { indicator: false }) : child
16575
+ (child) => React82.isValidElement(child) && child.type === Tab ? React82.cloneElement(child, { indicator: false }) : child
16511
16576
  );
16512
16577
  const handleKeyDown = (event) => {
16513
16578
  onKeyDown?.(event);
@@ -16524,7 +16589,7 @@ var TabList = React81.forwardRef(
16524
16589
  event.preventDefault();
16525
16590
  tabs[next]?.focus();
16526
16591
  };
16527
- return /* @__PURE__ */ jsxs78(
16592
+ return /* @__PURE__ */ jsxs79(
16528
16593
  "div",
16529
16594
  {
16530
16595
  ref: (node) => {
@@ -16532,9 +16597,9 @@ var TabList = React81.forwardRef(
16532
16597
  if (typeof ref === "function") ref(node);
16533
16598
  else if (ref) ref.current = node;
16534
16599
  },
16535
- className: cn71("relative w-full", className),
16600
+ className: cn72("relative w-full", className),
16536
16601
  children: [
16537
- /* @__PURE__ */ jsx81(
16602
+ /* @__PURE__ */ jsx82(
16538
16603
  "div",
16539
16604
  {
16540
16605
  role: "tablist",
@@ -16545,14 +16610,14 @@ var TabList = React81.forwardRef(
16545
16610
  children: items
16546
16611
  }
16547
16612
  ),
16548
- /* @__PURE__ */ jsx81(
16613
+ /* @__PURE__ */ jsx82(
16549
16614
  "span",
16550
16615
  {
16551
16616
  "aria-hidden": "true",
16552
16617
  className: "pointer-events-none absolute inset-x-0 bottom-0 h-px bg-hairline"
16553
16618
  }
16554
16619
  ),
16555
- indicator ? /* @__PURE__ */ jsx81(
16620
+ indicator ? /* @__PURE__ */ jsx82(
16556
16621
  "span",
16557
16622
  {
16558
16623
  "aria-hidden": "true",
@@ -16561,7 +16626,7 @@ var TabList = React81.forwardRef(
16561
16626
  width: bar.width ? `${bar.width}px` : 0,
16562
16627
  opacity: bar.visible ? 1 : 0
16563
16628
  },
16564
- className: cn71(
16629
+ className: cn72(
16565
16630
  "pointer-events-none absolute bottom-0 left-0 h-xxs rounded-full bg-primary",
16566
16631
  "transition-[transform,width,opacity] duration-200 ease-out"
16567
16632
  )
@@ -16575,9 +16640,9 @@ var TabList = React81.forwardRef(
16575
16640
  TabList.displayName = "TabList";
16576
16641
 
16577
16642
  // virtual-pkg:src/atoms/TableHeaderCell/TableHeaderCell.tsx
16578
- import * as React82 from "react";
16579
- import { jsx as jsx82, jsxs as jsxs79 } from "react/jsx-runtime";
16580
- var cn72 = (...values) => values.filter(Boolean).join(" ");
16643
+ import * as React83 from "react";
16644
+ import { jsx as jsx83, jsxs as jsxs80 } from "react/jsx-runtime";
16645
+ var cn73 = (...values) => values.filter(Boolean).join(" ");
16581
16646
  var NEXT_SORT = {
16582
16647
  none: "asc",
16583
16648
  asc: "desc",
@@ -16589,7 +16654,7 @@ var ALIGN_STYLES = {
16589
16654
  right: "justify-end"
16590
16655
  };
16591
16656
  var iconTone = (active) => active ? "var(--color-primary)" : "var(--color-muted)";
16592
- var TableHeaderCell = React82.forwardRef(
16657
+ var TableHeaderCell = React83.forwardRef(
16593
16658
  ({
16594
16659
  label,
16595
16660
  sort,
@@ -16600,7 +16665,7 @@ var TableHeaderCell = React82.forwardRef(
16600
16665
  ...rest
16601
16666
  }, ref) => {
16602
16667
  const isControlled = sort !== void 0;
16603
- const [internalSort, setInternalSort] = React82.useState(defaultSort);
16668
+ const [internalSort, setInternalSort] = React83.useState(defaultSort);
16604
16669
  const current = isControlled ? sort : internalSort;
16605
16670
  const sorted = current !== "none";
16606
16671
  const handleSort = () => {
@@ -16610,15 +16675,15 @@ var TableHeaderCell = React82.forwardRef(
16610
16675
  };
16611
16676
  const ariaSort = current === "asc" ? "ascending" : current === "desc" ? "descending" : "none";
16612
16677
  const accessibleName = current === "asc" ? `${label}, sorted ascending` : current === "desc" ? `${label}, sorted descending` : `Sort by ${label}`;
16613
- return /* @__PURE__ */ jsx82(
16678
+ return /* @__PURE__ */ jsx83(
16614
16679
  "th",
16615
16680
  {
16616
16681
  ref,
16617
16682
  scope: "col",
16618
16683
  "aria-sort": ariaSort,
16619
- className: cn72("w-full p-0 align-middle", className),
16684
+ className: cn73("w-full p-0 align-middle", className),
16620
16685
  ...rest,
16621
- children: /* @__PURE__ */ jsx82(
16686
+ children: /* @__PURE__ */ jsx83(
16622
16687
  Button,
16623
16688
  {
16624
16689
  variant: "band",
@@ -16626,27 +16691,27 @@ var TableHeaderCell = React82.forwardRef(
16626
16691
  "aria-label": accessibleName,
16627
16692
  onClick: handleSort,
16628
16693
  className: ALIGN_STYLES[align],
16629
- trailingIcon: /* @__PURE__ */ jsxs79("span", { className: "relative inline-flex size-5 items-center justify-center", children: [
16630
- /* @__PURE__ */ jsx82(
16694
+ trailingIcon: /* @__PURE__ */ jsxs80("span", { className: "relative inline-flex size-5 items-center justify-center", children: [
16695
+ /* @__PURE__ */ jsx83(
16631
16696
  Icon,
16632
16697
  {
16633
16698
  name: "chevrons-down-up",
16634
16699
  size: 18,
16635
16700
  strokeWidth: 2.25,
16636
- className: cn72(
16701
+ className: cn73(
16637
16702
  "absolute transition duration-200 ease-out",
16638
16703
  sorted ? "scale-75 opacity-0" : "scale-100 opacity-100"
16639
16704
  ),
16640
16705
  style: { color: iconTone(sorted) }
16641
16706
  }
16642
16707
  ),
16643
- /* @__PURE__ */ jsx82(
16708
+ /* @__PURE__ */ jsx83(
16644
16709
  Icon,
16645
16710
  {
16646
16711
  name: "chevron-down",
16647
16712
  size: 20,
16648
16713
  strokeWidth: 2.25,
16649
- className: cn72(
16714
+ className: cn73(
16650
16715
  "absolute transition duration-200 ease-out",
16651
16716
  current === "asc" ? "rotate-180" : "rotate-0",
16652
16717
  sorted ? "scale-100 opacity-100" : "scale-75 opacity-0"
@@ -16655,10 +16720,10 @@ var TableHeaderCell = React82.forwardRef(
16655
16720
  }
16656
16721
  )
16657
16722
  ] }),
16658
- children: /* @__PURE__ */ jsx82(
16723
+ children: /* @__PURE__ */ jsx83(
16659
16724
  "span",
16660
16725
  {
16661
- className: cn72(
16726
+ className: cn73(
16662
16727
  "min-w-0 truncate uppercase",
16663
16728
  "transition-colors duration-150 ease-out",
16664
16729
  sorted ? "text-ink" : "text-muted"
@@ -16675,15 +16740,15 @@ var TableHeaderCell = React82.forwardRef(
16675
16740
  TableHeaderCell.displayName = "TableHeaderCell";
16676
16741
 
16677
16742
  // virtual-pkg:src/atoms/TableRow/TableRow.tsx
16678
- import * as React83 from "react";
16679
- import { jsx as jsx83, jsxs as jsxs80 } from "react/jsx-runtime";
16680
- var cn73 = (...values) => values.filter(Boolean).join(" ");
16743
+ import * as React84 from "react";
16744
+ import { jsx as jsx84, jsxs as jsxs81 } from "react/jsx-runtime";
16745
+ var cn74 = (...values) => values.filter(Boolean).join(" ");
16681
16746
  var dotStyles = {
16682
16747
  live: "bg-primary",
16683
16748
  pending: "bg-semantic-warning",
16684
16749
  failed: "bg-semantic-error"
16685
16750
  };
16686
- var TableRow = React83.forwardRef(
16751
+ var TableRow = React84.forwardRef(
16687
16752
  ({
16688
16753
  merchant,
16689
16754
  date,
@@ -16697,18 +16762,18 @@ var TableRow = React83.forwardRef(
16697
16762
  ...rest
16698
16763
  }, ref) => {
16699
16764
  const isControlled = selected !== void 0;
16700
- const [internalSelected, setInternalSelected] = React83.useState(defaultSelected);
16765
+ const [internalSelected, setInternalSelected] = React84.useState(defaultSelected);
16701
16766
  const isSelected = isControlled ? Boolean(selected) : internalSelected;
16702
16767
  const handleSelectedChange = (next) => {
16703
16768
  if (!isControlled) setInternalSelected(next);
16704
16769
  onSelectedChange?.(next);
16705
16770
  };
16706
- return /* @__PURE__ */ jsxs80(
16771
+ return /* @__PURE__ */ jsxs81(
16707
16772
  "div",
16708
16773
  {
16709
16774
  ref,
16710
16775
  "data-state": isSelected ? "selected" : "default",
16711
- className: cn73(
16776
+ className: cn74(
16712
16777
  "relative flex w-full items-center gap-xl overflow-hidden rounded-lg border py-md pl-lg pr-xl",
16713
16778
  "transition-colors duration-200 ease-out",
16714
16779
  "has-[:focus-visible]:ring-2 has-[:focus-visible]:ring-focus-blue",
@@ -16717,17 +16782,17 @@ var TableRow = React83.forwardRef(
16717
16782
  ),
16718
16783
  ...rest,
16719
16784
  children: [
16720
- /* @__PURE__ */ jsx83(
16785
+ /* @__PURE__ */ jsx84(
16721
16786
  "span",
16722
16787
  {
16723
16788
  "aria-hidden": "true",
16724
- className: cn73(
16789
+ className: cn74(
16725
16790
  "absolute inset-y-0 left-0 w-1 bg-primary transition-opacity duration-200 ease-out",
16726
16791
  isSelected ? "opacity-100" : "opacity-0"
16727
16792
  )
16728
16793
  }
16729
16794
  ),
16730
- /* @__PURE__ */ jsx83(
16795
+ /* @__PURE__ */ jsx84(
16731
16796
  Checkbox,
16732
16797
  {
16733
16798
  chrome: "bare",
@@ -16737,15 +16802,15 @@ var TableRow = React83.forwardRef(
16737
16802
  "aria-label": `Select ${merchant}`
16738
16803
  }
16739
16804
  ),
16740
- /* @__PURE__ */ jsx83("span", { className: "min-w-0 flex-1 truncate text-body-md font-weight-label text-ink", children: merchant }),
16741
- /* @__PURE__ */ jsx83("span", { className: "shrink-0 text-body-md text-muted", children: date }),
16742
- tag ? /* @__PURE__ */ jsx83("span", { className: "inline-flex shrink-0 items-center rounded-full bg-primary-subdued px-sm py-xxs text-caption font-weight-label text-primary-on-subdued", children: tag }) : null,
16743
- status ? /* @__PURE__ */ jsxs80("span", { className: "inline-flex shrink-0 items-center gap-xs rounded-full bg-primary-subdued px-sm py-xxs text-caption font-weight-label text-primary-on-subdued", children: [
16744
- /* @__PURE__ */ jsx83(
16805
+ /* @__PURE__ */ jsx84("span", { className: "min-w-0 flex-1 truncate text-body-md font-weight-label text-ink", children: merchant }),
16806
+ /* @__PURE__ */ jsx84("span", { className: "shrink-0 text-body-md text-muted", children: date }),
16807
+ tag ? /* @__PURE__ */ jsx84("span", { className: "inline-flex shrink-0 items-center rounded-full bg-primary-subdued px-sm py-xxs text-caption font-weight-label text-primary-on-subdued", children: tag }) : null,
16808
+ status ? /* @__PURE__ */ jsxs81("span", { className: "inline-flex shrink-0 items-center gap-xs rounded-full bg-primary-subdued px-sm py-xxs text-caption font-weight-label text-primary-on-subdued", children: [
16809
+ /* @__PURE__ */ jsx84(
16745
16810
  "span",
16746
16811
  {
16747
16812
  "aria-hidden": "true",
16748
- className: cn73(
16813
+ className: cn74(
16749
16814
  "size-1.5 shrink-0 rounded-full",
16750
16815
  dotStyles[status.tone ?? "live"]
16751
16816
  )
@@ -16753,7 +16818,7 @@ var TableRow = React83.forwardRef(
16753
16818
  ),
16754
16819
  status.label
16755
16820
  ] }) : null,
16756
- /* @__PURE__ */ jsx83("span", { className: "shrink-0 text-body-tabular font-weight-label text-ink", children: amount })
16821
+ /* @__PURE__ */ jsx84("span", { className: "shrink-0 text-body-tabular font-weight-label text-ink", children: amount })
16757
16822
  ]
16758
16823
  }
16759
16824
  );
@@ -16762,9 +16827,9 @@ var TableRow = React83.forwardRef(
16762
16827
  TableRow.displayName = "TableRow";
16763
16828
 
16764
16829
  // virtual-pkg:src/atoms/TestimonialBlock/TestimonialBlock.tsx
16765
- import * as React84 from "react";
16766
- import { Fragment as Fragment11, jsx as jsx84, jsxs as jsxs81 } from "react/jsx-runtime";
16767
- var TestimonialBlock = React84.forwardRef(
16830
+ import * as React85 from "react";
16831
+ import { Fragment as Fragment11, jsx as jsx85, jsxs as jsxs82 } from "react/jsx-runtime";
16832
+ var TestimonialBlock = React85.forwardRef(
16768
16833
  ({
16769
16834
  quote,
16770
16835
  name,
@@ -16773,7 +16838,7 @@ var TestimonialBlock = React84.forwardRef(
16773
16838
  hideMark = false,
16774
16839
  className,
16775
16840
  ...rest
16776
- }, ref) => /* @__PURE__ */ jsx84(
16841
+ }, ref) => /* @__PURE__ */ jsx85(
16777
16842
  "figure",
16778
16843
  {
16779
16844
  ref,
@@ -16784,10 +16849,10 @@ var TestimonialBlock = React84.forwardRef(
16784
16849
  className
16785
16850
  ].filter(Boolean).join(" "),
16786
16851
  ...rest,
16787
- children: /* @__PURE__ */ jsxs81("div", { className: "flex flex-col items-start gap-lg md:flex-row md:items-stretch md:gap-0", children: [
16788
- !hideMark ? /* @__PURE__ */ jsxs81(Fragment11, { children: [
16789
- /* @__PURE__ */ jsx84("div", { className: "flex aspect-square shrink-0 items-center justify-center self-center rounded-lg bg-surface-strong p-lg md:mr-xl", children: /* @__PURE__ */ jsx84(Icon, { name: iconName, size: 32, strokeWidth: 1.5 }) }),
16790
- /* @__PURE__ */ jsx84(
16852
+ children: /* @__PURE__ */ jsxs82("div", { className: "flex flex-col items-start gap-lg md:flex-row md:items-stretch md:gap-0", children: [
16853
+ !hideMark ? /* @__PURE__ */ jsxs82(Fragment11, { children: [
16854
+ /* @__PURE__ */ jsx85("div", { className: "flex aspect-square shrink-0 items-center justify-center self-center rounded-lg bg-surface-strong p-lg md:mr-xl", children: /* @__PURE__ */ jsx85(Icon, { name: iconName, size: 32, strokeWidth: 1.5 }) }),
16855
+ /* @__PURE__ */ jsx85(
16791
16856
  "div",
16792
16857
  {
16793
16858
  "aria-hidden": "true",
@@ -16795,8 +16860,8 @@ var TestimonialBlock = React84.forwardRef(
16795
16860
  }
16796
16861
  )
16797
16862
  ] }) : null,
16798
- /* @__PURE__ */ jsxs81("div", { className: "min-w-0 flex-1", children: [
16799
- /* @__PURE__ */ jsx84(
16863
+ /* @__PURE__ */ jsxs82("div", { className: "min-w-0 flex-1", children: [
16864
+ /* @__PURE__ */ jsx85(
16800
16865
  "span",
16801
16866
  {
16802
16867
  "aria-hidden": "true",
@@ -16804,14 +16869,14 @@ var TestimonialBlock = React84.forwardRef(
16804
16869
  children: "\u201C"
16805
16870
  }
16806
16871
  ),
16807
- /* @__PURE__ */ jsxs81("blockquote", { className: "m-0 mt-sm text-display-md text-ink", children: [
16872
+ /* @__PURE__ */ jsxs82("blockquote", { className: "m-0 mt-sm text-display-md text-ink", children: [
16808
16873
  "\u201C",
16809
16874
  quote,
16810
16875
  "\u201D"
16811
16876
  ] }),
16812
- /* @__PURE__ */ jsxs81("figcaption", { className: "mt-lg flex flex-col gap-xxs", children: [
16813
- /* @__PURE__ */ jsx84("span", { className: "text-body-lg text-ink", children: name }),
16814
- role ? /* @__PURE__ */ jsx84("span", { className: "text-body-md text-muted", children: role }) : null
16877
+ /* @__PURE__ */ jsxs82("figcaption", { className: "mt-lg flex flex-col gap-xxs", children: [
16878
+ /* @__PURE__ */ jsx85("span", { className: "text-body-lg text-ink", children: name }),
16879
+ role ? /* @__PURE__ */ jsx85("span", { className: "text-body-md text-muted", children: role }) : null
16815
16880
  ] })
16816
16881
  ] })
16817
16882
  ] })
@@ -16821,15 +16886,15 @@ var TestimonialBlock = React84.forwardRef(
16821
16886
  TestimonialBlock.displayName = "TestimonialBlock";
16822
16887
 
16823
16888
  // virtual-pkg:src/atoms/Textarea/Textarea.tsx
16824
- import * as React85 from "react";
16825
- import { jsx as jsx85, jsxs as jsxs82 } from "react/jsx-runtime";
16826
- var cn74 = (...values) => values.filter(Boolean).join(" ");
16889
+ import * as React86 from "react";
16890
+ import { jsx as jsx86, jsxs as jsxs83 } from "react/jsx-runtime";
16891
+ var cn75 = (...values) => values.filter(Boolean).join(" ");
16827
16892
  var resizeClass = {
16828
16893
  none: "resize-none",
16829
16894
  vertical: "resize-y",
16830
16895
  both: "resize"
16831
16896
  };
16832
- var Textarea = React85.forwardRef(
16897
+ var Textarea = React86.forwardRef(
16833
16898
  ({
16834
16899
  label,
16835
16900
  ariaLabel,
@@ -16856,13 +16921,13 @@ var Textarea = React85.forwardRef(
16856
16921
  "aria-label": ariaLabelProp,
16857
16922
  ...rest
16858
16923
  }, ref) => {
16859
- const generatedId = React85.useId();
16924
+ const generatedId = React86.useId();
16860
16925
  const fieldId = id ?? generatedId;
16861
16926
  const helperId = `${fieldId}-helper`;
16862
16927
  const errorId = `${fieldId}-error`;
16863
16928
  const countId = `${fieldId}-count`;
16864
16929
  const isControlled = value !== void 0;
16865
- const [uncontrolledLength, setUncontrolledLength] = React85.useState(
16930
+ const [uncontrolledLength, setUncontrolledLength] = React86.useState(
16866
16931
  () => String(defaultValue ?? "").length
16867
16932
  );
16868
16933
  const length = isControlled ? String(value ?? "").length : uncontrolledLength;
@@ -16876,7 +16941,7 @@ var Textarea = React85.forwardRef(
16876
16941
  countVisible ? countId : null
16877
16942
  ].filter(Boolean).join(" ") || void 0;
16878
16943
  const isBare = chrome === "none";
16879
- const shell2 = isBare ? "flex w-full flex-col gap-xs transition-colors duration-150 ease-out" : cn74(
16944
+ const shell2 = isBare ? "flex w-full flex-col gap-xs transition-colors duration-150 ease-out" : cn75(
16880
16945
  "flex w-full flex-col gap-xs rounded-lg border px-md py-sm",
16881
16946
  "transition duration-150 ease-out",
16882
16947
  disabled ? "border-hairline-soft bg-surface-strong" : isError ? "border-semantic-error bg-surface" : "border-hairline-strong bg-surface",
@@ -16884,8 +16949,8 @@ var Textarea = React85.forwardRef(
16884
16949
  forceFocus ? isError ? "border-semantic-error ring-1 ring-semantic-error" : "border-primary ring-1 ring-primary" : "",
16885
16950
  readOnly && !disabled ? "bg-surface-soft" : ""
16886
16951
  );
16887
- return /* @__PURE__ */ jsxs82("div", { className: cn74("flex w-full flex-col gap-xs", className), children: [
16888
- label ? /* @__PURE__ */ jsx85(
16952
+ return /* @__PURE__ */ jsxs83("div", { className: cn75("flex w-full flex-col gap-xs", className), children: [
16953
+ label ? /* @__PURE__ */ jsx86(
16889
16954
  Label,
16890
16955
  {
16891
16956
  htmlFor: fieldId,
@@ -16894,8 +16959,8 @@ var Textarea = React85.forwardRef(
16894
16959
  children: label
16895
16960
  }
16896
16961
  ) : null,
16897
- /* @__PURE__ */ jsxs82("div", { className: cn74(shell2, fieldClassName), children: [
16898
- /* @__PURE__ */ jsx85(
16962
+ /* @__PURE__ */ jsxs83("div", { className: cn75(shell2, fieldClassName), children: [
16963
+ /* @__PURE__ */ jsx86(
16899
16964
  "textarea",
16900
16965
  {
16901
16966
  ref,
@@ -16915,7 +16980,7 @@ var Textarea = React85.forwardRef(
16915
16980
  }
16916
16981
  onChange?.(event);
16917
16982
  },
16918
- className: cn74(
16983
+ className: cn75(
16919
16984
  "w-full appearance-none rounded-none border-0 bg-transparent p-0 text-body-md shadow-none ring-0",
16920
16985
  resizeClass[resize],
16921
16986
  "text-ink caret-primary placeholder:text-muted",
@@ -16926,11 +16991,11 @@ var Textarea = React85.forwardRef(
16926
16991
  ...rest
16927
16992
  }
16928
16993
  ),
16929
- countVisible ? /* @__PURE__ */ jsx85(
16994
+ countVisible ? /* @__PURE__ */ jsx86(
16930
16995
  "span",
16931
16996
  {
16932
16997
  id: countId,
16933
- className: cn74(
16998
+ className: cn75(
16934
16999
  "self-end text-caption tabular-nums",
16935
17000
  disabled ? "text-muted-soft" : isError ? "text-semantic-error" : "text-muted",
16936
17001
  countClassName
@@ -16939,12 +17004,12 @@ var Textarea = React85.forwardRef(
16939
17004
  }
16940
17005
  ) : null
16941
17006
  ] }),
16942
- error ? /* @__PURE__ */ jsx85("p", { id: errorId, className: "text-caption text-semantic-error", children: error }) : null,
16943
- helper ? /* @__PURE__ */ jsx85(
17007
+ error ? /* @__PURE__ */ jsx86("p", { id: errorId, className: "text-caption text-semantic-error", children: error }) : null,
17008
+ helper ? /* @__PURE__ */ jsx86(
16944
17009
  "p",
16945
17010
  {
16946
17011
  id: helperId,
16947
- className: cn74(
17012
+ className: cn75(
16948
17013
  "text-caption",
16949
17014
  disabled ? "text-muted-soft" : "text-muted"
16950
17015
  ),
@@ -16957,10 +17022,10 @@ var Textarea = React85.forwardRef(
16957
17022
  Textarea.displayName = "Textarea";
16958
17023
 
16959
17024
  // virtual-pkg:src/atoms/Toast/Toast.tsx
16960
- import * as React86 from "react";
16961
- import { jsx as jsx86, jsxs as jsxs83 } from "react/jsx-runtime";
16962
- var cn75 = (...values) => values.filter(Boolean).join(" ");
16963
- var Toast = React86.forwardRef(
17025
+ import * as React87 from "react";
17026
+ import { jsx as jsx87, jsxs as jsxs84 } from "react/jsx-runtime";
17027
+ var cn76 = (...values) => values.filter(Boolean).join(" ");
17028
+ var Toast = React87.forwardRef(
16964
17029
  ({
16965
17030
  tone = "info",
16966
17031
  title,
@@ -16977,25 +17042,25 @@ var Toast = React86.forwardRef(
16977
17042
  const urgent = tone === "danger";
16978
17043
  const hasDetails = Boolean(details && details.length > 0);
16979
17044
  const hasTrailing = Boolean(action) || Boolean(onDismiss);
16980
- const mark = hideIcon ? null : tone === "neutral" ? /* @__PURE__ */ jsx86(
17045
+ const mark = hideIcon ? null : tone === "neutral" ? /* @__PURE__ */ jsx87(
16981
17046
  "span",
16982
17047
  {
16983
17048
  "aria-hidden": "true",
16984
17049
  className: "-my-base -ml-md w-1 shrink-0 self-stretch rounded-full bg-primary"
16985
17050
  }
16986
- ) : tone === "danger" ? /* @__PURE__ */ jsx86(
17051
+ ) : tone === "danger" ? /* @__PURE__ */ jsx87(
16987
17052
  "span",
16988
17053
  {
16989
17054
  "aria-hidden": "true",
16990
17055
  className: "mt-2 size-2.5 shrink-0 rounded-full bg-semantic-error"
16991
17056
  }
16992
- ) : tone === "success" ? /* @__PURE__ */ jsxs83(
17057
+ ) : tone === "success" ? /* @__PURE__ */ jsxs84(
16993
17058
  "span",
16994
17059
  {
16995
17060
  "aria-hidden": "true",
16996
17061
  className: "mt-0.5 grid size-5 shrink-0 place-items-center text-primary",
16997
17062
  children: [
16998
- /* @__PURE__ */ jsx86("span", { className: "[grid-area:1/1] inline-flex", children: /* @__PURE__ */ jsx86(
17063
+ /* @__PURE__ */ jsx87("span", { className: "[grid-area:1/1] inline-flex", children: /* @__PURE__ */ jsx87(
16999
17064
  Icon,
17000
17065
  {
17001
17066
  name: "circle",
@@ -17004,7 +17069,7 @@ var Toast = React86.forwardRef(
17004
17069
  style: { color: "inherit" }
17005
17070
  }
17006
17071
  ) }),
17007
- /* @__PURE__ */ jsx86("span", { className: "[grid-area:1/1] inline-flex", children: /* @__PURE__ */ jsx86(
17072
+ /* @__PURE__ */ jsx87("span", { className: "[grid-area:1/1] inline-flex", children: /* @__PURE__ */ jsx87(
17008
17073
  Icon,
17009
17074
  {
17010
17075
  name: "check",
@@ -17015,12 +17080,12 @@ var Toast = React86.forwardRef(
17015
17080
  ) })
17016
17081
  ]
17017
17082
  }
17018
- ) : /* @__PURE__ */ jsx86(
17083
+ ) : /* @__PURE__ */ jsx87(
17019
17084
  "span",
17020
17085
  {
17021
17086
  "aria-hidden": "true",
17022
17087
  className: "mt-0.5 inline-flex shrink-0 items-center text-primary",
17023
- children: /* @__PURE__ */ jsx86(
17088
+ children: /* @__PURE__ */ jsx87(
17024
17089
  Icon,
17025
17090
  {
17026
17091
  name: tone === "warning" ? "triangle-alert" : "info",
@@ -17031,7 +17096,7 @@ var Toast = React86.forwardRef(
17031
17096
  )
17032
17097
  }
17033
17098
  );
17034
- const actionNode = action ? urgent ? /* @__PURE__ */ jsx86(
17099
+ const actionNode = action ? urgent ? /* @__PURE__ */ jsx87(
17035
17100
  Button,
17036
17101
  {
17037
17102
  type: "button",
@@ -17041,7 +17106,7 @@ var Toast = React86.forwardRef(
17041
17106
  className: "shrink-0",
17042
17107
  children: action.label
17043
17108
  }
17044
- ) : action.href ? /* @__PURE__ */ jsx86(Link, { href: action.href, size: "md", underline: "always", className: "shrink-0", children: action.label }) : /* @__PURE__ */ jsx86(
17109
+ ) : action.href ? /* @__PURE__ */ jsx87(Link, { href: action.href, size: "md", underline: "always", className: "shrink-0", children: action.label }) : /* @__PURE__ */ jsx87(
17045
17110
  Button,
17046
17111
  {
17047
17112
  type: "button",
@@ -17052,7 +17117,7 @@ var Toast = React86.forwardRef(
17052
17117
  children: action.label
17053
17118
  }
17054
17119
  ) : null;
17055
- return /* @__PURE__ */ jsxs83(
17120
+ return /* @__PURE__ */ jsxs84(
17056
17121
  "div",
17057
17122
  {
17058
17123
  ref,
@@ -17061,7 +17126,7 @@ var Toast = React86.forwardRef(
17061
17126
  "aria-hidden": !open || void 0,
17062
17127
  "data-tone": tone,
17063
17128
  "data-state": open ? "open" : "closed",
17064
- className: cn75(
17129
+ className: cn76(
17065
17130
  "relative flex w-full min-w-0 items-start gap-md rounded-lg border bg-surface py-base shadow-sm",
17066
17131
  "transition duration-200 ease-out",
17067
17132
  "data-[state=open]:translate-y-0 data-[state=open]:opacity-100",
@@ -17073,24 +17138,24 @@ var Toast = React86.forwardRef(
17073
17138
  ...rest,
17074
17139
  children: [
17075
17140
  mark,
17076
- /* @__PURE__ */ jsxs83("div", { className: "flex min-w-0 flex-1 flex-col", children: [
17077
- /* @__PURE__ */ jsx86("p", { className: "text-body-lg font-weight-label break-words text-ink", children: title }),
17078
- description ? /* @__PURE__ */ jsx86("p", { className: "mt-xxs text-body-md break-words text-muted", children: description }) : null,
17079
- hasDetails ? /* @__PURE__ */ jsx86("ul", { className: "mt-sm flex min-w-0 flex-col gap-xxs", children: details.map((detail, index) => /* @__PURE__ */ jsxs83(
17141
+ /* @__PURE__ */ jsxs84("div", { className: "flex min-w-0 flex-1 flex-col", children: [
17142
+ /* @__PURE__ */ jsx87("p", { className: "text-body-lg font-weight-label break-words text-ink", children: title }),
17143
+ description ? /* @__PURE__ */ jsx87("p", { className: "mt-xxs text-body-md break-words text-muted", children: description }) : null,
17144
+ hasDetails ? /* @__PURE__ */ jsx87("ul", { className: "mt-sm flex min-w-0 flex-col gap-xxs", children: details.map((detail, index) => /* @__PURE__ */ jsxs84(
17080
17145
  "li",
17081
17146
  {
17082
17147
  className: "flex min-w-0 gap-sm text-body-sm text-muted",
17083
17148
  children: [
17084
- /* @__PURE__ */ jsx86("span", { "aria-hidden": "true", className: "text-muted-soft", children: "\u2022" }),
17085
- /* @__PURE__ */ jsx86("span", { className: "min-w-0 break-words", children: detail })
17149
+ /* @__PURE__ */ jsx87("span", { "aria-hidden": "true", className: "text-muted-soft", children: "\u2022" }),
17150
+ /* @__PURE__ */ jsx87("span", { className: "min-w-0 break-words", children: detail })
17086
17151
  ]
17087
17152
  },
17088
17153
  index
17089
17154
  )) }) : null
17090
17155
  ] }),
17091
- hasTrailing ? /* @__PURE__ */ jsxs83("div", { className: "ml-auto flex shrink-0 items-center gap-md self-center", children: [
17156
+ hasTrailing ? /* @__PURE__ */ jsxs84("div", { className: "ml-auto flex shrink-0 items-center gap-md self-center", children: [
17092
17157
  actionNode,
17093
- onDismiss ? /* @__PURE__ */ jsx86(
17158
+ onDismiss ? /* @__PURE__ */ jsx87(
17094
17159
  Button,
17095
17160
  {
17096
17161
  type: "button",
@@ -17099,7 +17164,7 @@ var Toast = React86.forwardRef(
17099
17164
  "aria-label": dismissLabel,
17100
17165
  onClick: onDismiss,
17101
17166
  className: "rounded-xs p-xs text-muted-soft transition duration-150 ease-out hover:text-ink",
17102
- children: /* @__PURE__ */ jsx86(
17167
+ children: /* @__PURE__ */ jsx87(
17103
17168
  Icon,
17104
17169
  {
17105
17170
  name: "x",
@@ -17119,9 +17184,9 @@ var Toast = React86.forwardRef(
17119
17184
  Toast.displayName = "Toast";
17120
17185
 
17121
17186
  // virtual-pkg:src/atoms/Tooltip/Tooltip.tsx
17122
- import * as React87 from "react";
17123
- import { jsx as jsx87, jsxs as jsxs84 } from "react/jsx-runtime";
17124
- var cn76 = (...values) => values.filter(Boolean).join(" ");
17187
+ import * as React88 from "react";
17188
+ import { jsx as jsx88, jsxs as jsxs85 } from "react/jsx-runtime";
17189
+ var cn77 = (...values) => values.filter(Boolean).join(" ");
17125
17190
  var sidePosition = {
17126
17191
  top: "bottom-full left-1/2 -translate-x-1/2 mb-sm",
17127
17192
  bottom: "top-full left-1/2 -translate-x-1/2 mt-sm",
@@ -17146,7 +17211,7 @@ var sideOrigin = {
17146
17211
  left: "origin-right",
17147
17212
  right: "origin-left"
17148
17213
  };
17149
- var Tooltip = React87.forwardRef(
17214
+ var Tooltip = React88.forwardRef(
17150
17215
  ({
17151
17216
  children,
17152
17217
  variant = "plain",
@@ -17167,8 +17232,8 @@ var Tooltip = React87.forwardRef(
17167
17232
  onKeyDown,
17168
17233
  ...rest
17169
17234
  }, ref) => {
17170
- const id = React87.useId();
17171
- const [uncontrolledOpen, setUncontrolledOpen] = React87.useState(defaultOpen);
17235
+ const id = React88.useId();
17236
+ const [uncontrolledOpen, setUncontrolledOpen] = React88.useState(defaultOpen);
17172
17237
  const isControlled = open !== void 0;
17173
17238
  const isOpen = isControlled ? Boolean(open) : uncontrolledOpen;
17174
17239
  const setOpenState = (next) => {
@@ -17176,21 +17241,21 @@ var Tooltip = React87.forwardRef(
17176
17241
  if (!isControlled) setUncontrolledOpen(next);
17177
17242
  onOpenChange?.(next);
17178
17243
  };
17179
- const body = children ?? (variant === "stat" ? /* @__PURE__ */ jsxs84("span", { className: "flex items-center justify-between gap-xl", children: [
17180
- /* @__PURE__ */ jsxs84("span", { className: "flex items-center gap-sm", children: [
17181
- /* @__PURE__ */ jsx87(
17244
+ const body = children ?? (variant === "stat" ? /* @__PURE__ */ jsxs85("span", { className: "flex items-center justify-between gap-xl", children: [
17245
+ /* @__PURE__ */ jsxs85("span", { className: "flex items-center gap-sm", children: [
17246
+ /* @__PURE__ */ jsx88(
17182
17247
  "span",
17183
17248
  {
17184
17249
  "aria-hidden": "true",
17185
17250
  className: "size-sm shrink-0 rounded-full bg-primary"
17186
17251
  }
17187
17252
  ),
17188
- /* @__PURE__ */ jsx87("span", { className: "whitespace-nowrap text-body-sm text-muted", children: label })
17253
+ /* @__PURE__ */ jsx88("span", { className: "whitespace-nowrap text-body-sm text-muted", children: label })
17189
17254
  ] }),
17190
- /* @__PURE__ */ jsx87("span", { className: "whitespace-nowrap text-body-sm font-weight-label tabular-nums text-ink", children: value })
17191
- ] }) : variant === "shortcut" ? /* @__PURE__ */ jsxs84("span", { className: "flex items-center justify-between gap-xl", children: [
17192
- /* @__PURE__ */ jsx87("span", { className: "whitespace-nowrap text-body-sm text-ink", children: label }),
17193
- /* @__PURE__ */ jsx87("span", { className: "flex items-center gap-xs", children: (keys ?? []).map((key) => /* @__PURE__ */ jsx87(
17255
+ /* @__PURE__ */ jsx88("span", { className: "whitespace-nowrap text-body-sm font-weight-label tabular-nums text-ink", children: value })
17256
+ ] }) : variant === "shortcut" ? /* @__PURE__ */ jsxs85("span", { className: "flex items-center justify-between gap-xl", children: [
17257
+ /* @__PURE__ */ jsx88("span", { className: "whitespace-nowrap text-body-sm text-ink", children: label }),
17258
+ /* @__PURE__ */ jsx88("span", { className: "flex items-center gap-xs", children: (keys ?? []).map((key) => /* @__PURE__ */ jsx88(
17194
17259
  "kbd",
17195
17260
  {
17196
17261
  className: "inline-flex h-xl min-w-xl items-center justify-center rounded-sm border border-hairline bg-surface-strong px-xs text-caption text-body",
@@ -17198,15 +17263,15 @@ var Tooltip = React87.forwardRef(
17198
17263
  },
17199
17264
  key
17200
17265
  )) })
17201
- ] }) : /* @__PURE__ */ jsx87("span", { className: "whitespace-nowrap text-body-sm text-ink", children: label }));
17202
- const triggerNode = React87.isValidElement(trigger) ? React87.cloneElement(trigger, {
17266
+ ] }) : /* @__PURE__ */ jsx88("span", { className: "whitespace-nowrap text-body-sm text-ink", children: label }));
17267
+ const triggerNode = React88.isValidElement(trigger) ? React88.cloneElement(trigger, {
17203
17268
  "aria-describedby": isOpen ? id : void 0
17204
17269
  }) : trigger;
17205
- return /* @__PURE__ */ jsxs84(
17270
+ return /* @__PURE__ */ jsxs85(
17206
17271
  "div",
17207
17272
  {
17208
17273
  ref,
17209
- className: cn76("relative inline-flex items-center", className),
17274
+ className: cn77("relative inline-flex items-center", className),
17210
17275
  style: { zIndex: isOpen ? "var(--z-tooltip, 1500)" : void 0 },
17211
17276
  onMouseEnter: (event) => {
17212
17277
  setOpenState(true);
@@ -17231,14 +17296,14 @@ var Tooltip = React87.forwardRef(
17231
17296
  ...rest,
17232
17297
  children: [
17233
17298
  triggerNode,
17234
- /* @__PURE__ */ jsxs84(
17299
+ /* @__PURE__ */ jsxs85(
17235
17300
  "div",
17236
17301
  {
17237
17302
  id,
17238
17303
  role: "tooltip",
17239
17304
  "data-state": isOpen ? "open" : "closed",
17240
17305
  "aria-hidden": !isOpen,
17241
- className: cn76(
17306
+ className: cn77(
17242
17307
  "absolute w-max max-w-xs rounded-lg border border-hairline bg-surface",
17243
17308
  "px-lg py-md shadow-md",
17244
17309
  "transition duration-200 ease-out",
@@ -17250,11 +17315,11 @@ var Tooltip = React87.forwardRef(
17250
17315
  ),
17251
17316
  children: [
17252
17317
  body,
17253
- /* @__PURE__ */ jsx87(
17318
+ /* @__PURE__ */ jsx88(
17254
17319
  "span",
17255
17320
  {
17256
17321
  "aria-hidden": "true",
17257
- className: cn76(
17322
+ className: cn77(
17258
17323
  "absolute size-md rotate-45 border-hairline bg-surface",
17259
17324
  caretPosition[side],
17260
17325
  caretEdges[side]
@@ -17272,8 +17337,8 @@ var Tooltip = React87.forwardRef(
17272
17337
  Tooltip.displayName = "Tooltip";
17273
17338
 
17274
17339
  // virtual-pkg:src/atoms/Typography/Typography.tsx
17275
- import * as React88 from "react";
17276
- import { jsx as jsx88, jsxs as jsxs85 } from "react/jsx-runtime";
17340
+ import * as React89 from "react";
17341
+ import { jsx as jsx89, jsxs as jsxs86 } from "react/jsx-runtime";
17277
17342
  var SCALE_CLASS = {
17278
17343
  "display-xxl": "text-display-xxl",
17279
17344
  "display-lg": "text-display-lg",
@@ -17341,7 +17406,7 @@ var DEFAULT_TYPE_ROWS = [
17341
17406
  scale: "overline"
17342
17407
  }
17343
17408
  ];
17344
- var Typography = React88.forwardRef(
17409
+ var Typography = React89.forwardRef(
17345
17410
  ({
17346
17411
  title = "Typography",
17347
17412
  rows = DEFAULT_TYPE_ROWS,
@@ -17349,7 +17414,7 @@ var Typography = React88.forwardRef(
17349
17414
  framed = true,
17350
17415
  className,
17351
17416
  ...rest
17352
- }, ref) => /* @__PURE__ */ jsx88(
17417
+ }, ref) => /* @__PURE__ */ jsx89(
17353
17418
  "div",
17354
17419
  {
17355
17420
  ref,
@@ -17360,27 +17425,27 @@ var Typography = React88.forwardRef(
17360
17425
  className
17361
17426
  ].filter(Boolean).join(" "),
17362
17427
  ...rest,
17363
- children: /* @__PURE__ */ jsxs85("div", { className: "grid grid-cols-1 gap-y-xs md:grid-cols-[8.5rem_1px_minmax(0,1fr)] md:gap-y-0", children: [
17364
- /* @__PURE__ */ jsx88("p", { className: "text-label-cap text-ink md:pb-xl md:pr-xl", children: title }),
17365
- /* @__PURE__ */ jsx88("div", { "aria-hidden": "true", className: "hidden md:block" }),
17366
- /* @__PURE__ */ jsx88("div", { "aria-hidden": "true", className: "hidden md:block" }),
17367
- rows.map((row) => /* @__PURE__ */ jsxs85(React88.Fragment, { children: [
17368
- /* @__PURE__ */ jsxs85("div", { className: "flex items-center gap-xs whitespace-nowrap pt-sm md:py-xs md:pr-xl md:pt-0", children: [
17369
- /* @__PURE__ */ jsx88("span", { className: "text-caption text-body", children: row.name }),
17370
- showSpec && row.spec ? /* @__PURE__ */ jsxs85("span", { className: "text-caption text-muted", children: [
17428
+ children: /* @__PURE__ */ jsxs86("div", { className: "grid grid-cols-1 gap-y-xs md:grid-cols-[8.5rem_1px_minmax(0,1fr)] md:gap-y-0", children: [
17429
+ /* @__PURE__ */ jsx89("p", { className: "text-label-cap text-ink md:pb-xl md:pr-xl", children: title }),
17430
+ /* @__PURE__ */ jsx89("div", { "aria-hidden": "true", className: "hidden md:block" }),
17431
+ /* @__PURE__ */ jsx89("div", { "aria-hidden": "true", className: "hidden md:block" }),
17432
+ rows.map((row) => /* @__PURE__ */ jsxs86(React89.Fragment, { children: [
17433
+ /* @__PURE__ */ jsxs86("div", { className: "flex items-center gap-xs whitespace-nowrap pt-sm md:py-xs md:pr-xl md:pt-0", children: [
17434
+ /* @__PURE__ */ jsx89("span", { className: "text-caption text-body", children: row.name }),
17435
+ showSpec && row.spec ? /* @__PURE__ */ jsxs86("span", { className: "text-caption text-muted", children: [
17371
17436
  "(",
17372
17437
  row.spec,
17373
17438
  ")"
17374
17439
  ] }) : null
17375
17440
  ] }),
17376
- /* @__PURE__ */ jsx88(
17441
+ /* @__PURE__ */ jsx89(
17377
17442
  "div",
17378
17443
  {
17379
17444
  "aria-hidden": "true",
17380
17445
  className: "hidden self-stretch bg-hairline md:block"
17381
17446
  }
17382
17447
  ),
17383
- /* @__PURE__ */ jsx88(
17448
+ /* @__PURE__ */ jsx89(
17384
17449
  "p",
17385
17450
  {
17386
17451
  className: [
@@ -17398,9 +17463,9 @@ var Typography = React88.forwardRef(
17398
17463
  Typography.displayName = "Typography";
17399
17464
 
17400
17465
  // virtual-pkg:src/atoms/Wizard/Wizard.tsx
17401
- import * as React89 from "react";
17402
- import { jsx as jsx89, jsxs as jsxs86 } from "react/jsx-runtime";
17403
- var cn77 = (...values) => values.filter(Boolean).join(" ");
17466
+ import * as React90 from "react";
17467
+ import { jsx as jsx90, jsxs as jsxs87 } from "react/jsx-runtime";
17468
+ var cn78 = (...values) => values.filter(Boolean).join(" ");
17404
17469
  var statusCopy = {
17405
17470
  complete: "completed",
17406
17471
  current: "current step",
@@ -17416,37 +17481,37 @@ var labelStyles2 = {
17416
17481
  current: "font-weight-label text-ink",
17417
17482
  upcoming: "text-muted"
17418
17483
  };
17419
- var StepRail = ({ steps, currentStep }) => /* @__PURE__ */ jsx89("ol", { className: "flex w-full items-start", children: steps.map((step, index) => {
17484
+ var StepRail = ({ steps, currentStep }) => /* @__PURE__ */ jsx90("ol", { className: "flex w-full items-start", children: steps.map((step, index) => {
17420
17485
  const status = index < currentStep ? "complete" : index === currentStep ? "current" : "upcoming";
17421
17486
  const leadDone = index - 1 >= 0 && index - 1 < currentStep;
17422
17487
  const trailDone = index < currentStep;
17423
- return /* @__PURE__ */ jsxs86(
17488
+ return /* @__PURE__ */ jsxs87(
17424
17489
  "li",
17425
17490
  {
17426
17491
  "aria-current": status === "current" ? "step" : void 0,
17427
17492
  className: "flex min-w-0 flex-1 flex-col items-center gap-sm",
17428
17493
  children: [
17429
- /* @__PURE__ */ jsxs86("div", { className: "flex w-full items-center", children: [
17430
- /* @__PURE__ */ jsx89(
17494
+ /* @__PURE__ */ jsxs87("div", { className: "flex w-full items-center", children: [
17495
+ /* @__PURE__ */ jsx90(
17431
17496
  "span",
17432
17497
  {
17433
17498
  "aria-hidden": "true",
17434
- className: cn77(
17499
+ className: cn78(
17435
17500
  "h-px flex-1 transition-colors duration-200 ease-out",
17436
17501
  index === 0 ? "invisible bg-hairline" : leadDone ? "bg-primary" : "bg-hairline-strong"
17437
17502
  )
17438
17503
  }
17439
17504
  ),
17440
- /* @__PURE__ */ jsx89(
17505
+ /* @__PURE__ */ jsx90(
17441
17506
  "span",
17442
17507
  {
17443
17508
  "aria-hidden": "true",
17444
- className: cn77(
17509
+ className: cn78(
17445
17510
  "flex size-lg shrink-0 items-center justify-center rounded-full",
17446
17511
  "transition-colors duration-200 ease-out",
17447
17512
  nodeStyles2[status]
17448
17513
  ),
17449
- children: status === "complete" ? /* @__PURE__ */ jsx89(
17514
+ children: status === "complete" ? /* @__PURE__ */ jsx90(
17450
17515
  Icon,
17451
17516
  {
17452
17517
  name: "check",
@@ -17457,36 +17522,36 @@ var StepRail = ({ steps, currentStep }) => /* @__PURE__ */ jsx89("ol", { classNa
17457
17522
  ) : null
17458
17523
  }
17459
17524
  ),
17460
- /* @__PURE__ */ jsx89(
17525
+ /* @__PURE__ */ jsx90(
17461
17526
  "span",
17462
17527
  {
17463
17528
  "aria-hidden": "true",
17464
- className: cn77(
17529
+ className: cn78(
17465
17530
  "h-px flex-1 transition-colors duration-200 ease-out",
17466
17531
  index === steps.length - 1 ? "invisible bg-hairline" : trailDone ? "bg-primary" : "bg-hairline-strong"
17467
17532
  )
17468
17533
  }
17469
17534
  )
17470
17535
  ] }),
17471
- /* @__PURE__ */ jsxs86("span", { className: "flex max-w-full min-w-0 flex-col items-center", children: [
17472
- /* @__PURE__ */ jsx89(
17536
+ /* @__PURE__ */ jsxs87("span", { className: "flex max-w-full min-w-0 flex-col items-center", children: [
17537
+ /* @__PURE__ */ jsx90(
17473
17538
  "span",
17474
17539
  {
17475
- className: cn77(
17540
+ className: cn78(
17476
17541
  "max-w-full truncate text-body-sm transition-colors duration-200 ease-out",
17477
17542
  labelStyles2[status]
17478
17543
  ),
17479
17544
  children: step.label
17480
17545
  }
17481
17546
  ),
17482
- /* @__PURE__ */ jsx89("span", { className: "sr-only", children: statusCopy[status] })
17547
+ /* @__PURE__ */ jsx90("span", { className: "sr-only", children: statusCopy[status] })
17483
17548
  ] })
17484
17549
  ]
17485
17550
  },
17486
17551
  step.id
17487
17552
  );
17488
17553
  }) });
17489
- var Wizard = React89.forwardRef(
17554
+ var Wizard = React90.forwardRef(
17490
17555
  ({
17491
17556
  steps,
17492
17557
  currentStep,
@@ -17507,30 +17572,30 @@ var Wizard = React89.forwardRef(
17507
17572
  const index = Math.max(0, Math.min(currentStep, steps.length - 1));
17508
17573
  const eyebrowCopy = eyebrow ?? `Step ${index + 1} (${stateLabel})`;
17509
17574
  const showActions = !hideActions && Boolean(onNext || onBack);
17510
- return /* @__PURE__ */ jsxs86(
17575
+ return /* @__PURE__ */ jsxs87(
17511
17576
  "section",
17512
17577
  {
17513
17578
  ref,
17514
- className: cn77(
17579
+ className: cn78(
17515
17580
  "flex w-full flex-col gap-xl rounded-lg border border-hairline bg-surface p-xl text-ink shadow-sm",
17516
17581
  className
17517
17582
  ),
17518
17583
  ...rest,
17519
17584
  children: [
17520
- /* @__PURE__ */ jsx89("p", { className: "text-label-cap text-muted", children: eyebrowCopy }),
17521
- /* @__PURE__ */ jsx89(StepRail, { steps, currentStep: index }),
17522
- /* @__PURE__ */ jsxs86("div", { className: "flex flex-col gap-lg", children: [
17523
- /* @__PURE__ */ jsxs86("div", { className: "flex flex-col gap-xs", children: [
17524
- /* @__PURE__ */ jsx89("h3", { className: "text-display-md text-ink", children: title }),
17525
- description ? /* @__PURE__ */ jsx89("p", { className: "max-w-prose text-body-md text-body", children: description }) : null
17585
+ /* @__PURE__ */ jsx90("p", { className: "text-label-cap text-muted", children: eyebrowCopy }),
17586
+ /* @__PURE__ */ jsx90(StepRail, { steps, currentStep: index }),
17587
+ /* @__PURE__ */ jsxs87("div", { className: "flex flex-col gap-lg", children: [
17588
+ /* @__PURE__ */ jsxs87("div", { className: "flex flex-col gap-xs", children: [
17589
+ /* @__PURE__ */ jsx90("h3", { className: "text-display-md text-ink", children: title }),
17590
+ description ? /* @__PURE__ */ jsx90("p", { className: "max-w-prose text-body-md text-body", children: description }) : null
17526
17591
  ] }),
17527
- children ? /* @__PURE__ */ jsx89("div", { className: "flex flex-col gap-md", children }) : null
17592
+ children ? /* @__PURE__ */ jsx90("div", { className: "flex flex-col gap-md", children }) : null
17528
17593
  ] }),
17529
- showActions ? /* @__PURE__ */ jsxs86("div", { className: "flex flex-col gap-lg", children: [
17530
- /* @__PURE__ */ jsx89(Divider, { tone: "soft", decorative: true }),
17531
- /* @__PURE__ */ jsxs86("div", { className: "flex flex-wrap items-center justify-between gap-md", children: [
17532
- onBack ? /* @__PURE__ */ jsx89(Button, { variant: "outline-soft", size: "md", onClick: onBack, children: backLabel }) : /* @__PURE__ */ jsx89("span", { "aria-hidden": "true" }),
17533
- onNext ? /* @__PURE__ */ jsx89(
17594
+ showActions ? /* @__PURE__ */ jsxs87("div", { className: "flex flex-col gap-lg", children: [
17595
+ /* @__PURE__ */ jsx90(Divider, { tone: "soft", decorative: true }),
17596
+ /* @__PURE__ */ jsxs87("div", { className: "flex flex-wrap items-center justify-between gap-md", children: [
17597
+ onBack ? /* @__PURE__ */ jsx90(Button, { variant: "outline-soft", size: "md", onClick: onBack, children: backLabel }) : /* @__PURE__ */ jsx90("span", { "aria-hidden": "true" }),
17598
+ onNext ? /* @__PURE__ */ jsx90(
17534
17599
  Button,
17535
17600
  {
17536
17601
  variant: "primary",
@@ -17617,6 +17682,7 @@ export {
17617
17682
  PAYMENT_RANGES,
17618
17683
  PAYMENT_ROWS,
17619
17684
  Pagination,
17685
+ Panel,
17620
17686
  PaymentRoutingCanvas,
17621
17687
  PricingTable,
17622
17688
  PricingTableDesktop,