@wix/himalaya-cli 0.977.0 → 0.979.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/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/ts/src/define-app.d.ts +12 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/ts/src/launch-manifest.d.ts +0 -1
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/ts/src/push-routes.d.ts +74 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/core.mjs +1 -2
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/sdui.mjs +1 -2
- package/dist/cli.mjs +55 -26
- package/dist/preview-assets.generated.bin +0 -0
- package/guides/designing-himi-screens.md +4 -1
- package/package.json +2 -2
package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/ts/src/define-app.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { DesignTokens } from "./tokens.js";
|
|
2
|
+
import type { PushRoute, PushPayloadAdapter } from "./push-routes.js";
|
|
2
3
|
import type { NavigationConfig, SplashConfig } from "./schema.js";
|
|
3
4
|
import { type LocaleConfig } from "./locale.js";
|
|
4
5
|
import { type DistributionConfig } from "./distribution.js";
|
|
@@ -6,6 +7,7 @@ import type { CmsConfig } from "./cms.js";
|
|
|
6
7
|
import { type DataResourcesConfig } from "@wix/himalaya/data-resources";
|
|
7
8
|
import type { FunctionDefinition, FunctionScheduleRecord } from "@himalaya/functions";
|
|
8
9
|
export type { CmsConfig, CmsCollectionSpec, CmsFieldSpec, WixFieldType } from "./cms.js";
|
|
10
|
+
export type { PushRoute, PushPayloadAdapter };
|
|
9
11
|
export type { DataResourcesConfig, KvSpec, ResourceEnvironment, ResourceScope } from "@wix/himalaya/data-resources";
|
|
10
12
|
export { WIX_FIELD_TYPES } from "./cms.js";
|
|
11
13
|
/** Wix site/environment binding used by the server-function surface. */
|
|
@@ -445,6 +447,16 @@ export interface PushConfig {
|
|
|
445
447
|
richTemplates?: RichTemplate[];
|
|
446
448
|
/** Prompt for the OS notification permission on first launch. */
|
|
447
449
|
requestPermissionOnLaunch?: boolean;
|
|
450
|
+
/** Notification route table. Derive these from the app's own contract rather than
|
|
451
|
+
* hand-listing them, so a route can never target a screen the provisioned app
|
|
452
|
+
* does not have. Honoured by iOS + Android; the web host has no push transport. */
|
|
453
|
+
routes?: PushRoute[];
|
|
454
|
+
payloadAdapter?: PushPayloadAdapter;
|
|
455
|
+
/** A `tier5.<service>.<action>` dispatched on EVERY notification — receipt or tap
|
|
456
|
+
* — so a worker can keep a badge count or refresh a feed without navigating. It
|
|
457
|
+
* receives `templateId`, `topic`, `metaSiteId`, `notificationId`, `link`,
|
|
458
|
+
* `resolvedLink` and `tapped` (all as strings, the dispatch bridge's contract). */
|
|
459
|
+
observerAction?: string;
|
|
448
460
|
}
|
|
449
461
|
export type IapProductType = "subscription" | "nonConsumable" | "consumable";
|
|
450
462
|
export interface IapProduct {
|
package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/ts/src/push-routes.d.ts
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How a payload link is stripped down to the residual path+query `routes` match
|
|
3
|
+
* against. An UNKNOWN value passes the link through unchanged rather than failing, so
|
|
4
|
+
* an older binary served a newer adapter degrades instead of dropping every
|
|
5
|
+
* notification (invariants 6/8).
|
|
6
|
+
*/
|
|
7
|
+
export type PushPayloadAdapter = "" | "wix-ping";
|
|
8
|
+
/**
|
|
9
|
+
* One notification-routing rule. Mirrors `PushRoute` in core.proto / Schema.swift /
|
|
10
|
+
* Schema.kt, and is re-exported from `define-app` as part of the authoring surface —
|
|
11
|
+
* defined HERE, once, next to the matcher that consumes it.
|
|
12
|
+
*
|
|
13
|
+
* Routes translate a FOREIGN link space (the Wix mobile links Ping delivers) into this
|
|
14
|
+
* app's own, in front of the existing resolver — never beside it. No match leaves the
|
|
15
|
+
* link untouched, which is why an app declaring no routes behaves exactly as it did
|
|
16
|
+
* before they existed.
|
|
17
|
+
*/
|
|
18
|
+
export interface PushRoute {
|
|
19
|
+
/** WIX-link-space pattern over the residual path+query, in the same grammar as
|
|
20
|
+
* `deepLinkPatterns`: `"orders/?orderId=:orderId"`. */
|
|
21
|
+
match: string;
|
|
22
|
+
/** The himi link to resolve instead, with `{name}` placeholders filled from the
|
|
23
|
+
* captured params: `"<scheme>://screen/himi_order?id={orderId}"`. May instead name
|
|
24
|
+
* a `tier5.*` action, which dispatches to a worker rather than navigating. */
|
|
25
|
+
link: string;
|
|
26
|
+
/** Optional EXTRA conditions on the Ping payload. Omitted ⇒ unconstrained, so one
|
|
27
|
+
* link space can fan out by template or topic. */
|
|
28
|
+
templateId?: string;
|
|
29
|
+
topic?: string;
|
|
30
|
+
}
|
|
31
|
+
/** The payload facts a route may additionally condition on. */
|
|
32
|
+
export interface PushPayloadContext {
|
|
33
|
+
templateId?: string;
|
|
34
|
+
topic?: string;
|
|
35
|
+
}
|
|
36
|
+
/** What an adapter made of a payload link. */
|
|
37
|
+
export interface AdaptedLink {
|
|
38
|
+
/** Residual path+query the routes match against, with no leading slash. */
|
|
39
|
+
residual: string;
|
|
40
|
+
/** The site the payload named, when it named one. */
|
|
41
|
+
metaSiteId?: string;
|
|
42
|
+
/** False when the adapter did not recognize the link and passed it through. */
|
|
43
|
+
adapted: boolean;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Strip a payload link down to the residual path+query a route matches against.
|
|
47
|
+
*
|
|
48
|
+
* `adapter` is `""` (pass through) or `"wix-ping"`. An UNKNOWN adapter passes the
|
|
49
|
+
* link through unchanged rather than failing, so an older binary served a config
|
|
50
|
+
* naming an adapter it has never heard of degrades to today's behavior instead of
|
|
51
|
+
* dropping every notification (invariants 6/8).
|
|
52
|
+
*/
|
|
53
|
+
export declare function adaptPayloadLink(link: string, adapter?: string): AdaptedLink;
|
|
54
|
+
/**
|
|
55
|
+
* The himi link the first matching route produces, or null when nothing matches.
|
|
56
|
+
*
|
|
57
|
+
* Null means "resolve the input unchanged" to the caller — never "give up" — which
|
|
58
|
+
* is what keeps an app that declares no routes behaving exactly as it did before.
|
|
59
|
+
* Rules are tried in declaration order, so a more specific rule goes first.
|
|
60
|
+
*/
|
|
61
|
+
export declare function matchPushRoute(residual: string, routes: readonly PushRoute[] | undefined, payload?: PushPayloadContext): string | null;
|
|
62
|
+
/**
|
|
63
|
+
* Adapt + match in one step: the himi link to resolve instead of `link`, the params
|
|
64
|
+
* the route captured, and the site the payload named. `link` is null when no route
|
|
65
|
+
* matched.
|
|
66
|
+
*/
|
|
67
|
+
export declare function resolvePushRoute(link: string, config: {
|
|
68
|
+
routes?: readonly PushRoute[];
|
|
69
|
+
payloadAdapter?: string;
|
|
70
|
+
} | undefined, payload?: PushPayloadContext): {
|
|
71
|
+
link: string | null;
|
|
72
|
+
params: Record<string, string>;
|
|
73
|
+
metaSiteId?: string;
|
|
74
|
+
};
|
|
@@ -9715,8 +9715,7 @@ var LAUNCH_MANIFEST_SCHEMA = {
|
|
|
9715
9715
|
locale: { type: "string" },
|
|
9716
9716
|
region: { type: "string" },
|
|
9717
9717
|
colorScheme: { type: "string", enum: ["light", "dark"] },
|
|
9718
|
-
layoutDirection: { type: "string", enum: ["ltr", "rtl"] }
|
|
9719
|
-
fontScale: { type: "number" }
|
|
9718
|
+
layoutDirection: { type: "string", enum: ["ltr", "rtl"] }
|
|
9720
9719
|
}),
|
|
9721
9720
|
determinism: directiveObject({
|
|
9722
9721
|
freezeClock: { type: "string" },
|
|
@@ -7766,8 +7766,7 @@ var LAUNCH_MANIFEST_SCHEMA = {
|
|
|
7766
7766
|
locale: { type: "string" },
|
|
7767
7767
|
region: { type: "string" },
|
|
7768
7768
|
colorScheme: { type: "string", enum: ["light", "dark"] },
|
|
7769
|
-
layoutDirection: { type: "string", enum: ["ltr", "rtl"] }
|
|
7770
|
-
fontScale: { type: "number" }
|
|
7769
|
+
layoutDirection: { type: "string", enum: ["ltr", "rtl"] }
|
|
7771
7770
|
}),
|
|
7772
7771
|
determinism: directiveObject({
|
|
7773
7772
|
freezeClock: { type: "string" },
|
package/dist/cli.mjs
CHANGED
|
@@ -17754,8 +17754,10 @@ function makeTokenResolvers(tokens, scheme) {
|
|
|
17754
17754
|
};
|
|
17755
17755
|
const font = (style = "body") => {
|
|
17756
17756
|
const t = tokens.typography?.[style] ?? tokens.fonts?.[style] ?? tokens.typography?.body ?? tokens.fonts?.body;
|
|
17757
|
+
const size = t?.size ?? 14;
|
|
17757
17758
|
return {
|
|
17758
|
-
size
|
|
17759
|
+
size,
|
|
17760
|
+
remSize: pxToRem(size),
|
|
17759
17761
|
weight: t?.weight ?? 400,
|
|
17760
17762
|
line: t?.line ?? 1.4,
|
|
17761
17763
|
family: t?.family,
|
|
@@ -17869,9 +17871,11 @@ function makeTokenResolvers(tokens, scheme) {
|
|
|
17869
17871
|
scheme
|
|
17870
17872
|
};
|
|
17871
17873
|
}
|
|
17872
|
-
var DEFAULT_FONT_STACK, SERIF_FAMILY_RE;
|
|
17874
|
+
var REM_ROOT_PX, pxToRem, DEFAULT_FONT_STACK, SERIF_FAMILY_RE;
|
|
17873
17875
|
var init_tokens2 = __esm({
|
|
17874
17876
|
"../../core/web-renderer/src/tokens.ts"() {
|
|
17877
|
+
REM_ROOT_PX = 16;
|
|
17878
|
+
pxToRem = (px) => `${px / REM_ROOT_PX}rem`;
|
|
17875
17879
|
DEFAULT_FONT_STACK = '"Wix Madefor Text", system-ui';
|
|
17876
17880
|
SERIF_FAMILY_RE = /\b(georgia|times|garamond|palatino|baskerville|didot|charter|bodoni|caslon|cambria|constantia|rockwell|playfair|merriweather|lora|literata|spectral|serif)\b/i;
|
|
17877
17881
|
}
|
|
@@ -23789,7 +23793,7 @@ function renderInner(node, ctx) {
|
|
|
23789
23793
|
return /* @__PURE__ */ jsx6("div", { style: { fontFamily: bodyFont(ctx), lineHeight: 1.5, overflowWrap: "break-word", color: C(resolveScalarStatic(props.color, ctx) ?? "textPrimary", "#13171e"), ...wrap }, children: runs.map((r, i) => {
|
|
23790
23794
|
const marks = Array.isArray(r.marks) ? r.marks : [];
|
|
23791
23795
|
const f = ctx.font(r.style);
|
|
23792
|
-
return /* @__PURE__ */ jsx6("span", { style: { fontSize: f.
|
|
23796
|
+
return /* @__PURE__ */ jsx6("span", { style: { fontSize: f.remSize, fontWeight: marks.includes("bold") ? 700 : f.weight, fontStyle: marks.includes("italic") ? "italic" : void 0, textDecoration: marks.includes("underline") ? "underline" : void 0, ...f.family ? { fontFamily: fontStack(f.family) } : {}, ...r.color ? { color: C(r.color) } : {}, ...marks.includes("code") ? { fontFamily: "ui-monospace, monospace", background: C("surfaceTertiary", "#eee"), padding: "1px 5px", borderRadius: 4 } : {} }, children: txt(r.text, ctx) }, i);
|
|
23793
23797
|
}) });
|
|
23794
23798
|
}
|
|
23795
23799
|
case "Image":
|
|
@@ -23830,8 +23834,8 @@ function renderInner(node, ctx) {
|
|
|
23830
23834
|
props.leading && /* @__PURE__ */ jsx6("div", { style: { flex: "none", display: "flex" }, children: renderNode(props.leading, ctx) }),
|
|
23831
23835
|
/* @__PURE__ */ jsxs3("div", { style: { flex: 1, minWidth: 0, display: "flex", flexDirection: "column", gap: 2 }, children: [
|
|
23832
23836
|
props.overline != null && /* @__PURE__ */ jsx6("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) }),
|
|
23833
|
-
/* @__PURE__ */ jsx6("span", { style: { fontFamily: fontStack(titleF.family), fontSize: titleF.
|
|
23834
|
-
props.subtitle != null && /* @__PURE__ */ jsx6("span", { style: { fontFamily: fontStack(subF.family), fontSize: subF.
|
|
23837
|
+
/* @__PURE__ */ jsx6("span", { style: { fontFamily: fontStack(titleF.family), fontSize: titleF.remSize, fontWeight: titleF.weight, color: C(props.titleColor ?? "textPrimary", "#13171e"), ...ell }, children: txt(props.title, ctx) ?? (ctx.empty ? "" : "") }),
|
|
23838
|
+
props.subtitle != null && /* @__PURE__ */ jsx6("span", { style: { fontFamily: fontStack(subF.family), fontSize: subF.remSize, color: C(props.subtitleColor ?? "textSecondary", "#888"), ...ell }, children: txt(props.subtitle, ctx) })
|
|
23835
23839
|
] }),
|
|
23836
23840
|
props.trailing ? (
|
|
23837
23841
|
// #1010 — the row's `onTap` lives on the outer flex div, and the trailing
|
|
@@ -23897,7 +23901,7 @@ function renderInner(node, ctx) {
|
|
|
23897
23901
|
case "Label": {
|
|
23898
23902
|
const f = ctx.font(props.style ?? "body");
|
|
23899
23903
|
const col = C(resolveScalarStatic(props.color, ctx) ?? "textPrimary", "#13171e");
|
|
23900
|
-
return /* @__PURE__ */ jsxs3("span", { style: { display: "inline-flex", alignItems: "center", gap: 6, fontFamily: fontStack(f.family), fontSize: f.
|
|
23904
|
+
return /* @__PURE__ */ jsxs3("span", { style: { display: "inline-flex", alignItems: "center", gap: 6, fontFamily: fontStack(f.family), fontSize: f.remSize, fontWeight: f.weight, color: col, ...wrap }, children: [
|
|
23901
23905
|
props.icon && /* @__PURE__ */ jsx6("span", { style: { display: "inline-grid", placeItems: "center", width: f.size, height: f.size }, children: iconSvg(props.icon, { size: f.size, color: col }) }),
|
|
23902
23906
|
txt(props.text, ctx)
|
|
23903
23907
|
] });
|
|
@@ -23926,7 +23930,7 @@ function renderInner(node, ctx) {
|
|
|
23926
23930
|
ensureMarqueeKeyframes();
|
|
23927
23931
|
const f = ctx.font(props.style ?? "body");
|
|
23928
23932
|
const dur = props.durationMs ?? 8e3;
|
|
23929
|
-
return /* @__PURE__ */ jsx6("div", { style: { width: "100%", overflow: "hidden", whiteSpace: "nowrap", ...wrap }, children: /* @__PURE__ */ jsx6("span", { style: { display: "inline-block", paddingLeft: "100%", fontFamily: fontStack(f.family), fontSize: f.
|
|
23933
|
+
return /* @__PURE__ */ jsx6("div", { style: { width: "100%", overflow: "hidden", whiteSpace: "nowrap", ...wrap }, children: /* @__PURE__ */ jsx6("span", { style: { display: "inline-block", paddingLeft: "100%", fontFamily: fontStack(f.family), fontSize: f.remSize, color: C(resolveScalarStatic(props.color, ctx) ?? "textPrimary", "#13171e"), animation: ctx.empty ? void 0 : `himalaya-marquee ${dur}ms linear infinite` }, children: txt(props.text, ctx) }) });
|
|
23930
23934
|
}
|
|
23931
23935
|
case "Timeline":
|
|
23932
23936
|
return /* @__PURE__ */ jsx6(TimelineNode, { props, ctx, wrap });
|
|
@@ -25778,8 +25782,8 @@ var init_renderNode = __esm({
|
|
|
25778
25782
|
const content = countContent != null ? countContent : icuPattern != null ? /* @__PURE__ */ jsx6(InterpolatedTextView, { pattern: icuPattern, params: props.template?.params ?? {}, ctx }) : mdSource != null ? /* @__PURE__ */ jsx6("span", { dangerouslySetInnerHTML: mdInline(mdSource) }) : txt(props.text, ctx);
|
|
25779
25783
|
const tAlign = props.textAlign === "center" ? "center" : props.textAlign === "trailing" ? "right" : props.textAlign === "justify" ? "justify" : props.textAlign === "leading" ? "left" : void 0;
|
|
25780
25784
|
const tDecor = props.decoration === "strikethrough" ? "line-through" : props.decoration === "underline" ? "underline" : void 0;
|
|
25781
|
-
const ln = typeof props.lineSpacing === "number" ?
|
|
25782
|
-
return /* @__PURE__ */ jsx6("div", { ...countAttrs, style: { fontFamily: fontStack(f.family), fontSize: f.
|
|
25785
|
+
const ln = typeof props.lineSpacing === "number" ? pxToRem((f.line ?? 1.4) * f.size + props.lineSpacing) : f.line;
|
|
25786
|
+
return /* @__PURE__ */ jsx6("div", { ...countAttrs, style: { fontFamily: fontStack(f.family), fontSize: f.remSize, fontWeight: f.weight, lineHeight: ln, letterSpacing: f.letterSpacing, color: C(resolveScalarStatic(props.color, ctx) ?? "textPrimary", "#13171e"), whiteSpace: "pre-wrap", overflowWrap: "anywhere", wordBreak: "break-word", minWidth: 0, ...tAlign ? { textAlign: tAlign } : {}, ...tDecor ? { textDecoration: tDecor } : {}, ...props.maxLines ? { display: "-webkit-box", WebkitLineClamp: props.maxLines, WebkitBoxOrient: "vertical", overflow: "hidden" } : {}, ...wrap }, children: content == null || content === "" ? collapse ? null : "\xA0" : content });
|
|
25783
25787
|
});
|
|
25784
25788
|
ImageNode = withExtras("ImageNode", ({ props, ctx, wrap }) => {
|
|
25785
25789
|
const C = ctx.color;
|
|
@@ -25923,7 +25927,7 @@ var init_renderNode = __esm({
|
|
|
25923
25927
|
borderRadius: props.iconOnly ? "50%" : pillRadius,
|
|
25924
25928
|
fontFamily: fontStack(f.family),
|
|
25925
25929
|
fontWeight: f.weight,
|
|
25926
|
-
fontSize: f.
|
|
25930
|
+
fontSize: f.remSize,
|
|
25927
25931
|
background: primary ? accent : "transparent",
|
|
25928
25932
|
color: fg,
|
|
25929
25933
|
border: outlined ? `1px solid ${accent}` : "none",
|
|
@@ -26073,7 +26077,7 @@ var init_renderNode = __esm({
|
|
|
26073
26077
|
const capF = ctx.font("caption");
|
|
26074
26078
|
return /* @__PURE__ */ jsx6("div", { style: { display: "inline-flex", flexDirection: "column", alignItems: "center", gap: 4, ...wrap }, children: /* @__PURE__ */ jsxs3("div", { style: { position: "relative", width: 72, height: 72 }, children: [
|
|
26075
26079
|
/* @__PURE__ */ jsx6("div", { style: { width: 72, height: 72, borderRadius: "50%", background: `conic-gradient(${tint} ${pct * 360}deg, ${track} 0deg)`, WebkitMask: ringMask, mask: ringMask, ...gaugeAnim } }),
|
|
26076
|
-
/* @__PURE__ */ jsx6("div", { style: { position: "absolute", inset: 0, display: "grid", placeItems: "center", fontFamily: fontStack(capF.family), fontSize: capF.
|
|
26080
|
+
/* @__PURE__ */ jsx6("div", { style: { position: "absolute", inset: 0, display: "grid", placeItems: "center", fontFamily: fontStack(capF.family), fontSize: capF.remSize, fontWeight: capF.weight, color: C("textPrimary", "#13171e") }, children: txt(props.label, ctx) || `${Math.round(pct * 100)}%` })
|
|
26077
26081
|
] }) });
|
|
26078
26082
|
});
|
|
26079
26083
|
RatingNode = withExtras("RatingNode", ({ props, ctx, wrap }) => {
|
|
@@ -28801,8 +28805,7 @@ var init_launch_manifest = __esm({
|
|
|
28801
28805
|
locale: { type: "string" },
|
|
28802
28806
|
region: { type: "string" },
|
|
28803
28807
|
colorScheme: { type: "string", enum: ["light", "dark"] },
|
|
28804
|
-
layoutDirection: { type: "string", enum: ["ltr", "rtl"] }
|
|
28805
|
-
fontScale: { type: "number" }
|
|
28808
|
+
layoutDirection: { type: "string", enum: ["ltr", "rtl"] }
|
|
28806
28809
|
}),
|
|
28807
28810
|
determinism: directiveObject({
|
|
28808
28811
|
freezeClock: { type: "string" },
|
|
@@ -37481,6 +37484,7 @@ async function navIssues(dir, strict) {
|
|
|
37481
37484
|
}
|
|
37482
37485
|
}
|
|
37483
37486
|
const nav = cfg.navigation;
|
|
37487
|
+
pushRouteIssues(cfg.push, nav, warn);
|
|
37484
37488
|
if (nav === void 0 || nav === null) return issues;
|
|
37485
37489
|
if (!isPlainObject(nav)) {
|
|
37486
37490
|
error("nav-not-an-object", `navigation must be an object (got ${Array.isArray(nav) ? "array" : typeof nav}).`);
|
|
@@ -37548,6 +37552,31 @@ async function navIssues(dir, strict) {
|
|
|
37548
37552
|
}
|
|
37549
37553
|
return issues;
|
|
37550
37554
|
}
|
|
37555
|
+
function pushRouteIssues(push, nav, warn) {
|
|
37556
|
+
if (!isPlainObject(push) || push.payloadAdapter !== "wix-ping") return;
|
|
37557
|
+
const routes = Array.isArray(push.routes) ? push.routes.filter(isPlainObject) : [];
|
|
37558
|
+
if (routes.length === 0) {
|
|
37559
|
+
warn(
|
|
37560
|
+
"push-routes-missing",
|
|
37561
|
+
`push.payloadAdapter is "wix-ping" but push.routes is empty \u2014 Wix business-event links cannot map to app screens. Direct Himi screen links still work. Declare a route per business-event link the site sends, e.g. { match: "my-account/:site/stores/orders/:orderId", link: "<scheme>://screen/<order screen>?id={orderId}" }.`
|
|
37562
|
+
);
|
|
37563
|
+
return;
|
|
37564
|
+
}
|
|
37565
|
+
const linkables = isPlainObject(nav) ? nav.linkableScreens : void 0;
|
|
37566
|
+
if (!Array.isArray(linkables)) return;
|
|
37567
|
+
const declared = new Set(
|
|
37568
|
+
linkables.filter(isPlainObject).map((s) => String(s.screenId ?? ""))
|
|
37569
|
+
);
|
|
37570
|
+
for (const route of routes) {
|
|
37571
|
+
const screenId = /:\/\/screen\/([^?]+)/.exec(String(route.link ?? ""))?.[1];
|
|
37572
|
+
if (screenId && !declared.has(screenId)) {
|
|
37573
|
+
warn(
|
|
37574
|
+
"push-route-unknown-screen",
|
|
37575
|
+
`push.routes: "${String(route.match)}" opens "${screenId}", which navigation.linkableScreens does not declare \u2014 the device cannot resolve it, so the notification opens nothing.`
|
|
37576
|
+
);
|
|
37577
|
+
}
|
|
37578
|
+
}
|
|
37579
|
+
}
|
|
37551
37580
|
var NAVIGATION_KEYS, NAV_KINDS, ITEMS_BLOCKS, SERVED_ONLY_NAV_KEYS, MISPLACED_TOP_LEVEL_KEYS, isPlainObject, itemCount;
|
|
37552
37581
|
var init_nav_lint = __esm({
|
|
37553
37582
|
"src/nav-lint.ts"() {
|
|
@@ -43594,19 +43623,19 @@ var init_preview_assets_generated = __esm({
|
|
|
43594
43623
|
"../../packages/serve/src/preview-assets.generated.ts"() {
|
|
43595
43624
|
init_preview_assets_format();
|
|
43596
43625
|
PREVIEW_ASSET_MANIFEST = [
|
|
43597
|
-
{ key: "assets/index-
|
|
43598
|
-
{ key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset:
|
|
43599
|
-
{ key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset:
|
|
43600
|
-
{ key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset:
|
|
43601
|
-
{ key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset:
|
|
43602
|
-
{ key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset:
|
|
43603
|
-
{ key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset:
|
|
43604
|
-
{ key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset:
|
|
43605
|
-
{ key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset:
|
|
43606
|
-
{ key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset:
|
|
43607
|
-
{ key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset:
|
|
43608
|
-
{ key: "index.html", contentType: "text/html; charset=utf-8", offset:
|
|
43609
|
-
{ key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset:
|
|
43626
|
+
{ key: "assets/index-EUz_f6yu.js", contentType: "application/javascript; charset=utf-8", offset: 8, length: 987137, sha256: "7b526f22885a0dfed16aa63cc802e4d17c3565e78ba5a8a873bcb111ffe1a076" },
|
|
43627
|
+
{ key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset: 987145, length: 90924, sha256: "ec4c7d63772d980d6e147b2df6215fd2737e4b04cebe0cf7e11dc695fb63cdcf" },
|
|
43628
|
+
{ key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset: 1078069, length: 90984, sha256: "bf4c16a2774edd38a921edf3099469866cd74c094fd596f3fa4e81f54a04dfaa" },
|
|
43629
|
+
{ key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset: 1169053, length: 90980, sha256: "368faca44fb9f7207e4af784e94750b1ee59c1098b8689e0f4a918926f244fb5" },
|
|
43630
|
+
{ key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset: 1260033, length: 90872, sha256: "97ed8f1a6772abe26e3d8af5cecfc4b02faa94497d585b0398b5053b739a70c1" },
|
|
43631
|
+
{ key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset: 1350905, length: 90980, sha256: "642feab8a48ddf6c7a89d7c2a7c0edfa0e6e773f671287e460e222703563191e" },
|
|
43632
|
+
{ key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset: 1441885, length: 108636, sha256: "37c179b4fefb63ea9637322b84583a2df53aa226c150294eea1675c14b1b8e29" },
|
|
43633
|
+
{ key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset: 1550521, length: 109084, sha256: "62e2fe4718129f36ecdb0ae4de385bd6b81ecc876146447167c6c140fad699a9" },
|
|
43634
|
+
{ key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset: 1659605, length: 109048, sha256: "4ecf270136af928612c76fe4ebade91d8156975e5ea4c0cf9225501dd1788e02" },
|
|
43635
|
+
{ key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset: 1768653, length: 107700, sha256: "dee56f09fd3efc127c1ea95557edc74110c1460a46287da36e0af25efd341ef5" },
|
|
43636
|
+
{ key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset: 1876353, length: 88108, sha256: "dced97a77624bc5f8b1ae65850360908297f4588e09feb6f22792d29dc7e765b" },
|
|
43637
|
+
{ key: "index.html", contentType: "text/html; charset=utf-8", offset: 1964461, length: 4448, sha256: "78be80518ed0f28fbf085b806c0d4ef5ec796da109a3f2f257f4ee31e1c01214" },
|
|
43638
|
+
{ key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset: 1968909, length: 13784, sha256: "cfb9465254fab84f0e084bb4542c282758ea29774b5f172840cc0b9e4194ef89" }
|
|
43610
43639
|
];
|
|
43611
43640
|
}
|
|
43612
43641
|
});
|
|
Binary file
|
|
@@ -363,7 +363,10 @@ nicety. Don't animate everything: if every element moves, nothing reads as impor
|
|
|
363
363
|
- **Contrast** comes from the token roles — pair `textPrimary`/`textSecondary` with the right surface,
|
|
364
364
|
and provide the `highContrast` scheme value for load-bearing colors.
|
|
365
365
|
- **Reduced motion** — §6.
|
|
366
|
-
- **Dynamic type** — size text via typography tokens
|
|
366
|
+
- **Dynamic type** — size text via typography tokens rather than fixed sizes. Every token path now
|
|
367
|
+
honours the OS text-size setting: iOS scales through `UIFontMetrics` (system and variable-font arms
|
|
368
|
+
included, not only branded `Font.custom`), Android emits `sp`, and web emits `rem`. A raw pixel size
|
|
369
|
+
bypasses all three and will not grow when the user enlarges text.
|
|
367
370
|
- **RTL** — §2.
|
|
368
371
|
|
|
369
372
|
---
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wix/himalaya-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.979.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": [
|
|
@@ -64,5 +64,5 @@
|
|
|
64
64
|
"artifactId": "himalaya-cli"
|
|
65
65
|
}
|
|
66
66
|
},
|
|
67
|
-
"falconPackageHash": "
|
|
67
|
+
"falconPackageHash": "16761478845899a9ba0931eb0a135cf4d6e5d8909a3ad2899152b122"
|
|
68
68
|
}
|