@wix/himalaya-cli 0.1397.0 → 0.1399.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/serve-runtime/src/wix-bridge.d.ts +30 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/ts/src/icon-catalog.generated.d.ts +1 -1
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/ts/src/schema.d.ts +2 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/ts/src/validation.d.ts +1 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/auth/src/copy.generated.d.ts +109 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/auth/src/feedback.d.ts +15 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/auth/src/index.d.ts +3 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/screens/src/index.d.ts +44 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/auth.mjs +304 -18
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/core/validation.mjs +1 -1
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/core.mjs +72 -1
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/screens.mjs +377 -20
- package/dist/cli.mjs +983 -342
- package/dist/preview-assets.generated.bin +0 -0
- package/guides/component-reference.json +1 -1
- package/guides/component-reference.md +2 -0
- package/guides/headless-loop.md +1 -1
- package/guides/importable-sdks.md +2 -1
- package/guides/one-app-to-himi-app.md +30 -0
- package/guides/one-app-viewer.md +8 -1
- package/guides/sdk-reference.json +92 -1
- package/package.json +2 -2
- package/templates/beauty-salon/dev/index.ts +41 -1
- package/templates/beauty-salon/tier5-src/himi-store-account/index.ts +90 -76
- package/templates/beauty-salon-owner/dev/index.ts +304 -7
- package/templates/beauty-salon-owner/tier5-src/_shared/aria-chat.ts +39 -33
- package/templates/beauty-salon-owner/tier5-src/_shared/aria-widget-model.ts +26 -4
- package/templates/beauty-salon-owner/tier5-src/_shared/aria-widget-view.ts +63 -16
- package/templates/branded-lite/dev/index.ts +41 -1
- package/templates/branded-lite/tier5-src/himi-store-account/index.ts +90 -76
- package/templates/community-club/dev/index.ts +41 -1
- package/templates/community-club/tier5-src/himi-store-account/index.ts +90 -76
- package/templates/community-club-owner/dev/index.ts +304 -7
- package/templates/community-club-owner/tier5-src/_shared/aria-chat.ts +39 -33
- package/templates/community-club-owner/tier5-src/_shared/aria-widget-model.ts +26 -4
- package/templates/community-club-owner/tier5-src/_shared/aria-widget-view.ts +63 -16
- package/templates/events-meetups/dev/index.ts +41 -1
- package/templates/events-meetups/tier5-src/himi-store-account/index.ts +90 -76
- package/templates/events-meetups-owner/dev/index.ts +304 -7
- package/templates/events-meetups-owner/tier5-src/_shared/aria-chat.ts +39 -33
- package/templates/events-meetups-owner/tier5-src/_shared/aria-widget-model.ts +26 -4
- package/templates/events-meetups-owner/tier5-src/_shared/aria-widget-view.ts +63 -16
- package/templates/gym-fitness/dev/index.ts +41 -1
- package/templates/gym-fitness/tier5-src/himi-store-account/index.ts +90 -76
- package/templates/gym-fitness-owner/dev/index.ts +304 -7
- package/templates/gym-fitness-owner/tier5-src/_shared/aria-chat.ts +39 -33
- package/templates/gym-fitness-owner/tier5-src/_shared/aria-widget-model.ts +26 -4
- package/templates/gym-fitness-owner/tier5-src/_shared/aria-widget-view.ts +63 -16
- package/templates/nonprofit-cause/dev/index.ts +41 -1
- package/templates/nonprofit-cause/tier5-src/himi-store-account/index.ts +90 -76
- package/templates/nonprofit-cause-owner/dev/index.ts +304 -7
- package/templates/nonprofit-cause-owner/tier5-src/_shared/aria-chat.ts +39 -33
- package/templates/nonprofit-cause-owner/tier5-src/_shared/aria-widget-model.ts +26 -4
- package/templates/nonprofit-cause-owner/tier5-src/_shared/aria-widget-view.ts +63 -16
- package/templates/owner-lite/dev/index.ts +304 -7
- package/templates/owner-lite/tier5-src/_shared/aria-chat.ts +39 -33
- package/templates/owner-lite/tier5-src/_shared/aria-widget-model.ts +26 -4
- package/templates/owner-lite/tier5-src/_shared/aria-widget-view.ts +63 -16
- package/templates/podcast-creator/dev/index.ts +41 -1
- package/templates/podcast-creator/tier5-src/himi-store-account/index.ts +90 -76
- package/templates/podcast-creator-owner/dev/index.ts +304 -7
- package/templates/podcast-creator-owner/tier5-src/_shared/aria-chat.ts +39 -33
- package/templates/podcast-creator-owner/tier5-src/_shared/aria-widget-model.ts +26 -4
- package/templates/podcast-creator-owner/tier5-src/_shared/aria-widget-view.ts +63 -16
- package/templates/portfolio-creative/dev/index.ts +41 -1
- package/templates/portfolio-creative/tier5-src/himi-store-account/index.ts +90 -76
- package/templates/portfolio-creative-owner/dev/index.ts +304 -7
- package/templates/portfolio-creative-owner/tier5-src/_shared/aria-chat.ts +39 -33
- package/templates/portfolio-creative-owner/tier5-src/_shared/aria-widget-model.ts +26 -4
- package/templates/portfolio-creative-owner/tier5-src/_shared/aria-widget-view.ts +63 -16
- package/templates/restaurant/dev/index.ts +41 -1
- package/templates/restaurant/tier5-src/himi-store-account/index.ts +90 -76
- package/templates/restaurant-owner/dev/index.ts +304 -7
- package/templates/restaurant-owner/tier5-src/_shared/aria-chat.ts +39 -33
- package/templates/restaurant-owner/tier5-src/_shared/aria-widget-model.ts +26 -4
- package/templates/restaurant-owner/tier5-src/_shared/aria-widget-view.ts +63 -16
- package/templates/retail-store/dev/index.ts +41 -1
- package/templates/retail-store/tier5-src/himi-store-account/index.ts +90 -76
- package/templates/retail-store-owner/dev/index.ts +304 -7
- package/templates/retail-store-owner/tier5-src/_shared/aria-chat.ts +39 -33
- package/templates/retail-store-owner/tier5-src/_shared/aria-widget-model.ts +26 -4
- package/templates/retail-store-owner/tier5-src/_shared/aria-widget-view.ts +63 -16
- package/templates/yoga-studio/dev/index.ts +41 -1
- package/templates/yoga-studio/tier5-src/himi-store-account/index.ts +90 -76
- package/templates/yoga-studio-owner/dev/index.ts +304 -7
- package/templates/yoga-studio-owner/tier5-src/_shared/aria-chat.ts +39 -33
- package/templates/yoga-studio-owner/tier5-src/_shared/aria-widget-model.ts +26 -4
- package/templates/yoga-studio-owner/tier5-src/_shared/aria-widget-view.ts +63 -16
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { authFailure, authMessage, identityErrors, type AuthOperation } from "@himalaya/auth";
|
|
1
2
|
// Tier-5 bundle: himi-store — visitor/member account state.
|
|
2
3
|
//
|
|
3
4
|
// SINGLE-SITE BY DESIGN. A Branded Lite build talks to exactly one Wix site, and the
|
|
@@ -75,23 +76,50 @@ function resumeAfterAuth(next: S): S {
|
|
|
75
76
|
// Actions are not serialized: two quick Sign in taps both run against the pre-tap
|
|
76
77
|
// state, so without this both would submit credentials and both would resume.
|
|
77
78
|
let authInFlight = false;
|
|
79
|
+
// Never projected or persisted. The renderer retains its own masked draft for retry.
|
|
80
|
+
let passwordDraft = "";
|
|
81
|
+
let editRevision = 0;
|
|
82
|
+
// Descriptor configuration belongs to the worker session. Keep it even when a
|
|
83
|
+
// delayed profile probe is discarded because the user edited the form.
|
|
84
|
+
let memberAccountLinksRequested = false;
|
|
85
|
+
const translated = (key: string) => copyParam(key, authMessage(key));
|
|
78
86
|
|
|
79
|
-
|
|
87
|
+
function validateAuth(s: S, operation: AuthOperation): S {
|
|
88
|
+
const errors = identityErrors({ email: s.email, password: passwordDraft }, operation);
|
|
89
|
+
return derive({ ...s, emailError: errors.email ? translated(errors.email) : "",
|
|
90
|
+
passwordError: errors.password ? translated(errors.password) : "",
|
|
91
|
+
emailFocus: errors.email ? bumpToken(s.emailFocus) : s.emailFocus,
|
|
92
|
+
passwordFocus: !errors.email && errors.password ? bumpToken(s.passwordFocus) : s.passwordFocus,
|
|
93
|
+
message: "" });
|
|
94
|
+
}
|
|
95
|
+
function rejectResult(raw: unknown, operation: AuthOperation) {
|
|
96
|
+
const value = raw as { status?: string; error?: unknown; payload?: { error?: unknown } } | null;
|
|
97
|
+
if (value?.status === "error" || value?.error || value?.payload?.error) throw authFailure(raw, operation, translated);
|
|
98
|
+
}
|
|
99
|
+
async function authenticate(s: S, operation: "signIn" | "register"): Promise<S | undefined> {
|
|
80
100
|
if (authInFlight) return undefined;
|
|
101
|
+
const checked = validateAuth(s, operation);
|
|
102
|
+
if (checked.emailError || checked.passwordError) return checked;
|
|
81
103
|
authInFlight = true;
|
|
104
|
+
const revision = editRevision;
|
|
105
|
+
const password = passwordDraft;
|
|
82
106
|
try {
|
|
83
|
-
await
|
|
84
|
-
const
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
return derive({ ...
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
107
|
+
await svc.beginAuth(); // publish busy before waiting for the network
|
|
108
|
+
const raw = await dispatch(operation === "signIn" ? "himi.wix.signInDirect" : "himi.wix.registerDirect", {
|
|
109
|
+
email: s.email.trim(), password,
|
|
110
|
+
...(operation === "register" ? { firstName: s.firstName, lastName: s.lastName } : {}),
|
|
111
|
+
});
|
|
112
|
+
rejectResult(raw, operation);
|
|
113
|
+
if (revision !== editRevision) return derive({ ...svc.getState(), authBusy: false });
|
|
114
|
+
const next = await probe(svc.getState());
|
|
115
|
+
if (revision !== editRevision) return derive({ ...svc.getState(), authBusy: false });
|
|
116
|
+
if (!next.isMember) throw { code: "unknown" };
|
|
117
|
+
passwordDraft = "";
|
|
118
|
+
return resumeAfterAuth(completedAuth(next));
|
|
119
|
+
} catch (error) {
|
|
120
|
+
return derive({ ...svc.getState(), authBusy: false,
|
|
121
|
+
message: revision === editRevision ? authFailure(error, operation, translated).reason : "" });
|
|
122
|
+
} finally { authInFlight = false; }
|
|
95
123
|
}
|
|
96
124
|
|
|
97
125
|
// Next value of a focus token: monotonic, and never empty once requested. A counter
|
|
@@ -180,10 +208,14 @@ interface S extends IapRestoreFields {
|
|
|
180
208
|
noReturnPath: boolean;
|
|
181
209
|
returnCta: string;
|
|
182
210
|
email: string;
|
|
183
|
-
/**
|
|
184
|
-
*
|
|
185
|
-
* do recovery and sign-out. Sign-in <-> register keeps it: the field stays up. */
|
|
211
|
+
/** Legacy snapshot slot, always empty. The active form keeps its password in
|
|
212
|
+
* transient memory for retry; hydration never restores a persisted secret. */
|
|
186
213
|
password: string;
|
|
214
|
+
authBusy: boolean;
|
|
215
|
+
busyMessage?: string;
|
|
216
|
+
emailError: string;
|
|
217
|
+
passwordError: string;
|
|
218
|
+
passwordFocus: string;
|
|
187
219
|
firstName: string;
|
|
188
220
|
lastName: string;
|
|
189
221
|
// Focus TOKENS (`TextFieldProps.focus_path`), not flags: the bound field focuses
|
|
@@ -247,6 +279,8 @@ function derive(s: S): S {
|
|
|
247
279
|
const hasReturnPath = !!s.isMember && !!s.returnScreenId;
|
|
248
280
|
return {
|
|
249
281
|
...s,
|
|
282
|
+
password: "",
|
|
283
|
+
busyMessage: s.authBusy ? translated("auth.feedback.busy") : "",
|
|
250
284
|
isLoading: s.status === "loading",
|
|
251
285
|
notLoading: s.status !== "loading",
|
|
252
286
|
notMember: !s.isMember,
|
|
@@ -309,9 +343,10 @@ async function orderRows(memberEmail: string): Promise<AccountActivityRow[]> {
|
|
|
309
343
|
}
|
|
310
344
|
|
|
311
345
|
async function probe(s: S, arg?: unknown): Promise<S> {
|
|
346
|
+
memberAccountLinksRequested ||= s.memberAccountLinks || strField(arg, "memberAccountLinks") === "1";
|
|
312
347
|
const intent = authIntentFromArg(arg, s);
|
|
313
348
|
const profile = await loadMemberProfile(copyParam("storeAccount.guestDetail", "Sign in to keep your cart and orders connected."));
|
|
314
|
-
const memberAccountLinks =
|
|
349
|
+
const memberAccountLinks = memberAccountLinksRequested;
|
|
315
350
|
const restorePurchases = s.restorePurchases || strField(arg, "restorePurchases") === "1";
|
|
316
351
|
if (restorePurchases) enterCommerce();
|
|
317
352
|
const routes = memberAccountLinks ? await memberAccountRoutes() : { addresses: false, wallet: false };
|
|
@@ -353,21 +388,11 @@ async function probe(s: S, arg?: unknown): Promise<S> {
|
|
|
353
388
|
});
|
|
354
389
|
}
|
|
355
390
|
|
|
356
|
-
function
|
|
391
|
+
function completedAuth(s: S): S {
|
|
357
392
|
return derive({
|
|
358
393
|
...s,
|
|
359
|
-
status: "ready",
|
|
360
|
-
isMember: true,
|
|
361
|
-
identityLine: copyParam("storeAccount.signedIn", "Signed in"),
|
|
362
|
-
detailLine: email,
|
|
363
|
-
memberName: email,
|
|
364
|
-
memberEmail: email,
|
|
365
|
-
memberImage: "",
|
|
366
|
-
memberInitials: "M",
|
|
367
|
-
hasMemberImage: false,
|
|
368
|
-
noMemberImage: true,
|
|
369
|
-
email,
|
|
370
394
|
password: "",
|
|
395
|
+
authBusy: false, emailError: "", passwordError: "", passwordFocus: "",
|
|
371
396
|
firstName: "",
|
|
372
397
|
lastName: "",
|
|
373
398
|
isRegistering: false,
|
|
@@ -377,6 +402,8 @@ function optimisticMember(s: S, email: string): S {
|
|
|
377
402
|
}
|
|
378
403
|
|
|
379
404
|
const svc = defineService<S, {
|
|
405
|
+
beginAuth: (s: S) => S;
|
|
406
|
+
submit: (s: S) => Promise<S | undefined>;
|
|
380
407
|
load: (s: S, arg?: unknown) => Promise<S>;
|
|
381
408
|
refresh: (s: S, arg?: unknown) => Promise<S>;
|
|
382
409
|
setEmail: (s: S, arg?: unknown) => S;
|
|
@@ -395,7 +422,7 @@ const svc = defineService<S, {
|
|
|
395
422
|
restorePublish: (s: S) => S;
|
|
396
423
|
iapRestore: (s: S) => Promise<undefined>;
|
|
397
424
|
}>("himiStoreAccount", {
|
|
398
|
-
notHydrated: [...IAP_RESTORE_KEYS],
|
|
425
|
+
notHydrated: ["password", "authBusy", "emailError", "passwordError", "passwordFocus", ...IAP_RESTORE_KEYS],
|
|
399
426
|
state: derive({
|
|
400
427
|
status: "loading",
|
|
401
428
|
isMember: false,
|
|
@@ -420,6 +447,7 @@ const svc = defineService<S, {
|
|
|
420
447
|
returnCta: "Continue",
|
|
421
448
|
email: "",
|
|
422
449
|
password: "",
|
|
450
|
+
authBusy: false, emailError: "", passwordError: "", passwordFocus: "",
|
|
423
451
|
firstName: "",
|
|
424
452
|
lastName: "",
|
|
425
453
|
lastNameFocus: "",
|
|
@@ -445,12 +473,14 @@ const svc = defineService<S, {
|
|
|
445
473
|
...NO_IAP_RESTORE,
|
|
446
474
|
}),
|
|
447
475
|
actions: {
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
476
|
+
submit: (s): Promise<S | undefined> => s.isRecovering ? svc.resetPassword() : authenticate(s, s.isRegistering ? "register" : "signIn"),
|
|
477
|
+
beginAuth: (s) => derive({ ...s, authBusy: true, message: "", emailError: "", passwordError: "" }),
|
|
478
|
+
load: async (s, arg): Promise<S> => { stashCopy(arg); const revision = editRevision; const next = await probe(s, arg); return authInFlight || revision !== editRevision ? svc.getState() : next; },
|
|
479
|
+
refresh: async (s, arg): Promise<S> => { stashCopy(arg); const revision = editRevision; const next = await probe(s, arg); return authInFlight || revision !== editRevision ? svc.getState() : next; },
|
|
480
|
+
setEmail: (s, arg) => { editRevision++; const next = { ...s, email: strOf(arg).trim(), message: "" }; return derive({ ...next, emailError: s.emailError ? (identityErrors({ email: next.email }, "reset").email ? translated(identityErrors({ email: next.email }, "reset").email!) : "") : "" }); },
|
|
481
|
+
setPassword: (s, arg) => { editRevision++; passwordDraft = strOf(arg); return derive({ ...s, message: "", passwordError: s.passwordError && !passwordDraft ? translated("auth.validation.passwordRequired") : "" }); },
|
|
482
|
+
setFirstName: (s, arg) => { editRevision++; return derive({ ...s, firstName: strOf(arg), message: "" }); },
|
|
483
|
+
setLastName: (s, arg) => { editRevision++; return derive({ ...s, lastName: strOf(arg), message: "" }); },
|
|
454
484
|
// The register form's Next keys. Only first/last name carry one: they share a
|
|
455
485
|
// single visibility gate (notRegistering) so their target is always on screen.
|
|
456
486
|
// Email deliberately does NOT chain to password — see the comment on the
|
|
@@ -463,48 +493,32 @@ const svc = defineService<S, {
|
|
|
463
493
|
// register and coming back would open focused on Last name, skipping First name.
|
|
464
494
|
// Only the tokens whose fields actually unmount here are cleared: see
|
|
465
495
|
// NO_FOCUS_MODE_SWITCH for why Email's is deliberately NOT among them.
|
|
466
|
-
showRegister: (s) => derive({ ...s, isRegistering: true, isRecovering: false, message: "", ...NO_FOCUS_MODE_SWITCH }),
|
|
467
|
-
showSignIn: (s) => derive({ ...s, isRegistering: false, isRecovering: false, message: "", ...NO_FOCUS_MODE_SWITCH }),
|
|
468
|
-
showRecovery: (s) => derive({ ...s, isRegistering: false, isRecovering: true, password: "", message: "", ...NO_FOCUS_MODE_SWITCH }),
|
|
469
|
-
resetPassword: async (s) => {
|
|
470
|
-
|
|
471
|
-
|
|
496
|
+
showRegister: (s) => { if (authInFlight) return s; editRevision++; return derive({ ...s, isRegistering: true, isRecovering: false, message: "", emailError: "", passwordError: "", ...NO_FOCUS_MODE_SWITCH }) },
|
|
497
|
+
showSignIn: (s) => { if (authInFlight) return s; editRevision++; return derive({ ...s, isRegistering: false, isRecovering: false, message: "", emailError: "", passwordError: "", ...NO_FOCUS_MODE_SWITCH }) },
|
|
498
|
+
showRecovery: (s) => { if (authInFlight) return s; editRevision++; return derive({ ...s, isRegistering: false, isRecovering: true, password: "", message: "", emailError: "", passwordError: "", ...NO_FOCUS_MODE_SWITCH }) },
|
|
499
|
+
resetPassword: async (s): Promise<S> => {
|
|
500
|
+
if (authInFlight) return s;
|
|
501
|
+
const checked = validateAuth(s, "reset");
|
|
502
|
+
if (checked.emailError) return checked;
|
|
503
|
+
authInFlight = true;
|
|
504
|
+
const revision = editRevision;
|
|
472
505
|
try {
|
|
473
|
-
await
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
message: copyParam("storeAccount.resetSent", "If that email is registered, a reset link is on its way.")
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
}
|
|
483
|
-
},
|
|
484
|
-
signIn: async (s) => {
|
|
485
|
-
if (!s.email || !s.password) return derive({ ...s, message: copyParam("storeAccount.validationEmailPassword", "Enter your email and password.") });
|
|
486
|
-
return authenticate(
|
|
487
|
-
s,
|
|
488
|
-
() => dispatch("himi.wix.signInDirect", { email: s.email, password: s.password }),
|
|
489
|
-
copyParam("storeAccount.signInCheckDetails", "Sign in failed. Check your details."),
|
|
490
|
-
copyParam("storeAccount.signInFailed", "Sign in failed. Try again."),
|
|
491
|
-
);
|
|
492
|
-
},
|
|
493
|
-
register: async (s) => {
|
|
494
|
-
if (!s.email || !s.password) return derive({ ...s, message: copyParam("storeAccount.validationEmailPassword", "Enter your email and password.") });
|
|
495
|
-
return authenticate(
|
|
496
|
-
s,
|
|
497
|
-
() => dispatch("himi.wix.registerDirect", {
|
|
498
|
-
email: s.email,
|
|
499
|
-
password: s.password,
|
|
500
|
-
firstName: s.firstName,
|
|
501
|
-
lastName: s.lastName,
|
|
502
|
-
}),
|
|
503
|
-
copyParam("storeAccount.registerTrySignIn", "Account creation failed. Try signing in."),
|
|
504
|
-
copyParam("storeAccount.registerFailed", "Account creation failed. Try another email."),
|
|
505
|
-
);
|
|
506
|
+
await svc.beginAuth();
|
|
507
|
+
const raw = await dispatch("himi.wix.resetPassword", { email: s.email.trim() });
|
|
508
|
+
rejectResult(raw, "reset");
|
|
509
|
+
if (revision !== editRevision) return derive({ ...svc.getState(), authBusy: false });
|
|
510
|
+
return derive({ ...svc.getState(), authBusy: false, isRecovering: false,
|
|
511
|
+
message: copyParam("storeAccount.resetSent", "If that email is registered, a reset link is on its way.") });
|
|
512
|
+
} catch (error) {
|
|
513
|
+
return derive({ ...svc.getState(), authBusy: false,
|
|
514
|
+
message: revision === editRevision ? authFailure(error, "reset", translated).reason : "" });
|
|
515
|
+
} finally { authInFlight = false; }
|
|
506
516
|
},
|
|
507
|
-
|
|
517
|
+
signIn: (s) => authenticate(s, "signIn"),
|
|
518
|
+
register: (s) => authenticate(s, "register"),
|
|
519
|
+
signOut: async (s): Promise<S> => {
|
|
520
|
+
if (authInFlight) return svc.getState();
|
|
521
|
+
passwordDraft = ""; editRevision++;
|
|
508
522
|
routeInputConsumed = true;
|
|
509
523
|
try { await dispatch("himi.wix.signOut"); } catch { /* ignore */ }
|
|
510
524
|
// Do NOT re-probe via getMyData after logout — visitor-scoped my-data can
|
|
@@ -57544,6 +57544,7 @@ const SCREENS = runtimeSetting({
|
|
|
57544
57544
|
"title": "$item.buttonLabel",
|
|
57545
57545
|
"style": "secondary",
|
|
57546
57546
|
"size": "sm",
|
|
57547
|
+
"fullWidth": false,
|
|
57547
57548
|
"action": {
|
|
57548
57549
|
"actionId": "tier5.himiOwnerLiteAria.widgetRespond",
|
|
57549
57550
|
"params": {
|
|
@@ -58739,15 +58740,95 @@ const SCREENS = runtimeSetting({
|
|
|
58739
58740
|
}
|
|
58740
58741
|
},
|
|
58741
58742
|
{
|
|
58742
|
-
"id": "",
|
|
58743
|
+
"id": "himi_owner_lite_aria.widget.PLANS.benefits_$item.id",
|
|
58743
58744
|
"body": {
|
|
58744
58745
|
"package": "himalaya",
|
|
58745
|
-
"type": "
|
|
58746
|
+
"type": "LazyList",
|
|
58746
58747
|
"props": {
|
|
58747
|
-
"
|
|
58748
|
-
"
|
|
58749
|
-
"
|
|
58750
|
-
|
|
58748
|
+
"itemsPath": "$item.benefits",
|
|
58749
|
+
"spacing": 4,
|
|
58750
|
+
"items": [
|
|
58751
|
+
{
|
|
58752
|
+
"id": "",
|
|
58753
|
+
"body": {
|
|
58754
|
+
"package": "himalaya",
|
|
58755
|
+
"type": "HStack",
|
|
58756
|
+
"props": {
|
|
58757
|
+
"spacing": 8,
|
|
58758
|
+
"children": [
|
|
58759
|
+
{
|
|
58760
|
+
"id": "",
|
|
58761
|
+
"body": {
|
|
58762
|
+
"package": "himalaya",
|
|
58763
|
+
"type": "Icon",
|
|
58764
|
+
"props": {
|
|
58765
|
+
"name": "$item.icon",
|
|
58766
|
+
"size": 12,
|
|
58767
|
+
"tint": "success"
|
|
58768
|
+
}
|
|
58769
|
+
},
|
|
58770
|
+
"modifiers": {
|
|
58771
|
+
"accessibilityRole": "decorative",
|
|
58772
|
+
"hiddenPath": "$item.successHidden"
|
|
58773
|
+
}
|
|
58774
|
+
},
|
|
58775
|
+
{
|
|
58776
|
+
"id": "",
|
|
58777
|
+
"body": {
|
|
58778
|
+
"package": "himalaya",
|
|
58779
|
+
"type": "Icon",
|
|
58780
|
+
"props": {
|
|
58781
|
+
"name": "$item.icon",
|
|
58782
|
+
"size": 12,
|
|
58783
|
+
"tint": "textPrimary"
|
|
58784
|
+
}
|
|
58785
|
+
},
|
|
58786
|
+
"modifiers": {
|
|
58787
|
+
"accessibilityRole": "decorative",
|
|
58788
|
+
"hiddenPath": "$item.plainHidden"
|
|
58789
|
+
}
|
|
58790
|
+
},
|
|
58791
|
+
{
|
|
58792
|
+
"id": "",
|
|
58793
|
+
"body": {
|
|
58794
|
+
"package": "himalaya",
|
|
58795
|
+
"type": "Icon",
|
|
58796
|
+
"props": {
|
|
58797
|
+
"name": "$item.icon",
|
|
58798
|
+
"size": 12,
|
|
58799
|
+
"tint": "accentPrimary"
|
|
58800
|
+
}
|
|
58801
|
+
},
|
|
58802
|
+
"modifiers": {
|
|
58803
|
+
"accessibilityRole": "decorative",
|
|
58804
|
+
"theme": {
|
|
58805
|
+
"colors": {
|
|
58806
|
+
"accentPrimary": "$item.colorHex"
|
|
58807
|
+
}
|
|
58808
|
+
},
|
|
58809
|
+
"hiddenPath": "$item.customHidden"
|
|
58810
|
+
}
|
|
58811
|
+
},
|
|
58812
|
+
{
|
|
58813
|
+
"id": "",
|
|
58814
|
+
"body": {
|
|
58815
|
+
"package": "himalaya",
|
|
58816
|
+
"type": "Text",
|
|
58817
|
+
"props": {
|
|
58818
|
+
"text": "$item.text",
|
|
58819
|
+
"style": "footnote",
|
|
58820
|
+
"maxLines": 8
|
|
58821
|
+
}
|
|
58822
|
+
},
|
|
58823
|
+
"modifiers": {
|
|
58824
|
+
"weight": 1
|
|
58825
|
+
}
|
|
58826
|
+
}
|
|
58827
|
+
]
|
|
58828
|
+
}
|
|
58829
|
+
}
|
|
58830
|
+
}
|
|
58831
|
+
]
|
|
58751
58832
|
}
|
|
58752
58833
|
},
|
|
58753
58834
|
"modifiers": {
|
|
@@ -59147,6 +59228,181 @@ const SCREENS = runtimeSetting({
|
|
|
59147
59228
|
}
|
|
59148
59229
|
}
|
|
59149
59230
|
},
|
|
59231
|
+
{
|
|
59232
|
+
"id": "himi_owner_lite_aria.widget.VISUAL_DISPLAY.variants",
|
|
59233
|
+
"body": {
|
|
59234
|
+
"package": "himalaya",
|
|
59235
|
+
"type": "LazyList",
|
|
59236
|
+
"props": {
|
|
59237
|
+
"itemsPath": "$service:himiOwnerLiteAria.widget.options",
|
|
59238
|
+
"spacing": 6,
|
|
59239
|
+
"items": [
|
|
59240
|
+
{
|
|
59241
|
+
"id": "himi_owner_lite_aria.widget.VISUAL_DISPLAY.variant_$item.id",
|
|
59242
|
+
"body": {
|
|
59243
|
+
"package": "himalaya",
|
|
59244
|
+
"type": "Card",
|
|
59245
|
+
"props": {
|
|
59246
|
+
"children": [
|
|
59247
|
+
{
|
|
59248
|
+
"id": "",
|
|
59249
|
+
"body": {
|
|
59250
|
+
"package": "himalaya",
|
|
59251
|
+
"type": "VStack",
|
|
59252
|
+
"props": {
|
|
59253
|
+
"spacing": 8,
|
|
59254
|
+
"children": [
|
|
59255
|
+
{
|
|
59256
|
+
"id": "",
|
|
59257
|
+
"body": {
|
|
59258
|
+
"package": "himalaya",
|
|
59259
|
+
"type": "Image",
|
|
59260
|
+
"props": {
|
|
59261
|
+
"url": "$item.pictureUrl",
|
|
59262
|
+
"fillWidth": true,
|
|
59263
|
+
"aspectRatio": 1.5,
|
|
59264
|
+
"contentMode": "fill",
|
|
59265
|
+
"contentDescription": "$item.title"
|
|
59266
|
+
}
|
|
59267
|
+
},
|
|
59268
|
+
"modifiers": {
|
|
59269
|
+
"hiddenPath": "$item.pictureHidden"
|
|
59270
|
+
}
|
|
59271
|
+
},
|
|
59272
|
+
{
|
|
59273
|
+
"id": "",
|
|
59274
|
+
"body": {
|
|
59275
|
+
"package": "himalaya",
|
|
59276
|
+
"type": "HStack",
|
|
59277
|
+
"props": {
|
|
59278
|
+
"spacing": 0,
|
|
59279
|
+
"children": [
|
|
59280
|
+
{
|
|
59281
|
+
"id": "",
|
|
59282
|
+
"body": {
|
|
59283
|
+
"package": "himalaya",
|
|
59284
|
+
"type": "Text",
|
|
59285
|
+
"props": {
|
|
59286
|
+
"text": "$item.badge",
|
|
59287
|
+
"style": "footnote",
|
|
59288
|
+
"color": "surfacePrimary"
|
|
59289
|
+
}
|
|
59290
|
+
},
|
|
59291
|
+
"modifiers": {
|
|
59292
|
+
"background": {
|
|
59293
|
+
"token": "textSecondary"
|
|
59294
|
+
},
|
|
59295
|
+
"cornerRadius": 4,
|
|
59296
|
+
"padding": {
|
|
59297
|
+
"leading": 8,
|
|
59298
|
+
"trailing": 8,
|
|
59299
|
+
"top": 2,
|
|
59300
|
+
"bottom": 2
|
|
59301
|
+
}
|
|
59302
|
+
}
|
|
59303
|
+
},
|
|
59304
|
+
{
|
|
59305
|
+
"id": "",
|
|
59306
|
+
"body": {
|
|
59307
|
+
"package": "himalaya",
|
|
59308
|
+
"type": "Spacer",
|
|
59309
|
+
"props": {}
|
|
59310
|
+
}
|
|
59311
|
+
}
|
|
59312
|
+
]
|
|
59313
|
+
}
|
|
59314
|
+
},
|
|
59315
|
+
"modifiers": {
|
|
59316
|
+
"hiddenPath": "$item.badgeHidden"
|
|
59317
|
+
}
|
|
59318
|
+
},
|
|
59319
|
+
{
|
|
59320
|
+
"id": "",
|
|
59321
|
+
"body": {
|
|
59322
|
+
"package": "himalaya",
|
|
59323
|
+
"type": "Text",
|
|
59324
|
+
"props": {
|
|
59325
|
+
"text": "$item.title",
|
|
59326
|
+
"style": "bodyEmphasis"
|
|
59327
|
+
}
|
|
59328
|
+
}
|
|
59329
|
+
},
|
|
59330
|
+
{
|
|
59331
|
+
"id": "",
|
|
59332
|
+
"body": {
|
|
59333
|
+
"package": "himalaya",
|
|
59334
|
+
"type": "Text",
|
|
59335
|
+
"props": {
|
|
59336
|
+
"text": "$item.subtitle",
|
|
59337
|
+
"style": "body",
|
|
59338
|
+
"color": "textSecondary"
|
|
59339
|
+
}
|
|
59340
|
+
},
|
|
59341
|
+
"modifiers": {
|
|
59342
|
+
"hiddenPath": "$item.subtitleHidden"
|
|
59343
|
+
}
|
|
59344
|
+
},
|
|
59345
|
+
{
|
|
59346
|
+
"id": "",
|
|
59347
|
+
"body": {
|
|
59348
|
+
"package": "himalaya",
|
|
59349
|
+
"type": "Text",
|
|
59350
|
+
"props": {
|
|
59351
|
+
"text": "$item.text",
|
|
59352
|
+
"style": "body"
|
|
59353
|
+
}
|
|
59354
|
+
},
|
|
59355
|
+
"modifiers": {
|
|
59356
|
+
"hiddenPath": "$item.textHidden"
|
|
59357
|
+
}
|
|
59358
|
+
},
|
|
59359
|
+
{
|
|
59360
|
+
"id": "",
|
|
59361
|
+
"body": {
|
|
59362
|
+
"package": "himalaya",
|
|
59363
|
+
"type": "Text",
|
|
59364
|
+
"props": {
|
|
59365
|
+
"text": "$item.listText",
|
|
59366
|
+
"style": "body"
|
|
59367
|
+
}
|
|
59368
|
+
},
|
|
59369
|
+
"modifiers": {
|
|
59370
|
+
"hiddenPath": "$item.listHidden"
|
|
59371
|
+
}
|
|
59372
|
+
},
|
|
59373
|
+
{
|
|
59374
|
+
"id": "himi_owner_lite_aria.widget.VISUAL_DISPLAY.variant_$item.id.button",
|
|
59375
|
+
"body": {
|
|
59376
|
+
"package": "himalaya",
|
|
59377
|
+
"type": "Button",
|
|
59378
|
+
"props": {
|
|
59379
|
+
"title": "$item.buttonLabel",
|
|
59380
|
+
"style": "secondary",
|
|
59381
|
+
"size": "sm",
|
|
59382
|
+
"action": {
|
|
59383
|
+
"actionId": "tier5.himiOwnerLiteAria.widgetRespond",
|
|
59384
|
+
"params": {
|
|
59385
|
+
"value": "$item.id"
|
|
59386
|
+
}
|
|
59387
|
+
}
|
|
59388
|
+
}
|
|
59389
|
+
},
|
|
59390
|
+
"modifiers": {
|
|
59391
|
+
"hiddenPath": "$item.buttonHidden"
|
|
59392
|
+
}
|
|
59393
|
+
}
|
|
59394
|
+
]
|
|
59395
|
+
}
|
|
59396
|
+
}
|
|
59397
|
+
}
|
|
59398
|
+
]
|
|
59399
|
+
}
|
|
59400
|
+
}
|
|
59401
|
+
}
|
|
59402
|
+
]
|
|
59403
|
+
}
|
|
59404
|
+
}
|
|
59405
|
+
},
|
|
59150
59406
|
{
|
|
59151
59407
|
"id": "",
|
|
59152
59408
|
"body": {
|
|
@@ -60378,7 +60634,23 @@ const SCREENS = runtimeSetting({
|
|
|
60378
60634
|
},
|
|
60379
60635
|
"modifiers": {
|
|
60380
60636
|
"accessibilityLabel": "$service:himiOwnerLiteAria.widget.text",
|
|
60381
|
-
"hiddenPath": "$service:himiOwnerLiteAria.widget.
|
|
60637
|
+
"hiddenPath": "$service:himiOwnerLiteAria.widget.chartPlainPieHidden"
|
|
60638
|
+
}
|
|
60639
|
+
},
|
|
60640
|
+
{
|
|
60641
|
+
"id": "himi_owner_lite_aria.widget.CHART.doughnut",
|
|
60642
|
+
"body": {
|
|
60643
|
+
"package": "himalaya",
|
|
60644
|
+
"type": "DonutChart",
|
|
60645
|
+
"props": {
|
|
60646
|
+
"slicesPath": "$service:himiOwnerLiteAria.widget.slices",
|
|
60647
|
+
"thickness": 18,
|
|
60648
|
+
"size": 160
|
|
60649
|
+
}
|
|
60650
|
+
},
|
|
60651
|
+
"modifiers": {
|
|
60652
|
+
"accessibilityLabel": "$service:himiOwnerLiteAria.widget.text",
|
|
60653
|
+
"hiddenPath": "$service:himiOwnerLiteAria.widget.chartRingHidden"
|
|
60382
60654
|
}
|
|
60383
60655
|
},
|
|
60384
60656
|
{
|
|
@@ -60397,6 +60669,21 @@ const SCREENS = runtimeSetting({
|
|
|
60397
60669
|
"hiddenPath": "$service:himiOwnerLiteAria.widget.chartSeriesHidden"
|
|
60398
60670
|
}
|
|
60399
60671
|
},
|
|
60672
|
+
{
|
|
60673
|
+
"id": "himi_owner_lite_aria.widget.CHART.legend",
|
|
60674
|
+
"body": {
|
|
60675
|
+
"package": "himalaya",
|
|
60676
|
+
"type": "Legend",
|
|
60677
|
+
"props": {
|
|
60678
|
+
"itemsPath": "$service:himiOwnerLiteAria.widget.chartLegend",
|
|
60679
|
+
"orientation": "vertical"
|
|
60680
|
+
}
|
|
60681
|
+
},
|
|
60682
|
+
"modifiers": {
|
|
60683
|
+
"accessibilityLabel": "$service:himiOwnerLiteAria.widget.text",
|
|
60684
|
+
"hiddenPath": "$service:himiOwnerLiteAria.widget.chartPieHidden"
|
|
60685
|
+
}
|
|
60686
|
+
},
|
|
60400
60687
|
{
|
|
60401
60688
|
"id": "",
|
|
60402
60689
|
"body": {
|
|
@@ -60489,6 +60776,16 @@ const SCREENS = runtimeSetting({
|
|
|
60489
60776
|
}
|
|
60490
60777
|
]
|
|
60491
60778
|
}
|
|
60779
|
+
},
|
|
60780
|
+
"modifiers": {
|
|
60781
|
+
"theme": {
|
|
60782
|
+
"colors": {
|
|
60783
|
+
"ariaChartBlue": "#126EFF",
|
|
60784
|
+
"ariaChartGreen": "#26A659",
|
|
60785
|
+
"ariaChartPurple": "#9926D6",
|
|
60786
|
+
"ariaChartGray": "#878AA6"
|
|
60787
|
+
}
|
|
60788
|
+
}
|
|
60492
60789
|
}
|
|
60493
60790
|
},
|
|
60494
60791
|
"accessibilityAnnouncement": "$service:himiOwnerLiteAria.widget.text"
|