@wix/himalaya-cli 0.1214.0 → 0.1215.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
@@ -6818,6 +6818,7 @@ function walk(node, registry, path2, out2) {
6818
6818
  var SYSTEM_FONT_FAMILY, TONAL_ELEVATION_ALPHA, COLOR_TOKEN_PROPS, TYPOGRAPHY_TOKEN_PROPS;
6819
6819
  var init_tokens = __esm({
6820
6820
  "../../core/ts/src/tokens.ts"() {
6821
+ "use strict";
6821
6822
  SYSTEM_FONT_FAMILY = "$system";
6822
6823
  TONAL_ELEVATION_ALPHA = [0, 0.05, 0.08, 0.11, 0.12, 0.14];
6823
6824
  COLOR_TOKEN_PROPS = {
@@ -6868,6 +6869,7 @@ function resolveTranslation(value, catalog, sourceCatalog) {
6868
6869
  var BINDING_SIGILS, BINDING_SIGIL_RE, TRANSLATION_PREFIX, TRANSLATION_KEY_RE;
6869
6870
  var init_bindings = __esm({
6870
6871
  "../../core/ts/src/bindings.ts"() {
6872
+ "use strict";
6871
6873
  BINDING_SIGILS = ["service", "flag", "item", "t"];
6872
6874
  BINDING_SIGIL_RE = new RegExp(
6873
6875
  `^\\$(?:${BINDING_SIGILS.filter((s) => s !== "t").join("|")})\\b|^\\$t:`
@@ -34787,6 +34789,29 @@ function idiomPress(ctx, part) {
34787
34789
  ensurePressStyles();
34788
34790
  return `${ctx.idiom}-${kind}`;
34789
34791
  }
34792
+ function revealOnFocusStyle(C) {
34793
+ return {
34794
+ ...VISUALLY_HIDDEN,
34795
+ background: C("surfacePrimary", "#fff"),
34796
+ color: C("textPrimary", "#13171e"),
34797
+ font: "inherit",
34798
+ fontSize: pxToRem(11),
34799
+ fontWeight: 600,
34800
+ cursor: "pointer"
34801
+ };
34802
+ }
34803
+ function FormFieldLabelIdScope({ render, fieldKey, ...extras }) {
34804
+ const id = React7.useId().replace(/[^A-Za-z0-9_-]/g, "");
34805
+ const el = render(`${fieldKey ? `${fieldKey}-` : ""}auto-${id}`);
34806
+ return Object.keys(extras).length ? React7.cloneElement(el, extras) : el;
34807
+ }
34808
+ function formFieldA11y(props) {
34809
+ const labelledBy = props.__labelledBy;
34810
+ return {
34811
+ "aria-labelledby": typeof labelledBy === "string" && labelledBy ? labelledBy : void 0,
34812
+ "aria-required": props.validation?.required === true || void 0
34813
+ };
34814
+ }
34790
34815
  function ensureFocusStyles() {
34791
34816
  if (focusStylesInjected || typeof document === "undefined") return;
34792
34817
  focusStylesInjected = true;
@@ -37177,48 +37202,56 @@ function renderInner(node, ctx) {
37177
37202
  inner: props.text?.validation
37178
37203
  });
37179
37204
  const isTextKind = !["stepper", "toggle", "picker", "date"].includes(props.kind);
37180
- const inner = (
37181
- // `__formFieldId` rides down into EVERY control arm, not just the three
37182
- // that always had it: without it the control never registers in the
37183
- // enclosing Form's value bag, so its value is simply MISSING from the
37184
- // submit payload — which is what web did for stepper and toggle while
37185
- // both natives collected them (see core/schema/form-bag-vectors.json).
37186
- // `validation: fieldRule` rides down with the id, for the same reason. Each
37187
- // control registers the rule it is HANDED, and the proto puts `validation`
37188
- // on TextFieldProps and FormFieldProps only — so a non-text arm read
37189
- // `props.validation` as permanently undefined and registered no rule at
37190
- // all. A `required` picker/date/stepper/toggle therefore left
37191
- // `formIsValid` true and web's submit enabled, while iOS and Android
37192
- // computed the same merged rule through `FormState.effectiveRule` and
37193
- // disabled it. The merge itself already happened above; it just never
37194
- // reached four of the five kinds.
37195
- props.kind === "stepper" ? { type: "Stepper", props: { ...props.stepper ?? {}, __formFieldId: props.id, validation: fieldRule } } : props.kind === "toggle" ? { type: "Toggle", props: { label: "", ...props.toggle ?? {}, __formFieldId: props.id, validation: fieldRule } } : props.kind === "picker" ? { type: "Picker", props: { ...props.picker ?? {}, __formFieldId: props.id, validation: fieldRule } } : props.kind === "date" ? { type: "DatePicker", props: { ...props.date ?? {}, __formFieldId: props.id, validation: fieldRule } } : {
37196
- type: "TextField",
37197
- props: {
37198
- ...props.text ?? {},
37199
- __formFieldId: props.id,
37200
- validation: fieldRule,
37201
- errorText: props.errorMessage ?? props.text?.errorText
37205
+ const labelText2 = asBoundText(props.label, ctx);
37206
+ const ownKey = resolvedComponentId(node.id, ctx);
37207
+ const renderField = (labelDomKey) => {
37208
+ const labelId = labelText2 ? `hm-field-label-${labelDomKey.replace(/\s+/g, "_")}` : void 0;
37209
+ const labelledBy = props.kind !== "toggle" ? labelId : void 0;
37210
+ const inner = (
37211
+ // `__formFieldId` rides down into EVERY control arm, not just the three
37212
+ // that always had it: without it the control never registers in the
37213
+ // enclosing Form's value bag, so its value is simply MISSING from the
37214
+ // submit payload — which is what web did for stepper and toggle while
37215
+ // both natives collected them (see core/schema/form-bag-vectors.json).
37216
+ // `validation: fieldRule` rides down with the id, for the same reason. Each
37217
+ // control registers the rule it is HANDED, and the proto puts `validation`
37218
+ // on TextFieldProps and FormFieldProps only — so a non-text arm read
37219
+ // `props.validation` as permanently undefined and registered no rule at
37220
+ // all. A `required` picker/date/stepper/toggle therefore left
37221
+ // `formIsValid` true and web's submit enabled, while iOS and Android
37222
+ // computed the same merged rule through `FormState.effectiveRule` and
37223
+ // disabled it. The merge itself already happened above; it just never
37224
+ // reached four of the five kinds.
37225
+ props.kind === "stepper" ? { type: "Stepper", props: { ...props.stepper ?? {}, __formFieldId: props.id, validation: fieldRule, __labelledBy: labelledBy } } : props.kind === "toggle" ? { type: "Toggle", props: { label: "", ...props.toggle ?? {}, __formFieldId: props.id, validation: fieldRule } } : props.kind === "picker" ? { type: "Picker", props: { ...props.picker ?? {}, __formFieldId: props.id, validation: fieldRule, __labelledBy: labelledBy } } : props.kind === "date" ? { type: "DatePicker", props: { ...props.date ?? {}, __formFieldId: props.id, validation: fieldRule, __labelledBy: labelledBy } } : {
37226
+ type: "TextField",
37227
+ props: {
37228
+ ...props.text ?? {},
37229
+ __formFieldId: props.id,
37230
+ validation: fieldRule,
37231
+ errorText: props.errorMessage ?? props.text?.errorText,
37232
+ __labelledBy: labelledBy
37233
+ }
37202
37234
  }
37203
- }
37204
- );
37205
- const fieldLabel = asBoundText(props.label, ctx);
37206
- if (isTextKind && typeof props.label === "string" && props.label) {
37207
- inner.modifiers = { accessibilityLabel: props.label };
37208
- }
37209
- if (isTextKind && typeof props.helpText === "string" && props.helpText) {
37210
- inner.modifiers = { ...inner.modifiers ?? {}, accessibilityHint: props.helpText };
37211
- }
37212
- const showOwnError = !isTextKind && props.errorMessage;
37213
- return /* @__PURE__ */ jsxs5("div", { style: { width: "100%", ...wrap }, children: [
37214
- (fieldLabel || props.required) && /* @__PURE__ */ jsxs5("div", { style: { fontFamily: bodyFont(ctx), fontWeight: 600, fontSize: pxToRem(13), color: C("textPrimary", "#111"), marginBottom: 6 }, children: [
37215
- fieldLabel,
37216
- props.required && /* @__PURE__ */ jsx8("span", { style: { color: C("danger", "#e62214") }, children: " *" })
37217
- ] }),
37218
- renderNode(inner, ctx),
37219
- props.helpText && /* @__PURE__ */ jsx8("div", { style: { fontSize: pxToRem(12), color: C("textSecondary", "#888"), marginTop: 4 }, children: txt(props.helpText, ctx) }),
37220
- showOwnError && /* @__PURE__ */ jsx8("div", { role: "alert", style: { fontSize: pxToRem(12), color: C("danger", "#E62214"), marginTop: 4 }, children: txt(props.errorMessage, ctx) })
37221
- ] });
37235
+ );
37236
+ const fieldLabel = labelText2;
37237
+ if (isTextKind && typeof props.label === "string" && props.label) {
37238
+ inner.modifiers = { accessibilityLabel: props.label };
37239
+ }
37240
+ if (isTextKind && typeof props.helpText === "string" && props.helpText) {
37241
+ inner.modifiers = { ...inner.modifiers ?? {}, accessibilityHint: props.helpText };
37242
+ }
37243
+ const showOwnError = !isTextKind && props.errorMessage;
37244
+ return /* @__PURE__ */ jsxs5("div", { style: { width: "100%", ...wrap }, children: [
37245
+ (fieldLabel || props.required) && /* @__PURE__ */ jsxs5("div", { style: { fontFamily: bodyFont(ctx), fontWeight: 600, fontSize: pxToRem(13), color: C("textPrimary", "#111"), marginBottom: 6 }, children: [
37246
+ fieldLabel ? /* @__PURE__ */ jsx8("span", { id: labelId, children: fieldLabel }) : null,
37247
+ props.required && /* @__PURE__ */ jsx8("span", { "aria-hidden": labelledBy ? "true" : void 0, style: { color: C("danger", "#e62214") }, children: " *" })
37248
+ ] }),
37249
+ renderNode(inner, ctx),
37250
+ props.helpText && /* @__PURE__ */ jsx8("div", { style: { fontSize: pxToRem(12), color: C("textSecondary", "#888"), marginTop: 4 }, children: txt(props.helpText, ctx) }),
37251
+ showOwnError && /* @__PURE__ */ jsx8("div", { role: "alert", style: { fontSize: pxToRem(12), color: C("danger", "#E62214"), marginTop: 4 }, children: txt(props.errorMessage, ctx) })
37252
+ ] });
37253
+ };
37254
+ return ownKey ? renderField(ownKey) : /* @__PURE__ */ jsx8(FormFieldLabelIdScope, { render: renderField, fieldKey: typeof props.id === "string" && props.id ? props.id : void 0 });
37222
37255
  }
37223
37256
  case "FieldError":
37224
37257
  return /* @__PURE__ */ jsx8(FieldErrorNode, { props, ctx, wrap });
@@ -37332,7 +37365,7 @@ function renderInner(node, ctx) {
37332
37365
  }
37333
37366
  }
37334
37367
  }
37335
- 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, asFinalTextL10n, asBoundText, useBoundString, InterpolatedTextView, txt, selectFragmentCase, fragmentValueHash, fragmentSlotContent, FragmentSlotNode, RichContentEditorNode, MediaFieldNode, WorkerSubtreeNode, RichContentNode, resolveItemDeep2, resolveSwipeActions, resolveModBindings, resolvedComponentId, directServiceBindings, withRootStyle, 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, TAP_ACTIVATOR_ATTR, TAP_GROUP_ATTR, VISUALLY_HIDDEN, NAME_SKIP_SELECTOR, activatorNameObservers, ACTIVATOR_STATE_ATTRS, 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;
37368
+ var useIsomorphicLayoutEffect, ResponsiveGrid, SPLIT_EXPANDED_MIN_WIDTH, SPLIT_COLUMN_GAP, ResponsiveSplitView, ABSOLUTE_URL_RE, appearKeyframesInjected, pressStylesInjected, REVEAL_ON_FOCUS_ATTR, 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, asFinalTextL10n, asBoundText, useBoundString, InterpolatedTextView, txt, selectFragmentCase, fragmentValueHash, fragmentSlotContent, FragmentSlotNode, RichContentEditorNode, MediaFieldNode, WorkerSubtreeNode, RichContentNode, resolveItemDeep2, resolveSwipeActions, resolveModBindings, resolvedComponentId, directServiceBindings, withRootStyle, 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, TAP_ACTIVATOR_ATTR, TAP_GROUP_ATTR, VISUALLY_HIDDEN, NAME_SKIP_SELECTOR, activatorNameObservers, ACTIVATOR_STATE_ATTRS, 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;
37336
37369
  var init_renderNode = __esm({
37337
37370
  "../../core/web-renderer/src/renderNode.tsx"() {
37338
37371
  "use strict";
@@ -37427,7 +37460,8 @@ var init_renderNode = __esm({
37427
37460
  ABSOLUTE_URL_RE = /^([a-zA-Z][a-zA-Z0-9+.-]*:|\/\/)/;
37428
37461
  appearKeyframesInjected = false;
37429
37462
  pressStylesInjected = false;
37430
- FOCUS_RING_CSS = ':where(button,a,[href],input,select,textarea,[role="button"],[tabindex]):focus-visible{outline:2px solid var(--himi-accent,#116DFF);outline-offset:2px;border-radius:4px}[data-himalaya-tap-group]:has(>[data-himalaya-tap-activator]:focus-visible){outline:2px solid var(--himi-accent,#116DFF);outline-offset:2px}';
37463
+ REVEAL_ON_FOCUS_ATTR = "data-hm-reveal-on-focus";
37464
+ FOCUS_RING_CSS = `:where(button,a,[href],input,select,textarea,[role="button"],[tabindex]):focus-visible{outline:2px solid var(--himi-accent,#116DFF);outline-offset:2px;border-radius:4px}[data-himalaya-tap-group]:has(>[data-himalaya-tap-activator]:focus-visible){outline:2px solid var(--himi-accent,#116DFF);outline-offset:2px}[${REVEAL_ON_FOCUS_ATTR}]:focus{width:auto!important;height:auto!important;margin:0!important;padding:2px 6px!important;clip:auto!important;clip-path:none!important;overflow:visible!important;top:2px;inset-inline-end:2px;z-index:2;border-radius:4px;outline:2px solid var(--himi-accent,#116DFF);outline-offset:1px}:has(>[${REVEAL_ON_FOCUS_ATTR}]:focus){overflow:visible!important;z-index:3}`;
37431
37465
  focusStylesInjected = false;
37432
37466
  HLIST_CHILD_CSS = "[data-himalaya-hlist]>*{flex:0 0 auto}";
37433
37467
  hListStylesInjected = false;
@@ -37892,6 +37926,8 @@ var init_renderNode = __esm({
37892
37926
  const fieldId = props.__formFieldId;
37893
37927
  const previousBinding = React7.useRef(binding2);
37894
37928
  const rule = props.validation ?? cfg.validation;
37929
+ const { "aria-labelledby": labelledBy } = formFieldA11y(props);
37930
+ const required3 = rule?.required === true || void 0;
37895
37931
  const ruleKey = React7.useMemo(() => rule ? JSON.stringify(rule) : "", [rule]);
37896
37932
  React7.useEffect(() => {
37897
37933
  if (!formBag || !fieldId) return;
@@ -38041,7 +38077,7 @@ var init_renderNode = __esm({
38041
38077
  /* @__PURE__ */ jsxs5("div", { style: composedBox, children: [
38042
38078
  props.leadingIcon && accIcon(props.leadingIcon),
38043
38079
  prefixText && /* @__PURE__ */ jsx8("span", { style: { color: muted, flex: "none" }, children: prefixText }),
38044
- multilineBox ? /* @__PURE__ */ jsx8("textarea", { "data-component-id": componentId, id: fieldDomId, "data-component-type": componentType, ...a11yFwd, ref: inputRef, value: local, onChange: onInput, onKeyDown, onFocus: onFieldFocus, onBlur: onFieldBlur, placeholder: placeholder2, rows: 2, "aria-label": ariaLabelProp ?? placeholderName, "aria-invalid": errored || void 0, "aria-describedby": [errorId, describedByProp].filter(Boolean).join(" ") || void 0, inputMode, autoCapitalize, maxLength, autoCorrect: suggestOff ? "off" : suggestOn ? "on" : void 0, spellCheck: suggestOff ? false : suggestOn ? true : void 0, autoComplete: suggestOff ? "off" : void 0, style: inputBase }) : /* @__PURE__ */ jsx8("input", { "data-component-id": componentId, id: htmlId, "data-component-type": componentType, ...a11yFwd, ref: inputRef, type: secure ? "password" : "text", value: local, onChange: onInput, onKeyDown, onFocus: onFieldFocus, onBlur: onFieldBlur, placeholder: placeholder2, "aria-label": ariaLabelProp ?? placeholderName, "aria-invalid": errored || void 0, "aria-describedby": [errorId, describedByProp].filter(Boolean).join(" ") || void 0, inputMode, autoCapitalize, maxLength, autoCorrect: suggestOff ? "off" : suggestOn ? "on" : void 0, spellCheck: suggestOff ? false : suggestOn ? true : void 0, autoComplete: suggestOff ? "off" : void 0, enterKeyHint, style: inputBase }),
38080
+ multilineBox ? /* @__PURE__ */ jsx8("textarea", { "data-component-id": componentId, id: fieldDomId, "data-component-type": componentType, ...a11yFwd, ref: inputRef, value: local, onChange: onInput, onKeyDown, onFocus: onFieldFocus, onBlur: onFieldBlur, placeholder: placeholder2, rows: 2, "aria-label": ariaLabelProp ?? placeholderName, "aria-labelledby": labelledBy, "aria-required": required3, "aria-invalid": errored || void 0, "aria-describedby": [errorId, describedByProp].filter(Boolean).join(" ") || void 0, inputMode, autoCapitalize, maxLength, autoCorrect: suggestOff ? "off" : suggestOn ? "on" : void 0, spellCheck: suggestOff ? false : suggestOn ? true : void 0, autoComplete: suggestOff ? "off" : void 0, style: inputBase }) : /* @__PURE__ */ jsx8("input", { "data-component-id": componentId, id: htmlId, "data-component-type": componentType, ...a11yFwd, ref: inputRef, type: secure ? "password" : "text", value: local, onChange: onInput, onKeyDown, onFocus: onFieldFocus, onBlur: onFieldBlur, placeholder: placeholder2, "aria-label": ariaLabelProp ?? placeholderName, "aria-labelledby": labelledBy, "aria-required": required3, "aria-invalid": errored || void 0, "aria-describedby": [errorId, describedByProp].filter(Boolean).join(" ") || void 0, inputMode, autoCapitalize, maxLength, autoCorrect: suggestOff ? "off" : suggestOn ? "on" : void 0, spellCheck: suggestOff ? false : suggestOn ? true : void 0, autoComplete: suggestOff ? "off" : void 0, enterKeyHint, style: inputBase }),
38045
38081
  suffixText && /* @__PURE__ */ jsx8("span", { style: { color: muted, flex: "none" }, children: suffixText }),
38046
38082
  props.clearButton && local && /* @__PURE__ */ jsx8("span", { onClick: () => {
38047
38083
  setLocal("");
@@ -38852,12 +38888,14 @@ var init_renderNode = __esm({
38852
38888
  ctx.onAction({ ...onChange, params: { ...onChange.params ?? {}, selectedId: id }, args: { ...onChange.args ?? {}, selectedId: id } });
38853
38889
  }
38854
38890
  };
38891
+ const pickerA11y = formFieldA11y(props);
38855
38892
  return /* @__PURE__ */ jsxs5(
38856
38893
  "select",
38857
38894
  {
38858
38895
  value: sel,
38859
38896
  onChange: (e) => emit(e.currentTarget.value),
38860
- "aria-label": String(placeholderText || "Select"),
38897
+ "aria-label": pickerA11y["aria-labelledby"] ? void 0 : String(placeholderText || "Select"),
38898
+ ...pickerA11y,
38861
38899
  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 },
38862
38900
  children: [
38863
38901
  props.placeholder && /* @__PURE__ */ jsx8("option", { value: "", disabled: true, children: placeholderText }),
@@ -38953,7 +38991,8 @@ var init_renderNode = __esm({
38953
38991
  onChange: (e) => emit(e.currentTarget.value),
38954
38992
  min: minUnix != null ? toInput(minUnix) : void 0,
38955
38993
  max: maxUnix != null ? toInput(maxUnix) : void 0,
38956
- "aria-label": timeMode ? "Select time" : dateTimeMode ? "Select date and time" : "Select date",
38994
+ "aria-label": formFieldA11y(props)["aria-labelledby"] ? void 0 : timeMode ? "Select time" : dateTimeMode ? "Select date and time" : "Select date",
38995
+ ...formFieldA11y(props),
38957
38996
  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 }
38958
38997
  }
38959
38998
  );
@@ -39098,7 +39137,9 @@ var init_renderNode = __esm({
39098
39137
  [A11Y_PART]: "node",
39099
39138
  role: "spinbutton",
39100
39139
  "aria-valuemin": typeof props.min === "number" ? min : void 0,
39101
- "aria-valuemax": typeof props.max === "number" ? max : void 0
39140
+ "aria-valuemax": typeof props.max === "number" ? max : void 0,
39141
+ // #3160 — inside a FormField the visible label names it, as it does every other field kind.
39142
+ ...formFieldA11y(props)
39102
39143
  };
39103
39144
  const root = { [A11Y_PART]: "root" };
39104
39145
  if (ctx.empty) {
@@ -41112,7 +41153,9 @@ var init_renderNode = __esm({
41112
41153
  const r = calMoveEvent(p.startMin, p.endMin, snapStep, snapStep);
41113
41154
  reportChange(p.ev, key2, r.startMinute, r.endMinute);
41114
41155
  },
41115
- style: { position: "absolute", width: 1, height: 1, padding: 0, margin: -1, overflow: "hidden", clip: "rect(0 0 0 0)", whiteSpace: "nowrap", border: 0 }
41156
+ ...{ [REVEAL_ON_FOCUS_ATTR]: "" },
41157
+ style: revealOnFocusStyle(C),
41158
+ children: /* @__PURE__ */ jsx8("span", { "aria-hidden": "true", children: moveLabel || "Move\u2026" })
41116
41159
  }
41117
41160
  ),
41118
41161
  /* @__PURE__ */ jsx8(
@@ -41126,7 +41169,9 @@ var init_renderNode = __esm({
41126
41169
  const r = calResizeEvent(p.startMin, p.endMin, snapStep, snapStep);
41127
41170
  reportChange(p.ev, key2, r.startMinute, r.endMinute);
41128
41171
  },
41129
- style: { position: "absolute", width: 1, height: 1, padding: 0, margin: -1, overflow: "hidden", clip: "rect(0 0 0 0)", whiteSpace: "nowrap", border: 0 }
41172
+ ...{ [REVEAL_ON_FOCUS_ATTR]: "" },
41173
+ style: revealOnFocusStyle(C),
41174
+ children: /* @__PURE__ */ jsx8("span", { "aria-hidden": "true", children: resizeLabel || "Change time\u2026" })
41130
41175
  }
41131
41176
  ),
41132
41177
  /* @__PURE__ */ jsx8(
@@ -62641,21 +62686,21 @@ var init_preview_assets_generated = __esm({
62641
62686
  "../../packages/serve/src/preview-assets.generated.ts"() {
62642
62687
  init_preview_assets_format();
62643
62688
  PREVIEW_ASSET_MANIFEST = [
62644
- { key: "assets/index-C7Hu2ZVY.js", contentType: "application/javascript; charset=utf-8", offset: 8, length: 1184477, sha256: "467121778a7bc69ac19ec6c77f6f2ca7ea80d7fc2915e8981ba0219b5c2fe61d" },
62645
- { key: "fonts/Roboto-LICENSE.txt", contentType: "application/octet-stream", offset: 1184485, length: 4610, sha256: "994062dd7af4186a739de55dd9e151c63b6301f8e2cbafc608d35c2e87da0cd2" },
62646
- { key: "fonts/Roboto-Variable.ttf", contentType: "font/ttf", offset: 1189095, length: 488584, sha256: "d7598e12c5dbef095ff8272cfc55da0250bd07fbdecbac8a530b9b277872a134" },
62647
- { key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset: 1677679, length: 90924, sha256: "ec4c7d63772d980d6e147b2df6215fd2737e4b04cebe0cf7e11dc695fb63cdcf" },
62648
- { key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset: 1768603, length: 90984, sha256: "bf4c16a2774edd38a921edf3099469866cd74c094fd596f3fa4e81f54a04dfaa" },
62649
- { key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset: 1859587, length: 90980, sha256: "368faca44fb9f7207e4af784e94750b1ee59c1098b8689e0f4a918926f244fb5" },
62650
- { key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset: 1950567, length: 90872, sha256: "97ed8f1a6772abe26e3d8af5cecfc4b02faa94497d585b0398b5053b739a70c1" },
62651
- { key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset: 2041439, length: 90980, sha256: "642feab8a48ddf6c7a89d7c2a7c0edfa0e6e773f671287e460e222703563191e" },
62652
- { key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset: 2132419, length: 108636, sha256: "37c179b4fefb63ea9637322b84583a2df53aa226c150294eea1675c14b1b8e29" },
62653
- { key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset: 2241055, length: 109084, sha256: "62e2fe4718129f36ecdb0ae4de385bd6b81ecc876146447167c6c140fad699a9" },
62654
- { key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset: 2350139, length: 109048, sha256: "4ecf270136af928612c76fe4ebade91d8156975e5ea4c0cf9225501dd1788e02" },
62655
- { key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset: 2459187, length: 107700, sha256: "dee56f09fd3efc127c1ea95557edc74110c1460a46287da36e0af25efd341ef5" },
62656
- { key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset: 2566887, length: 88108, sha256: "dced97a77624bc5f8b1ae65850360908297f4588e09feb6f22792d29dc7e765b" },
62657
- { key: "index.html", contentType: "text/html; charset=utf-8", offset: 2654995, length: 4947, sha256: "b6f3f19b28b680a734bcf73bfb6e3690e478affe9f3c10a3c5c5d8f3e674c9b0" },
62658
- { key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset: 2659942, length: 17344, sha256: "d057298d75e7373e5e2c4d11b7d1bcbea88e03af555ba63d97641c78509c58e4" }
62689
+ { key: "assets/index-C7Pn97oj.js", contentType: "application/javascript; charset=utf-8", offset: 8, length: 1185822, sha256: "4627e2da1c482ae73294a2fc4500dcaa5074cd38e53a28e60af2093c6951a221" },
62690
+ { key: "fonts/Roboto-LICENSE.txt", contentType: "application/octet-stream", offset: 1185830, length: 4610, sha256: "994062dd7af4186a739de55dd9e151c63b6301f8e2cbafc608d35c2e87da0cd2" },
62691
+ { key: "fonts/Roboto-Variable.ttf", contentType: "font/ttf", offset: 1190440, length: 488584, sha256: "d7598e12c5dbef095ff8272cfc55da0250bd07fbdecbac8a530b9b277872a134" },
62692
+ { key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset: 1679024, length: 90924, sha256: "ec4c7d63772d980d6e147b2df6215fd2737e4b04cebe0cf7e11dc695fb63cdcf" },
62693
+ { key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset: 1769948, length: 90984, sha256: "bf4c16a2774edd38a921edf3099469866cd74c094fd596f3fa4e81f54a04dfaa" },
62694
+ { key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset: 1860932, length: 90980, sha256: "368faca44fb9f7207e4af784e94750b1ee59c1098b8689e0f4a918926f244fb5" },
62695
+ { key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset: 1951912, length: 90872, sha256: "97ed8f1a6772abe26e3d8af5cecfc4b02faa94497d585b0398b5053b739a70c1" },
62696
+ { key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset: 2042784, length: 90980, sha256: "642feab8a48ddf6c7a89d7c2a7c0edfa0e6e773f671287e460e222703563191e" },
62697
+ { key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset: 2133764, length: 108636, sha256: "37c179b4fefb63ea9637322b84583a2df53aa226c150294eea1675c14b1b8e29" },
62698
+ { key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset: 2242400, length: 109084, sha256: "62e2fe4718129f36ecdb0ae4de385bd6b81ecc876146447167c6c140fad699a9" },
62699
+ { key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset: 2351484, length: 109048, sha256: "4ecf270136af928612c76fe4ebade91d8156975e5ea4c0cf9225501dd1788e02" },
62700
+ { key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset: 2460532, length: 107700, sha256: "dee56f09fd3efc127c1ea95557edc74110c1460a46287da36e0af25efd341ef5" },
62701
+ { key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset: 2568232, length: 88108, sha256: "dced97a77624bc5f8b1ae65850360908297f4588e09feb6f22792d29dc7e765b" },
62702
+ { key: "index.html", contentType: "text/html; charset=utf-8", offset: 2656340, length: 4947, sha256: "6ec471f6243aa4ca8b798a33521c421bb87f22ea06ac184690d1d3d9054b6187" },
62703
+ { key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset: 2661287, length: 17344, sha256: "d057298d75e7373e5e2c4d11b7d1bcbea88e03af555ba63d97641c78509c58e4" }
62659
62704
  ];
62660
62705
  }
62661
62706
  });
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wix/himalaya-cli",
3
- "version": "0.1214.0",
3
+ "version": "0.1215.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": [
@@ -67,5 +67,5 @@
67
67
  "artifactId": "himalaya-cli"
68
68
  }
69
69
  },
70
- "falconPackageHash": "4665b1c60527def192c75337a09421d697bbdd3949d74c93be76a087"
70
+ "falconPackageHash": "ba6e51d93c561edb1aa2de10154bdd5848f7cb971441ea81f6876de7"
71
71
  }