@wix/himalaya-cli 0.1057.0 → 0.1059.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
@@ -6657,7 +6657,6 @@ function walk(node, registry, path2, out) {
6657
6657
  var SYSTEM_FONT_FAMILY, TONAL_ELEVATION_ALPHA;
6658
6658
  var init_tokens = __esm({
6659
6659
  "../../core/ts/src/tokens.ts"() {
6660
- "use strict";
6661
6660
  SYSTEM_FONT_FAMILY = "$system";
6662
6661
  TONAL_ELEVATION_ALPHA = [0, 0.05, 0.08, 0.11, 0.12, 0.14];
6663
6662
  }
@@ -27274,6 +27273,11 @@ function withExtras(name, render) {
27274
27273
  Wrapped.displayName = name;
27275
27274
  return Wrapped;
27276
27275
  }
27276
+ function sheetTabStops(root) {
27277
+ const all = Array.from(root.querySelectorAll(NATIVELY_TABBABLE)).filter((el) => el.tabIndex >= 0 && !el.disabled && !el.closest('[inert], [hidden], [aria-hidden="true"]'));
27278
+ const ordered = all.filter((el) => el.tabIndex > 0).sort((a, b) => a.tabIndex - b.tabIndex);
27279
+ return [...ordered, ...all.filter((el) => el.tabIndex === 0)];
27280
+ }
27277
27281
  function chartNumbers(raw) {
27278
27282
  if (!Array.isArray(raw)) return [];
27279
27283
  return raw.map((v) => v && typeof v === "object" && !Array.isArray(v) ? v.value : v).map(Number).filter((n) => Number.isFinite(n));
@@ -28379,7 +28383,10 @@ function renderInner(node, ctx) {
28379
28383
  case "Badge": {
28380
28384
  const _bt = boundTokenName(props.tokenPath, props.token, ctx);
28381
28385
  const c = _bt ? C(_bt, "#116DFF") : sevColor(ctx, props.style ?? "info");
28382
- return /* @__PURE__ */ jsx6("span", { 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: c, ...wrap }, children: ctx.empty ? "" : txt(props.text, ctx) || "Badge" });
28386
+ const liveCount = typeof props.text === "string" && /^\$(?:service|flag)\b/.test(props.text);
28387
+ const badgeLabel = modifiers?.accessibilityLabel;
28388
+ const badgeRole = liveCount ? "status" : typeof badgeLabel === "string" && badgeLabel.trim() !== "" ? "img" : void 0;
28389
+ return /* @__PURE__ */ jsx6("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: c, ...wrap }, children: ctx.empty ? "" : txt(props.text, ctx) || "Badge" });
28383
28390
  }
28384
28391
  case "Tag": {
28385
28392
  const c = C(boundTokenName(props.tokenPath, props.token, ctx) ?? "accentPrimary", "#116DFF");
@@ -28569,45 +28576,11 @@ function renderInner(node, ctx) {
28569
28576
  return /* @__PURE__ */ jsx6(PdfViewNode, { props, ctx, wrap });
28570
28577
  case "MediaPlayer":
28571
28578
  return /* @__PURE__ */ jsx6(MediaPlayerView, { nodeId: node.id, props, ctx, wrap });
28572
- // Motion grammar (Batch 4) — Lottie/Rive vector animation. The container is
28573
- // tagged + sized here; lottie-web mounts the animation browser-side via
28574
- // ensureLottieRuntime (dynamic import). Reduced motion → static last frame.
28575
- case "Lottie": {
28576
- ensureLottieRuntime();
28577
- const lh = typeof props.height === "number" && props.height > 0 ? props.height : 160;
28578
- return /* @__PURE__ */ jsx6(
28579
- "div",
28580
- {
28581
- "data-himalaya-lottie": props.source ? String(props.source) : "",
28582
- "data-himalaya-lottie-loop": props.loop === false ? "0" : "1",
28583
- "data-himalaya-lottie-autoplay": props.autoplay === false ? "0" : "1",
28584
- "data-himalaya-lottie-speed": typeof props.speed === "number" ? String(props.speed) : "1",
28585
- "data-himalaya-lottie-reduce": ctx.reduceMotion() ? "1" : "0",
28586
- role: "img",
28587
- "aria-label": "animation",
28588
- style: { width: "100%", height: lh, display: "block", ...wrap }
28589
- }
28590
- );
28591
- }
28592
- // Motion grammar (Phase-2) — Rive. @rive-app/canvas mounts to the <canvas>
28593
- // browser-side via ensureRiveRuntime (dynamic import). Reduced motion → no autoplay.
28594
- case "Rive": {
28595
- ensureRiveRuntime();
28596
- const rh = typeof props.height === "number" && props.height > 0 ? props.height : 160;
28597
- return /* @__PURE__ */ jsx6(
28598
- "canvas",
28599
- {
28600
- "data-himalaya-rive": props.source ? String(props.source) : "",
28601
- "data-himalaya-rive-artboard": props.artboard ? String(props.artboard) : "",
28602
- "data-himalaya-rive-sm": props.stateMachine ? String(props.stateMachine) : "",
28603
- "data-himalaya-rive-autoplay": props.autoplay === false ? "0" : "1",
28604
- "data-himalaya-rive-reduce": ctx.reduceMotion() ? "1" : "0",
28605
- role: "img",
28606
- "aria-label": "animation",
28607
- style: { width: "100%", height: rh, display: "block", ...wrap }
28608
- }
28609
- );
28610
- }
28579
+ // Motion grammar (Batch 4 / Phase-2) — Lottie and Rive; see LottieNode / RiveNode.
28580
+ case "Lottie":
28581
+ return /* @__PURE__ */ jsx6(LottieNode, { props, ctx, wrap });
28582
+ case "Rive":
28583
+ return /* @__PURE__ */ jsx6(RiveNode, { props, ctx, wrap });
28611
28584
  // ───────────── forms ─────────────
28612
28585
  case "Form":
28613
28586
  return /* @__PURE__ */ jsx6(FormView, { props, ctx, wrap });
@@ -28757,7 +28730,7 @@ function renderInner(node, ctx) {
28757
28730
  }
28758
28731
  }
28759
28732
  }
28760
- 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, kids, rowKids, staggeredKids, asTextL10n, asBoundText, useBoundString, InterpolatedTextView, txt, selectFragmentCase, fragmentValueHash, fragmentSlotContent, FragmentSlotNode, WorkerSubtreeNode, 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, INTERACTIVE_ROLES, ALWAYS_INTERACTIVE_COMPONENT_TYPES, controlNode, ToggleNode, SliderNode, SelectionControlNode, TabsNode, SegmentedControlNode, DisclosureGroupNode, GridNode, SplitViewNode, TextNode, ImageNode, AvatarNode, IconNode, ButtonNode, OtpInputNode, ProgressBarNode, ActivityIndicatorNode, BottomSheetNode, 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, initialFocusSeen, PRESENTED_SCOPE, presentedOpeners, presentedObserver, A11yHintDescription, WebRenderer;
28733
+ 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, kids, rowKids, staggeredKids, asTextL10n, asBoundText, useBoundString, InterpolatedTextView, txt, selectFragmentCase, fragmentValueHash, fragmentSlotContent, FragmentSlotNode, WorkerSubtreeNode, 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, 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, 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, initialFocusSeen, PRESENTED_SCOPE, presentedOpeners, presentedObserver, A11yHintDescription, WebRenderer;
28761
28734
  var init_renderNode = __esm({
28762
28735
  "../../core/web-renderer/src/renderNode.tsx"() {
28763
28736
  "use strict";
@@ -30298,21 +30271,22 @@ var init_renderNode = __esm({
30298
30271
  opacity: disabled(at) ? 0.4 : 1,
30299
30272
  userSelect: "none"
30300
30273
  });
30274
+ const named = { [ROLE_WHEN_NAMED]: "group" };
30301
30275
  if (ctx.empty) {
30302
- return /* @__PURE__ */ jsxs3("div", { style: box, children: [
30276
+ return /* @__PURE__ */ jsxs3("div", { ...named, style: box, children: [
30303
30277
  /* @__PURE__ */ jsx6("span", { style: btn("min"), children: "\u2212" }),
30304
30278
  /* @__PURE__ */ jsx6("b", { style: { fontSize: 16, minWidth: 24, textAlign: "center", color: C("textPrimary", "#111") }, children: "\u2014" }),
30305
30279
  /* @__PURE__ */ jsx6("span", { style: btn("max"), children: "+" })
30306
30280
  ] });
30307
30281
  }
30308
30282
  if (!ctx.onAction) {
30309
- return /* @__PURE__ */ jsxs3("div", { style: box, children: [
30283
+ return /* @__PURE__ */ jsxs3("div", { ...named, style: box, children: [
30310
30284
  /* @__PURE__ */ jsx6("span", { style: btn("min"), children: "\u2212" }),
30311
30285
  /* @__PURE__ */ jsx6("b", { style: { fontSize: 16, minWidth: 24, textAlign: "center", color: C("textPrimary", "#111") }, children: value }),
30312
30286
  /* @__PURE__ */ jsx6("span", { style: btn("max"), children: "+" })
30313
30287
  ] });
30314
30288
  }
30315
- return /* @__PURE__ */ jsxs3("div", { style: box, children: [
30289
+ return /* @__PURE__ */ jsxs3("div", { ...named, style: box, children: [
30316
30290
  /* @__PURE__ */ jsx6("button", { type: "button", "aria-label": "Decrease", disabled: disabled("min"), onClick: () => bump(-step), style: { ...btn("min"), font: "inherit" }, children: "\u2212" }),
30317
30291
  /* @__PURE__ */ jsx6("b", { style: { fontSize: 16, minWidth: 24, textAlign: "center", color: C("textPrimary", "#111"), fontVariantNumeric: "tabular-nums" }, children: value }),
30318
30292
  /* @__PURE__ */ jsx6("button", { type: "button", "aria-label": "Increase", disabled: disabled("max"), onClick: () => bump(step), style: { ...btn("max"), font: "inherit" }, children: "+" })
@@ -30518,6 +30492,39 @@ var init_renderNode = __esm({
30518
30492
  }
30519
30493
  return /* @__PURE__ */ jsx6("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" });
30520
30494
  });
30495
+ ANIMATION_LEAF = { "aria-hidden": "true", [INFERRED_DECORATIVE]: true, [SELF_RENDERED_LEAF]: true, [ROLE_WHEN_NAMED]: "img" };
30496
+ LottieNode = withExtras("LottieNode", ({ props, ctx, wrap }) => {
30497
+ ensureLottieRuntime();
30498
+ const lh = typeof props.height === "number" && props.height > 0 ? props.height : 160;
30499
+ return /* @__PURE__ */ jsx6(
30500
+ "div",
30501
+ {
30502
+ "data-himalaya-lottie": props.source ? String(props.source) : "",
30503
+ "data-himalaya-lottie-loop": props.loop === false ? "0" : "1",
30504
+ "data-himalaya-lottie-autoplay": props.autoplay === false ? "0" : "1",
30505
+ "data-himalaya-lottie-speed": typeof props.speed === "number" ? String(props.speed) : "1",
30506
+ "data-himalaya-lottie-reduce": ctx.reduceMotion() ? "1" : "0",
30507
+ ...ANIMATION_LEAF,
30508
+ style: { width: "100%", height: lh, display: "block", ...wrap }
30509
+ }
30510
+ );
30511
+ });
30512
+ RiveNode = withExtras("RiveNode", ({ props, ctx, wrap }) => {
30513
+ ensureRiveRuntime();
30514
+ const rh = typeof props.height === "number" && props.height > 0 ? props.height : 160;
30515
+ return /* @__PURE__ */ jsx6(
30516
+ "canvas",
30517
+ {
30518
+ "data-himalaya-rive": props.source ? String(props.source) : "",
30519
+ "data-himalaya-rive-artboard": props.artboard ? String(props.artboard) : "",
30520
+ "data-himalaya-rive-sm": props.stateMachine ? String(props.stateMachine) : "",
30521
+ "data-himalaya-rive-autoplay": props.autoplay === false ? "0" : "1",
30522
+ "data-himalaya-rive-reduce": ctx.reduceMotion() ? "1" : "0",
30523
+ ...ANIMATION_LEAF,
30524
+ style: { width: "100%", height: rh, display: "block", ...wrap }
30525
+ }
30526
+ );
30527
+ });
30521
30528
  AvatarNode = withExtras("AvatarNode", ({ props, ctx, wrap }) => {
30522
30529
  const C = ctx.color;
30523
30530
  const boundUrl = useResolvedScalar(isBinding(props.imageUrl) ? props.imageUrl : void 0, ctx);
@@ -30525,10 +30532,11 @@ var init_renderNode = __esm({
30525
30532
  const imageUrl = isBinding(props.imageUrl) ? boundUrl : props.imageUrl;
30526
30533
  const initials = isBinding(props.initials) ? boundInitials : props.initials;
30527
30534
  const size = props.size ?? 48;
30535
+ const a11y = { [ROLE_WHEN_NAMED]: "img", [SELF_RENDERED_LEAF]: true };
30528
30536
  if (typeof imageUrl === "string" && imageUrl) {
30529
- return /* @__PURE__ */ jsx6("img", { src: resolveAssetUrl(imageUrl, ctx.assetBaseUrl), alt: "", style: { width: size, height: size, borderRadius: "50%", objectFit: "cover", flex: "none", ...wrap } });
30537
+ return /* @__PURE__ */ jsx6("img", { ...a11y, src: resolveAssetUrl(imageUrl, ctx.assetBaseUrl), alt: "", style: { width: size, height: size, borderRadius: "50%", objectFit: "cover", flex: "none", ...wrap } });
30530
30538
  }
30531
- return /* @__PURE__ */ jsx6("div", { style: { width: size, height: size, borderRadius: "50%", background: C("accentPrimary", "#116DFF"), color: C("textOnAccent", "#fff"), display: "grid", placeItems: "center", fontWeight: 600, fontSize: size * 0.4, fontFamily: bodyFont(ctx), flex: "none", ...wrap }, children: (asText2(initials) || "?").slice(0, 2).toUpperCase() });
30539
+ return /* @__PURE__ */ jsx6("div", { ...a11y, style: { width: size, height: size, borderRadius: "50%", background: C("accentPrimary", "#116DFF"), color: C("textOnAccent", "#fff"), display: "grid", placeItems: "center", fontWeight: 600, fontSize: size * 0.4, fontFamily: bodyFont(ctx), flex: "none", ...wrap }, children: (asText2(initials) || "?").slice(0, 2).toUpperCase() });
30532
30540
  });
30533
30541
  IconNode = withExtras("IconNode", ({ props, ctx, wrap }) => {
30534
30542
  const C = ctx.color;
@@ -30696,16 +30704,53 @@ var init_renderNode = __esm({
30696
30704
  ensureSpinKeyframes();
30697
30705
  return /* @__PURE__ */ jsx6("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 } });
30698
30706
  });
30707
+ 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]';
30699
30708
  BottomSheetNode = withExtras("BottomSheetNode", ({ props, ctx, wrap }) => {
30700
30709
  const sheetTitle = useBoundString(props.title, ctx);
30701
30710
  const C = ctx.color;
30702
30711
  const bound = useResolvedScalar(props.presentedPath, ctx);
30703
30712
  const gated = props.presentedPath != null || props.presented != null;
30704
30713
  const presented = props.presentedPath != null ? bound : props.presented;
30705
- if (gated && presented !== true && presented !== "true") return null;
30714
+ const shown2 = !gated || presented === true || presented === "true";
30715
+ const modal = ariaModal(props.modal, true) === "true";
30716
+ const dialogRef = React5.useRef(null);
30717
+ useIsomorphicLayoutEffect(() => {
30718
+ if (!shown2 || !modal) return;
30719
+ const dialog = dialogRef.current;
30720
+ const active = dialog?.ownerDocument.activeElement;
30721
+ if (dialog && active instanceof HTMLElement && active !== dialog.ownerDocument.body && !dialog.contains(active)) {
30722
+ restoreFocusOnDismiss(dialog, active);
30723
+ }
30724
+ const layer = pushModalLayer(() => dialogRef.current);
30725
+ const enter = setTimeout(() => {
30726
+ const d = dialogRef.current;
30727
+ if (!d || d.contains(d.ownerDocument.activeElement)) return;
30728
+ if (d.querySelector("[data-himalaya-initial-focus]")) return;
30729
+ d.focus();
30730
+ }, 0);
30731
+ return () => {
30732
+ clearTimeout(enter);
30733
+ layer.release();
30734
+ };
30735
+ }, [shown2, modal]);
30736
+ const trapTab = (e) => {
30737
+ if (!modal || e.key !== "Tab" || e.defaultPrevented || e.nativeEvent.defaultPrevented) return;
30738
+ const d = dialogRef.current;
30739
+ if (!d) return;
30740
+ e.preventDefault();
30741
+ const stops = sheetTabStops(d);
30742
+ if (!stops.length) {
30743
+ d.focus();
30744
+ return;
30745
+ }
30746
+ const at = stops.indexOf(d.ownerDocument.activeElement);
30747
+ const next = e.shiftKey ? at <= 0 ? stops.length - 1 : at - 1 : at === -1 || at === stops.length - 1 ? 0 : at + 1;
30748
+ stops[next].focus();
30749
+ };
30750
+ if (!shown2) return null;
30706
30751
  const grabber = props.showGrabber !== false;
30707
30752
  const sheet = idiomControls(ctx.idiom).sheet;
30708
- return /* @__PURE__ */ jsx6("div", { style: { position: "absolute", inset: 0, background: "rgba(0,0,0,.35)", zIndex: 50, display: "flex", flexDirection: "column", justifyContent: "flex-end", ...wrap }, children: /* @__PURE__ */ jsxs3("div", { role: "dialog", "aria-modal": ariaModal(props.modal, true), "aria-label": props.title != null ? sheetTitle : "Sheet", style: { width: "100%", background: C("surfacePrimary", "#fff"), borderRadius: `${sheet.cornerRadius}px ${sheet.cornerRadius}px 0 0`, boxShadow: "0 -4px 24px rgba(0,0,0,.12)", overflow: "hidden" }, children: [
30753
+ return /* @__PURE__ */ jsx6("div", { style: { position: "absolute", inset: 0, background: "rgba(0,0,0,.35)", zIndex: 50, display: "flex", flexDirection: "column", justifyContent: "flex-end", ...wrap }, children: /* @__PURE__ */ jsxs3("div", { ref: dialogRef, role: "dialog", "aria-modal": modal ? "true" : void 0, tabIndex: modal ? -1 : void 0, onKeyDown: modal ? trapTab : void 0, "aria-label": props.title != null ? sheetTitle : "Sheet", style: { width: "100%", background: C("surfacePrimary", "#fff"), borderRadius: `${sheet.cornerRadius}px ${sheet.cornerRadius}px 0 0`, boxShadow: "0 -4px 24px rgba(0,0,0,.12)", overflow: "hidden" }, children: [
30709
30754
  grabber && /* @__PURE__ */ jsx6("div", { style: { display: "flex", justifyContent: "center", padding: "8px 0 4px" }, children: /* @__PURE__ */ jsx6("div", { style: { width: sheet.grabberWidth, height: sheet.grabberHeight, borderRadius: 999, background: C("surfaceTertiary", "#d8dce2") } }) }),
30710
30755
  /* @__PURE__ */ jsx6("div", { style: { padding: "8px 16px 16px" }, children: props.content ? renderNode(props.content, ctx) : null })
30711
30756
  ] }) });
@@ -30833,7 +30878,11 @@ var init_renderNode = __esm({
30833
30878
  const shown2 = avatars.slice(0, maxVisible);
30834
30879
  const overflow = props.overflowCount || Math.max(0, avatars.length - maxVisible);
30835
30880
  const shift = Math.round(size * (1 - (props.overlapRatio ?? 0.67)));
30836
- return /* @__PURE__ */ jsxs3("div", { style: { width: "100%", ...wrap }, children: [
30881
+ const caption = useBoundString(props.caption, ctx).trim();
30882
+ const count = shown2.length + overflow;
30883
+ const countText = count > 0 ? `${count} ${count === 1 ? "person" : "people"}` : "";
30884
+ const groupName = [caption, countText].filter(Boolean).join(", ");
30885
+ return /* @__PURE__ */ jsxs3("div", { role: "group", "aria-label": groupName || void 0, "data-a11y-value": countText || void 0, ...{ [SELF_RENDERED_LEAF]: true }, style: { width: "100%", ...wrap }, children: [
30837
30886
  /* @__PURE__ */ jsxs3("div", { style: { display: "flex" }, children: [
30838
30887
  shown2.map((a, i) => {
30839
30888
  const ring = props.ringGradient ? ctx.gradient(props.ringGradient) : void 0;
@@ -31662,7 +31711,7 @@ var init_renderNode = __esm({
31662
31711
  /* @__PURE__ */ jsxs3("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: [
31663
31712
  imageUrl && /* @__PURE__ */ jsx6("img", { src: imageUrl, alt: "", style: { width: "100%", height: "100%", objectFit: "cover" } }),
31664
31713
  /* @__PURE__ */ jsxs3("div", { style: { position: "absolute", left: 14, bottom: 12, color: "#fff", textShadow: "0 1px 4px rgba(0,0,0,.5)" }, children: [
31665
- /* @__PURE__ */ jsx6("div", { 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) }),
31714
+ /* @__PURE__ */ jsx6("div", { 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) }),
31666
31715
  props.subtitle && /* @__PURE__ */ jsx6("div", { style: { fontSize: 13, opacity: 0.9 }, children: txt(props.subtitle, ctx) })
31667
31716
  ] })
31668
31717
  ] }),
@@ -52457,21 +52506,21 @@ var init_preview_assets_generated = __esm({
52457
52506
  "../../packages/serve/src/preview-assets.generated.ts"() {
52458
52507
  init_preview_assets_format();
52459
52508
  PREVIEW_ASSET_MANIFEST = [
52460
- { key: "assets/index-BpZ7D4Bh.js", contentType: "application/javascript; charset=utf-8", offset: 8, length: 1058524, sha256: "cc7f9edeb0a351f0d1fbc18d622044afaf3112c567893f04135a5cf846e2c4d2" },
52461
- { key: "fonts/Roboto-LICENSE.txt", contentType: "application/octet-stream", offset: 1058532, length: 4610, sha256: "994062dd7af4186a739de55dd9e151c63b6301f8e2cbafc608d35c2e87da0cd2" },
52462
- { key: "fonts/Roboto-Variable.ttf", contentType: "font/ttf", offset: 1063142, length: 488584, sha256: "d7598e12c5dbef095ff8272cfc55da0250bd07fbdecbac8a530b9b277872a134" },
52463
- { key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset: 1551726, length: 90924, sha256: "ec4c7d63772d980d6e147b2df6215fd2737e4b04cebe0cf7e11dc695fb63cdcf" },
52464
- { key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset: 1642650, length: 90984, sha256: "bf4c16a2774edd38a921edf3099469866cd74c094fd596f3fa4e81f54a04dfaa" },
52465
- { key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset: 1733634, length: 90980, sha256: "368faca44fb9f7207e4af784e94750b1ee59c1098b8689e0f4a918926f244fb5" },
52466
- { key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset: 1824614, length: 90872, sha256: "97ed8f1a6772abe26e3d8af5cecfc4b02faa94497d585b0398b5053b739a70c1" },
52467
- { key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset: 1915486, length: 90980, sha256: "642feab8a48ddf6c7a89d7c2a7c0edfa0e6e773f671287e460e222703563191e" },
52468
- { key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset: 2006466, length: 108636, sha256: "37c179b4fefb63ea9637322b84583a2df53aa226c150294eea1675c14b1b8e29" },
52469
- { key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset: 2115102, length: 109084, sha256: "62e2fe4718129f36ecdb0ae4de385bd6b81ecc876146447167c6c140fad699a9" },
52470
- { key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset: 2224186, length: 109048, sha256: "4ecf270136af928612c76fe4ebade91d8156975e5ea4c0cf9225501dd1788e02" },
52471
- { key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset: 2333234, length: 107700, sha256: "dee56f09fd3efc127c1ea95557edc74110c1460a46287da36e0af25efd341ef5" },
52472
- { key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset: 2440934, length: 88108, sha256: "dced97a77624bc5f8b1ae65850360908297f4588e09feb6f22792d29dc7e765b" },
52473
- { key: "index.html", contentType: "text/html; charset=utf-8", offset: 2529042, length: 4947, sha256: "bed413299e95d197f054aae695914a18403bef8f893a8ed89a87068cbd0cab80" },
52474
- { key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset: 2533989, length: 17209, sha256: "dffc9718e2faa63ae2cc919e0a842f585ed565aaaa7c53778e90379442c731b6" }
52509
+ { key: "assets/index-BU6QijMM.js", contentType: "application/javascript; charset=utf-8", offset: 8, length: 1060352, sha256: "f608f6d0e14dafe6c495e5df15d09d7512e0a8d87732feea4f4e8e36de7917e4" },
52510
+ { key: "fonts/Roboto-LICENSE.txt", contentType: "application/octet-stream", offset: 1060360, length: 4610, sha256: "994062dd7af4186a739de55dd9e151c63b6301f8e2cbafc608d35c2e87da0cd2" },
52511
+ { key: "fonts/Roboto-Variable.ttf", contentType: "font/ttf", offset: 1064970, length: 488584, sha256: "d7598e12c5dbef095ff8272cfc55da0250bd07fbdecbac8a530b9b277872a134" },
52512
+ { key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset: 1553554, length: 90924, sha256: "ec4c7d63772d980d6e147b2df6215fd2737e4b04cebe0cf7e11dc695fb63cdcf" },
52513
+ { key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset: 1644478, length: 90984, sha256: "bf4c16a2774edd38a921edf3099469866cd74c094fd596f3fa4e81f54a04dfaa" },
52514
+ { key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset: 1735462, length: 90980, sha256: "368faca44fb9f7207e4af784e94750b1ee59c1098b8689e0f4a918926f244fb5" },
52515
+ { key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset: 1826442, length: 90872, sha256: "97ed8f1a6772abe26e3d8af5cecfc4b02faa94497d585b0398b5053b739a70c1" },
52516
+ { key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset: 1917314, length: 90980, sha256: "642feab8a48ddf6c7a89d7c2a7c0edfa0e6e773f671287e460e222703563191e" },
52517
+ { key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset: 2008294, length: 108636, sha256: "37c179b4fefb63ea9637322b84583a2df53aa226c150294eea1675c14b1b8e29" },
52518
+ { key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset: 2116930, length: 109084, sha256: "62e2fe4718129f36ecdb0ae4de385bd6b81ecc876146447167c6c140fad699a9" },
52519
+ { key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset: 2226014, length: 109048, sha256: "4ecf270136af928612c76fe4ebade91d8156975e5ea4c0cf9225501dd1788e02" },
52520
+ { key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset: 2335062, length: 107700, sha256: "dee56f09fd3efc127c1ea95557edc74110c1460a46287da36e0af25efd341ef5" },
52521
+ { key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset: 2442762, length: 88108, sha256: "dced97a77624bc5f8b1ae65850360908297f4588e09feb6f22792d29dc7e765b" },
52522
+ { key: "index.html", contentType: "text/html; charset=utf-8", offset: 2530870, length: 4947, sha256: "c760d7592d0a40904bb13edaec8e8991f79fc2eb732c5dfee54fea36e6dceecb" },
52523
+ { key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset: 2535817, length: 17209, sha256: "dffc9718e2faa63ae2cc919e0a842f585ed565aaaa7c53778e90379442c731b6" }
52475
52524
  ];
52476
52525
  }
52477
52526
  });
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wix/himalaya-cli",
3
- "version": "0.1057.0",
3
+ "version": "0.1059.0",
4
4
  "type": "module",
5
5
  "description": "himi — the Himalaya authoring CLI. Build a Tier-5 content package on your own machine, push it to the production serve as a draft, preview it on web + Himi Player, and read worker logs back — the remote dev loop. Wraps @himalaya/serve-cli for transport.",
6
6
  "keywords": [
@@ -65,5 +65,5 @@
65
65
  "artifactId": "himalaya-cli"
66
66
  }
67
67
  },
68
- "falconPackageHash": "ede2fd66039df65fdf473ae5c73ce83b76f3b3875fd00de7768eeee0"
68
+ "falconPackageHash": "217408348528b793a48ae81c3b6395c3764c7e8c01df6771e26347e0"
69
69
  }