@wix/himalaya-cli 0.1548.0 → 0.1550.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.
Files changed (45) hide show
  1. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/ts/src/schema.d.ts +11 -0
  2. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/ts/src/validator.d.ts +54 -0
  3. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/core.mjs +16 -0
  4. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/sdui.mjs +12 -0
  5. package/dist/cli.mjs +1307 -860
  6. package/dist/preview-assets.generated.bin +0 -0
  7. package/guides/component-reference.json +1 -1
  8. package/guides/component-reference.md +2 -0
  9. package/guides/iap-products.md +6 -3
  10. package/guides/qa-builds.md +31 -0
  11. package/guides/tier-5-add-a-screen.md +53 -0
  12. package/package.json +2 -2
  13. package/templates/beauty-salon/dev/index.ts +15 -2
  14. package/templates/beauty-salon/tier5-src/himi-branded-lite-agenda/index.ts +4 -1
  15. package/templates/beauty-salon-owner/dev/index.ts +36 -1
  16. package/templates/beauty-salon-owner/tier5-src/himi-owner-lite-manage/logic.ts +14 -2
  17. package/templates/branded-lite/dev/index.ts +15 -2
  18. package/templates/branded-lite/tier5-src/himi-branded-lite-agenda/index.ts +4 -1
  19. package/templates/community-club-owner/dev/index.ts +36 -1
  20. package/templates/community-club-owner/tier5-src/himi-owner-lite-manage/logic.ts +14 -2
  21. package/templates/events-meetups-owner/dev/index.ts +36 -1
  22. package/templates/events-meetups-owner/tier5-src/himi-owner-lite-manage/logic.ts +14 -2
  23. package/templates/gym-fitness/dev/index.ts +15 -2
  24. package/templates/gym-fitness/tier5-src/himi-branded-lite-agenda/index.ts +4 -1
  25. package/templates/gym-fitness-owner/dev/index.ts +36 -1
  26. package/templates/gym-fitness-owner/tier5-src/himi-owner-lite-manage/logic.ts +14 -2
  27. package/templates/nonprofit-cause-owner/dev/index.ts +36 -1
  28. package/templates/nonprofit-cause-owner/tier5-src/himi-owner-lite-manage/logic.ts +14 -2
  29. package/templates/owner-lite/dev/index.ts +36 -1
  30. package/templates/owner-lite/tier5-src/himi-owner-lite-manage/logic.ts +14 -2
  31. package/templates/podcast-creator-owner/dev/index.ts +36 -1
  32. package/templates/podcast-creator-owner/tier5-src/himi-owner-lite-manage/logic.ts +14 -2
  33. package/templates/portfolio-creative/dev/index.ts +8 -1
  34. package/templates/portfolio-creative-owner/dev/index.ts +36 -1
  35. package/templates/portfolio-creative-owner/tier5-src/himi-owner-lite-manage/logic.ts +14 -2
  36. package/templates/restaurant/dev/index.ts +8 -1
  37. package/templates/restaurant-owner/dev/index.ts +36 -1
  38. package/templates/restaurant-owner/tier5-src/himi-owner-lite-manage/logic.ts +14 -2
  39. package/templates/retail-store/dev/index.ts +8 -1
  40. package/templates/retail-store-owner/dev/index.ts +36 -1
  41. package/templates/retail-store-owner/tier5-src/himi-owner-lite-manage/logic.ts +14 -2
  42. package/templates/yoga-studio/dev/index.ts +7 -1
  43. package/templates/yoga-studio/tier5-src/himi-branded-lite-agenda/index.ts +4 -1
  44. package/templates/yoga-studio-owner/dev/index.ts +36 -1
  45. package/templates/yoga-studio-owner/tier5-src/himi-owner-lite-manage/logic.ts +14 -2
@@ -56,6 +56,13 @@ export interface ManageArea {
56
56
  navigation?: ManageNavigation;
57
57
  /** The same for its create screen. */
58
58
  createNavigation?: ManageNavigation;
59
+ /** [navigation] flattened for the card's declared route (`$item.` reads flat fields only); "" when absent. */
60
+ navTitle?: string;
61
+ navSubtitle?: string;
62
+ navSearch?: string;
63
+ createNavTitle?: string;
64
+ createNavSubtitle?: string;
65
+ createNavSearch?: string;
59
66
  }
