@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/README.md +1 -1
- package/dist/index.cjs +927 -861
- package/dist/index.js +929 -863
- package/dist/styles.css +10 -0
- package/package.json +6 -1
- package/src/atoms/DataTable/DataTable.tsx +8 -0
- package/src/atoms/DataTable/preview.tsx +43 -0
- package/src/atoms/DataTableDesktop/DataTableDesktop.tsx +95 -80
- package/src/atoms/DataTableMobile/DataTableMobile.tsx +90 -70
- package/src/atoms/Icon/icons.data.ts +1 -0
- package/src/atoms/Panel/Panel.tsx +102 -0
- package/src/atoms/Panel/index.ts +2 -0
- package/src/atoms/Panel/preview.tsx +196 -0
- package/src/index.ts +1 -0
package/dist/index.cjs
CHANGED
|
@@ -97,6 +97,7 @@ __export(src_exports, {
|
|
|
97
97
|
PAYMENT_RANGES: () => PAYMENT_RANGES,
|
|
98
98
|
PAYMENT_ROWS: () => PAYMENT_ROWS,
|
|
99
99
|
Pagination: () => Pagination,
|
|
100
|
+
Panel: () => Panel,
|
|
100
101
|
PaymentRoutingCanvas: () => PaymentRoutingCanvas,
|
|
101
102
|
PricingTable: () => PricingTable,
|
|
102
103
|
PricingTableDesktop: () => PricingTableDesktop,
|
|
@@ -240,7 +241,8 @@ var ICON_REGISTRY = {
|
|
|
240
241
|
"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" }] },
|
|
241
242
|
"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" }] },
|
|
242
243
|
"square": { viewBox: "0 0 24 24", nodes: [{ tag: "rect", width: "18", height: "18", x: "3", y: "3", rx: "2" }] },
|
|
243
|
-
"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" }] }
|
|
244
|
+
"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" }] },
|
|
245
|
+
"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" }] }
|
|
244
246
|
};
|
|
245
247
|
|
|
246
248
|
// virtual-pkg:src/atoms/Icon/Icon.tsx
|
|
@@ -5032,6 +5034,7 @@ function DataTableDesktopInner(props, ref) {
|
|
|
5032
5034
|
onFilterChange,
|
|
5033
5035
|
filterBy,
|
|
5034
5036
|
searchPlaceholder,
|
|
5037
|
+
searchable = true,
|
|
5035
5038
|
query,
|
|
5036
5039
|
onQueryChange,
|
|
5037
5040
|
searchBy,
|
|
@@ -5195,6 +5198,7 @@ function DataTableDesktopInner(props, ref) {
|
|
|
5195
5198
|
const headCell = HEAD_CELL;
|
|
5196
5199
|
const bodyCell = dense ? "px-sm py-sm align-middle text-body-sm" : "px-sm py-md align-middle";
|
|
5197
5200
|
const rangeTriggerLabel = activeRange?.detail ?? activeRange?.label ?? "";
|
|
5201
|
+
const showToolRow = searchable || activeFilters.length > 0 || Boolean(activeRange) || Boolean(toolbar);
|
|
5198
5202
|
return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
|
|
5199
5203
|
"div",
|
|
5200
5204
|
{
|
|
@@ -5210,8 +5214,8 @@ function DataTableDesktopInner(props, ref) {
|
|
|
5210
5214
|
title ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("p", { className: "text-body-lg text-ink", children: title }) : null,
|
|
5211
5215
|
description ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("p", { className: "text-body-sm text-muted", children: description }) : null
|
|
5212
5216
|
] }) : null,
|
|
5213
|
-
/* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "flex flex-wrap items-center gap-sm", children: [
|
|
5214
|
-
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "w-full shrink-0 sm:w-64", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
5217
|
+
showToolRow ? /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "flex flex-wrap items-center gap-sm", children: [
|
|
5218
|
+
searchable ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "w-full shrink-0 sm:w-64", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
5215
5219
|
Input,
|
|
5216
5220
|
{
|
|
5217
5221
|
size: "md",
|
|
@@ -5222,7 +5226,7 @@ function DataTableDesktopInner(props, ref) {
|
|
|
5222
5226
|
placeholder: searchPlaceholder ?? "Search",
|
|
5223
5227
|
leading: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Icon, { name: "search", size: 16, strokeWidth: 2, tone: "default" })
|
|
5224
5228
|
}
|
|
5225
|
-
) }),
|
|
5229
|
+
) }) : null,
|
|
5226
5230
|
activeFilters.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "flex flex-wrap items-center gap-xs", children: activeFilters.map((item) => /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
|
|
5227
5231
|
Chip,
|
|
5228
5232
|
{
|
|
@@ -5278,7 +5282,7 @@ function DataTableDesktopInner(props, ref) {
|
|
|
5278
5282
|
}
|
|
5279
5283
|
) }) : null,
|
|
5280
5284
|
toolbar ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "ml-auto flex shrink-0 items-center gap-xs", children: toolbar }) : null
|
|
5281
|
-
] })
|
|
5285
|
+
] }) : null
|
|
5282
5286
|
] }),
|
|
5283
5287
|
activeRange && typeof document !== "undefined" ? (0, import_react_dom2.createPortal)(
|
|
5284
5288
|
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
@@ -5704,6 +5708,7 @@ function DataTableMobileInner(props, ref) {
|
|
|
5704
5708
|
onFilterChange,
|
|
5705
5709
|
filterBy,
|
|
5706
5710
|
searchPlaceholder,
|
|
5711
|
+
searchable = true,
|
|
5707
5712
|
query,
|
|
5708
5713
|
onQueryChange,
|
|
5709
5714
|
searchBy,
|
|
@@ -5790,6 +5795,10 @@ function DataTableMobileInner(props, ref) {
|
|
|
5790
5795
|
const subtitleText = activeSpec?.subtitle;
|
|
5791
5796
|
const trailingText = activeSpec?.trailing;
|
|
5792
5797
|
const metaText = activeSpec?.meta;
|
|
5798
|
+
const hasRanges = Boolean(ranges && ranges.length > 0);
|
|
5799
|
+
const hasHeader = Boolean(
|
|
5800
|
+
title || description || searchable || activeFilters.length > 0 || hasRanges || toolbar
|
|
5801
|
+
);
|
|
5793
5802
|
return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
|
|
5794
5803
|
"div",
|
|
5795
5804
|
{
|
|
@@ -5800,12 +5809,12 @@ function DataTableMobileInner(props, ref) {
|
|
|
5800
5809
|
),
|
|
5801
5810
|
...rest,
|
|
5802
5811
|
children: [
|
|
5803
|
-
/* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "flex w-full flex-col gap-base px-lg pt-lg pb-base", children: [
|
|
5812
|
+
hasHeader ? /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "flex w-full flex-col gap-base px-lg pt-lg pb-base", children: [
|
|
5804
5813
|
title || description ? /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "flex flex-col gap-xs", children: [
|
|
5805
5814
|
title ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("p", { className: "text-body-lg text-ink", children: title }) : null,
|
|
5806
5815
|
description ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("p", { className: "text-body-sm text-muted", children: description }) : null
|
|
5807
5816
|
] }) : null,
|
|
5808
|
-
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
5817
|
+
searchable ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
5809
5818
|
"div",
|
|
5810
5819
|
{
|
|
5811
5820
|
className: cn24(
|
|
@@ -5830,7 +5839,7 @@ function DataTableMobileInner(props, ref) {
|
|
|
5830
5839
|
}
|
|
5831
5840
|
)
|
|
5832
5841
|
}
|
|
5833
|
-
),
|
|
5842
|
+
) : null,
|
|
5834
5843
|
activeFilters.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "flex flex-wrap items-center gap-xs", children: activeFilters.map((item) => /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
|
|
5835
5844
|
Chip,
|
|
5836
5845
|
{
|
|
@@ -5845,7 +5854,7 @@ function DataTableMobileInner(props, ref) {
|
|
|
5845
5854
|
},
|
|
5846
5855
|
item.value
|
|
5847
5856
|
)) }) : null,
|
|
5848
|
-
|
|
5857
|
+
hasRanges && ranges ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "flex flex-wrap items-center gap-base", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
5849
5858
|
FilterPill,
|
|
5850
5859
|
{
|
|
5851
5860
|
menuLabel: "Date range",
|
|
@@ -5858,7 +5867,7 @@ function DataTableMobileInner(props, ref) {
|
|
|
5858
5867
|
}
|
|
5859
5868
|
) }) : null,
|
|
5860
5869
|
toolbar ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "flex flex-wrap items-center gap-xs", children: toolbar }) : null
|
|
5861
|
-
] }),
|
|
5870
|
+
] }) : null,
|
|
5862
5871
|
bulkActions && selected.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "flex flex-wrap items-center gap-sm border-t border-hairline bg-surface-soft px-lg py-sm", children: [
|
|
5863
5872
|
/* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("span", { className: "text-body-sm text-ink", children: [
|
|
5864
5873
|
selected.length,
|
|
@@ -6013,6 +6022,7 @@ function DataTableInner(props, ref) {
|
|
|
6013
6022
|
onFilterChange,
|
|
6014
6023
|
filterBy,
|
|
6015
6024
|
searchPlaceholder,
|
|
6025
|
+
searchable,
|
|
6016
6026
|
query,
|
|
6017
6027
|
onQueryChange,
|
|
6018
6028
|
searchBy,
|
|
@@ -6074,6 +6084,7 @@ function DataTableInner(props, ref) {
|
|
|
6074
6084
|
onFilterChange: handleFilter,
|
|
6075
6085
|
filterBy,
|
|
6076
6086
|
searchPlaceholder,
|
|
6087
|
+
searchable,
|
|
6077
6088
|
query: activeQuery,
|
|
6078
6089
|
onQueryChange: handleQuery,
|
|
6079
6090
|
searchBy,
|
|
@@ -11808,20 +11819,75 @@ var Pagination = React59.forwardRef(
|
|
|
11808
11819
|
);
|
|
11809
11820
|
Pagination.displayName = "Pagination";
|
|
11810
11821
|
|
|
11822
|
+
// virtual-pkg:src/atoms/Panel/Panel.tsx
|
|
11823
|
+
var React60 = __toESM(require("react"));
|
|
11824
|
+
var import_jsx_runtime60 = require("react/jsx-runtime");
|
|
11825
|
+
var cn51 = (...values) => values.filter(Boolean).join(" ");
|
|
11826
|
+
var Panel = React60.forwardRef(
|
|
11827
|
+
({
|
|
11828
|
+
title,
|
|
11829
|
+
meta,
|
|
11830
|
+
actions,
|
|
11831
|
+
headingLevel = 2,
|
|
11832
|
+
id,
|
|
11833
|
+
children,
|
|
11834
|
+
className,
|
|
11835
|
+
...rest
|
|
11836
|
+
}, ref) => {
|
|
11837
|
+
const generatedId = React60.useId();
|
|
11838
|
+
const baseId = id ?? generatedId;
|
|
11839
|
+
const titleId = `${baseId}-title`;
|
|
11840
|
+
const Heading = headingLevel === 3 ? "h3" : "h2";
|
|
11841
|
+
const hasTrailing = Boolean(meta) || Boolean(actions);
|
|
11842
|
+
return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(
|
|
11843
|
+
"section",
|
|
11844
|
+
{
|
|
11845
|
+
ref,
|
|
11846
|
+
id,
|
|
11847
|
+
"aria-labelledby": titleId,
|
|
11848
|
+
className: cn51(
|
|
11849
|
+
"w-full min-w-0 overflow-hidden rounded-xl border border-hairline",
|
|
11850
|
+
"bg-surface p-xl shadow-card",
|
|
11851
|
+
className
|
|
11852
|
+
),
|
|
11853
|
+
...rest,
|
|
11854
|
+
children: [
|
|
11855
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", { className: "mb-lg flex min-w-0 flex-wrap items-center justify-between gap-x-md gap-y-sm", children: [
|
|
11856
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
11857
|
+
Heading,
|
|
11858
|
+
{
|
|
11859
|
+
id: titleId,
|
|
11860
|
+
className: "min-w-0 truncate text-heading-sm text-ink",
|
|
11861
|
+
children: title
|
|
11862
|
+
}
|
|
11863
|
+
),
|
|
11864
|
+
hasTrailing ? /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", { className: "ml-auto flex shrink-0 items-center gap-md", children: [
|
|
11865
|
+
meta ? /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: "whitespace-nowrap text-caption text-muted", children: meta }) : null,
|
|
11866
|
+
actions
|
|
11867
|
+
] }) : null
|
|
11868
|
+
] }),
|
|
11869
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)("div", { className: "flex min-w-0 flex-col gap-md", children })
|
|
11870
|
+
]
|
|
11871
|
+
}
|
|
11872
|
+
);
|
|
11873
|
+
}
|
|
11874
|
+
);
|
|
11875
|
+
Panel.displayName = "Panel";
|
|
11876
|
+
|
|
11811
11877
|
// virtual-pkg:src/atoms/PaymentRoutingCanvas/PaymentRoutingCanvas.tsx
|
|
11812
|
-
var
|
|
11878
|
+
var React64 = __toESM(require("react"));
|
|
11813
11879
|
var ReactDOM10 = __toESM(require("react-dom"));
|
|
11814
11880
|
|
|
11815
11881
|
// virtual-pkg:src/atoms/RoutingEdge/RoutingEdge.tsx
|
|
11816
|
-
var
|
|
11817
|
-
var
|
|
11818
|
-
var
|
|
11882
|
+
var React61 = __toESM(require("react"));
|
|
11883
|
+
var import_jsx_runtime61 = require("react/jsx-runtime");
|
|
11884
|
+
var cn52 = (...values) => values.filter(Boolean).join(" ");
|
|
11819
11885
|
var toneColor = {
|
|
11820
11886
|
primary: "var(--color-primary)",
|
|
11821
11887
|
medium: "var(--color-hairline-strong)",
|
|
11822
11888
|
light: "var(--color-hairline)"
|
|
11823
11889
|
};
|
|
11824
|
-
var RoutingEdge =
|
|
11890
|
+
var RoutingEdge = React61.forwardRef(
|
|
11825
11891
|
({
|
|
11826
11892
|
from,
|
|
11827
11893
|
to,
|
|
@@ -11843,11 +11909,11 @@ var RoutingEdge = React60.forwardRef(
|
|
|
11843
11909
|
const gap = Math.abs(to.y - from.y);
|
|
11844
11910
|
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;
|
|
11845
11911
|
const segment = "absolute rounded-full transition-all duration-200 ease-out";
|
|
11846
|
-
return /* @__PURE__ */ (0,
|
|
11912
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(
|
|
11847
11913
|
"div",
|
|
11848
11914
|
{
|
|
11849
11915
|
ref,
|
|
11850
|
-
className:
|
|
11916
|
+
className: cn52(
|
|
11851
11917
|
"pointer-events-none absolute inset-0",
|
|
11852
11918
|
isDimmed ? "opacity-50" : "opacity-100",
|
|
11853
11919
|
"transition-opacity duration-200 ease-out",
|
|
@@ -11857,7 +11923,7 @@ var RoutingEdge = React60.forwardRef(
|
|
|
11857
11923
|
"data-edge-state": state,
|
|
11858
11924
|
...rest,
|
|
11859
11925
|
children: [
|
|
11860
|
-
/* @__PURE__ */ (0,
|
|
11926
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
11861
11927
|
"span",
|
|
11862
11928
|
{
|
|
11863
11929
|
"aria-hidden": "true",
|
|
@@ -11871,7 +11937,7 @@ var RoutingEdge = React60.forwardRef(
|
|
|
11871
11937
|
}
|
|
11872
11938
|
}
|
|
11873
11939
|
),
|
|
11874
|
-
gap > 0 ? /* @__PURE__ */ (0,
|
|
11940
|
+
gap > 0 ? /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
11875
11941
|
"span",
|
|
11876
11942
|
{
|
|
11877
11943
|
"aria-hidden": "true",
|
|
@@ -11885,7 +11951,7 @@ var RoutingEdge = React60.forwardRef(
|
|
|
11885
11951
|
}
|
|
11886
11952
|
}
|
|
11887
11953
|
) : null,
|
|
11888
|
-
/* @__PURE__ */ (0,
|
|
11954
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
11889
11955
|
"span",
|
|
11890
11956
|
{
|
|
11891
11957
|
"aria-hidden": "true",
|
|
@@ -11899,10 +11965,10 @@ var RoutingEdge = React60.forwardRef(
|
|
|
11899
11965
|
}
|
|
11900
11966
|
}
|
|
11901
11967
|
),
|
|
11902
|
-
label ? /* @__PURE__ */ (0,
|
|
11968
|
+
label ? /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
11903
11969
|
"span",
|
|
11904
11970
|
{
|
|
11905
|
-
className:
|
|
11971
|
+
className: cn52(
|
|
11906
11972
|
"absolute -translate-x-1/2 -translate-y-1/2 whitespace-nowrap rounded-sm border px-xs py-xxs",
|
|
11907
11973
|
"text-caption transition duration-200 ease-out",
|
|
11908
11974
|
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"
|
|
@@ -11919,9 +11985,9 @@ var RoutingEdge = React60.forwardRef(
|
|
|
11919
11985
|
RoutingEdge.displayName = "RoutingEdge";
|
|
11920
11986
|
|
|
11921
11987
|
// virtual-pkg:src/atoms/RoutingNode/RoutingNode.tsx
|
|
11922
|
-
var
|
|
11923
|
-
var
|
|
11924
|
-
var
|
|
11988
|
+
var React62 = __toESM(require("react"));
|
|
11989
|
+
var import_jsx_runtime62 = require("react/jsx-runtime");
|
|
11990
|
+
var cn53 = (...values) => values.filter(Boolean).join(" ");
|
|
11925
11991
|
var NODE_WIDTH = "var(--container-node, 228px)";
|
|
11926
11992
|
var accentByType = {
|
|
11927
11993
|
source: "bg-primary",
|
|
@@ -11947,7 +12013,7 @@ var eyebrowByType2 = {
|
|
|
11947
12013
|
processor: "Processor",
|
|
11948
12014
|
fallback: "Fallback"
|
|
11949
12015
|
};
|
|
11950
|
-
var RoutingNode =
|
|
12016
|
+
var RoutingNode = React62.forwardRef(
|
|
11951
12017
|
({
|
|
11952
12018
|
type,
|
|
11953
12019
|
title,
|
|
@@ -11970,21 +12036,21 @@ var RoutingNode = React61.forwardRef(
|
|
|
11970
12036
|
}, ref) => {
|
|
11971
12037
|
const glyph5 = icon ?? defaultIconByType[type];
|
|
11972
12038
|
const highlighted = selected || active;
|
|
11973
|
-
return /* @__PURE__ */ (0,
|
|
12039
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(
|
|
11974
12040
|
"div",
|
|
11975
12041
|
{
|
|
11976
12042
|
ref,
|
|
11977
|
-
className:
|
|
12043
|
+
className: cn53("group/node relative shrink-0", className),
|
|
11978
12044
|
style: { width: NODE_WIDTH, ...style },
|
|
11979
12045
|
"data-node-type": type,
|
|
11980
12046
|
"data-selected": selected || void 0,
|
|
11981
12047
|
"data-active": active || void 0,
|
|
11982
12048
|
...rest,
|
|
11983
12049
|
children: [
|
|
11984
|
-
/* @__PURE__ */ (0,
|
|
12050
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(
|
|
11985
12051
|
"div",
|
|
11986
12052
|
{
|
|
11987
|
-
className:
|
|
12053
|
+
className: cn53(
|
|
11988
12054
|
"flex items-stretch overflow-hidden rounded-md border bg-surface",
|
|
11989
12055
|
"transition duration-150 ease-out",
|
|
11990
12056
|
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",
|
|
@@ -11992,29 +12058,29 @@ var RoutingNode = React61.forwardRef(
|
|
|
11992
12058
|
disabled ? "" : "group-hover/node:border-hairline-strong group-hover/node:shadow-md"
|
|
11993
12059
|
),
|
|
11994
12060
|
children: [
|
|
11995
|
-
/* @__PURE__ */ (0,
|
|
12061
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
11996
12062
|
"span",
|
|
11997
12063
|
{
|
|
11998
12064
|
"aria-hidden": "true",
|
|
11999
|
-
className:
|
|
12065
|
+
className: cn53("w-xs shrink-0", disabled ? "bg-hairline" : accentByType[type])
|
|
12000
12066
|
}
|
|
12001
12067
|
),
|
|
12002
|
-
/* @__PURE__ */ (0,
|
|
12003
|
-
/* @__PURE__ */ (0,
|
|
12068
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "flex min-w-0 flex-1 items-start gap-sm p-sm", children: [
|
|
12069
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
12004
12070
|
"span",
|
|
12005
12071
|
{
|
|
12006
12072
|
"aria-hidden": "true",
|
|
12007
|
-
className:
|
|
12073
|
+
className: cn53(
|
|
12008
12074
|
"flex size-lg shrink-0 items-center justify-center rounded-xs",
|
|
12009
12075
|
disabled ? "bg-surface-strong text-muted-soft" : glyphTintByType[type]
|
|
12010
12076
|
),
|
|
12011
|
-
children: /* @__PURE__ */ (0,
|
|
12077
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Icon, { name: glyph5, size: 12, strokeWidth: 1.75 })
|
|
12012
12078
|
}
|
|
12013
12079
|
),
|
|
12014
|
-
/* @__PURE__ */ (0,
|
|
12015
|
-
/* @__PURE__ */ (0,
|
|
12016
|
-
/* @__PURE__ */ (0,
|
|
12017
|
-
unreachable ? /* @__PURE__ */ (0,
|
|
12080
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "flex min-w-0 flex-1 flex-col gap-xxs", children: [
|
|
12081
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "flex items-center gap-xs", children: [
|
|
12082
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { className: "truncate text-micro-cap text-muted", children: eyebrowByType2[type] }),
|
|
12083
|
+
unreachable ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
12018
12084
|
Icon,
|
|
12019
12085
|
{
|
|
12020
12086
|
name: "triangle",
|
|
@@ -12024,45 +12090,45 @@ var RoutingNode = React61.forwardRef(
|
|
|
12024
12090
|
}
|
|
12025
12091
|
) : null
|
|
12026
12092
|
] }),
|
|
12027
|
-
/* @__PURE__ */ (0,
|
|
12028
|
-
noFallback ? /* @__PURE__ */ (0,
|
|
12029
|
-
/* @__PURE__ */ (0,
|
|
12093
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { className: "text-body-sm text-ink", children: title }),
|
|
12094
|
+
noFallback ? /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("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: [
|
|
12095
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Icon, { name: "triangle", size: 11, strokeWidth: 2, className: "shrink-0" }),
|
|
12030
12096
|
"No fallback"
|
|
12031
|
-
] }) : metric || trailing ? /* @__PURE__ */ (0,
|
|
12032
|
-
metric ? /* @__PURE__ */ (0,
|
|
12033
|
-
trailing ? /* @__PURE__ */ (0,
|
|
12097
|
+
] }) : metric || trailing ? /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "flex min-w-0 items-baseline justify-between gap-xs", children: [
|
|
12098
|
+
metric ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { className: "truncate text-caption text-muted", children: metric }) : null,
|
|
12099
|
+
trailing ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { className: "shrink-0 text-caption text-muted", children: trailing }) : null
|
|
12034
12100
|
] }) : null,
|
|
12035
|
-
conflict ? /* @__PURE__ */ (0,
|
|
12101
|
+
conflict ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { className: "text-caption text-semantic-error", children: conflict }) : null
|
|
12036
12102
|
] })
|
|
12037
12103
|
] })
|
|
12038
12104
|
]
|
|
12039
12105
|
}
|
|
12040
12106
|
),
|
|
12041
|
-
/* @__PURE__ */ (0,
|
|
12107
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
12042
12108
|
"span",
|
|
12043
12109
|
{
|
|
12044
12110
|
"aria-hidden": "true",
|
|
12045
|
-
className:
|
|
12111
|
+
className: cn53(
|
|
12046
12112
|
"absolute -left-xs top-1/2 size-sm -translate-y-1/2 rounded-full border-2 transition-colors duration-150 ease-out",
|
|
12047
12113
|
highlighted ? "border-primary bg-primary" : "border-hairline-strong bg-surface"
|
|
12048
12114
|
)
|
|
12049
12115
|
}
|
|
12050
12116
|
),
|
|
12051
|
-
/* @__PURE__ */ (0,
|
|
12117
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
12052
12118
|
"span",
|
|
12053
12119
|
{
|
|
12054
12120
|
"aria-hidden": "true",
|
|
12055
|
-
className:
|
|
12121
|
+
className: cn53(
|
|
12056
12122
|
"absolute -right-xs top-1/2 size-sm -translate-y-1/2 rounded-full border-2 transition-colors duration-150 ease-out",
|
|
12057
12123
|
highlighted ? "border-primary bg-primary" : "border-hairline-strong bg-surface"
|
|
12058
12124
|
)
|
|
12059
12125
|
}
|
|
12060
12126
|
),
|
|
12061
|
-
/* @__PURE__ */ (0,
|
|
12127
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
12062
12128
|
"span",
|
|
12063
12129
|
{
|
|
12064
12130
|
"aria-hidden": "true",
|
|
12065
|
-
className:
|
|
12131
|
+
className: cn53(
|
|
12066
12132
|
"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",
|
|
12067
12133
|
"transition duration-150 ease-out",
|
|
12068
12134
|
showHint ? "translate-y-0 opacity-100" : "-translate-y-xs opacity-0"
|
|
@@ -12070,7 +12136,7 @@ var RoutingNode = React61.forwardRef(
|
|
|
12070
12136
|
children: "Press Enter"
|
|
12071
12137
|
}
|
|
12072
12138
|
),
|
|
12073
|
-
/* @__PURE__ */ (0,
|
|
12139
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
12074
12140
|
Button,
|
|
12075
12141
|
{
|
|
12076
12142
|
variant: "bare",
|
|
@@ -12080,7 +12146,7 @@ var RoutingNode = React61.forwardRef(
|
|
|
12080
12146
|
"aria-pressed": selected,
|
|
12081
12147
|
onClick: onNodeSelect,
|
|
12082
12148
|
className: "absolute inset-0 rounded-md focus-visible:ring-focus-blue focus-visible:ring-offset-0",
|
|
12083
|
-
children: /* @__PURE__ */ (0,
|
|
12149
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { className: "sr-only", children: title })
|
|
12084
12150
|
}
|
|
12085
12151
|
)
|
|
12086
12152
|
]
|
|
@@ -12091,10 +12157,10 @@ var RoutingNode = React61.forwardRef(
|
|
|
12091
12157
|
RoutingNode.displayName = "RoutingNode";
|
|
12092
12158
|
|
|
12093
12159
|
// virtual-pkg:src/atoms/SimulationControls/SimulationControls.tsx
|
|
12094
|
-
var
|
|
12095
|
-
var
|
|
12096
|
-
var
|
|
12097
|
-
var SimulationControls =
|
|
12160
|
+
var React63 = __toESM(require("react"));
|
|
12161
|
+
var import_jsx_runtime63 = require("react/jsx-runtime");
|
|
12162
|
+
var cn54 = (...values) => values.filter(Boolean).join(" ");
|
|
12163
|
+
var SimulationControls = React63.forwardRef(
|
|
12098
12164
|
({
|
|
12099
12165
|
running = false,
|
|
12100
12166
|
on = false,
|
|
@@ -12106,12 +12172,12 @@ var SimulationControls = React62.forwardRef(
|
|
|
12106
12172
|
className,
|
|
12107
12173
|
...rest
|
|
12108
12174
|
}, ref) => {
|
|
12109
|
-
const trackRef =
|
|
12110
|
-
const segmentRef =
|
|
12111
|
-
const [pill, setPill] =
|
|
12175
|
+
const trackRef = React63.useRef(null);
|
|
12176
|
+
const segmentRef = React63.useRef(null);
|
|
12177
|
+
const [pill, setPill] = React63.useState(
|
|
12112
12178
|
null
|
|
12113
12179
|
);
|
|
12114
|
-
|
|
12180
|
+
React63.useEffect(() => {
|
|
12115
12181
|
const measure = () => {
|
|
12116
12182
|
const track = trackRef.current;
|
|
12117
12183
|
const segment = segmentRef.current;
|
|
@@ -12124,7 +12190,7 @@ var SimulationControls = React62.forwardRef(
|
|
|
12124
12190
|
return () => observer.disconnect();
|
|
12125
12191
|
}, []);
|
|
12126
12192
|
const armed = on || running;
|
|
12127
|
-
return /* @__PURE__ */ (0,
|
|
12193
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(
|
|
12128
12194
|
"div",
|
|
12129
12195
|
{
|
|
12130
12196
|
ref: (node) => {
|
|
@@ -12134,18 +12200,18 @@ var SimulationControls = React62.forwardRef(
|
|
|
12134
12200
|
},
|
|
12135
12201
|
role: "group",
|
|
12136
12202
|
"aria-label": label,
|
|
12137
|
-
className:
|
|
12203
|
+
className: cn54(
|
|
12138
12204
|
"relative inline-flex items-center gap-xxs rounded-full border border-hairline bg-surface-soft p-xxs",
|
|
12139
12205
|
"transition-colors duration-150 ease-out",
|
|
12140
12206
|
className
|
|
12141
12207
|
),
|
|
12142
12208
|
...rest,
|
|
12143
12209
|
children: [
|
|
12144
|
-
/* @__PURE__ */ (0,
|
|
12210
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
12145
12211
|
"span",
|
|
12146
12212
|
{
|
|
12147
12213
|
"aria-hidden": "true",
|
|
12148
|
-
className:
|
|
12214
|
+
className: cn54(
|
|
12149
12215
|
"pointer-events-none absolute bottom-xxs top-xxs rounded-full bg-primary shadow-sm",
|
|
12150
12216
|
"transition duration-200 ease-out",
|
|
12151
12217
|
armed ? "opacity-100" : "opacity-0"
|
|
@@ -12153,7 +12219,7 @@ var SimulationControls = React62.forwardRef(
|
|
|
12153
12219
|
style: { left: pill?.left ?? 0, width: pill?.width ?? 0 }
|
|
12154
12220
|
}
|
|
12155
12221
|
),
|
|
12156
|
-
/* @__PURE__ */ (0,
|
|
12222
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
12157
12223
|
Button,
|
|
12158
12224
|
{
|
|
12159
12225
|
variant: "bare",
|
|
@@ -12161,14 +12227,14 @@ var SimulationControls = React62.forwardRef(
|
|
|
12161
12227
|
onClick: onReplay,
|
|
12162
12228
|
disabled: running,
|
|
12163
12229
|
"aria-label": "Replay sample transaction",
|
|
12164
|
-
className:
|
|
12230
|
+
className: cn54(
|
|
12165
12231
|
"relative z-10 size-7 shrink-0 rounded-full text-body",
|
|
12166
12232
|
"hover:bg-surface-strong hover:text-ink disabled:hover:bg-transparent"
|
|
12167
12233
|
),
|
|
12168
|
-
children: /* @__PURE__ */ (0,
|
|
12234
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Icon, { name: "play", size: 13, strokeWidth: 2 })
|
|
12169
12235
|
}
|
|
12170
12236
|
),
|
|
12171
|
-
/* @__PURE__ */ (0,
|
|
12237
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(
|
|
12172
12238
|
Button,
|
|
12173
12239
|
{
|
|
12174
12240
|
ref: segmentRef,
|
|
@@ -12177,20 +12243,20 @@ var SimulationControls = React62.forwardRef(
|
|
|
12177
12243
|
onClick: () => onToggle?.(!on),
|
|
12178
12244
|
"aria-pressed": armed,
|
|
12179
12245
|
"aria-label": "Simulation mode",
|
|
12180
|
-
className:
|
|
12246
|
+
className: cn54(
|
|
12181
12247
|
"relative z-10 shrink-0 rounded-full",
|
|
12182
12248
|
armed ? "text-on-primary" : "text-muted"
|
|
12183
12249
|
),
|
|
12184
12250
|
children: [
|
|
12185
|
-
/* @__PURE__ */ (0,
|
|
12251
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Icon, { name: running ? "square" : "play", size: 10, strokeWidth: 2.5 }),
|
|
12186
12252
|
"Simulation"
|
|
12187
12253
|
]
|
|
12188
12254
|
}
|
|
12189
12255
|
),
|
|
12190
|
-
/* @__PURE__ */ (0,
|
|
12256
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(
|
|
12191
12257
|
"span",
|
|
12192
12258
|
{
|
|
12193
|
-
className:
|
|
12259
|
+
className: cn54(
|
|
12194
12260
|
"relative z-10 px-sm text-caption",
|
|
12195
12261
|
armed ? "text-ink" : "text-muted"
|
|
12196
12262
|
),
|
|
@@ -12210,8 +12276,8 @@ var SimulationControls = React62.forwardRef(
|
|
|
12210
12276
|
SimulationControls.displayName = "SimulationControls";
|
|
12211
12277
|
|
|
12212
12278
|
// virtual-pkg:src/atoms/PaymentRoutingCanvas/PaymentRoutingCanvas.tsx
|
|
12213
|
-
var
|
|
12214
|
-
var
|
|
12279
|
+
var import_jsx_runtime64 = require("react/jsx-runtime");
|
|
12280
|
+
var cn55 = (...values) => values.filter(Boolean).join(" ");
|
|
12215
12281
|
var NODE_W = 228;
|
|
12216
12282
|
var NODE_H = 78;
|
|
12217
12283
|
var SOURCE_X = 0;
|
|
@@ -12378,7 +12444,7 @@ var computeIssues = (nodes, edges) => {
|
|
|
12378
12444
|
return issues;
|
|
12379
12445
|
};
|
|
12380
12446
|
var sameIds = (a, b) => a.length === b.length && a.every((id, index) => id === b[index]);
|
|
12381
|
-
var PaymentRoutingCanvas =
|
|
12447
|
+
var PaymentRoutingCanvas = React64.forwardRef(
|
|
12382
12448
|
({
|
|
12383
12449
|
nodes,
|
|
12384
12450
|
edges,
|
|
@@ -12397,50 +12463,50 @@ var PaymentRoutingCanvas = React63.forwardRef(
|
|
|
12397
12463
|
const incomingNodes = nodes ?? DEFAULT_NODES;
|
|
12398
12464
|
const graphEdges = edges ?? DEFAULT_EDGES;
|
|
12399
12465
|
const samples = sampleTransaction ?? DEFAULT_SAMPLES;
|
|
12400
|
-
const [localNodes, setLocalNodes] =
|
|
12401
|
-
const [panelNodeId, setPanelNodeId] =
|
|
12402
|
-
const [panelOpen, setPanelOpen] =
|
|
12403
|
-
const [zoom, setZoom] =
|
|
12404
|
-
const [fit, setFit] =
|
|
12405
|
-
const [planeHeight, setPlaneHeight] =
|
|
12406
|
-
const [pan, setPan] =
|
|
12407
|
-
const [issuesOpen, setIssuesOpen] =
|
|
12408
|
-
const [priority, setPriority] =
|
|
12466
|
+
const [localNodes, setLocalNodes] = React64.useState(incomingNodes);
|
|
12467
|
+
const [panelNodeId, setPanelNodeId] = React64.useState("brand");
|
|
12468
|
+
const [panelOpen, setPanelOpen] = React64.useState(true);
|
|
12469
|
+
const [zoom, setZoom] = React64.useState(1);
|
|
12470
|
+
const [fit, setFit] = React64.useState(1);
|
|
12471
|
+
const [planeHeight, setPlaneHeight] = React64.useState(PLANE_H);
|
|
12472
|
+
const [pan, setPan] = React64.useState({ x: 0, y: 0 });
|
|
12473
|
+
const [issuesOpen, setIssuesOpen] = React64.useState(false);
|
|
12474
|
+
const [priority, setPriority] = React64.useState([
|
|
12409
12475
|
{ id: "p1", label: "Card brand = credit" },
|
|
12410
12476
|
{ id: "p2", label: "Country = DE" },
|
|
12411
12477
|
{ id: "p3", label: "Risk score \u2265 70" }
|
|
12412
12478
|
]);
|
|
12413
|
-
const [fallbackEnabled, setFallbackEnabled] =
|
|
12414
|
-
const [sampleIndex, setSampleIndex] =
|
|
12415
|
-
const [stepIndex, setStepIndex] =
|
|
12416
|
-
const [replaying, setReplaying] =
|
|
12417
|
-
const [focusedId, setFocusedId] =
|
|
12418
|
-
const [anchor, setAnchor] =
|
|
12479
|
+
const [fallbackEnabled, setFallbackEnabled] = React64.useState(true);
|
|
12480
|
+
const [sampleIndex, setSampleIndex] = React64.useState(0);
|
|
12481
|
+
const [stepIndex, setStepIndex] = React64.useState(2);
|
|
12482
|
+
const [replaying, setReplaying] = React64.useState(false);
|
|
12483
|
+
const [focusedId, setFocusedId] = React64.useState(null);
|
|
12484
|
+
const [anchor, setAnchor] = React64.useState({ top: 0, right: 16 });
|
|
12419
12485
|
const controlledSelection = selectedNodeIds !== void 0;
|
|
12420
|
-
const [internalSelection, setInternalSelection] =
|
|
12486
|
+
const [internalSelection, setInternalSelection] = React64.useState(
|
|
12421
12487
|
() => defaultSelectedNodeIds ?? DEFAULT_SELECTION
|
|
12422
12488
|
);
|
|
12423
12489
|
const selection = controlledSelection ? selectedNodeIds : internalSelection;
|
|
12424
|
-
const selectionRef =
|
|
12490
|
+
const selectionRef = React64.useRef(selection);
|
|
12425
12491
|
selectionRef.current = selection;
|
|
12426
|
-
const onSelectionChangeRef =
|
|
12492
|
+
const onSelectionChangeRef = React64.useRef(onSelectionChange);
|
|
12427
12493
|
onSelectionChangeRef.current = onSelectionChange;
|
|
12428
|
-
const [marqueeBox, setMarqueeBox] =
|
|
12429
|
-
const [marqueeIds, setMarqueeIds] =
|
|
12430
|
-
const marqueeRef =
|
|
12431
|
-
const [modifierHeld, setModifierHeld] =
|
|
12432
|
-
const rootRef =
|
|
12433
|
-
const planeRef =
|
|
12434
|
-
const triggerRef =
|
|
12435
|
-
const nodeRefs =
|
|
12436
|
-
const suppressClick =
|
|
12437
|
-
const nodeDragActive =
|
|
12438
|
-
const nodesRef =
|
|
12494
|
+
const [marqueeBox, setMarqueeBox] = React64.useState(null);
|
|
12495
|
+
const [marqueeIds, setMarqueeIds] = React64.useState(null);
|
|
12496
|
+
const marqueeRef = React64.useRef(null);
|
|
12497
|
+
const [modifierHeld, setModifierHeld] = React64.useState(false);
|
|
12498
|
+
const rootRef = React64.useRef(null);
|
|
12499
|
+
const planeRef = React64.useRef(null);
|
|
12500
|
+
const triggerRef = React64.useRef(null);
|
|
12501
|
+
const nodeRefs = React64.useRef({});
|
|
12502
|
+
const suppressClick = React64.useRef(false);
|
|
12503
|
+
const nodeDragActive = React64.useRef(false);
|
|
12504
|
+
const nodesRef = React64.useRef(localNodes);
|
|
12439
12505
|
nodesRef.current = localNodes;
|
|
12440
|
-
|
|
12506
|
+
React64.useEffect(() => {
|
|
12441
12507
|
setLocalNodes(incomingNodes);
|
|
12442
12508
|
}, [incomingNodes]);
|
|
12443
|
-
|
|
12509
|
+
React64.useEffect(() => {
|
|
12444
12510
|
const syncModifier = (event) => setModifierHeld(Boolean(event.metaKey || event.ctrlKey));
|
|
12445
12511
|
const releaseModifier = () => setModifierHeld(false);
|
|
12446
12512
|
window.addEventListener("keydown", syncModifier);
|
|
@@ -12452,7 +12518,7 @@ var PaymentRoutingCanvas = React63.forwardRef(
|
|
|
12452
12518
|
window.removeEventListener("blur", releaseModifier);
|
|
12453
12519
|
};
|
|
12454
12520
|
}, []);
|
|
12455
|
-
|
|
12521
|
+
React64.useEffect(() => {
|
|
12456
12522
|
const plane = planeRef.current;
|
|
12457
12523
|
if (!plane) return;
|
|
12458
12524
|
const measure = () => {
|
|
@@ -12473,16 +12539,16 @@ var PaymentRoutingCanvas = React63.forwardRef(
|
|
|
12473
12539
|
observer.observe(plane);
|
|
12474
12540
|
return () => observer.disconnect();
|
|
12475
12541
|
}, []);
|
|
12476
|
-
const issues =
|
|
12542
|
+
const issues = React64.useMemo(
|
|
12477
12543
|
() => computeIssues(localNodes, graphEdges),
|
|
12478
12544
|
[localNodes, graphEdges]
|
|
12479
12545
|
);
|
|
12480
|
-
|
|
12546
|
+
React64.useEffect(() => {
|
|
12481
12547
|
onValidationChange?.(issues);
|
|
12482
12548
|
}, [issues, onValidationChange]);
|
|
12483
12549
|
const sample = samples[sampleIndex] ?? samples[0];
|
|
12484
12550
|
const steps = sample?.steps ?? [];
|
|
12485
|
-
|
|
12551
|
+
React64.useEffect(() => {
|
|
12486
12552
|
if (!replaying) return;
|
|
12487
12553
|
if (stepIndex >= steps.length - 1) {
|
|
12488
12554
|
setReplaying(false);
|
|
@@ -12497,11 +12563,11 @@ var PaymentRoutingCanvas = React63.forwardRef(
|
|
|
12497
12563
|
}, 900);
|
|
12498
12564
|
return () => window.clearTimeout(timer);
|
|
12499
12565
|
}, [replaying, stepIndex, steps, onSimulationStep]);
|
|
12500
|
-
const traversed =
|
|
12566
|
+
const traversed = React64.useMemo(
|
|
12501
12567
|
() => new Set(steps.slice(0, stepIndex + 1).map((step) => step.nodeId)),
|
|
12502
12568
|
[steps, stepIndex]
|
|
12503
12569
|
);
|
|
12504
|
-
const activeEdges =
|
|
12570
|
+
const activeEdges = React64.useMemo(() => {
|
|
12505
12571
|
const pairs = [];
|
|
12506
12572
|
for (let index = 0; index < stepIndex; index += 1) {
|
|
12507
12573
|
const from = steps[index]?.nodeId;
|
|
@@ -12510,7 +12576,7 @@ var PaymentRoutingCanvas = React63.forwardRef(
|
|
|
12510
12576
|
}
|
|
12511
12577
|
return new Set(pairs);
|
|
12512
12578
|
}, [steps, stepIndex]);
|
|
12513
|
-
const nodeById =
|
|
12579
|
+
const nodeById = React64.useMemo(() => {
|
|
12514
12580
|
const map = /* @__PURE__ */ new Map();
|
|
12515
12581
|
localNodes.forEach((node) => map.set(node.id, node));
|
|
12516
12582
|
return map;
|
|
@@ -12520,9 +12586,9 @@ var PaymentRoutingCanvas = React63.forwardRef(
|
|
|
12520
12586
|
y: node.y + (node.h ?? NODE_H) / 2
|
|
12521
12587
|
});
|
|
12522
12588
|
const focusedNode = panelNodeId ? nodeById.get(panelNodeId) : void 0;
|
|
12523
|
-
const selectionSet =
|
|
12524
|
-
const marqueeSet =
|
|
12525
|
-
const commitSelection =
|
|
12589
|
+
const selectionSet = React64.useMemo(() => new Set(selection), [selection]);
|
|
12590
|
+
const marqueeSet = React64.useMemo(() => new Set(marqueeIds ?? []), [marqueeIds]);
|
|
12591
|
+
const commitSelection = React64.useCallback(
|
|
12526
12592
|
(next) => {
|
|
12527
12593
|
const unique = next.filter((id, index) => next.indexOf(id) === index);
|
|
12528
12594
|
if (sameIds(unique, selectionRef.current)) return;
|
|
@@ -12794,7 +12860,7 @@ var PaymentRoutingCanvas = React63.forwardRef(
|
|
|
12794
12860
|
setIssuesOpen((current) => !current);
|
|
12795
12861
|
};
|
|
12796
12862
|
const scale = fit * zoom;
|
|
12797
|
-
return /* @__PURE__ */ (0,
|
|
12863
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(
|
|
12798
12864
|
"div",
|
|
12799
12865
|
{
|
|
12800
12866
|
ref: (node) => {
|
|
@@ -12802,20 +12868,20 @@ var PaymentRoutingCanvas = React63.forwardRef(
|
|
|
12802
12868
|
if (typeof ref === "function") ref(node);
|
|
12803
12869
|
else if (ref) ref.current = node;
|
|
12804
12870
|
},
|
|
12805
|
-
className:
|
|
12871
|
+
className: cn55(
|
|
12806
12872
|
"flex min-h-0 w-full flex-col overflow-hidden rounded-lg border border-hairline bg-surface shadow-card",
|
|
12807
12873
|
className
|
|
12808
12874
|
),
|
|
12809
12875
|
"data-simulating": replaying || void 0,
|
|
12810
12876
|
...rest,
|
|
12811
12877
|
children: [
|
|
12812
|
-
/* @__PURE__ */ (0,
|
|
12813
|
-
/* @__PURE__ */ (0,
|
|
12814
|
-
/* @__PURE__ */ (0,
|
|
12815
|
-
/* @__PURE__ */ (0,
|
|
12878
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: "flex shrink-0 flex-wrap items-center justify-between gap-md border-b border-hairline px-lg py-md", children: [
|
|
12879
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: "flex min-w-0 flex-col gap-xxs", children: [
|
|
12880
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("span", { className: "text-body-md text-ink", children: "Payment routing" }),
|
|
12881
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("span", { className: "text-caption text-muted", children: "12,480 payments \xB7 last 24h" })
|
|
12816
12882
|
] }),
|
|
12817
|
-
/* @__PURE__ */ (0,
|
|
12818
|
-
/* @__PURE__ */ (0,
|
|
12883
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: "flex flex-wrap items-center gap-md", children: [
|
|
12884
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
12819
12885
|
SimulationControls,
|
|
12820
12886
|
{
|
|
12821
12887
|
running: replaying,
|
|
@@ -12832,7 +12898,7 @@ var PaymentRoutingCanvas = React63.forwardRef(
|
|
|
12832
12898
|
}
|
|
12833
12899
|
}
|
|
12834
12900
|
),
|
|
12835
|
-
/* @__PURE__ */ (0,
|
|
12901
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
12836
12902
|
Button,
|
|
12837
12903
|
{
|
|
12838
12904
|
ref: triggerRef,
|
|
@@ -12841,7 +12907,7 @@ var PaymentRoutingCanvas = React63.forwardRef(
|
|
|
12841
12907
|
"aria-expanded": issuesOpen,
|
|
12842
12908
|
"aria-controls": "routing-validation-summary",
|
|
12843
12909
|
onClick: openIssues,
|
|
12844
|
-
leadingIcon: /* @__PURE__ */ (0,
|
|
12910
|
+
leadingIcon: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
12845
12911
|
Icon,
|
|
12846
12912
|
{
|
|
12847
12913
|
name: issues.length > 0 ? "triangle" : "check",
|
|
@@ -12849,7 +12915,7 @@ var PaymentRoutingCanvas = React63.forwardRef(
|
|
|
12849
12915
|
strokeWidth: 2
|
|
12850
12916
|
}
|
|
12851
12917
|
),
|
|
12852
|
-
className:
|
|
12918
|
+
className: cn55(
|
|
12853
12919
|
"rounded-full border-transparent",
|
|
12854
12920
|
issues.length > 0 ? "bg-semantic-error-soft text-semantic-error hover:bg-semantic-error-soft/70" : "bg-semantic-success-soft text-semantic-success"
|
|
12855
12921
|
),
|
|
@@ -12858,9 +12924,9 @@ var PaymentRoutingCanvas = React63.forwardRef(
|
|
|
12858
12924
|
)
|
|
12859
12925
|
] })
|
|
12860
12926
|
] }),
|
|
12861
|
-
/* @__PURE__ */ (0,
|
|
12862
|
-
/* @__PURE__ */ (0,
|
|
12863
|
-
/* @__PURE__ */ (0,
|
|
12927
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: "flex min-h-0 flex-1 items-stretch", children: [
|
|
12928
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: "flex min-h-0 min-w-0 flex-1 flex-col", children: [
|
|
12929
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(
|
|
12864
12930
|
"div",
|
|
12865
12931
|
{
|
|
12866
12932
|
ref: planeRef,
|
|
@@ -12902,7 +12968,7 @@ var PaymentRoutingCanvas = React63.forwardRef(
|
|
|
12902
12968
|
setPan({ x: 0, y: 0 });
|
|
12903
12969
|
}
|
|
12904
12970
|
},
|
|
12905
|
-
className:
|
|
12971
|
+
className: cn55(
|
|
12906
12972
|
"relative min-h-0 min-w-0 flex-1 overflow-hidden bg-canvas",
|
|
12907
12973
|
// Held Cmd / Ctrl over the background means "drag to select".
|
|
12908
12974
|
modifierHeld || marqueeBox ? "cursor-crosshair" : "cursor-grab",
|
|
@@ -12916,8 +12982,8 @@ var PaymentRoutingCanvas = React63.forwardRef(
|
|
|
12916
12982
|
backgroundSize: "16px 16px"
|
|
12917
12983
|
},
|
|
12918
12984
|
children: [
|
|
12919
|
-
/* @__PURE__ */ (0,
|
|
12920
|
-
/* @__PURE__ */ (0,
|
|
12985
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("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` }),
|
|
12986
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(
|
|
12921
12987
|
"div",
|
|
12922
12988
|
{
|
|
12923
12989
|
className: "relative",
|
|
@@ -12937,7 +13003,7 @@ var PaymentRoutingCanvas = React63.forwardRef(
|
|
|
12937
13003
|
const unreachable = issueByNode(to.id).some(
|
|
12938
13004
|
(issue) => issue.kind === "unreachable"
|
|
12939
13005
|
);
|
|
12940
|
-
return /* @__PURE__ */ (0,
|
|
13006
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
12941
13007
|
RoutingEdge,
|
|
12942
13008
|
{
|
|
12943
13009
|
from: portOf(from, "out"),
|
|
@@ -12962,7 +13028,7 @@ var PaymentRoutingCanvas = React63.forwardRef(
|
|
|
12962
13028
|
);
|
|
12963
13029
|
const active = traversed.has(node.id);
|
|
12964
13030
|
const isSelected = selectionSet.has(node.id) || marqueeSet.has(node.id);
|
|
12965
|
-
return /* @__PURE__ */ (0,
|
|
13031
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
12966
13032
|
"div",
|
|
12967
13033
|
{
|
|
12968
13034
|
ref: (element) => {
|
|
@@ -12971,7 +13037,7 @@ var PaymentRoutingCanvas = React63.forwardRef(
|
|
|
12971
13037
|
className: "absolute",
|
|
12972
13038
|
style: { left: node.x, top: node.y, width: NODE_W },
|
|
12973
13039
|
onPointerDown: (event) => beginDrag(event, node),
|
|
12974
|
-
children: /* @__PURE__ */ (0,
|
|
13040
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
12975
13041
|
RoutingNode,
|
|
12976
13042
|
{
|
|
12977
13043
|
type: node.type,
|
|
@@ -13019,12 +13085,12 @@ var PaymentRoutingCanvas = React63.forwardRef(
|
|
|
13019
13085
|
]
|
|
13020
13086
|
}
|
|
13021
13087
|
),
|
|
13022
|
-
/* @__PURE__ */ (0,
|
|
13088
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
13023
13089
|
"div",
|
|
13024
13090
|
{
|
|
13025
13091
|
"aria-hidden": "true",
|
|
13026
13092
|
"data-state": marqueeBox ? "active" : "idle",
|
|
13027
|
-
className:
|
|
13093
|
+
className: cn55(
|
|
13028
13094
|
"pointer-events-none absolute rounded-xs border border-dashed border-primary bg-primary/10",
|
|
13029
13095
|
"transition-opacity duration-150 ease-out",
|
|
13030
13096
|
marqueeBox ? "opacity-100" : "opacity-0"
|
|
@@ -13038,22 +13104,22 @@ var PaymentRoutingCanvas = React63.forwardRef(
|
|
|
13038
13104
|
}
|
|
13039
13105
|
}
|
|
13040
13106
|
),
|
|
13041
|
-
/* @__PURE__ */ (0,
|
|
13107
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("ol", { className: "sr-only", children: graphEdges.map((edge) => {
|
|
13042
13108
|
const from = nodeById.get(edge.from);
|
|
13043
13109
|
const to = nodeById.get(edge.to);
|
|
13044
|
-
return /* @__PURE__ */ (0,
|
|
13110
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("li", { children: `Edge: ${from?.title ?? edge.from} to ${to?.title ?? edge.to}${edge.label ? `, ${edge.label}` : ""}` }, edge.id);
|
|
13045
13111
|
}) })
|
|
13046
13112
|
]
|
|
13047
13113
|
}
|
|
13048
13114
|
),
|
|
13049
|
-
/* @__PURE__ */ (0,
|
|
13050
|
-
/* @__PURE__ */ (0,
|
|
13051
|
-
/* @__PURE__ */ (0,
|
|
13052
|
-
settled ? /* @__PURE__ */ (0,
|
|
13053
|
-
/* @__PURE__ */ (0,
|
|
13115
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: "flex shrink-0 flex-wrap items-center justify-between gap-md border-t border-hairline px-lg py-md", children: [
|
|
13116
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("p", { className: "min-w-0 flex-1 text-caption text-body", children: currentStep ? currentStep.reason : "Replay a sample transaction to watch the path." }),
|
|
13117
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: "flex shrink-0 items-center gap-sm", children: [
|
|
13118
|
+
settled ? /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("span", { className: "inline-flex items-center gap-xs rounded-full bg-semantic-success-soft px-sm py-xxs text-caption text-semantic-success", children: [
|
|
13119
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(Icon, { name: "check", size: 11, strokeWidth: 2 }),
|
|
13054
13120
|
"Settlement"
|
|
13055
13121
|
] }) : null,
|
|
13056
|
-
/* @__PURE__ */ (0,
|
|
13122
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
13057
13123
|
CanvasMinimap,
|
|
13058
13124
|
{
|
|
13059
13125
|
blocks: minimapBlocks,
|
|
@@ -13067,8 +13133,8 @@ var PaymentRoutingCanvas = React63.forwardRef(
|
|
|
13067
13133
|
}
|
|
13068
13134
|
}
|
|
13069
13135
|
),
|
|
13070
|
-
/* @__PURE__ */ (0,
|
|
13071
|
-
/* @__PURE__ */ (0,
|
|
13136
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: "inline-flex items-center gap-xxs rounded-md border border-hairline bg-surface p-xxs shadow-sm", children: [
|
|
13137
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
13072
13138
|
Button,
|
|
13073
13139
|
{
|
|
13074
13140
|
variant: "bare",
|
|
@@ -13076,10 +13142,10 @@ var PaymentRoutingCanvas = React63.forwardRef(
|
|
|
13076
13142
|
"aria-label": "Zoom out",
|
|
13077
13143
|
onClick: () => setZoom((current) => Math.max(current - 0.1, 0.6)),
|
|
13078
13144
|
className: "size-7 rounded-sm text-body hover:bg-surface-soft",
|
|
13079
|
-
children: /* @__PURE__ */ (0,
|
|
13145
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(Icon, { name: "minus", size: 14, strokeWidth: 2 })
|
|
13080
13146
|
}
|
|
13081
13147
|
),
|
|
13082
|
-
/* @__PURE__ */ (0,
|
|
13148
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
13083
13149
|
Button,
|
|
13084
13150
|
{
|
|
13085
13151
|
variant: "bare",
|
|
@@ -13087,10 +13153,10 @@ var PaymentRoutingCanvas = React63.forwardRef(
|
|
|
13087
13153
|
"aria-label": "Zoom in",
|
|
13088
13154
|
onClick: () => setZoom((current) => Math.min(current + 0.1, 1.6)),
|
|
13089
13155
|
className: "size-7 rounded-sm text-body hover:bg-surface-soft",
|
|
13090
|
-
children: /* @__PURE__ */ (0,
|
|
13156
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(Icon, { name: "plus", size: 14, strokeWidth: 2 })
|
|
13091
13157
|
}
|
|
13092
13158
|
),
|
|
13093
|
-
/* @__PURE__ */ (0,
|
|
13159
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
13094
13160
|
Button,
|
|
13095
13161
|
{
|
|
13096
13162
|
variant: "bare",
|
|
@@ -13101,19 +13167,19 @@ var PaymentRoutingCanvas = React63.forwardRef(
|
|
|
13101
13167
|
setPan({ x: 0, y: 0 });
|
|
13102
13168
|
},
|
|
13103
13169
|
className: "size-7 rounded-sm text-body hover:bg-surface-soft",
|
|
13104
|
-
children: /* @__PURE__ */ (0,
|
|
13170
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(Icon, { name: "layers", size: 14, strokeWidth: 2 })
|
|
13105
13171
|
}
|
|
13106
13172
|
)
|
|
13107
13173
|
] })
|
|
13108
13174
|
] })
|
|
13109
13175
|
] })
|
|
13110
13176
|
] }),
|
|
13111
|
-
/* @__PURE__ */ (0,
|
|
13177
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
13112
13178
|
"div",
|
|
13113
13179
|
{
|
|
13114
13180
|
className: "flex min-h-0 shrink-0 flex-col self-stretch border-l border-hairline",
|
|
13115
13181
|
style: { width: PANEL_W },
|
|
13116
|
-
children: /* @__PURE__ */ (0,
|
|
13182
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
13117
13183
|
NodeConfigPanel,
|
|
13118
13184
|
{
|
|
13119
13185
|
open: panelOpen,
|
|
@@ -13133,7 +13199,7 @@ var PaymentRoutingCanvas = React63.forwardRef(
|
|
|
13133
13199
|
)
|
|
13134
13200
|
] }),
|
|
13135
13201
|
ReactDOM10.createPortal(
|
|
13136
|
-
/* @__PURE__ */ (0,
|
|
13202
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(
|
|
13137
13203
|
"div",
|
|
13138
13204
|
{
|
|
13139
13205
|
id: "routing-validation-summary",
|
|
@@ -13147,27 +13213,27 @@ var PaymentRoutingCanvas = React63.forwardRef(
|
|
|
13147
13213
|
right: anchor.right,
|
|
13148
13214
|
zIndex: "var(--z-popover, 1300)"
|
|
13149
13215
|
},
|
|
13150
|
-
className:
|
|
13216
|
+
className: cn55(
|
|
13151
13217
|
"w-80 origin-top rounded-md border border-hairline bg-surface shadow-modal",
|
|
13152
13218
|
"transition duration-200 ease-out",
|
|
13153
13219
|
issuesOpen ? "pointer-events-auto translate-y-0 scale-100 opacity-100" : "pointer-events-none -translate-y-1 scale-95 opacity-0"
|
|
13154
13220
|
),
|
|
13155
13221
|
children: [
|
|
13156
|
-
/* @__PURE__ */ (0,
|
|
13157
|
-
/* @__PURE__ */ (0,
|
|
13158
|
-
/* @__PURE__ */ (0,
|
|
13222
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("p", { className: "border-b border-hairline-soft px-md py-sm text-micro-cap text-muted", children: "Validation" }),
|
|
13223
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("ul", { className: "max-h-64 overflow-y-auto overscroll-contain p-xs", children: issues.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("li", { className: "px-sm py-sm text-caption text-muted", children: "Every rule resolves to a processor." }) : issues.map((issue) => /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: "flex items-start gap-sm rounded-sm px-sm py-sm hover:bg-surface-soft", children: [
|
|
13224
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
13159
13225
|
Icon,
|
|
13160
13226
|
{
|
|
13161
13227
|
name: "triangle",
|
|
13162
13228
|
size: 12,
|
|
13163
13229
|
strokeWidth: 2,
|
|
13164
|
-
className:
|
|
13230
|
+
className: cn55(
|
|
13165
13231
|
"mt-xxs shrink-0",
|
|
13166
13232
|
issue.kind === "conflict" ? "text-semantic-error" : "text-semantic-warning"
|
|
13167
13233
|
)
|
|
13168
13234
|
}
|
|
13169
13235
|
),
|
|
13170
|
-
/* @__PURE__ */ (0,
|
|
13236
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("span", { className: "min-w-0 text-caption text-body", children: issue.message })
|
|
13171
13237
|
] }) }, issue.id)) })
|
|
13172
13238
|
]
|
|
13173
13239
|
}
|
|
@@ -13182,11 +13248,11 @@ var PaymentRoutingCanvas = React63.forwardRef(
|
|
|
13182
13248
|
PaymentRoutingCanvas.displayName = "PaymentRoutingCanvas";
|
|
13183
13249
|
|
|
13184
13250
|
// virtual-pkg:src/atoms/PricingTable/PricingTable.tsx
|
|
13185
|
-
var
|
|
13251
|
+
var React67 = __toESM(require("react"));
|
|
13186
13252
|
|
|
13187
13253
|
// virtual-pkg:src/atoms/PricingTableDesktop/PricingTableDesktop.tsx
|
|
13188
|
-
var
|
|
13189
|
-
var
|
|
13254
|
+
var React65 = __toESM(require("react"));
|
|
13255
|
+
var import_jsx_runtime65 = require("react/jsx-runtime");
|
|
13190
13256
|
var DEFAULT_TIERS = [
|
|
13191
13257
|
{
|
|
13192
13258
|
id: "starter",
|
|
@@ -13242,8 +13308,8 @@ var DEFAULT_TIERS = [
|
|
|
13242
13308
|
}
|
|
13243
13309
|
];
|
|
13244
13310
|
var TABULAR = { fontFeatureSettings: '"tnum"' };
|
|
13245
|
-
var
|
|
13246
|
-
var PricingTableDesktop =
|
|
13311
|
+
var cn56 = (...values) => values.filter(Boolean).join(" ");
|
|
13312
|
+
var PricingTableDesktop = React65.forwardRef(
|
|
13247
13313
|
({
|
|
13248
13314
|
title = "Pricing table",
|
|
13249
13315
|
subtitle,
|
|
@@ -13252,60 +13318,60 @@ var PricingTableDesktop = React64.forwardRef(
|
|
|
13252
13318
|
className,
|
|
13253
13319
|
...rest
|
|
13254
13320
|
}, ref) => {
|
|
13255
|
-
const headingId =
|
|
13256
|
-
return /* @__PURE__ */ (0,
|
|
13321
|
+
const headingId = React65.useId();
|
|
13322
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(
|
|
13257
13323
|
"section",
|
|
13258
13324
|
{
|
|
13259
13325
|
ref,
|
|
13260
13326
|
"aria-labelledby": headingId,
|
|
13261
|
-
className:
|
|
13327
|
+
className: cn56("w-full bg-canvas px-base py-xl", className),
|
|
13262
13328
|
...rest,
|
|
13263
13329
|
children: [
|
|
13264
|
-
/* @__PURE__ */ (0,
|
|
13265
|
-
/* @__PURE__ */ (0,
|
|
13266
|
-
subtitle ? /* @__PURE__ */ (0,
|
|
13330
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex w-full flex-col gap-sm px-sm pb-lg", children: [
|
|
13331
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("h2", { id: headingId, className: "text-display-lg text-ink", children: title }),
|
|
13332
|
+
subtitle ? /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("p", { className: "text-body-md text-muted", children: subtitle }) : null
|
|
13267
13333
|
] }),
|
|
13268
|
-
/* @__PURE__ */ (0,
|
|
13334
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "w-full rounded-xl bg-surface-soft p-base lg:p-xl", children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("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) => {
|
|
13269
13335
|
const featured = Boolean(tier.featured);
|
|
13270
13336
|
const tierHeadingId = `${headingId}-${tier.id}`;
|
|
13271
|
-
return /* @__PURE__ */ (0,
|
|
13337
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(
|
|
13272
13338
|
"article",
|
|
13273
13339
|
{
|
|
13274
13340
|
"aria-labelledby": tierHeadingId,
|
|
13275
13341
|
"data-featured": featured ? "true" : void 0,
|
|
13276
|
-
className:
|
|
13342
|
+
className: cn56(
|
|
13277
13343
|
"flex h-full flex-col rounded-lg border p-lg transition duration-200 ease-out md:col-span-3",
|
|
13278
13344
|
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"
|
|
13279
13345
|
),
|
|
13280
13346
|
children: [
|
|
13281
|
-
tier.badge ? /* @__PURE__ */ (0,
|
|
13282
|
-
/* @__PURE__ */ (0,
|
|
13347
|
+
tier.badge ? /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "mb-md flex", children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Badge, { variant: "soft", tone: "info", size: "sm", children: tier.badge }) }) : null,
|
|
13348
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
13283
13349
|
"h3",
|
|
13284
13350
|
{
|
|
13285
13351
|
id: tierHeadingId,
|
|
13286
|
-
className:
|
|
13352
|
+
className: cn56(
|
|
13287
13353
|
"text-heading-lg",
|
|
13288
13354
|
featured ? "text-on-primary" : "text-ink"
|
|
13289
13355
|
),
|
|
13290
13356
|
children: tier.name
|
|
13291
13357
|
}
|
|
13292
13358
|
),
|
|
13293
|
-
/* @__PURE__ */ (0,
|
|
13294
|
-
/* @__PURE__ */ (0,
|
|
13359
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("p", { className: "mt-md flex items-baseline gap-sm whitespace-nowrap", children: [
|
|
13360
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
13295
13361
|
"span",
|
|
13296
13362
|
{
|
|
13297
13363
|
style: TABULAR,
|
|
13298
|
-
className:
|
|
13364
|
+
className: cn56(
|
|
13299
13365
|
"text-display-md",
|
|
13300
13366
|
featured ? "text-on-primary" : "text-ink"
|
|
13301
13367
|
),
|
|
13302
13368
|
children: tier.price
|
|
13303
13369
|
}
|
|
13304
13370
|
),
|
|
13305
|
-
tier.period ? /* @__PURE__ */ (0,
|
|
13371
|
+
tier.period ? /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(
|
|
13306
13372
|
"span",
|
|
13307
13373
|
{
|
|
13308
|
-
className:
|
|
13374
|
+
className: cn56(
|
|
13309
13375
|
"text-body-sm",
|
|
13310
13376
|
featured ? "text-on-primary/70" : "text-muted"
|
|
13311
13377
|
),
|
|
@@ -13316,22 +13382,22 @@ var PricingTableDesktop = React64.forwardRef(
|
|
|
13316
13382
|
}
|
|
13317
13383
|
) : null
|
|
13318
13384
|
] }),
|
|
13319
|
-
featured ? /* @__PURE__ */ (0,
|
|
13385
|
+
featured ? /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
13320
13386
|
"div",
|
|
13321
13387
|
{
|
|
13322
13388
|
"aria-hidden": "true",
|
|
13323
13389
|
className: "my-lg h-px w-full bg-on-primary/20"
|
|
13324
13390
|
}
|
|
13325
|
-
) : /* @__PURE__ */ (0,
|
|
13326
|
-
/* @__PURE__ */ (0,
|
|
13391
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Divider, { decorative: true, className: "my-lg" }),
|
|
13392
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("ul", { className: "flex flex-col gap-base", children: tier.features.map((feature) => /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(
|
|
13327
13393
|
"li",
|
|
13328
13394
|
{
|
|
13329
|
-
className:
|
|
13395
|
+
className: cn56(
|
|
13330
13396
|
"flex items-start gap-md text-body-md",
|
|
13331
13397
|
featured ? "text-on-primary" : "text-body"
|
|
13332
13398
|
),
|
|
13333
13399
|
children: [
|
|
13334
|
-
/* @__PURE__ */ (0,
|
|
13400
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
13335
13401
|
Icon,
|
|
13336
13402
|
{
|
|
13337
13403
|
name: "check",
|
|
@@ -13341,13 +13407,13 @@ var PricingTableDesktop = React64.forwardRef(
|
|
|
13341
13407
|
className: "mt-xxs"
|
|
13342
13408
|
}
|
|
13343
13409
|
),
|
|
13344
|
-
/* @__PURE__ */ (0,
|
|
13410
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "min-w-0", children: feature })
|
|
13345
13411
|
]
|
|
13346
13412
|
},
|
|
13347
13413
|
feature
|
|
13348
13414
|
)) }),
|
|
13349
|
-
/* @__PURE__ */ (0,
|
|
13350
|
-
/* @__PURE__ */ (0,
|
|
13415
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "mt-auto flex flex-col gap-sm pt-xl", children: [
|
|
13416
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
13351
13417
|
Button,
|
|
13352
13418
|
{
|
|
13353
13419
|
variant: featured ? "primary" : "outline-brand",
|
|
@@ -13358,7 +13424,7 @@ var PricingTableDesktop = React64.forwardRef(
|
|
|
13358
13424
|
children: tier.primaryAction
|
|
13359
13425
|
}
|
|
13360
13426
|
),
|
|
13361
|
-
tier.secondaryAction ? /* @__PURE__ */ (0,
|
|
13427
|
+
tier.secondaryAction ? /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
13362
13428
|
Button,
|
|
13363
13429
|
{
|
|
13364
13430
|
variant: "inverse-outline",
|
|
@@ -13383,8 +13449,8 @@ var PricingTableDesktop = React64.forwardRef(
|
|
|
13383
13449
|
PricingTableDesktop.displayName = "PricingTableDesktop";
|
|
13384
13450
|
|
|
13385
13451
|
// virtual-pkg:src/atoms/PricingTableMobile/PricingTableMobile.tsx
|
|
13386
|
-
var
|
|
13387
|
-
var
|
|
13452
|
+
var React66 = __toESM(require("react"));
|
|
13453
|
+
var import_jsx_runtime66 = require("react/jsx-runtime");
|
|
13388
13454
|
var DEFAULT_PLANS = [
|
|
13389
13455
|
{ id: "starter", name: "Starter", price: "$0.00", period: "mo" },
|
|
13390
13456
|
{ id: "growth", name: "Growth", price: "$49.00", period: "mo" },
|
|
@@ -13399,8 +13465,8 @@ var DEFAULT_PLANS = [
|
|
|
13399
13465
|
{ id: "enterprise", name: "Enterprise", price: "Custom" }
|
|
13400
13466
|
];
|
|
13401
13467
|
var TABULAR2 = { fontFeatureSettings: '"tnum"' };
|
|
13402
|
-
var
|
|
13403
|
-
var PricingTableMobile =
|
|
13468
|
+
var cn57 = (...values) => values.filter(Boolean).join(" ");
|
|
13469
|
+
var PricingTableMobile = React66.forwardRef(
|
|
13404
13470
|
({
|
|
13405
13471
|
title,
|
|
13406
13472
|
subtitle,
|
|
@@ -13411,19 +13477,19 @@ var PricingTableMobile = React65.forwardRef(
|
|
|
13411
13477
|
className,
|
|
13412
13478
|
...rest
|
|
13413
13479
|
}, ref) => {
|
|
13414
|
-
const headingId =
|
|
13415
|
-
const [innerSelected, setInnerSelected] =
|
|
13480
|
+
const headingId = React66.useId();
|
|
13481
|
+
const [innerSelected, setInnerSelected] = React66.useState(void 0);
|
|
13416
13482
|
const activeId = selectedId ?? innerSelected;
|
|
13417
13483
|
const handleSelect = (planId) => {
|
|
13418
13484
|
setInnerSelected(planId);
|
|
13419
13485
|
onSelect?.(planId);
|
|
13420
13486
|
};
|
|
13421
|
-
return /* @__PURE__ */ (0,
|
|
13422
|
-
title || subtitle ? /* @__PURE__ */ (0,
|
|
13423
|
-
title ? /* @__PURE__ */ (0,
|
|
13424
|
-
subtitle ? /* @__PURE__ */ (0,
|
|
13487
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { ref, className: cn57("w-full", className), ...rest, children: /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "mx-auto flex w-full max-w-md flex-col gap-md", children: [
|
|
13488
|
+
title || subtitle ? /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "flex flex-col gap-xxs px-sm pb-xs", children: [
|
|
13489
|
+
title ? /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("h2", { id: headingId, className: "text-heading-md text-ink", children: title }) : null,
|
|
13490
|
+
subtitle ? /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("p", { className: "text-body-sm text-muted", children: subtitle }) : null
|
|
13425
13491
|
] }) : null,
|
|
13426
|
-
/* @__PURE__ */ (0,
|
|
13492
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
13427
13493
|
"div",
|
|
13428
13494
|
{
|
|
13429
13495
|
role: "group",
|
|
@@ -13433,7 +13499,7 @@ var PricingTableMobile = React65.forwardRef(
|
|
|
13433
13499
|
children: plans.map((plan) => {
|
|
13434
13500
|
const featured = Boolean(plan.featured);
|
|
13435
13501
|
const selected = activeId === plan.id;
|
|
13436
|
-
return /* @__PURE__ */ (0,
|
|
13502
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(
|
|
13437
13503
|
Button,
|
|
13438
13504
|
{
|
|
13439
13505
|
variant: "card-row",
|
|
@@ -13445,36 +13511,36 @@ var PricingTableMobile = React65.forwardRef(
|
|
|
13445
13511
|
onClick: () => handleSelect(plan.id),
|
|
13446
13512
|
className: "group",
|
|
13447
13513
|
children: [
|
|
13448
|
-
/* @__PURE__ */ (0,
|
|
13449
|
-
/* @__PURE__ */ (0,
|
|
13450
|
-
/* @__PURE__ */ (0,
|
|
13514
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("span", { className: "flex min-w-0 flex-1 flex-col gap-xs", children: [
|
|
13515
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("span", { className: "flex min-w-0 items-center gap-sm", children: [
|
|
13516
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
13451
13517
|
"span",
|
|
13452
13518
|
{
|
|
13453
|
-
className:
|
|
13519
|
+
className: cn57(
|
|
13454
13520
|
"truncate text-body-lg",
|
|
13455
13521
|
featured ? "text-on-primary" : "text-body"
|
|
13456
13522
|
),
|
|
13457
13523
|
children: plan.name
|
|
13458
13524
|
}
|
|
13459
13525
|
),
|
|
13460
|
-
plan.badge ? /* @__PURE__ */ (0,
|
|
13526
|
+
plan.badge ? /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Badge, { variant: "soft", tone: "info", size: "sm", children: plan.badge }) : null
|
|
13461
13527
|
] }),
|
|
13462
|
-
/* @__PURE__ */ (0,
|
|
13463
|
-
/* @__PURE__ */ (0,
|
|
13528
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("span", { className: "flex items-baseline gap-xxs whitespace-nowrap", children: [
|
|
13529
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
13464
13530
|
"span",
|
|
13465
13531
|
{
|
|
13466
13532
|
style: TABULAR2,
|
|
13467
|
-
className:
|
|
13533
|
+
className: cn57(
|
|
13468
13534
|
"text-display-lg",
|
|
13469
13535
|
featured ? "text-on-primary" : "text-ink"
|
|
13470
13536
|
),
|
|
13471
13537
|
children: plan.price
|
|
13472
13538
|
}
|
|
13473
13539
|
),
|
|
13474
|
-
plan.period ? /* @__PURE__ */ (0,
|
|
13540
|
+
plan.period ? /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(
|
|
13475
13541
|
"span",
|
|
13476
13542
|
{
|
|
13477
|
-
className:
|
|
13543
|
+
className: cn57(
|
|
13478
13544
|
"text-heading-md",
|
|
13479
13545
|
featured ? "text-on-primary/85" : "text-body"
|
|
13480
13546
|
),
|
|
@@ -13486,7 +13552,7 @@ var PricingTableMobile = React65.forwardRef(
|
|
|
13486
13552
|
) : null
|
|
13487
13553
|
] })
|
|
13488
13554
|
] }),
|
|
13489
|
-
/* @__PURE__ */ (0,
|
|
13555
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
13490
13556
|
Icon,
|
|
13491
13557
|
{
|
|
13492
13558
|
name: "chevron-right",
|
|
@@ -13509,7 +13575,7 @@ var PricingTableMobile = React65.forwardRef(
|
|
|
13509
13575
|
PricingTableMobile.displayName = "PricingTableMobile";
|
|
13510
13576
|
|
|
13511
13577
|
// virtual-pkg:src/atoms/PricingTable/PricingTable.tsx
|
|
13512
|
-
var
|
|
13578
|
+
var import_jsx_runtime67 = require("react/jsx-runtime");
|
|
13513
13579
|
var DEFAULT_TIERS2 = [
|
|
13514
13580
|
{
|
|
13515
13581
|
id: "starter",
|
|
@@ -13546,7 +13612,7 @@ var DEFAULT_TIERS2 = [
|
|
|
13546
13612
|
primaryAction: "Contact sales"
|
|
13547
13613
|
}
|
|
13548
13614
|
];
|
|
13549
|
-
var
|
|
13615
|
+
var cn58 = (...values) => values.filter(Boolean).join(" ");
|
|
13550
13616
|
var toPlan = (tier) => ({
|
|
13551
13617
|
id: tier.id,
|
|
13552
13618
|
name: tier.name,
|
|
@@ -13555,7 +13621,7 @@ var toPlan = (tier) => ({
|
|
|
13555
13621
|
badge: tier.badge,
|
|
13556
13622
|
featured: tier.featured
|
|
13557
13623
|
});
|
|
13558
|
-
var PricingTable =
|
|
13624
|
+
var PricingTable = React67.forwardRef(
|
|
13559
13625
|
({
|
|
13560
13626
|
title = "Pricing table",
|
|
13561
13627
|
subtitle,
|
|
@@ -13570,12 +13636,12 @@ var PricingTable = React66.forwardRef(
|
|
|
13570
13636
|
className,
|
|
13571
13637
|
...rest
|
|
13572
13638
|
}, ref) => {
|
|
13573
|
-
const derivedPlans =
|
|
13639
|
+
const derivedPlans = React67.useMemo(
|
|
13574
13640
|
() => plans ?? tiers.map(toPlan),
|
|
13575
13641
|
[plans, tiers]
|
|
13576
13642
|
);
|
|
13577
|
-
return /* @__PURE__ */ (0,
|
|
13578
|
-
/* @__PURE__ */ (0,
|
|
13643
|
+
return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("div", { ref, className: cn58("w-full", className), ...rest, children: [
|
|
13644
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)("div", { className: cn58("hidden w-full md:block", desktopClassName), children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
13579
13645
|
PricingTableDesktop,
|
|
13580
13646
|
{
|
|
13581
13647
|
title,
|
|
@@ -13584,7 +13650,7 @@ var PricingTable = React66.forwardRef(
|
|
|
13584
13650
|
onAction
|
|
13585
13651
|
}
|
|
13586
13652
|
) }),
|
|
13587
|
-
/* @__PURE__ */ (0,
|
|
13653
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)("div", { className: cn58("w-full md:hidden", mobileClassName), children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
13588
13654
|
PricingTableMobile,
|
|
13589
13655
|
{
|
|
13590
13656
|
title,
|
|
@@ -13601,10 +13667,10 @@ var PricingTable = React66.forwardRef(
|
|
|
13601
13667
|
PricingTable.displayName = "PricingTable";
|
|
13602
13668
|
|
|
13603
13669
|
// virtual-pkg:src/atoms/ProductCard/ProductCard.tsx
|
|
13604
|
-
var
|
|
13605
|
-
var
|
|
13606
|
-
var
|
|
13607
|
-
var ProductCard =
|
|
13670
|
+
var React68 = __toESM(require("react"));
|
|
13671
|
+
var import_jsx_runtime68 = require("react/jsx-runtime");
|
|
13672
|
+
var cn59 = (...values) => values.filter(Boolean).join(" ");
|
|
13673
|
+
var ProductCard = React68.forwardRef(
|
|
13608
13674
|
({
|
|
13609
13675
|
title = "Payment link \u2014 Standard",
|
|
13610
13676
|
status = "Live mode",
|
|
@@ -13619,13 +13685,13 @@ var ProductCard = React67.forwardRef(
|
|
|
13619
13685
|
className,
|
|
13620
13686
|
...rest
|
|
13621
13687
|
}, ref) => {
|
|
13622
|
-
const titleId =
|
|
13623
|
-
return /* @__PURE__ */ (0,
|
|
13688
|
+
const titleId = React68.useId();
|
|
13689
|
+
return /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(
|
|
13624
13690
|
"article",
|
|
13625
13691
|
{
|
|
13626
13692
|
ref,
|
|
13627
13693
|
"aria-labelledby": titleId,
|
|
13628
|
-
className:
|
|
13694
|
+
className: cn59(
|
|
13629
13695
|
"flex w-full flex-col rounded-lg border bg-surface p-xl",
|
|
13630
13696
|
"transition duration-200 ease-out",
|
|
13631
13697
|
elevated ? "border-hairline-strong shadow-md" : "border-hairline shadow-card",
|
|
@@ -13633,14 +13699,14 @@ var ProductCard = React67.forwardRef(
|
|
|
13633
13699
|
),
|
|
13634
13700
|
...rest,
|
|
13635
13701
|
children: [
|
|
13636
|
-
/* @__PURE__ */ (0,
|
|
13702
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
13637
13703
|
"div",
|
|
13638
13704
|
{
|
|
13639
13705
|
"aria-hidden": "true",
|
|
13640
13706
|
className: "rounded-md bg-gradient-to-b from-surface-soft to-surface-strong p-md",
|
|
13641
|
-
children: /* @__PURE__ */ (0,
|
|
13642
|
-
/* @__PURE__ */ (0,
|
|
13643
|
-
/* @__PURE__ */ (0,
|
|
13707
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { className: "rounded-sm border border-hairline-soft bg-surface p-md shadow-sm", children: [
|
|
13708
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { className: "flex items-center gap-sm", children: [
|
|
13709
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
13644
13710
|
Icon,
|
|
13645
13711
|
{
|
|
13646
13712
|
name: icon,
|
|
@@ -13649,24 +13715,24 @@ var ProductCard = React67.forwardRef(
|
|
|
13649
13715
|
className: "text-primary"
|
|
13650
13716
|
}
|
|
13651
13717
|
),
|
|
13652
|
-
/* @__PURE__ */ (0,
|
|
13718
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: "min-w-0 truncate text-body-sm text-ink", children: mockupLabel })
|
|
13653
13719
|
] }),
|
|
13654
|
-
/* @__PURE__ */ (0,
|
|
13655
|
-
/* @__PURE__ */ (0,
|
|
13656
|
-
/* @__PURE__ */ (0,
|
|
13657
|
-
/* @__PURE__ */ (0,
|
|
13720
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { className: "mt-md flex flex-col gap-sm", children: [
|
|
13721
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: "h-2 w-full rounded-full bg-skeleton" }),
|
|
13722
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: "h-2 w-4/5 rounded-full bg-skeleton" }),
|
|
13723
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: "h-2 w-1/2 rounded-full bg-skeleton" })
|
|
13658
13724
|
] }),
|
|
13659
|
-
/* @__PURE__ */ (0,
|
|
13725
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: "mt-md block h-5 w-full rounded-full bg-primary" })
|
|
13660
13726
|
] })
|
|
13661
13727
|
}
|
|
13662
13728
|
),
|
|
13663
|
-
/* @__PURE__ */ (0,
|
|
13664
|
-
/* @__PURE__ */ (0,
|
|
13665
|
-
/* @__PURE__ */ (0,
|
|
13666
|
-
/* @__PURE__ */ (0,
|
|
13667
|
-
period ? /* @__PURE__ */ (0,
|
|
13729
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("h3", { id: titleId, className: "mt-lg text-heading-lg text-ink text-balance", children: title }),
|
|
13730
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("div", { className: "mt-md", children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(Badge, { variant: "soft", tone: "info", size: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: "text-micro-cap", children: status }) }) }),
|
|
13731
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("p", { className: "mt-md flex flex-wrap items-baseline gap-sm", children: [
|
|
13732
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: "text-display-md text-ink tabular-nums", children: amount }),
|
|
13733
|
+
period ? /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: "text-body-lg text-muted", children: period }) : null
|
|
13668
13734
|
] }),
|
|
13669
|
-
/* @__PURE__ */ (0,
|
|
13735
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("div", { className: "mt-auto pt-xl", children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
13670
13736
|
Button,
|
|
13671
13737
|
{
|
|
13672
13738
|
variant: "primary",
|
|
@@ -13685,9 +13751,9 @@ var ProductCard = React67.forwardRef(
|
|
|
13685
13751
|
ProductCard.displayName = "ProductCard";
|
|
13686
13752
|
|
|
13687
13753
|
// virtual-pkg:src/atoms/ProductCardGrid/ProductCardGrid.tsx
|
|
13688
|
-
var
|
|
13689
|
-
var
|
|
13690
|
-
var
|
|
13754
|
+
var React69 = __toESM(require("react"));
|
|
13755
|
+
var import_jsx_runtime69 = require("react/jsx-runtime");
|
|
13756
|
+
var cn60 = (...values) => values.filter(Boolean).join(" ");
|
|
13691
13757
|
var DEFAULT_ITEMS5 = [
|
|
13692
13758
|
{
|
|
13693
13759
|
id: "standard",
|
|
@@ -13714,7 +13780,7 @@ var DEFAULT_ITEMS5 = [
|
|
|
13714
13780
|
icon: "layers"
|
|
13715
13781
|
}
|
|
13716
13782
|
];
|
|
13717
|
-
var ProductCardGrid =
|
|
13783
|
+
var ProductCardGrid = React69.forwardRef(
|
|
13718
13784
|
({
|
|
13719
13785
|
heading = "Product card grid",
|
|
13720
13786
|
description,
|
|
@@ -13725,27 +13791,27 @@ var ProductCardGrid = React68.forwardRef(
|
|
|
13725
13791
|
className,
|
|
13726
13792
|
...rest
|
|
13727
13793
|
}, ref) => {
|
|
13728
|
-
const [internalSelected, setInternalSelected] =
|
|
13794
|
+
const [internalSelected, setInternalSelected] = React69.useState(defaultSelectedId);
|
|
13729
13795
|
const isControlled = selectedId !== void 0;
|
|
13730
13796
|
const activeId = isControlled ? selectedId : internalSelected;
|
|
13731
|
-
const headingId =
|
|
13797
|
+
const headingId = React69.useId();
|
|
13732
13798
|
const handleSelect = (id) => {
|
|
13733
13799
|
if (!isControlled) setInternalSelected(id);
|
|
13734
13800
|
onSelect?.(id);
|
|
13735
13801
|
};
|
|
13736
|
-
return /* @__PURE__ */ (0,
|
|
13802
|
+
return /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(
|
|
13737
13803
|
"section",
|
|
13738
13804
|
{
|
|
13739
13805
|
ref,
|
|
13740
13806
|
"aria-labelledby": headingId,
|
|
13741
|
-
className:
|
|
13807
|
+
className: cn60("w-full rounded-lg", className),
|
|
13742
13808
|
...rest,
|
|
13743
13809
|
children: [
|
|
13744
|
-
/* @__PURE__ */ (0,
|
|
13745
|
-
description ? /* @__PURE__ */ (0,
|
|
13746
|
-
/* @__PURE__ */ (0,
|
|
13810
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("h2", { id: headingId, className: "text-display-lg text-ink", children: heading }),
|
|
13811
|
+
description ? /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("p", { className: "mt-sm max-w-2xl text-body-lg text-muted", children: description }) : null,
|
|
13812
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { className: "mt-xl grid grid-cols-1 gap-gutter sm:grid-cols-2 md:grid-cols-3", children: items.map((item) => {
|
|
13747
13813
|
const { id, className: itemClassName, ...cardProps } = item;
|
|
13748
|
-
return /* @__PURE__ */ (0,
|
|
13814
|
+
return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
13749
13815
|
ProductCard,
|
|
13750
13816
|
{
|
|
13751
13817
|
...cardProps,
|
|
@@ -13767,9 +13833,9 @@ var ProductCardGrid = React68.forwardRef(
|
|
|
13767
13833
|
ProductCardGrid.displayName = "ProductCardGrid";
|
|
13768
13834
|
|
|
13769
13835
|
// virtual-pkg:src/atoms/ProgressBar/ProgressBar.tsx
|
|
13770
|
-
var
|
|
13771
|
-
var
|
|
13772
|
-
var
|
|
13836
|
+
var React70 = __toESM(require("react"));
|
|
13837
|
+
var import_jsx_runtime70 = require("react/jsx-runtime");
|
|
13838
|
+
var cn61 = (...values) => values.filter(Boolean).join(" ");
|
|
13773
13839
|
var STATE_TEXT = {
|
|
13774
13840
|
complete: "complete",
|
|
13775
13841
|
current: "current step",
|
|
@@ -13809,7 +13875,7 @@ var segmentStyles = {
|
|
|
13809
13875
|
neutral: "bg-hairline-strong"
|
|
13810
13876
|
};
|
|
13811
13877
|
var tabular3 = { fontVariantNumeric: "tabular-nums" };
|
|
13812
|
-
var ProgressBar =
|
|
13878
|
+
var ProgressBar = React70.forwardRef(
|
|
13813
13879
|
({
|
|
13814
13880
|
variant = "segments",
|
|
13815
13881
|
steps = [],
|
|
@@ -13825,14 +13891,14 @@ var ProgressBar = React69.forwardRef(
|
|
|
13825
13891
|
...rest
|
|
13826
13892
|
}, ref) => {
|
|
13827
13893
|
if (variant === "steps") {
|
|
13828
|
-
return /* @__PURE__ */ (0,
|
|
13894
|
+
return /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(
|
|
13829
13895
|
"div",
|
|
13830
13896
|
{
|
|
13831
13897
|
ref,
|
|
13832
|
-
className:
|
|
13898
|
+
className: cn61("flex w-full items-center gap-lg", className),
|
|
13833
13899
|
...rest,
|
|
13834
13900
|
children: [
|
|
13835
|
-
/* @__PURE__ */ (0,
|
|
13901
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
13836
13902
|
"ol",
|
|
13837
13903
|
{
|
|
13838
13904
|
"aria-label": ariaLabel,
|
|
@@ -13843,42 +13909,42 @@ var ProgressBar = React69.forwardRef(
|
|
|
13843
13909
|
children: steps.map((step, index) => {
|
|
13844
13910
|
const state = step.state ?? "upcoming";
|
|
13845
13911
|
const previous = index > 0 ? steps[index - 1] : void 0;
|
|
13846
|
-
return /* @__PURE__ */ (0,
|
|
13912
|
+
return /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(
|
|
13847
13913
|
"li",
|
|
13848
13914
|
{
|
|
13849
13915
|
"aria-current": state === "current" ? "step" : void 0,
|
|
13850
13916
|
className: "relative flex flex-col items-center",
|
|
13851
13917
|
children: [
|
|
13852
|
-
previous ? /* @__PURE__ */ (0,
|
|
13918
|
+
previous ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
13853
13919
|
"span",
|
|
13854
13920
|
{
|
|
13855
13921
|
"aria-hidden": "true",
|
|
13856
|
-
className:
|
|
13922
|
+
className: cn61(
|
|
13857
13923
|
"absolute left-0 right-1/2 top-3.5 h-0.5 -translate-y-1/2 rounded-full transition-colors duration-200 ease-out",
|
|
13858
13924
|
connectorColor(previous, step)
|
|
13859
13925
|
)
|
|
13860
13926
|
}
|
|
13861
13927
|
) : null,
|
|
13862
|
-
/* @__PURE__ */ (0,
|
|
13863
|
-
state === "current" ? /* @__PURE__ */ (0,
|
|
13928
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("span", { className: "relative z-10 flex size-7 items-center justify-center", children: [
|
|
13929
|
+
state === "current" ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
13864
13930
|
"span",
|
|
13865
13931
|
{
|
|
13866
13932
|
"aria-hidden": "true",
|
|
13867
13933
|
className: "absolute size-6 rounded-full bg-primary/15"
|
|
13868
13934
|
}
|
|
13869
13935
|
) : null,
|
|
13870
|
-
/* @__PURE__ */ (0,
|
|
13936
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("span", { className: cn61(nodeBase, nodeStyles[state]), children: state === "error" ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(Icon, { name: "x", size: 10, tone: "on-dark", strokeWidth: 3 }) : null })
|
|
13871
13937
|
] }),
|
|
13872
|
-
/* @__PURE__ */ (0,
|
|
13938
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(
|
|
13873
13939
|
"span",
|
|
13874
13940
|
{
|
|
13875
|
-
className:
|
|
13941
|
+
className: cn61(
|
|
13876
13942
|
"mt-sm whitespace-nowrap text-center text-body-sm",
|
|
13877
13943
|
labelStyles[state]
|
|
13878
13944
|
),
|
|
13879
13945
|
children: [
|
|
13880
13946
|
step.label,
|
|
13881
|
-
/* @__PURE__ */ (0,
|
|
13947
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("span", { className: "sr-only", children: ` (${STATE_TEXT[state]})` })
|
|
13882
13948
|
]
|
|
13883
13949
|
}
|
|
13884
13950
|
)
|
|
@@ -13889,7 +13955,7 @@ var ProgressBar = React69.forwardRef(
|
|
|
13889
13955
|
})
|
|
13890
13956
|
}
|
|
13891
13957
|
),
|
|
13892
|
-
status ? /* @__PURE__ */ (0,
|
|
13958
|
+
status ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("span", { className: "shrink-0 text-micro-cap uppercase tracking-micro-cap text-muted", children: status }) : null
|
|
13893
13959
|
]
|
|
13894
13960
|
}
|
|
13895
13961
|
);
|
|
@@ -13897,20 +13963,20 @@ var ProgressBar = React69.forwardRef(
|
|
|
13897
13963
|
const safeTotal = total > 0 ? total : 1;
|
|
13898
13964
|
const counted = segments.reduce((sum, segment) => sum + segment.value, 0);
|
|
13899
13965
|
const markerPercent = marker === void 0 ? null : Math.min(100, Math.max(0, marker / safeTotal * 100));
|
|
13900
|
-
return /* @__PURE__ */ (0,
|
|
13901
|
-
valueLabel || valueDetail ? /* @__PURE__ */ (0,
|
|
13966
|
+
return /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { ref, className: cn61("flex w-full flex-col", className), ...rest, children: [
|
|
13967
|
+
valueLabel || valueDetail ? /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(
|
|
13902
13968
|
"div",
|
|
13903
13969
|
{
|
|
13904
13970
|
className: "mb-md flex items-baseline justify-end gap-xs text-right",
|
|
13905
13971
|
style: tabular3,
|
|
13906
13972
|
children: [
|
|
13907
|
-
valueLabel ? /* @__PURE__ */ (0,
|
|
13908
|
-
valueDetail ? /* @__PURE__ */ (0,
|
|
13973
|
+
valueLabel ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("span", { className: "text-body-md text-ink", children: valueLabel }) : null,
|
|
13974
|
+
valueDetail ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("span", { className: "text-body-md text-muted", children: valueDetail }) : null
|
|
13909
13975
|
]
|
|
13910
13976
|
}
|
|
13911
13977
|
) : null,
|
|
13912
|
-
/* @__PURE__ */ (0,
|
|
13913
|
-
/* @__PURE__ */ (0,
|
|
13978
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: "relative", children: [
|
|
13979
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
13914
13980
|
"div",
|
|
13915
13981
|
{
|
|
13916
13982
|
role: "progressbar",
|
|
@@ -13919,11 +13985,11 @@ var ProgressBar = React69.forwardRef(
|
|
|
13919
13985
|
"aria-valuemax": safeTotal,
|
|
13920
13986
|
"aria-valuenow": counted,
|
|
13921
13987
|
className: "flex h-3 w-full overflow-hidden rounded-full bg-surface-strong",
|
|
13922
|
-
children: segments.map((segment, index) => /* @__PURE__ */ (0,
|
|
13988
|
+
children: segments.map((segment, index) => /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
13923
13989
|
"span",
|
|
13924
13990
|
{
|
|
13925
13991
|
"aria-hidden": "true",
|
|
13926
|
-
className:
|
|
13992
|
+
className: cn61(
|
|
13927
13993
|
"h-full transition-[width,background-color] duration-200 ease-out",
|
|
13928
13994
|
segmentStyles[segment.tone ?? "primary"]
|
|
13929
13995
|
),
|
|
@@ -13935,7 +14001,7 @@ var ProgressBar = React69.forwardRef(
|
|
|
13935
14001
|
))
|
|
13936
14002
|
}
|
|
13937
14003
|
),
|
|
13938
|
-
markerPercent !== null ? /* @__PURE__ */ (0,
|
|
14004
|
+
markerPercent !== null ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
13939
14005
|
"span",
|
|
13940
14006
|
{
|
|
13941
14007
|
"aria-hidden": "true",
|
|
@@ -13944,26 +14010,26 @@ var ProgressBar = React69.forwardRef(
|
|
|
13944
14010
|
}
|
|
13945
14011
|
) : null
|
|
13946
14012
|
] }),
|
|
13947
|
-
showLegend && segments.length > 0 ? /* @__PURE__ */ (0,
|
|
14013
|
+
showLegend && segments.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("ul", { className: "mt-lg flex list-none flex-wrap items-center gap-x-xl gap-y-sm p-0", children: segments.map((segment, index) => {
|
|
13948
14014
|
const tone = segment.tone ?? "primary";
|
|
13949
|
-
return /* @__PURE__ */ (0,
|
|
14015
|
+
return /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(
|
|
13950
14016
|
"li",
|
|
13951
14017
|
{
|
|
13952
14018
|
className: "flex items-center gap-sm text-body-sm text-body",
|
|
13953
14019
|
children: [
|
|
13954
|
-
/* @__PURE__ */ (0,
|
|
14020
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
13955
14021
|
"span",
|
|
13956
14022
|
{
|
|
13957
14023
|
"aria-hidden": "true",
|
|
13958
|
-
className:
|
|
14024
|
+
className: cn61(
|
|
13959
14025
|
"size-2.5 shrink-0 rounded-xs",
|
|
13960
14026
|
segmentStyles[tone]
|
|
13961
14027
|
)
|
|
13962
14028
|
}
|
|
13963
14029
|
),
|
|
13964
|
-
/* @__PURE__ */ (0,
|
|
14030
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("span", { children: [
|
|
13965
14031
|
segment.label,
|
|
13966
|
-
/* @__PURE__ */ (0,
|
|
14032
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("span", { className: "ml-xxs text-body", style: tabular3, children: segment.value.toLocaleString("en-US") })
|
|
13967
14033
|
] })
|
|
13968
14034
|
]
|
|
13969
14035
|
},
|
|
@@ -13976,10 +14042,10 @@ var ProgressBar = React69.forwardRef(
|
|
|
13976
14042
|
ProgressBar.displayName = "ProgressBar";
|
|
13977
14043
|
|
|
13978
14044
|
// virtual-pkg:src/atoms/Radio/Radio.tsx
|
|
13979
|
-
var
|
|
13980
|
-
var
|
|
13981
|
-
var
|
|
13982
|
-
var Radio =
|
|
14045
|
+
var React71 = __toESM(require("react"));
|
|
14046
|
+
var import_jsx_runtime71 = require("react/jsx-runtime");
|
|
14047
|
+
var cn62 = (...values) => values.filter(Boolean).join(" ");
|
|
14048
|
+
var Radio = React71.forwardRef(
|
|
13983
14049
|
({
|
|
13984
14050
|
label,
|
|
13985
14051
|
description,
|
|
@@ -13995,23 +14061,23 @@ var Radio = React70.forwardRef(
|
|
|
13995
14061
|
className,
|
|
13996
14062
|
...rest
|
|
13997
14063
|
}, ref) => {
|
|
13998
|
-
const [internalChecked, setInternalChecked] =
|
|
14064
|
+
const [internalChecked, setInternalChecked] = React71.useState(defaultChecked);
|
|
13999
14065
|
const isControlled = checked !== void 0;
|
|
14000
14066
|
const isChecked = isControlled ? Boolean(checked) : internalChecked;
|
|
14001
|
-
const generatedId =
|
|
14067
|
+
const generatedId = React71.useId();
|
|
14002
14068
|
const inputId = id ?? `radio-${generatedId}`;
|
|
14003
14069
|
const isCard = chrome === "card";
|
|
14004
14070
|
const handleChange = (event) => {
|
|
14005
14071
|
if (!isControlled) setInternalChecked(event.target.checked);
|
|
14006
14072
|
onChange?.(event.target.value, event);
|
|
14007
14073
|
};
|
|
14008
|
-
return /* @__PURE__ */ (0,
|
|
14074
|
+
return /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(
|
|
14009
14075
|
"label",
|
|
14010
14076
|
{
|
|
14011
14077
|
htmlFor: inputId,
|
|
14012
14078
|
"data-state": isChecked ? "selected" : "unselected",
|
|
14013
14079
|
"data-disabled": disabled ? "" : void 0,
|
|
14014
|
-
className:
|
|
14080
|
+
className: cn62(
|
|
14015
14081
|
"group/radio flex items-center gap-md transition duration-200 ease-out",
|
|
14016
14082
|
isCard ? "w-full rounded-lg" : "w-auto",
|
|
14017
14083
|
disabled ? "cursor-not-allowed" : "cursor-pointer",
|
|
@@ -14020,16 +14086,16 @@ var Radio = React70.forwardRef(
|
|
|
14020
14086
|
className
|
|
14021
14087
|
),
|
|
14022
14088
|
children: [
|
|
14023
|
-
/* @__PURE__ */ (0,
|
|
14089
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(
|
|
14024
14090
|
"span",
|
|
14025
14091
|
{
|
|
14026
|
-
className:
|
|
14092
|
+
className: cn62(
|
|
14027
14093
|
"relative flex shrink-0 items-center justify-center rounded-full border-2 bg-canvas transition-colors duration-200 ease-out",
|
|
14028
14094
|
size === "sm" ? "size-4" : "size-5",
|
|
14029
14095
|
disabled ? "border-hairline" : isChecked ? "border-primary" : invalid ? "border-semantic-error" : "border-hairline-strong group-hover/radio:border-primary-focus"
|
|
14030
14096
|
),
|
|
14031
14097
|
children: [
|
|
14032
|
-
/* @__PURE__ */ (0,
|
|
14098
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
14033
14099
|
"input",
|
|
14034
14100
|
{
|
|
14035
14101
|
ref,
|
|
@@ -14044,11 +14110,11 @@ var Radio = React70.forwardRef(
|
|
|
14044
14110
|
...rest
|
|
14045
14111
|
}
|
|
14046
14112
|
),
|
|
14047
|
-
/* @__PURE__ */ (0,
|
|
14113
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
14048
14114
|
"span",
|
|
14049
14115
|
{
|
|
14050
14116
|
"aria-hidden": "true",
|
|
14051
|
-
className:
|
|
14117
|
+
className: cn62(
|
|
14052
14118
|
"rounded-full transition duration-200 ease-out",
|
|
14053
14119
|
size === "sm" ? "size-1.5" : "size-2",
|
|
14054
14120
|
disabled ? "bg-primary-disabled" : isChecked ? "scale-100 bg-primary opacity-100" : "scale-50 opacity-0"
|
|
@@ -14058,21 +14124,21 @@ var Radio = React70.forwardRef(
|
|
|
14058
14124
|
]
|
|
14059
14125
|
}
|
|
14060
14126
|
),
|
|
14061
|
-
label || description ? /* @__PURE__ */ (0,
|
|
14062
|
-
label ? /* @__PURE__ */ (0,
|
|
14127
|
+
label || description ? /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)("span", { className: "flex min-w-0 flex-1 flex-col gap-xxs", children: [
|
|
14128
|
+
label ? /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
14063
14129
|
"span",
|
|
14064
14130
|
{
|
|
14065
|
-
className:
|
|
14131
|
+
className: cn62(
|
|
14066
14132
|
"text-label truncate transition-colors duration-200 ease-out",
|
|
14067
14133
|
disabled ? "text-muted" : isChecked ? "text-ink" : "text-body"
|
|
14068
14134
|
),
|
|
14069
14135
|
children: label
|
|
14070
14136
|
}
|
|
14071
14137
|
) : null,
|
|
14072
|
-
description ? /* @__PURE__ */ (0,
|
|
14138
|
+
description ? /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
14073
14139
|
"span",
|
|
14074
14140
|
{
|
|
14075
|
-
className:
|
|
14141
|
+
className: cn62(
|
|
14076
14142
|
"text-caption truncate transition-colors duration-200 ease-out",
|
|
14077
14143
|
disabled ? "text-muted-soft" : "text-muted"
|
|
14078
14144
|
),
|
|
@@ -14080,11 +14146,11 @@ var Radio = React70.forwardRef(
|
|
|
14080
14146
|
}
|
|
14081
14147
|
) : null
|
|
14082
14148
|
] }) : null,
|
|
14083
|
-
valueLabel ? /* @__PURE__ */ (0,
|
|
14149
|
+
valueLabel ? /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
14084
14150
|
"span",
|
|
14085
14151
|
{
|
|
14086
14152
|
style: { fontVariantNumeric: "tabular-nums" },
|
|
14087
|
-
className:
|
|
14153
|
+
className: cn62(
|
|
14088
14154
|
"shrink-0 text-label transition-colors duration-200 ease-out",
|
|
14089
14155
|
disabled ? "text-muted-soft" : isChecked ? "text-ink" : "text-body"
|
|
14090
14156
|
),
|
|
@@ -14099,9 +14165,9 @@ var Radio = React70.forwardRef(
|
|
|
14099
14165
|
Radio.displayName = "Radio";
|
|
14100
14166
|
|
|
14101
14167
|
// virtual-pkg:src/atoms/Rating/Rating.tsx
|
|
14102
|
-
var
|
|
14103
|
-
var
|
|
14104
|
-
var
|
|
14168
|
+
var React72 = __toESM(require("react"));
|
|
14169
|
+
var import_jsx_runtime72 = require("react/jsx-runtime");
|
|
14170
|
+
var cn63 = (...values) => values.filter(Boolean).join(" ");
|
|
14105
14171
|
var STAR_PX = { sm: 16, md: 20, lg: 30 };
|
|
14106
14172
|
var STAR_GAP = {
|
|
14107
14173
|
sm: "gap-xxs",
|
|
@@ -14116,14 +14182,14 @@ var SCORE_TEXT = {
|
|
|
14116
14182
|
var clamp = (input, min, max) => Math.min(max, Math.max(min, input));
|
|
14117
14183
|
var formatScore = (input, precision) => input.toFixed(Math.max(0, precision));
|
|
14118
14184
|
var tabular4 = { fontVariantNumeric: "tabular-nums" };
|
|
14119
|
-
var StarGlyph = ({ fill, px }) => /* @__PURE__ */ (0,
|
|
14185
|
+
var StarGlyph = ({ fill, px }) => /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)(
|
|
14120
14186
|
"span",
|
|
14121
14187
|
{
|
|
14122
14188
|
"aria-hidden": "true",
|
|
14123
14189
|
className: "relative inline-flex shrink-0",
|
|
14124
14190
|
style: { width: px, height: px },
|
|
14125
14191
|
children: [
|
|
14126
|
-
/* @__PURE__ */ (0,
|
|
14192
|
+
/* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
|
|
14127
14193
|
Icon,
|
|
14128
14194
|
{
|
|
14129
14195
|
name: "star",
|
|
@@ -14132,12 +14198,12 @@ var StarGlyph = ({ fill, px }) => /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)
|
|
|
14132
14198
|
style: { color: "var(--color-hairline-strong)" }
|
|
14133
14199
|
}
|
|
14134
14200
|
),
|
|
14135
|
-
/* @__PURE__ */ (0,
|
|
14201
|
+
/* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
|
|
14136
14202
|
"span",
|
|
14137
14203
|
{
|
|
14138
14204
|
className: "absolute inset-y-0 left-0 overflow-hidden transition-[width] duration-200 ease-out",
|
|
14139
14205
|
style: { width: `${fill * 100}%` },
|
|
14140
|
-
children: /* @__PURE__ */ (0,
|
|
14206
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
|
|
14141
14207
|
Icon,
|
|
14142
14208
|
{
|
|
14143
14209
|
name: "star",
|
|
@@ -14152,7 +14218,7 @@ var StarGlyph = ({ fill, px }) => /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)
|
|
|
14152
14218
|
]
|
|
14153
14219
|
}
|
|
14154
14220
|
);
|
|
14155
|
-
var Rating =
|
|
14221
|
+
var Rating = React72.forwardRef(
|
|
14156
14222
|
({
|
|
14157
14223
|
value,
|
|
14158
14224
|
defaultValue,
|
|
@@ -14172,10 +14238,10 @@ var Rating = React71.forwardRef(
|
|
|
14172
14238
|
className,
|
|
14173
14239
|
...rest
|
|
14174
14240
|
}, ref) => {
|
|
14175
|
-
const [uncontrolled, setUncontrolled] =
|
|
14241
|
+
const [uncontrolled, setUncontrolled] = React72.useState(
|
|
14176
14242
|
defaultValue ?? value ?? 0
|
|
14177
14243
|
);
|
|
14178
|
-
const [hover, setHover] =
|
|
14244
|
+
const [hover, setHover] = React72.useState(null);
|
|
14179
14245
|
const isControlled = value !== void 0;
|
|
14180
14246
|
const committed = clamp(isControlled ? value : uncontrolled, 0, max);
|
|
14181
14247
|
const interactive = !readOnly;
|
|
@@ -14214,10 +14280,10 @@ var Rating = React71.forwardRef(
|
|
|
14214
14280
|
commit(next);
|
|
14215
14281
|
};
|
|
14216
14282
|
const px = STAR_PX[size];
|
|
14217
|
-
const starRow = /* @__PURE__ */ (0,
|
|
14283
|
+
const starRow = /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
|
|
14218
14284
|
"div",
|
|
14219
14285
|
{
|
|
14220
|
-
className:
|
|
14286
|
+
className: cn63("inline-flex items-center", STAR_GAP[size]),
|
|
14221
14287
|
...interactive ? {
|
|
14222
14288
|
role: "radiogroup",
|
|
14223
14289
|
"aria-label": label,
|
|
@@ -14232,9 +14298,9 @@ var Rating = React71.forwardRef(
|
|
|
14232
14298
|
children: Array.from({ length: Math.max(1, max) }, (_, index) => {
|
|
14233
14299
|
const fill = clamp(shown - index, 0, 1);
|
|
14234
14300
|
if (!interactive) {
|
|
14235
|
-
return /* @__PURE__ */ (0,
|
|
14301
|
+
return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(StarGlyph, { fill, px }, index);
|
|
14236
14302
|
}
|
|
14237
|
-
return /* @__PURE__ */ (0,
|
|
14303
|
+
return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
|
|
14238
14304
|
Button,
|
|
14239
14305
|
{
|
|
14240
14306
|
variant: "bare",
|
|
@@ -14247,43 +14313,43 @@ var Rating = React71.forwardRef(
|
|
|
14247
14313
|
onMouseEnter: () => setHover(index + 1),
|
|
14248
14314
|
onFocus: () => setHover(index + 1),
|
|
14249
14315
|
className: "text-primary focus-visible:ring-focus-blue focus-visible:ring-offset-0",
|
|
14250
|
-
children: /* @__PURE__ */ (0,
|
|
14316
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(StarGlyph, { fill, px })
|
|
14251
14317
|
},
|
|
14252
14318
|
index
|
|
14253
14319
|
);
|
|
14254
14320
|
})
|
|
14255
14321
|
}
|
|
14256
14322
|
);
|
|
14257
|
-
const scoreBlock = showValue || typeof count === "number" ? /* @__PURE__ */ (0,
|
|
14258
|
-
showValue ? /* @__PURE__ */ (0,
|
|
14323
|
+
const scoreBlock = showValue || typeof count === "number" ? /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)("div", { className: "flex flex-wrap items-baseline gap-sm", style: tabular4, children: [
|
|
14324
|
+
showValue ? /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
|
|
14259
14325
|
"span",
|
|
14260
14326
|
{
|
|
14261
14327
|
"aria-hidden": "true",
|
|
14262
|
-
className:
|
|
14328
|
+
className: cn63("text-ink", SCORE_TEXT[size]),
|
|
14263
14329
|
children: formatScore(shown, precision)
|
|
14264
14330
|
}
|
|
14265
14331
|
) : null,
|
|
14266
|
-
typeof count === "number" ? /* @__PURE__ */ (0,
|
|
14332
|
+
typeof count === "number" ? /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)("span", { "aria-hidden": "true", className: "text-body-sm text-muted", children: [
|
|
14267
14333
|
"(",
|
|
14268
14334
|
count.toLocaleString("en-US"),
|
|
14269
14335
|
")"
|
|
14270
14336
|
] }) : null
|
|
14271
14337
|
] }) : null;
|
|
14272
|
-
return /* @__PURE__ */ (0,
|
|
14338
|
+
return /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)(
|
|
14273
14339
|
"div",
|
|
14274
14340
|
{
|
|
14275
14341
|
ref,
|
|
14276
|
-
className:
|
|
14342
|
+
className: cn63("flex w-full flex-col items-start", className),
|
|
14277
14343
|
...rest,
|
|
14278
14344
|
children: [
|
|
14279
|
-
interactive ? null : /* @__PURE__ */ (0,
|
|
14345
|
+
interactive ? null : /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)("span", { className: "sr-only", children: [
|
|
14280
14346
|
`${formatScore(committed, precision)} out of ${max} stars`,
|
|
14281
14347
|
typeof count === "number" ? ` from ${count.toLocaleString("en-US")} ${countLabel}` : ""
|
|
14282
14348
|
] }),
|
|
14283
|
-
/* @__PURE__ */ (0,
|
|
14349
|
+
/* @__PURE__ */ (0, import_jsx_runtime72.jsxs)(
|
|
14284
14350
|
"div",
|
|
14285
14351
|
{
|
|
14286
|
-
className:
|
|
14352
|
+
className: cn63(
|
|
14287
14353
|
"flex w-full",
|
|
14288
14354
|
valuePlacement === "inline" ? "flex-wrap items-center gap-sm" : "flex-col items-start gap-sm"
|
|
14289
14355
|
),
|
|
@@ -14293,14 +14359,14 @@ var Rating = React71.forwardRef(
|
|
|
14293
14359
|
]
|
|
14294
14360
|
}
|
|
14295
14361
|
),
|
|
14296
|
-
caption ? /* @__PURE__ */ (0,
|
|
14297
|
-
breakdown && breakdown.length > 0 ? /* @__PURE__ */ (0,
|
|
14362
|
+
caption ? /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("p", { className: "mt-xs text-body-sm text-muted", children: caption }) : null,
|
|
14363
|
+
breakdown && breakdown.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("ul", { className: "mt-lg flex w-full list-none flex-col gap-md p-0", children: breakdown.map((item) => /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)(
|
|
14298
14364
|
"li",
|
|
14299
14365
|
{
|
|
14300
14366
|
className: "grid grid-cols-[minmax(0,5.5rem)_minmax(0,1fr)_auto] items-center gap-lg",
|
|
14301
14367
|
children: [
|
|
14302
|
-
/* @__PURE__ */ (0,
|
|
14303
|
-
/* @__PURE__ */ (0,
|
|
14368
|
+
/* @__PURE__ */ (0, import_jsx_runtime72.jsx)("span", { className: "truncate text-body-sm text-ink", children: item.label }),
|
|
14369
|
+
/* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
|
|
14304
14370
|
ProgressBar,
|
|
14305
14371
|
{
|
|
14306
14372
|
ariaLabel: `${item.label}: ${formatScore(clamp(item.value, 0, max), precision)} out of ${max}`,
|
|
@@ -14308,7 +14374,7 @@ var Rating = React71.forwardRef(
|
|
|
14308
14374
|
total: max
|
|
14309
14375
|
}
|
|
14310
14376
|
),
|
|
14311
|
-
/* @__PURE__ */ (0,
|
|
14377
|
+
/* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
|
|
14312
14378
|
"span",
|
|
14313
14379
|
{
|
|
14314
14380
|
className: "text-body-sm text-ink",
|
|
@@ -14328,10 +14394,10 @@ var Rating = React71.forwardRef(
|
|
|
14328
14394
|
Rating.displayName = "Rating";
|
|
14329
14395
|
|
|
14330
14396
|
// virtual-pkg:src/atoms/SearchBar/SearchBar.tsx
|
|
14331
|
-
var
|
|
14332
|
-
var
|
|
14333
|
-
var
|
|
14334
|
-
var SearchBar =
|
|
14397
|
+
var React73 = __toESM(require("react"));
|
|
14398
|
+
var import_jsx_runtime73 = require("react/jsx-runtime");
|
|
14399
|
+
var cn64 = (...values) => values.filter(Boolean).join(" ");
|
|
14400
|
+
var SearchBar = React73.forwardRef(
|
|
14335
14401
|
({
|
|
14336
14402
|
ariaLabel = "Search",
|
|
14337
14403
|
placeholder = "Search payments",
|
|
@@ -14346,7 +14412,7 @@ var SearchBar = React72.forwardRef(
|
|
|
14346
14412
|
className,
|
|
14347
14413
|
...rest
|
|
14348
14414
|
}, ref) => {
|
|
14349
|
-
const [internalQuery, setInternalQuery] =
|
|
14415
|
+
const [internalQuery, setInternalQuery] = React73.useState(
|
|
14350
14416
|
defaultValue ?? ""
|
|
14351
14417
|
);
|
|
14352
14418
|
const query = value !== void 0 ? value : internalQuery;
|
|
@@ -14354,39 +14420,39 @@ var SearchBar = React72.forwardRef(
|
|
|
14354
14420
|
if (value === void 0) setInternalQuery(event.target.value);
|
|
14355
14421
|
onQueryChange?.(event.target.value);
|
|
14356
14422
|
};
|
|
14357
|
-
return /* @__PURE__ */ (0,
|
|
14423
|
+
return /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
|
|
14358
14424
|
"form",
|
|
14359
14425
|
{
|
|
14360
14426
|
role: "search",
|
|
14361
|
-
className:
|
|
14427
|
+
className: cn64("w-full max-w-3xl", className),
|
|
14362
14428
|
onSubmit: (event) => {
|
|
14363
14429
|
event.preventDefault();
|
|
14364
14430
|
if (disabled) return;
|
|
14365
14431
|
onSearch?.(query);
|
|
14366
14432
|
},
|
|
14367
14433
|
...rest,
|
|
14368
|
-
children: /* @__PURE__ */ (0,
|
|
14434
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)(
|
|
14369
14435
|
"div",
|
|
14370
14436
|
{
|
|
14371
|
-
className:
|
|
14437
|
+
className: cn64(
|
|
14372
14438
|
"flex w-full items-center gap-sm rounded-xl border bg-surface py-xxs pl-base pr-xxs",
|
|
14373
14439
|
"transition duration-200 ease-out",
|
|
14374
14440
|
disabled ? "border-hairline-soft bg-surface-soft" : "border-hairline-strong focus-within:border-primary focus-within:ring-2 focus-within:ring-focus-blue/25",
|
|
14375
14441
|
forceFocus && !disabled ? "border-primary ring-2 ring-focus-blue/25" : ""
|
|
14376
14442
|
),
|
|
14377
14443
|
children: [
|
|
14378
|
-
/* @__PURE__ */ (0,
|
|
14444
|
+
/* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
|
|
14379
14445
|
"span",
|
|
14380
14446
|
{
|
|
14381
14447
|
"aria-hidden": "true",
|
|
14382
|
-
className:
|
|
14448
|
+
className: cn64(
|
|
14383
14449
|
"flex shrink-0 items-center pl-xs",
|
|
14384
14450
|
disabled ? "text-muted-soft" : "text-ink"
|
|
14385
14451
|
),
|
|
14386
|
-
children: /* @__PURE__ */ (0,
|
|
14452
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(Icon, { name: "search", size: 20, strokeWidth: 1.75 })
|
|
14387
14453
|
}
|
|
14388
14454
|
),
|
|
14389
|
-
/* @__PURE__ */ (0,
|
|
14455
|
+
/* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
|
|
14390
14456
|
Input,
|
|
14391
14457
|
{
|
|
14392
14458
|
ref,
|
|
@@ -14400,24 +14466,24 @@ var SearchBar = React72.forwardRef(
|
|
|
14400
14466
|
disabled,
|
|
14401
14467
|
autoComplete: "off",
|
|
14402
14468
|
className: "flex-1",
|
|
14403
|
-
inputClassName:
|
|
14469
|
+
inputClassName: cn64(
|
|
14404
14470
|
"text-body-lg placeholder:text-muted",
|
|
14405
14471
|
"[&::-webkit-search-cancel-button]:appearance-none"
|
|
14406
14472
|
)
|
|
14407
14473
|
}
|
|
14408
14474
|
),
|
|
14409
|
-
hint ? /* @__PURE__ */ (0,
|
|
14475
|
+
hint ? /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
|
|
14410
14476
|
"span",
|
|
14411
14477
|
{
|
|
14412
14478
|
"aria-live": "polite",
|
|
14413
|
-
className:
|
|
14479
|
+
className: cn64(
|
|
14414
14480
|
"hidden shrink-0 items-center rounded-xl bg-primary-subdued px-md py-xs",
|
|
14415
14481
|
"text-caption font-weight-label text-primary-on-subdued sm:inline-flex"
|
|
14416
14482
|
),
|
|
14417
14483
|
children: hint
|
|
14418
14484
|
}
|
|
14419
14485
|
) : null,
|
|
14420
|
-
/* @__PURE__ */ (0,
|
|
14486
|
+
/* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
|
|
14421
14487
|
Button,
|
|
14422
14488
|
{
|
|
14423
14489
|
type: "submit",
|
|
@@ -14438,10 +14504,10 @@ var SearchBar = React72.forwardRef(
|
|
|
14438
14504
|
SearchBar.displayName = "SearchBar";
|
|
14439
14505
|
|
|
14440
14506
|
// virtual-pkg:src/atoms/SearchResultsList/SearchResultsList.tsx
|
|
14441
|
-
var
|
|
14442
|
-
var
|
|
14443
|
-
var
|
|
14444
|
-
var SearchResultsList =
|
|
14507
|
+
var React74 = __toESM(require("react"));
|
|
14508
|
+
var import_jsx_runtime74 = require("react/jsx-runtime");
|
|
14509
|
+
var cn65 = (...values) => values.filter(Boolean).join(" ");
|
|
14510
|
+
var SearchResultsList = React74.forwardRef(
|
|
14445
14511
|
({
|
|
14446
14512
|
title = "Search results list",
|
|
14447
14513
|
searchLabel = "Search results",
|
|
@@ -14461,9 +14527,9 @@ var SearchResultsList = React73.forwardRef(
|
|
|
14461
14527
|
className,
|
|
14462
14528
|
...rest
|
|
14463
14529
|
}, ref) => {
|
|
14464
|
-
const [internalQuery, setInternalQuery] =
|
|
14530
|
+
const [internalQuery, setInternalQuery] = React74.useState(defaultQuery);
|
|
14465
14531
|
const currentQuery = query !== void 0 ? query : internalQuery;
|
|
14466
|
-
const [internalFilter, setInternalFilter] =
|
|
14532
|
+
const [internalFilter, setInternalFilter] = React74.useState(
|
|
14467
14533
|
defaultFilter ?? allFilterId
|
|
14468
14534
|
);
|
|
14469
14535
|
const currentFilter = activeFilter !== void 0 ? activeFilter : internalFilter;
|
|
@@ -14479,7 +14545,7 @@ var SearchResultsList = React73.forwardRef(
|
|
|
14479
14545
|
if (activeFilter === void 0) setInternalFilter(filterId);
|
|
14480
14546
|
onFilterChange?.(filterId);
|
|
14481
14547
|
};
|
|
14482
|
-
const visibleItems =
|
|
14548
|
+
const visibleItems = React74.useMemo(() => {
|
|
14483
14549
|
const needle = currentQuery.trim().toLowerCase();
|
|
14484
14550
|
return items.filter((item) => {
|
|
14485
14551
|
const matchesFilter = currentFilter === allFilterId || !item.filter || item.filter === currentFilter;
|
|
@@ -14489,35 +14555,35 @@ var SearchResultsList = React73.forwardRef(
|
|
|
14489
14555
|
});
|
|
14490
14556
|
}, [items, currentQuery, currentFilter, allFilterId]);
|
|
14491
14557
|
const hasQuery = currentQuery.length > 0;
|
|
14492
|
-
return /* @__PURE__ */ (0,
|
|
14558
|
+
return /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)(
|
|
14493
14559
|
"section",
|
|
14494
14560
|
{
|
|
14495
14561
|
ref,
|
|
14496
14562
|
"aria-label": typeof title === "string" ? title : "Search results",
|
|
14497
|
-
className:
|
|
14563
|
+
className: cn65("flex w-full flex-col gap-lg", className),
|
|
14498
14564
|
...rest,
|
|
14499
14565
|
children: [
|
|
14500
|
-
title ? /* @__PURE__ */ (0,
|
|
14501
|
-
/* @__PURE__ */ (0,
|
|
14502
|
-
/* @__PURE__ */ (0,
|
|
14566
|
+
title ? /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("h2", { className: "text-display-lg text-ink", children: title }) : null,
|
|
14567
|
+
/* @__PURE__ */ (0, import_jsx_runtime74.jsxs)("div", { className: "flex flex-col gap-sm md:flex-row md:items-center md:gap-md", children: [
|
|
14568
|
+
/* @__PURE__ */ (0, import_jsx_runtime74.jsxs)(
|
|
14503
14569
|
"div",
|
|
14504
14570
|
{
|
|
14505
|
-
className:
|
|
14571
|
+
className: cn65(
|
|
14506
14572
|
"flex w-full items-center gap-sm rounded-xl border bg-surface px-base py-xxs",
|
|
14507
14573
|
"border-hairline-strong transition duration-200 ease-out",
|
|
14508
14574
|
"focus-within:border-primary focus-within:ring-2 focus-within:ring-focus-blue/25",
|
|
14509
14575
|
"md:min-w-0 md:basis-[46%]"
|
|
14510
14576
|
),
|
|
14511
14577
|
children: [
|
|
14512
|
-
/* @__PURE__ */ (0,
|
|
14578
|
+
/* @__PURE__ */ (0, import_jsx_runtime74.jsx)(
|
|
14513
14579
|
"span",
|
|
14514
14580
|
{
|
|
14515
14581
|
"aria-hidden": "true",
|
|
14516
14582
|
className: "flex shrink-0 items-center text-muted",
|
|
14517
|
-
children: /* @__PURE__ */ (0,
|
|
14583
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Icon, { name: "search", size: 18, strokeWidth: 1.75 })
|
|
14518
14584
|
}
|
|
14519
14585
|
),
|
|
14520
|
-
/* @__PURE__ */ (0,
|
|
14586
|
+
/* @__PURE__ */ (0, import_jsx_runtime74.jsx)(
|
|
14521
14587
|
Input,
|
|
14522
14588
|
{
|
|
14523
14589
|
chrome: "embedded",
|
|
@@ -14528,13 +14594,13 @@ var SearchResultsList = React73.forwardRef(
|
|
|
14528
14594
|
ariaLabel: searchLabel,
|
|
14529
14595
|
autoComplete: "off",
|
|
14530
14596
|
className: "min-w-0 flex-1",
|
|
14531
|
-
inputClassName:
|
|
14597
|
+
inputClassName: cn65(
|
|
14532
14598
|
"text-body-md placeholder:text-muted",
|
|
14533
14599
|
"[&::-webkit-search-cancel-button]:appearance-none"
|
|
14534
14600
|
)
|
|
14535
14601
|
}
|
|
14536
14602
|
),
|
|
14537
|
-
/* @__PURE__ */ (0,
|
|
14603
|
+
/* @__PURE__ */ (0, import_jsx_runtime74.jsx)(
|
|
14538
14604
|
Button,
|
|
14539
14605
|
{
|
|
14540
14606
|
variant: "bare",
|
|
@@ -14542,18 +14608,18 @@ var SearchResultsList = React73.forwardRef(
|
|
|
14542
14608
|
"aria-label": "Clear search",
|
|
14543
14609
|
disabled: !hasQuery,
|
|
14544
14610
|
onClick: handleClear,
|
|
14545
|
-
className:
|
|
14611
|
+
className: cn65(
|
|
14546
14612
|
"text-muted transition duration-200 ease-out",
|
|
14547
14613
|
"hover:bg-surface-soft hover:text-ink",
|
|
14548
14614
|
hasQuery ? "opacity-100" : "pointer-events-none opacity-0"
|
|
14549
14615
|
),
|
|
14550
|
-
leadingIcon: /* @__PURE__ */ (0,
|
|
14616
|
+
leadingIcon: /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Icon, { name: "x", size: 16, strokeWidth: 2 })
|
|
14551
14617
|
}
|
|
14552
14618
|
)
|
|
14553
14619
|
]
|
|
14554
14620
|
}
|
|
14555
14621
|
),
|
|
14556
|
-
filters.length > 0 ? /* @__PURE__ */ (0,
|
|
14622
|
+
filters.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("div", { className: "flex flex-wrap items-center gap-sm md:shrink-0", children: filters.map((filter) => /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(
|
|
14557
14623
|
Chip,
|
|
14558
14624
|
{
|
|
14559
14625
|
appearance: "outline",
|
|
@@ -14565,14 +14631,14 @@ var SearchResultsList = React73.forwardRef(
|
|
|
14565
14631
|
filter.id
|
|
14566
14632
|
)) }) : null
|
|
14567
14633
|
] }),
|
|
14568
|
-
/* @__PURE__ */ (0,
|
|
14634
|
+
/* @__PURE__ */ (0, import_jsx_runtime74.jsxs)("p", { "aria-live": "polite", className: "sr-only", children: [
|
|
14569
14635
|
visibleItems.length,
|
|
14570
14636
|
" results"
|
|
14571
14637
|
] }),
|
|
14572
|
-
/* @__PURE__ */ (0,
|
|
14638
|
+
/* @__PURE__ */ (0, import_jsx_runtime74.jsx)("div", { className: "overflow-hidden rounded-lg border border-hairline bg-canvas shadow-card", children: visibleItems.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("ul", { className: "flex flex-col p-xs", children: visibleItems.map((item, index) => {
|
|
14573
14639
|
const isSelected = item.id === selectedId;
|
|
14574
14640
|
const isSettled = item.statusKind !== "review";
|
|
14575
|
-
return /* @__PURE__ */ (0,
|
|
14641
|
+
return /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("li", { className: "flex", children: /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)(
|
|
14576
14642
|
Button,
|
|
14577
14643
|
{
|
|
14578
14644
|
variant: "row",
|
|
@@ -14580,42 +14646,42 @@ var SearchResultsList = React73.forwardRef(
|
|
|
14580
14646
|
"aria-current": isSelected ? "true" : void 0,
|
|
14581
14647
|
"data-selected": isSelected || void 0,
|
|
14582
14648
|
onClick: () => onSelect?.(item),
|
|
14583
|
-
className:
|
|
14649
|
+
className: cn65(
|
|
14584
14650
|
"py-md",
|
|
14585
14651
|
index > 0 && "border-t border-hairline-soft",
|
|
14586
14652
|
"[&>span:first-child]:w-full [&>span:first-child]:justify-start"
|
|
14587
14653
|
),
|
|
14588
14654
|
children: [
|
|
14589
|
-
/* @__PURE__ */ (0,
|
|
14655
|
+
/* @__PURE__ */ (0, import_jsx_runtime74.jsx)(
|
|
14590
14656
|
"span",
|
|
14591
14657
|
{
|
|
14592
14658
|
"aria-hidden": "true",
|
|
14593
14659
|
className: "flex size-11 shrink-0 items-center justify-center rounded-md border border-hairline bg-canvas text-ink",
|
|
14594
|
-
children: /* @__PURE__ */ (0,
|
|
14660
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Icon, { name: "store", size: 19, strokeWidth: 1.5 })
|
|
14595
14661
|
}
|
|
14596
14662
|
),
|
|
14597
|
-
/* @__PURE__ */ (0,
|
|
14598
|
-
/* @__PURE__ */ (0,
|
|
14599
|
-
/* @__PURE__ */ (0,
|
|
14663
|
+
/* @__PURE__ */ (0, import_jsx_runtime74.jsxs)("span", { className: "flex min-w-0 flex-1 flex-col gap-xxs pl-sm", children: [
|
|
14664
|
+
/* @__PURE__ */ (0, import_jsx_runtime74.jsx)("span", { className: "truncate text-label text-ink", children: item.name }),
|
|
14665
|
+
/* @__PURE__ */ (0, import_jsx_runtime74.jsx)("span", { className: "truncate text-body-sm text-muted", children: item.reference })
|
|
14600
14666
|
] }),
|
|
14601
|
-
/* @__PURE__ */ (0,
|
|
14602
|
-
/* @__PURE__ */ (0,
|
|
14603
|
-
/* @__PURE__ */ (0,
|
|
14667
|
+
/* @__PURE__ */ (0, import_jsx_runtime74.jsx)("span", { className: "hidden w-32 shrink-0 text-body-md text-muted sm:block", children: item.date }),
|
|
14668
|
+
/* @__PURE__ */ (0, import_jsx_runtime74.jsx)("span", { className: "flex w-40 shrink-0 items-center", children: isSettled ? /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)("span", { className: "inline-flex min-w-0 items-center gap-sm text-body-md text-ink", children: [
|
|
14669
|
+
/* @__PURE__ */ (0, import_jsx_runtime74.jsx)(
|
|
14604
14670
|
"span",
|
|
14605
14671
|
{
|
|
14606
14672
|
"aria-hidden": "true",
|
|
14607
14673
|
className: "size-2 shrink-0 rounded-full bg-primary"
|
|
14608
14674
|
}
|
|
14609
14675
|
),
|
|
14610
|
-
/* @__PURE__ */ (0,
|
|
14611
|
-
] }) : /* @__PURE__ */ (0,
|
|
14612
|
-
/* @__PURE__ */ (0,
|
|
14676
|
+
/* @__PURE__ */ (0, import_jsx_runtime74.jsx)("span", { className: "truncate", children: item.status })
|
|
14677
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Badge, { variant: "soft", tone: "info", size: "md", children: item.status }) }),
|
|
14678
|
+
/* @__PURE__ */ (0, import_jsx_runtime74.jsx)("span", { className: "w-24 shrink-0 text-right text-body-tabular text-ink", children: item.amount })
|
|
14613
14679
|
]
|
|
14614
14680
|
}
|
|
14615
14681
|
) }, item.id);
|
|
14616
|
-
}) }) : /* @__PURE__ */ (0,
|
|
14617
|
-
/* @__PURE__ */ (0,
|
|
14618
|
-
/* @__PURE__ */ (0,
|
|
14682
|
+
}) }) : /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)("div", { className: "flex flex-col items-center gap-xs px-lg py-xxl text-center", children: [
|
|
14683
|
+
/* @__PURE__ */ (0, import_jsx_runtime74.jsx)("p", { className: "text-body-md text-ink", children: emptyLabel ?? "No results found" }),
|
|
14684
|
+
/* @__PURE__ */ (0, import_jsx_runtime74.jsx)("p", { className: "text-body-sm text-muted", children: "Try a different name, reference, or filter." })
|
|
14619
14685
|
] }) })
|
|
14620
14686
|
]
|
|
14621
14687
|
}
|
|
@@ -14625,13 +14691,13 @@ var SearchResultsList = React73.forwardRef(
|
|
|
14625
14691
|
SearchResultsList.displayName = "SearchResultsList";
|
|
14626
14692
|
|
|
14627
14693
|
// virtual-pkg:src/atoms/Sidebar/Sidebar.tsx
|
|
14628
|
-
var
|
|
14694
|
+
var React77 = __toESM(require("react"));
|
|
14629
14695
|
|
|
14630
14696
|
// virtual-pkg:src/atoms/SidebarDesktop/SidebarDesktop.tsx
|
|
14631
|
-
var
|
|
14697
|
+
var React75 = __toESM(require("react"));
|
|
14632
14698
|
var ReactDOM11 = __toESM(require("react-dom"));
|
|
14633
|
-
var
|
|
14634
|
-
var
|
|
14699
|
+
var import_jsx_runtime75 = require("react/jsx-runtime");
|
|
14700
|
+
var cn66 = (...values) => values.filter(Boolean).join(" ");
|
|
14635
14701
|
var MENU_GAP2 = 6;
|
|
14636
14702
|
var MENU_MIN_WIDTH = 224;
|
|
14637
14703
|
var VIEWPORT_INSET6 = 12;
|
|
@@ -14661,7 +14727,7 @@ var SAMPLE_SECONDARY = [
|
|
|
14661
14727
|
{ id: "team", label: "Team", icon: "group", href: "#team" }
|
|
14662
14728
|
];
|
|
14663
14729
|
var SAMPLE_PLAN = { name: "Pro", price: "$2,400.00 / month", href: "#plan" };
|
|
14664
|
-
var glyph3 = (name, size = 16, strokeWidth = 1.75) => /* @__PURE__ */ (0,
|
|
14730
|
+
var glyph3 = (name, size = 16, strokeWidth = 1.75) => /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
14665
14731
|
Icon,
|
|
14666
14732
|
{
|
|
14667
14733
|
name,
|
|
@@ -14690,12 +14756,12 @@ var rowAccessibleName = (label, badge) => {
|
|
|
14690
14756
|
var RailBadge = ({
|
|
14691
14757
|
badge,
|
|
14692
14758
|
active
|
|
14693
|
-
}) => /* @__PURE__ */ (0,
|
|
14759
|
+
}) => /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
14694
14760
|
"span",
|
|
14695
14761
|
{
|
|
14696
14762
|
"aria-hidden": "true",
|
|
14697
14763
|
"data-active": active || void 0,
|
|
14698
|
-
className:
|
|
14764
|
+
className: cn66(
|
|
14699
14765
|
"ml-auto flex h-4 min-w-4 shrink-0 items-center justify-center rounded-full",
|
|
14700
14766
|
"bg-primary px-xxs text-caption text-on-primary",
|
|
14701
14767
|
"data-[active=true]:bg-on-primary data-[active=true]:text-primary"
|
|
@@ -14703,13 +14769,13 @@ var RailBadge = ({
|
|
|
14703
14769
|
children: badgeText(badge)
|
|
14704
14770
|
}
|
|
14705
14771
|
);
|
|
14706
|
-
var railGlyph = (item, folded) => /* @__PURE__ */ (0,
|
|
14772
|
+
var railGlyph = (item, folded) => /* @__PURE__ */ (0, import_jsx_runtime75.jsxs)("span", { className: "relative inline-flex shrink-0 items-center", children: [
|
|
14707
14773
|
glyph3(item.icon, 16, 1.75),
|
|
14708
|
-
folded && hasBadge(item.badge) ? /* @__PURE__ */ (0,
|
|
14774
|
+
folded && hasBadge(item.badge) ? /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
14709
14775
|
"span",
|
|
14710
14776
|
{
|
|
14711
14777
|
"aria-hidden": "true",
|
|
14712
|
-
className:
|
|
14778
|
+
className: cn66(
|
|
14713
14779
|
"pointer-events-none absolute -right-xxs -top-xxs size-2 rounded-full",
|
|
14714
14780
|
"bg-primary",
|
|
14715
14781
|
"group-data-[active=true]:bg-on-primary"
|
|
@@ -14720,8 +14786,8 @@ var railGlyph = (item, folded) => /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)
|
|
|
14720
14786
|
var RowLabel = ({
|
|
14721
14787
|
folded,
|
|
14722
14788
|
children
|
|
14723
|
-
}) => folded ? /* @__PURE__ */ (0,
|
|
14724
|
-
var railRowClass = (active, folded) =>
|
|
14789
|
+
}) => folded ? /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("span", { className: "sr-only", children }) : /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("span", { className: "truncate", children });
|
|
14790
|
+
var railRowClass = (active, folded) => cn66(
|
|
14725
14791
|
"group flex w-full cursor-pointer items-center rounded-lg border-0 bg-transparent",
|
|
14726
14792
|
"text-body-md transition duration-150 ease-out",
|
|
14727
14793
|
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus-blue",
|
|
@@ -14730,7 +14796,7 @@ var railRowClass = (active, folded) => cn65(
|
|
|
14730
14796
|
folded ? "justify-center px-md py-sm" : "gap-md px-lg py-sm"
|
|
14731
14797
|
);
|
|
14732
14798
|
var isModified = (event) => event.metaKey || event.ctrlKey || event.shiftKey || event.altKey ? true : event.button !== 0;
|
|
14733
|
-
var SidebarDesktop =
|
|
14799
|
+
var SidebarDesktop = React75.forwardRef(
|
|
14734
14800
|
({
|
|
14735
14801
|
wordmark = "Nimbus",
|
|
14736
14802
|
homeHref = "#home",
|
|
@@ -14760,27 +14826,27 @@ var SidebarDesktop = React74.forwardRef(
|
|
|
14760
14826
|
className,
|
|
14761
14827
|
...rest
|
|
14762
14828
|
}, ref) => {
|
|
14763
|
-
const uid =
|
|
14829
|
+
const uid = React75.useId().replace(/[^a-zA-Z0-9-]/g, "");
|
|
14764
14830
|
const primaryNavId = `${uid}-primary`;
|
|
14765
14831
|
const accountsPanelId = `${uid}-accounts`;
|
|
14766
|
-
const triggerRef =
|
|
14767
|
-
const panelRef =
|
|
14768
|
-
const [internalFolded, setInternalFolded] =
|
|
14832
|
+
const triggerRef = React75.useRef(null);
|
|
14833
|
+
const panelRef = React75.useRef(null);
|
|
14834
|
+
const [internalFolded, setInternalFolded] = React75.useState(defaultFolded);
|
|
14769
14835
|
const isFolded = folded !== void 0 ? folded : internalFolded;
|
|
14770
14836
|
const navItems = items ?? SAMPLE_ITEMS;
|
|
14771
14837
|
const secondaryNav = secondaryItems ?? SAMPLE_SECONDARY;
|
|
14772
14838
|
const accountList = accounts ?? SAMPLE_ACCOUNTS;
|
|
14773
14839
|
const planTile = plan === void 0 ? SAMPLE_PLAN : plan;
|
|
14774
|
-
const [internalAccount, setInternalAccount] =
|
|
14840
|
+
const [internalAccount, setInternalAccount] = React75.useState(
|
|
14775
14841
|
defaultAccountValue ?? accountList[0]?.value
|
|
14776
14842
|
);
|
|
14777
14843
|
const selectedAccount = accountValue !== void 0 ? accountValue : internalAccount;
|
|
14778
14844
|
const currentAccount = accountList.find(
|
|
14779
14845
|
(account) => account.value === selectedAccount
|
|
14780
14846
|
);
|
|
14781
|
-
const [accountsOpen, setAccountsOpen] =
|
|
14782
|
-
const [box, setBox] =
|
|
14783
|
-
const [expandedId, setExpandedId] =
|
|
14847
|
+
const [accountsOpen, setAccountsOpen] = React75.useState(false);
|
|
14848
|
+
const [box, setBox] = React75.useState(null);
|
|
14849
|
+
const [expandedId, setExpandedId] = React75.useState(
|
|
14784
14850
|
defaultExpandedId
|
|
14785
14851
|
);
|
|
14786
14852
|
const setFolded = (next) => {
|
|
@@ -14803,7 +14869,7 @@ var SidebarDesktop = React74.forwardRef(
|
|
|
14803
14869
|
event.preventDefault();
|
|
14804
14870
|
}
|
|
14805
14871
|
};
|
|
14806
|
-
const measure =
|
|
14872
|
+
const measure = React75.useCallback(() => {
|
|
14807
14873
|
const trigger = triggerRef.current;
|
|
14808
14874
|
if (!trigger) {
|
|
14809
14875
|
return;
|
|
@@ -14836,7 +14902,7 @@ var SidebarDesktop = React74.forwardRef(
|
|
|
14836
14902
|
);
|
|
14837
14903
|
setBox({ top: clampedTop, left, width, maxHeight });
|
|
14838
14904
|
}, []);
|
|
14839
|
-
|
|
14905
|
+
React75.useEffect(() => {
|
|
14840
14906
|
if (!accountsOpen) {
|
|
14841
14907
|
return;
|
|
14842
14908
|
}
|
|
@@ -14884,7 +14950,7 @@ var SidebarDesktop = React74.forwardRef(
|
|
|
14884
14950
|
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";
|
|
14885
14951
|
const bellLabel = notificationCount > 0 ? `${notificationsLabel}, ${notificationCount} unread` : notificationsLabel;
|
|
14886
14952
|
const accountsPanel = typeof document === "undefined" ? null : ReactDOM11.createPortal(
|
|
14887
|
-
/* @__PURE__ */ (0,
|
|
14953
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
14888
14954
|
"div",
|
|
14889
14955
|
{
|
|
14890
14956
|
ref: panelRef,
|
|
@@ -14901,7 +14967,7 @@ var SidebarDesktop = React74.forwardRef(
|
|
|
14901
14967
|
maxHeight: box?.maxHeight ?? void 0,
|
|
14902
14968
|
zIndex: "var(--z-popover, 1300)"
|
|
14903
14969
|
},
|
|
14904
|
-
className:
|
|
14970
|
+
className: cn66(
|
|
14905
14971
|
"origin-top overflow-y-auto overscroll-contain rounded-lg border border-hairline",
|
|
14906
14972
|
"bg-surface p-xs shadow-lg transition duration-200 ease-out",
|
|
14907
14973
|
"data-[state=open]:translate-y-0 data-[state=open]:scale-100 data-[state=open]:opacity-100",
|
|
@@ -14909,7 +14975,7 @@ var SidebarDesktop = React74.forwardRef(
|
|
|
14909
14975
|
),
|
|
14910
14976
|
children: accountList.map((account) => {
|
|
14911
14977
|
const selected = account.value === selectedAccount;
|
|
14912
|
-
return /* @__PURE__ */ (0,
|
|
14978
|
+
return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
14913
14979
|
Button,
|
|
14914
14980
|
{
|
|
14915
14981
|
variant: "row",
|
|
@@ -14919,8 +14985,8 @@ var SidebarDesktop = React74.forwardRef(
|
|
|
14919
14985
|
"data-selected": selected,
|
|
14920
14986
|
tabIndex: -1,
|
|
14921
14987
|
onClick: () => chooseAccount(account),
|
|
14922
|
-
leadingIcon: /* @__PURE__ */ (0,
|
|
14923
|
-
trailingIcon: selected ? /* @__PURE__ */ (0,
|
|
14988
|
+
leadingIcon: /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(Icon, { name: "layers", size: 16, tone: "muted" }),
|
|
14989
|
+
trailingIcon: selected ? /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
14924
14990
|
Icon,
|
|
14925
14991
|
{
|
|
14926
14992
|
name: "check",
|
|
@@ -14938,7 +15004,7 @@ var SidebarDesktop = React74.forwardRef(
|
|
|
14938
15004
|
),
|
|
14939
15005
|
document.body
|
|
14940
15006
|
);
|
|
14941
|
-
return /* @__PURE__ */ (0,
|
|
15007
|
+
return /* @__PURE__ */ (0, import_jsx_runtime75.jsxs)(
|
|
14942
15008
|
"aside",
|
|
14943
15009
|
{
|
|
14944
15010
|
ref,
|
|
@@ -14946,7 +15012,7 @@ var SidebarDesktop = React74.forwardRef(
|
|
|
14946
15012
|
style: {
|
|
14947
15013
|
width: isFolded ? "var(--container-sidebar-rail, 72px)" : "var(--container-sidebar, 240px)"
|
|
14948
15014
|
},
|
|
14949
|
-
className:
|
|
15015
|
+
className: cn66(
|
|
14950
15016
|
"flex h-full min-h-0 shrink-0 flex-col bg-brand-dark text-on-primary",
|
|
14951
15017
|
"transition-[width] duration-200 ease-out",
|
|
14952
15018
|
isFolded ? "px-xs" : "px-md",
|
|
@@ -14955,31 +15021,31 @@ var SidebarDesktop = React74.forwardRef(
|
|
|
14955
15021
|
),
|
|
14956
15022
|
...rest,
|
|
14957
15023
|
children: [
|
|
14958
|
-
/* @__PURE__ */ (0,
|
|
15024
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsxs)(
|
|
14959
15025
|
"div",
|
|
14960
15026
|
{
|
|
14961
|
-
className:
|
|
15027
|
+
className: cn66(
|
|
14962
15028
|
"flex w-full shrink-0 items-center pb-lg",
|
|
14963
15029
|
isFolded ? "justify-center" : "justify-between gap-sm"
|
|
14964
15030
|
),
|
|
14965
15031
|
children: [
|
|
14966
|
-
isFolded ? null : /* @__PURE__ */ (0,
|
|
15032
|
+
isFolded ? null : /* @__PURE__ */ (0, import_jsx_runtime75.jsxs)(
|
|
14967
15033
|
"a",
|
|
14968
15034
|
{
|
|
14969
15035
|
href: homeHref,
|
|
14970
15036
|
onClick: navigate({ id: "home", href: homeHref }),
|
|
14971
|
-
className:
|
|
15037
|
+
className: cn66(
|
|
14972
15038
|
"inline-flex min-w-0 cursor-pointer items-center gap-sm rounded-md px-xs text-on-primary",
|
|
14973
15039
|
"transition duration-150 ease-out hover:opacity-80",
|
|
14974
15040
|
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus-blue"
|
|
14975
15041
|
),
|
|
14976
15042
|
children: [
|
|
14977
15043
|
glyph3("slash", 20, 3),
|
|
14978
|
-
/* @__PURE__ */ (0,
|
|
15044
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)("span", { className: "truncate text-body-lg font-weight-label", children: wordmark })
|
|
14979
15045
|
]
|
|
14980
15046
|
}
|
|
14981
15047
|
),
|
|
14982
|
-
/* @__PURE__ */ (0,
|
|
15048
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
14983
15049
|
Button,
|
|
14984
15050
|
{
|
|
14985
15051
|
variant: "bare",
|
|
@@ -14988,7 +15054,7 @@ var SidebarDesktop = React74.forwardRef(
|
|
|
14988
15054
|
"aria-expanded": !isFolded,
|
|
14989
15055
|
"aria-controls": primaryNavId,
|
|
14990
15056
|
onClick: () => setFolded(!isFolded),
|
|
14991
|
-
className:
|
|
15057
|
+
className: cn66(
|
|
14992
15058
|
"shrink-0 rounded-md text-on-primary/60",
|
|
14993
15059
|
"hover:bg-on-primary/10 hover:text-on-primary"
|
|
14994
15060
|
),
|
|
@@ -14998,7 +15064,7 @@ var SidebarDesktop = React74.forwardRef(
|
|
|
14998
15064
|
]
|
|
14999
15065
|
}
|
|
15000
15066
|
),
|
|
15001
|
-
accountList.length > 1 ? /* @__PURE__ */ (0,
|
|
15067
|
+
accountList.length > 1 ? /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
15002
15068
|
Button,
|
|
15003
15069
|
{
|
|
15004
15070
|
ref: triggerRef,
|
|
@@ -15014,43 +15080,43 @@ var SidebarDesktop = React74.forwardRef(
|
|
|
15014
15080
|
setAccountsOpen((previous) => !previous);
|
|
15015
15081
|
},
|
|
15016
15082
|
className: "shrink-0",
|
|
15017
|
-
trailingIcon: isFolded ? void 0 : /* @__PURE__ */ (0,
|
|
15083
|
+
trailingIcon: isFolded ? void 0 : /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
15018
15084
|
"span",
|
|
15019
15085
|
{
|
|
15020
15086
|
"aria-hidden": "true",
|
|
15021
|
-
className:
|
|
15087
|
+
className: cn66(
|
|
15022
15088
|
"flex shrink-0 items-center transition-transform duration-200 ease-out",
|
|
15023
15089
|
accountsOpen ? "rotate-180" : "rotate-0"
|
|
15024
15090
|
),
|
|
15025
15091
|
children: glyph3("chevron-down", 16, 2)
|
|
15026
15092
|
}
|
|
15027
15093
|
),
|
|
15028
|
-
children: /* @__PURE__ */ (0,
|
|
15094
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime75.jsxs)(
|
|
15029
15095
|
"span",
|
|
15030
15096
|
{
|
|
15031
|
-
className:
|
|
15097
|
+
className: cn66("flex min-w-0 items-center", isFolded ? "" : "gap-sm"),
|
|
15032
15098
|
children: [
|
|
15033
15099
|
glyph3("layers", 16, 1.75),
|
|
15034
|
-
isFolded ? /* @__PURE__ */ (0,
|
|
15100
|
+
isFolded ? /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("span", { className: "sr-only", children: currentAccount?.label ?? "Choose account" }) : /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("span", { className: "truncate", children: currentAccount?.label ?? "Choose account" })
|
|
15035
15101
|
]
|
|
15036
15102
|
}
|
|
15037
15103
|
)
|
|
15038
15104
|
}
|
|
15039
|
-
) : /* @__PURE__ */ (0,
|
|
15105
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime75.jsxs)(
|
|
15040
15106
|
"div",
|
|
15041
15107
|
{
|
|
15042
|
-
className:
|
|
15108
|
+
className: cn66(
|
|
15043
15109
|
"flex w-full shrink-0 items-center rounded-lg bg-on-primary/10 py-sm text-body-md text-on-primary",
|
|
15044
15110
|
isFolded ? "justify-center px-md" : "gap-sm px-md"
|
|
15045
15111
|
),
|
|
15046
15112
|
children: [
|
|
15047
15113
|
glyph3("layers", 16, 1.75),
|
|
15048
|
-
isFolded ? /* @__PURE__ */ (0,
|
|
15114
|
+
isFolded ? /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("span", { className: "sr-only", children: currentAccount?.label }) : /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("span", { className: "truncate", children: currentAccount?.label })
|
|
15049
15115
|
]
|
|
15050
15116
|
}
|
|
15051
15117
|
),
|
|
15052
|
-
/* @__PURE__ */ (0,
|
|
15053
|
-
/* @__PURE__ */ (0,
|
|
15118
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsxs)("div", { className: "mt-lg flex min-h-0 flex-1 flex-col overflow-y-auto overscroll-contain", children: [
|
|
15119
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
15054
15120
|
"nav",
|
|
15055
15121
|
{
|
|
15056
15122
|
id: primaryNavId,
|
|
@@ -15060,7 +15126,7 @@ var SidebarDesktop = React74.forwardRef(
|
|
|
15060
15126
|
const active = item.id === activeId;
|
|
15061
15127
|
const badged = hasBadge(item.badge);
|
|
15062
15128
|
if (!item.children?.length) {
|
|
15063
|
-
return /* @__PURE__ */ (0,
|
|
15129
|
+
return /* @__PURE__ */ (0, import_jsx_runtime75.jsxs)(
|
|
15064
15130
|
"a",
|
|
15065
15131
|
{
|
|
15066
15132
|
href: item.href ?? `#${item.id}`,
|
|
@@ -15071,8 +15137,8 @@ var SidebarDesktop = React74.forwardRef(
|
|
|
15071
15137
|
className: railRowClass(active, isFolded),
|
|
15072
15138
|
children: [
|
|
15073
15139
|
railGlyph(item, isFolded),
|
|
15074
|
-
/* @__PURE__ */ (0,
|
|
15075
|
-
!isFolded && badged ? /* @__PURE__ */ (0,
|
|
15140
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)(RowLabel, { folded: isFolded, children: item.label }),
|
|
15141
|
+
!isFolded && badged ? /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(RailBadge, { badge: item.badge, active }) : null
|
|
15076
15142
|
]
|
|
15077
15143
|
},
|
|
15078
15144
|
item.id
|
|
@@ -15080,8 +15146,8 @@ var SidebarDesktop = React74.forwardRef(
|
|
|
15080
15146
|
}
|
|
15081
15147
|
const expanded = expandedId === item.id;
|
|
15082
15148
|
const subId = `${uid}-${item.id}-sub`;
|
|
15083
|
-
return /* @__PURE__ */ (0,
|
|
15084
|
-
/* @__PURE__ */ (0,
|
|
15149
|
+
return /* @__PURE__ */ (0, import_jsx_runtime75.jsxs)("div", { className: "flex flex-col gap-xxs", children: [
|
|
15150
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
15085
15151
|
Button,
|
|
15086
15152
|
{
|
|
15087
15153
|
variant: "rail-row",
|
|
@@ -15094,19 +15160,19 @@ var SidebarDesktop = React74.forwardRef(
|
|
|
15094
15160
|
onClick: () => toggleExpanded(item.id),
|
|
15095
15161
|
className: "group",
|
|
15096
15162
|
leadingIcon: railGlyph(item, isFolded),
|
|
15097
|
-
trailingIcon: isFolded ? void 0 : /* @__PURE__ */ (0,
|
|
15098
|
-
badged ? /* @__PURE__ */ (0,
|
|
15163
|
+
trailingIcon: isFolded ? void 0 : /* @__PURE__ */ (0, import_jsx_runtime75.jsxs)("span", { className: "flex items-center gap-xs", children: [
|
|
15164
|
+
badged ? /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
15099
15165
|
RailBadge,
|
|
15100
15166
|
{
|
|
15101
15167
|
badge: item.badge,
|
|
15102
15168
|
active
|
|
15103
15169
|
}
|
|
15104
15170
|
) : null,
|
|
15105
|
-
/* @__PURE__ */ (0,
|
|
15171
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
15106
15172
|
"span",
|
|
15107
15173
|
{
|
|
15108
15174
|
"aria-hidden": "true",
|
|
15109
|
-
className:
|
|
15175
|
+
className: cn66(
|
|
15110
15176
|
"flex shrink-0 items-center transition-transform duration-200 ease-out",
|
|
15111
15177
|
expanded ? "rotate-180" : "rotate-0"
|
|
15112
15178
|
),
|
|
@@ -15114,19 +15180,19 @@ var SidebarDesktop = React74.forwardRef(
|
|
|
15114
15180
|
}
|
|
15115
15181
|
)
|
|
15116
15182
|
] }),
|
|
15117
|
-
children: /* @__PURE__ */ (0,
|
|
15183
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(RowLabel, { folded: isFolded, children: item.label })
|
|
15118
15184
|
}
|
|
15119
15185
|
),
|
|
15120
|
-
isFolded ? null : /* @__PURE__ */ (0,
|
|
15186
|
+
isFolded ? null : /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
15121
15187
|
"div",
|
|
15122
15188
|
{
|
|
15123
15189
|
id: subId,
|
|
15124
15190
|
"data-state": expanded ? "open" : "closed",
|
|
15125
|
-
className:
|
|
15191
|
+
className: cn66(
|
|
15126
15192
|
"grid transition-[grid-template-rows,opacity] duration-200 ease-out",
|
|
15127
15193
|
expanded ? "grid-rows-[1fr] opacity-100" : "grid-rows-[0fr] opacity-0"
|
|
15128
15194
|
),
|
|
15129
|
-
children: /* @__PURE__ */ (0,
|
|
15195
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("div", { className: "overflow-hidden", children: /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("ul", { className: "flex flex-col gap-xxs pb-xs pl-xl pt-xxs", children: item.children.map((child) => /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
15130
15196
|
"a",
|
|
15131
15197
|
{
|
|
15132
15198
|
href: child.href ?? `#${child.id}`,
|
|
@@ -15136,7 +15202,7 @@ var SidebarDesktop = React74.forwardRef(
|
|
|
15136
15202
|
}),
|
|
15137
15203
|
tabIndex: expanded ? void 0 : -1,
|
|
15138
15204
|
className: subRowClass2,
|
|
15139
|
-
children: /* @__PURE__ */ (0,
|
|
15205
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("span", { className: "truncate", children: child.label })
|
|
15140
15206
|
}
|
|
15141
15207
|
) }, child.id)) }) })
|
|
15142
15208
|
}
|
|
@@ -15145,7 +15211,7 @@ var SidebarDesktop = React74.forwardRef(
|
|
|
15145
15211
|
})
|
|
15146
15212
|
}
|
|
15147
15213
|
),
|
|
15148
|
-
/* @__PURE__ */ (0,
|
|
15214
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)("div", { className: "mt-lg shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
15149
15215
|
Button,
|
|
15150
15216
|
{
|
|
15151
15217
|
variant: "inverse-outline",
|
|
@@ -15157,17 +15223,17 @@ var SidebarDesktop = React74.forwardRef(
|
|
|
15157
15223
|
children: isFolded ? void 0 : primaryActionLabel
|
|
15158
15224
|
}
|
|
15159
15225
|
) }),
|
|
15160
|
-
/* @__PURE__ */ (0,
|
|
15226
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
15161
15227
|
"span",
|
|
15162
15228
|
{
|
|
15163
15229
|
"aria-hidden": "true",
|
|
15164
15230
|
className: "mt-lg block h-px shrink-0 bg-on-primary/15"
|
|
15165
15231
|
}
|
|
15166
15232
|
),
|
|
15167
|
-
/* @__PURE__ */ (0,
|
|
15233
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)("nav", { "aria-label": "Secondary", className: "mt-lg flex flex-col gap-xxs", children: secondaryNav.map((item) => {
|
|
15168
15234
|
const active = item.id === secondaryActiveId;
|
|
15169
15235
|
const badged = hasBadge(item.badge);
|
|
15170
|
-
return /* @__PURE__ */ (0,
|
|
15236
|
+
return /* @__PURE__ */ (0, import_jsx_runtime75.jsxs)(
|
|
15171
15237
|
"a",
|
|
15172
15238
|
{
|
|
15173
15239
|
href: item.href ?? `#${item.id}`,
|
|
@@ -15178,21 +15244,21 @@ var SidebarDesktop = React74.forwardRef(
|
|
|
15178
15244
|
className: railRowClass(active, isFolded),
|
|
15179
15245
|
children: [
|
|
15180
15246
|
railGlyph(item, isFolded),
|
|
15181
|
-
/* @__PURE__ */ (0,
|
|
15182
|
-
!isFolded && badged ? /* @__PURE__ */ (0,
|
|
15247
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)(RowLabel, { folded: isFolded, children: item.label }),
|
|
15248
|
+
!isFolded && badged ? /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(RailBadge, { badge: item.badge, active }) : null
|
|
15183
15249
|
]
|
|
15184
15250
|
},
|
|
15185
15251
|
item.id
|
|
15186
15252
|
);
|
|
15187
15253
|
}) })
|
|
15188
15254
|
] }),
|
|
15189
|
-
/* @__PURE__ */ (0,
|
|
15190
|
-
planTile ? /* @__PURE__ */ (0,
|
|
15255
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsxs)("div", { className: "mt-lg shrink-0", children: [
|
|
15256
|
+
planTile ? /* @__PURE__ */ (0, import_jsx_runtime75.jsxs)(
|
|
15191
15257
|
"a",
|
|
15192
15258
|
{
|
|
15193
15259
|
href: planTile.href ?? "#plan",
|
|
15194
15260
|
onClick: navigate({ id: "plan", href: planTile.href }),
|
|
15195
|
-
className:
|
|
15261
|
+
className: cn66(
|
|
15196
15262
|
"flex w-full cursor-pointer items-center rounded-lg bg-on-primary/10",
|
|
15197
15263
|
"transition duration-150 ease-out hover:bg-on-primary/15",
|
|
15198
15264
|
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus-blue",
|
|
@@ -15200,33 +15266,33 @@ var SidebarDesktop = React74.forwardRef(
|
|
|
15200
15266
|
isFolded ? "justify-center p-sm" : "gap-sm p-sm"
|
|
15201
15267
|
),
|
|
15202
15268
|
children: [
|
|
15203
|
-
/* @__PURE__ */ (0,
|
|
15204
|
-
isFolded ? /* @__PURE__ */ (0,
|
|
15205
|
-
/* @__PURE__ */ (0,
|
|
15206
|
-
/* @__PURE__ */ (0,
|
|
15207
|
-
/* @__PURE__ */ (0,
|
|
15269
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)("span", { className: "flex size-8 shrink-0 items-center justify-center rounded-md bg-primary text-on-primary", children: glyph3("chart-bar", 16, 2) }),
|
|
15270
|
+
isFolded ? /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("span", { className: "sr-only", children: `${planTile.name}, ${planTile.price}` }) : /* @__PURE__ */ (0, import_jsx_runtime75.jsxs)(import_jsx_runtime75.Fragment, { children: [
|
|
15271
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsxs)("span", { className: "flex min-w-0 flex-1 flex-col", children: [
|
|
15272
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)("span", { className: "truncate text-body-md text-on-primary", children: planTile.name }),
|
|
15273
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)("span", { className: "truncate text-caption text-on-primary/60", children: planTile.price })
|
|
15208
15274
|
] }),
|
|
15209
|
-
/* @__PURE__ */ (0,
|
|
15275
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)("span", { "aria-hidden": "true", className: "shrink-0 text-on-primary/60", children: glyph3("arrow-right", 16, 2) })
|
|
15210
15276
|
] })
|
|
15211
15277
|
]
|
|
15212
15278
|
}
|
|
15213
15279
|
) : null,
|
|
15214
|
-
/* @__PURE__ */ (0,
|
|
15280
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsxs)(
|
|
15215
15281
|
"div",
|
|
15216
15282
|
{
|
|
15217
|
-
className:
|
|
15283
|
+
className: cn66(
|
|
15218
15284
|
"mt-sm flex items-center",
|
|
15219
15285
|
isFolded ? "justify-center" : "gap-sm pl-xs"
|
|
15220
15286
|
),
|
|
15221
15287
|
children: [
|
|
15222
|
-
/* @__PURE__ */ (0,
|
|
15223
|
-
isFolded ? /* @__PURE__ */ (0,
|
|
15224
|
-
/* @__PURE__ */ (0,
|
|
15225
|
-
/* @__PURE__ */ (0,
|
|
15226
|
-
profile.email ? /* @__PURE__ */ (0,
|
|
15288
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)(Avatar, { name: profile.name, src: profile.src, size: "sm" }),
|
|
15289
|
+
isFolded ? /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("span", { className: "sr-only", children: profile.name }) : /* @__PURE__ */ (0, import_jsx_runtime75.jsxs)(import_jsx_runtime75.Fragment, { children: [
|
|
15290
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsxs)("span", { className: "flex min-w-0 flex-1 flex-col", children: [
|
|
15291
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)("span", { className: "truncate text-body-sm text-on-primary", children: profile.name }),
|
|
15292
|
+
profile.email ? /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("span", { className: "truncate text-caption text-on-primary/60", children: profile.email }) : null
|
|
15227
15293
|
] }),
|
|
15228
|
-
/* @__PURE__ */ (0,
|
|
15229
|
-
/* @__PURE__ */ (0,
|
|
15294
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsxs)("span", { className: "relative inline-flex shrink-0", children: [
|
|
15295
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
15230
15296
|
Button,
|
|
15231
15297
|
{
|
|
15232
15298
|
variant: "bare",
|
|
@@ -15237,11 +15303,11 @@ var SidebarDesktop = React74.forwardRef(
|
|
|
15237
15303
|
children: glyph3("bell", 16, 1.75)
|
|
15238
15304
|
}
|
|
15239
15305
|
),
|
|
15240
|
-
notificationCount > 0 ? /* @__PURE__ */ (0,
|
|
15306
|
+
notificationCount > 0 ? /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
15241
15307
|
"span",
|
|
15242
15308
|
{
|
|
15243
15309
|
"aria-hidden": "true",
|
|
15244
|
-
className:
|
|
15310
|
+
className: cn66(
|
|
15245
15311
|
"pointer-events-none absolute -right-xxs -top-xxs",
|
|
15246
15312
|
"flex h-4 min-w-4 items-center justify-center rounded-full",
|
|
15247
15313
|
"bg-primary px-xxs text-caption text-on-primary"
|
|
@@ -15250,7 +15316,7 @@ var SidebarDesktop = React74.forwardRef(
|
|
|
15250
15316
|
}
|
|
15251
15317
|
) : null
|
|
15252
15318
|
] }),
|
|
15253
|
-
/* @__PURE__ */ (0,
|
|
15319
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
15254
15320
|
Button,
|
|
15255
15321
|
{
|
|
15256
15322
|
variant: "bare",
|
|
@@ -15275,10 +15341,10 @@ var SidebarDesktop = React74.forwardRef(
|
|
|
15275
15341
|
SidebarDesktop.displayName = "SidebarDesktop";
|
|
15276
15342
|
|
|
15277
15343
|
// virtual-pkg:src/atoms/SidebarMobile/SidebarMobile.tsx
|
|
15278
|
-
var
|
|
15344
|
+
var React76 = __toESM(require("react"));
|
|
15279
15345
|
var import_react_dom4 = require("react-dom");
|
|
15280
|
-
var
|
|
15281
|
-
var
|
|
15346
|
+
var import_jsx_runtime76 = require("react/jsx-runtime");
|
|
15347
|
+
var cn67 = (...values) => values.filter(Boolean).join(" ");
|
|
15282
15348
|
var SAMPLE_ACCOUNTS2 = [
|
|
15283
15349
|
{ value: "acme", label: "Acme Payments" },
|
|
15284
15350
|
{ value: "northwind", label: "Northwind Labs" },
|
|
@@ -15305,7 +15371,7 @@ var SAMPLE_SECONDARY2 = [
|
|
|
15305
15371
|
{ id: "team", label: "Team", icon: "group", href: "#team" }
|
|
15306
15372
|
];
|
|
15307
15373
|
var SAMPLE_PLAN2 = { name: "Pro", price: "$2,400.00 / month", href: "#plan" };
|
|
15308
|
-
var glyph4 = (name, size = 18, strokeWidth = 1.75) => /* @__PURE__ */ (0,
|
|
15374
|
+
var glyph4 = (name, size = 18, strokeWidth = 1.75) => /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(Icon, { name, size, strokeWidth, style: { color: "inherit" } });
|
|
15309
15375
|
var hasBadge2 = (badge) => {
|
|
15310
15376
|
if (badge === void 0 || badge === null) {
|
|
15311
15377
|
return false;
|
|
@@ -15326,12 +15392,12 @@ var rowAccessibleName2 = (label, badge) => {
|
|
|
15326
15392
|
var NavBadge = ({
|
|
15327
15393
|
badge,
|
|
15328
15394
|
active
|
|
15329
|
-
}) => /* @__PURE__ */ (0,
|
|
15395
|
+
}) => /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
|
|
15330
15396
|
"span",
|
|
15331
15397
|
{
|
|
15332
15398
|
"aria-hidden": "true",
|
|
15333
15399
|
"data-active": active || void 0,
|
|
15334
|
-
className:
|
|
15400
|
+
className: cn67(
|
|
15335
15401
|
"ml-auto flex h-4 min-w-4 shrink-0 items-center justify-center rounded-full",
|
|
15336
15402
|
"bg-primary px-xxs text-caption text-on-primary",
|
|
15337
15403
|
"data-[active=true]:bg-on-primary data-[active=true]:text-primary"
|
|
@@ -15339,14 +15405,14 @@ var NavBadge = ({
|
|
|
15339
15405
|
children: badgeText2(badge)
|
|
15340
15406
|
}
|
|
15341
15407
|
);
|
|
15342
|
-
var rowClass = (active) =>
|
|
15408
|
+
var rowClass = (active) => cn67(
|
|
15343
15409
|
"flex min-h-10 w-full cursor-pointer items-center gap-md rounded-lg px-md py-sm",
|
|
15344
15410
|
"text-body-md transition duration-150 ease-out",
|
|
15345
15411
|
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus-blue",
|
|
15346
15412
|
"focus-visible:ring-inset",
|
|
15347
15413
|
active ? "bg-primary text-on-primary hover:bg-primary-hover active:bg-primary-active" : "text-ink hover:bg-surface-soft active:bg-surface-strong"
|
|
15348
15414
|
);
|
|
15349
|
-
var subRowClass =
|
|
15415
|
+
var subRowClass = cn67(
|
|
15350
15416
|
"flex min-h-7 w-full cursor-pointer items-center gap-md rounded-md px-md py-xxs",
|
|
15351
15417
|
"text-body-sm text-body transition duration-150 ease-out",
|
|
15352
15418
|
"hover:bg-surface-soft hover:text-ink active:bg-surface-strong",
|
|
@@ -15354,7 +15420,7 @@ var subRowClass = cn66(
|
|
|
15354
15420
|
"focus-visible:ring-inset"
|
|
15355
15421
|
);
|
|
15356
15422
|
var isModified2 = (event) => event.metaKey || event.ctrlKey || event.shiftKey || event.altKey ? true : event.button !== 0;
|
|
15357
|
-
var SidebarMobile =
|
|
15423
|
+
var SidebarMobile = React76.forwardRef(
|
|
15358
15424
|
({
|
|
15359
15425
|
wordmark = "Nimbus",
|
|
15360
15426
|
homeHref = "#home",
|
|
@@ -15389,31 +15455,31 @@ var SidebarMobile = React75.forwardRef(
|
|
|
15389
15455
|
className,
|
|
15390
15456
|
...rest
|
|
15391
15457
|
}, ref) => {
|
|
15392
|
-
const uid =
|
|
15458
|
+
const uid = React76.useId().replace(/[^a-zA-Z0-9-]/g, "");
|
|
15393
15459
|
const drawerId = `${uid}-drawer`;
|
|
15394
15460
|
const accountsPanelId = `${uid}-accounts`;
|
|
15395
|
-
const toggleRef =
|
|
15396
|
-
const closeRef =
|
|
15397
|
-
const triggerRef =
|
|
15398
|
-
const panelRef =
|
|
15399
|
-
const [internalOpen, setInternalOpen] =
|
|
15461
|
+
const toggleRef = React76.useRef(null);
|
|
15462
|
+
const closeRef = React76.useRef(null);
|
|
15463
|
+
const triggerRef = React76.useRef(null);
|
|
15464
|
+
const panelRef = React76.useRef(null);
|
|
15465
|
+
const [internalOpen, setInternalOpen] = React76.useState(defaultOpen);
|
|
15400
15466
|
const isOpen = open !== void 0 ? open : internalOpen;
|
|
15401
15467
|
const navItems = items ?? SAMPLE_ITEMS2;
|
|
15402
15468
|
const secondaryNav = secondaryItems ?? SAMPLE_SECONDARY2;
|
|
15403
15469
|
const accountList = accounts ?? SAMPLE_ACCOUNTS2;
|
|
15404
15470
|
const planTile = plan === void 0 ? SAMPLE_PLAN2 : plan;
|
|
15405
|
-
const [internalAccount, setInternalAccount] =
|
|
15471
|
+
const [internalAccount, setInternalAccount] = React76.useState(
|
|
15406
15472
|
defaultAccountValue ?? accountList[0]?.value
|
|
15407
15473
|
);
|
|
15408
15474
|
const selectedAccount = accountValue !== void 0 ? accountValue : internalAccount;
|
|
15409
15475
|
const currentAccount = accountList.find(
|
|
15410
15476
|
(account) => account.value === selectedAccount
|
|
15411
15477
|
);
|
|
15412
|
-
const [accountsOpen, setAccountsOpen] =
|
|
15413
|
-
const [expandedId, setExpandedId] =
|
|
15478
|
+
const [accountsOpen, setAccountsOpen] = React76.useState(false);
|
|
15479
|
+
const [expandedId, setExpandedId] = React76.useState(
|
|
15414
15480
|
defaultExpandedId
|
|
15415
15481
|
);
|
|
15416
|
-
const setOpen =
|
|
15482
|
+
const setOpen = React76.useCallback(
|
|
15417
15483
|
(next) => {
|
|
15418
15484
|
if (open === void 0) {
|
|
15419
15485
|
setInternalOpen(next);
|
|
@@ -15429,8 +15495,8 @@ var SidebarMobile = React75.forwardRef(
|
|
|
15429
15495
|
}
|
|
15430
15496
|
setOpen(false);
|
|
15431
15497
|
};
|
|
15432
|
-
const wasOpen =
|
|
15433
|
-
|
|
15498
|
+
const wasOpen = React76.useRef(isOpen);
|
|
15499
|
+
React76.useEffect(() => {
|
|
15434
15500
|
if (isOpen && !wasOpen.current) {
|
|
15435
15501
|
closeRef.current?.focus();
|
|
15436
15502
|
}
|
|
@@ -15440,7 +15506,7 @@ var SidebarMobile = React75.forwardRef(
|
|
|
15440
15506
|
}
|
|
15441
15507
|
wasOpen.current = isOpen;
|
|
15442
15508
|
}, [isOpen]);
|
|
15443
|
-
|
|
15509
|
+
React76.useEffect(() => {
|
|
15444
15510
|
if (!isOpen) {
|
|
15445
15511
|
return;
|
|
15446
15512
|
}
|
|
@@ -15450,7 +15516,7 @@ var SidebarMobile = React75.forwardRef(
|
|
|
15450
15516
|
document.body.style.overflow = overflow;
|
|
15451
15517
|
};
|
|
15452
15518
|
}, [isOpen]);
|
|
15453
|
-
|
|
15519
|
+
React76.useEffect(() => {
|
|
15454
15520
|
if (!isOpen) {
|
|
15455
15521
|
return;
|
|
15456
15522
|
}
|
|
@@ -15498,7 +15564,7 @@ var SidebarMobile = React75.forwardRef(
|
|
|
15498
15564
|
};
|
|
15499
15565
|
const bellLabel = notificationCount > 0 ? `${notificationsLabel}, ${notificationCount} unread` : notificationsLabel;
|
|
15500
15566
|
const drawer = typeof document === "undefined" ? null : (0, import_react_dom4.createPortal)(
|
|
15501
|
-
/* @__PURE__ */ (0,
|
|
15567
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsxs)(
|
|
15502
15568
|
"div",
|
|
15503
15569
|
{
|
|
15504
15570
|
"data-state": isOpen ? "open" : "closed",
|
|
@@ -15509,22 +15575,22 @@ var SidebarMobile = React75.forwardRef(
|
|
|
15509
15575
|
inset: 0,
|
|
15510
15576
|
zIndex: "var(--z-modal, 1200)"
|
|
15511
15577
|
},
|
|
15512
|
-
className:
|
|
15578
|
+
className: cn67(
|
|
15513
15579
|
"transition-opacity duration-200 ease-out",
|
|
15514
15580
|
isOpen ? "pointer-events-auto" : "pointer-events-none"
|
|
15515
15581
|
),
|
|
15516
15582
|
children: [
|
|
15517
|
-
/* @__PURE__ */ (0,
|
|
15583
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
|
|
15518
15584
|
"div",
|
|
15519
15585
|
{
|
|
15520
15586
|
"aria-hidden": "true",
|
|
15521
|
-
className:
|
|
15587
|
+
className: cn67(
|
|
15522
15588
|
"absolute inset-0 bg-scrim/50 transition-opacity duration-200 ease-out",
|
|
15523
15589
|
isOpen ? "opacity-100" : "opacity-0"
|
|
15524
15590
|
)
|
|
15525
15591
|
}
|
|
15526
15592
|
),
|
|
15527
|
-
/* @__PURE__ */ (0,
|
|
15593
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsxs)(
|
|
15528
15594
|
"div",
|
|
15529
15595
|
{
|
|
15530
15596
|
id: drawerId,
|
|
@@ -15533,28 +15599,28 @@ var SidebarMobile = React75.forwardRef(
|
|
|
15533
15599
|
"aria-modal": "true",
|
|
15534
15600
|
"aria-label": menuLabel,
|
|
15535
15601
|
"data-state": isOpen ? "open" : "closed",
|
|
15536
|
-
className:
|
|
15602
|
+
className: cn67(
|
|
15537
15603
|
"absolute inset-y-sm left-sm flex w-[86%] flex-col overflow-hidden",
|
|
15538
15604
|
"max-w-[var(--container-drawer,360px)] rounded-xl bg-surface shadow-modal",
|
|
15539
15605
|
"transition-[transform,visibility] duration-200 ease-out",
|
|
15540
15606
|
isOpen ? "visible translate-x-0" : "invisible -translate-x-full"
|
|
15541
15607
|
),
|
|
15542
15608
|
children: [
|
|
15543
|
-
/* @__PURE__ */ (0,
|
|
15544
|
-
/* @__PURE__ */ (0,
|
|
15609
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsxs)("div", { className: "flex shrink-0 items-center justify-between gap-md px-lg pb-sm pt-md", children: [
|
|
15610
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
|
|
15545
15611
|
"a",
|
|
15546
15612
|
{
|
|
15547
15613
|
href: homeHref,
|
|
15548
15614
|
onClick: navigate({ id: "home", href: homeHref }),
|
|
15549
|
-
className:
|
|
15615
|
+
className: cn67(
|
|
15550
15616
|
"inline-flex min-w-0 cursor-pointer items-center rounded-xs",
|
|
15551
15617
|
"transition duration-150 ease-out hover:opacity-80",
|
|
15552
15618
|
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus-blue"
|
|
15553
15619
|
),
|
|
15554
|
-
children: /* @__PURE__ */ (0,
|
|
15620
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(Logo, { size: "md", wordmark })
|
|
15555
15621
|
}
|
|
15556
15622
|
),
|
|
15557
|
-
/* @__PURE__ */ (0,
|
|
15623
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
|
|
15558
15624
|
Button,
|
|
15559
15625
|
{
|
|
15560
15626
|
ref: closeRef,
|
|
@@ -15567,9 +15633,9 @@ var SidebarMobile = React75.forwardRef(
|
|
|
15567
15633
|
}
|
|
15568
15634
|
)
|
|
15569
15635
|
] }),
|
|
15570
|
-
/* @__PURE__ */ (0,
|
|
15571
|
-
/* @__PURE__ */ (0,
|
|
15572
|
-
accountList.length > 1 ? /* @__PURE__ */ (0,
|
|
15636
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsxs)("div", { className: "min-h-0 flex-1 overflow-y-auto overscroll-contain px-md pb-sm", children: [
|
|
15637
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsxs)("div", { className: "px-xs", children: [
|
|
15638
|
+
accountList.length > 1 ? /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
|
|
15573
15639
|
Button,
|
|
15574
15640
|
{
|
|
15575
15641
|
ref: triggerRef,
|
|
@@ -15579,37 +15645,37 @@ var SidebarMobile = React75.forwardRef(
|
|
|
15579
15645
|
"aria-expanded": accountsOpen,
|
|
15580
15646
|
"aria-controls": accountsPanelId,
|
|
15581
15647
|
onClick: () => setAccountsOpen((previous) => !previous),
|
|
15582
|
-
trailingIcon: /* @__PURE__ */ (0,
|
|
15648
|
+
trailingIcon: /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
|
|
15583
15649
|
"span",
|
|
15584
15650
|
{
|
|
15585
15651
|
"aria-hidden": "true",
|
|
15586
|
-
className:
|
|
15652
|
+
className: cn67(
|
|
15587
15653
|
"flex shrink-0 items-center transition-transform duration-200 ease-out",
|
|
15588
15654
|
accountsOpen ? "rotate-180" : "rotate-0"
|
|
15589
15655
|
),
|
|
15590
15656
|
children: glyph4("chevron-down", 16, 2)
|
|
15591
15657
|
}
|
|
15592
15658
|
),
|
|
15593
|
-
children: /* @__PURE__ */ (0,
|
|
15659
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime76.jsxs)("span", { className: "flex min-w-0 items-center gap-sm", children: [
|
|
15594
15660
|
glyph4("layers", 18, 1.75),
|
|
15595
|
-
/* @__PURE__ */ (0,
|
|
15661
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsx)("span", { className: "truncate", children: currentAccount?.label ?? "Choose account" })
|
|
15596
15662
|
] })
|
|
15597
15663
|
}
|
|
15598
|
-
) : /* @__PURE__ */ (0,
|
|
15664
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime76.jsxs)("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: [
|
|
15599
15665
|
glyph4("layers", 18, 1.75),
|
|
15600
|
-
/* @__PURE__ */ (0,
|
|
15666
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsx)("span", { className: "truncate", children: currentAccount?.label })
|
|
15601
15667
|
] }),
|
|
15602
|
-
accountList.length > 1 ? /* @__PURE__ */ (0,
|
|
15668
|
+
accountList.length > 1 ? /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
|
|
15603
15669
|
"div",
|
|
15604
15670
|
{
|
|
15605
15671
|
id: accountsPanelId,
|
|
15606
15672
|
"data-state": accountsOpen ? "open" : "closed",
|
|
15607
15673
|
"aria-hidden": accountsOpen ? void 0 : true,
|
|
15608
|
-
className:
|
|
15674
|
+
className: cn67(
|
|
15609
15675
|
"grid transition-[grid-template-rows,opacity] duration-200 ease-out",
|
|
15610
15676
|
accountsOpen ? "grid-rows-[1fr] opacity-100" : "grid-rows-[0fr] opacity-0"
|
|
15611
15677
|
),
|
|
15612
|
-
children: /* @__PURE__ */ (0,
|
|
15678
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("div", { className: "overflow-hidden", children: /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
|
|
15613
15679
|
"div",
|
|
15614
15680
|
{
|
|
15615
15681
|
role: "listbox",
|
|
@@ -15617,7 +15683,7 @@ var SidebarMobile = React75.forwardRef(
|
|
|
15617
15683
|
className: "mt-xs flex flex-col gap-xxs rounded-lg border border-hairline bg-surface p-xs shadow-sm",
|
|
15618
15684
|
children: accountList.map((account) => {
|
|
15619
15685
|
const selected = account.value === selectedAccount;
|
|
15620
|
-
return /* @__PURE__ */ (0,
|
|
15686
|
+
return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
|
|
15621
15687
|
Button,
|
|
15622
15688
|
{
|
|
15623
15689
|
variant: "row",
|
|
@@ -15627,8 +15693,8 @@ var SidebarMobile = React75.forwardRef(
|
|
|
15627
15693
|
"data-selected": selected,
|
|
15628
15694
|
tabIndex: accountsOpen ? void 0 : -1,
|
|
15629
15695
|
onClick: () => chooseAccount(account),
|
|
15630
|
-
leadingIcon: /* @__PURE__ */ (0,
|
|
15631
|
-
trailingIcon: selected ? /* @__PURE__ */ (0,
|
|
15696
|
+
leadingIcon: /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(Icon, { name: "layers", size: 16, tone: "muted" }),
|
|
15697
|
+
trailingIcon: selected ? /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
|
|
15632
15698
|
Icon,
|
|
15633
15699
|
{
|
|
15634
15700
|
name: "check",
|
|
@@ -15639,7 +15705,7 @@ var SidebarMobile = React75.forwardRef(
|
|
|
15639
15705
|
}
|
|
15640
15706
|
}
|
|
15641
15707
|
) : void 0,
|
|
15642
|
-
children: /* @__PURE__ */ (0,
|
|
15708
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("span", { className: "truncate", children: account.label })
|
|
15643
15709
|
},
|
|
15644
15710
|
account.value
|
|
15645
15711
|
);
|
|
@@ -15649,11 +15715,11 @@ var SidebarMobile = React75.forwardRef(
|
|
|
15649
15715
|
}
|
|
15650
15716
|
) : null
|
|
15651
15717
|
] }),
|
|
15652
|
-
/* @__PURE__ */ (0,
|
|
15718
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsx)("nav", { "aria-label": "Primary", className: "mt-md flex flex-col gap-xxs", children: navItems.map((item) => {
|
|
15653
15719
|
const active = item.id === activeId;
|
|
15654
15720
|
const badged = hasBadge2(item.badge);
|
|
15655
15721
|
if (!item.children?.length) {
|
|
15656
|
-
return /* @__PURE__ */ (0,
|
|
15722
|
+
return /* @__PURE__ */ (0, import_jsx_runtime76.jsxs)(
|
|
15657
15723
|
"a",
|
|
15658
15724
|
{
|
|
15659
15725
|
href: item.href ?? `#${item.id}`,
|
|
@@ -15663,8 +15729,8 @@ var SidebarMobile = React75.forwardRef(
|
|
|
15663
15729
|
className: rowClass(active),
|
|
15664
15730
|
children: [
|
|
15665
15731
|
glyph4(item.icon, 18, 1.75),
|
|
15666
|
-
/* @__PURE__ */ (0,
|
|
15667
|
-
badged ? /* @__PURE__ */ (0,
|
|
15732
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsx)("span", { className: "truncate", children: item.label }),
|
|
15733
|
+
badged ? /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
|
|
15668
15734
|
NavBadge,
|
|
15669
15735
|
{
|
|
15670
15736
|
badge: item.badge,
|
|
@@ -15678,8 +15744,8 @@ var SidebarMobile = React75.forwardRef(
|
|
|
15678
15744
|
}
|
|
15679
15745
|
const expanded = expandedId === item.id;
|
|
15680
15746
|
const subId = `${uid}-${item.id}-sub`;
|
|
15681
|
-
return /* @__PURE__ */ (0,
|
|
15682
|
-
/* @__PURE__ */ (0,
|
|
15747
|
+
return /* @__PURE__ */ (0, import_jsx_runtime76.jsxs)("div", { className: "flex flex-col gap-xxs", children: [
|
|
15748
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
|
|
15683
15749
|
Button,
|
|
15684
15750
|
{
|
|
15685
15751
|
variant: "nav-row",
|
|
@@ -15691,19 +15757,19 @@ var SidebarMobile = React75.forwardRef(
|
|
|
15691
15757
|
onClick: () => toggleExpanded(item.id),
|
|
15692
15758
|
className: "px-md",
|
|
15693
15759
|
leadingIcon: glyph4(item.icon, 18, 1.75),
|
|
15694
|
-
trailingIcon: /* @__PURE__ */ (0,
|
|
15695
|
-
badged ? /* @__PURE__ */ (0,
|
|
15760
|
+
trailingIcon: /* @__PURE__ */ (0, import_jsx_runtime76.jsxs)("span", { className: "flex items-center gap-xs", children: [
|
|
15761
|
+
badged ? /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
|
|
15696
15762
|
NavBadge,
|
|
15697
15763
|
{
|
|
15698
15764
|
badge: item.badge,
|
|
15699
15765
|
active
|
|
15700
15766
|
}
|
|
15701
15767
|
) : null,
|
|
15702
|
-
/* @__PURE__ */ (0,
|
|
15768
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
|
|
15703
15769
|
"span",
|
|
15704
15770
|
{
|
|
15705
15771
|
"aria-hidden": "true",
|
|
15706
|
-
className:
|
|
15772
|
+
className: cn67(
|
|
15707
15773
|
"flex shrink-0 items-center transition-transform duration-200 ease-out",
|
|
15708
15774
|
expanded ? "rotate-180" : "rotate-0"
|
|
15709
15775
|
),
|
|
@@ -15711,20 +15777,20 @@ var SidebarMobile = React75.forwardRef(
|
|
|
15711
15777
|
}
|
|
15712
15778
|
)
|
|
15713
15779
|
] }),
|
|
15714
|
-
children: /* @__PURE__ */ (0,
|
|
15780
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("span", { className: "truncate text-left", children: item.label })
|
|
15715
15781
|
}
|
|
15716
15782
|
),
|
|
15717
|
-
/* @__PURE__ */ (0,
|
|
15783
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
|
|
15718
15784
|
"div",
|
|
15719
15785
|
{
|
|
15720
15786
|
id: subId,
|
|
15721
15787
|
"data-state": expanded ? "open" : "closed",
|
|
15722
15788
|
"aria-hidden": expanded ? void 0 : true,
|
|
15723
|
-
className:
|
|
15789
|
+
className: cn67(
|
|
15724
15790
|
"grid transition-[grid-template-rows,opacity] duration-200 ease-out",
|
|
15725
15791
|
expanded ? "grid-rows-[1fr] opacity-100" : "grid-rows-[0fr] opacity-0"
|
|
15726
15792
|
),
|
|
15727
|
-
children: /* @__PURE__ */ (0,
|
|
15793
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("div", { className: "overflow-hidden", children: /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("ul", { className: "flex flex-col", children: item.children.map((child) => /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime76.jsxs)(
|
|
15728
15794
|
"a",
|
|
15729
15795
|
{
|
|
15730
15796
|
href: child.href ?? `#${child.id}`,
|
|
@@ -15735,14 +15801,14 @@ var SidebarMobile = React75.forwardRef(
|
|
|
15735
15801
|
tabIndex: expanded ? void 0 : -1,
|
|
15736
15802
|
className: subRowClass,
|
|
15737
15803
|
children: [
|
|
15738
|
-
/* @__PURE__ */ (0,
|
|
15804
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
|
|
15739
15805
|
"span",
|
|
15740
15806
|
{
|
|
15741
15807
|
"aria-hidden": "true",
|
|
15742
15808
|
className: "size-4 shrink-0"
|
|
15743
15809
|
}
|
|
15744
15810
|
),
|
|
15745
|
-
/* @__PURE__ */ (0,
|
|
15811
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsx)("span", { className: "truncate", children: child.label })
|
|
15746
15812
|
]
|
|
15747
15813
|
}
|
|
15748
15814
|
) }, child.id)) }) })
|
|
@@ -15750,8 +15816,8 @@ var SidebarMobile = React75.forwardRef(
|
|
|
15750
15816
|
)
|
|
15751
15817
|
] }, item.id);
|
|
15752
15818
|
}) }),
|
|
15753
|
-
/* @__PURE__ */ (0,
|
|
15754
|
-
/* @__PURE__ */ (0,
|
|
15819
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsx)(Divider, { className: "my-md" }),
|
|
15820
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
|
|
15755
15821
|
Button,
|
|
15756
15822
|
{
|
|
15757
15823
|
variant: "outline-soft",
|
|
@@ -15763,11 +15829,11 @@ var SidebarMobile = React75.forwardRef(
|
|
|
15763
15829
|
children: primaryActionLabel
|
|
15764
15830
|
}
|
|
15765
15831
|
),
|
|
15766
|
-
/* @__PURE__ */ (0,
|
|
15767
|
-
/* @__PURE__ */ (0,
|
|
15832
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsx)(Divider, { className: "my-md" }),
|
|
15833
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsx)("nav", { "aria-label": "Secondary", className: "flex flex-col gap-xxs", children: secondaryNav.map((item) => {
|
|
15768
15834
|
const active = item.id === secondaryActiveId;
|
|
15769
15835
|
const badged = hasBadge2(item.badge);
|
|
15770
|
-
return /* @__PURE__ */ (0,
|
|
15836
|
+
return /* @__PURE__ */ (0, import_jsx_runtime76.jsxs)(
|
|
15771
15837
|
"a",
|
|
15772
15838
|
{
|
|
15773
15839
|
href: item.href ?? `#${item.id}`,
|
|
@@ -15777,8 +15843,8 @@ var SidebarMobile = React75.forwardRef(
|
|
|
15777
15843
|
className: rowClass(active),
|
|
15778
15844
|
children: [
|
|
15779
15845
|
glyph4(item.icon, 18, 1.75),
|
|
15780
|
-
/* @__PURE__ */ (0,
|
|
15781
|
-
badged ? /* @__PURE__ */ (0,
|
|
15846
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsx)("span", { className: "truncate", children: item.label }),
|
|
15847
|
+
badged ? /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
|
|
15782
15848
|
NavBadge,
|
|
15783
15849
|
{
|
|
15784
15850
|
badge: item.badge,
|
|
@@ -15791,14 +15857,14 @@ var SidebarMobile = React75.forwardRef(
|
|
|
15791
15857
|
);
|
|
15792
15858
|
}) })
|
|
15793
15859
|
] }),
|
|
15794
|
-
/* @__PURE__ */ (0,
|
|
15860
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsxs)("div", { className: "flex shrink-0 flex-col gap-sm bg-surface px-md pb-md pt-xs", children: [
|
|
15795
15861
|
mobileDrawerFooter,
|
|
15796
|
-
planTile ? /* @__PURE__ */ (0,
|
|
15862
|
+
planTile ? /* @__PURE__ */ (0, import_jsx_runtime76.jsxs)(
|
|
15797
15863
|
"a",
|
|
15798
15864
|
{
|
|
15799
15865
|
href: planTile.href ?? "#plan",
|
|
15800
15866
|
onClick: navigate({ id: "plan", href: planTile.href }),
|
|
15801
|
-
className:
|
|
15867
|
+
className: cn67(
|
|
15802
15868
|
"flex w-full cursor-pointer items-center gap-md rounded-lg bg-primary-subdued",
|
|
15803
15869
|
"px-md py-sm transition duration-150 ease-out",
|
|
15804
15870
|
"hover:bg-primary-subdued-hover active:bg-primary-subdued-hover",
|
|
@@ -15806,23 +15872,23 @@ var SidebarMobile = React75.forwardRef(
|
|
|
15806
15872
|
"focus-visible:ring-inset"
|
|
15807
15873
|
),
|
|
15808
15874
|
children: [
|
|
15809
|
-
/* @__PURE__ */ (0,
|
|
15810
|
-
/* @__PURE__ */ (0,
|
|
15811
|
-
/* @__PURE__ */ (0,
|
|
15812
|
-
/* @__PURE__ */ (0,
|
|
15875
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsx)("span", { className: "flex shrink-0 items-center text-primary-on-subdued", children: glyph4("chart-bar", 18, 2) }),
|
|
15876
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsxs)("span", { className: "flex min-w-0 flex-1 flex-col", children: [
|
|
15877
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsx)("span", { className: "truncate text-body-md text-ink", children: planTile.name }),
|
|
15878
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsx)("span", { className: "truncate text-body-tabular text-body", children: planTile.price })
|
|
15813
15879
|
] }),
|
|
15814
|
-
/* @__PURE__ */ (0,
|
|
15880
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsx)("span", { className: "shrink-0 text-primary-on-subdued", children: glyph4("arrow-up-right", 18, 2) })
|
|
15815
15881
|
]
|
|
15816
15882
|
}
|
|
15817
15883
|
) : null,
|
|
15818
|
-
/* @__PURE__ */ (0,
|
|
15819
|
-
/* @__PURE__ */ (0,
|
|
15820
|
-
/* @__PURE__ */ (0,
|
|
15821
|
-
/* @__PURE__ */ (0,
|
|
15822
|
-
profile.email ? /* @__PURE__ */ (0,
|
|
15884
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsxs)("div", { className: "flex items-center gap-sm px-xs", children: [
|
|
15885
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsx)(Avatar, { name: profile.name, src: profile.src, size: "md" }),
|
|
15886
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsxs)("span", { className: "flex min-w-0 flex-1 flex-col", children: [
|
|
15887
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsx)("span", { className: "truncate text-body-md text-ink", children: profile.name }),
|
|
15888
|
+
profile.email ? /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("span", { className: "truncate text-caption text-body", children: profile.email }) : null
|
|
15823
15889
|
] }),
|
|
15824
|
-
/* @__PURE__ */ (0,
|
|
15825
|
-
/* @__PURE__ */ (0,
|
|
15890
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsxs)("span", { className: "relative inline-flex shrink-0", children: [
|
|
15891
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
|
|
15826
15892
|
Button,
|
|
15827
15893
|
{
|
|
15828
15894
|
variant: "bare",
|
|
@@ -15833,11 +15899,11 @@ var SidebarMobile = React75.forwardRef(
|
|
|
15833
15899
|
children: glyph4("bell", 20, 1.75)
|
|
15834
15900
|
}
|
|
15835
15901
|
),
|
|
15836
|
-
notificationCount > 0 ? /* @__PURE__ */ (0,
|
|
15902
|
+
notificationCount > 0 ? /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
|
|
15837
15903
|
"span",
|
|
15838
15904
|
{
|
|
15839
15905
|
"aria-hidden": "true",
|
|
15840
|
-
className:
|
|
15906
|
+
className: cn67(
|
|
15841
15907
|
"pointer-events-none absolute -right-xxs -top-xxs",
|
|
15842
15908
|
"flex h-4 min-w-4 items-center justify-center rounded-full",
|
|
15843
15909
|
"bg-primary px-xxs text-caption text-on-primary"
|
|
@@ -15846,7 +15912,7 @@ var SidebarMobile = React75.forwardRef(
|
|
|
15846
15912
|
}
|
|
15847
15913
|
) : null
|
|
15848
15914
|
] }),
|
|
15849
|
-
/* @__PURE__ */ (0,
|
|
15915
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
|
|
15850
15916
|
Button,
|
|
15851
15917
|
{
|
|
15852
15918
|
variant: "bare",
|
|
@@ -15867,9 +15933,9 @@ var SidebarMobile = React75.forwardRef(
|
|
|
15867
15933
|
),
|
|
15868
15934
|
document.body
|
|
15869
15935
|
);
|
|
15870
|
-
return /* @__PURE__ */ (0,
|
|
15871
|
-
/* @__PURE__ */ (0,
|
|
15872
|
-
/* @__PURE__ */ (0,
|
|
15936
|
+
return /* @__PURE__ */ (0, import_jsx_runtime76.jsxs)("div", { ref, className: cn67("w-full", className), ...rest, children: [
|
|
15937
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsxs)("div", { className: "flex w-full items-center gap-xs border-b border-hairline bg-surface px-md py-sm", children: [
|
|
15938
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
|
|
15873
15939
|
Button,
|
|
15874
15940
|
{
|
|
15875
15941
|
ref: toggleRef,
|
|
@@ -15883,20 +15949,20 @@ var SidebarMobile = React75.forwardRef(
|
|
|
15883
15949
|
children: glyph4("menu", 22, 2)
|
|
15884
15950
|
}
|
|
15885
15951
|
),
|
|
15886
|
-
/* @__PURE__ */ (0,
|
|
15952
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
|
|
15887
15953
|
"a",
|
|
15888
15954
|
{
|
|
15889
15955
|
href: homeHref,
|
|
15890
15956
|
onClick: navigate({ id: "home", href: homeHref }),
|
|
15891
|
-
className:
|
|
15957
|
+
className: cn67(
|
|
15892
15958
|
"inline-flex min-w-0 cursor-pointer items-center rounded-xs",
|
|
15893
15959
|
"transition duration-150 ease-out hover:opacity-80",
|
|
15894
15960
|
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus-blue"
|
|
15895
15961
|
),
|
|
15896
|
-
children: /* @__PURE__ */ (0,
|
|
15962
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(Logo, { size: "md", wordmark })
|
|
15897
15963
|
}
|
|
15898
15964
|
),
|
|
15899
|
-
mobileActions ? /* @__PURE__ */ (0,
|
|
15965
|
+
mobileActions ? /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("div", { className: "ml-auto flex shrink-0 items-center gap-xs", children: mobileActions }) : null
|
|
15900
15966
|
] }),
|
|
15901
15967
|
drawer
|
|
15902
15968
|
] });
|
|
@@ -15905,9 +15971,9 @@ var SidebarMobile = React75.forwardRef(
|
|
|
15905
15971
|
SidebarMobile.displayName = "SidebarMobile";
|
|
15906
15972
|
|
|
15907
15973
|
// virtual-pkg:src/atoms/Sidebar/Sidebar.tsx
|
|
15908
|
-
var
|
|
15909
|
-
var
|
|
15910
|
-
var Sidebar =
|
|
15974
|
+
var import_jsx_runtime77 = require("react/jsx-runtime");
|
|
15975
|
+
var cn68 = (...values) => values.filter(Boolean).join(" ");
|
|
15976
|
+
var Sidebar = React77.forwardRef(
|
|
15911
15977
|
({
|
|
15912
15978
|
wordmark,
|
|
15913
15979
|
homeHref,
|
|
@@ -15946,8 +16012,8 @@ var Sidebar = React76.forwardRef(
|
|
|
15946
16012
|
mobileClassName,
|
|
15947
16013
|
className,
|
|
15948
16014
|
...rest
|
|
15949
|
-
}, ref) => /* @__PURE__ */ (0,
|
|
15950
|
-
/* @__PURE__ */ (0,
|
|
16015
|
+
}, ref) => /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)("div", { ref, className: cn68("h-full w-full", className), ...rest, children: [
|
|
16016
|
+
/* @__PURE__ */ (0, import_jsx_runtime77.jsx)("div", { className: "hidden h-full md:block", children: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
|
|
15951
16017
|
SidebarDesktop,
|
|
15952
16018
|
{
|
|
15953
16019
|
className: desktopClassName,
|
|
@@ -15978,7 +16044,7 @@ var Sidebar = React76.forwardRef(
|
|
|
15978
16044
|
onFoldedChange
|
|
15979
16045
|
}
|
|
15980
16046
|
) }),
|
|
15981
|
-
/* @__PURE__ */ (0,
|
|
16047
|
+
/* @__PURE__ */ (0, import_jsx_runtime77.jsx)("div", { className: "md:hidden", children: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
|
|
15982
16048
|
SidebarMobile,
|
|
15983
16049
|
{
|
|
15984
16050
|
className: mobileClassName,
|
|
@@ -16020,7 +16086,7 @@ Sidebar.displayName = "Sidebar";
|
|
|
16020
16086
|
|
|
16021
16087
|
// virtual-pkg:src/atoms/Skeleton/Skeleton.tsx
|
|
16022
16088
|
var import_react6 = __toESM(require("react"));
|
|
16023
|
-
var
|
|
16089
|
+
var import_jsx_runtime78 = require("react/jsx-runtime");
|
|
16024
16090
|
var cx2 = (...parts) => parts.filter(Boolean).join(" ");
|
|
16025
16091
|
var CARD_ROWS = [
|
|
16026
16092
|
["w-[18%]", "w-[24%]", "w-[13%]"],
|
|
@@ -16047,7 +16113,7 @@ var Skeleton = import_react6.default.forwardRef(
|
|
|
16047
16113
|
let content;
|
|
16048
16114
|
switch (variant) {
|
|
16049
16115
|
case "circle":
|
|
16050
|
-
content = /* @__PURE__ */ (0,
|
|
16116
|
+
content = /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
16051
16117
|
"div",
|
|
16052
16118
|
{
|
|
16053
16119
|
"aria-hidden": "true",
|
|
@@ -16057,7 +16123,7 @@ var Skeleton = import_react6.default.forwardRef(
|
|
|
16057
16123
|
break;
|
|
16058
16124
|
case "text": {
|
|
16059
16125
|
const count = Math.max(1, lines);
|
|
16060
|
-
content = /* @__PURE__ */ (0,
|
|
16126
|
+
content = /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { "aria-hidden": "true", className: "flex w-full flex-col gap-sm", children: Array.from({ length: count }).map((_, i) => /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
16061
16127
|
"div",
|
|
16062
16128
|
{
|
|
16063
16129
|
className: cx2(
|
|
@@ -16071,49 +16137,49 @@ var Skeleton = import_react6.default.forwardRef(
|
|
|
16071
16137
|
break;
|
|
16072
16138
|
}
|
|
16073
16139
|
case "media":
|
|
16074
|
-
content = /* @__PURE__ */ (0,
|
|
16075
|
-
/* @__PURE__ */ (0,
|
|
16076
|
-
/* @__PURE__ */ (0,
|
|
16077
|
-
/* @__PURE__ */ (0,
|
|
16078
|
-
/* @__PURE__ */ (0,
|
|
16140
|
+
content = /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { "aria-hidden": "true", className: "flex w-full items-center gap-md", children: [
|
|
16141
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { className: cx2(fill("shrink-0 rounded-full"), "size-xxl") }),
|
|
16142
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { className: "flex w-full flex-col gap-sm", children: [
|
|
16143
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { className: cx2(fill("rounded-xs"), "h-sm w-[62%]") }),
|
|
16144
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { className: cx2(fill("rounded-xs"), "h-sm w-full") })
|
|
16079
16145
|
] })
|
|
16080
16146
|
] });
|
|
16081
16147
|
break;
|
|
16082
16148
|
case "list-row":
|
|
16083
|
-
content = /* @__PURE__ */ (0,
|
|
16149
|
+
content = /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(
|
|
16084
16150
|
"div",
|
|
16085
16151
|
{
|
|
16086
16152
|
"aria-hidden": "true",
|
|
16087
16153
|
className: "flex w-full items-center rounded-md border border-hairline bg-surface px-base py-md shadow-card",
|
|
16088
16154
|
children: [
|
|
16089
|
-
/* @__PURE__ */ (0,
|
|
16090
|
-
/* @__PURE__ */ (0,
|
|
16091
|
-
/* @__PURE__ */ (0,
|
|
16092
|
-
/* @__PURE__ */ (0,
|
|
16093
|
-
/* @__PURE__ */ (0,
|
|
16155
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { className: cx2(fill("rounded-sm"), "h-md w-[46%]") }),
|
|
16156
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { className: "ml-auto flex items-center gap-md", children: [
|
|
16157
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { className: "h-lg w-px shrink-0 bg-hairline" }),
|
|
16158
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { className: cx2(fill("rounded-sm"), "size-md") }),
|
|
16159
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { className: cx2(fill("rounded-sm"), "size-md") })
|
|
16094
16160
|
] })
|
|
16095
16161
|
]
|
|
16096
16162
|
}
|
|
16097
16163
|
);
|
|
16098
16164
|
break;
|
|
16099
16165
|
case "card":
|
|
16100
|
-
content = /* @__PURE__ */ (0,
|
|
16166
|
+
content = /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
16101
16167
|
"div",
|
|
16102
16168
|
{
|
|
16103
16169
|
"aria-hidden": "true",
|
|
16104
16170
|
className: "w-full overflow-hidden rounded-lg border border-hairline bg-surface shadow-card",
|
|
16105
16171
|
children: Array.from({ length: Math.max(1, rows) }).map((_, i) => {
|
|
16106
16172
|
const [lead, mid, trail] = CARD_ROWS[i % CARD_ROWS.length];
|
|
16107
|
-
return /* @__PURE__ */ (0,
|
|
16173
|
+
return /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(
|
|
16108
16174
|
"div",
|
|
16109
16175
|
{
|
|
16110
16176
|
className: "flex items-center justify-between gap-lg border-b border-hairline-soft px-lg py-md last:border-b-0",
|
|
16111
16177
|
children: [
|
|
16112
|
-
/* @__PURE__ */ (0,
|
|
16113
|
-
/* @__PURE__ */ (0,
|
|
16114
|
-
/* @__PURE__ */ (0,
|
|
16178
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { className: "flex min-w-0 flex-1 items-center gap-lg", children: [
|
|
16179
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { className: cx2(fill("shrink-0 rounded-sm"), "h-md", lead) }),
|
|
16180
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { className: cx2(fill("shrink-0 rounded-sm"), "h-md", mid) })
|
|
16115
16181
|
] }),
|
|
16116
|
-
/* @__PURE__ */ (0,
|
|
16182
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { className: cx2(fill("shrink-0 rounded-sm"), "h-md", trail) })
|
|
16117
16183
|
]
|
|
16118
16184
|
},
|
|
16119
16185
|
i
|
|
@@ -16124,7 +16190,7 @@ var Skeleton = import_react6.default.forwardRef(
|
|
|
16124
16190
|
break;
|
|
16125
16191
|
case "bar":
|
|
16126
16192
|
default:
|
|
16127
|
-
content = /* @__PURE__ */ (0,
|
|
16193
|
+
content = /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
16128
16194
|
"div",
|
|
16129
16195
|
{
|
|
16130
16196
|
"aria-hidden": "true",
|
|
@@ -16133,7 +16199,7 @@ var Skeleton = import_react6.default.forwardRef(
|
|
|
16133
16199
|
);
|
|
16134
16200
|
break;
|
|
16135
16201
|
}
|
|
16136
|
-
return /* @__PURE__ */ (0,
|
|
16202
|
+
return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
16137
16203
|
"div",
|
|
16138
16204
|
{
|
|
16139
16205
|
ref,
|
|
@@ -16150,13 +16216,13 @@ var Skeleton = import_react6.default.forwardRef(
|
|
|
16150
16216
|
Skeleton.displayName = "Skeleton";
|
|
16151
16217
|
|
|
16152
16218
|
// virtual-pkg:src/atoms/Slider/Slider.tsx
|
|
16153
|
-
var
|
|
16154
|
-
var
|
|
16155
|
-
var
|
|
16219
|
+
var React79 = __toESM(require("react"));
|
|
16220
|
+
var import_jsx_runtime79 = require("react/jsx-runtime");
|
|
16221
|
+
var cn69 = (...values) => values.filter(Boolean).join(" ");
|
|
16156
16222
|
var THUMB_PX = 24;
|
|
16157
16223
|
var TRAVEL_INSET = THUMB_PX / 2;
|
|
16158
16224
|
var defaultFormat = (value) => value.toLocaleString();
|
|
16159
|
-
var Slider =
|
|
16225
|
+
var Slider = React79.forwardRef(
|
|
16160
16226
|
({
|
|
16161
16227
|
value,
|
|
16162
16228
|
defaultValue,
|
|
@@ -16180,12 +16246,12 @@ var Slider = React78.forwardRef(
|
|
|
16180
16246
|
"aria-label": ariaLabelProp,
|
|
16181
16247
|
...rest
|
|
16182
16248
|
}, ref) => {
|
|
16183
|
-
const generatedId =
|
|
16249
|
+
const generatedId = React79.useId();
|
|
16184
16250
|
const sliderId = id ?? `slider-${generatedId}`;
|
|
16185
|
-
const [internalValue, setInternalValue] =
|
|
16251
|
+
const [internalValue, setInternalValue] = React79.useState(
|
|
16186
16252
|
defaultValue ?? min
|
|
16187
16253
|
);
|
|
16188
|
-
const [focused, setFocused] =
|
|
16254
|
+
const [focused, setFocused] = React79.useState(false);
|
|
16189
16255
|
const isControlled = value !== void 0;
|
|
16190
16256
|
const current = isControlled ? Number(value) : internalValue;
|
|
16191
16257
|
const span = max - min;
|
|
@@ -16201,16 +16267,16 @@ var Slider = React78.forwardRef(
|
|
|
16201
16267
|
const readout = format(current);
|
|
16202
16268
|
const thumbLeft = `calc(${TRAVEL_INSET}px + (100% - ${THUMB_PX}px) * ${ratio})`;
|
|
16203
16269
|
const fillWidth = `calc(${TRAVEL_INSET}px + (100% - ${THUMB_PX}px) * ${ratio})`;
|
|
16204
|
-
return /* @__PURE__ */ (0,
|
|
16270
|
+
return /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)(
|
|
16205
16271
|
"div",
|
|
16206
16272
|
{
|
|
16207
|
-
className:
|
|
16273
|
+
className: cn69(
|
|
16208
16274
|
"flex w-full flex-col gap-lg transition-opacity duration-150 ease-out",
|
|
16209
16275
|
disabled ? "opacity-50" : "",
|
|
16210
16276
|
className
|
|
16211
16277
|
),
|
|
16212
16278
|
children: [
|
|
16213
|
-
label ? /* @__PURE__ */ (0,
|
|
16279
|
+
label ? /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
|
|
16214
16280
|
Label,
|
|
16215
16281
|
{
|
|
16216
16282
|
htmlFor: sliderId,
|
|
@@ -16219,11 +16285,11 @@ var Slider = React78.forwardRef(
|
|
|
16219
16285
|
children: label
|
|
16220
16286
|
}
|
|
16221
16287
|
) : null,
|
|
16222
|
-
showValue ? /* @__PURE__ */ (0,
|
|
16288
|
+
showValue ? /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
|
|
16223
16289
|
"output",
|
|
16224
16290
|
{
|
|
16225
16291
|
htmlFor: sliderId,
|
|
16226
|
-
className:
|
|
16292
|
+
className: cn69(
|
|
16227
16293
|
"flex min-h-12 w-full items-center rounded-md border bg-surface px-lg py-sm",
|
|
16228
16294
|
"transition-colors duration-150 ease-out",
|
|
16229
16295
|
disabled ? "border-hairline-soft" : "border-hairline-strong",
|
|
@@ -16234,14 +16300,14 @@ var Slider = React78.forwardRef(
|
|
|
16234
16300
|
children: readout
|
|
16235
16301
|
}
|
|
16236
16302
|
) : null,
|
|
16237
|
-
/* @__PURE__ */ (0,
|
|
16238
|
-
/* @__PURE__ */ (0,
|
|
16239
|
-
/* @__PURE__ */ (0,
|
|
16240
|
-
/* @__PURE__ */ (0,
|
|
16303
|
+
/* @__PURE__ */ (0, import_jsx_runtime79.jsxs)("div", { className: "flex w-full flex-col gap-sm", children: [
|
|
16304
|
+
/* @__PURE__ */ (0, import_jsx_runtime79.jsxs)("div", { className: "group relative w-full", children: [
|
|
16305
|
+
/* @__PURE__ */ (0, import_jsx_runtime79.jsx)("div", { className: "pointer-events-none flex h-10 w-full items-center px-sm", children: /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)("div", { className: "relative h-1.5 w-full rounded-full bg-surface-strong", children: [
|
|
16306
|
+
/* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
|
|
16241
16307
|
"span",
|
|
16242
16308
|
{
|
|
16243
16309
|
"aria-hidden": "true",
|
|
16244
|
-
className:
|
|
16310
|
+
className: cn69(
|
|
16245
16311
|
"absolute left-0 top-0 h-full rounded-full",
|
|
16246
16312
|
"transition-[width,background-color] duration-150 ease-out",
|
|
16247
16313
|
disabled ? "bg-primary-disabled" : "bg-primary"
|
|
@@ -16249,11 +16315,11 @@ var Slider = React78.forwardRef(
|
|
|
16249
16315
|
style: { width: fillWidth }
|
|
16250
16316
|
}
|
|
16251
16317
|
),
|
|
16252
|
-
/* @__PURE__ */ (0,
|
|
16318
|
+
/* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
|
|
16253
16319
|
"span",
|
|
16254
16320
|
{
|
|
16255
16321
|
"aria-hidden": "true",
|
|
16256
|
-
className:
|
|
16322
|
+
className: cn69(
|
|
16257
16323
|
"absolute top-1/2 size-6 -translate-x-1/2 -translate-y-1/2",
|
|
16258
16324
|
"rounded-full border-2 bg-canvas shadow-sm",
|
|
16259
16325
|
"transition duration-150 ease-out",
|
|
@@ -16264,7 +16330,7 @@ var Slider = React78.forwardRef(
|
|
|
16264
16330
|
}
|
|
16265
16331
|
)
|
|
16266
16332
|
] }) }),
|
|
16267
|
-
/* @__PURE__ */ (0,
|
|
16333
|
+
/* @__PURE__ */ (0, import_jsx_runtime79.jsx)("div", { className: "absolute inset-0 z-10", children: /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
|
|
16268
16334
|
Input,
|
|
16269
16335
|
{
|
|
16270
16336
|
ref,
|
|
@@ -16290,7 +16356,7 @@ var Slider = React78.forwardRef(
|
|
|
16290
16356
|
},
|
|
16291
16357
|
className: "h-full",
|
|
16292
16358
|
fieldClassName: "h-10 gap-0",
|
|
16293
|
-
inputClassName:
|
|
16359
|
+
inputClassName: cn69(
|
|
16294
16360
|
"h-10 w-full appearance-none bg-transparent p-0 opacity-0",
|
|
16295
16361
|
disabled ? "cursor-not-allowed" : "cursor-pointer"
|
|
16296
16362
|
),
|
|
@@ -16298,18 +16364,18 @@ var Slider = React78.forwardRef(
|
|
|
16298
16364
|
}
|
|
16299
16365
|
) })
|
|
16300
16366
|
] }),
|
|
16301
|
-
showBounds ? /* @__PURE__ */ (0,
|
|
16367
|
+
showBounds ? /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)(
|
|
16302
16368
|
"div",
|
|
16303
16369
|
{
|
|
16304
|
-
className:
|
|
16370
|
+
className: cn69(
|
|
16305
16371
|
"flex w-full items-center justify-between px-sm text-caption",
|
|
16306
16372
|
disabled ? "text-muted-soft" : "text-muted",
|
|
16307
16373
|
boundsClassName
|
|
16308
16374
|
),
|
|
16309
16375
|
style: { fontVariantNumeric: "tabular-nums" },
|
|
16310
16376
|
children: [
|
|
16311
|
-
/* @__PURE__ */ (0,
|
|
16312
|
-
/* @__PURE__ */ (0,
|
|
16377
|
+
/* @__PURE__ */ (0, import_jsx_runtime79.jsx)("span", { children: formatBounds(min) }),
|
|
16378
|
+
/* @__PURE__ */ (0, import_jsx_runtime79.jsx)("span", { children: formatBounds(max) })
|
|
16313
16379
|
]
|
|
16314
16380
|
}
|
|
16315
16381
|
) : null
|
|
@@ -16322,20 +16388,20 @@ var Slider = React78.forwardRef(
|
|
|
16322
16388
|
Slider.displayName = "Slider";
|
|
16323
16389
|
|
|
16324
16390
|
// virtual-pkg:src/atoms/Spinner/Spinner.tsx
|
|
16325
|
-
var
|
|
16326
|
-
var
|
|
16327
|
-
var
|
|
16391
|
+
var React80 = __toESM(require("react"));
|
|
16392
|
+
var import_jsx_runtime80 = require("react/jsx-runtime");
|
|
16393
|
+
var cn70 = (...values) => values.filter(Boolean).join(" ");
|
|
16328
16394
|
var GEOMETRY = {
|
|
16329
16395
|
sm: { box: 20, ring: 2, glyph: 11, stroke: 3.25, turn: 0.7 },
|
|
16330
16396
|
md: { box: 32, ring: 3, glyph: 17, stroke: 2.9, turn: 0.9 },
|
|
16331
16397
|
lg: { box: 56, ring: 4, glyph: 29, stroke: 2.4, turn: 1.1 }
|
|
16332
16398
|
};
|
|
16333
16399
|
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)";
|
|
16334
|
-
var Spinner =
|
|
16400
|
+
var Spinner = React80.forwardRef(
|
|
16335
16401
|
({ size = "md", status = "loading", message, caption, className, ...rest }, ref) => {
|
|
16336
16402
|
const { box, ring, glyph: glyph5, stroke, turn } = GEOMETRY[size];
|
|
16337
16403
|
const hole = `radial-gradient(closest-side, transparent calc(100% - ${ring}px), black calc(100% - ${ring}px))`;
|
|
16338
|
-
const indicator = /* @__PURE__ */ (0,
|
|
16404
|
+
const indicator = /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)(
|
|
16339
16405
|
"span",
|
|
16340
16406
|
{
|
|
16341
16407
|
"aria-hidden": "true",
|
|
@@ -16343,10 +16409,10 @@ var Spinner = React79.forwardRef(
|
|
|
16343
16409
|
className: "group relative inline-flex shrink-0 items-center justify-center",
|
|
16344
16410
|
style: { width: box, height: box },
|
|
16345
16411
|
children: [
|
|
16346
|
-
/* @__PURE__ */ (0,
|
|
16412
|
+
/* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
|
|
16347
16413
|
"span",
|
|
16348
16414
|
{
|
|
16349
|
-
className:
|
|
16415
|
+
className: cn70(
|
|
16350
16416
|
"absolute inset-0 rounded-full",
|
|
16351
16417
|
"animate-spin motion-reduce:animate-none",
|
|
16352
16418
|
"transition duration-200 ease-out",
|
|
@@ -16360,23 +16426,23 @@ var Spinner = React79.forwardRef(
|
|
|
16360
16426
|
}
|
|
16361
16427
|
}
|
|
16362
16428
|
),
|
|
16363
|
-
/* @__PURE__ */ (0,
|
|
16429
|
+
/* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
|
|
16364
16430
|
"span",
|
|
16365
16431
|
{
|
|
16366
|
-
className:
|
|
16432
|
+
className: cn70(
|
|
16367
16433
|
"absolute inset-0 inline-flex items-center justify-center rounded-full",
|
|
16368
16434
|
"bg-primary text-on-primary",
|
|
16369
16435
|
"transition duration-200 ease-out",
|
|
16370
16436
|
"group-data-[status=loading]:scale-90 group-data-[status=loading]:opacity-0"
|
|
16371
16437
|
),
|
|
16372
|
-
children: /* @__PURE__ */ (0,
|
|
16438
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
|
|
16373
16439
|
Icon,
|
|
16374
16440
|
{
|
|
16375
16441
|
name: "check",
|
|
16376
16442
|
size: glyph5,
|
|
16377
16443
|
strokeWidth: stroke,
|
|
16378
16444
|
tone: "on-dark",
|
|
16379
|
-
className:
|
|
16445
|
+
className: cn70(
|
|
16380
16446
|
"transition duration-200 ease-out",
|
|
16381
16447
|
"group-data-[status=success]:scale-100 group-data-[status=success]:opacity-100",
|
|
16382
16448
|
"group-data-[status=loading]:scale-50 group-data-[status=loading]:opacity-0"
|
|
@@ -16388,26 +16454,26 @@ var Spinner = React79.forwardRef(
|
|
|
16388
16454
|
]
|
|
16389
16455
|
}
|
|
16390
16456
|
);
|
|
16391
|
-
return /* @__PURE__ */ (0,
|
|
16457
|
+
return /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)(
|
|
16392
16458
|
"div",
|
|
16393
16459
|
{
|
|
16394
16460
|
ref,
|
|
16395
16461
|
role: "status",
|
|
16396
16462
|
"aria-live": "polite",
|
|
16397
16463
|
"data-status": status,
|
|
16398
|
-
className:
|
|
16464
|
+
className: cn70(
|
|
16399
16465
|
"inline-flex",
|
|
16400
16466
|
caption ? "flex-col items-center gap-sm" : "items-center",
|
|
16401
16467
|
className
|
|
16402
16468
|
),
|
|
16403
16469
|
...rest,
|
|
16404
16470
|
children: [
|
|
16405
|
-
message ? /* @__PURE__ */ (0,
|
|
16471
|
+
message ? /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)("span", { className: "inline-flex items-center gap-md", children: [
|
|
16406
16472
|
indicator,
|
|
16407
|
-
/* @__PURE__ */ (0,
|
|
16473
|
+
/* @__PURE__ */ (0, import_jsx_runtime80.jsx)("span", { className: "text-body-md text-ink transition-colors duration-200 ease-out", children: message })
|
|
16408
16474
|
] }) : indicator,
|
|
16409
|
-
caption ? /* @__PURE__ */ (0,
|
|
16410
|
-
/* @__PURE__ */ (0,
|
|
16475
|
+
caption ? /* @__PURE__ */ (0, import_jsx_runtime80.jsx)("span", { className: "text-body-sm text-ink", children: caption }) : null,
|
|
16476
|
+
/* @__PURE__ */ (0, import_jsx_runtime80.jsx)("span", { className: "sr-only", children: status === "success" ? caption ?? "Success" : message ?? "Loading" })
|
|
16411
16477
|
]
|
|
16412
16478
|
}
|
|
16413
16479
|
);
|
|
@@ -16416,9 +16482,9 @@ var Spinner = React79.forwardRef(
|
|
|
16416
16482
|
Spinner.displayName = "Spinner";
|
|
16417
16483
|
|
|
16418
16484
|
// virtual-pkg:src/atoms/StepperItem/StepperItem.tsx
|
|
16419
|
-
var
|
|
16420
|
-
var
|
|
16421
|
-
var
|
|
16485
|
+
var React81 = __toESM(require("react"));
|
|
16486
|
+
var import_jsx_runtime81 = require("react/jsx-runtime");
|
|
16487
|
+
var cn71 = (...values) => values.filter(Boolean).join(" ");
|
|
16422
16488
|
var STATUS_TEXT = {
|
|
16423
16489
|
upcoming: "Upcoming",
|
|
16424
16490
|
active: "In progress",
|
|
@@ -16437,7 +16503,7 @@ var DOT_SKIN = {
|
|
|
16437
16503
|
complete: "size-4 bg-primary",
|
|
16438
16504
|
error: "size-4 bg-semantic-error"
|
|
16439
16505
|
};
|
|
16440
|
-
var StepperItem =
|
|
16506
|
+
var StepperItem = React81.forwardRef(
|
|
16441
16507
|
({
|
|
16442
16508
|
variant = "step",
|
|
16443
16509
|
status = "upcoming",
|
|
@@ -16454,18 +16520,18 @@ var StepperItem = React80.forwardRef(
|
|
|
16454
16520
|
const max = progressMax > 0 ? progressMax : 1;
|
|
16455
16521
|
const value = Math.min(Math.max(progressValue, 0), max);
|
|
16456
16522
|
const percent = Math.round(value / max * 100);
|
|
16457
|
-
return /* @__PURE__ */ (0,
|
|
16523
|
+
return /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)(
|
|
16458
16524
|
"div",
|
|
16459
16525
|
{
|
|
16460
16526
|
ref,
|
|
16461
|
-
className:
|
|
16527
|
+
className: cn71(
|
|
16462
16528
|
"flex w-full items-center gap-md rounded-xl border border-hairline bg-surface p-base shadow-card",
|
|
16463
16529
|
className
|
|
16464
16530
|
),
|
|
16465
16531
|
...rest,
|
|
16466
16532
|
children: [
|
|
16467
|
-
/* @__PURE__ */ (0,
|
|
16468
|
-
/* @__PURE__ */ (0,
|
|
16533
|
+
/* @__PURE__ */ (0, import_jsx_runtime81.jsxs)("div", { className: "relative grid size-[4.5rem] shrink-0 place-items-center", children: [
|
|
16534
|
+
/* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
|
|
16469
16535
|
"span",
|
|
16470
16536
|
{
|
|
16471
16537
|
"aria-hidden": "true",
|
|
@@ -16475,48 +16541,48 @@ var StepperItem = React80.forwardRef(
|
|
|
16475
16541
|
}
|
|
16476
16542
|
}
|
|
16477
16543
|
),
|
|
16478
|
-
/* @__PURE__ */ (0,
|
|
16544
|
+
/* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
|
|
16479
16545
|
"span",
|
|
16480
16546
|
{
|
|
16481
16547
|
"aria-hidden": "true",
|
|
16482
16548
|
className: "absolute inset-sm rounded-full bg-surface"
|
|
16483
16549
|
}
|
|
16484
16550
|
),
|
|
16485
|
-
/* @__PURE__ */ (0,
|
|
16486
|
-
/* @__PURE__ */ (0,
|
|
16551
|
+
/* @__PURE__ */ (0, import_jsx_runtime81.jsxs)("span", { className: "relative text-center text-caption text-primary", children: [
|
|
16552
|
+
/* @__PURE__ */ (0, import_jsx_runtime81.jsxs)("span", { className: "block whitespace-nowrap", children: [
|
|
16487
16553
|
value,
|
|
16488
16554
|
" of ",
|
|
16489
16555
|
max
|
|
16490
16556
|
] }),
|
|
16491
|
-
/* @__PURE__ */ (0,
|
|
16557
|
+
/* @__PURE__ */ (0, import_jsx_runtime81.jsx)("span", { className: "block", children: progressUnit })
|
|
16492
16558
|
] })
|
|
16493
16559
|
] }),
|
|
16494
|
-
/* @__PURE__ */ (0,
|
|
16560
|
+
/* @__PURE__ */ (0, import_jsx_runtime81.jsx)("p", { className: "min-w-0 flex-1 text-body-lg text-ink", children: label })
|
|
16495
16561
|
]
|
|
16496
16562
|
}
|
|
16497
16563
|
);
|
|
16498
16564
|
}
|
|
16499
16565
|
const dot = DOT_SKIN[status];
|
|
16500
|
-
return /* @__PURE__ */ (0,
|
|
16566
|
+
return /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)(
|
|
16501
16567
|
"div",
|
|
16502
16568
|
{
|
|
16503
16569
|
ref,
|
|
16504
16570
|
"aria-current": status === "active" ? "step" : void 0,
|
|
16505
|
-
className:
|
|
16571
|
+
className: cn71("flex w-full items-stretch gap-md", className),
|
|
16506
16572
|
...rest,
|
|
16507
16573
|
children: [
|
|
16508
|
-
/* @__PURE__ */ (0,
|
|
16509
|
-
/* @__PURE__ */ (0,
|
|
16574
|
+
/* @__PURE__ */ (0, import_jsx_runtime81.jsxs)("div", { className: "flex w-6 shrink-0 flex-col items-center", children: [
|
|
16575
|
+
/* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
|
|
16510
16576
|
"span",
|
|
16511
16577
|
{
|
|
16512
|
-
className:
|
|
16578
|
+
className: cn71(
|
|
16513
16579
|
"grid size-6 shrink-0 place-items-center rounded-full transition-colors duration-200 ease-out",
|
|
16514
16580
|
RING_SKIN[status]
|
|
16515
16581
|
),
|
|
16516
|
-
children: dot ? /* @__PURE__ */ (0,
|
|
16582
|
+
children: dot ? /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
|
|
16517
16583
|
"span",
|
|
16518
16584
|
{
|
|
16519
|
-
className:
|
|
16585
|
+
className: cn71(
|
|
16520
16586
|
"rounded-full transition-colors duration-200 ease-out",
|
|
16521
16587
|
dot
|
|
16522
16588
|
)
|
|
@@ -16524,12 +16590,12 @@ var StepperItem = React80.forwardRef(
|
|
|
16524
16590
|
) : null
|
|
16525
16591
|
}
|
|
16526
16592
|
),
|
|
16527
|
-
connector ? /* @__PURE__ */ (0,
|
|
16593
|
+
connector ? /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("span", { "aria-hidden": "true", className: "mt-sm w-px flex-1 bg-hairline" }) : null
|
|
16528
16594
|
] }),
|
|
16529
|
-
/* @__PURE__ */ (0,
|
|
16530
|
-
/* @__PURE__ */ (0,
|
|
16531
|
-
meta ? /* @__PURE__ */ (0,
|
|
16532
|
-
/* @__PURE__ */ (0,
|
|
16595
|
+
/* @__PURE__ */ (0, import_jsx_runtime81.jsxs)("div", { className: cn71("min-w-0 flex-1 pt-xl", connector ? "pb-xl" : "pb-0"), children: [
|
|
16596
|
+
/* @__PURE__ */ (0, import_jsx_runtime81.jsx)("p", { className: "text-body-md text-ink", children: label }),
|
|
16597
|
+
meta ? /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("p", { className: "mt-xxs text-body-tabular text-muted", children: meta }) : null,
|
|
16598
|
+
/* @__PURE__ */ (0, import_jsx_runtime81.jsx)("span", { className: "sr-only", children: STATUS_TEXT[status] })
|
|
16533
16599
|
] })
|
|
16534
16600
|
]
|
|
16535
16601
|
}
|
|
@@ -16539,14 +16605,14 @@ var StepperItem = React80.forwardRef(
|
|
|
16539
16605
|
StepperItem.displayName = "StepperItem";
|
|
16540
16606
|
|
|
16541
16607
|
// virtual-pkg:src/atoms/Tab/Tab.tsx
|
|
16542
|
-
var
|
|
16543
|
-
var
|
|
16544
|
-
var
|
|
16608
|
+
var React82 = __toESM(require("react"));
|
|
16609
|
+
var import_jsx_runtime82 = require("react/jsx-runtime");
|
|
16610
|
+
var cn72 = (...values) => values.filter(Boolean).join(" ");
|
|
16545
16611
|
var pillPadding = {
|
|
16546
16612
|
sm: "px-xs py-xxs text-caption",
|
|
16547
16613
|
md: "px-sm py-xxs text-caption"
|
|
16548
16614
|
};
|
|
16549
|
-
var Tab =
|
|
16615
|
+
var Tab = React82.forwardRef(
|
|
16550
16616
|
({
|
|
16551
16617
|
label,
|
|
16552
16618
|
count,
|
|
@@ -16556,7 +16622,7 @@ var Tab = React81.forwardRef(
|
|
|
16556
16622
|
disabled = false,
|
|
16557
16623
|
className,
|
|
16558
16624
|
...rest
|
|
16559
|
-
}, ref) => /* @__PURE__ */ (0,
|
|
16625
|
+
}, ref) => /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(
|
|
16560
16626
|
Button,
|
|
16561
16627
|
{
|
|
16562
16628
|
ref,
|
|
@@ -16567,7 +16633,7 @@ var Tab = React81.forwardRef(
|
|
|
16567
16633
|
"aria-selected": active,
|
|
16568
16634
|
disabled,
|
|
16569
16635
|
"data-active": active || void 0,
|
|
16570
|
-
className:
|
|
16636
|
+
className: cn72(
|
|
16571
16637
|
"cursor-pointer transition duration-150 ease-out active:scale-[0.98]",
|
|
16572
16638
|
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus-blue",
|
|
16573
16639
|
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
@@ -16576,20 +16642,20 @@ var Tab = React81.forwardRef(
|
|
|
16576
16642
|
),
|
|
16577
16643
|
...rest,
|
|
16578
16644
|
children: [
|
|
16579
|
-
/* @__PURE__ */ (0,
|
|
16645
|
+
/* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
|
|
16580
16646
|
"span",
|
|
16581
16647
|
{
|
|
16582
|
-
className:
|
|
16648
|
+
className: cn72(
|
|
16583
16649
|
"whitespace-nowrap transition-colors duration-150 ease-out",
|
|
16584
16650
|
size === "sm" ? "text-body-sm" : "text-label"
|
|
16585
16651
|
),
|
|
16586
16652
|
children: label
|
|
16587
16653
|
}
|
|
16588
16654
|
),
|
|
16589
|
-
count !== void 0 && count !== null ? /* @__PURE__ */ (0,
|
|
16655
|
+
count !== void 0 && count !== null ? /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
|
|
16590
16656
|
"span",
|
|
16591
16657
|
{
|
|
16592
|
-
className:
|
|
16658
|
+
className: cn72(
|
|
16593
16659
|
"inline-flex shrink-0 items-center justify-center rounded-full",
|
|
16594
16660
|
"tabular-nums font-weight-label leading-none",
|
|
16595
16661
|
"transition-colors duration-150 ease-out",
|
|
@@ -16599,11 +16665,11 @@ var Tab = React81.forwardRef(
|
|
|
16599
16665
|
children: count
|
|
16600
16666
|
}
|
|
16601
16667
|
) : null,
|
|
16602
|
-
indicator ? /* @__PURE__ */ (0,
|
|
16668
|
+
indicator ? /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
|
|
16603
16669
|
"span",
|
|
16604
16670
|
{
|
|
16605
16671
|
"aria-hidden": "true",
|
|
16606
|
-
className:
|
|
16672
|
+
className: cn72(
|
|
16607
16673
|
"absolute -left-xs -right-xs bottom-0 rounded-full",
|
|
16608
16674
|
"transition-colors duration-150 ease-out",
|
|
16609
16675
|
active ? "h-xxs bg-primary" : "h-px bg-hairline"
|
|
@@ -16615,11 +16681,11 @@ var Tab = React81.forwardRef(
|
|
|
16615
16681
|
)
|
|
16616
16682
|
);
|
|
16617
16683
|
Tab.displayName = "Tab";
|
|
16618
|
-
var TabList =
|
|
16684
|
+
var TabList = React82.forwardRef(
|
|
16619
16685
|
({ children, className, indicator = true, onKeyDown, ...rest }, ref) => {
|
|
16620
|
-
const railRef =
|
|
16621
|
-
const [bar, setBar] =
|
|
16622
|
-
const measure =
|
|
16686
|
+
const railRef = React82.useRef(null);
|
|
16687
|
+
const [bar, setBar] = React82.useState({ left: 0, width: 0, visible: false });
|
|
16688
|
+
const measure = React82.useCallback(() => {
|
|
16623
16689
|
const item = railRef.current?.querySelector(
|
|
16624
16690
|
'[role="tab"][aria-selected="true"]'
|
|
16625
16691
|
);
|
|
@@ -16632,19 +16698,19 @@ var TabList = React81.forwardRef(
|
|
|
16632
16698
|
(prev) => prev.left === next.left && prev.width === next.width && prev.visible === next.visible ? prev : next
|
|
16633
16699
|
);
|
|
16634
16700
|
}, []);
|
|
16635
|
-
|
|
16701
|
+
React82.useLayoutEffect(() => {
|
|
16636
16702
|
measure();
|
|
16637
16703
|
});
|
|
16638
|
-
|
|
16704
|
+
React82.useEffect(() => {
|
|
16639
16705
|
const rail = railRef.current;
|
|
16640
16706
|
if (!rail || typeof ResizeObserver === "undefined") return;
|
|
16641
16707
|
const observer = new ResizeObserver(measure);
|
|
16642
16708
|
observer.observe(rail);
|
|
16643
16709
|
return () => observer.disconnect();
|
|
16644
16710
|
}, [measure]);
|
|
16645
|
-
const items =
|
|
16711
|
+
const items = React82.Children.map(
|
|
16646
16712
|
children,
|
|
16647
|
-
(child) =>
|
|
16713
|
+
(child) => React82.isValidElement(child) && child.type === Tab ? React82.cloneElement(child, { indicator: false }) : child
|
|
16648
16714
|
);
|
|
16649
16715
|
const handleKeyDown = (event) => {
|
|
16650
16716
|
onKeyDown?.(event);
|
|
@@ -16661,7 +16727,7 @@ var TabList = React81.forwardRef(
|
|
|
16661
16727
|
event.preventDefault();
|
|
16662
16728
|
tabs[next]?.focus();
|
|
16663
16729
|
};
|
|
16664
|
-
return /* @__PURE__ */ (0,
|
|
16730
|
+
return /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(
|
|
16665
16731
|
"div",
|
|
16666
16732
|
{
|
|
16667
16733
|
ref: (node) => {
|
|
@@ -16669,9 +16735,9 @@ var TabList = React81.forwardRef(
|
|
|
16669
16735
|
if (typeof ref === "function") ref(node);
|
|
16670
16736
|
else if (ref) ref.current = node;
|
|
16671
16737
|
},
|
|
16672
|
-
className:
|
|
16738
|
+
className: cn72("relative w-full", className),
|
|
16673
16739
|
children: [
|
|
16674
|
-
/* @__PURE__ */ (0,
|
|
16740
|
+
/* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
|
|
16675
16741
|
"div",
|
|
16676
16742
|
{
|
|
16677
16743
|
role: "tablist",
|
|
@@ -16682,14 +16748,14 @@ var TabList = React81.forwardRef(
|
|
|
16682
16748
|
children: items
|
|
16683
16749
|
}
|
|
16684
16750
|
),
|
|
16685
|
-
/* @__PURE__ */ (0,
|
|
16751
|
+
/* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
|
|
16686
16752
|
"span",
|
|
16687
16753
|
{
|
|
16688
16754
|
"aria-hidden": "true",
|
|
16689
16755
|
className: "pointer-events-none absolute inset-x-0 bottom-0 h-px bg-hairline"
|
|
16690
16756
|
}
|
|
16691
16757
|
),
|
|
16692
|
-
indicator ? /* @__PURE__ */ (0,
|
|
16758
|
+
indicator ? /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
|
|
16693
16759
|
"span",
|
|
16694
16760
|
{
|
|
16695
16761
|
"aria-hidden": "true",
|
|
@@ -16698,7 +16764,7 @@ var TabList = React81.forwardRef(
|
|
|
16698
16764
|
width: bar.width ? `${bar.width}px` : 0,
|
|
16699
16765
|
opacity: bar.visible ? 1 : 0
|
|
16700
16766
|
},
|
|
16701
|
-
className:
|
|
16767
|
+
className: cn72(
|
|
16702
16768
|
"pointer-events-none absolute bottom-0 left-0 h-xxs rounded-full bg-primary",
|
|
16703
16769
|
"transition-[transform,width,opacity] duration-200 ease-out"
|
|
16704
16770
|
)
|
|
@@ -16712,9 +16778,9 @@ var TabList = React81.forwardRef(
|
|
|
16712
16778
|
TabList.displayName = "TabList";
|
|
16713
16779
|
|
|
16714
16780
|
// virtual-pkg:src/atoms/TableHeaderCell/TableHeaderCell.tsx
|
|
16715
|
-
var
|
|
16716
|
-
var
|
|
16717
|
-
var
|
|
16781
|
+
var React83 = __toESM(require("react"));
|
|
16782
|
+
var import_jsx_runtime83 = require("react/jsx-runtime");
|
|
16783
|
+
var cn73 = (...values) => values.filter(Boolean).join(" ");
|
|
16718
16784
|
var NEXT_SORT = {
|
|
16719
16785
|
none: "asc",
|
|
16720
16786
|
asc: "desc",
|
|
@@ -16726,7 +16792,7 @@ var ALIGN_STYLES = {
|
|
|
16726
16792
|
right: "justify-end"
|
|
16727
16793
|
};
|
|
16728
16794
|
var iconTone = (active) => active ? "var(--color-primary)" : "var(--color-muted)";
|
|
16729
|
-
var TableHeaderCell =
|
|
16795
|
+
var TableHeaderCell = React83.forwardRef(
|
|
16730
16796
|
({
|
|
16731
16797
|
label,
|
|
16732
16798
|
sort,
|
|
@@ -16737,7 +16803,7 @@ var TableHeaderCell = React82.forwardRef(
|
|
|
16737
16803
|
...rest
|
|
16738
16804
|
}, ref) => {
|
|
16739
16805
|
const isControlled = sort !== void 0;
|
|
16740
|
-
const [internalSort, setInternalSort] =
|
|
16806
|
+
const [internalSort, setInternalSort] = React83.useState(defaultSort);
|
|
16741
16807
|
const current = isControlled ? sort : internalSort;
|
|
16742
16808
|
const sorted = current !== "none";
|
|
16743
16809
|
const handleSort = () => {
|
|
@@ -16747,15 +16813,15 @@ var TableHeaderCell = React82.forwardRef(
|
|
|
16747
16813
|
};
|
|
16748
16814
|
const ariaSort = current === "asc" ? "ascending" : current === "desc" ? "descending" : "none";
|
|
16749
16815
|
const accessibleName = current === "asc" ? `${label}, sorted ascending` : current === "desc" ? `${label}, sorted descending` : `Sort by ${label}`;
|
|
16750
|
-
return /* @__PURE__ */ (0,
|
|
16816
|
+
return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
|
|
16751
16817
|
"th",
|
|
16752
16818
|
{
|
|
16753
16819
|
ref,
|
|
16754
16820
|
scope: "col",
|
|
16755
16821
|
"aria-sort": ariaSort,
|
|
16756
|
-
className:
|
|
16822
|
+
className: cn73("w-full p-0 align-middle", className),
|
|
16757
16823
|
...rest,
|
|
16758
|
-
children: /* @__PURE__ */ (0,
|
|
16824
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
|
|
16759
16825
|
Button,
|
|
16760
16826
|
{
|
|
16761
16827
|
variant: "band",
|
|
@@ -16763,27 +16829,27 @@ var TableHeaderCell = React82.forwardRef(
|
|
|
16763
16829
|
"aria-label": accessibleName,
|
|
16764
16830
|
onClick: handleSort,
|
|
16765
16831
|
className: ALIGN_STYLES[align],
|
|
16766
|
-
trailingIcon: /* @__PURE__ */ (0,
|
|
16767
|
-
/* @__PURE__ */ (0,
|
|
16832
|
+
trailingIcon: /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("span", { className: "relative inline-flex size-5 items-center justify-center", children: [
|
|
16833
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
|
|
16768
16834
|
Icon,
|
|
16769
16835
|
{
|
|
16770
16836
|
name: "chevrons-down-up",
|
|
16771
16837
|
size: 18,
|
|
16772
16838
|
strokeWidth: 2.25,
|
|
16773
|
-
className:
|
|
16839
|
+
className: cn73(
|
|
16774
16840
|
"absolute transition duration-200 ease-out",
|
|
16775
16841
|
sorted ? "scale-75 opacity-0" : "scale-100 opacity-100"
|
|
16776
16842
|
),
|
|
16777
16843
|
style: { color: iconTone(sorted) }
|
|
16778
16844
|
}
|
|
16779
16845
|
),
|
|
16780
|
-
/* @__PURE__ */ (0,
|
|
16846
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
|
|
16781
16847
|
Icon,
|
|
16782
16848
|
{
|
|
16783
16849
|
name: "chevron-down",
|
|
16784
16850
|
size: 20,
|
|
16785
16851
|
strokeWidth: 2.25,
|
|
16786
|
-
className:
|
|
16852
|
+
className: cn73(
|
|
16787
16853
|
"absolute transition duration-200 ease-out",
|
|
16788
16854
|
current === "asc" ? "rotate-180" : "rotate-0",
|
|
16789
16855
|
sorted ? "scale-100 opacity-100" : "scale-75 opacity-0"
|
|
@@ -16792,10 +16858,10 @@ var TableHeaderCell = React82.forwardRef(
|
|
|
16792
16858
|
}
|
|
16793
16859
|
)
|
|
16794
16860
|
] }),
|
|
16795
|
-
children: /* @__PURE__ */ (0,
|
|
16861
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
|
|
16796
16862
|
"span",
|
|
16797
16863
|
{
|
|
16798
|
-
className:
|
|
16864
|
+
className: cn73(
|
|
16799
16865
|
"min-w-0 truncate uppercase",
|
|
16800
16866
|
"transition-colors duration-150 ease-out",
|
|
16801
16867
|
sorted ? "text-ink" : "text-muted"
|
|
@@ -16812,15 +16878,15 @@ var TableHeaderCell = React82.forwardRef(
|
|
|
16812
16878
|
TableHeaderCell.displayName = "TableHeaderCell";
|
|
16813
16879
|
|
|
16814
16880
|
// virtual-pkg:src/atoms/TableRow/TableRow.tsx
|
|
16815
|
-
var
|
|
16816
|
-
var
|
|
16817
|
-
var
|
|
16881
|
+
var React84 = __toESM(require("react"));
|
|
16882
|
+
var import_jsx_runtime84 = require("react/jsx-runtime");
|
|
16883
|
+
var cn74 = (...values) => values.filter(Boolean).join(" ");
|
|
16818
16884
|
var dotStyles = {
|
|
16819
16885
|
live: "bg-primary",
|
|
16820
16886
|
pending: "bg-semantic-warning",
|
|
16821
16887
|
failed: "bg-semantic-error"
|
|
16822
16888
|
};
|
|
16823
|
-
var TableRow =
|
|
16889
|
+
var TableRow = React84.forwardRef(
|
|
16824
16890
|
({
|
|
16825
16891
|
merchant,
|
|
16826
16892
|
date,
|
|
@@ -16834,18 +16900,18 @@ var TableRow = React83.forwardRef(
|
|
|
16834
16900
|
...rest
|
|
16835
16901
|
}, ref) => {
|
|
16836
16902
|
const isControlled = selected !== void 0;
|
|
16837
|
-
const [internalSelected, setInternalSelected] =
|
|
16903
|
+
const [internalSelected, setInternalSelected] = React84.useState(defaultSelected);
|
|
16838
16904
|
const isSelected = isControlled ? Boolean(selected) : internalSelected;
|
|
16839
16905
|
const handleSelectedChange = (next) => {
|
|
16840
16906
|
if (!isControlled) setInternalSelected(next);
|
|
16841
16907
|
onSelectedChange?.(next);
|
|
16842
16908
|
};
|
|
16843
|
-
return /* @__PURE__ */ (0,
|
|
16909
|
+
return /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)(
|
|
16844
16910
|
"div",
|
|
16845
16911
|
{
|
|
16846
16912
|
ref,
|
|
16847
16913
|
"data-state": isSelected ? "selected" : "default",
|
|
16848
|
-
className:
|
|
16914
|
+
className: cn74(
|
|
16849
16915
|
"relative flex w-full items-center gap-xl overflow-hidden rounded-lg border py-md pl-lg pr-xl",
|
|
16850
16916
|
"transition-colors duration-200 ease-out",
|
|
16851
16917
|
"has-[:focus-visible]:ring-2 has-[:focus-visible]:ring-focus-blue",
|
|
@@ -16854,17 +16920,17 @@ var TableRow = React83.forwardRef(
|
|
|
16854
16920
|
),
|
|
16855
16921
|
...rest,
|
|
16856
16922
|
children: [
|
|
16857
|
-
/* @__PURE__ */ (0,
|
|
16923
|
+
/* @__PURE__ */ (0, import_jsx_runtime84.jsx)(
|
|
16858
16924
|
"span",
|
|
16859
16925
|
{
|
|
16860
16926
|
"aria-hidden": "true",
|
|
16861
|
-
className:
|
|
16927
|
+
className: cn74(
|
|
16862
16928
|
"absolute inset-y-0 left-0 w-1 bg-primary transition-opacity duration-200 ease-out",
|
|
16863
16929
|
isSelected ? "opacity-100" : "opacity-0"
|
|
16864
16930
|
)
|
|
16865
16931
|
}
|
|
16866
16932
|
),
|
|
16867
|
-
/* @__PURE__ */ (0,
|
|
16933
|
+
/* @__PURE__ */ (0, import_jsx_runtime84.jsx)(
|
|
16868
16934
|
Checkbox,
|
|
16869
16935
|
{
|
|
16870
16936
|
chrome: "bare",
|
|
@@ -16874,15 +16940,15 @@ var TableRow = React83.forwardRef(
|
|
|
16874
16940
|
"aria-label": `Select ${merchant}`
|
|
16875
16941
|
}
|
|
16876
16942
|
),
|
|
16877
|
-
/* @__PURE__ */ (0,
|
|
16878
|
-
/* @__PURE__ */ (0,
|
|
16879
|
-
tag ? /* @__PURE__ */ (0,
|
|
16880
|
-
status ? /* @__PURE__ */ (0,
|
|
16881
|
-
/* @__PURE__ */ (0,
|
|
16943
|
+
/* @__PURE__ */ (0, import_jsx_runtime84.jsx)("span", { className: "min-w-0 flex-1 truncate text-body-md font-weight-label text-ink", children: merchant }),
|
|
16944
|
+
/* @__PURE__ */ (0, import_jsx_runtime84.jsx)("span", { className: "shrink-0 text-body-md text-muted", children: date }),
|
|
16945
|
+
tag ? /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("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,
|
|
16946
|
+
status ? /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("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: [
|
|
16947
|
+
/* @__PURE__ */ (0, import_jsx_runtime84.jsx)(
|
|
16882
16948
|
"span",
|
|
16883
16949
|
{
|
|
16884
16950
|
"aria-hidden": "true",
|
|
16885
|
-
className:
|
|
16951
|
+
className: cn74(
|
|
16886
16952
|
"size-1.5 shrink-0 rounded-full",
|
|
16887
16953
|
dotStyles[status.tone ?? "live"]
|
|
16888
16954
|
)
|
|
@@ -16890,7 +16956,7 @@ var TableRow = React83.forwardRef(
|
|
|
16890
16956
|
),
|
|
16891
16957
|
status.label
|
|
16892
16958
|
] }) : null,
|
|
16893
|
-
/* @__PURE__ */ (0,
|
|
16959
|
+
/* @__PURE__ */ (0, import_jsx_runtime84.jsx)("span", { className: "shrink-0 text-body-tabular font-weight-label text-ink", children: amount })
|
|
16894
16960
|
]
|
|
16895
16961
|
}
|
|
16896
16962
|
);
|
|
@@ -16899,9 +16965,9 @@ var TableRow = React83.forwardRef(
|
|
|
16899
16965
|
TableRow.displayName = "TableRow";
|
|
16900
16966
|
|
|
16901
16967
|
// virtual-pkg:src/atoms/TestimonialBlock/TestimonialBlock.tsx
|
|
16902
|
-
var
|
|
16903
|
-
var
|
|
16904
|
-
var TestimonialBlock =
|
|
16968
|
+
var React85 = __toESM(require("react"));
|
|
16969
|
+
var import_jsx_runtime85 = require("react/jsx-runtime");
|
|
16970
|
+
var TestimonialBlock = React85.forwardRef(
|
|
16905
16971
|
({
|
|
16906
16972
|
quote,
|
|
16907
16973
|
name,
|
|
@@ -16910,7 +16976,7 @@ var TestimonialBlock = React84.forwardRef(
|
|
|
16910
16976
|
hideMark = false,
|
|
16911
16977
|
className,
|
|
16912
16978
|
...rest
|
|
16913
|
-
}, ref) => /* @__PURE__ */ (0,
|
|
16979
|
+
}, ref) => /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(
|
|
16914
16980
|
"figure",
|
|
16915
16981
|
{
|
|
16916
16982
|
ref,
|
|
@@ -16921,10 +16987,10 @@ var TestimonialBlock = React84.forwardRef(
|
|
|
16921
16987
|
className
|
|
16922
16988
|
].filter(Boolean).join(" "),
|
|
16923
16989
|
...rest,
|
|
16924
|
-
children: /* @__PURE__ */ (0,
|
|
16925
|
-
!hideMark ? /* @__PURE__ */ (0,
|
|
16926
|
-
/* @__PURE__ */ (0,
|
|
16927
|
-
/* @__PURE__ */ (0,
|
|
16990
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("div", { className: "flex flex-col items-start gap-lg md:flex-row md:items-stretch md:gap-0", children: [
|
|
16991
|
+
!hideMark ? /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)(import_jsx_runtime85.Fragment, { children: [
|
|
16992
|
+
/* @__PURE__ */ (0, import_jsx_runtime85.jsx)("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__ */ (0, import_jsx_runtime85.jsx)(Icon, { name: iconName, size: 32, strokeWidth: 1.5 }) }),
|
|
16993
|
+
/* @__PURE__ */ (0, import_jsx_runtime85.jsx)(
|
|
16928
16994
|
"div",
|
|
16929
16995
|
{
|
|
16930
16996
|
"aria-hidden": "true",
|
|
@@ -16932,8 +16998,8 @@ var TestimonialBlock = React84.forwardRef(
|
|
|
16932
16998
|
}
|
|
16933
16999
|
)
|
|
16934
17000
|
] }) : null,
|
|
16935
|
-
/* @__PURE__ */ (0,
|
|
16936
|
-
/* @__PURE__ */ (0,
|
|
17001
|
+
/* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("div", { className: "min-w-0 flex-1", children: [
|
|
17002
|
+
/* @__PURE__ */ (0, import_jsx_runtime85.jsx)(
|
|
16937
17003
|
"span",
|
|
16938
17004
|
{
|
|
16939
17005
|
"aria-hidden": "true",
|
|
@@ -16941,14 +17007,14 @@ var TestimonialBlock = React84.forwardRef(
|
|
|
16941
17007
|
children: "\u201C"
|
|
16942
17008
|
}
|
|
16943
17009
|
),
|
|
16944
|
-
/* @__PURE__ */ (0,
|
|
17010
|
+
/* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("blockquote", { className: "m-0 mt-sm text-display-md text-ink", children: [
|
|
16945
17011
|
"\u201C",
|
|
16946
17012
|
quote,
|
|
16947
17013
|
"\u201D"
|
|
16948
17014
|
] }),
|
|
16949
|
-
/* @__PURE__ */ (0,
|
|
16950
|
-
/* @__PURE__ */ (0,
|
|
16951
|
-
role ? /* @__PURE__ */ (0,
|
|
17015
|
+
/* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("figcaption", { className: "mt-lg flex flex-col gap-xxs", children: [
|
|
17016
|
+
/* @__PURE__ */ (0, import_jsx_runtime85.jsx)("span", { className: "text-body-lg text-ink", children: name }),
|
|
17017
|
+
role ? /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("span", { className: "text-body-md text-muted", children: role }) : null
|
|
16952
17018
|
] })
|
|
16953
17019
|
] })
|
|
16954
17020
|
] })
|
|
@@ -16958,15 +17024,15 @@ var TestimonialBlock = React84.forwardRef(
|
|
|
16958
17024
|
TestimonialBlock.displayName = "TestimonialBlock";
|
|
16959
17025
|
|
|
16960
17026
|
// virtual-pkg:src/atoms/Textarea/Textarea.tsx
|
|
16961
|
-
var
|
|
16962
|
-
var
|
|
16963
|
-
var
|
|
17027
|
+
var React86 = __toESM(require("react"));
|
|
17028
|
+
var import_jsx_runtime86 = require("react/jsx-runtime");
|
|
17029
|
+
var cn75 = (...values) => values.filter(Boolean).join(" ");
|
|
16964
17030
|
var resizeClass = {
|
|
16965
17031
|
none: "resize-none",
|
|
16966
17032
|
vertical: "resize-y",
|
|
16967
17033
|
both: "resize"
|
|
16968
17034
|
};
|
|
16969
|
-
var Textarea =
|
|
17035
|
+
var Textarea = React86.forwardRef(
|
|
16970
17036
|
({
|
|
16971
17037
|
label,
|
|
16972
17038
|
ariaLabel,
|
|
@@ -16993,13 +17059,13 @@ var Textarea = React85.forwardRef(
|
|
|
16993
17059
|
"aria-label": ariaLabelProp,
|
|
16994
17060
|
...rest
|
|
16995
17061
|
}, ref) => {
|
|
16996
|
-
const generatedId =
|
|
17062
|
+
const generatedId = React86.useId();
|
|
16997
17063
|
const fieldId = id ?? generatedId;
|
|
16998
17064
|
const helperId = `${fieldId}-helper`;
|
|
16999
17065
|
const errorId = `${fieldId}-error`;
|
|
17000
17066
|
const countId = `${fieldId}-count`;
|
|
17001
17067
|
const isControlled = value !== void 0;
|
|
17002
|
-
const [uncontrolledLength, setUncontrolledLength] =
|
|
17068
|
+
const [uncontrolledLength, setUncontrolledLength] = React86.useState(
|
|
17003
17069
|
() => String(defaultValue ?? "").length
|
|
17004
17070
|
);
|
|
17005
17071
|
const length = isControlled ? String(value ?? "").length : uncontrolledLength;
|
|
@@ -17013,7 +17079,7 @@ var Textarea = React85.forwardRef(
|
|
|
17013
17079
|
countVisible ? countId : null
|
|
17014
17080
|
].filter(Boolean).join(" ") || void 0;
|
|
17015
17081
|
const isBare = chrome === "none";
|
|
17016
|
-
const shell2 = isBare ? "flex w-full flex-col gap-xs transition-colors duration-150 ease-out" :
|
|
17082
|
+
const shell2 = isBare ? "flex w-full flex-col gap-xs transition-colors duration-150 ease-out" : cn75(
|
|
17017
17083
|
"flex w-full flex-col gap-xs rounded-lg border px-md py-sm",
|
|
17018
17084
|
"transition duration-150 ease-out",
|
|
17019
17085
|
disabled ? "border-hairline-soft bg-surface-strong" : isError ? "border-semantic-error bg-surface" : "border-hairline-strong bg-surface",
|
|
@@ -17021,8 +17087,8 @@ var Textarea = React85.forwardRef(
|
|
|
17021
17087
|
forceFocus ? isError ? "border-semantic-error ring-1 ring-semantic-error" : "border-primary ring-1 ring-primary" : "",
|
|
17022
17088
|
readOnly && !disabled ? "bg-surface-soft" : ""
|
|
17023
17089
|
);
|
|
17024
|
-
return /* @__PURE__ */ (0,
|
|
17025
|
-
label ? /* @__PURE__ */ (0,
|
|
17090
|
+
return /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)("div", { className: cn75("flex w-full flex-col gap-xs", className), children: [
|
|
17091
|
+
label ? /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(
|
|
17026
17092
|
Label,
|
|
17027
17093
|
{
|
|
17028
17094
|
htmlFor: fieldId,
|
|
@@ -17031,8 +17097,8 @@ var Textarea = React85.forwardRef(
|
|
|
17031
17097
|
children: label
|
|
17032
17098
|
}
|
|
17033
17099
|
) : null,
|
|
17034
|
-
/* @__PURE__ */ (0,
|
|
17035
|
-
/* @__PURE__ */ (0,
|
|
17100
|
+
/* @__PURE__ */ (0, import_jsx_runtime86.jsxs)("div", { className: cn75(shell2, fieldClassName), children: [
|
|
17101
|
+
/* @__PURE__ */ (0, import_jsx_runtime86.jsx)(
|
|
17036
17102
|
"textarea",
|
|
17037
17103
|
{
|
|
17038
17104
|
ref,
|
|
@@ -17052,7 +17118,7 @@ var Textarea = React85.forwardRef(
|
|
|
17052
17118
|
}
|
|
17053
17119
|
onChange?.(event);
|
|
17054
17120
|
},
|
|
17055
|
-
className:
|
|
17121
|
+
className: cn75(
|
|
17056
17122
|
"w-full appearance-none rounded-none border-0 bg-transparent p-0 text-body-md shadow-none ring-0",
|
|
17057
17123
|
resizeClass[resize],
|
|
17058
17124
|
"text-ink caret-primary placeholder:text-muted",
|
|
@@ -17063,11 +17129,11 @@ var Textarea = React85.forwardRef(
|
|
|
17063
17129
|
...rest
|
|
17064
17130
|
}
|
|
17065
17131
|
),
|
|
17066
|
-
countVisible ? /* @__PURE__ */ (0,
|
|
17132
|
+
countVisible ? /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(
|
|
17067
17133
|
"span",
|
|
17068
17134
|
{
|
|
17069
17135
|
id: countId,
|
|
17070
|
-
className:
|
|
17136
|
+
className: cn75(
|
|
17071
17137
|
"self-end text-caption tabular-nums",
|
|
17072
17138
|
disabled ? "text-muted-soft" : isError ? "text-semantic-error" : "text-muted",
|
|
17073
17139
|
countClassName
|
|
@@ -17076,12 +17142,12 @@ var Textarea = React85.forwardRef(
|
|
|
17076
17142
|
}
|
|
17077
17143
|
) : null
|
|
17078
17144
|
] }),
|
|
17079
|
-
error ? /* @__PURE__ */ (0,
|
|
17080
|
-
helper ? /* @__PURE__ */ (0,
|
|
17145
|
+
error ? /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("p", { id: errorId, className: "text-caption text-semantic-error", children: error }) : null,
|
|
17146
|
+
helper ? /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(
|
|
17081
17147
|
"p",
|
|
17082
17148
|
{
|
|
17083
17149
|
id: helperId,
|
|
17084
|
-
className:
|
|
17150
|
+
className: cn75(
|
|
17085
17151
|
"text-caption",
|
|
17086
17152
|
disabled ? "text-muted-soft" : "text-muted"
|
|
17087
17153
|
),
|
|
@@ -17094,10 +17160,10 @@ var Textarea = React85.forwardRef(
|
|
|
17094
17160
|
Textarea.displayName = "Textarea";
|
|
17095
17161
|
|
|
17096
17162
|
// virtual-pkg:src/atoms/Toast/Toast.tsx
|
|
17097
|
-
var
|
|
17098
|
-
var
|
|
17099
|
-
var
|
|
17100
|
-
var Toast =
|
|
17163
|
+
var React87 = __toESM(require("react"));
|
|
17164
|
+
var import_jsx_runtime87 = require("react/jsx-runtime");
|
|
17165
|
+
var cn76 = (...values) => values.filter(Boolean).join(" ");
|
|
17166
|
+
var Toast = React87.forwardRef(
|
|
17101
17167
|
({
|
|
17102
17168
|
tone = "info",
|
|
17103
17169
|
title,
|
|
@@ -17114,25 +17180,25 @@ var Toast = React86.forwardRef(
|
|
|
17114
17180
|
const urgent = tone === "danger";
|
|
17115
17181
|
const hasDetails = Boolean(details && details.length > 0);
|
|
17116
17182
|
const hasTrailing = Boolean(action) || Boolean(onDismiss);
|
|
17117
|
-
const mark = hideIcon ? null : tone === "neutral" ? /* @__PURE__ */ (0,
|
|
17183
|
+
const mark = hideIcon ? null : tone === "neutral" ? /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(
|
|
17118
17184
|
"span",
|
|
17119
17185
|
{
|
|
17120
17186
|
"aria-hidden": "true",
|
|
17121
17187
|
className: "-my-base -ml-md w-1 shrink-0 self-stretch rounded-full bg-primary"
|
|
17122
17188
|
}
|
|
17123
|
-
) : tone === "danger" ? /* @__PURE__ */ (0,
|
|
17189
|
+
) : tone === "danger" ? /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(
|
|
17124
17190
|
"span",
|
|
17125
17191
|
{
|
|
17126
17192
|
"aria-hidden": "true",
|
|
17127
17193
|
className: "mt-2 size-2.5 shrink-0 rounded-full bg-semantic-error"
|
|
17128
17194
|
}
|
|
17129
|
-
) : tone === "success" ? /* @__PURE__ */ (0,
|
|
17195
|
+
) : tone === "success" ? /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(
|
|
17130
17196
|
"span",
|
|
17131
17197
|
{
|
|
17132
17198
|
"aria-hidden": "true",
|
|
17133
17199
|
className: "mt-0.5 grid size-5 shrink-0 place-items-center text-primary",
|
|
17134
17200
|
children: [
|
|
17135
|
-
/* @__PURE__ */ (0,
|
|
17201
|
+
/* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: "[grid-area:1/1] inline-flex", children: /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(
|
|
17136
17202
|
Icon,
|
|
17137
17203
|
{
|
|
17138
17204
|
name: "circle",
|
|
@@ -17141,7 +17207,7 @@ var Toast = React86.forwardRef(
|
|
|
17141
17207
|
style: { color: "inherit" }
|
|
17142
17208
|
}
|
|
17143
17209
|
) }),
|
|
17144
|
-
/* @__PURE__ */ (0,
|
|
17210
|
+
/* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: "[grid-area:1/1] inline-flex", children: /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(
|
|
17145
17211
|
Icon,
|
|
17146
17212
|
{
|
|
17147
17213
|
name: "check",
|
|
@@ -17152,12 +17218,12 @@ var Toast = React86.forwardRef(
|
|
|
17152
17218
|
) })
|
|
17153
17219
|
]
|
|
17154
17220
|
}
|
|
17155
|
-
) : /* @__PURE__ */ (0,
|
|
17221
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(
|
|
17156
17222
|
"span",
|
|
17157
17223
|
{
|
|
17158
17224
|
"aria-hidden": "true",
|
|
17159
17225
|
className: "mt-0.5 inline-flex shrink-0 items-center text-primary",
|
|
17160
|
-
children: /* @__PURE__ */ (0,
|
|
17226
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(
|
|
17161
17227
|
Icon,
|
|
17162
17228
|
{
|
|
17163
17229
|
name: tone === "warning" ? "triangle-alert" : "info",
|
|
@@ -17168,7 +17234,7 @@ var Toast = React86.forwardRef(
|
|
|
17168
17234
|
)
|
|
17169
17235
|
}
|
|
17170
17236
|
);
|
|
17171
|
-
const actionNode = action ? urgent ? /* @__PURE__ */ (0,
|
|
17237
|
+
const actionNode = action ? urgent ? /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(
|
|
17172
17238
|
Button,
|
|
17173
17239
|
{
|
|
17174
17240
|
type: "button",
|
|
@@ -17178,7 +17244,7 @@ var Toast = React86.forwardRef(
|
|
|
17178
17244
|
className: "shrink-0",
|
|
17179
17245
|
children: action.label
|
|
17180
17246
|
}
|
|
17181
|
-
) : action.href ? /* @__PURE__ */ (0,
|
|
17247
|
+
) : action.href ? /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(Link, { href: action.href, size: "md", underline: "always", className: "shrink-0", children: action.label }) : /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(
|
|
17182
17248
|
Button,
|
|
17183
17249
|
{
|
|
17184
17250
|
type: "button",
|
|
@@ -17189,7 +17255,7 @@ var Toast = React86.forwardRef(
|
|
|
17189
17255
|
children: action.label
|
|
17190
17256
|
}
|
|
17191
17257
|
) : null;
|
|
17192
|
-
return /* @__PURE__ */ (0,
|
|
17258
|
+
return /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(
|
|
17193
17259
|
"div",
|
|
17194
17260
|
{
|
|
17195
17261
|
ref,
|
|
@@ -17198,7 +17264,7 @@ var Toast = React86.forwardRef(
|
|
|
17198
17264
|
"aria-hidden": !open || void 0,
|
|
17199
17265
|
"data-tone": tone,
|
|
17200
17266
|
"data-state": open ? "open" : "closed",
|
|
17201
|
-
className:
|
|
17267
|
+
className: cn76(
|
|
17202
17268
|
"relative flex w-full min-w-0 items-start gap-md rounded-lg border bg-surface py-base shadow-sm",
|
|
17203
17269
|
"transition duration-200 ease-out",
|
|
17204
17270
|
"data-[state=open]:translate-y-0 data-[state=open]:opacity-100",
|
|
@@ -17210,24 +17276,24 @@ var Toast = React86.forwardRef(
|
|
|
17210
17276
|
...rest,
|
|
17211
17277
|
children: [
|
|
17212
17278
|
mark,
|
|
17213
|
-
/* @__PURE__ */ (0,
|
|
17214
|
-
/* @__PURE__ */ (0,
|
|
17215
|
-
description ? /* @__PURE__ */ (0,
|
|
17216
|
-
hasDetails ? /* @__PURE__ */ (0,
|
|
17279
|
+
/* @__PURE__ */ (0, import_jsx_runtime87.jsxs)("div", { className: "flex min-w-0 flex-1 flex-col", children: [
|
|
17280
|
+
/* @__PURE__ */ (0, import_jsx_runtime87.jsx)("p", { className: "text-body-lg font-weight-label break-words text-ink", children: title }),
|
|
17281
|
+
description ? /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("p", { className: "mt-xxs text-body-md break-words text-muted", children: description }) : null,
|
|
17282
|
+
hasDetails ? /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("ul", { className: "mt-sm flex min-w-0 flex-col gap-xxs", children: details.map((detail, index) => /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(
|
|
17217
17283
|
"li",
|
|
17218
17284
|
{
|
|
17219
17285
|
className: "flex min-w-0 gap-sm text-body-sm text-muted",
|
|
17220
17286
|
children: [
|
|
17221
|
-
/* @__PURE__ */ (0,
|
|
17222
|
-
/* @__PURE__ */ (0,
|
|
17287
|
+
/* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { "aria-hidden": "true", className: "text-muted-soft", children: "\u2022" }),
|
|
17288
|
+
/* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: "min-w-0 break-words", children: detail })
|
|
17223
17289
|
]
|
|
17224
17290
|
},
|
|
17225
17291
|
index
|
|
17226
17292
|
)) }) : null
|
|
17227
17293
|
] }),
|
|
17228
|
-
hasTrailing ? /* @__PURE__ */ (0,
|
|
17294
|
+
hasTrailing ? /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)("div", { className: "ml-auto flex shrink-0 items-center gap-md self-center", children: [
|
|
17229
17295
|
actionNode,
|
|
17230
|
-
onDismiss ? /* @__PURE__ */ (0,
|
|
17296
|
+
onDismiss ? /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(
|
|
17231
17297
|
Button,
|
|
17232
17298
|
{
|
|
17233
17299
|
type: "button",
|
|
@@ -17236,7 +17302,7 @@ var Toast = React86.forwardRef(
|
|
|
17236
17302
|
"aria-label": dismissLabel,
|
|
17237
17303
|
onClick: onDismiss,
|
|
17238
17304
|
className: "rounded-xs p-xs text-muted-soft transition duration-150 ease-out hover:text-ink",
|
|
17239
|
-
children: /* @__PURE__ */ (0,
|
|
17305
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(
|
|
17240
17306
|
Icon,
|
|
17241
17307
|
{
|
|
17242
17308
|
name: "x",
|
|
@@ -17256,9 +17322,9 @@ var Toast = React86.forwardRef(
|
|
|
17256
17322
|
Toast.displayName = "Toast";
|
|
17257
17323
|
|
|
17258
17324
|
// virtual-pkg:src/atoms/Tooltip/Tooltip.tsx
|
|
17259
|
-
var
|
|
17260
|
-
var
|
|
17261
|
-
var
|
|
17325
|
+
var React88 = __toESM(require("react"));
|
|
17326
|
+
var import_jsx_runtime88 = require("react/jsx-runtime");
|
|
17327
|
+
var cn77 = (...values) => values.filter(Boolean).join(" ");
|
|
17262
17328
|
var sidePosition = {
|
|
17263
17329
|
top: "bottom-full left-1/2 -translate-x-1/2 mb-sm",
|
|
17264
17330
|
bottom: "top-full left-1/2 -translate-x-1/2 mt-sm",
|
|
@@ -17283,7 +17349,7 @@ var sideOrigin = {
|
|
|
17283
17349
|
left: "origin-right",
|
|
17284
17350
|
right: "origin-left"
|
|
17285
17351
|
};
|
|
17286
|
-
var Tooltip =
|
|
17352
|
+
var Tooltip = React88.forwardRef(
|
|
17287
17353
|
({
|
|
17288
17354
|
children,
|
|
17289
17355
|
variant = "plain",
|
|
@@ -17304,8 +17370,8 @@ var Tooltip = React87.forwardRef(
|
|
|
17304
17370
|
onKeyDown,
|
|
17305
17371
|
...rest
|
|
17306
17372
|
}, ref) => {
|
|
17307
|
-
const id =
|
|
17308
|
-
const [uncontrolledOpen, setUncontrolledOpen] =
|
|
17373
|
+
const id = React88.useId();
|
|
17374
|
+
const [uncontrolledOpen, setUncontrolledOpen] = React88.useState(defaultOpen);
|
|
17309
17375
|
const isControlled = open !== void 0;
|
|
17310
17376
|
const isOpen = isControlled ? Boolean(open) : uncontrolledOpen;
|
|
17311
17377
|
const setOpenState = (next) => {
|
|
@@ -17313,21 +17379,21 @@ var Tooltip = React87.forwardRef(
|
|
|
17313
17379
|
if (!isControlled) setUncontrolledOpen(next);
|
|
17314
17380
|
onOpenChange?.(next);
|
|
17315
17381
|
};
|
|
17316
|
-
const body = children ?? (variant === "stat" ? /* @__PURE__ */ (0,
|
|
17317
|
-
/* @__PURE__ */ (0,
|
|
17318
|
-
/* @__PURE__ */ (0,
|
|
17382
|
+
const body = children ?? (variant === "stat" ? /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("span", { className: "flex items-center justify-between gap-xl", children: [
|
|
17383
|
+
/* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("span", { className: "flex items-center gap-sm", children: [
|
|
17384
|
+
/* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
17319
17385
|
"span",
|
|
17320
17386
|
{
|
|
17321
17387
|
"aria-hidden": "true",
|
|
17322
17388
|
className: "size-sm shrink-0 rounded-full bg-primary"
|
|
17323
17389
|
}
|
|
17324
17390
|
),
|
|
17325
|
-
/* @__PURE__ */ (0,
|
|
17391
|
+
/* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "whitespace-nowrap text-body-sm text-muted", children: label })
|
|
17326
17392
|
] }),
|
|
17327
|
-
/* @__PURE__ */ (0,
|
|
17328
|
-
] }) : variant === "shortcut" ? /* @__PURE__ */ (0,
|
|
17329
|
-
/* @__PURE__ */ (0,
|
|
17330
|
-
/* @__PURE__ */ (0,
|
|
17393
|
+
/* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "whitespace-nowrap text-body-sm font-weight-label tabular-nums text-ink", children: value })
|
|
17394
|
+
] }) : variant === "shortcut" ? /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("span", { className: "flex items-center justify-between gap-xl", children: [
|
|
17395
|
+
/* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "whitespace-nowrap text-body-sm text-ink", children: label }),
|
|
17396
|
+
/* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "flex items-center gap-xs", children: (keys ?? []).map((key) => /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
17331
17397
|
"kbd",
|
|
17332
17398
|
{
|
|
17333
17399
|
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",
|
|
@@ -17335,15 +17401,15 @@ var Tooltip = React87.forwardRef(
|
|
|
17335
17401
|
},
|
|
17336
17402
|
key
|
|
17337
17403
|
)) })
|
|
17338
|
-
] }) : /* @__PURE__ */ (0,
|
|
17339
|
-
const triggerNode =
|
|
17404
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "whitespace-nowrap text-body-sm text-ink", children: label }));
|
|
17405
|
+
const triggerNode = React88.isValidElement(trigger) ? React88.cloneElement(trigger, {
|
|
17340
17406
|
"aria-describedby": isOpen ? id : void 0
|
|
17341
17407
|
}) : trigger;
|
|
17342
|
-
return /* @__PURE__ */ (0,
|
|
17408
|
+
return /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)(
|
|
17343
17409
|
"div",
|
|
17344
17410
|
{
|
|
17345
17411
|
ref,
|
|
17346
|
-
className:
|
|
17412
|
+
className: cn77("relative inline-flex items-center", className),
|
|
17347
17413
|
style: { zIndex: isOpen ? "var(--z-tooltip, 1500)" : void 0 },
|
|
17348
17414
|
onMouseEnter: (event) => {
|
|
17349
17415
|
setOpenState(true);
|
|
@@ -17368,14 +17434,14 @@ var Tooltip = React87.forwardRef(
|
|
|
17368
17434
|
...rest,
|
|
17369
17435
|
children: [
|
|
17370
17436
|
triggerNode,
|
|
17371
|
-
/* @__PURE__ */ (0,
|
|
17437
|
+
/* @__PURE__ */ (0, import_jsx_runtime88.jsxs)(
|
|
17372
17438
|
"div",
|
|
17373
17439
|
{
|
|
17374
17440
|
id,
|
|
17375
17441
|
role: "tooltip",
|
|
17376
17442
|
"data-state": isOpen ? "open" : "closed",
|
|
17377
17443
|
"aria-hidden": !isOpen,
|
|
17378
|
-
className:
|
|
17444
|
+
className: cn77(
|
|
17379
17445
|
"absolute w-max max-w-xs rounded-lg border border-hairline bg-surface",
|
|
17380
17446
|
"px-lg py-md shadow-md",
|
|
17381
17447
|
"transition duration-200 ease-out",
|
|
@@ -17387,11 +17453,11 @@ var Tooltip = React87.forwardRef(
|
|
|
17387
17453
|
),
|
|
17388
17454
|
children: [
|
|
17389
17455
|
body,
|
|
17390
|
-
/* @__PURE__ */ (0,
|
|
17456
|
+
/* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
17391
17457
|
"span",
|
|
17392
17458
|
{
|
|
17393
17459
|
"aria-hidden": "true",
|
|
17394
|
-
className:
|
|
17460
|
+
className: cn77(
|
|
17395
17461
|
"absolute size-md rotate-45 border-hairline bg-surface",
|
|
17396
17462
|
caretPosition[side],
|
|
17397
17463
|
caretEdges[side]
|
|
@@ -17409,8 +17475,8 @@ var Tooltip = React87.forwardRef(
|
|
|
17409
17475
|
Tooltip.displayName = "Tooltip";
|
|
17410
17476
|
|
|
17411
17477
|
// virtual-pkg:src/atoms/Typography/Typography.tsx
|
|
17412
|
-
var
|
|
17413
|
-
var
|
|
17478
|
+
var React89 = __toESM(require("react"));
|
|
17479
|
+
var import_jsx_runtime89 = require("react/jsx-runtime");
|
|
17414
17480
|
var SCALE_CLASS = {
|
|
17415
17481
|
"display-xxl": "text-display-xxl",
|
|
17416
17482
|
"display-lg": "text-display-lg",
|
|
@@ -17478,7 +17544,7 @@ var DEFAULT_TYPE_ROWS = [
|
|
|
17478
17544
|
scale: "overline"
|
|
17479
17545
|
}
|
|
17480
17546
|
];
|
|
17481
|
-
var Typography =
|
|
17547
|
+
var Typography = React89.forwardRef(
|
|
17482
17548
|
({
|
|
17483
17549
|
title = "Typography",
|
|
17484
17550
|
rows = DEFAULT_TYPE_ROWS,
|
|
@@ -17486,7 +17552,7 @@ var Typography = React88.forwardRef(
|
|
|
17486
17552
|
framed = true,
|
|
17487
17553
|
className,
|
|
17488
17554
|
...rest
|
|
17489
|
-
}, ref) => /* @__PURE__ */ (0,
|
|
17555
|
+
}, ref) => /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(
|
|
17490
17556
|
"div",
|
|
17491
17557
|
{
|
|
17492
17558
|
ref,
|
|
@@ -17497,27 +17563,27 @@ var Typography = React88.forwardRef(
|
|
|
17497
17563
|
className
|
|
17498
17564
|
].filter(Boolean).join(" "),
|
|
17499
17565
|
...rest,
|
|
17500
|
-
children: /* @__PURE__ */ (0,
|
|
17501
|
-
/* @__PURE__ */ (0,
|
|
17502
|
-
/* @__PURE__ */ (0,
|
|
17503
|
-
/* @__PURE__ */ (0,
|
|
17504
|
-
rows.map((row) => /* @__PURE__ */ (0,
|
|
17505
|
-
/* @__PURE__ */ (0,
|
|
17506
|
-
/* @__PURE__ */ (0,
|
|
17507
|
-
showSpec && row.spec ? /* @__PURE__ */ (0,
|
|
17566
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("div", { className: "grid grid-cols-1 gap-y-xs md:grid-cols-[8.5rem_1px_minmax(0,1fr)] md:gap-y-0", children: [
|
|
17567
|
+
/* @__PURE__ */ (0, import_jsx_runtime89.jsx)("p", { className: "text-label-cap text-ink md:pb-xl md:pr-xl", children: title }),
|
|
17568
|
+
/* @__PURE__ */ (0, import_jsx_runtime89.jsx)("div", { "aria-hidden": "true", className: "hidden md:block" }),
|
|
17569
|
+
/* @__PURE__ */ (0, import_jsx_runtime89.jsx)("div", { "aria-hidden": "true", className: "hidden md:block" }),
|
|
17570
|
+
rows.map((row) => /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)(React89.Fragment, { children: [
|
|
17571
|
+
/* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("div", { className: "flex items-center gap-xs whitespace-nowrap pt-sm md:py-xs md:pr-xl md:pt-0", children: [
|
|
17572
|
+
/* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "text-caption text-body", children: row.name }),
|
|
17573
|
+
showSpec && row.spec ? /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("span", { className: "text-caption text-muted", children: [
|
|
17508
17574
|
"(",
|
|
17509
17575
|
row.spec,
|
|
17510
17576
|
")"
|
|
17511
17577
|
] }) : null
|
|
17512
17578
|
] }),
|
|
17513
|
-
/* @__PURE__ */ (0,
|
|
17579
|
+
/* @__PURE__ */ (0, import_jsx_runtime89.jsx)(
|
|
17514
17580
|
"div",
|
|
17515
17581
|
{
|
|
17516
17582
|
"aria-hidden": "true",
|
|
17517
17583
|
className: "hidden self-stretch bg-hairline md:block"
|
|
17518
17584
|
}
|
|
17519
17585
|
),
|
|
17520
|
-
/* @__PURE__ */ (0,
|
|
17586
|
+
/* @__PURE__ */ (0, import_jsx_runtime89.jsx)(
|
|
17521
17587
|
"p",
|
|
17522
17588
|
{
|
|
17523
17589
|
className: [
|
|
@@ -17535,9 +17601,9 @@ var Typography = React88.forwardRef(
|
|
|
17535
17601
|
Typography.displayName = "Typography";
|
|
17536
17602
|
|
|
17537
17603
|
// virtual-pkg:src/atoms/Wizard/Wizard.tsx
|
|
17538
|
-
var
|
|
17539
|
-
var
|
|
17540
|
-
var
|
|
17604
|
+
var React90 = __toESM(require("react"));
|
|
17605
|
+
var import_jsx_runtime90 = require("react/jsx-runtime");
|
|
17606
|
+
var cn78 = (...values) => values.filter(Boolean).join(" ");
|
|
17541
17607
|
var statusCopy = {
|
|
17542
17608
|
complete: "completed",
|
|
17543
17609
|
current: "current step",
|
|
@@ -17553,37 +17619,37 @@ var labelStyles2 = {
|
|
|
17553
17619
|
current: "font-weight-label text-ink",
|
|
17554
17620
|
upcoming: "text-muted"
|
|
17555
17621
|
};
|
|
17556
|
-
var StepRail = ({ steps, currentStep }) => /* @__PURE__ */ (0,
|
|
17622
|
+
var StepRail = ({ steps, currentStep }) => /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("ol", { className: "flex w-full items-start", children: steps.map((step, index) => {
|
|
17557
17623
|
const status = index < currentStep ? "complete" : index === currentStep ? "current" : "upcoming";
|
|
17558
17624
|
const leadDone = index - 1 >= 0 && index - 1 < currentStep;
|
|
17559
17625
|
const trailDone = index < currentStep;
|
|
17560
|
-
return /* @__PURE__ */ (0,
|
|
17626
|
+
return /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)(
|
|
17561
17627
|
"li",
|
|
17562
17628
|
{
|
|
17563
17629
|
"aria-current": status === "current" ? "step" : void 0,
|
|
17564
17630
|
className: "flex min-w-0 flex-1 flex-col items-center gap-sm",
|
|
17565
17631
|
children: [
|
|
17566
|
-
/* @__PURE__ */ (0,
|
|
17567
|
-
/* @__PURE__ */ (0,
|
|
17632
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("div", { className: "flex w-full items-center", children: [
|
|
17633
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsx)(
|
|
17568
17634
|
"span",
|
|
17569
17635
|
{
|
|
17570
17636
|
"aria-hidden": "true",
|
|
17571
|
-
className:
|
|
17637
|
+
className: cn78(
|
|
17572
17638
|
"h-px flex-1 transition-colors duration-200 ease-out",
|
|
17573
17639
|
index === 0 ? "invisible bg-hairline" : leadDone ? "bg-primary" : "bg-hairline-strong"
|
|
17574
17640
|
)
|
|
17575
17641
|
}
|
|
17576
17642
|
),
|
|
17577
|
-
/* @__PURE__ */ (0,
|
|
17643
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsx)(
|
|
17578
17644
|
"span",
|
|
17579
17645
|
{
|
|
17580
17646
|
"aria-hidden": "true",
|
|
17581
|
-
className:
|
|
17647
|
+
className: cn78(
|
|
17582
17648
|
"flex size-lg shrink-0 items-center justify-center rounded-full",
|
|
17583
17649
|
"transition-colors duration-200 ease-out",
|
|
17584
17650
|
nodeStyles2[status]
|
|
17585
17651
|
),
|
|
17586
|
-
children: status === "complete" ? /* @__PURE__ */ (0,
|
|
17652
|
+
children: status === "complete" ? /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(
|
|
17587
17653
|
Icon,
|
|
17588
17654
|
{
|
|
17589
17655
|
name: "check",
|
|
@@ -17594,36 +17660,36 @@ var StepRail = ({ steps, currentStep }) => /* @__PURE__ */ (0, import_jsx_runtim
|
|
|
17594
17660
|
) : null
|
|
17595
17661
|
}
|
|
17596
17662
|
),
|
|
17597
|
-
/* @__PURE__ */ (0,
|
|
17663
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsx)(
|
|
17598
17664
|
"span",
|
|
17599
17665
|
{
|
|
17600
17666
|
"aria-hidden": "true",
|
|
17601
|
-
className:
|
|
17667
|
+
className: cn78(
|
|
17602
17668
|
"h-px flex-1 transition-colors duration-200 ease-out",
|
|
17603
17669
|
index === steps.length - 1 ? "invisible bg-hairline" : trailDone ? "bg-primary" : "bg-hairline-strong"
|
|
17604
17670
|
)
|
|
17605
17671
|
}
|
|
17606
17672
|
)
|
|
17607
17673
|
] }),
|
|
17608
|
-
/* @__PURE__ */ (0,
|
|
17609
|
-
/* @__PURE__ */ (0,
|
|
17674
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("span", { className: "flex max-w-full min-w-0 flex-col items-center", children: [
|
|
17675
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsx)(
|
|
17610
17676
|
"span",
|
|
17611
17677
|
{
|
|
17612
|
-
className:
|
|
17678
|
+
className: cn78(
|
|
17613
17679
|
"max-w-full truncate text-body-sm transition-colors duration-200 ease-out",
|
|
17614
17680
|
labelStyles2[status]
|
|
17615
17681
|
),
|
|
17616
17682
|
children: step.label
|
|
17617
17683
|
}
|
|
17618
17684
|
),
|
|
17619
|
-
/* @__PURE__ */ (0,
|
|
17685
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "sr-only", children: statusCopy[status] })
|
|
17620
17686
|
] })
|
|
17621
17687
|
]
|
|
17622
17688
|
},
|
|
17623
17689
|
step.id
|
|
17624
17690
|
);
|
|
17625
17691
|
}) });
|
|
17626
|
-
var Wizard =
|
|
17692
|
+
var Wizard = React90.forwardRef(
|
|
17627
17693
|
({
|
|
17628
17694
|
steps,
|
|
17629
17695
|
currentStep,
|
|
@@ -17644,30 +17710,30 @@ var Wizard = React89.forwardRef(
|
|
|
17644
17710
|
const index = Math.max(0, Math.min(currentStep, steps.length - 1));
|
|
17645
17711
|
const eyebrowCopy = eyebrow ?? `Step ${index + 1} (${stateLabel})`;
|
|
17646
17712
|
const showActions = !hideActions && Boolean(onNext || onBack);
|
|
17647
|
-
return /* @__PURE__ */ (0,
|
|
17713
|
+
return /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)(
|
|
17648
17714
|
"section",
|
|
17649
17715
|
{
|
|
17650
17716
|
ref,
|
|
17651
|
-
className:
|
|
17717
|
+
className: cn78(
|
|
17652
17718
|
"flex w-full flex-col gap-xl rounded-lg border border-hairline bg-surface p-xl text-ink shadow-sm",
|
|
17653
17719
|
className
|
|
17654
17720
|
),
|
|
17655
17721
|
...rest,
|
|
17656
17722
|
children: [
|
|
17657
|
-
/* @__PURE__ */ (0,
|
|
17658
|
-
/* @__PURE__ */ (0,
|
|
17659
|
-
/* @__PURE__ */ (0,
|
|
17660
|
-
/* @__PURE__ */ (0,
|
|
17661
|
-
/* @__PURE__ */ (0,
|
|
17662
|
-
description ? /* @__PURE__ */ (0,
|
|
17723
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsx)("p", { className: "text-label-cap text-muted", children: eyebrowCopy }),
|
|
17724
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsx)(StepRail, { steps, currentStep: index }),
|
|
17725
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("div", { className: "flex flex-col gap-lg", children: [
|
|
17726
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("div", { className: "flex flex-col gap-xs", children: [
|
|
17727
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsx)("h3", { className: "text-display-md text-ink", children: title }),
|
|
17728
|
+
description ? /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("p", { className: "max-w-prose text-body-md text-body", children: description }) : null
|
|
17663
17729
|
] }),
|
|
17664
|
-
children ? /* @__PURE__ */ (0,
|
|
17730
|
+
children ? /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("div", { className: "flex flex-col gap-md", children }) : null
|
|
17665
17731
|
] }),
|
|
17666
|
-
showActions ? /* @__PURE__ */ (0,
|
|
17667
|
-
/* @__PURE__ */ (0,
|
|
17668
|
-
/* @__PURE__ */ (0,
|
|
17669
|
-
onBack ? /* @__PURE__ */ (0,
|
|
17670
|
-
onNext ? /* @__PURE__ */ (0,
|
|
17732
|
+
showActions ? /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("div", { className: "flex flex-col gap-lg", children: [
|
|
17733
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsx)(Divider, { tone: "soft", decorative: true }),
|
|
17734
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("div", { className: "flex flex-wrap items-center justify-between gap-md", children: [
|
|
17735
|
+
onBack ? /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(Button, { variant: "outline-soft", size: "md", onClick: onBack, children: backLabel }) : /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { "aria-hidden": "true" }),
|
|
17736
|
+
onNext ? /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(
|
|
17671
17737
|
Button,
|
|
17672
17738
|
{
|
|
17673
17739
|
variant: "primary",
|