@wix/himalaya-cli 0.1168.0 → 0.1169.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.mjs CHANGED
@@ -8265,6 +8265,8 @@ var init_a11y_contract = __esm({
8265
8265
  StepIndicator: { role: "group", name: "required", state: ["step N of M", "current"], decorative: false },
8266
8266
  // ---- Status, feedback, and overlays -------------------------------------------------
8267
8267
  ProgressBar: { role: "progressbar", name: "conditional", state: ["value/pct or indeterminate"], decorative: false },
8268
+ // The SPINNER's row: status + busy. A determinate ring (`value` / `valuePath`) is announced as a
8269
+ // progressbar with its value instead — RFC 0058 §3.3 "STATUS / PROGRESSBAR" (#3260).
8268
8270
  ActivityIndicator: { role: "status", name: "conditional", state: ["busy"], decorative: false },
8269
8271
  Gauge: { role: "progressbar", name: "required", state: ["value + unit"], decorative: false },
8270
8272
  Skeleton: { role: "decorative", name: "none", state: [], decorative: true },
@@ -24516,7 +24518,6 @@ function shouldRevealError(args) {
24516
24518
  var EMAIL_RE, URL_HOST_RE, INTEGER_RE, NUMBER_RE;
24517
24519
  var init_validation = __esm({
24518
24520
  "../../core/ts/src/validation.ts"() {
24519
- "use strict";
24520
24521
  EMAIL_RE = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9-]+(\.[A-Za-z0-9-]+)*\.[A-Za-z]{2,}$/;
24521
24522
  URL_HOST_RE = /^[A-Za-z0-9-]+(\.[A-Za-z0-9-]+)*(:[0-9]+)?$/;
24522
24523
  INTEGER_RE = /^[+-]?[0-9]+$/;
@@ -25176,7 +25177,6 @@ function validateWorkerSubtree(raw, slotId, policy, actionCatalog) {
25176
25177
  var WORKER_SUBTREE_CEILINGS, ID_PART, ACTION_ID;
25177
25178
  var init_worker_subtree = __esm({
25178
25179
  "../../core/ts/src/worker-subtree.ts"() {
25179
- "use strict";
25180
25180
  init_worker_subtree_safe_types_generated();
25181
25181
  WORKER_SUBTREE_CEILINGS = Object.freeze({
25182
25182
  maxEncodedBytes: 65536,
@@ -27540,6 +27540,9 @@ function assertSitePage(page) {
27540
27540
  if (!page || typeof page.id !== "string" || !PAGE_ID.test(page.id)) {
27541
27541
  throw new Error(`site page id ${JSON.stringify(page?.id)} must match ${PAGE_ID}`);
27542
27542
  }
27543
+ if (page.id.startsWith("drawer_")) {
27544
+ throw new Error(`site page id ${JSON.stringify(page.id)} must not start with "drawer_" (reserved for drawer and native rows)`);
27545
+ }
27543
27546
  if (siteScreenId(page) === SITE_PAGE_SCREEN_ID) {
27544
27547
  throw new Error(`site page id "page" is reserved for the ${SITE_PAGE_SCREEN_ID} fallback screen`);
27545
27548
  }
@@ -27562,13 +27565,17 @@ function assertSiteShellConfig(site) {
27562
27565
  seen.add(page.id);
27563
27566
  sitePageUrl(site.origin, page.path);
27564
27567
  }
27568
+ if (site.layout !== void 0 && !SITE_LAYOUTS.includes(site.layout)) {
27569
+ throw new Error(`site layout ${JSON.stringify(site.layout)} must be one of ${SITE_LAYOUTS.join(", ")}`);
27570
+ }
27565
27571
  if (!site.pages.some((page) => (page.placement ?? "tab") === "tab")) {
27566
27572
  throw new Error('a site shell needs at least one page with placement "tab"');
27567
27573
  }
27568
27574
  }
27569
- var SITE_SHELL_MAX_TABS, SITE_SCREEN_PREFIX, SITE_PAGE_SCREEN_ID, PAGE_ID;
27575
+ var SITE_LAYOUTS, SITE_SHELL_MAX_TABS, SITE_SCREEN_PREFIX, SITE_PAGE_SCREEN_ID, PAGE_ID;
27570
27576
  var init_site_shell = __esm({
27571
27577
  "../../core/ts/src/site-shell.ts"() {
27578
+ SITE_LAYOUTS = ["auto", "tabs", "drawer", "sidebar", "single"];
27572
27579
  SITE_SHELL_MAX_TABS = 4;
27573
27580
  SITE_SCREEN_PREFIX = "site_";
27574
27581
  SITE_PAGE_SCREEN_ID = "site_page";
@@ -31811,7 +31818,7 @@ function RichContentEditorView({ props, ctx, wrap, nodeId, renderChild, ...dom }
31811
31818
  onChange: (e) => setLink({ ...link, text: e.currentTarget.value })
31812
31819
  }
31813
31820
  ),
31814
- link.error && /* @__PURE__ */ jsx4("div", { role: "alert", style: { color: C("danger", "#E62214"), fontSize: 13 }, children: link.error }),
31821
+ link.error && /* @__PURE__ */ jsx4("div", { role: "alert", style: { color: C("danger", "#E62214"), fontSize: pxToRem(13) }, children: link.error }),
31815
31822
  /* @__PURE__ */ jsxs("div", { style: { display: "flex", gap: 8 }, children: [
31816
31823
  /* @__PURE__ */ jsx4("button", { type: "button", "data-component-id": `${id}/link_apply`, onClick: applyLink, children: "Apply" }),
31817
31824
  /* @__PURE__ */ jsx4("button", { type: "button", "data-component-id": `${id}/link_cancel`, onClick: () => setLink(null), children: "Cancel" })
@@ -31841,7 +31848,7 @@ function RichContentEditorView({ props, ctx, wrap, nodeId, renderChild, ...dom }
31841
31848
  onChange: onPickFile
31842
31849
  }
31843
31850
  ),
31844
- uploadError && /* @__PURE__ */ jsx4("div", { role: "status", "data-component-id": `${id}/upload_error`, style: { padding: "6px 8px", color: C("danger", "#E62214"), fontSize: 13 }, children: "Couldn't add the image. Try again." }),
31851
+ uploadError && /* @__PURE__ */ jsx4("div", { role: "status", "data-component-id": `${id}/upload_error`, style: { padding: "6px 8px", color: C("danger", "#E62214"), fontSize: pxToRem(13) }, children: "Couldn't add the image. Try again." }),
31845
31852
  status === "loading" && /* @__PURE__ */ jsx4(
31846
31853
  "div",
31847
31854
  {
@@ -31849,7 +31856,7 @@ function RichContentEditorView({ props, ctx, wrap, nodeId, renderChild, ...dom }
31849
31856
  role: "progressbar",
31850
31857
  "aria-label": "Loading editor",
31851
31858
  "aria-busy": "true",
31852
- style: { position: "absolute", inset: 0, display: "flex", alignItems: "center", justifyContent: "center", pointerEvents: "none", fontSize: 13, color: C("textSecondary", "#636B78") },
31859
+ style: { position: "absolute", inset: 0, display: "flex", alignItems: "center", justifyContent: "center", pointerEvents: "none", fontSize: pxToRem(13), color: C("textSecondary", "#636B78") },
31853
31860
  children: "Loading editor\u2026"
31854
31861
  }
31855
31862
  )
@@ -31862,6 +31869,7 @@ var init_richContentEditor = __esm({
31862
31869
  init_formBag();
31863
31870
  init_modifiers();
31864
31871
  init_bindings2();
31872
+ init_tokens2();
31865
31873
  init_protocol();
31866
31874
  init_paths3();
31867
31875
  init_host_session();
@@ -31994,7 +32002,7 @@ var init_controls = __esm({
31994
32002
  } : void 0;
31995
32003
  const rowStretch = ctx.rowStretch === true;
31996
32004
  return /* @__PURE__ */ jsxs2("div", { style: rowShareFloor({ display: "flex", alignItems: "center", justifyContent: "space-between", width: rowStretch ? "auto" : "100%", flex: rowStretch ? "1 1 0" : void 0, ...wrap }, rowStretch, "min-content"), children: [
31997
- props.label != null && /* @__PURE__ */ jsx5("span", { style: { fontFamily: FONT(ctx), fontSize: 15, color: C("textPrimary", "#111") }, children: labelText(props.label, ctx) }),
32005
+ props.label != null && /* @__PURE__ */ jsx5("span", { style: { fontFamily: FONT(ctx), fontSize: pxToRem(15), color: C("textPrimary", "#111") }, children: labelText(props.label, ctx) }),
31998
32006
  /* @__PURE__ */ jsx5(
31999
32007
  "button",
32000
32008
  {
@@ -32195,7 +32203,7 @@ var init_controls = __esm({
32195
32203
  style: { all: "unset", display: "inline-flex", alignItems: "center", gap: 10, cursor: fire ? "pointer" : "default", opacity: props.disabled ? 0.5 : 1, outlineOffset: 2, ...wrap },
32196
32204
  children: [
32197
32205
  box,
32198
- props.label != null && /* @__PURE__ */ jsx5("span", { style: { fontFamily: FONT(ctx), fontSize: 15, color: C("textPrimary", "#13171e") }, children: labelText(props.label, ctx) })
32206
+ props.label != null && /* @__PURE__ */ jsx5("span", { style: { fontFamily: FONT(ctx), fontSize: pxToRem(15), color: C("textPrimary", "#13171e") }, children: labelText(props.label, ctx) })
32199
32207
  ]
32200
32208
  }
32201
32209
  );
@@ -32250,10 +32258,10 @@ var init_controls = __esm({
32250
32258
  "aria-selected": on3,
32251
32259
  tabIndex: on3 ? 0 : -1,
32252
32260
  onClick: () => select(i),
32253
- style: { all: "unset", display: "flex", gap: 6, alignItems: "center", minWidth: 44, minHeight: 44, padding: "10px 0", fontFamily: FONT(ctx), fontWeight: 600, fontSize: 14, cursor: "pointer", color: on3 ? accentTextColor(ctx) : C("textSecondary", "#777"), borderBottom: on3 ? `2px solid ${C("accentPrimary", "#116DFF")}` : "2px solid transparent", marginBottom: -1 },
32261
+ style: { all: "unset", display: "flex", gap: 6, alignItems: "center", minWidth: 44, minHeight: 44, padding: "10px 0", fontFamily: FONT(ctx), fontWeight: 600, fontSize: pxToRem(14), cursor: "pointer", color: on3 ? accentTextColor(ctx) : C("textSecondary", "#777"), borderBottom: on3 ? `2px solid ${C("accentPrimary", "#116DFF")}` : "2px solid transparent", marginBottom: -1 },
32254
32262
  children: [
32255
32263
  asText2(t.label),
32256
- t.badge && /* @__PURE__ */ jsx5("span", { "aria-hidden": true, style: { fontSize: 10, fontWeight: 700, background: C("surfaceTertiary", "#eee"), color: C("textSecondary", "#666"), padding: "1px 6px", borderRadius: 999 }, children: t.badge })
32264
+ t.badge && /* @__PURE__ */ jsx5("span", { "aria-hidden": true, style: { fontSize: pxToRem(10), fontWeight: 700, background: C("surfaceTertiary", "#eee"), color: C("textSecondary", "#666"), padding: "1px 6px", borderRadius: 999 }, children: t.badge })
32257
32265
  ]
32258
32266
  },
32259
32267
  t.id ?? i
@@ -32299,7 +32307,7 @@ var init_controls = __esm({
32299
32307
  "aria-checked": on3,
32300
32308
  tabIndex: on3 || selId == null && i === 0 ? 0 : -1,
32301
32309
  onClick: () => select(i),
32302
- style: { all: "unset", flex: 1, minWidth: 44, minHeight: seg.height - 2 * seg.trackPadding, textAlign: "center", padding: "7px 4px", borderRadius: outerR, fontFamily: FONT(ctx), fontWeight: 600, fontSize: 13, cursor: "pointer", boxSizing: "border-box", background: on3 ? C("surfacePrimary", "#fff") : seg.outlined ? C(pickRole(ctx.tokens.colors, seg.roles.inactive), "#eee") : "transparent", color: on3 ? C("textPrimary", "#111") : C("textSecondary", "#777"), boxShadow: on3 && !seg.outlined ? "0 1px 3px rgba(0,0,0,.12)" : "none", ...outlinedShape },
32310
+ style: { all: "unset", flex: 1, minWidth: 44, minHeight: seg.height - 2 * seg.trackPadding, textAlign: "center", padding: "7px 4px", borderRadius: outerR, fontFamily: FONT(ctx), fontWeight: 600, fontSize: pxToRem(13), cursor: "pointer", boxSizing: "border-box", background: on3 ? C("surfacePrimary", "#fff") : seg.outlined ? C(pickRole(ctx.tokens.colors, seg.roles.inactive), "#eee") : "transparent", color: on3 ? C("textPrimary", "#111") : C("textSecondary", "#777"), boxShadow: on3 && !seg.outlined ? "0 1px 3px rgba(0,0,0,.12)" : "none", ...outlinedShape },
32303
32311
  children: [
32304
32312
  on3 && seg.selectedCheck ? /* @__PURE__ */ jsx5("span", { "aria-hidden": "true", children: "\u2713 " }) : null,
32305
32313
  asText2(o.label ?? o.title ?? o.id) || `Option ${i + 1}`
@@ -32330,8 +32338,8 @@ var init_controls = __esm({
32330
32338
  children: [
32331
32339
  /* @__PURE__ */ jsx5("span", { "aria-hidden": true, style: { display: "inline-flex", alignItems: "center", transition: "transform .15s", transform: open ? "rotate(90deg)" : "none", color: C("textSecondary", "#888") }, children: iconSvg("chevron_right", { size: 16 }) }),
32332
32340
  /* @__PURE__ */ jsxs2("span", { style: { flex: 1, display: "flex", flexDirection: "column" }, children: [
32333
- /* @__PURE__ */ jsx5("span", { style: { fontFamily: FONT(ctx), fontSize: 15, fontWeight: 600, color: C("textPrimary", "#13171e") }, children: asText2(title) ?? "" }),
32334
- subtitle != null && /* @__PURE__ */ jsx5("span", { style: { fontFamily: FONT(ctx), fontSize: 13, color: C("textSecondary", "#888") }, children: asText2(subtitle) })
32341
+ /* @__PURE__ */ jsx5("span", { style: { fontFamily: FONT(ctx), fontSize: pxToRem(15), fontWeight: 600, color: C("textPrimary", "#13171e") }, children: asText2(title) ?? "" }),
32342
+ subtitle != null && /* @__PURE__ */ jsx5("span", { style: { fontFamily: FONT(ctx), fontSize: pxToRem(13), color: C("textSecondary", "#888") }, children: asText2(subtitle) })
32335
32343
  ] })
32336
32344
  ]
32337
32345
  }
@@ -32464,6 +32472,7 @@ var PULL_THRESHOLD, SWIPE_OPEN, PullToRefreshList, SwipeRow, DISMISS_THRESHOLD,
32464
32472
  var init_listGestures = __esm({
32465
32473
  "../../core/web-renderer/src/listGestures.tsx"() {
32466
32474
  "use strict";
32475
+ init_tokens2();
32467
32476
  PULL_THRESHOLD = 56;
32468
32477
  SWIPE_OPEN = 76;
32469
32478
  PullToRefreshList = ({ onRefresh, accent, fg, surface, label: label2 = "Pull to refresh", fontFamily = '"Wix Madefor Text", system-ui', style, children }) => {
@@ -32589,7 +32598,7 @@ var init_listGestures = __esm({
32589
32598
  cursor: "pointer",
32590
32599
  color: "#fff",
32591
32600
  fontWeight: 600,
32592
- fontSize: 13,
32601
+ fontSize: pxToRem(13),
32593
32602
  fontFamily,
32594
32603
  minWidth: SWIPE_OPEN,
32595
32604
  padding: "0 16px",
@@ -33663,7 +33672,7 @@ function hasInteractiveDescendant(node) {
33663
33672
  if (["MonthCalendar", "TimeGrid", "Agenda"].includes(nested.type) && (nested.props?.onSelect || nested.props?.onChange)) return true;
33664
33673
  if (nested.type === "ColorPicker" && nested.props?.onChange) return true;
33665
33674
  if (nested.type === "Fab" && nested.props?.onTap) return true;
33666
- const nestedModifierTap = nested.modifiers?.onTap ?? nested.modifiers?.on_tap;
33675
+ const nestedModifierTap = nested.modifiers?.onTap ?? nested.modifiers?.on_tap ?? nested.modifiers?.onDoubleTap ?? nested.modifiers?.on_double_tap;
33667
33676
  const nestedTapDisabled = nested.props?.disabled === true || nested.props?.loading === true || nested.modifiers?.disabled === true || nested.modifiers?.hitTestable === false || nested.modifiers?.hit_testable === false;
33668
33677
  if (nestedModifierTap && !nestedTapDisabled) return true;
33669
33678
  return Object.values(nested.props ?? {}).some(visit);
@@ -34245,7 +34254,7 @@ function actionTextButton(ctx, action, label2, color, extra) {
34245
34254
  {
34246
34255
  type: "button",
34247
34256
  onClick,
34248
- style: { display: "block", margin: 0, padding: 0, appearance: "none", WebkitAppearance: "none", background: "none", border: "none", textAlign: "left", fontFamily: bodyFont(ctx), fontWeight: 600, fontSize: 13, color, cursor: onClick ? "pointer" : "default", ...extra },
34257
+ style: { display: "block", margin: 0, padding: 0, appearance: "none", WebkitAppearance: "none", background: "none", border: "none", textAlign: "left", fontFamily: bodyFont(ctx), fontWeight: 600, fontSize: pxToRem(13), color, cursor: onClick ? "pointer" : "default", ...extra },
34249
34258
  children: label2
34250
34259
  }
34251
34260
  );
@@ -34527,6 +34536,27 @@ function renderNodeInner(node, ctx) {
34527
34536
  const a11yHidden = extra["aria-hidden"] === "true";
34528
34537
  const tap = node?.modifiers?.onTap ?? node?.modifiers?.on_tap;
34529
34538
  const tapDisabled = normalize(node).props?.disabled === true || normalize(node).props?.loading === true || node?.modifiers?.disabled === true || node?.modifiers?.hitTestable === false || node?.modifiers?.hit_testable === false;
34539
+ const giveControlContract = (activate) => {
34540
+ if (a11yHidden || isNativeInteractiveElement(el) || hasInteractiveDescendant(node)) return;
34541
+ if (extra.role == null) {
34542
+ extra.role = "button";
34543
+ if (typeof el.type !== "string") extra[SYNTHETIC_TAP_ROLE] = true;
34544
+ }
34545
+ const defaultedTabIndex = extra.tabIndex == null || extra.tabIndex === -1 && extra[SYNTHETIC_TABINDEX] === true;
34546
+ if (defaultedTabIndex) {
34547
+ extra.tabIndex = 0;
34548
+ if (typeof el.type !== "string") extra[SYNTHETIC_TABINDEX] = true;
34549
+ }
34550
+ const prevOnKeyDown = el.props.onKeyDown;
34551
+ extra.onKeyDown = (e) => {
34552
+ prevOnKeyDown?.(e);
34553
+ if (e.defaultPrevented || e.target !== e.currentTarget || e.repeat) return;
34554
+ if (e.key !== "Enter" && e.key !== " ") return;
34555
+ e.preventDefault();
34556
+ e.stopPropagation();
34557
+ activate(e);
34558
+ };
34559
+ };
34530
34560
  if (tap && ctx.onAction && !tapDisabled) {
34531
34561
  const prevOnClick = el.props.onClick;
34532
34562
  extra.onClick = (e) => {
@@ -34534,27 +34564,10 @@ function renderNodeInner(node, ctx) {
34534
34564
  prevOnClick?.(e);
34535
34565
  ctx.onAction(resolveItemDeep2(tap, ctx));
34536
34566
  };
34537
- if (!a11yHidden && !isNativeInteractiveElement(el) && !hasInteractiveDescendant(node)) {
34538
- if (extra.role == null) {
34539
- extra.role = "button";
34540
- if (typeof el.type !== "string") extra[SYNTHETIC_TAP_ROLE] = true;
34541
- }
34542
- const defaultedTabIndex = extra.tabIndex == null || extra.tabIndex === -1 && extra[SYNTHETIC_TABINDEX] === true;
34543
- if (defaultedTabIndex) {
34544
- extra.tabIndex = 0;
34545
- if (typeof el.type !== "string") extra[SYNTHETIC_TABINDEX] = true;
34546
- }
34547
- const prevOnKeyDown = el.props.onKeyDown;
34548
- extra.onKeyDown = (e) => {
34549
- prevOnKeyDown?.(e);
34550
- if (e.defaultPrevented || e.target !== e.currentTarget || e.repeat) return;
34551
- if (e.key !== "Enter" && e.key !== " ") return;
34552
- e.preventDefault();
34553
- e.stopPropagation();
34554
- prevOnClick?.(e);
34555
- ctx.onAction(resolveItemDeep2(tap, ctx));
34556
- };
34557
- }
34567
+ giveControlContract((e) => {
34568
+ prevOnClick?.(e);
34569
+ ctx.onAction(resolveItemDeep2(tap, ctx));
34570
+ });
34558
34571
  ensurePressStyles();
34559
34572
  extra["data-himalaya-tap"] = "1";
34560
34573
  const idiomPressed = idiomPress(ctx, "tappable");
@@ -34566,6 +34579,16 @@ function renderNodeInner(node, ctx) {
34566
34579
  e.stopPropagation();
34567
34580
  ctx.onAction(resolveItemDeep2(dtap, ctx));
34568
34581
  };
34582
+ if (!tap && !tapDisabled) {
34583
+ giveControlContract(() => {
34584
+ ctx.onAction(resolveItemDeep2(dtap, ctx));
34585
+ });
34586
+ extra.onClick = (e) => {
34587
+ if (e.detail !== 0) return;
34588
+ e.stopPropagation();
34589
+ ctx.onAction(resolveItemDeep2(dtap, ctx));
34590
+ };
34591
+ }
34569
34592
  }
34570
34593
  const pf = node?.modifiers?.pressFeedback ?? node?.modifiers?.press_feedback;
34571
34594
  if (pf && pf !== "none" && !(ctx.reduceMotion() && (node?.modifiers?.respectReducedMotion ?? node?.modifiers?.respect_reduced_motion) !== false)) {
@@ -34896,7 +34919,7 @@ function renderInner(node, ctx) {
34896
34919
  ] });
34897
34920
  }
34898
34921
  return /* @__PURE__ */ jsxs5("div", { style: { display: "flex", flexDirection: "column", gap: 6, ...wrap }, children: [
34899
- !ctx.runtimeDegraded && /* @__PURE__ */ jsxs5("div", { style: { fontSize: 10, color: C("textSecondary", "#9aa2ad"), fontStyle: "italic" }, children: [
34922
+ !ctx.runtimeDegraded && /* @__PURE__ */ jsxs5("div", { style: { fontSize: pxToRem(10), color: C("textSecondary", "#9aa2ad"), fontStyle: "italic" }, children: [
34900
34923
  "dynamic list",
34901
34924
  itemsPath ? ` \xB7 ${itemsPath.replace(/^\$service:/, "")}` : ""
34902
34925
  ] }),
@@ -34935,8 +34958,8 @@ function renderInner(node, ctx) {
34935
34958
  case "EmptyState":
34936
34959
  return /* @__PURE__ */ jsxs5("div", { style: { textAlign: "center", width: "100%", padding: 12, boxSizing: "border-box", ...wrap }, children: [
34937
34960
  /* @__PURE__ */ jsx8("div", { style: { width: 46, height: 46, borderRadius: 13, background: C("surfaceTertiary", "#eee"), display: "grid", placeItems: "center", margin: "0 auto 12px", color: C("textSecondary", "#9aa2ad") }, children: iconSvg(props.icon, { size: 24 }) }),
34938
- /* @__PURE__ */ jsx8("div", { style: { fontFamily: bodyFont(ctx), fontWeight: 600, fontSize: 16, color: C("textPrimary", "#111") }, children: asBoundText(props.title, ctx) || "Empty" }),
34939
- props.subtitle && /* @__PURE__ */ jsx8("div", { style: { fontFamily: bodyFont(ctx), fontSize: 13, color: C("textSecondary", "#888"), marginTop: 3 }, children: txt(props.subtitle, ctx) }),
34961
+ /* @__PURE__ */ jsx8("div", { style: { fontFamily: bodyFont(ctx), fontWeight: 600, fontSize: pxToRem(16), color: C("textPrimary", "#111") }, children: asBoundText(props.title, ctx) || "Empty" }),
34962
+ props.subtitle && /* @__PURE__ */ jsx8("div", { style: { fontFamily: bodyFont(ctx), fontSize: pxToRem(13), color: C("textSecondary", "#888"), marginTop: 3 }, children: txt(props.subtitle, ctx) }),
34940
34963
  actionTextButton(ctx, props.action, asBoundText(props.actionLabel, ctx) || "Take action", accentTextColor(ctx), { margin: "12px auto 0", textAlign: "center" })
34941
34964
  ] });
34942
34965
  // ───────────── atoms ─────────────
@@ -34977,13 +35000,13 @@ function renderInner(node, ctx) {
34977
35000
  const badgeLabel = m?.accessibilityLabel ?? m?.accessibility_label;
34978
35001
  const badgeRole = roleDeclared ? void 0 : liveCount ? "status" : typeof badgeLabel === "string" && badgeLabel.trim() !== "" ? "img" : void 0;
34979
35002
  const fg = _bt ? c : sevTextColor(ctx, props.style ?? "info");
34980
- return /* @__PURE__ */ jsx8("span", { role: badgeRole, style: { display: "inline-flex", alignItems: "center", padding: "3px 9px", borderRadius: 999, fontSize: 12, fontWeight: 700, fontFamily: bodyFont(ctx), background: `color-mix(in srgb, ${c} 16%, ${C("surfacePrimary", "#fff")})`, color: fg, ...wrap }, children: ctx.empty ? "" : txt(props.text, ctx) || "Badge" });
35003
+ return /* @__PURE__ */ jsx8("span", { role: badgeRole, style: { display: "inline-flex", alignItems: "center", padding: "3px 9px", borderRadius: 999, fontSize: pxToRem(12), fontWeight: 700, fontFamily: bodyFont(ctx), background: `color-mix(in srgb, ${c} 16%, ${C("surfacePrimary", "#fff")})`, color: fg, ...wrap }, children: ctx.empty ? "" : txt(props.text, ctx) || "Badge" });
34981
35004
  }
34982
35005
  case "Tag": {
34983
35006
  const tagToken = boundTokenName(props.tokenPath, props.token, ctx);
34984
35007
  const c = C(tagToken ?? "accentPrimary", "#116DFF");
34985
35008
  const tagFg = tagToken ? c : accentTextColor(ctx);
34986
- return /* @__PURE__ */ jsx8("span", { style: { display: "inline-flex", alignItems: "center", padding: "5px 11px", borderRadius: 999, fontSize: 13, fontWeight: 600, fontFamily: bodyFont(ctx), background: `color-mix(in srgb, ${c} 14%, ${C("surfacePrimary", "#fff")})`, border: `1px solid color-mix(in srgb, ${c} 30%, transparent)`, color: tagFg, ...wrap }, children: ctx.empty ? "" : txt(props.text, ctx) || "Tag" });
35009
+ return /* @__PURE__ */ jsx8("span", { style: { display: "inline-flex", alignItems: "center", padding: "5px 11px", borderRadius: 999, fontSize: pxToRem(13), fontWeight: 600, fontFamily: bodyFont(ctx), background: `color-mix(in srgb, ${c} 14%, ${C("surfacePrimary", "#fff")})`, border: `1px solid color-mix(in srgb, ${c} 30%, transparent)`, color: tagFg, ...wrap }, children: ctx.empty ? "" : txt(props.text, ctx) || "Tag" });
34987
35010
  }
34988
35011
  case "ProgressBar":
34989
35012
  return /* @__PURE__ */ jsx8(ProgressBarNode, { props, ctx, wrap });
@@ -35015,7 +35038,7 @@ function renderInner(node, ctx) {
35015
35038
  } : void 0;
35016
35039
  const leadingEl = props.leading && /* @__PURE__ */ jsx8("div", { style: { flex: "none", display: "flex" }, children: renderNode(props.leading, ctx) });
35017
35040
  const textEl = /* @__PURE__ */ jsxs5("div", { style: { flex: 1, minWidth: 0, display: "flex", flexDirection: "column", gap: 2 }, children: [
35018
- props.overline != null && /* @__PURE__ */ jsx8("span", { style: { fontFamily: bodyFont(ctx), fontSize: 11, fontWeight: 600, letterSpacing: 0.4, textTransform: "uppercase", color: C(props.overlineColor ?? "textSecondary", "#888"), ...ell }, children: txt(props.overline, ctx) }),
35041
+ props.overline != null && /* @__PURE__ */ jsx8("span", { style: { fontFamily: bodyFont(ctx), fontSize: pxToRem(11), fontWeight: 600, letterSpacing: 0.4, textTransform: "uppercase", color: C(props.overlineColor ?? "textSecondary", "#888"), ...ell }, children: txt(props.overline, ctx) }),
35019
35042
  /* @__PURE__ */ jsx8("span", { style: { fontFamily: fontStack(titleF.family, ctx.idiom), fontSize: titleF.remSize, fontWeight: titleF.weight, color: C(props.titleColor ?? "textPrimary", "#13171e"), ...ell }, children: txt(props.title, ctx) ?? (ctx.empty ? "" : "") }),
35020
35043
  props.subtitle != null && /* @__PURE__ */ jsx8("span", { style: { fontFamily: fontStack(subF.family, ctx.idiom), fontSize: subF.remSize, color: C(props.subtitleColor ?? "textSecondary", "#888"), ...ell }, children: txt(props.subtitle, ctx) })
35021
35044
  ] });
@@ -35039,7 +35062,7 @@ function renderInner(node, ctx) {
35039
35062
  // Menu popup renders inside this slot, menu-item clicks don't double-fire
35040
35063
  // the row either. Mirrors the Button node, which stops for the same reason.
35041
35064
  /* @__PURE__ */ jsx8("div", { onClick: (e) => e.stopPropagation(), style: { flex: "none", display: "flex", alignItems: "center" }, children: renderNode(props.trailing, ctx) })
35042
- ) : accessoryGlyph && /* @__PURE__ */ jsx8("span", { "aria-hidden": props.accessory === "chevron" ? true : void 0, style: { flex: "none", color: C("textTertiary", "#c0c4cc"), fontSize: 20, lineHeight: 1 }, children: accessoryGlyph })
35065
+ ) : accessoryGlyph && /* @__PURE__ */ jsx8("span", { "aria-hidden": props.accessory === "chevron" ? true : void 0, style: { flex: "none", color: C("textTertiary", "#c0c4cc"), fontSize: pxToRem(20), lineHeight: 1 }, children: accessoryGlyph })
35043
35066
  ] });
35044
35067
  }
35045
35068
  case "Slider":
@@ -35056,7 +35079,7 @@ function renderInner(node, ctx) {
35056
35079
  case "Tooltip": {
35057
35080
  const rich = props.title != null && props.title !== "";
35058
35081
  return /* @__PURE__ */ jsxs5("div", { style: { display: "inline-flex", flexDirection: "column", alignItems: "flex-start", gap: 6, ...wrap }, children: [
35059
- /* @__PURE__ */ jsxs5("div", { role: "tooltip", style: { maxWidth: 240, width: "fit-content", background: C("textPrimary", "#13171e"), color: C("textOnAccent", "#fff"), borderRadius: 8, padding: rich ? "10px 12px" : "6px 10px", fontFamily: bodyFont(ctx), fontSize: 13, lineHeight: 1.35 }, children: [
35082
+ /* @__PURE__ */ jsxs5("div", { role: "tooltip", style: { maxWidth: 240, width: "fit-content", background: C("textPrimary", "#13171e"), color: C("textOnAccent", "#fff"), borderRadius: 8, padding: rich ? "10px 12px" : "6px 10px", fontFamily: bodyFont(ctx), fontSize: pxToRem(13), lineHeight: 1.35 }, children: [
35060
35083
  rich && /* @__PURE__ */ jsx8("div", { style: { fontWeight: 700, marginBottom: 3 }, children: txt(props.title, ctx) }),
35061
35084
  txt(props.text, ctx)
35062
35085
  ] }),
@@ -35074,17 +35097,17 @@ function renderInner(node, ctx) {
35074
35097
  case "Section": {
35075
35098
  const inset = props.inset === true;
35076
35099
  return /* @__PURE__ */ jsxs5("div", { style: { display: "flex", flexDirection: "column", width: "100%", boxSizing: "border-box", ...wrap }, children: [
35077
- props.header != null && /* @__PURE__ */ jsx8("div", { style: { fontFamily: bodyFont(ctx), fontSize: 12, fontWeight: 600, letterSpacing: 0.4, textTransform: "uppercase", color: C("textSecondary", "#888"), padding: inset ? "0 4px 6px" : "6px 16px" }, children: txt(props.header, ctx) }),
35100
+ props.header != null && /* @__PURE__ */ jsx8("div", { style: { fontFamily: bodyFont(ctx), fontSize: pxToRem(12), fontWeight: 600, letterSpacing: 0.4, textTransform: "uppercase", color: C("textSecondary", "#888"), padding: inset ? "0 4px 6px" : "6px 16px" }, children: txt(props.header, ctx) }),
35078
35101
  /* @__PURE__ */ jsx8("div", { style: inset ? { background: C("surfacePrimary", "#fff"), border: `1px solid ${C("border", "#e8eaed")}`, borderRadius: 12, overflow: "hidden", padding: "2px 14px", boxSizing: "border-box" } : void 0, children: kids2(props.children, ctx) }),
35079
- props.footer != null && /* @__PURE__ */ jsx8("div", { style: { fontFamily: bodyFont(ctx), fontSize: 12, color: C("textSecondary", "#888"), padding: inset ? "6px 4px 0" : "6px 16px" }, children: txt(props.footer, ctx) })
35102
+ props.footer != null && /* @__PURE__ */ jsx8("div", { style: { fontFamily: bodyFont(ctx), fontSize: pxToRem(12), color: C("textSecondary", "#888"), padding: inset ? "6px 4px 0" : "6px 16px" }, children: txt(props.footer, ctx) })
35080
35103
  ] });
35081
35104
  }
35082
35105
  case "DisclosureGroup":
35083
35106
  return /* @__PURE__ */ jsx8(DisclosureGroupNode, { props, ctx, wrap });
35084
35107
  case "LabeledContent": {
35085
35108
  return /* @__PURE__ */ jsxs5("div", { style: { display: "flex", alignItems: "center", justifyContent: "space-between", gap: 12, width: "100%", padding: "8px 2px", boxSizing: "border-box", ...wrap }, children: [
35086
- /* @__PURE__ */ jsx8("span", { style: { fontFamily: bodyFont(ctx), fontSize: 15, color: C("textPrimary", "#13171e") }, children: txt(props.label, ctx) ?? "" }),
35087
- props.content ? /* @__PURE__ */ jsx8("div", { style: { flex: "none" }, children: renderNode(props.content, ctx) }) : /* @__PURE__ */ jsx8("span", { style: { fontFamily: bodyFont(ctx), fontSize: 15, color: C("textSecondary", "#636b78"), textAlign: "right" }, children: txt(props.value, ctx) })
35109
+ /* @__PURE__ */ jsx8("span", { style: { fontFamily: bodyFont(ctx), fontSize: pxToRem(15), color: C("textPrimary", "#13171e") }, children: txt(props.label, ctx) ?? "" }),
35110
+ props.content ? /* @__PURE__ */ jsx8("div", { style: { flex: "none" }, children: renderNode(props.content, ctx) }) : /* @__PURE__ */ jsx8("span", { style: { fontFamily: bodyFont(ctx), fontSize: pxToRem(15), color: C("textSecondary", "#636b78"), textAlign: "right" }, children: txt(props.value, ctx) })
35088
35111
  ] });
35089
35112
  }
35090
35113
  case "Label": {
@@ -35155,7 +35178,7 @@ function renderInner(node, ctx) {
35155
35178
  const onClick = ctx.onAction && props.action ? () => ctx.onAction(resolveItemDeep2(props.action, ctx)) : void 0;
35156
35179
  return /* @__PURE__ */ jsxs5("div", { onClick, style: { display: "inline-flex", alignItems: "center", justifyContent: "center", gap: extended ? 10 : 0, height: dim, width: extended ? void 0 : dim, padding: extended ? "0 20px" : 0, borderRadius: extended ? dim / 2 : "50%", background: bg, color: fg, boxShadow: "0 4px 12px rgba(0,0,0,.22)", cursor: onClick ? "pointer" : "default", ...wrap }, children: [
35157
35180
  props.icon && /* @__PURE__ */ jsx8("span", { style: { display: "inline-grid", placeItems: "center", width: isz, height: isz }, children: iconSvg(props.icon, { size: isz, color: fg }) }),
35158
- extended && /* @__PURE__ */ jsx8("span", { style: { fontFamily: bodyFont(ctx), fontWeight: 600, fontSize: 15 }, children: txt(props.label, ctx) })
35181
+ extended && /* @__PURE__ */ jsx8("span", { style: { fontFamily: bodyFont(ctx), fontWeight: 600, fontSize: pxToRem(15) }, children: txt(props.label, ctx) })
35159
35182
  ] });
35160
35183
  }
35161
35184
  case "Map":
@@ -35211,13 +35234,13 @@ function renderInner(node, ctx) {
35211
35234
  const fieldLabel = asBoundText(props.label, ctx);
35212
35235
  const showOwnError = !isTextKind && props.errorMessage;
35213
35236
  return /* @__PURE__ */ jsxs5("div", { style: { width: "100%", ...wrap }, children: [
35214
- (fieldLabel || props.required) && /* @__PURE__ */ jsxs5("div", { style: { fontFamily: bodyFont(ctx), fontWeight: 600, fontSize: 13, color: C("textPrimary", "#111"), marginBottom: 6 }, children: [
35237
+ (fieldLabel || props.required) && /* @__PURE__ */ jsxs5("div", { style: { fontFamily: bodyFont(ctx), fontWeight: 600, fontSize: pxToRem(13), color: C("textPrimary", "#111"), marginBottom: 6 }, children: [
35215
35238
  fieldLabel,
35216
35239
  props.required && /* @__PURE__ */ jsx8("span", { style: { color: C("danger", "#e62214") }, children: " *" })
35217
35240
  ] }),
35218
35241
  renderNode(inner, ctx),
35219
- props.helpText && /* @__PURE__ */ jsx8("div", { style: { fontSize: 12, color: C("textSecondary", "#888"), marginTop: 4 }, children: txt(props.helpText, ctx) }),
35220
- showOwnError && /* @__PURE__ */ jsx8("div", { role: "alert", style: { fontSize: 12, color: C("danger", "#E62214"), marginTop: 4 }, children: txt(props.errorMessage, ctx) })
35242
+ props.helpText && /* @__PURE__ */ jsx8("div", { style: { fontSize: pxToRem(12), color: C("textSecondary", "#888"), marginTop: 4 }, children: txt(props.helpText, ctx) }),
35243
+ showOwnError && /* @__PURE__ */ jsx8("div", { role: "alert", style: { fontSize: pxToRem(12), color: C("danger", "#E62214"), marginTop: 4 }, children: txt(props.errorMessage, ctx) })
35221
35244
  ] });
35222
35245
  }
35223
35246
  case "FieldError":
@@ -35231,8 +35254,8 @@ function renderInner(node, ctx) {
35231
35254
  const branch = isNodeLike(props.data) ? "data" : isNodeLike(props.loading) ? "loading" : isNodeLike(props.error) ? "error" : null;
35232
35255
  const cfg = !branch ? props.state === "error" ? props.error ?? props.empty : props.empty ?? props.error : null;
35233
35256
  return /* @__PURE__ */ jsx8("div", { style: { display: "flex", flexDirection: "column", gap: 6, width: "100%", ...wrap }, children: branch ? renderNode(props[branch], ctx) : cfg && typeof cfg === "object" ? /* @__PURE__ */ jsxs5("div", { style: { textAlign: "center", padding: "24px 12px", color: C("textSecondary", "#9aa2ad") }, children: [
35234
- cfg.title && /* @__PURE__ */ jsx8("div", { style: { fontSize: 15, fontWeight: 600, color: C("textPrimary", "#111") }, children: asText2(cfg.title) }),
35235
- (cfg.subtitle ?? cfg.message) && /* @__PURE__ */ jsx8("div", { style: { fontSize: 13, marginTop: 4 }, children: asText2(cfg.subtitle ?? cfg.message) }),
35257
+ cfg.title && /* @__PURE__ */ jsx8("div", { style: { fontSize: pxToRem(15), fontWeight: 600, color: C("textPrimary", "#111") }, children: asText2(cfg.title) }),
35258
+ (cfg.subtitle ?? cfg.message) && /* @__PURE__ */ jsx8("div", { style: { fontSize: pxToRem(13), marginTop: 4 }, children: asText2(cfg.subtitle ?? cfg.message) }),
35236
35259
  actionTextButton(ctx, cfg.retry ?? cfg.action, asText2(cfg.retryLabel) || asText2(cfg.actionLabel) || (cfg.retry != null ? "Retry" : "Take action"), accentTextColor(ctx), { margin: "12px auto 0", textAlign: "center" })
35237
35260
  ] }) : null });
35238
35261
  }
@@ -35286,15 +35309,15 @@ function renderInner(node, ctx) {
35286
35309
  return /* @__PURE__ */ jsxs5("div", { style: { display: "flex", gap: 11, width: "100%", boxSizing: "border-box", borderRadius: ctx.radius("md", 10), padding: 13, background: `color-mix(in srgb, ${accent} 12%, ${C("surfacePrimary", "#fff")})`, border: `1px solid color-mix(in srgb, ${accent} 32%, transparent)`, ...wrap }, children: [
35287
35310
  /* @__PURE__ */ jsx8("div", { style: { width: 3, borderRadius: 3, background: accent, flex: "none" } }),
35288
35311
  /* @__PURE__ */ jsxs5("div", { children: [
35289
- /* @__PURE__ */ jsx8("div", { style: { fontFamily: bodyFont(ctx), fontWeight: 600, fontSize: 14, color: C("textPrimary", "#111") }, children: txt(props.title, ctx) }),
35290
- props.message && /* @__PURE__ */ jsx8("div", { style: { fontFamily: bodyFont(ctx), fontSize: 13, lineHeight: 1.4, color: C("textSecondary", "#666"), marginTop: 2 }, children: txt(props.message, ctx) }),
35312
+ /* @__PURE__ */ jsx8("div", { style: { fontFamily: bodyFont(ctx), fontWeight: 600, fontSize: pxToRem(14), color: C("textPrimary", "#111") }, children: txt(props.title, ctx) }),
35313
+ props.message && /* @__PURE__ */ jsx8("div", { style: { fontFamily: bodyFont(ctx), fontSize: pxToRem(13), lineHeight: 1.4, color: C("textSecondary", "#666"), marginTop: 2 }, children: txt(props.message, ctx) }),
35291
35314
  actionTextButton(ctx, props.action, asBoundText(props.actionLabel, ctx) || "Take action", C("textPrimary", "#111"), { marginTop: 7, textDecoration: "underline" })
35292
35315
  ] })
35293
35316
  ] });
35294
35317
  }
35295
35318
  case "Snackbar": {
35296
35319
  const dot = sevColor(ctx, props.severity ?? "info");
35297
- return /* @__PURE__ */ jsxs5("div", { style: { display: "flex", alignItems: "center", gap: 10, background: "#1c1f26", color: "#fff", borderRadius: ctx.radius("md", 10), padding: "12px 14px", width: "100%", boxSizing: "border-box", fontFamily: bodyFont(ctx), fontWeight: 500, fontSize: 14, ...wrap }, children: [
35320
+ return /* @__PURE__ */ jsxs5("div", { style: { display: "flex", alignItems: "center", gap: 10, background: "#1c1f26", color: "#fff", borderRadius: ctx.radius("md", 10), padding: "12px 14px", width: "100%", boxSizing: "border-box", fontFamily: bodyFont(ctx), fontWeight: 500, fontSize: pxToRem(14), ...wrap }, children: [
35298
35321
  /* @__PURE__ */ jsx8("span", { style: { width: 18, height: 18, borderRadius: "50%", background: dot, display: "grid", placeItems: "center", fontSize: 11, flex: "none" }, children: "\u2713" }),
35299
35322
  /* @__PURE__ */ jsx8("span", { style: { flex: 1, minWidth: 0 }, children: txt(props.message, ctx) }),
35300
35323
  actionTextButton(ctx, props.action, asBoundText(props.actionLabel, ctx) || "Take action", "#fff", { flex: "none", textDecoration: "underline" })
@@ -35310,11 +35333,11 @@ function renderInner(node, ctx) {
35310
35333
  // draws as its own modal dialog.
35311
35334
  case "AlertDialog":
35312
35335
  return /* @__PURE__ */ jsxs5("div", { role: "alertdialog", "aria-label": props.title != null ? asBoundText(props.title, ctx) : "Alert", style: { background: C("surfacePrimary", "#fff"), borderRadius: ctx.radius("lg", 14), padding: 18, width: "100%", boxSizing: "border-box", border: `1px solid ${C("border", "#e3e3e3")}`, boxShadow: "0 12px 30px -12px rgba(0,0,0,.4)", ...wrap }, children: [
35313
- /* @__PURE__ */ jsx8("div", { style: { fontFamily: bodyFont(ctx), fontWeight: 700, fontSize: 17, color: C("textPrimary", "#111") }, children: txt(props.title, ctx) }),
35314
- /* @__PURE__ */ jsx8("div", { style: { fontFamily: bodyFont(ctx), fontSize: 14, lineHeight: 1.45, color: C("textSecondary", "#666"), margin: "6px 0 16px" }, children: txt(props.message, ctx) }),
35336
+ /* @__PURE__ */ jsx8("div", { style: { fontFamily: bodyFont(ctx), fontWeight: 700, fontSize: pxToRem(17), color: C("textPrimary", "#111") }, children: txt(props.title, ctx) }),
35337
+ /* @__PURE__ */ jsx8("div", { style: { fontFamily: bodyFont(ctx), fontSize: pxToRem(14), lineHeight: 1.45, color: C("textSecondary", "#666"), margin: "6px 0 16px" }, children: txt(props.message, ctx) }),
35315
35338
  /* @__PURE__ */ jsxs5("div", { style: { display: "flex", gap: 10 }, children: [
35316
- props.cancelAction != null && /* @__PURE__ */ jsx8("button", { type: "button", onClick: actionClick(ctx, props.cancelAction), style: { flex: 1, textAlign: "center", padding: 11, borderRadius: ctx.radius("md", 8), appearance: "none", WebkitAppearance: "none", border: "none", fontFamily: bodyFont(ctx), fontWeight: 600, fontSize: 15, background: C("surfaceTertiary", "#eee"), color: C("textPrimary", "#111"), cursor: ctx.onAction ? "pointer" : "default" }, children: asBoundText(props.cancelLabel, ctx) || "Cancel" }),
35317
- props.confirmAction != null && /* @__PURE__ */ jsx8("button", { type: "button", onClick: actionClick(ctx, props.confirmAction), style: { flex: 1, textAlign: "center", padding: 11, borderRadius: ctx.radius("md", 8), appearance: "none", WebkitAppearance: "none", border: "none", fontFamily: bodyFont(ctx), fontWeight: 600, fontSize: 15, background: props.destructive ? C("danger", "#E62214") : C("accentPrimary", "#116DFF"), color: "#fff", cursor: ctx.onAction ? "pointer" : "default" }, children: asBoundText(props.confirmLabel, ctx) || (props.destructive ? "Delete" : "Confirm") })
35339
+ props.cancelAction != null && /* @__PURE__ */ jsx8("button", { type: "button", onClick: actionClick(ctx, props.cancelAction), style: { flex: 1, textAlign: "center", padding: 11, borderRadius: ctx.radius("md", 8), appearance: "none", WebkitAppearance: "none", border: "none", fontFamily: bodyFont(ctx), fontWeight: 600, fontSize: pxToRem(15), background: C("surfaceTertiary", "#eee"), color: C("textPrimary", "#111"), cursor: ctx.onAction ? "pointer" : "default" }, children: asBoundText(props.cancelLabel, ctx) || "Cancel" }),
35340
+ props.confirmAction != null && /* @__PURE__ */ jsx8("button", { type: "button", onClick: actionClick(ctx, props.confirmAction), style: { flex: 1, textAlign: "center", padding: 11, borderRadius: ctx.radius("md", 8), appearance: "none", WebkitAppearance: "none", border: "none", fontFamily: bodyFont(ctx), fontWeight: 600, fontSize: pxToRem(15), background: props.destructive ? C("danger", "#E62214") : C("accentPrimary", "#116DFF"), color: "#fff", cursor: ctx.onAction ? "pointer" : "default" }, children: asBoundText(props.confirmLabel, ctx) || (props.destructive ? "Delete" : "Confirm") })
35318
35341
  ] })
35319
35342
  ] });
35320
35343
  // ───────────── embeddable WebView ─────────────
@@ -35326,13 +35349,13 @@ function renderInner(node, ctx) {
35326
35349
  if (intent) return /* @__PURE__ */ jsx8("div", { style: { alignSelf: "stretch", ...wrap }, children: intent(props, ctx) });
35327
35350
  const childKeys = Object.entries(props).filter(([, v]) => isNodeLike(v) || Array.isArray(v) && v.some(isNodeLike));
35328
35351
  return /* @__PURE__ */ jsxs5("div", { "data-unknown-type": type, style: { display: "flex", flexDirection: "column", gap: 6, padding: 6, border: `1px dashed ${C("border", "#c5cdd6")}`, borderRadius: 6, ...wrap }, children: [
35329
- /* @__PURE__ */ jsx8("div", { style: { alignSelf: "flex-start", fontSize: 9, fontWeight: 700, letterSpacing: 0.4, padding: "1px 6px", borderRadius: 999, background: C("surfaceTertiary", "#f0f0f3"), color: C("textSecondary", "#9aa2ad"), fontFamily: "ui-monospace, monospace" }, children: type }),
35352
+ /* @__PURE__ */ jsx8("div", { style: { alignSelf: "flex-start", fontSize: pxToRem(9), fontWeight: 700, letterSpacing: 0.4, padding: "1px 6px", borderRadius: 999, background: C("surfaceTertiary", "#f0f0f3"), color: C("textSecondary", "#9aa2ad"), fontFamily: "ui-monospace, monospace" }, children: type }),
35330
35353
  childKeys.map(([k, v]) => /* @__PURE__ */ jsx8(React7.Fragment, { children: Array.isArray(v) ? kids2(v.filter(isNodeLike), ctx) : renderNode(v, ctx) }, k))
35331
35354
  ] });
35332
35355
  }
35333
35356
  }
35334
35357
  }
35335
- var useIsomorphicLayoutEffect, ResponsiveGrid, SPLIT_EXPANDED_MIN_WIDTH, SPLIT_COLUMN_GAP, ResponsiveSplitView, ABSOLUTE_URL_RE, appearKeyframesInjected, pressStylesInjected, FOCUS_RING_CSS, focusStylesInjected, HLIST_CHILD_CSS, hListStylesInjected, listAnimateRuntimeInstalled, transitionKeyframesInjected, countUpRuntimeInjected, MEASURE_PREFIX, measureRuntimeInjected, revealRuntimeInjected, vectorAnimStylesInjected, scrollProgressRuntimeInjected, confettiRuntimeInjected, lottieRuntimeInjected, riveRuntimeInjected, gradientKeyframesInjected, parallaxRuntimeInjected, spinKeyframesInjected, marqueeKeyframesInjected, alignItems, zJustifyItems, hAlignItems, bodyFont, kids2, rowKidCtx, rowKids, staggeredKids, asTextL10n, asBoundText, useBoundString, InterpolatedTextView, txt, selectFragmentCase, fragmentValueHash, fragmentSlotContent, FragmentSlotNode, RichContentEditorNode, WorkerSubtreeNode, RichContentNode, resolveItemDeep2, resolveSwipeActions, resolveModBindings, resolvedComponentId, directServiceBindings, ReactiveDirectScalars, HiddenGate, KEYBOARD_INPUT_MODES, AUTOCAPITALIZE_VALUES, ENTER_KEY_HINTS, AUTOGROW_CEILING, EditableField, MenuNode, LoadMoreSentinel, FieldErrorNode, FormView, MediaSlotProvider, MEDIA_ITEM_BINDABLE, MediaPlayerView, VideoNode, PdfViewNode, WebViewNode, InteractivePicker, InteractiveDatePicker, InteractiveSearchField, InteractiveStepper, SYNTHETIC_TAP_ROLE, SYNTHETIC_TABINDEX, INFERRED_DECORATIVE, SELF_RENDERED_LEAF, ROLE_WHEN_NAMED, AUTHORED_ROLE, PENDING_RANGE, RANGE_ROLES, NODE_A11Y_ATTRS, INTERACTIVE_ROLES, ALWAYS_INTERACTIVE_COMPONENT_TYPES, controlNode, ToggleNode, SliderNode, SelectionControlNode, TabsNode, SegmentedControlNode, DisclosureGroupNode, GridNode, SplitViewNode, TextNode, ImageNode, ANIMATION_LEAF, LottieNode, RiveNode, AvatarNode, IconNode, ButtonNode, OtpInputNode, ProgressBarNode, ActivityIndicatorNode, NATIVELY_TABBABLE, BottomSheetNode, PRESENTED_OVERLAY_ATTR, PopoverNode, ChipsInputNode, ChipNode, TableNode, GaugeRing, GaugeNode, RATING_METRICS, ratingMetrics, RatingNode, AvatarStripNode, CHART_STROKE_CYCLE, chartStrokeAt, chartBarCenter, ChartNode, donutSliceOpacity, DonutChartNode, LegendMarker, LegendNode, cellAlign, DataTableNode, voiceNoteState, voiceNoteDelivery, VOICE_NOTE_DEFAULT_BARS, clampBarCount, VoiceNoteNode, TimelineNode, WheelPickerNode, ColorPickerNode, FilterChipsNode, TILE_PX, MAX_MERCATOR_LAT, DEFAULT_TILE_MAX_ZOOM, CIRCLE_SEGMENTS, METRES_PER_DEG_LAT, MARKER_HIT_RADIUS, SHAPE_HIT_RADIUS, MapNode, CollapsingHeaderNode, UnsupportedOnSurface, CALENDAR_DATE_ONLY_RE, CAL_DEFAULT_MAX_DOTS, CAL_AGENDA_INITIAL_DAYS, CAL_AGENDA_PAGE_DAYS, CAL_DEFAULT_SNAP_MINUTES, CAL_UNASSIGNED_LANE_ID, MonthCalendarNode, TimeGridNode, AgendaNode, ARIA_ROLE, initialFocusScheduled, PRESENTED_SCOPE, focusRoots, A11yHintDescription, WebRenderer;
35358
+ var useIsomorphicLayoutEffect, ResponsiveGrid, SPLIT_EXPANDED_MIN_WIDTH, SPLIT_COLUMN_GAP, ResponsiveSplitView, ABSOLUTE_URL_RE, appearKeyframesInjected, pressStylesInjected, FOCUS_RING_CSS, focusStylesInjected, HLIST_CHILD_CSS, hListStylesInjected, listAnimateRuntimeInstalled, transitionKeyframesInjected, countUpRuntimeInjected, MEASURE_PREFIX, measureRuntimeInjected, revealRuntimeInjected, vectorAnimStylesInjected, scrollProgressRuntimeInjected, confettiRuntimeInjected, lottieRuntimeInjected, riveRuntimeInjected, gradientKeyframesInjected, parallaxRuntimeInjected, spinKeyframesInjected, marqueeKeyframesInjected, alignItems, zJustifyItems, hAlignItems, bodyFont, kids2, rowKidCtx, rowKids, staggeredKids, asTextL10n, asBoundText, useBoundString, InterpolatedTextView, txt, selectFragmentCase, fragmentValueHash, fragmentSlotContent, FragmentSlotNode, RichContentEditorNode, WorkerSubtreeNode, RichContentNode, resolveItemDeep2, resolveSwipeActions, resolveModBindings, resolvedComponentId, directServiceBindings, ReactiveDirectScalars, HiddenGate, KEYBOARD_INPUT_MODES, AUTOCAPITALIZE_VALUES, ENTER_KEY_HINTS, AUTOGROW_CEILING, EditableField, MenuNode, LoadMoreSentinel, FieldErrorNode, FormView, MediaSlotProvider, MEDIA_ITEM_BINDABLE, MediaPlayerView, VideoNode, PdfViewNode, WebViewNode, InteractivePicker, InteractiveDatePicker, InteractiveSearchField, InteractiveStepper, SYNTHETIC_TAP_ROLE, SYNTHETIC_TABINDEX, INFERRED_DECORATIVE, SELF_RENDERED_LEAF, ROLE_WHEN_NAMED, AUTHORED_ROLE, PENDING_RANGE, RANGE_ROLES, NODE_A11Y_ATTRS, INTERACTIVE_ROLES, ALWAYS_INTERACTIVE_COMPONENT_TYPES, controlNode, ToggleNode, SliderNode, SelectionControlNode, TabsNode, SegmentedControlNode, DisclosureGroupNode, GridNode, SplitViewNode, TextNode, ImageNode, ANIMATION_LEAF, LottieNode, RiveNode, AvatarNode, IconNode, ButtonNode, OtpInputNode, ProgressBarNode, ACTIVITY_DEFAULT_NAME, ActivityIndicatorNode, NATIVELY_TABBABLE, BottomSheetNode, PRESENTED_OVERLAY_ATTR, PopoverNode, ChipsInputNode, ChipNode, TableNode, GaugeRing, GaugeNode, RATING_METRICS, ratingMetrics, RatingNode, AvatarStripNode, CHART_STROKE_CYCLE, chartStrokeAt, chartBarCenter, ChartNode, donutSliceOpacity, DonutChartNode, LegendMarker, LegendNode, cellAlign, DataTableNode, voiceNoteState, voiceNoteDelivery, VOICE_NOTE_DEFAULT_BARS, clampBarCount, VoiceNoteNode, TimelineNode, WheelPickerNode, ColorPickerNode, FilterChipsNode, TILE_PX, MAX_MERCATOR_LAT, DEFAULT_TILE_MAX_ZOOM, CIRCLE_SEGMENTS, METRES_PER_DEG_LAT, MARKER_HIT_RADIUS, SHAPE_HIT_RADIUS, MapNode, CollapsingHeaderNode, UnsupportedOnSurface, CALENDAR_DATE_ONLY_RE, CAL_DEFAULT_MAX_DOTS, CAL_AGENDA_INITIAL_DAYS, CAL_AGENDA_PAGE_DAYS, CAL_DEFAULT_SNAP_MINUTES, CAL_UNASSIGNED_LANE_ID, MonthCalendarNode, TimeGridNode, AgendaNode, ARIA_ROLE, initialFocusScheduled, PRESENTED_SCOPE, focusRoots, A11yHintDescription, WebRenderer;
35336
35359
  var init_renderNode = __esm({
35337
35360
  "../../core/web-renderer/src/renderNode.tsx"() {
35338
35361
  "use strict";
@@ -35877,7 +35900,7 @@ var init_renderNode = __esm({
35877
35900
  e.preventDefault();
35878
35901
  submit();
35879
35902
  };
35880
- const inputBase = { flex: 1, minWidth: 0, minHeight: multilineBox ? 44 : void 0, alignSelf: "stretch", border: "none", outline: "none", background: "transparent", padding: multilineBox ? 0 : "11px 0", margin: 0, width: "100%", boxSizing: "border-box", fontFamily: bodyFont(ctx), fontSize: 15, color: C("textPrimary", "#13171e"), resize: "none" };
35903
+ const inputBase = { flex: 1, minWidth: 0, minHeight: multilineBox ? 44 : void 0, alignSelf: "stretch", border: "none", outline: "none", background: "transparent", padding: multilineBox ? 0 : "11px 0", margin: 0, width: "100%", boxSizing: "border-box", fontFamily: bodyFont(ctx), fontSize: pxToRem(15), color: C("textPrimary", "#13171e"), resize: "none" };
35881
35904
  const accIcon = (name) => /* @__PURE__ */ jsx8("span", { style: { display: "inline-grid", placeItems: "center", width: 18, height: 18, flex: "none" }, children: iconSvg(name, { size: 17, color: muted }) });
35882
35905
  const box = borderless ? { display: "flex", alignItems: "center", gap: 8, width: "100%", boxSizing: "border-box", ...wrap } : { display: "flex", alignItems: "center", gap: 8, width: "100%", background: C("surfacePrimary", "#fff"), border: `1px solid ${errored ? C("danger", "#E62214") : C("border", "#e3e3e3")}`, borderRadius: ctx.radius("md", 8), padding: multilineBox ? "11px 14px" : "0 14px", boxSizing: "border-box", minHeight: multilineBox ? 48 : 44, ...wrap };
35883
35906
  return /* @__PURE__ */ jsxs5("div", { style: { display: "flex", flexDirection: "column", gap: 4, width: "100%" }, children: [
@@ -35892,7 +35915,7 @@ var init_renderNode = __esm({
35892
35915
  }, style: { display: "inline-grid", placeItems: "center", width: 18, height: 18, borderRadius: "50%", background: C("surfaceTertiary", "#e3e6ea"), color: muted, fontSize: 12, flex: "none", cursor: "pointer" }, children: "\xD7" }),
35893
35916
  props.trailingIcon && accIcon(props.trailingIcon)
35894
35917
  ] }),
35895
- revealed ? /* @__PURE__ */ jsx8("span", { id: errorId, role: "alert", style: { fontFamily: bodyFont(ctx), fontSize: 12, color: C("danger", "#E62214"), paddingLeft: 2 }, children: message }) : (props.helperText ?? cfg.helperText) != null ? /* @__PURE__ */ jsx8("span", { style: { fontFamily: bodyFont(ctx), fontSize: 12, color: errored ? C("danger", "#E62214") : muted, paddingLeft: 2 }, children: txt(props.helperText ?? cfg.helperText, ctx) }) : null
35918
+ revealed ? /* @__PURE__ */ jsx8("span", { id: errorId, role: "alert", style: { fontFamily: bodyFont(ctx), fontSize: pxToRem(12), color: C("danger", "#E62214"), paddingLeft: 2 }, children: message }) : (props.helperText ?? cfg.helperText) != null ? /* @__PURE__ */ jsx8("span", { style: { fontFamily: bodyFont(ctx), fontSize: pxToRem(12), color: errored ? C("danger", "#E62214") : muted, paddingLeft: 2 }, children: txt(props.helperText ?? cfg.helperText, ctx) }) : null
35896
35919
  ] });
35897
35920
  };
35898
35921
  MenuNode = withExtras("MenuNode", ({ props, ctx, wrap }) => {
@@ -36005,7 +36028,7 @@ var init_renderNode = __esm({
36005
36028
  setOpen(false);
36006
36029
  ctx.onAction(resolveItemDeep2(it.action, ctx));
36007
36030
  } : void 0,
36008
- style: { display: "flex", alignItems: "center", gap: 10, padding: "9px 10px", borderRadius: 8, cursor: it?.disabled ? "default" : "pointer", opacity: it?.disabled ? 0.4 : 1, color: it?.destructive ? C("danger", "#E62214") : C("textPrimary", "#13171e"), fontFamily: bodyFont(ctx), fontSize: 15 },
36031
+ style: { display: "flex", alignItems: "center", gap: 10, padding: "9px 10px", borderRadius: 8, cursor: it?.disabled ? "default" : "pointer", opacity: it?.disabled ? 0.4 : 1, color: it?.destructive ? C("danger", "#E62214") : C("textPrimary", "#13171e"), fontFamily: bodyFont(ctx), fontSize: pxToRem(15) },
36009
36032
  children: [
36010
36033
  it?.icon && /* @__PURE__ */ jsx8("span", { style: { display: "inline-grid", placeItems: "center", width: 20, height: 20 }, children: iconSvg(it.icon, { size: 18, color: it?.destructive ? C("danger", "#E62214") : C("textSecondary", "#636b78") }) }),
36011
36034
  /* @__PURE__ */ jsx8("span", { children: asText2(it?.label) || "Item" })
@@ -36048,7 +36071,7 @@ var init_renderNode = __esm({
36048
36071
  if (props.visible === false) return null;
36049
36072
  if (isBoundText && !text8) return null;
36050
36073
  const c = (props.severity ?? "error") === "warning" ? C("warning", "#E89F00") : C("danger", "#E62214");
36051
- return /* @__PURE__ */ jsxs5("div", { role: "alert", style: { display: "flex", gap: 6, alignItems: "center", color: c, fontSize: 13, fontFamily: bodyFont(ctx), ...wrap }, children: [
36074
+ return /* @__PURE__ */ jsxs5("div", { role: "alert", style: { display: "flex", gap: 6, alignItems: "center", color: c, fontSize: pxToRem(13), fontFamily: bodyFont(ctx), ...wrap }, children: [
36052
36075
  /* @__PURE__ */ jsx8("span", { "aria-hidden": "true", children: "\u26A0" }),
36053
36076
  text8
36054
36077
  ] });
@@ -36448,15 +36471,15 @@ var init_renderNode = __esm({
36448
36471
  return `${Math.floor(safe / 60)}:${String(Math.floor(safe % 60)).padStart(2, "0")}`;
36449
36472
  };
36450
36473
  const builtInControls = /* @__PURE__ */ jsxs5("div", { "data-media-controls": "builtIn", style: { display: "grid", gridTemplateColumns: "auto auto 1fr auto auto", gap: 10, alignItems: "center", width: "100%", padding: "10px 12px", boxSizing: "border-box", color: foreground, background: "linear-gradient(transparent,rgba(0,0,0,.82))" }, children: [
36451
- items.length > 1 && /* @__PURE__ */ jsx8("button", { "aria-label": "Previous", onClick: () => select(index - 1), style: { color: "inherit", background: "transparent", border: 0, fontSize: 18 }, children: "\u25C0\u25C0" }),
36474
+ items.length > 1 && /* @__PURE__ */ jsx8("button", { "aria-label": "Previous", onClick: () => select(index - 1), style: { color: "inherit", background: "transparent", border: 0, fontSize: pxToRem(18) }, children: "\u25C0\u25C0" }),
36452
36475
  /* @__PURE__ */ jsx8("button", { "aria-label": status === "playing" ? "Pause" : "Play", onClick: () => status === "playing" ? pause() : void play(), style: { width: 38, height: 38, borderRadius: "50%", color: background, background: foreground, border: 0, fontSize: 18 }, children: status === "playing" ? "\u275A\u275A" : "\u25B6" }),
36453
36476
  /* @__PURE__ */ jsxs5("div", { style: { display: "flex", alignItems: "center", gap: 8, minWidth: 0 }, children: [
36454
- /* @__PURE__ */ jsx8("span", { style: { fontSize: 11, whiteSpace: "nowrap" }, children: time(position) }),
36477
+ /* @__PURE__ */ jsx8("span", { style: { fontSize: pxToRem(11), whiteSpace: "nowrap" }, children: time(position) }),
36455
36478
  /* @__PURE__ */ jsx8("input", { "aria-label": "Media position", type: "range", min: 0, max: Math.max(duration2, 1), step: 0.1, value: Math.min(position, Math.max(duration2, 1)), onChange: (event) => seek(Number(event.currentTarget.value)), style: { width: "100%", accentColor: accent } }),
36456
- /* @__PURE__ */ jsx8("span", { style: { fontSize: 11, whiteSpace: "nowrap" }, children: time(duration2) })
36479
+ /* @__PURE__ */ jsx8("span", { style: { fontSize: pxToRem(11), whiteSpace: "nowrap" }, children: time(duration2) })
36457
36480
  ] }),
36458
- items.length > 1 && /* @__PURE__ */ jsx8("button", { "aria-label": "Next", onClick: () => select(index + 1), style: { color: "inherit", background: "transparent", border: 0, fontSize: 18 }, children: "\u25B6\u25B6" }),
36459
- props.fullscreen !== "disabled" && /* @__PURE__ */ jsx8("button", { "aria-label": "Fullscreen", onClick: () => void toggleFullscreen(), style: { color: "inherit", background: "transparent", border: 0, fontSize: 18 }, children: "\u26F6" })
36481
+ items.length > 1 && /* @__PURE__ */ jsx8("button", { "aria-label": "Next", onClick: () => select(index + 1), style: { color: "inherit", background: "transparent", border: 0, fontSize: pxToRem(18) }, children: "\u25B6\u25B6" }),
36482
+ props.fullscreen !== "disabled" && /* @__PURE__ */ jsx8("button", { "aria-label": "Fullscreen", onClick: () => void toggleFullscreen(), style: { color: "inherit", background: "transparent", border: 0, fontSize: pxToRem(18) }, children: "\u26F6" })
36460
36483
  ] });
36461
36484
  const customControls = chrome === "custom" ? slot("controls") : null;
36462
36485
  const showBuiltIn = chrome === "builtIn";
@@ -36515,7 +36538,7 @@ var init_renderNode = __esm({
36515
36538
  slot("audioBackground"),
36516
36539
  isUnsupportedProvider ? /* @__PURE__ */ jsxs5("div", { role: "status", style: { flex: 1, minHeight: 0, display: "grid", placeItems: "center", gap: 8, padding: 24, textAlign: "center", background: "#17191f", color: foreground }, children: [
36517
36540
  /* @__PURE__ */ jsx8("div", { style: { fontWeight: 700 }, children: "Provider playback unavailable" }),
36518
- /* @__PURE__ */ jsxs5("div", { style: { opacity: 0.75, fontSize: 13 }, children: [
36541
+ /* @__PURE__ */ jsxs5("div", { style: { opacity: 0.75, fontSize: pxToRem(13) }, children: [
36519
36542
  "This course uses an unsupported provider adapter: ",
36520
36543
  provider,
36521
36544
  "."
@@ -36653,7 +36676,7 @@ var init_renderNode = __esm({
36653
36676
  const bandColor = typeof props.coverBandColor === "string" && props.coverBandColor.length > 0 ? props.coverBandColor : void 0;
36654
36677
  return /* @__PURE__ */ jsxs5("div", { style: { width: "100%", position: "relative", ...bandColor ? { background: bandColor, borderRadius: ctx.radius("md", 8), overflow: "hidden" } : {}, ...wrap }, children: [
36655
36678
  bandColor ? /* @__PURE__ */ jsx8("div", { "data-testid": "webview-cover-band", style: { height: 8, background: bandColor } }) : null,
36656
- htmlStr ? /* @__PURE__ */ jsx8("iframe", { title: "webview", srcDoc: htmlStr, sandbox: "allow-scripts", style: frameStyle }) : urlFrame ? /* @__PURE__ */ jsx8("iframe", { title: "webview", src: urlFrame.src, sandbox: urlFrame.sandbox, style: frameStyle }) : /* @__PURE__ */ jsx8("div", { style: { ...frameStyle, display: "grid", placeItems: "center", color: "#999", fontFamily: "ui-monospace, monospace", fontSize: 11, border: "1px dashed #ccc" }, children: urlStr ? "WebView (url not allowed)" : "WebView (no url)" })
36679
+ htmlStr ? /* @__PURE__ */ jsx8("iframe", { title: "webview", srcDoc: htmlStr, sandbox: "allow-scripts", style: frameStyle }) : urlFrame ? /* @__PURE__ */ jsx8("iframe", { title: "webview", src: urlFrame.src, sandbox: urlFrame.sandbox, style: frameStyle }) : /* @__PURE__ */ jsx8("div", { style: { ...frameStyle, display: "grid", placeItems: "center", color: "#999", fontFamily: "ui-monospace, monospace", fontSize: pxToRem(11), border: "1px dashed #ccc" }, children: urlStr ? "WebView (url not allowed)" : "WebView (no url)" })
36657
36680
  ] });
36658
36681
  });
36659
36682
  InteractivePicker = withExtras("InteractivePicker", ({ props, ctx, wrap }) => {
@@ -36684,7 +36707,7 @@ var init_renderNode = __esm({
36684
36707
  const staticSel = ctx.empty ? null : selectedId;
36685
36708
  return /* @__PURE__ */ jsx8("div", { style: { display: "flex", background: C("surfaceTertiary", "#eee"), borderRadius: ctx.radius("md", 8), padding: 3, width: "100%", boxSizing: "border-box", ...wrap }, children: opts.map((o, i) => {
36686
36709
  const on3 = o.id === staticSel;
36687
- return /* @__PURE__ */ jsx8("span", { style: { flex: 1, textAlign: "center", padding: "8px 4px", borderRadius: ctx.radius("sm", 6), fontFamily: bodyFont(ctx), fontWeight: 600, fontSize: 14, background: on3 ? C("surfacePrimary", "#fff") : "transparent", color: on3 ? C("textPrimary", "#111") : C("textSecondary", "#777"), boxShadow: on3 ? "0 1px 3px rgba(0,0,0,.12)" : "none" }, children: asText2(o.label ?? o.title ?? o.id) }, o.id ?? i);
36710
+ return /* @__PURE__ */ jsx8("span", { style: { flex: 1, textAlign: "center", padding: "8px 4px", borderRadius: ctx.radius("sm", 6), fontFamily: bodyFont(ctx), fontWeight: 600, fontSize: pxToRem(14), background: on3 ? C("surfacePrimary", "#fff") : "transparent", color: on3 ? C("textPrimary", "#111") : C("textSecondary", "#777"), boxShadow: on3 ? "0 1px 3px rgba(0,0,0,.12)" : "none" }, children: asText2(o.label ?? o.title ?? o.id) }, o.id ?? i);
36688
36711
  }) });
36689
36712
  }
36690
36713
  const emit = (id) => {
@@ -36699,7 +36722,7 @@ var init_renderNode = __esm({
36699
36722
  value: sel,
36700
36723
  onChange: (e) => emit(e.currentTarget.value),
36701
36724
  "aria-label": String(placeholderText || "Select"),
36702
- style: { width: "100%", background: C("surfacePrimary", "#fff"), border: `1px solid ${C("border", "#e3e3e3")}`, borderRadius: ctx.radius("md", 8), padding: "11px 14px", boxSizing: "border-box", fontFamily: bodyFont(ctx), fontSize: 15, color: C("textPrimary", "#111"), ...wrap },
36725
+ style: { width: "100%", background: C("surfacePrimary", "#fff"), border: `1px solid ${C("border", "#e3e3e3")}`, borderRadius: ctx.radius("md", 8), padding: "11px 14px", boxSizing: "border-box", fontFamily: bodyFont(ctx), fontSize: pxToRem(15), color: C("textPrimary", "#111"), ...wrap },
36703
36726
  children: [
36704
36727
  props.placeholder && /* @__PURE__ */ jsx8("option", { value: "", disabled: true, children: placeholderText }),
36705
36728
  opts.map((o, i) => /* @__PURE__ */ jsx8("option", { value: o.id, children: asText2(o.label ?? o.title ?? o.id) }, o.id ?? i))
@@ -36751,9 +36774,9 @@ var init_renderNode = __esm({
36751
36774
  const d = new Date(props.valueUnix * 1e3);
36752
36775
  label2 = timeMode ? d.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" }) : d.toLocaleDateString(void 0, { year: "numeric", month: "short", day: "numeric" });
36753
36776
  }
36754
- return /* @__PURE__ */ jsxs5("div", { style: { display: "flex", alignItems: "center", justifyContent: "space-between", width: "100%", background: C("surfacePrimary", "#fff"), border: `1px solid ${C("border", "#e3e3e3")}`, borderRadius: ctx.radius("md", 8), padding: "12px 14px", boxSizing: "border-box", fontFamily: bodyFont(ctx), fontSize: 15, color: C("textPrimary", "#111"), ...wrap }, children: [
36777
+ return /* @__PURE__ */ jsxs5("div", { style: { display: "flex", alignItems: "center", justifyContent: "space-between", width: "100%", background: C("surfacePrimary", "#fff"), border: `1px solid ${C("border", "#e3e3e3")}`, borderRadius: ctx.radius("md", 8), padding: "12px 14px", boxSizing: "border-box", fontFamily: bodyFont(ctx), fontSize: pxToRem(15), color: C("textPrimary", "#111"), ...wrap }, children: [
36755
36778
  /* @__PURE__ */ jsx8("span", { children: label2 }),
36756
- /* @__PURE__ */ jsx8("span", { style: { fontSize: 18 }, children: "\u{1F4C5}" })
36779
+ /* @__PURE__ */ jsx8("span", { style: { fontSize: pxToRem(18) }, children: "\u{1F4C5}" })
36757
36780
  ] });
36758
36781
  }
36759
36782
  const onChange = props.onChange;
@@ -36781,7 +36804,7 @@ var init_renderNode = __esm({
36781
36804
  value: val,
36782
36805
  onChange: (e) => emit(e.currentTarget.value),
36783
36806
  "aria-label": timeMode ? "Select time" : "Select date",
36784
- style: { width: "100%", boxSizing: "border-box", background: C("surfacePrimary", "#fff"), border: `1px solid ${C("border", "#e3e3e3")}`, borderRadius: ctx.radius("md", 8), padding: "12px 14px", fontFamily: bodyFont(ctx), fontSize: 15, color: C("textPrimary", "#111"), ...wrap }
36807
+ style: { width: "100%", boxSizing: "border-box", background: C("surfacePrimary", "#fff"), border: `1px solid ${C("border", "#e3e3e3")}`, borderRadius: ctx.radius("md", 8), padding: "12px 14px", fontFamily: bodyFont(ctx), fontSize: pxToRem(15), color: C("textPrimary", "#111"), ...wrap }
36785
36808
  }
36786
36809
  );
36787
36810
  });
@@ -36793,7 +36816,7 @@ var init_renderNode = __esm({
36793
36816
  /* @__PURE__ */ jsx8("circle", { cx: "11", cy: "11", r: "7" }),
36794
36817
  /* @__PURE__ */ jsx8("path", { d: "m21 21-4.3-4.3" })
36795
36818
  ] });
36796
- const box = { display: "flex", alignItems: "center", gap: 8, width: "100%", boxSizing: "border-box", background: C("surfaceTertiary", "#eee"), borderRadius: ctx.radius("md", 10), padding: "0 14px", minHeight: 44, color: muted, fontFamily: bodyFont(ctx), fontSize: 15, ...wrap };
36819
+ const box = { display: "flex", alignItems: "center", gap: 8, width: "100%", boxSizing: "border-box", background: C("surfaceTertiary", "#eee"), borderRadius: ctx.radius("md", 10), padding: "0 14px", minHeight: 44, color: muted, fontFamily: bodyFont(ctx), fontSize: pxToRem(15), ...wrap };
36797
36820
  if (!ctx.onAction) {
36798
36821
  return /* @__PURE__ */ jsxs5("div", { style: box, children: [
36799
36822
  icon,
@@ -36836,7 +36859,7 @@ var init_renderNode = __esm({
36836
36859
  },
36837
36860
  placeholder: String(placeholderText || "Search\u2026"),
36838
36861
  "aria-label": String(placeholderText || "Search"),
36839
- style: { flex: 1, minWidth: 0, alignSelf: "stretch", border: "none", outline: "none", background: "transparent", padding: "11px 0", margin: 0, width: "100%", boxSizing: "border-box", fontFamily: bodyFont(ctx), fontSize: 15, color: C("textPrimary", "#13171e") }
36862
+ style: { flex: 1, minWidth: 0, alignSelf: "stretch", border: "none", outline: "none", background: "transparent", padding: "11px 0", margin: 0, width: "100%", boxSizing: "border-box", fontFamily: bodyFont(ctx), fontSize: pxToRem(15), color: C("textPrimary", "#13171e") }
36840
36863
  }
36841
36864
  ),
36842
36865
  local && /* @__PURE__ */ jsx8("span", { onClick: () => onInput(""), style: { display: "inline-grid", placeItems: "center", width: 18, height: 18, borderRadius: "50%", background: C("surfaceTertiary", "#e3e6ea"), color: muted, fontSize: 12, flex: "none", cursor: "pointer" }, children: "\xD7" })
@@ -36913,7 +36936,7 @@ var init_renderNode = __esm({
36913
36936
  background: C("surfacePrimary", "#fff"),
36914
36937
  display: "grid",
36915
36938
  placeItems: "center",
36916
- fontSize: 18,
36939
+ fontSize: pxToRem(18),
36917
36940
  color: accentTextColor(ctx),
36918
36941
  // #3275 — a glyph on a neutral key
36919
36942
  border: `1px solid ${C("border", "#e3e3e3")}`,
@@ -36931,20 +36954,20 @@ var init_renderNode = __esm({
36931
36954
  if (ctx.empty) {
36932
36955
  return /* @__PURE__ */ jsxs5("div", { ...root, style: box, children: [
36933
36956
  /* @__PURE__ */ jsx8("span", { style: btn("min"), children: "\u2212" }),
36934
- /* @__PURE__ */ jsx8("b", { ...valueA11y, style: { fontSize: 16, minWidth: 24, textAlign: "center", color: C("textPrimary", "#111") }, children: "\u2014" }),
36957
+ /* @__PURE__ */ jsx8("b", { ...valueA11y, style: { fontSize: pxToRem(16), minWidth: 24, textAlign: "center", color: C("textPrimary", "#111") }, children: "\u2014" }),
36935
36958
  /* @__PURE__ */ jsx8("span", { style: btn("max"), children: "+" })
36936
36959
  ] });
36937
36960
  }
36938
36961
  if (!ctx.onAction) {
36939
36962
  return /* @__PURE__ */ jsxs5("div", { ...root, style: box, children: [
36940
36963
  /* @__PURE__ */ jsx8("span", { style: btn("min"), children: "\u2212" }),
36941
- /* @__PURE__ */ jsx8("b", { ...valueA11y, "aria-valuenow": value, "aria-readonly": "true", style: { fontSize: 16, minWidth: 24, textAlign: "center", color: C("textPrimary", "#111") }, children: value }),
36964
+ /* @__PURE__ */ jsx8("b", { ...valueA11y, "aria-valuenow": value, "aria-readonly": "true", style: { fontSize: pxToRem(16), minWidth: 24, textAlign: "center", color: C("textPrimary", "#111") }, children: value }),
36942
36965
  /* @__PURE__ */ jsx8("span", { style: btn("max"), children: "+" })
36943
36966
  ] });
36944
36967
  }
36945
36968
  return /* @__PURE__ */ jsxs5("div", { ...root, style: box, children: [
36946
36969
  /* @__PURE__ */ jsx8("button", { type: "button", tabIndex: -1, "aria-label": "Decrease", disabled: disabled("min"), onClick: () => press(-step), style: { ...btn("min"), font: "inherit" }, children: "\u2212" }),
36947
- /* @__PURE__ */ jsx8("b", { ...valueA11y, "aria-valuenow": value, tabIndex: 0, onKeyDown: onValueKeyDown, style: { fontSize: 16, minWidth: 24, textAlign: "center", color: C("textPrimary", "#111"), fontVariantNumeric: "tabular-nums" }, children: value }),
36970
+ /* @__PURE__ */ jsx8("b", { ...valueA11y, "aria-valuenow": value, tabIndex: 0, onKeyDown: onValueKeyDown, style: { fontSize: pxToRem(16), minWidth: 24, textAlign: "center", color: C("textPrimary", "#111"), fontVariantNumeric: "tabular-nums" }, children: value }),
36948
36971
  /* @__PURE__ */ jsx8("button", { type: "button", tabIndex: -1, "aria-label": "Increase", disabled: disabled("max"), onClick: () => press(step), style: { ...btn("max"), font: "inherit" }, children: "+" }),
36949
36972
  /* @__PURE__ */ jsx8("span", { "aria-live": "polite", style: { position: "absolute", width: 1, height: 1, padding: 0, margin: -1, overflow: "hidden", clip: "rect(0, 0, 0, 0)", whiteSpace: "nowrap", border: 0 }, children: pressed.text + (pressed.count % 2 ? "\xA0" : "") })
36950
36973
  ] });
@@ -37148,7 +37171,7 @@ var init_renderNode = __esm({
37148
37171
  const side2 = typeof w === "number" ? w : 40;
37149
37172
  return /* @__PURE__ */ jsx8("div", { style: { width: side2, height: side2, borderRadius: "50%", background: ph ?? C("surfaceTertiary", "#e6e6e6"), display: "grid", placeItems: "center", flex: "none", ...wrap }, children: iconSvg(props.icon, { size: Math.max(14, Math.round(side2 * 0.5)), color: accentTextColor(ctx) }) });
37150
37173
  }
37151
- return /* @__PURE__ */ jsx8("div", { style: { width: w, height: boxHeight, aspectRatio: ar, borderRadius: r, background: ph ?? (hasSource ? `linear-gradient(135deg, ${C("surfaceTertiary", "#e6e6e6")}, ${C("surfaceSecondary", "#f2f2f2")})` : "transparent"), color: C("textSecondary", "#999"), display: "flex", alignItems: "center", justifyContent: "center", fontFamily: "ui-monospace, monospace", fontSize: 11, flex: "none", ...wrap }, children: banner || !hasSource ? "" : "\u2022" });
37174
+ return /* @__PURE__ */ jsx8("div", { style: { width: w, height: boxHeight, aspectRatio: ar, borderRadius: r, background: ph ?? (hasSource ? `linear-gradient(135deg, ${C("surfaceTertiary", "#e6e6e6")}, ${C("surfaceSecondary", "#f2f2f2")})` : "transparent"), color: C("textSecondary", "#999"), display: "flex", alignItems: "center", justifyContent: "center", fontFamily: "ui-monospace, monospace", fontSize: pxToRem(11), flex: "none", ...wrap }, children: banner || !hasSource ? "" : "\u2022" });
37152
37175
  });
37153
37176
  ANIMATION_LEAF = { "aria-hidden": "true", [INFERRED_DECORATIVE]: true, [SELF_RENDERED_LEAF]: true, [ROLE_WHEN_NAMED]: "img" };
37154
37177
  LottieNode = withExtras("LottieNode", ({ props, ctx, wrap }) => {
@@ -37343,6 +37366,7 @@ var init_renderNode = __esm({
37343
37366
  };
37344
37367
  return /* @__PURE__ */ jsx8("div", { ...a11y, style: { width: "100%", height: 6, borderRadius: 999, background: C(boundTokenName(props.trackColorPath, props.trackColor, ctx) ?? "surfaceTertiary", "#eee"), overflow: "hidden", ...wrap }, children: /* @__PURE__ */ jsx8("div", { style: { width: `${Math.round((p ?? 0.4) * 100)}%`, height: "100%", borderRadius: 999, background: C(boundTokenName(props.tintPath, props.tint, ctx) ?? "accentPrimary", "#116DFF"), opacity: p == null ? 0.45 : 1, ...animatedFill ? { transition: ctx.motionTransition(ctx.kit?.motion) } : {} } }) });
37345
37368
  });
37369
+ ACTIVITY_DEFAULT_NAME = "Loading";
37346
37370
  ActivityIndicatorNode = withExtras("ActivityIndicatorNode", ({ props, ctx, wrap }) => {
37347
37371
  const C = ctx.color;
37348
37372
  const size = props.size ?? 24;
@@ -37357,10 +37381,10 @@ var init_renderNode = __esm({
37357
37381
  const pct = Math.max(0, Math.min(1, aiNum));
37358
37382
  const ringMask = `radial-gradient(farthest-side, transparent calc(100% - ${thick}px), #000 calc(100% - ${thick}px))`;
37359
37383
  const a11y = { "aria-valuemin": 0, "aria-valuemax": 100, "aria-valuenow": Math.round(pct * 100) };
37360
- return /* @__PURE__ */ jsx8("div", { role: "progressbar", ...a11y, style: { width: size, height: size, borderRadius: "50%", flex: "none", background: `conic-gradient(${tint} ${pct * 360}deg, ${track} 0deg)`, WebkitMask: ringMask, mask: ringMask, ...wrap } });
37384
+ return /* @__PURE__ */ jsx8("div", { role: "progressbar", "aria-label": ACTIVITY_DEFAULT_NAME, ...a11y, style: { width: size, height: size, borderRadius: "50%", flex: "none", background: `conic-gradient(${tint} ${pct * 360}deg, ${track} 0deg)`, WebkitMask: ringMask, mask: ringMask, ...wrap } });
37361
37385
  }
37362
37386
  ensureSpinKeyframes();
37363
- return /* @__PURE__ */ jsx8("div", { role: "progressbar", style: { width: size, height: size, borderRadius: "50%", border: `${thick}px solid ${track}`, borderTopColor: tint, boxSizing: "border-box", flex: "none", animation: ctx.empty ? void 0 : "himalaya-spin 0.8s linear infinite", ...wrap } });
37387
+ return /* @__PURE__ */ jsx8("div", { role: "status", "aria-busy": "true", "aria-label": ACTIVITY_DEFAULT_NAME, style: { width: size, height: size, borderRadius: "50%", border: `${thick}px solid ${track}`, borderTopColor: tint, boxSizing: "border-box", flex: "none", animation: ctx.empty ? void 0 : "himalaya-spin 0.8s linear infinite", ...wrap } });
37364
37388
  });
37365
37389
  NATIVELY_TABBABLE = 'a[href], area[href], button, input:not([type="hidden"]), select, textarea, iframe, object, embed, audio[controls], video[controls], summary, [contenteditable]:not([contenteditable="false"]), [tabindex]';
37366
37390
  BottomSheetNode = withExtras("BottomSheetNode", ({ props, ctx, wrap }) => {
@@ -37444,11 +37468,11 @@ var init_renderNode = __esm({
37444
37468
  const raw = props.valuesPath != null ? bound : props.values;
37445
37469
  const values = Array.isArray(raw) ? raw : [];
37446
37470
  return /* @__PURE__ */ jsxs5("div", { style: { display: "flex", flexWrap: "wrap", alignItems: "center", gap: 6, width: "100%", minHeight: 44, padding: "8px 10px", boxSizing: "border-box", background: C("surfacePrimary", "#fff"), border: `1px solid ${C("border", "#e3e3e3")}`, borderRadius: ctx.radius("md", 8), opacity: props.disabled ? 0.5 : 1, ...wrap }, children: [
37447
- values.map((v, i) => /* @__PURE__ */ jsxs5("span", { style: { display: "inline-flex", alignItems: "center", gap: 5, padding: "4px 9px", borderRadius: 999, fontFamily: bodyFont(ctx), fontSize: 13, background: C("surfaceTertiary", "#eef0f3"), color: C("textPrimary", "#13171e") }, children: [
37471
+ values.map((v, i) => /* @__PURE__ */ jsxs5("span", { style: { display: "inline-flex", alignItems: "center", gap: 5, padding: "4px 9px", borderRadius: 999, fontFamily: bodyFont(ctx), fontSize: pxToRem(13), background: C("surfaceTertiary", "#eef0f3"), color: C("textPrimary", "#13171e") }, children: [
37448
37472
  asText2(v),
37449
- /* @__PURE__ */ jsx8("span", { onClick: ctx.onAction && props.onRemove ? () => ctx.onAction(resolveItemDeep2(props.onRemove, ctx)) : void 0, style: { opacity: 0.6, cursor: "pointer", fontSize: 13 }, children: "\xD7" })
37473
+ /* @__PURE__ */ jsx8("span", { onClick: ctx.onAction && props.onRemove ? () => ctx.onAction(resolveItemDeep2(props.onRemove, ctx)) : void 0, style: { opacity: 0.6, cursor: "pointer", fontSize: pxToRem(13) }, children: "\xD7" })
37450
37474
  ] }, i)),
37451
- /* @__PURE__ */ jsx8("span", { style: { fontFamily: bodyFont(ctx), fontSize: 14, color: C("textSecondary", "#888") }, children: values.length ? "" : placeholderText || "Add\u2026" })
37475
+ /* @__PURE__ */ jsx8("span", { style: { fontFamily: bodyFont(ctx), fontSize: pxToRem(14), color: C("textSecondary", "#888") }, children: values.length ? "" : placeholderText || "Add\u2026" })
37452
37476
  ] });
37453
37477
  });
37454
37478
  ChipNode = withExtras("ChipNode", ({ props, ctx, wrap }) => {
@@ -37459,7 +37483,7 @@ var init_renderNode = __esm({
37459
37483
  const accent = C(boundTokenName(props.tokenPath, props.token, ctx) ?? "accentPrimary", "#116DFF");
37460
37484
  const onClick = ctx.onAction && props.onTap && !props.disabled ? () => ctx.onAction(resolveItemDeep2(props.onTap, ctx)) : void 0;
37461
37485
  const fg = selected ? C("textOnAccent", "#fff") : C("textPrimary", "#13171e");
37462
- return /* @__PURE__ */ jsxs5("span", { onClick, style: { display: "inline-flex", alignItems: "center", gap: 6, padding: "6px 12px", borderRadius: 999, fontFamily: bodyFont(ctx), fontSize: 14, cursor: onClick ? "pointer" : "default", opacity: props.disabled ? 0.5 : 1, color: fg, background: selected ? accent : C("surfaceSecondary", "#f2f3f5"), border: `1px solid ${selected ? accent : C("border", "#d8dce2")}`, boxShadow: props.elevated ? "0 1px 4px rgba(0,0,0,.14)" : "none", ...wrap }, children: [
37486
+ return /* @__PURE__ */ jsxs5("span", { onClick, style: { display: "inline-flex", alignItems: "center", gap: 6, padding: "6px 12px", borderRadius: 999, fontFamily: bodyFont(ctx), fontSize: pxToRem(14), cursor: onClick ? "pointer" : "default", opacity: props.disabled ? 0.5 : 1, color: fg, background: selected ? accent : C("surfaceSecondary", "#f2f3f5"), border: `1px solid ${selected ? accent : C("border", "#d8dce2")}`, boxShadow: props.elevated ? "0 1px 4px rgba(0,0,0,.14)" : "none", ...wrap }, children: [
37463
37487
  props.leadingAvatarUrl && !isBinding(props.leadingAvatarUrl) && /* @__PURE__ */ jsx8("img", { src: String(props.leadingAvatarUrl), alt: "", style: { width: 20, height: 20, borderRadius: "50%", objectFit: "cover", margin: "-2px 0 -2px -4px" } }),
37464
37488
  props.leadingIcon && /* @__PURE__ */ jsx8("span", { style: { display: "inline-grid", placeItems: "center", width: 16, height: 16 }, children: iconSvg(props.leadingIcon, { size: 15, color: fg }) }),
37465
37489
  /* @__PURE__ */ jsx8("span", { children: txt(props.label, ctx) }),
@@ -37475,7 +37499,7 @@ var init_renderNode = __esm({
37475
37499
  const cols = Array.isArray(props.columns) ? props.columns : [];
37476
37500
  const rawRows = props.rowsPath != null ? bound : props.rows;
37477
37501
  const rows = Array.isArray(rawRows) ? rawRows : [];
37478
- const cellStyle = (head) => ({ padding: "8px 12px", fontFamily: bodyFont(ctx), fontSize: 14, textAlign: "left", borderBottom: `1px solid ${C("border", "#eceef1")}`, color: head ? C("textSecondary", "#636b78") : C("textPrimary", "#13171e"), fontWeight: head ? 600 : 400, whiteSpace: "nowrap" });
37502
+ const cellStyle = (head) => ({ padding: "8px 12px", fontFamily: bodyFont(ctx), fontSize: pxToRem(14), textAlign: "left", borderBottom: `1px solid ${C("border", "#eceef1")}`, color: head ? C("textSecondary", "#636b78") : C("textPrimary", "#13171e"), fontWeight: head ? 600 : 400, whiteSpace: "nowrap" });
37479
37503
  return /* @__PURE__ */ jsx8("div", { style: { width: "100%", boxSizing: "border-box", overflowX: "auto", border: `1px solid ${C("border", "#e8eaed")}`, borderRadius: 10, ...wrap }, children: /* @__PURE__ */ jsxs5("table", { style: { width: "100%", borderCollapse: "collapse" }, children: [
37480
37504
  cols.length > 0 && /* @__PURE__ */ jsx8("thead", { children: /* @__PURE__ */ jsx8("tr", { children: cols.map((c, i) => /* @__PURE__ */ jsx8("th", { style: cellStyle(true), children: asText2(c) }, i)) }) }),
37481
37505
  /* @__PURE__ */ jsx8("tbody", { children: rows.map((r, ri) => {
@@ -37515,7 +37539,7 @@ var init_renderNode = __esm({
37515
37539
  }
37516
37540
  if (props.kind === "linear") {
37517
37541
  return /* @__PURE__ */ jsxs5("div", { ...a11y, style: { width: "100%", ...wrap }, children: [
37518
- props.label != null && /* @__PURE__ */ jsx8("div", { style: { fontFamily: bodyFont(ctx), fontSize: 13, color: C("textSecondary", "#636b78"), marginBottom: 4 }, children: txt(props.label, ctx) }),
37542
+ props.label != null && /* @__PURE__ */ jsx8("div", { style: { fontFamily: bodyFont(ctx), fontSize: pxToRem(13), color: C("textSecondary", "#636b78"), marginBottom: 4 }, children: txt(props.label, ctx) }),
37519
37543
  /* @__PURE__ */ jsx8("div", { style: { width: "100%", height: 8, borderRadius: 999, background: track, overflow: "hidden" }, children: /* @__PURE__ */ jsx8("div", { style: { width: `${pct * 100}%`, height: "100%", background: tint, ...gaugeAnim } }) })
37520
37544
  ] });
37521
37545
  }
@@ -37587,7 +37611,7 @@ var init_renderNode = __esm({
37587
37611
  overflow
37588
37612
  ] }) })
37589
37613
  ] }),
37590
- props.caption && /* @__PURE__ */ jsx8("div", { ...{ [A11Y_PART]: "derived-name" }, style: { fontSize: 13, color: C("textSecondary", "#888"), marginTop: 8 }, children: txt(props.caption, ctx) })
37614
+ props.caption && /* @__PURE__ */ jsx8("div", { ...{ [A11Y_PART]: "derived-name" }, style: { fontSize: pxToRem(13), color: C("textSecondary", "#888"), marginTop: 8 }, children: txt(props.caption, ctx) })
37591
37615
  ] });
37592
37616
  });
37593
37617
  CHART_STROKE_CYCLE = ["solid", "dashed", "dotted"];
@@ -37739,8 +37763,8 @@ var init_renderNode = __esm({
37739
37763
  gap: 2,
37740
37764
  pointerEvents: "none"
37741
37765
  }, children: [
37742
- props.centerTitle && /* @__PURE__ */ jsx8("div", { style: { fontSize: 20, fontWeight: 600, color: C("textPrimary", "#111") }, children: txt(props.centerTitle, ctx) }),
37743
- props.centerSubtitle && /* @__PURE__ */ jsx8("div", { style: { fontSize: 12, color: C("textSecondary", "#888") }, children: txt(props.centerSubtitle, ctx) })
37766
+ props.centerTitle && /* @__PURE__ */ jsx8("div", { style: { fontSize: pxToRem(20), fontWeight: 600, color: C("textPrimary", "#111") }, children: txt(props.centerTitle, ctx) }),
37767
+ props.centerSubtitle && /* @__PURE__ */ jsx8("div", { style: { fontSize: pxToRem(12), color: C("textSecondary", "#888") }, children: txt(props.centerSubtitle, ctx) })
37744
37768
  ] })
37745
37769
  ] }) });
37746
37770
  });
@@ -37780,8 +37804,8 @@ var init_renderNode = __esm({
37780
37804
  ...wrap
37781
37805
  }, children: items.map((it, i) => /* @__PURE__ */ jsxs5("li", { style: { display: "flex", alignItems: "center", gap: 6, minWidth: 0 }, children: [
37782
37806
  /* @__PURE__ */ jsx8(LegendMarker, { marker: it.marker, color: it.color ? C(it.color, "#116DFF") : C("accentPrimary", "#116DFF") }),
37783
- /* @__PURE__ */ jsx8("span", { style: { fontSize: 13, color: C("textSecondary", "#888"), minWidth: 0, overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: txt(it.label, ctx) }),
37784
- it.value && /* @__PURE__ */ jsx8("span", { style: { fontSize: 13, fontWeight: 600, color: C("textPrimary", "#111") }, children: txt(it.value, ctx) })
37807
+ /* @__PURE__ */ jsx8("span", { style: { fontSize: pxToRem(13), color: C("textSecondary", "#888"), minWidth: 0, overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: txt(it.label, ctx) }),
37808
+ it.value && /* @__PURE__ */ jsx8("span", { style: { fontSize: pxToRem(13), fontWeight: 600, color: C("textPrimary", "#111") }, children: txt(it.value, ctx) })
37785
37809
  ] }, i)) });
37786
37810
  });
37787
37811
  cellAlign = (align) => align === "center" ? "center" : align === "trailing" ? "right" : "left";
@@ -37796,8 +37820,8 @@ var init_renderNode = __esm({
37796
37820
  const totalsRow = props.totalsPath != null ? boundTotals : props.totals;
37797
37821
  if (columns.length === 0) return /* @__PURE__ */ jsx8("div", { style: { ...wrap } });
37798
37822
  const totalWeight = columns.reduce((a, c) => a + c.weight, 0) || 1;
37799
- const th = { fontSize: 12, fontWeight: 600, color: C("textSecondary", "#888"), padding: "8px 10px", borderBottom: `1px solid ${C("border", "#e5e5e5")}` };
37800
- const td = { fontSize: 14, color: C("textPrimary", "#111"), padding: "8px 10px" };
37823
+ const th = { fontSize: pxToRem(12), fontWeight: 600, color: C("textSecondary", "#888"), padding: "8px 10px", borderBottom: `1px solid ${C("border", "#e5e5e5")}` };
37824
+ const td = { fontSize: pxToRem(14), color: C("textPrimary", "#111"), padding: "8px 10px" };
37801
37825
  return (
37802
37826
  // Tables are the one shape allowed to exceed the content width, in their own
37803
37827
  // scroller — the page body must not scroll horizontally because of one.
@@ -38009,9 +38033,9 @@ var init_renderNode = __esm({
38009
38033
  }
38010
38034
  ),
38011
38035
  /* @__PURE__ */ jsxs5("div", { style: { display: "flex", alignItems: "center", gap: 8, fontFamily: bodyFont(ctx) }, children: [
38012
- /* @__PURE__ */ jsx8("span", { style: { fontSize: 12, fontWeight: 500, fontVariantNumeric: "tabular-nums", color: isFailed ? danger : secondary }, children: voiceNoteClock(clockMs) }),
38013
- isUploading && /* @__PURE__ */ jsx8("span", { style: { fontSize: 12, color: secondary }, children: "Sending\u2026" }),
38014
- isFailed && /* @__PURE__ */ jsx8("span", { style: { fontSize: 12, color: danger }, children: "Not sent" }),
38036
+ /* @__PURE__ */ jsx8("span", { style: { fontSize: pxToRem(12), fontWeight: 500, fontVariantNumeric: "tabular-nums", color: isFailed ? danger : secondary }, children: voiceNoteClock(clockMs) }),
38037
+ isUploading && /* @__PURE__ */ jsx8("span", { style: { fontSize: pxToRem(12), color: secondary }, children: "Sending\u2026" }),
38038
+ isFailed && /* @__PURE__ */ jsx8("span", { style: { fontSize: pxToRem(12), color: danger }, children: "Not sent" }),
38015
38039
  /* @__PURE__ */ jsx8("span", { style: { flex: 1 } }),
38016
38040
  rates.length > 0 && isPlayable && /* @__PURE__ */ jsx8(
38017
38041
  "button",
@@ -38027,7 +38051,7 @@ var init_renderNode = __esm({
38027
38051
  style: {
38028
38052
  border: "none",
38029
38053
  cursor: "pointer",
38030
- fontSize: 11,
38054
+ fontSize: pxToRem(11),
38031
38055
  fontWeight: 600,
38032
38056
  fontFamily: "inherit",
38033
38057
  color: accentLabel,
@@ -38058,10 +38082,10 @@ var init_renderNode = __esm({
38058
38082
  ] }),
38059
38083
  /* @__PURE__ */ jsxs5("div", { style: { paddingBottom: last ? 0 : 14, minWidth: 0 }, children: [
38060
38084
  /* @__PURE__ */ jsxs5("div", { style: { display: "flex", gap: 8, alignItems: "baseline" }, children: [
38061
- /* @__PURE__ */ jsx8("span", { style: { fontFamily: bodyFont(ctx), fontSize: 15, fontWeight: 600, color: C("textPrimary", "#13171e") }, children: asText2(e?.title) }),
38062
- e?.time && /* @__PURE__ */ jsx8("span", { style: { fontFamily: bodyFont(ctx), fontSize: 12, color: C("textSecondary", "#888") }, children: asText2(e.time) })
38085
+ /* @__PURE__ */ jsx8("span", { style: { fontFamily: bodyFont(ctx), fontSize: pxToRem(15), fontWeight: 600, color: C("textPrimary", "#13171e") }, children: asText2(e?.title) }),
38086
+ e?.time && /* @__PURE__ */ jsx8("span", { style: { fontFamily: bodyFont(ctx), fontSize: pxToRem(12), color: C("textSecondary", "#888") }, children: asText2(e.time) })
38063
38087
  ] }),
38064
- e?.subtitle && /* @__PURE__ */ jsx8("div", { style: { fontFamily: bodyFont(ctx), fontSize: 13, color: C("textSecondary", "#636b78") }, children: asText2(e.subtitle) })
38088
+ e?.subtitle && /* @__PURE__ */ jsx8("div", { style: { fontFamily: bodyFont(ctx), fontSize: pxToRem(13), color: C("textSecondary", "#636b78") }, children: asText2(e.subtitle) })
38065
38089
  ] })
38066
38090
  ] }, i);
38067
38091
  }) });
@@ -38074,7 +38098,7 @@ var init_renderNode = __esm({
38074
38098
  const opts = Array.isArray(rawOpts) ? rawOpts : [];
38075
38099
  const selectedId = isBinding(props.selectedId) ? boundSel : props.selectedId;
38076
38100
  const selIdx = Math.max(0, opts.findIndex((o) => o?.id === selectedId));
38077
- const row = (o, dist) => /* @__PURE__ */ jsx8("div", { style: { height: 32, display: "flex", alignItems: "center", justifyContent: "center", fontFamily: bodyFont(ctx), fontSize: 16, fontWeight: dist === 0 ? 700 : 400, color: dist === 0 ? C("textPrimary", "#13171e") : C("textSecondary", "#9aa3ad"), opacity: 1 - Math.min(0.7, Math.abs(dist) * 0.35) }, children: asText2(o?.label) ?? asText2(o?.id) }, o?.id);
38101
+ const row = (o, dist) => /* @__PURE__ */ jsx8("div", { style: { height: 32, display: "flex", alignItems: "center", justifyContent: "center", fontFamily: bodyFont(ctx), fontSize: pxToRem(16), fontWeight: dist === 0 ? 700 : 400, color: dist === 0 ? C("textPrimary", "#13171e") : C("textSecondary", "#9aa3ad"), opacity: 1 - Math.min(0.7, Math.abs(dist) * 0.35) }, children: asText2(o?.label) ?? asText2(o?.id) }, o?.id);
38078
38102
  const window_ = [-2, -1, 0, 1, 2].map((d) => ({ o: opts[selIdx + d], d })).filter((x) => x.o);
38079
38103
  return /* @__PURE__ */ jsxs5("div", { style: { position: "relative", width: "100%", maxWidth: 220, height: 160, overflow: "hidden", background: C("surfaceSecondary", "#f5f7fa"), borderRadius: 12, ...wrap }, children: [
38080
38104
  /* @__PURE__ */ jsx8("div", { style: { position: "absolute", top: "50%", left: 8, right: 8, transform: "translateY(-50%)", height: 32, background: C("surfacePrimary", "#fff"), borderRadius: 8, boxShadow: "inset 0 0 0 1px rgba(0,0,0,.06)" } }),
@@ -38091,8 +38115,8 @@ var init_renderNode = __esm({
38091
38115
  return /* @__PURE__ */ jsxs5("div", { style: { display: "flex", flexDirection: "column", gap: 8, ...wrap }, children: [
38092
38116
  /* @__PURE__ */ jsxs5("div", { style: { display: "flex", alignItems: "center", gap: 10 }, children: [
38093
38117
  /* @__PURE__ */ jsx8("span", { style: { width: 28, height: 28, borderRadius: 8, background: C(cur, cur), border: `1px solid ${C("border", "#e3e3e3")}`, flex: "none" } }),
38094
- props.label != null && /* @__PURE__ */ jsx8("span", { style: { fontFamily: bodyFont(ctx), fontSize: 15, color: C("textPrimary", "#13171e") }, children: txt(props.label, ctx) }),
38095
- /* @__PURE__ */ jsx8("span", { style: { marginLeft: "auto", fontFamily: "ui-monospace, monospace", fontSize: 13, color: C("textSecondary", "#636b78") }, children: asText2(cur) })
38118
+ props.label != null && /* @__PURE__ */ jsx8("span", { style: { fontFamily: bodyFont(ctx), fontSize: pxToRem(15), color: C("textPrimary", "#13171e") }, children: txt(props.label, ctx) }),
38119
+ /* @__PURE__ */ jsx8("span", { style: { marginLeft: "auto", fontFamily: "ui-monospace, monospace", fontSize: pxToRem(13), color: C("textSecondary", "#636b78") }, children: asText2(cur) })
38096
38120
  ] }),
38097
38121
  /* @__PURE__ */ jsx8("div", { style: { display: "flex", flexWrap: "wrap", gap: 8 }, children: swatches.map((s, i) => /* @__PURE__ */ jsx8("span", { onClick: onPick(s), style: { width: 26, height: 26, borderRadius: "50%", background: C(s, s), cursor: onPick(s) ? "pointer" : "default", boxShadow: s === cur ? `0 0 0 2px ${C("surfacePrimary", "#fff")}, 0 0 0 4px ${C(s, s)}` : "inset 0 0 0 1px rgba(0,0,0,.08)" } }, i)) })
38098
38122
  ] });
@@ -38123,12 +38147,12 @@ var init_renderNode = __esm({
38123
38147
  // pushed a sibling count onto two lines (#3080, #3004).
38124
38148
  /* @__PURE__ */ jsx8("div", { role: "group", style: { display: "flex", gap: 8, flexWrap: "nowrap", overflowX: "auto", scrollbarWidth: "none", width: "100%", minWidth: 0, ...wrap }, children: chips.map((c, i) => {
38125
38149
  const on3 = selected.includes(c.id);
38126
- const chipStyle = { display: "flex", flex: "none", whiteSpace: "nowrap", gap: 6, alignItems: "center", fontFamily: bodyFont(ctx), fontWeight: 500, fontSize: 13, border: `1px solid ${on3 ? "transparent" : C("border", "#ddd")}`, background: on3 ? C("accentPrimary", "#116DFF") : "transparent", color: on3 ? C("textOnAccent", "#fff") : C("textSecondary", "#666"), padding: "6px 12px", borderRadius: 999 };
38150
+ const chipStyle = { display: "flex", flex: "none", whiteSpace: "nowrap", gap: 6, alignItems: "center", fontFamily: bodyFont(ctx), fontWeight: 500, fontSize: pxToRem(13), border: `1px solid ${on3 ? "transparent" : C("border", "#ddd")}`, background: on3 ? C("accentPrimary", "#116DFF") : "transparent", color: on3 ? C("textOnAccent", "#fff") : C("textSecondary", "#666"), padding: "6px 12px", borderRadius: 999 };
38127
38151
  const inner = /* @__PURE__ */ jsxs5(Fragment4, { children: [
38128
38152
  asText2(c.label),
38129
38153
  c.count != null && /* @__PURE__ */ jsxs5(Fragment4, { children: [
38130
38154
  " ",
38131
- /* @__PURE__ */ jsx8("span", { style: { ...on3 ? {} : { opacity: 0.7 }, fontSize: 11 }, children: c.count })
38155
+ /* @__PURE__ */ jsx8("span", { style: { ...on3 ? {} : { opacity: 0.7 }, fontSize: pxToRem(11) }, children: c.count })
38132
38156
  ] })
38133
38157
  ] });
38134
38158
  return interactive ? /* @__PURE__ */ jsx8("button", { type: "button", "aria-pressed": on3, onClick: () => toggle(c.id), style: { all: "unset", cursor: "pointer", boxSizing: "border-box", ...chipStyle }, children: inner }, c.id ?? i) : /* @__PURE__ */ jsx8("span", { style: chipStyle, children: inner }, c.id ?? i);
@@ -38415,8 +38439,8 @@ var init_renderNode = __esm({
38415
38439
  /* @__PURE__ */ jsxs5("div", { style: { position: "relative", height: Math.min(props.expandedHeight ?? 120, 160), borderRadius: ctx.radius("md", 10), overflow: "hidden", background: imageUrl ? void 0 : `linear-gradient(135deg, ${C("accentPrimary", "#116DFF")}, ${C("accentSecondary", "#0E5FE3")})` }, children: [
38416
38440
  imageUrl && /* @__PURE__ */ jsx8("img", { src: imageUrl, alt: "", style: { width: "100%", height: "100%", objectFit: "cover" } }),
38417
38441
  /* @__PURE__ */ jsxs5("div", { style: { position: "absolute", left: 14, bottom: 12, color: "#fff", textShadow: "0 1px 4px rgba(0,0,0,.5)" }, children: [
38418
- /* @__PURE__ */ jsx8("div", { ...{ [A11Y_PART]: "node" }, role: "heading", "aria-level": 2, style: { fontFamily: ctx.font("title1").family || ctx.idiom && ctx.idiom !== "base" ? fontStack(ctx.font("title1").family, ctx.idiom) : '"Wix Madefor Display", system-ui', fontWeight: 700, fontSize: 20 }, children: txt(props.title, ctx) }),
38419
- props.subtitle && /* @__PURE__ */ jsx8("div", { style: { fontSize: 13, opacity: 0.9 }, children: txt(props.subtitle, ctx) })
38442
+ /* @__PURE__ */ jsx8("div", { ...{ [A11Y_PART]: "node" }, role: "heading", "aria-level": 2, style: { fontFamily: ctx.font("title1").family || ctx.idiom && ctx.idiom !== "base" ? fontStack(ctx.font("title1").family, ctx.idiom) : '"Wix Madefor Display", system-ui', fontWeight: 700, fontSize: pxToRem(20) }, children: txt(props.title, ctx) }),
38443
+ props.subtitle && /* @__PURE__ */ jsx8("div", { style: { fontSize: pxToRem(13), opacity: 0.9 }, children: txt(props.subtitle, ctx) })
38420
38444
  ] })
38421
38445
  ] }),
38422
38446
  items.length > 0 && /* @__PURE__ */ jsx8("div", { style: { paddingTop: 12 }, children: kids2(items, ctx) })
@@ -38550,11 +38574,11 @@ var init_renderNode = __esm({
38550
38574
  "aria-label": "Previous month",
38551
38575
  onClick: () => changeMonth(-1),
38552
38576
  disabled: !canPage,
38553
- style: { border: "none", background: "none", cursor: canPage ? "pointer" : "default", color: C("textSecondary", "#636b78"), fontSize: 18, padding: 6, opacity: canPage ? 1 : 0.4 },
38577
+ style: { border: "none", background: "none", cursor: canPage ? "pointer" : "default", color: C("textSecondary", "#636b78"), fontSize: pxToRem(18), padding: 6, opacity: canPage ? 1 : 0.4 },
38554
38578
  children: "\u2039"
38555
38579
  }
38556
38580
  ),
38557
- /* @__PURE__ */ jsx8("span", { style: { fontFamily: bodyFont(ctx), fontWeight: 700, fontSize: 15, color: C("textPrimary", "#13171e") }, children: monthLabel }),
38581
+ /* @__PURE__ */ jsx8("span", { style: { fontFamily: bodyFont(ctx), fontWeight: 700, fontSize: pxToRem(15), color: C("textPrimary", "#13171e") }, children: monthLabel }),
38558
38582
  /* @__PURE__ */ jsx8(
38559
38583
  "button",
38560
38584
  {
@@ -38562,12 +38586,12 @@ var init_renderNode = __esm({
38562
38586
  "aria-label": "Next month",
38563
38587
  onClick: () => changeMonth(1),
38564
38588
  disabled: !canPage,
38565
- style: { border: "none", background: "none", cursor: canPage ? "pointer" : "default", color: C("textSecondary", "#636b78"), fontSize: 18, padding: 6, opacity: canPage ? 1 : 0.4 },
38589
+ style: { border: "none", background: "none", cursor: canPage ? "pointer" : "default", color: C("textSecondary", "#636b78"), fontSize: pxToRem(18), padding: 6, opacity: canPage ? 1 : 0.4 },
38566
38590
  children: "\u203A"
38567
38591
  }
38568
38592
  )
38569
38593
  ] }),
38570
- /* @__PURE__ */ jsx8("div", { style: { display: "grid", gridTemplateColumns: "repeat(7, minmax(0, 1fr))", gap: 2, marginBottom: 4 }, children: heads.map((h, i) => /* @__PURE__ */ jsx8("div", { style: { textAlign: "center", fontFamily: bodyFont(ctx), fontSize: 11, fontWeight: 600, color: C("textSecondary", "#888"), textTransform: "uppercase" }, children: h }, i)) }),
38594
+ /* @__PURE__ */ jsx8("div", { style: { display: "grid", gridTemplateColumns: "repeat(7, minmax(0, 1fr))", gap: 2, marginBottom: 4 }, children: heads.map((h, i) => /* @__PURE__ */ jsx8("div", { style: { textAlign: "center", fontFamily: bodyFont(ctx), fontSize: pxToRem(11), fontWeight: 600, color: C("textSecondary", "#888"), textTransform: "uppercase" }, children: h }, i)) }),
38571
38595
  /* @__PURE__ */ jsx8("div", { ref: gridRef, role: "grid", "aria-label": monthLabel, style: { display: "grid", gridTemplateColumns: "repeat(7, minmax(0, 1fr))", gap: 2, width: "100%" }, children: rows.flatMap(
38572
38596
  (row, ri) => row.map((cell, ci) => {
38573
38597
  if (!cell.inMonth && !showAdjacent) return /* @__PURE__ */ jsx8("div", { "aria-hidden": "true" }, `${ri}-${ci}`);
@@ -38608,14 +38632,14 @@ var init_renderNode = __esm({
38608
38632
  opacity: disabled ? 0.4 : 1,
38609
38633
  cursor: disabled ? "default" : "pointer",
38610
38634
  fontFamily: bodyFont(ctx),
38611
- fontSize: 14,
38635
+ fontSize: pxToRem(14),
38612
38636
  fontWeight: cell.isToday ? 700 : 400,
38613
38637
  boxShadow: cell.isToday && !selected ? `inset 0 0 0 1.5px ${C("accentPrimary", "#116DFF")}` : "none"
38614
38638
  },
38615
38639
  children: [
38616
38640
  /* @__PURE__ */ jsx8("span", { children: cell.day }),
38617
38641
  dotCount > 0 && /* @__PURE__ */ jsx8("span", { style: { display: "flex", gap: 2 }, children: Array.from({ length: dotCount }).map((_, i) => /* @__PURE__ */ jsx8("span", { style: { width: 4, height: 4, borderRadius: "50%", background: selected ? C("textOnAccent", "#fff") : dotColor } }, i)) }),
38618
- dec?.badge != null && /* @__PURE__ */ jsx8("span", { style: { fontSize: 9, lineHeight: 1, maxWidth: "100%", overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap", color: selected ? C("textOnAccent", "#fff") : C("textSecondary", "#888") }, children: asText2(dec.badge) })
38642
+ dec?.badge != null && /* @__PURE__ */ jsx8("span", { style: { fontSize: pxToRem(9), lineHeight: 1, maxWidth: "100%", overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap", color: selected ? C("textOnAccent", "#fff") : C("textSecondary", "#888") }, children: asText2(dec.badge) })
38619
38643
  ]
38620
38644
  },
38621
38645
  cell.date
@@ -38687,11 +38711,11 @@ var init_renderNode = __esm({
38687
38711
  "aria-label": "Previous",
38688
38712
  onClick: () => shiftRange(-rangeStep),
38689
38713
  disabled: !canPage,
38690
- style: { border: "none", background: "none", cursor: canPage ? "pointer" : "default", color: C("textSecondary", "#636b78"), fontSize: 18, opacity: canPage ? 1 : 0.4 },
38714
+ style: { border: "none", background: "none", cursor: canPage ? "pointer" : "default", color: C("textSecondary", "#636b78"), fontSize: pxToRem(18), opacity: canPage ? 1 : 0.4 },
38691
38715
  children: "\u2039"
38692
38716
  }
38693
38717
  ),
38694
- /* @__PURE__ */ jsx8("span", { style: { fontFamily: bodyFont(ctx), fontWeight: 700, fontSize: 14, color: C("textPrimary", "#13171e") }, children: rangeLabel }),
38718
+ /* @__PURE__ */ jsx8("span", { style: { fontFamily: bodyFont(ctx), fontWeight: 700, fontSize: pxToRem(14), color: C("textPrimary", "#13171e") }, children: rangeLabel }),
38695
38719
  /* @__PURE__ */ jsx8(
38696
38720
  "button",
38697
38721
  {
@@ -38699,12 +38723,12 @@ var init_renderNode = __esm({
38699
38723
  "aria-label": "Next",
38700
38724
  onClick: () => shiftRange(rangeStep),
38701
38725
  disabled: !canPage,
38702
- style: { border: "none", background: "none", cursor: canPage ? "pointer" : "default", color: C("textSecondary", "#636b78"), fontSize: 18, opacity: canPage ? 1 : 0.4 },
38726
+ style: { border: "none", background: "none", cursor: canPage ? "pointer" : "default", color: C("textSecondary", "#636b78"), fontSize: pxToRem(18), opacity: canPage ? 1 : 0.4 },
38703
38727
  children: "\u203A"
38704
38728
  }
38705
38729
  )
38706
38730
  ] }),
38707
- /* @__PURE__ */ jsx8("div", { style: { display: "flex", marginLeft: 44, minWidth: days.length * 90 }, children: laneMode ? laneCols.map((lane) => /* @__PURE__ */ jsx8("div", { "data-lane": lane.id, style: { flex: "1 1 0", minWidth: 0, textAlign: "center", fontFamily: bodyFont(ctx), fontSize: 12, fontWeight: 600, color: C("textSecondary", "#888"), padding: "4px 2px", overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: laneTitle(lane.id) }, lane.id)) : days.map((d, i) => /* @__PURE__ */ jsx8("div", { style: { flex: "1 1 0", minWidth: 0, textAlign: "center", fontFamily: bodyFont(ctx), fontSize: 11, fontWeight: 600, color: dayKeys[i] === nowKey ? accentTextColor(ctx) : C("textSecondary", "#888") }, children: d.toLocaleDateString(void 0, { weekday: "short", day: "numeric" }) }, i)) }),
38731
+ /* @__PURE__ */ jsx8("div", { style: { display: "flex", marginLeft: 44, minWidth: days.length * 90 }, children: laneMode ? laneCols.map((lane) => /* @__PURE__ */ jsx8("div", { "data-lane": lane.id, style: { flex: "1 1 0", minWidth: 0, textAlign: "center", fontFamily: bodyFont(ctx), fontSize: pxToRem(12), fontWeight: 600, color: C("textSecondary", "#888"), padding: "4px 2px", overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: laneTitle(lane.id) }, lane.id)) : days.map((d, i) => /* @__PURE__ */ jsx8("div", { style: { flex: "1 1 0", minWidth: 0, textAlign: "center", fontFamily: bodyFont(ctx), fontSize: pxToRem(11), fontWeight: 600, color: dayKeys[i] === nowKey ? accentTextColor(ctx) : C("textSecondary", "#888") }, children: d.toLocaleDateString(void 0, { weekday: "short", day: "numeric" }) }, i)) }),
38708
38732
  days.some((_, i) => (byDay.get(dayKeys[i])?.allDay.length ?? 0) > 0) && /* @__PURE__ */ jsx8("div", { style: { display: "flex", marginLeft: 44, gap: 2, marginBottom: 4, minWidth: days.length * 90 }, children: days.map((d, i) => /* @__PURE__ */ jsx8("div", { style: { flex: "1 1 0", minWidth: 0, display: "flex", flexDirection: "column", gap: 2, padding: "0 1px" }, children: (byDay.get(dayKeys[i])?.allDay ?? []).map((ev, j) => {
38709
38733
  const tappable = !!(ev?.onTap || props.onSelectEvent);
38710
38734
  return /* @__PURE__ */ jsx8(
@@ -38714,14 +38738,14 @@ var init_renderNode = __esm({
38714
38738
  onKeyDown: calKeyActivate(!!ctx.onAction && tappable, () => onSelect(ev)),
38715
38739
  role: tappable ? "button" : void 0,
38716
38740
  tabIndex: ctx.onAction && tappable ? 0 : void 0,
38717
- style: { fontFamily: bodyFont(ctx), fontSize: 11, fontWeight: 600, padding: "2px 6px", borderRadius: 4, background: C(ev?.colorToken ?? "accentPrimary", "#116DFF"), color: C("textOnAccent", "#fff"), whiteSpace: "nowrap", overflow: "hidden", textOverflow: "ellipsis", cursor: ctx.onAction && tappable ? "pointer" : "default" },
38741
+ style: { fontFamily: bodyFont(ctx), fontSize: pxToRem(11), fontWeight: 600, padding: "2px 6px", borderRadius: 4, background: C(ev?.colorToken ?? "accentPrimary", "#116DFF"), color: C("textOnAccent", "#fff"), whiteSpace: "nowrap", overflow: "hidden", textOverflow: "ellipsis", cursor: ctx.onAction && tappable ? "pointer" : "default" },
38718
38742
  children: asText2(ev?.title)
38719
38743
  },
38720
38744
  j
38721
38745
  );
38722
38746
  }) }, i)) }),
38723
38747
  /* @__PURE__ */ jsxs5("div", { style: { display: "flex", position: "relative", minWidth: 44 + days.length * 90 }, children: [
38724
- /* @__PURE__ */ jsx8("div", { style: { width: 44, flex: "none" }, children: Array.from({ length: Math.max(0, endHour - startHour) }).map((_, i) => /* @__PURE__ */ jsxs5("div", { style: { height: HOUR_PX, boxSizing: "border-box", fontFamily: bodyFont(ctx), fontSize: 10, color: C("textTertiary", "#aab2bd"), textAlign: "right", paddingRight: 6 }, children: [
38748
+ /* @__PURE__ */ jsx8("div", { style: { width: 44, flex: "none" }, children: Array.from({ length: Math.max(0, endHour - startHour) }).map((_, i) => /* @__PURE__ */ jsxs5("div", { style: { height: HOUR_PX, boxSizing: "border-box", fontFamily: bodyFont(ctx), fontSize: pxToRem(10), color: C("textTertiary", "#aab2bd"), textAlign: "right", paddingRight: 6 }, children: [
38725
38749
  String(startHour + i).padStart(2, "0"),
38726
38750
  ":00"
38727
38751
  ] }, i)) }),
@@ -38800,7 +38824,7 @@ var init_renderNode = __esm({
38800
38824
  borderRadius: 6,
38801
38825
  padding: "2px 5px",
38802
38826
  fontFamily: bodyFont(ctx),
38803
- fontSize: 11,
38827
+ fontSize: pxToRem(11),
38804
38828
  overflow: "hidden",
38805
38829
  cursor: ctx.onAction && tappable ? "pointer" : "default",
38806
38830
  boxSizing: "border-box"
@@ -38909,7 +38933,7 @@ var init_renderNode = __esm({
38909
38933
  return () => io.disconnect();
38910
38934
  }, [hasMore, windowEnd]);
38911
38935
  if (groups.length === 0) {
38912
- return /* @__PURE__ */ jsx8("div", { style: { width: "100%", padding: "28px 16px", boxSizing: "border-box", textAlign: "center", fontFamily: bodyFont(ctx), fontSize: 14, color: C("textSecondary", "#888"), ...wrap }, children: emptyLabel || "No events" });
38936
+ return /* @__PURE__ */ jsx8("div", { style: { width: "100%", padding: "28px 16px", boxSizing: "border-box", textAlign: "center", fontFamily: bodyFont(ctx), fontSize: pxToRem(14), color: C("textSecondary", "#888"), ...wrap }, children: emptyLabel || "No events" });
38913
38937
  }
38914
38938
  const sticky = props.stickyHeaders === true;
38915
38939
  const todayKey = localDayKey(/* @__PURE__ */ new Date());
@@ -38922,7 +38946,7 @@ var init_renderNode = __esm({
38922
38946
  };
38923
38947
  return /* @__PURE__ */ jsxs5("div", { ref: containerRef, "data-agenda-days": shown2.length, style: { width: "100%", boxSizing: "border-box", ...wrap }, children: [
38924
38948
  shown2.map((g) => /* @__PURE__ */ jsxs5("div", { "data-daygroup": g.key, children: [
38925
- /* @__PURE__ */ jsx8("div", { style: { position: sticky ? "sticky" : "static", top: 0, zIndex: 1, background: C("surfacePrimary", "#fff"), fontFamily: bodyFont(ctx), fontSize: 12, fontWeight: 700, textTransform: "uppercase", letterSpacing: 0.4, color: C("textSecondary", "#888"), padding: "8px 4px" }, children: dayHeaderLabel(g.key) }),
38949
+ /* @__PURE__ */ jsx8("div", { style: { position: sticky ? "sticky" : "static", top: 0, zIndex: 1, background: C("surfacePrimary", "#fff"), fontFamily: bodyFont(ctx), fontSize: pxToRem(12), fontWeight: 700, textTransform: "uppercase", letterSpacing: 0.4, color: C("textSecondary", "#888"), padding: "8px 4px" }, children: dayHeaderLabel(g.key) }),
38926
38950
  g.items.map((ev, i) => {
38927
38951
  const start = parseLocalDate(ev.start);
38928
38952
  const timeStr = ev.allDay === true ? "All day" : start ? localTimeLabel(start) : "";
@@ -38953,10 +38977,10 @@ var init_renderNode = __esm({
38953
38977
  style: { display: "flex", alignItems: "center", gap: 10, padding: "10px 4px", cursor: ctx.onAction && tappable ? "pointer" : "default" },
38954
38978
  children: [
38955
38979
  /* @__PURE__ */ jsx8("div", { style: { width: 6, height: 6, borderRadius: "50%", background: C(ev?.colorToken ?? "accentPrimary", "#116DFF"), flex: "none" } }),
38956
- /* @__PURE__ */ jsx8("div", { style: { width: 52, flex: "none", fontFamily: bodyFont(ctx), fontSize: 12, color: C("textSecondary", "#888") }, children: timeStr }),
38980
+ /* @__PURE__ */ jsx8("div", { style: { width: 52, flex: "none", fontFamily: bodyFont(ctx), fontSize: pxToRem(12), color: C("textSecondary", "#888") }, children: timeStr }),
38957
38981
  /* @__PURE__ */ jsxs5("div", { style: { flex: 1, minWidth: 0 }, children: [
38958
- /* @__PURE__ */ jsx8("div", { style: { fontFamily: bodyFont(ctx), fontSize: 15, fontWeight: 600, color: C("textPrimary", "#13171e"), whiteSpace: "nowrap", overflow: "hidden", textOverflow: "ellipsis" }, children: asText2(ev?.title) }),
38959
- ev?.subtitle != null && /* @__PURE__ */ jsx8("div", { style: { fontFamily: bodyFont(ctx), fontSize: 13, color: C("textSecondary", "#636b78") }, children: asText2(ev.subtitle) })
38982
+ /* @__PURE__ */ jsx8("div", { style: { fontFamily: bodyFont(ctx), fontSize: pxToRem(15), fontWeight: 600, color: C("textPrimary", "#13171e"), whiteSpace: "nowrap", overflow: "hidden", textOverflow: "ellipsis" }, children: asText2(ev?.title) }),
38983
+ ev?.subtitle != null && /* @__PURE__ */ jsx8("div", { style: { fontFamily: bodyFont(ctx), fontSize: pxToRem(13), color: C("textSecondary", "#636b78") }, children: asText2(ev.subtitle) })
38960
38984
  ] })
38961
38985
  ]
38962
38986
  },
@@ -38973,7 +38997,7 @@ var init_renderNode = __esm({
38973
38997
  ref: sentinelRef,
38974
38998
  "data-agenda-more": groups.length - shown2.length,
38975
38999
  onClick: () => setVisibleDays((n) => n + CAL_AGENDA_PAGE_DAYS),
38976
- style: { padding: "12px 4px", textAlign: "center", fontFamily: bodyFont(ctx), fontSize: 13, color: C("textSecondary", "#888"), cursor: "pointer" },
39000
+ style: { padding: "12px 4px", textAlign: "center", fontFamily: bodyFont(ctx), fontSize: pxToRem(13), color: C("textSecondary", "#888"), cursor: "pointer" },
38977
39001
  children: `${groups.length - shown2.length} more ${groups.length - shown2.length === 1 ? "day" : "days"}`
38978
39002
  }
38979
39003
  )
@@ -60218,21 +60242,21 @@ var init_preview_assets_generated = __esm({
60218
60242
  "../../packages/serve/src/preview-assets.generated.ts"() {
60219
60243
  init_preview_assets_format();
60220
60244
  PREVIEW_ASSET_MANIFEST = [
60221
- { key: "assets/index-CgEMkQNe.js", contentType: "application/javascript; charset=utf-8", offset: 8, length: 1131220, sha256: "d0b5be86126447265c936cd40214f202c42599ced51615dc63f3fd997168c11f" },
60222
- { key: "fonts/Roboto-LICENSE.txt", contentType: "application/octet-stream", offset: 1131228, length: 4610, sha256: "994062dd7af4186a739de55dd9e151c63b6301f8e2cbafc608d35c2e87da0cd2" },
60223
- { key: "fonts/Roboto-Variable.ttf", contentType: "font/ttf", offset: 1135838, length: 488584, sha256: "d7598e12c5dbef095ff8272cfc55da0250bd07fbdecbac8a530b9b277872a134" },
60224
- { key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset: 1624422, length: 90924, sha256: "ec4c7d63772d980d6e147b2df6215fd2737e4b04cebe0cf7e11dc695fb63cdcf" },
60225
- { key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset: 1715346, length: 90984, sha256: "bf4c16a2774edd38a921edf3099469866cd74c094fd596f3fa4e81f54a04dfaa" },
60226
- { key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset: 1806330, length: 90980, sha256: "368faca44fb9f7207e4af784e94750b1ee59c1098b8689e0f4a918926f244fb5" },
60227
- { key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset: 1897310, length: 90872, sha256: "97ed8f1a6772abe26e3d8af5cecfc4b02faa94497d585b0398b5053b739a70c1" },
60228
- { key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset: 1988182, length: 90980, sha256: "642feab8a48ddf6c7a89d7c2a7c0edfa0e6e773f671287e460e222703563191e" },
60229
- { key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset: 2079162, length: 108636, sha256: "37c179b4fefb63ea9637322b84583a2df53aa226c150294eea1675c14b1b8e29" },
60230
- { key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset: 2187798, length: 109084, sha256: "62e2fe4718129f36ecdb0ae4de385bd6b81ecc876146447167c6c140fad699a9" },
60231
- { key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset: 2296882, length: 109048, sha256: "4ecf270136af928612c76fe4ebade91d8156975e5ea4c0cf9225501dd1788e02" },
60232
- { key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset: 2405930, length: 107700, sha256: "dee56f09fd3efc127c1ea95557edc74110c1460a46287da36e0af25efd341ef5" },
60233
- { key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset: 2513630, length: 88108, sha256: "dced97a77624bc5f8b1ae65850360908297f4588e09feb6f22792d29dc7e765b" },
60234
- { key: "index.html", contentType: "text/html; charset=utf-8", offset: 2601738, length: 4947, sha256: "bbb6379db6e3a9fee982a074008d4a860210436259db9f6f4d441d842fc7f74f" },
60235
- { key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset: 2606685, length: 17344, sha256: "d057298d75e7373e5e2c4d11b7d1bcbea88e03af555ba63d97641c78509c58e4" }
60245
+ { key: "assets/index-B1fE1B9T.js", contentType: "application/javascript; charset=utf-8", offset: 8, length: 1131811, sha256: "ead747f6e5d3d289965dc0d3486f678d999616cec487643300b3103983bc9462" },
60246
+ { key: "fonts/Roboto-LICENSE.txt", contentType: "application/octet-stream", offset: 1131819, length: 4610, sha256: "994062dd7af4186a739de55dd9e151c63b6301f8e2cbafc608d35c2e87da0cd2" },
60247
+ { key: "fonts/Roboto-Variable.ttf", contentType: "font/ttf", offset: 1136429, length: 488584, sha256: "d7598e12c5dbef095ff8272cfc55da0250bd07fbdecbac8a530b9b277872a134" },
60248
+ { key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset: 1625013, length: 90924, sha256: "ec4c7d63772d980d6e147b2df6215fd2737e4b04cebe0cf7e11dc695fb63cdcf" },
60249
+ { key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset: 1715937, length: 90984, sha256: "bf4c16a2774edd38a921edf3099469866cd74c094fd596f3fa4e81f54a04dfaa" },
60250
+ { key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset: 1806921, length: 90980, sha256: "368faca44fb9f7207e4af784e94750b1ee59c1098b8689e0f4a918926f244fb5" },
60251
+ { key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset: 1897901, length: 90872, sha256: "97ed8f1a6772abe26e3d8af5cecfc4b02faa94497d585b0398b5053b739a70c1" },
60252
+ { key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset: 1988773, length: 90980, sha256: "642feab8a48ddf6c7a89d7c2a7c0edfa0e6e773f671287e460e222703563191e" },
60253
+ { key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset: 2079753, length: 108636, sha256: "37c179b4fefb63ea9637322b84583a2df53aa226c150294eea1675c14b1b8e29" },
60254
+ { key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset: 2188389, length: 109084, sha256: "62e2fe4718129f36ecdb0ae4de385bd6b81ecc876146447167c6c140fad699a9" },
60255
+ { key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset: 2297473, length: 109048, sha256: "4ecf270136af928612c76fe4ebade91d8156975e5ea4c0cf9225501dd1788e02" },
60256
+ { key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset: 2406521, length: 107700, sha256: "dee56f09fd3efc127c1ea95557edc74110c1460a46287da36e0af25efd341ef5" },
60257
+ { key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset: 2514221, length: 88108, sha256: "dced97a77624bc5f8b1ae65850360908297f4588e09feb6f22792d29dc7e765b" },
60258
+ { key: "index.html", contentType: "text/html; charset=utf-8", offset: 2602329, length: 4947, sha256: "4c3de9771721e41385e297f5e97c0ecd9a76e557a3584d3e6e7820e4bc615c96" },
60259
+ { key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset: 2607276, length: 17344, sha256: "d057298d75e7373e5e2c4d11b7d1bcbea88e03af555ba63d97641c78509c58e4" }
60236
60260
  ];
60237
60261
  }
60238
60262
  });
@@ -68130,9 +68154,143 @@ function parsePublishedHtml2(html, base) {
68130
68154
  }
68131
68155
  return out2;
68132
68156
  }
68157
+ function codeMask(js) {
68158
+ const code = new Uint8Array(js.length);
68159
+ const templates = [];
68160
+ let i = 0;
68161
+ const inHole = () => templates.length > 0 && templates[templates.length - 1] >= 0;
68162
+ let prev = "";
68163
+ let word = "";
68164
+ const regexMayStart = () => prev === "" || "(,=:[!&|?{};+-*%<>~^".includes(prev) || /^(?:return|typeof|case|do|else|in|of|new|delete|void|throw|instanceof|yield|await)$/.test(word);
68165
+ while (i < js.length) {
68166
+ const c = js[i];
68167
+ if (templates.length > 0 && !inHole()) {
68168
+ if (c === "\\") {
68169
+ i += 2;
68170
+ continue;
68171
+ }
68172
+ if (c === "`") {
68173
+ templates.pop();
68174
+ i++;
68175
+ continue;
68176
+ }
68177
+ if (c === "$" && js[i + 1] === "{") {
68178
+ templates[templates.length - 1] = 0;
68179
+ i += 2;
68180
+ continue;
68181
+ }
68182
+ i++;
68183
+ continue;
68184
+ }
68185
+ if (c === '"' || c === "'") {
68186
+ let j = i + 1;
68187
+ while (j < js.length && js[j] !== c && js[j] !== "\n") j += js[j] === "\\" ? 2 : 1;
68188
+ i = j + 1;
68189
+ prev = c;
68190
+ word = "";
68191
+ continue;
68192
+ }
68193
+ if (c === "`") {
68194
+ templates.push(-1);
68195
+ i++;
68196
+ prev = c;
68197
+ word = "";
68198
+ continue;
68199
+ }
68200
+ if (c === "/" && js[i + 1] === "*") {
68201
+ const e = js.indexOf("*/", i + 2);
68202
+ i = e < 0 ? js.length : e + 2;
68203
+ continue;
68204
+ }
68205
+ if (c === "/" && js[i + 1] === "/") {
68206
+ const e = js.indexOf("\n", i + 2);
68207
+ i = e < 0 ? js.length : e;
68208
+ continue;
68209
+ }
68210
+ if (c === "/" && regexMayStart()) {
68211
+ let j = i + 1, cls = false;
68212
+ for (; j < js.length && js[j] !== "\n"; j++) {
68213
+ const r = js[j];
68214
+ if (r === "\\") {
68215
+ j++;
68216
+ continue;
68217
+ }
68218
+ if (r === "[") cls = true;
68219
+ else if (r === "]") cls = false;
68220
+ else if (r === "/" && !cls) break;
68221
+ }
68222
+ i = j + 1;
68223
+ prev = "/";
68224
+ word = "";
68225
+ continue;
68226
+ }
68227
+ if (inHole()) {
68228
+ const t = templates.length - 1;
68229
+ if (c === "{") templates[t]++;
68230
+ else if (c === "}") {
68231
+ if (templates[t] === 0) {
68232
+ templates[t] = -1;
68233
+ i++;
68234
+ continue;
68235
+ }
68236
+ templates[t]--;
68237
+ }
68238
+ }
68239
+ code[i] = 1;
68240
+ if (!/\s/.test(c)) {
68241
+ word = /[A-Za-z0-9_$]/.test(c) ? /[A-Za-z0-9_$]/.test(prev) ? word + c : c : "";
68242
+ prev = c;
68243
+ }
68244
+ i++;
68245
+ }
68246
+ return code;
68247
+ }
68248
+ function enclosingObject(js, at2, code) {
68249
+ let depth = 0;
68250
+ let start = -1;
68251
+ for (let i = at2; i >= Math.max(0, at2 - OBJECT_SCAN); i--) {
68252
+ if (!code[i]) continue;
68253
+ const c = js[i];
68254
+ if (c === "}") depth++;
68255
+ else if (c === "{") {
68256
+ if (depth === 0) {
68257
+ start = i;
68258
+ break;
68259
+ }
68260
+ depth--;
68261
+ }
68262
+ }
68263
+ if (start < 0) return void 0;
68264
+ let out2 = "";
68265
+ depth = 0;
68266
+ for (let i = start; i < Math.min(js.length, start + 2 * OBJECT_SCAN); i++) {
68267
+ const c = js[i];
68268
+ if (code[i] && c === "{") {
68269
+ depth++;
68270
+ if (depth === 1) out2 += c;
68271
+ else if (depth === 2) out2 += "{}";
68272
+ continue;
68273
+ }
68274
+ if (code[i] && c === "}") {
68275
+ depth--;
68276
+ if (depth === 0) return out2 + c;
68277
+ continue;
68278
+ }
68279
+ if (depth === 1) {
68280
+ if (code[i]) out2 += c;
68281
+ else if (code[i - 1]) out2 += '""';
68282
+ }
68283
+ }
68284
+ return void 0;
68285
+ }
68133
68286
  function routesFromBundle(js) {
68134
68287
  const out2 = /* @__PURE__ */ new Set();
68288
+ const code = codeMask(js);
68135
68289
  for (const m of js.matchAll(/\bpath\s*:\s*["'`](\/[A-Za-z0-9_\-/:.*]*|\*)["'`]/g)) {
68290
+ if (!code[m.index]) continue;
68291
+ const own3 = enclosingObject(js, m.index, code);
68292
+ const before = js.slice(Math.max(0, m.index - 80), m.index);
68293
+ if (!(own3 && ROUTE_KEY.test(own3)) && !NAV_LABEL_BEFORE.test(before)) continue;
68136
68294
  out2.add(m[1]);
68137
68295
  if (out2.size >= MAX_ROUTES) break;
68138
68296
  }
@@ -68209,7 +68367,7 @@ async function visitorPass(url, siteFetch) {
68209
68367
  }
68210
68368
  return { identity, routes: routes.slice(0, MAX_ROUTES), gaps };
68211
68369
  }
68212
- var MAX_HTML_BYTES, MAX_BUNDLE_BYTES, MAX_BUNDLES, MAX_ROUTES, APP_ID2, attr2, decodeEntities;
68370
+ var MAX_HTML_BYTES, MAX_BUNDLE_BYTES, MAX_BUNDLES, MAX_ROUTES, APP_ID2, attr2, decodeEntities, ROUTE_KEY, OBJECT_SCAN, NAV_LABEL_BEFORE;
68213
68371
  var init_visitor = __esm({
68214
68372
  "src/base44-analyze/visitor.ts"() {
68215
68373
  init_write_artifacts();
@@ -68223,6 +68381,9 @@ var init_visitor = __esm({
68223
68381
  return m ? m[2] ?? m[3] : void 0;
68224
68382
  };
68225
68383
  decodeEntities = (s) => s.replace(/&amp;/g, "&").replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&quot;/g, '"').replace(/&#39;/g, "'").trim();
68384
+ ROUTE_KEY = /[{,]\s*(?:element|Component|lazy|loader|children|errorElement|ErrorBoundary|index|action|handle)\s*:/;
68385
+ OBJECT_SCAN = 1200;
68386
+ NAV_LABEL_BEFORE = /\blabel\s*:\s*["'`][^"'`]*["'`]\s*,\s*$/;
68226
68387
  }
68227
68388
  });
68228
68389
 
@@ -73299,6 +73460,12 @@ function assertNotCommitted(path2, forbidden) {
73299
73460
  );
73300
73461
  }
73301
73462
  }
73463
+ function keepSiteLayout(prev, next) {
73464
+ if (!next || typeof next !== "object" || Array.isArray(next)) return next;
73465
+ const layout = prev && typeof prev === "object" ? prev.layout : void 0;
73466
+ if (layout === void 0 || next.layout !== void 0) return next;
73467
+ return { ...next, layout };
73468
+ }
73302
73469
  function mergeCustomerOwned(committed, overlay) {
73303
73470
  const CUSTOMER_OWNED = [
73304
73471
  "version",
@@ -73322,6 +73489,7 @@ function mergeCustomerOwned(committed, overlay) {
73322
73489
  if (value !== void 0) customer[key2] = value;
73323
73490
  }
73324
73491
  if (committed.site === void 0) delete customer.site;
73492
+ customer.site = keepSiteLayout(committed.site, customer.site);
73325
73493
  const overlayBranding = { ...customer.branding ?? {} };
73326
73494
  delete overlayBranding.appIconPath;
73327
73495
  delete overlayBranding.fonts;
@@ -73710,8 +73878,9 @@ function isHomePage(page, mainPageId) {
73710
73878
  function pageId(c, used) {
73711
73879
  const fromPath = (c.path.split("/").filter(Boolean).pop() ?? "").toLowerCase().replace(/[^a-z0-9]+/g, "_").replace(/^_+|_+$/g, "");
73712
73880
  const base = c.role !== "other" && c.role !== "home" && !used.has(c.role) ? c.role : fromPath || "page_1";
73713
- let id = base === "page" ? "page_1" : base;
73714
- for (let n = 2; used.has(id); n++) id = `${base}_${n}`;
73881
+ const safe = base === "page" ? "page_1" : base.startsWith("drawer_") ? `page_${base}` : base;
73882
+ let id = safe;
73883
+ for (let n = 2; used.has(id); n++) id = `${safe}_${n}`;
73715
73884
  used.add(id);
73716
73885
  return id;
73717
73886
  }
@@ -73794,6 +73963,14 @@ function deriveSiteShell(input) {
73794
73963
  }
73795
73964
  }
73796
73965
  }
73966
+ for (const p of placed) {
73967
+ if (p.placement === "overflow" || !RESERVED_PAGE_IDS.has(p.id)) continue;
73968
+ used.delete(p.id);
73969
+ let id = `page_${p.id}`;
73970
+ for (let n = 2; used.has(id); n++) id = `page_${p.id}_${n}`;
73971
+ used.add(id);
73972
+ p.id = id;
73973
+ }
73797
73974
  const pages = [
73798
73975
  { id: "home", title: homeTitle, path: "/", icon: "home" },
73799
73976
  ...placed.map(({ c, id, placement }) => ({
@@ -73837,7 +74014,7 @@ function routeTitle(r) {
73837
74014
  const seg = r.path.split("/").filter(Boolean).pop() ?? r.path;
73838
74015
  return seg.replace(/[-_]+/g, " ").replace(/\b\w/g, (c) => c.toUpperCase());
73839
74016
  }
73840
- var DERIVED_SITE_MAX_PAGES, SITE_PAGE_TITLE_MAX, ROLE_ICON, TAB_ROLES, SYSTEM_SEGMENT, SYSTEM_TITLE, HOME_WORD, oneLine2;
74017
+ var DERIVED_SITE_MAX_PAGES, SITE_PAGE_TITLE_MAX, ROLE_ICON, TAB_ROLES, SYSTEM_SEGMENT, SYSTEM_TITLE, HOME_WORD, oneLine2, RESERVED_PAGE_IDS;
73841
74018
  var init_site_shell_derive = __esm({
73842
74019
  "src/site-analyze/site-shell-derive.ts"() {
73843
74020
  init_site_shell();
@@ -73865,6 +74042,7 @@ var init_site_shell_derive = __esm({
73865
74042
  SYSTEM_TITLE = /\b(thank you|\(popup\)|leave (a )?review|notifications|followers|side cart|order error|pending approval|my (rewards|subscriptions|bookings|orders|groups|wallet))\b|\b(group|service|product|project|collection|category|cart|payment request) pages?$|\b(event|experience|reservation|item) details\b/i;
73866
74043
  HOME_WORD = /^(home|home ?page|main|start|accueil|inicio|início|startseite|home ?sweet ?home|בית|דף הבית|ראשי|الرئيسية|ホーム|首页|홈)$/i;
73867
74044
  oneLine2 = (s) => s.replace(/[\u0000-\u001F\u007F\s]+/g, " ").trim();
74045
+ RESERVED_PAGE_IDS = /* @__PURE__ */ new Set(["account", "notifications"]);
73868
74046
  }
73869
74047
  });
73870
74048
 
@@ -74556,7 +74734,15 @@ async function runSiteAnalyze(opts) {
74556
74734
  const routes = book?.routes;
74557
74735
  if (book?.skipped) result.warnings = [...result.warnings ?? [], book.skipped];
74558
74736
  const derived = deriveSiteShell({ siteUrl: result.book.input.siteUrl, look: result.book.look, kind, routes });
74559
- result.provisioningOverlay.site = derived.site;
74737
+ const prevOverlayPath = resolve55(outDir, "provisioning.overlay.json");
74738
+ const prevSite = existsSync71(prevOverlayPath) ? (() => {
74739
+ try {
74740
+ return JSON.parse(readFileSync88(prevOverlayPath, "utf8")).site;
74741
+ } catch {
74742
+ return void 0;
74743
+ }
74744
+ })() : void 0;
74745
+ result.provisioningOverlay.site = keepSiteLayout(prevSite, derived.site);
74560
74746
  const warnings2 = (result.warnings ?? []).map(
74561
74747
  (w) => !opts.clientId?.trim() && w.startsWith("no --client-id:") ? `no --client-id: fine for --shell ${opts.shell} \u2014 a site shell binds no client, so --apply works without one. Only the vertical probes were skipped, so the catalog has no counts.` : w
74562
74748
  );