60
67
 
61
68
  /** A page's navigation as the build declares it: its title and subtitle, and where its search goes (none without one). */
@@ -118,6 +125,8 @@ export function parseAreas(value: unknown): ManageArea[] {
118
125
  const area = Object.fromEntries(required) as Record<string, string>;
119
126
  const createScreenId = clean(raw.createScreenId);
120
127
  const createLabel = clean(raw.createLabel);
128
+ const navigation = parseNavigation(raw.navigation);
129
+ const createNavigation = createScreenId && createLabel ? parseNavigation(raw.createNavigation) : undefined;
121
130
  // Creation is only an in-app route when both fields are present. A lone
122
131
  // label must not produce a promising but inert action.
123
132
  return [{
@@ -126,8 +135,11 @@ export function parseAreas(value: unknown): ManageArea[] {
126
135
  hideCreate: !(createScreenId && createLabel),
127
136
  hideHandoff: !DASHBOARD_PATHS[area.id],
128
137
  handoffLabel: clean(raw.handoffLabel) || `Open in Wix: ${area.title}`,
129
- ...(parseNavigation(raw.navigation) ? { navigation: parseNavigation(raw.navigation) } : {}),
130
- ...(createScreenId && createLabel && parseNavigation(raw.createNavigation) ? { createNavigation: parseNavigation(raw.createNavigation) } : {}),
138
+ ...(navigation ? { navigation } : {}),
139
+ ...(createNavigation ? { createNavigation } : {}),
140
+ navTitle: navigation?.title ?? "", navSubtitle: navigation?.subtitle ?? "", navSearch: navigation?.search ?? "",
141
+ createNavTitle: createNavigation?.title ?? "", createNavSubtitle: createNavigation?.subtitle ?? "",
142
+ createNavSearch: createNavigation?.search ?? "",
131
143
  metricText: "—",
132
144
  statusText: "",
133
145
  unavailable: false,
@@ -17051,6 +17051,9 @@ const SCREENS = runtimeSetting({
17051
17051
  "actionId": "tier5.himiBrandedAddresses.edit",
17052
17052
  "params": {
17053
17053
  "id": "$item.id"
17054
+ },
17055
+ "nav": {
17056
+ "screenId": "himi_address"
17054
17057
  }
17055
17058
  }
17056
17059
  }
@@ -17287,7 +17290,11 @@ const SCREENS = runtimeSetting({
17287
17290
  "fullWidth": true,
17288
17291
  "leadingIcon": "plus",
17289
17292
  "action": {
17290
- "actionId": "tier5.himiBrandedAddresses.add"
17293
+ "actionId": "tier5.himiBrandedAddresses.add",
17294
+ "nav": {
17295
+ "screenId": "himi_address",
17296
+ "args": {}
17297
+ }
17291
17298
  }
17292
17299
  }
17293
17300
  },
@@ -24675,7 +24682,13 @@ const SCREENS = runtimeSetting({
24675
24682
  "fullWidth": true,
24676
24683
  "disabledPath": "$service:himiBrandedAgenda.sheetBusy",
24677
24684
  "action": {
24678
- "actionId": "tier5.himiBrandedAgenda.viewSession"
24685
+ "actionId": "tier5.himiBrandedAgenda.viewSession",
24686
+ "nav": {
24687
+ "screenId": "himi_service",
24688
+ "args": {
24689
+ "id": "$service:himiBrandedAgenda.sheetServiceId"
24690
+ }
24691
+ }
24679
24692
  }
24680
24693
  }
24681
24694
  }
@@ -136,6 +136,8 @@ interface S extends LoadFlags {
136
136
  sheetHideCancel: boolean;
137
137
  sheetHideLeave: boolean;
138
138
  sheetBusy: boolean;
139
+ /** The sheet session's service: View class reads its declared route (`nav`) from it. "" with no sheet. */
140
+ sheetServiceId: string;
139
141
  }
140
142
 
141
143
  const flag = (on: boolean): string => (on ? "true" : "");
@@ -573,6 +575,7 @@ function derive(s: S): S {
573
575
  sheetHideCancel: sheetPlace !== "booked",
574
576
  sheetHideLeave: sheetPlace !== "waitlisted",
575
577
  sheetBusy: busy || calendarBusy,
578
+ sheetServiceId: sheet?.serviceId ?? "",
576
579
  };
577
580
  }
578
581
 
@@ -698,7 +701,7 @@ function initial(): S {
698
701
  ...LOADING, firstWeekday: 0, today: "", selectedDate: "", rangeStart: "", rangeEnd: "",
699
702
  decorations: [], events: [], scrollTo: "", signedIn: false, updateRequired: false, updateMessage: "", listHidden: true,
700
703
  ...emptyFlags(false, false), resultOpen: false, resultOpenB: false, resultText: "", resultOk: false, resultInfo: false,
701
- sheetOpen: false, sheetTitle: "", sheetWhen: "", sheetMeta: "", sheetHideCalendar: true, sheetHideCancel: true, sheetHideLeave: true, sheetBusy: false,
704
+ sheetOpen: false, sheetTitle: "", sheetWhen: "", sheetMeta: "", sheetHideCalendar: true, sheetHideCancel: true, sheetHideLeave: true, sheetBusy: false, sheetServiceId: "",
702
705
  };
703
706
  }
704
707
 
@@ -52322,6 +52322,14 @@ const SCREENS = runtimeSetting({
52322
52322
  "actionId": "tier5.himiOwnerLiteManage.create",
52323
52323
  "params": {
52324
52324
  "id": "$item.id"
52325
+ },
52326
+ "nav": {
52327
+ "screenId": "$item.createScreenId",
52328
+ "args": {
52329
+ "title": "$item.createNavTitle",
52330
+ "subtitle": "$item.createNavSubtitle",
52331
+ "search": "$item.createNavSearch"
52332
+ }
52325
52333
  }
52326
52334
  },
52327
52335
  "accessibilityLabel": "$item.createLabel",
@@ -52383,6 +52391,14 @@ const SCREENS = runtimeSetting({
52383
52391
  "actionId": "tier5.himiOwnerLiteManage.openArea",
52384
52392
  "params": {
52385
52393
  "id": "$item.id"
52394
+ },
52395
+ "nav": {
52396
+ "screenId": "$item.screenId",
52397
+ "args": {
52398
+ "title": "$item.navTitle",
52399
+ "subtitle": "$item.navSubtitle",
52400
+ "search": "$item.navSearch"
52401
+ }
52386
52402
  }
52387
52403
  },
52388
52404
  "accessibilityLabel": "$item.title",
@@ -52628,6 +52644,14 @@ const SCREENS = runtimeSetting({
52628
52644
  "actionId": "tier5.himiOwnerLiteManage.create",
52629
52645
  "params": {
52630
52646
  "id": "$item.id"
52647
+ },
52648
+ "nav": {
52649
+ "screenId": "$item.createScreenId",
52650
+ "args": {
52651
+ "title": "$item.createNavTitle",
52652
+ "subtitle": "$item.createNavSubtitle",
52653
+ "search": "$item.createNavSearch"
52654
+ }
52631
52655
  }
52632
52656
  },
52633
52657
  "accessibilityLabel": "$item.createLabel",
@@ -52689,6 +52713,14 @@ const SCREENS = runtimeSetting({
52689
52713
  "actionId": "tier5.himiOwnerLiteManage.openArea",
52690
52714
  "params": {
52691
52715
  "id": "$item.id"
52716
+ },
52717
+ "nav": {
52718
+ "screenId": "$item.screenId",
52719
+ "args": {
52720
+ "title": "$item.navTitle",
52721
+ "subtitle": "$item.navSubtitle",
52722
+ "search": "$item.navSearch"
52723
+ }
52692
52724
  }
52693
52725
  },
52694
52726
  "accessibilityLabel": "$item.title",
@@ -66032,7 +66064,10 @@ const SCREENS = runtimeSetting({
66032
66064
  "title": "Back to Inbox",
66033
66065
  "style": "secondary",
66034
66066
  "action": {
66035
- "actionId": "tier5.ownerLiteInboxThread.back"
66067
+ "actionId": "tier5.ownerLiteInboxThread.back",
66068
+ "nav": {
66069
+ "presentation": "back"
66070
+ }
66036
66071
  }
66037
66072
  }
66038
66073
  }
@@ -56,6 +56,13 @@ export interface ManageArea {
56
56
  navigation?: ManageNavigation;
57
57
  /** The same for its create screen. */
58
58
  createNavigation?: ManageNavigation;
59
+ /** [navigation] flattened for the card's declared route (`$item.` reads flat fields only); "" when absent. */
60
+ navTitle?: string;
61
+ navSubtitle?: string;
62
+ navSearch?: string;
63
+ createNavTitle?: string;
64
+ createNavSubtitle?: string;
65
+ createNavSearch?: string;
59
66
  }
60
67
 
61
68
  /** A page's navigation as the build declares it: its title and subtitle, and where its search goes (none without one). */
@@ -118,6 +125,8 @@ export function parseAreas(value: unknown): ManageArea[] {
118
125
  const area = Object.fromEntries(required) as Record<string, string>;
119
126
  const createScreenId = clean(raw.createScreenId);
120
127
  const createLabel = clean(raw.createLabel);
128
+ const navigation = parseNavigation(raw.navigation);
129
+ const createNavigation = createScreenId && createLabel ? parseNavigation(raw.createNavigation) : undefined;
121
130
  // Creation is only an in-app route when both fields are present. A lone
122
131
  // label must not produce a promising but inert action.
123
132
  return [{
@@ -126,8 +135,11 @@ export function parseAreas(value: unknown): ManageArea[] {
126
135
  hideCreate: !(createScreenId && createLabel),
127
136
  hideHandoff: !DASHBOARD_PATHS[area.id],
128
137
  handoffLabel: clean(raw.handoffLabel) || `Open in Wix: ${area.title}`,
129
- ...(parseNavigation(raw.navigation) ? { navigation: parseNavigation(raw.navigation) } : {}),
130
- ...(createScreenId && createLabel && parseNavigation(raw.createNavigation) ? { createNavigation: parseNavigation(raw.createNavigation) } : {}),
138
+ ...(navigation ? { navigation } : {}),
139
+ ...(createNavigation ? { createNavigation } : {}),
140
+ navTitle: navigation?.title ?? "", navSubtitle: navigation?.subtitle ?? "", navSearch: navigation?.search ?? "",
141
+ createNavTitle: createNavigation?.title ?? "", createNavSubtitle: createNavigation?.subtitle ?? "",
142
+ createNavSearch: createNavigation?.search ?? "",
131
143
  metricText: "—",
132
144
  statusText: "",
133
145
  unavailable: false,
@@ -51939,6 +51939,14 @@ const SCREENS = runtimeSetting({
51939
51939
  "actionId": "tier5.himiOwnerLiteManage.create",
51940
51940
  "params": {
51941
51941
  "id": "$item.id"
51942
+ },
51943
+ "nav": {
51944
+ "screenId": "$item.createScreenId",
51945
+ "args": {
51946
+ "title": "$item.createNavTitle",
51947
+ "subtitle": "$item.createNavSubtitle",
51948
+ "search": "$item.createNavSearch"
51949
+ }
51942
51950
  }
51943
51951
  },
51944
51952
  "accessibilityLabel": "$item.createLabel",
@@ -52000,6 +52008,14 @@ const SCREENS = runtimeSetting({
52000
52008
  "actionId": "tier5.himiOwnerLiteManage.openArea",
52001
52009
  "params": {
52002
52010
  "id": "$item.id"
52011
+ },
52012
+ "nav": {
52013
+ "screenId": "$item.screenId",
52014
+ "args": {
52015
+ "title": "$item.navTitle",
52016
+ "subtitle": "$item.navSubtitle",
52017
+ "search": "$item.navSearch"
52018
+ }
52003
52019
  }
52004
52020
  },
52005
52021
  "accessibilityLabel": "$item.title",
@@ -52245,6 +52261,14 @@ const SCREENS = runtimeSetting({
52245
52261
  "actionId": "tier5.himiOwnerLiteManage.create",
52246
52262
  "params": {
52247
52263
  "id": "$item.id"
52264
+ },
52265
+ "nav": {
52266
+ "screenId": "$item.createScreenId",
52267
+ "args": {
52268
+ "title": "$item.createNavTitle",
52269
+ "subtitle": "$item.createNavSubtitle",
52270
+ "search": "$item.createNavSearch"
52271
+ }
52248
52272
  }
52249
52273
  },
52250
52274
  "accessibilityLabel": "$item.createLabel",
@@ -52306,6 +52330,14 @@ const SCREENS = runtimeSetting({
52306
52330
  "actionId": "tier5.himiOwnerLiteManage.openArea",
52307
52331
  "params": {
52308
52332
  "id": "$item.id"
52333
+ },
52334
+ "nav": {
52335
+ "screenId": "$item.screenId",
52336
+ "args": {
52337
+ "title": "$item.navTitle",
52338
+ "subtitle": "$item.navSubtitle",
52339
+ "search": "$item.navSearch"
52340
+ }
52309
52341
  }
52310
52342
  },
52311
52343
  "accessibilityLabel": "$item.title",
@@ -65649,7 +65681,10 @@ const SCREENS = runtimeSetting({
65649
65681
  "title": "Back to Inbox",
65650
65682
  "style": "secondary",
65651
65683
  "action": {
65652
- "actionId": "tier5.ownerLiteInboxThread.back"
65684
+ "actionId": "tier5.ownerLiteInboxThread.back",
65685
+ "nav": {
65686
+ "presentation": "back"
65687
+ }
65653
65688
  }
65654
65689
  }
65655
65690
  }
@@ -56,6 +56,13 @@ export interface ManageArea {
56
56
  navigation?: ManageNavigation;
57
57
  /** The same for its create screen. */
58
58
  createNavigation?: ManageNavigation;
59
+ /** [navigation] flattened for the card's declared route (`$item.` reads flat fields only); "" when absent. */
60
+ navTitle?: string;
61
+ navSubtitle?: string;
62
+ navSearch?: string;
63
+ createNavTitle?: string;
64
+ createNavSubtitle?: string;
65
+ createNavSearch?: string;
59
66
  }
60
67
 
61
68
  /** A page's navigation as the build declares it: its title and subtitle, and where its search goes (none without one). */
@@ -118,6 +125,8 @@ export function parseAreas(value: unknown): ManageArea[] {
118
125
  const area = Object.fromEntries(required) as Record<string, string>;
119
126
  const createScreenId = clean(raw.createScreenId);
120
127
  const createLabel = clean(raw.createLabel);
128
+ const navigation = parseNavigation(raw.navigation);
129
+ const createNavigation = createScreenId && createLabel ? parseNavigation(raw.createNavigation) : undefined;
121
130
  // Creation is only an in-app route when both fields are present. A lone
122
131
  // label must not produce a promising but inert action.
123
132
  return [{
@@ -126,8 +135,11 @@ export function parseAreas(value: unknown): ManageArea[] {
126
135
  hideCreate: !(createScreenId && createLabel),
127
136
  hideHandoff: !DASHBOARD_PATHS[area.id],
128
137
  handoffLabel: clean(raw.handoffLabel) || `Open in Wix: ${area.title}`,
129
- ...(parseNavigation(raw.navigation) ? { navigation: parseNavigation(raw.navigation) } : {}),
130
- ...(createScreenId && createLabel && parseNavigation(raw.createNavigation) ? { createNavigation: parseNavigation(raw.createNavigation) } : {}),
138
+ ...(navigation ? { navigation } : {}),
139
+ ...(createNavigation ? { createNavigation } : {}),
140
+ navTitle: navigation?.title ?? "", navSubtitle: navigation?.subtitle ?? "", navSearch: navigation?.search ?? "",
141
+ createNavTitle: createNavigation?.title ?? "", createNavSubtitle: createNavigation?.subtitle ?? "",
142
+ createNavSearch: createNavigation?.search ?? "",
131
143
  metricText: "—",
132
144
  statusText: "",
133
145
  unavailable: false,
@@ -52321,6 +52321,14 @@ const SCREENS = runtimeSetting({
52321
52321
  "actionId": "tier5.himiOwnerLiteManage.create",
52322
52322
  "params": {
52323
52323
  "id": "$item.id"
52324
+ },
52325
+ "nav": {
52326
+ "screenId": "$item.createScreenId",
52327
+ "args": {
52328
+ "title": "$item.createNavTitle",
52329
+ "subtitle": "$item.createNavSubtitle",
52330
+ "search": "$item.createNavSearch"
52331
+ }
52324
52332
  }
52325
52333
  },
52326
52334
  "accessibilityLabel": "$item.createLabel",
@@ -52382,6 +52390,14 @@ const SCREENS = runtimeSetting({
52382
52390
  "actionId": "tier5.himiOwnerLiteManage.openArea",
52383
52391
  "params": {
52384
52392
  "id": "$item.id"
52393
+ },
52394
+ "nav": {
52395
+ "screenId": "$item.screenId",
52396
+ "args": {
52397
+ "title": "$item.navTitle",
52398
+ "subtitle": "$item.navSubtitle",
52399
+ "search": "$item.navSearch"
52400
+ }
52385
52401
  }
52386
52402
  },
52387
52403
  "accessibilityLabel": "$item.title",
@@ -52627,6 +52643,14 @@ const SCREENS = runtimeSetting({
52627
52643
  "actionId": "tier5.himiOwnerLiteManage.create",
52628
52644
  "params": {
52629
52645
  "id": "$item.id"
52646
+ },
52647
+ "nav": {
52648
+ "screenId": "$item.createScreenId",
52649
+ "args": {
52650
+ "title": "$item.createNavTitle",
52651
+ "subtitle": "$item.createNavSubtitle",
52652
+ "search": "$item.createNavSearch"
52653
+ }
52630
52654
  }
52631
52655
  },
52632
52656
  "accessibilityLabel": "$item.createLabel",
@@ -52688,6 +52712,14 @@ const SCREENS = runtimeSetting({
52688
52712
  "actionId": "tier5.himiOwnerLiteManage.openArea",
52689
52713
  "params": {
52690
52714
  "id": "$item.id"
52715
+ },
52716
+ "nav": {
52717
+ "screenId": "$item.screenId",
52718
+ "args": {
52719
+ "title": "$item.navTitle",
52720
+ "subtitle": "$item.navSubtitle",
52721
+ "search": "$item.navSearch"
52722
+ }
52691
52723
  }
52692
52724
  },
52693
52725
  "accessibilityLabel": "$item.title",
@@ -66026,7 +66058,10 @@ const SCREENS = runtimeSetting({
66026
66058
  "title": "Back to Inbox",
66027
66059
  "style": "secondary",
66028
66060
  "action": {
66029
- "actionId": "tier5.ownerLiteInboxThread.back"
66061
+ "actionId": "tier5.ownerLiteInboxThread.back",
66062
+ "nav": {
66063
+ "presentation": "back"
66064
+ }
66030
66065
  }
66031
66066
  }
66032
66067
  }
@@ -56,6 +56,13 @@ export interface ManageArea {
56
56
  navigation?: ManageNavigation;
57
57
  /** The same for its create screen. */
58
58
  createNavigation?: ManageNavigation;
59
+ /** [navigation] flattened for the card's declared route (`$item.` reads flat fields only); "" when absent. */
60
+ navTitle?: string;
61
+ navSubtitle?: string;
62
+ navSearch?: string;
63
+ createNavTitle?: string;
64
+ createNavSubtitle?: string;
65
+ createNavSearch?: string;
59
66
  }
60
67
 
61
68
  /** A page's navigation as the build declares it: its title and subtitle, and where its search goes (none without one). */
@@ -118,6 +125,8 @@ export function parseAreas(value: unknown): ManageArea[] {
118
125
  const area = Object.fromEntries(required) as Record<string, string>;
119
126
  const createScreenId = clean(raw.createScreenId);
120
127
  const createLabel = clean(raw.createLabel);
128
+ const navigation = parseNavigation(raw.navigation);
129
+ const createNavigation = createScreenId && createLabel ? parseNavigation(raw.createNavigation) : undefined;
121
130
  // Creation is only an in-app route when both fields are present. A lone
122
131
  // label must not produce a promising but inert action.
123
132
  return [{
@@ -126,8 +135,11 @@ export function parseAreas(value: unknown): ManageArea[] {
126
135
  hideCreate: !(createScreenId && createLabel),
127
136
  hideHandoff: !DASHBOARD_PATHS[area.id],
128
137
  handoffLabel: clean(raw.handoffLabel) || `Open in Wix: ${area.title}`,
129
- ...(parseNavigation(raw.navigation) ? { navigation: parseNavigation(raw.navigation) } : {}),
130
- ...(createScreenId && createLabel && parseNavigation(raw.createNavigation) ? { createNavigation: parseNavigation(raw.createNavigation) } : {}),
138
+ ...(navigation ? { navigation } : {}),
139
+ ...(createNavigation ? { createNavigation } : {}),
140
+ navTitle: navigation?.title ?? "", navSubtitle: navigation?.subtitle ?? "", navSearch: navigation?.search ?? "",
141
+ createNavTitle: createNavigation?.title ?? "", createNavSubtitle: createNavigation?.subtitle ?? "",
142
+ createNavSearch: createNavigation?.search ?? "",
131
143
  metricText: "—",
132
144
  statusText: "",
133
145
  unavailable: false,
@@ -52246,6 +52246,14 @@ const SCREENS = runtimeSetting({
52246
52246
  "actionId": "tier5.himiOwnerLiteManage.create",
52247
52247
  "params": {
52248
52248
  "id": "$item.id"
52249
+ },
52250
+ "nav": {
52251
+ "screenId": "$item.createScreenId",
52252
+ "args": {
52253
+ "title": "$item.createNavTitle",
52254
+ "subtitle": "$item.createNavSubtitle",
52255
+ "search": "$item.createNavSearch"
52256
+ }
52249
52257
  }
52250
52258
  },
52251
52259
  "accessibilityLabel": "$item.createLabel",
@@ -52307,6 +52315,14 @@ const SCREENS = runtimeSetting({
52307
52315
  "actionId": "tier5.himiOwnerLiteManage.openArea",
52308
52316
  "params": {
52309
52317
  "id": "$item.id"
52318
+ },
52319
+ "nav": {
52320
+ "screenId": "$item.screenId",
52321
+ "args": {
52322
+ "title": "$item.navTitle",
52323
+ "subtitle": "$item.navSubtitle",
52324
+ "search": "$item.navSearch"
52325
+ }
52310
52326
  }
52311
52327
  },
52312
52328
  "accessibilityLabel": "$item.title",
@@ -52552,6 +52568,14 @@ const SCREENS = runtimeSetting({
52552
52568
  "actionId": "tier5.himiOwnerLiteManage.create",
52553
52569
  "params": {
52554
52570
  "id": "$item.id"
52571
+ },
52572
+ "nav": {
52573
+ "screenId": "$item.createScreenId",
52574
+ "args": {
52575
+ "title": "$item.createNavTitle",
52576
+ "subtitle": "$item.createNavSubtitle",
52577
+ "search": "$item.createNavSearch"
52578
+ }
52555
52579
  }
52556
52580
  },
52557
52581
  "accessibilityLabel": "$item.createLabel",
@@ -52613,6 +52637,14 @@ const SCREENS = runtimeSetting({
52613
52637
  "actionId": "tier5.himiOwnerLiteManage.openArea",
52614
52638
  "params": {
52615
52639
  "id": "$item.id"
52640
+ },
52641
+ "nav": {
52642
+ "screenId": "$item.screenId",
52643
+ "args": {
52644
+ "title": "$item.navTitle",
52645
+ "subtitle": "$item.navSubtitle",
52646
+ "search": "$item.navSearch"
52647
+ }
52616
52648
  }
52617
52649
  },
52618
52650
  "accessibilityLabel": "$item.title",
@@ -65956,7 +65988,10 @@ const SCREENS = runtimeSetting({
65956
65988
  "title": "Back to Inbox",
65957
65989
  "style": "secondary",
65958
65990
  "action": {
65959
- "actionId": "tier5.ownerLiteInboxThread.back"
65991
+ "actionId": "tier5.ownerLiteInboxThread.back",
65992
+ "nav": {
65993
+ "presentation": "back"
65994
+ }
65960
65995
  }
65961
65996
  }
65962
65997
  }
@@ -56,6 +56,13 @@ export interface ManageArea {
56
56
  navigation?: ManageNavigation;
57
57
  /** The same for its create screen. */
58
58
  createNavigation?: ManageNavigation;
59
+ /** [navigation] flattened for the card's declared route (`$item.` reads flat fields only); "" when absent. */
60
+ navTitle?: string;
61
+ navSubtitle?: string;
62
+ navSearch?: string;
63
+ createNavTitle?: string;
64
+ createNavSubtitle?: string;
65
+ createNavSearch?: string;
59
66
  }
60
67
 
61
68
  /** A page's navigation as the build declares it: its title and subtitle, and where its search goes (none without one). */
@@ -118,6 +125,8 @@ export function parseAreas(value: unknown): ManageArea[] {
118
125
  const area = Object.fromEntries(required) as Record<string, string>;
119
126
  const createScreenId = clean(raw.createScreenId);
120
127
  const createLabel = clean(raw.createLabel);
128
+ const navigation = parseNavigation(raw.navigation);
129
+ const createNavigation = createScreenId && createLabel ? parseNavigation(raw.createNavigation) : undefined;
121
130
  // Creation is only an in-app route when both fields are present. A lone
122
131
  // label must not produce a promising but inert action.
123
132
  return [{
@@ -126,8 +135,11 @@ export function parseAreas(value: unknown): ManageArea[] {
126
135
  hideCreate: !(createScreenId && createLabel),
127
136
  hideHandoff: !DASHBOARD_PATHS[area.id],
128
137
  handoffLabel: clean(raw.handoffLabel) || `Open in Wix: ${area.title}`,
129
- ...(parseNavigation(raw.navigation) ? { navigation: parseNavigation(raw.navigation) } : {}),
130
- ...(createScreenId && createLabel && parseNavigation(raw.createNavigation) ? { createNavigation: parseNavigation(raw.createNavigation) } : {}),
138
+ ...(navigation ? { navigation } : {}),
139
+ ...(createNavigation ? { createNavigation } : {}),
140
+ navTitle: navigation?.title ?? "", navSubtitle: navigation?.subtitle ?? "", navSearch: navigation?.search ?? "",
141
+ createNavTitle: createNavigation?.title ?? "", createNavSubtitle: createNavigation?.subtitle ?? "",
142
+ createNavSearch: createNavigation?.search ?? "",
131
143
  metricText: "—",
132
144
  statusText: "",
133
145
  unavailable: false,
@@ -16355,6 +16355,9 @@ const SCREENS = runtimeSetting({
16355
16355
  "actionId": "tier5.himiBrandedAddresses.edit",
16356
16356
  "params": {
16357
16357
  "id": "$item.id"
16358
+ },
16359
+ "nav": {
16360
+ "screenId": "himi_address"
16358
16361
  }
16359
16362
  }
16360
16363
  }
@@ -16591,7 +16594,11 @@ const SCREENS = runtimeSetting({
16591
16594
  "fullWidth": true,
16592
16595
  "leadingIcon": "plus",
16593
16596
  "action": {
16594
- "actionId": "tier5.himiBrandedAddresses.add"
16597
+ "actionId": "tier5.himiBrandedAddresses.add",
16598
+ "nav": {
16599
+ "screenId": "himi_address",
16600
+ "args": {}
16601
+ }
16595
16602
  }
16596
16603
  }
16597
16604
  },