@wix/himalaya-cli 0.1568.0 → 0.1570.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 (168) hide show
  1. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/dev-server/src/l10n-strings.d.ts +3 -2
  2. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/screens/src/business-contact-service.d.ts +17 -0
  3. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/screens/src/business-contact.d.ts +73 -0
  4. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/screens/src/index.d.ts +3 -0
  5. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/screens/src/invite-target.d.ts +1 -0
  6. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/screens/src/invite.d.ts +148 -0
  7. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/screens.mjs +558 -84
  8. package/dist/cli.mjs +21211 -20843
  9. package/dist/preview-assets.generated.bin +0 -0
  10. package/guides/app-config.md +10 -0
  11. package/guides/app-icon.md +20 -1
  12. package/guides/getting-started.md +5 -0
  13. package/guides/himi-json-output.md +7 -0
  14. package/guides/himi-skill.md +5 -0
  15. package/guides/one-app-to-himi-app.md +159 -4
  16. package/guides/skill.md +5 -0
  17. package/guides/splash-screens.md +156 -5
  18. package/guides/tier-5-add-a-screen.md +20 -0
  19. package/package.json +2 -2
  20. package/templates/beauty-salon/config.ts +17 -0
  21. package/templates/beauty-salon/dev/index.ts +478 -0
  22. package/templates/beauty-salon/himalaya.content.json +6 -0
  23. package/templates/beauty-salon/splash.json +3 -0
  24. package/templates/beauty-salon/tier5-src/_shared/himi-copy.ts +17 -6
  25. package/templates/beauty-salon/tier5-src/_shared/rich-body.ts +44 -0
  26. package/templates/beauty-salon/tier5-src/business-contact/index.ts +6 -0
  27. package/templates/beauty-salon/tier5-src/himi-booking-service/index.ts +13 -9
  28. package/templates/beauty-salon/tier5-src/himi-branded-lite-splash/index.ts +35 -0
  29. package/templates/beauty-salon-owner/config.ts +8 -0
  30. package/templates/beauty-salon-owner/dev/index.ts +1 -0
  31. package/templates/beauty-salon-owner/tier5-src/_shared/himi-copy.ts +17 -6
  32. package/templates/beauty-salon-owner/tier5-src/_shared/rich-body.ts +44 -0
  33. package/templates/branded-lite/config.ts +17 -0
  34. package/templates/branded-lite/dev/index.ts +541 -1
  35. package/templates/branded-lite/himalaya.content.json +6 -0
  36. package/templates/branded-lite/splash.json +3 -0
  37. package/templates/branded-lite/tier5-src/_shared/himi-copy.ts +17 -6
  38. package/templates/branded-lite/tier5-src/_shared/rich-body.ts +44 -0
  39. package/templates/branded-lite/tier5-src/business-contact/index.ts +6 -0
  40. package/templates/branded-lite/tier5-src/himi-booking-service/index.ts +13 -9
  41. package/templates/branded-lite/tier5-src/himi-branded-lite-group/index.ts +20 -3
  42. package/templates/branded-lite/tier5-src/himi-branded-lite-groups/index.ts +18 -2
  43. package/templates/branded-lite/tier5-src/himi-branded-lite-notifsettings/index.ts +39 -11
  44. package/templates/branded-lite/tier5-src/himi-branded-lite-splash/index.ts +35 -0
  45. package/templates/brandy/tier5-src/_shared/himi-copy.ts +17 -6
  46. package/templates/community-club/config.ts +17 -0
  47. package/templates/community-club/dev/index.ts +480 -1
  48. package/templates/community-club/himalaya.content.json +6 -0
  49. package/templates/community-club/splash.json +3 -0
  50. package/templates/community-club/tier5-src/_shared/himi-copy.ts +17 -6
  51. package/templates/community-club/tier5-src/_shared/rich-body.ts +44 -0
  52. package/templates/community-club/tier5-src/business-contact/index.ts +6 -0
  53. package/templates/community-club/tier5-src/himi-branded-lite-group/index.ts +20 -3
  54. package/templates/community-club/tier5-src/himi-branded-lite-groups/index.ts +18 -2
  55. package/templates/community-club/tier5-src/himi-branded-lite-splash/index.ts +35 -0
  56. package/templates/community-club-owner/config.ts +8 -0
  57. package/templates/community-club-owner/dev/index.ts +1 -0
  58. package/templates/community-club-owner/tier5-src/_shared/himi-copy.ts +17 -6
  59. package/templates/community-club-owner/tier5-src/_shared/rich-body.ts +44 -0
  60. package/templates/events-meetups/config.ts +17 -0
  61. package/templates/events-meetups/dev/index.ts +480 -1
  62. package/templates/events-meetups/himalaya.content.json +6 -0
  63. package/templates/events-meetups/splash.json +3 -0
  64. package/templates/events-meetups/tier5-src/_shared/himi-copy.ts +17 -6
  65. package/templates/events-meetups/tier5-src/_shared/rich-body.ts +44 -0
  66. package/templates/events-meetups/tier5-src/business-contact/index.ts +6 -0
  67. package/templates/events-meetups/tier5-src/himi-branded-lite-group/index.ts +20 -3
  68. package/templates/events-meetups/tier5-src/himi-branded-lite-groups/index.ts +18 -2
  69. package/templates/events-meetups/tier5-src/himi-branded-lite-splash/index.ts +35 -0
  70. package/templates/events-meetups-owner/config.ts +8 -0
  71. package/templates/events-meetups-owner/dev/index.ts +1 -0
  72. package/templates/events-meetups-owner/tier5-src/_shared/himi-copy.ts +17 -6
  73. package/templates/events-meetups-owner/tier5-src/_shared/rich-body.ts +44 -0
  74. package/templates/gym-fitness/config.ts +17 -0
  75. package/templates/gym-fitness/dev/index.ts +478 -0
  76. package/templates/gym-fitness/himalaya.content.json +6 -0
  77. package/templates/gym-fitness/splash.json +3 -0
  78. package/templates/gym-fitness/tier5-src/_shared/himi-copy.ts +17 -6
  79. package/templates/gym-fitness/tier5-src/_shared/rich-body.ts +44 -0
  80. package/templates/gym-fitness/tier5-src/business-contact/index.ts +6 -0
  81. package/templates/gym-fitness/tier5-src/himi-booking-service/index.ts +13 -9
  82. package/templates/gym-fitness/tier5-src/himi-branded-lite-splash/index.ts +35 -0
  83. package/templates/gym-fitness-owner/config.ts +8 -0
  84. package/templates/gym-fitness-owner/dev/index.ts +1 -0
  85. package/templates/gym-fitness-owner/tier5-src/_shared/himi-copy.ts +17 -6
  86. package/templates/gym-fitness-owner/tier5-src/_shared/rich-body.ts +44 -0
  87. package/templates/himi-chat/dev/index.ts +1 -0
  88. package/templates/himi-chat/tier5-src/_shared/himi-copy.ts +17 -6
  89. package/templates/nonprofit-cause/config.ts +17 -0
  90. package/templates/nonprofit-cause/dev/index.ts +480 -1
  91. package/templates/nonprofit-cause/himalaya.content.json +6 -0
  92. package/templates/nonprofit-cause/splash.json +3 -0
  93. package/templates/nonprofit-cause/tier5-src/_shared/himi-copy.ts +17 -6
  94. package/templates/nonprofit-cause/tier5-src/_shared/rich-body.ts +44 -0
  95. package/templates/nonprofit-cause/tier5-src/business-contact/index.ts +6 -0
  96. package/templates/nonprofit-cause/tier5-src/himi-branded-lite-group/index.ts +20 -3
  97. package/templates/nonprofit-cause/tier5-src/himi-branded-lite-groups/index.ts +18 -2
  98. package/templates/nonprofit-cause/tier5-src/himi-branded-lite-splash/index.ts +35 -0
  99. package/templates/nonprofit-cause-owner/config.ts +8 -0
  100. package/templates/nonprofit-cause-owner/dev/index.ts +1 -0
  101. package/templates/nonprofit-cause-owner/tier5-src/_shared/himi-copy.ts +17 -6
  102. package/templates/nonprofit-cause-owner/tier5-src/_shared/rich-body.ts +44 -0
  103. package/templates/owner-lite/config.ts +8 -0
  104. package/templates/owner-lite/dev/index.ts +1 -0
  105. package/templates/owner-lite/tier5-src/_shared/himi-copy.ts +17 -6
  106. package/templates/owner-lite/tier5-src/_shared/rich-body.ts +44 -0
  107. package/templates/podcast-creator/config.ts +17 -0
  108. package/templates/podcast-creator/dev/index.ts +450 -0
  109. package/templates/podcast-creator/himalaya.content.json +6 -0
  110. package/templates/podcast-creator/splash.json +3 -0
  111. package/templates/podcast-creator/tier5-src/_shared/himi-copy.ts +17 -6
  112. package/templates/podcast-creator/tier5-src/_shared/rich-body.ts +44 -0
  113. package/templates/podcast-creator/tier5-src/business-contact/index.ts +6 -0
  114. package/templates/podcast-creator/tier5-src/himi-branded-lite-splash/index.ts +35 -0
  115. package/templates/podcast-creator-owner/config.ts +8 -0
  116. package/templates/podcast-creator-owner/dev/index.ts +1 -0
  117. package/templates/podcast-creator-owner/tier5-src/_shared/himi-copy.ts +17 -6
  118. package/templates/podcast-creator-owner/tier5-src/_shared/rich-body.ts +44 -0
  119. package/templates/portfolio-creative/config.ts +17 -0
  120. package/templates/portfolio-creative/dev/index.ts +450 -0
  121. package/templates/portfolio-creative/himalaya.content.json +6 -0
  122. package/templates/portfolio-creative/splash.json +3 -0
  123. package/templates/portfolio-creative/tier5-src/_shared/himi-copy.ts +17 -6
  124. package/templates/portfolio-creative/tier5-src/_shared/rich-body.ts +44 -0
  125. package/templates/portfolio-creative/tier5-src/business-contact/index.ts +6 -0
  126. package/templates/portfolio-creative/tier5-src/himi-branded-lite-splash/index.ts +35 -0
  127. package/templates/portfolio-creative-owner/config.ts +8 -0
  128. package/templates/portfolio-creative-owner/dev/index.ts +1 -0
  129. package/templates/portfolio-creative-owner/tier5-src/_shared/himi-copy.ts +17 -6
  130. package/templates/portfolio-creative-owner/tier5-src/_shared/rich-body.ts +44 -0
  131. package/templates/restaurant/config.ts +17 -0
  132. package/templates/restaurant/dev/index.ts +450 -0
  133. package/templates/restaurant/himalaya.content.json +6 -0
  134. package/templates/restaurant/splash.json +3 -0
  135. package/templates/restaurant/tier5-src/_shared/himi-copy.ts +17 -6
  136. package/templates/restaurant/tier5-src/_shared/rich-body.ts +44 -0
  137. package/templates/restaurant/tier5-src/business-contact/index.ts +6 -0
  138. package/templates/restaurant/tier5-src/himi-branded-lite-splash/index.ts +35 -0
  139. package/templates/restaurant-owner/config.ts +8 -0
  140. package/templates/restaurant-owner/dev/index.ts +1 -0
  141. package/templates/restaurant-owner/tier5-src/_shared/himi-copy.ts +17 -6
  142. package/templates/restaurant-owner/tier5-src/_shared/rich-body.ts +44 -0
  143. package/templates/retail-store/config.ts +17 -0
  144. package/templates/retail-store/dev/index.ts +450 -0
  145. package/templates/retail-store/himalaya.content.json +6 -0
  146. package/templates/retail-store/splash.json +3 -0
  147. package/templates/retail-store/tier5-src/_shared/himi-copy.ts +17 -6
  148. package/templates/retail-store/tier5-src/_shared/rich-body.ts +44 -0
  149. package/templates/retail-store/tier5-src/business-contact/index.ts +6 -0
  150. package/templates/retail-store/tier5-src/himi-branded-lite-splash/index.ts +35 -0
  151. package/templates/retail-store-owner/config.ts +8 -0
  152. package/templates/retail-store-owner/dev/index.ts +1 -0
  153. package/templates/retail-store-owner/tier5-src/_shared/himi-copy.ts +17 -6
  154. package/templates/retail-store-owner/tier5-src/_shared/rich-body.ts +44 -0
  155. package/templates/surface-showcase/dev/index.ts +1 -0
  156. package/templates/yoga-studio/config.ts +17 -0
  157. package/templates/yoga-studio/dev/index.ts +478 -0
  158. package/templates/yoga-studio/himalaya.content.json +6 -0
  159. package/templates/yoga-studio/splash.json +3 -0
  160. package/templates/yoga-studio/tier5-src/_shared/himi-copy.ts +17 -6
  161. package/templates/yoga-studio/tier5-src/_shared/rich-body.ts +44 -0
  162. package/templates/yoga-studio/tier5-src/business-contact/index.ts +6 -0
  163. package/templates/yoga-studio/tier5-src/himi-booking-service/index.ts +13 -9
  164. package/templates/yoga-studio/tier5-src/himi-branded-lite-splash/index.ts +35 -0
  165. package/templates/yoga-studio-owner/config.ts +8 -0
  166. package/templates/yoga-studio-owner/dev/index.ts +1 -0
  167. package/templates/yoga-studio-owner/tier5-src/_shared/himi-copy.ts +17 -6
  168. package/templates/yoga-studio-owner/tier5-src/_shared/rich-body.ts +44 -0
@@ -2,6 +2,7 @@
2
2
  // Raw-descriptor dialect (see `himi docs tier-5-add-a-screen`); templated routes
3
3
  // fill __HIMI_ID__ sentinels per request.
4
4
  import config from "../config.js";
5
+ import splashIcon from "../splash.json" with { type: "json" };
5
6
 
6
7
  const runtimeSetting = (value: unknown): unknown => {
7
8
  if (value === "__HIMI_PODCAST_FEED_URL__") return process.env.PODCAST_FEED_URL?.trim() || "";
@@ -13,6 +14,227 @@ const runtimeSetting = (value: unknown): unknown => {
13
14
  };
14
15
 
15
16
  const SCREENS = runtimeSetting({
17
+ "himi_branded_splash": {
18
+ "screenId": "himi_branded_splash",
19
+ "renderer": "sdui_intent",
20
+ "title": "",
21
+ "schemaVersion": 1,
22
+ "cacheControl": {
23
+ "maxAge": 0,
24
+ "staleWhileRevalidate": 0
25
+ },
26
+ "input": {
27
+ "showIcon": true,
28
+ "title": "",
29
+ "caption": ""
30
+ },
31
+ "logicBundle": {
32
+ "url": "http://localhost:8190/v1/bundles/himi-branded-lite-splash?integrity=",
33
+ "integrity": "",
34
+ "contentType": "application/javascript+ts-bundle",
35
+ "declaredCapabilities": [],
36
+ "minBinaryVersion": "0.1.0",
37
+ "bundleVersion": "0.0.1"
38
+ },
39
+ "payload": {
40
+ "id": "splash_t5",
41
+ "body": {
42
+ "package": "himalaya",
43
+ "type": "ZStack",
44
+ "props": {
45
+ "alignment": "center",
46
+ "children": [
47
+ {
48
+ "id": "splash_t5_gradient",
49
+ "body": {
50
+ "package": "himalaya",
51
+ "type": "VStack",
52
+ "props": {
53
+ "children": [
54
+ {
55
+ "id": "splash_t5_gradient_fill",
56
+ "body": {
57
+ "package": "himalaya",
58
+ "type": "Spacer",
59
+ "props": {}
60
+ }
61
+ }
62
+ ]
63
+ }
64
+ },
65
+ "modifiers": {
66
+ "fillMaxWidth": true,
67
+ "backgroundGradient": {
68
+ "token": "brand"
69
+ },
70
+ "transition": {
71
+ "enter": "fade",
72
+ "motion": {
73
+ "token": "appearSoft"
74
+ }
75
+ },
76
+ "respectReducedMotion": true
77
+ }
78
+ },
79
+ {
80
+ "id": "splash_t5_icon",
81
+ "body": {
82
+ "package": "himalaya",
83
+ "type": "ZStack",
84
+ "props": {
85
+ "alignment": "center",
86
+ "children": [
87
+ {
88
+ "id": "splash_t5_icon_image",
89
+ "body": {
90
+ "package": "himalaya",
91
+ "type": "Image",
92
+ "props": {
93
+ "asset": "branded_lite_app_icon",
94
+ "width": 192,
95
+ "height": 192,
96
+ "contentMode": "fit"
97
+ }
98
+ },
99
+ "modifiers": {
100
+ "accessibilityRole": "decorative",
101
+ "scale": 1.5
102
+ }
103
+ }
104
+ ]
105
+ }
106
+ },
107
+ "modifiers": {
108
+ "width": 192,
109
+ "height": 192,
110
+ "clipShape": "circle",
111
+ "accessibilityRole": "decorative",
112
+ "hiddenPath": "$service:splash.iconHidden",
113
+ "transition": {
114
+ "enter": "none",
115
+ "exit": "fade",
116
+ "motion": {
117
+ "token": "appearSoft"
118
+ }
119
+ },
120
+ "respectReducedMotion": true
121
+ }
122
+ },
123
+ {
124
+ "id": "",
125
+ "body": {
126
+ "package": "himalaya",
127
+ "type": "VStack",
128
+ "props": {
129
+ "alignment": "center",
130
+ "spacing": 0,
131
+ "children": [
132
+ {
133
+ "id": "splash_t5_top",
134
+ "body": {
135
+ "package": "himalaya",
136
+ "type": "Spacer",
137
+ "props": {}
138
+ },
139
+ "modifiers": {
140
+ "weight": 1
141
+ }
142
+ },
143
+ {
144
+ "id": "splash_t5_copy",
145
+ "body": {
146
+ "package": "himalaya",
147
+ "type": "VStack",
148
+ "props": {
149
+ "alignment": "center",
150
+ "spacing": 16,
151
+ "children": [
152
+ {
153
+ "id": "splash_t5_title",
154
+ "body": {
155
+ "package": "himalaya",
156
+ "type": "Text",
157
+ "props": {
158
+ "text": "$service:splash.title",
159
+ "style": "title1",
160
+ "color": "textOnAccent",
161
+ "textAlign": "center"
162
+ }
163
+ }
164
+ },
165
+ {
166
+ "id": "splash_t5_caption",
167
+ "body": {
168
+ "package": "himalaya",
169
+ "type": "Text",
170
+ "props": {
171
+ "text": "$service:splash.caption",
172
+ "style": "body",
173
+ "color": "textOnAccent",
174
+ "collapseWhenEmpty": true,
175
+ "textAlign": "center"
176
+ }
177
+ }
178
+ },
179
+ {
180
+ "id": "splash_t5_bottom",
181
+ "body": {
182
+ "package": "himalaya",
183
+ "type": "Spacer",
184
+ "props": {}
185
+ }
186
+ }
187
+ ]
188
+ }
189
+ },
190
+ "modifiers": {
191
+ "weight": 1,
192
+ "fillMaxWidth": true,
193
+ "padding": {
194
+ "top": 120,
195
+ "bottom": 24,
196
+ "leading": 24,
197
+ "trailing": 24
198
+ }
199
+ }
200
+ }
201
+ ]
202
+ }
203
+ }
204
+ },
205
+ {
206
+ "id": "splash_t5_presented",
207
+ "body": {
208
+ "package": "himalaya",
209
+ "type": "Spacer",
210
+ "props": {}
211
+ },
212
+ "modifiers": {
213
+ "width": 0,
214
+ "height": 0,
215
+ "hiddenPath": "$service:splash.presentationPending",
216
+ "onAppear": {
217
+ "actionId": "splash.presented",
218
+ "params": {
219
+ "motion": "appearSoft"
220
+ }
221
+ }
222
+ }
223
+ }
224
+ ]
225
+ }
226
+ },
227
+ "modifiers": {
228
+ "fillMaxWidth": true,
229
+ "onAppear": {
230
+ "actionId": "tier5.splash.present"
231
+ },
232
+ "background": {
233
+ "token": "accentPrimary"
234
+ }
235
+ }
236
+ }
237
+ },
16
238
  "himi_branded_home": {
17
239
  "screenId": "himi_branded_home",
18
240
  "renderer": "sdui_intent",
@@ -7895,6 +8117,252 @@ const SCREENS = runtimeSetting({
7895
8117
  "bundleVersion": "0.0.1"
7896
8118
  }
7897
8119
  },
8120
+ "himi_business_contact": {
8121
+ "screenId": "himi_business_contact",
8122
+ "title": "Business contact",
8123
+ "renderer": "sdui_intent",
8124
+ "schemaVersion": 1,
8125
+ "cacheControl": {
8126
+ "maxAge": 0,
8127
+ "staleWhileRevalidate": 0
8128
+ },
8129
+ "payload": {
8130
+ "id": "himi_business_contact.root",
8131
+ "body": {
8132
+ "package": "himalaya",
8133
+ "type": "VStack",
8134
+ "props": {
8135
+ "spacing": 16,
8136
+ "alignment": "leading",
8137
+ "children": [
8138
+ {
8139
+ "id": "himi_business_contact.section",
8140
+ "body": {
8141
+ "package": "himalaya",
8142
+ "type": "VStack",
8143
+ "props": {
8144
+ "spacing": 12,
8145
+ "alignment": "leading",
8146
+ "children": [
8147
+ {
8148
+ "id": "himi_business_contact.section.title",
8149
+ "body": {
8150
+ "package": "himalaya",
8151
+ "type": "Text",
8152
+ "props": {
8153
+ "text": "Get in touch",
8154
+ "style": "title3",
8155
+ "collapseWhenEmpty": true
8156
+ }
8157
+ }
8158
+ },
8159
+ {
8160
+ "id": "himi_business_contact.section.message",
8161
+ "body": {
8162
+ "package": "himalaya",
8163
+ "type": "Button",
8164
+ "props": {
8165
+ "title": "Message",
8166
+ "style": "primary",
8167
+ "fullWidth": true,
8168
+ "action": {
8169
+ "actionId": "himi.open",
8170
+ "params": {
8171
+ "screenId": "himi_business_chat"
8172
+ }
8173
+ }
8174
+ }
8175
+ }
8176
+ },
8177
+ {
8178
+ "id": "himi_business_contact.section.directions_copy",
8179
+ "body": {
8180
+ "package": "himalaya",
8181
+ "type": "Text",
8182
+ "props": {
8183
+ "text": "Directions",
8184
+ "style": "body",
8185
+ "collapseWhenEmpty": true
8186
+ }
8187
+ },
8188
+ "modifiers": {
8189
+ "hidden": true
8190
+ }
8191
+ },
8192
+ {
8193
+ "id": "himi_business_contact.section.unavailable",
8194
+ "body": {
8195
+ "package": "himalaya",
8196
+ "type": "Text",
8197
+ "props": {
8198
+ "text": "Contact details unavailable",
8199
+ "style": "body",
8200
+ "collapseWhenEmpty": true
8201
+ }
8202
+ },
8203
+ "modifiers": {
8204
+ "hidden": true
8205
+ }
8206
+ },
8207
+ {
8208
+ "id": "himi_business_contact.section.member_count",
8209
+ "body": {
8210
+ "package": "himalaya",
8211
+ "type": "FragmentSlot",
8212
+ "props": {
8213
+ "casePath": "$service:businessContact.memberCountCase",
8214
+ "defaultCase": "unavailable",
8215
+ "cases": [
8216
+ {
8217
+ "id": "one",
8218
+ "content": {
8219
+ "id": "himi_business_contact.section.members_one",
8220
+ "body": {
8221
+ "package": "himalaya",
8222
+ "type": "HStack",
8223
+ "props": {
8224
+ "spacing": 4,
8225
+ "alignment": "center",
8226
+ "children": [
8227
+ {
8228
+ "id": "himi_business_contact.section.count_one",
8229
+ "body": {
8230
+ "package": "himalaya",
8231
+ "type": "Text",
8232
+ "props": {
8233
+ "text": "$service:businessContact.memberCount",
8234
+ "style": "footnote",
8235
+ "collapseWhenEmpty": true
8236
+ }
8237
+ }
8238
+ },
8239
+ {
8240
+ "id": "himi_business_contact.section.unit_one",
8241
+ "body": {
8242
+ "package": "himalaya",
8243
+ "type": "Text",
8244
+ "props": {
8245
+ "text": "member",
8246
+ "style": "footnote",
8247
+ "collapseWhenEmpty": true
8248
+ }
8249
+ }
8250
+ }
8251
+ ]
8252
+ }
8253
+ }
8254
+ }
8255
+ },
8256
+ {
8257
+ "id": "other",
8258
+ "content": {
8259
+ "id": "himi_business_contact.section.members_other",
8260
+ "body": {
8261
+ "package": "himalaya",
8262
+ "type": "HStack",
8263
+ "props": {
8264
+ "spacing": 4,
8265
+ "alignment": "center",
8266
+ "children": [
8267
+ {
8268
+ "id": "himi_business_contact.section.count_other",
8269
+ "body": {
8270
+ "package": "himalaya",
8271
+ "type": "Text",
8272
+ "props": {
8273
+ "text": "$service:businessContact.memberCount",
8274
+ "style": "footnote",
8275
+ "collapseWhenEmpty": true
8276
+ }
8277
+ }
8278
+ },
8279
+ {
8280
+ "id": "himi_business_contact.section.unit_other",
8281
+ "body": {
8282
+ "package": "himalaya",
8283
+ "type": "Text",
8284
+ "props": {
8285
+ "text": "members",
8286
+ "style": "footnote",
8287
+ "collapseWhenEmpty": true
8288
+ }
8289
+ }
8290
+ }
8291
+ ]
8292
+ }
8293
+ }
8294
+ }
8295
+ },
8296
+ {
8297
+ "id": "unavailable",
8298
+ "content": {
8299
+ "id": "himi_business_contact.section.members_unavailable",
8300
+ "body": {
8301
+ "package": "himalaya",
8302
+ "type": "Text",
8303
+ "props": {
8304
+ "text": "Member count unavailable",
8305
+ "style": "footnote",
8306
+ "collapseWhenEmpty": true
8307
+ }
8308
+ }
8309
+ }
8310
+ }
8311
+ ]
8312
+ }
8313
+ },
8314
+ "modifiers": {
8315
+ "hidden": true
8316
+ }
8317
+ },
8318
+ {
8319
+ "id": "himi_business_contact.section.feedback",
8320
+ "body": {
8321
+ "package": "himalaya",
8322
+ "type": "Text",
8323
+ "props": {
8324
+ "text": "$service:businessContact.message",
8325
+ "style": "footnote",
8326
+ "collapseWhenEmpty": true
8327
+ }
8328
+ }
8329
+ }
8330
+ ]
8331
+ }
8332
+ }
8333
+ }
8334
+ ]
8335
+ }
8336
+ },
8337
+ "modifiers": {
8338
+ "background": {
8339
+ "token": "surfacePrimary"
8340
+ },
8341
+ "padding": {
8342
+ "leading": 20,
8343
+ "trailing": 20,
8344
+ "top": 18,
8345
+ "bottom": 28
8346
+ },
8347
+ "onAppear": {
8348
+ "actionId": "tier5.businessContact.load",
8349
+ "args": {
8350
+ "showMemberCount": false
8351
+ }
8352
+ }
8353
+ }
8354
+ },
8355
+ "logicBundle": {
8356
+ "url": "http://localhost:8190/v1/bundles/business-contact?integrity=",
8357
+ "integrity": "",
8358
+ "contentType": "application/javascript+ts-bundle",
8359
+ "declaredCapabilities": [
8360
+ "open_url"
8361
+ ],
8362
+ "minBinaryVersion": "0.1.0",
8363
+ "bundleVersion": "0.0.1"
8364
+ }
8365
+ },
7898
8366
  "himi_appearance": {
7899
8367
  "screenId": "himi_appearance",
7900
8368
  "renderer": "sdui_intent",
@@ -89451,6 +89919,21 @@ const SCREENS = runtimeSetting({
89451
89919
  },
89452
89920
  }) as Record<string, unknown>;
89453
89921
 
89922
+ // The hosted app icon is content: updating splash.json needs an OTA publish, not a native build.
89923
+ // Without a hosted image, preserve the bundled icon and its native handoff crop.
89924
+ if (splashIcon.iconUrl) {
89925
+ const url = new URL(splashIcon.iconUrl);
89926
+ if (url.protocol !== "https:" || url.username || url.password) throw new Error("Splash images require a public HTTPS URL");
89927
+ interface IconNode { id?: string; body: { package: string; type: string; props: { children?: IconNode[]; asset?: string; url?: string } } }
89928
+ const splash = SCREENS.himi_branded_splash as { input?: { customLogo?: boolean }; payload?: { body?: { props?: { children?: IconNode[] } } } };
89929
+ const icon = splash.payload?.body?.props?.children?.find((node) => node.id === "splash_t5_icon");
89930
+ const image = icon?.body.type === "ZStack" ? icon.body.props.children?.find((node) => node.id === "splash_t5_icon_image") : icon;
89931
+ if (image && !splash.input?.customLogo) {
89932
+ delete image.body.props.asset;
89933
+ image.body.props.url = splashIcon.iconUrl;
89934
+ }
89935
+ }
89936
+
89454
89937
  // The language destination stays registered for deep links and future translations. Keep its
89455
89938
  // account entry out of a single-language app; adding a locale to config.locale.translations
89456
89939
  // makes the same entry visible after the app config reloads.
@@ -94235,6 +94718,31 @@ const TEMPLATED: { pattern: string; display: string; liveSeed?: LiveSeed; static
94235
94718
  }
94236
94719
  }
94237
94720
  },
94721
+ {
94722
+ "id": "himi_service.about_rich",
94723
+ "body": {
94724
+ "package": "himalaya",
94725
+ "type": "RichContent",
94726
+ "props": {
94727
+ "documentJsonPath": "$service:himiBookingService.aboutJson",
94728
+ "onLink": {
94729
+ "actionId": "tier5.himiBookingService.openLink"
94730
+ },
94731
+ "fallback": {
94732
+ "id": "",
94733
+ "body": {
94734
+ "package": "himalaya",
94735
+ "type": "Text",
94736
+ "props": {
94737
+ "text": "$service:himiBookingService.about",
94738
+ "style": "body",
94739
+ "color": "textPrimary"
94740
+ }
94741
+ }
94742
+ }
94743
+ }
94744
+ }
94745
+ },
94238
94746
  {
94239
94747
  "id": "himi_service.about",
94240
94748
  "body": {
@@ -94246,6 +94754,9 @@ const TEMPLATED: { pattern: string; display: string; liveSeed?: LiveSeed; static
94246
94754
  "color": "textPrimary",
94247
94755
  "collapseWhenEmpty": true
94248
94756
  }
94757
+ },
94758
+ "modifiers": {
94759
+ "hiddenPath": "$service:himiBookingService.hasAboutJson"
94249
94760
  }
94250
94761
  }
94251
94762
  ]
@@ -103333,6 +103844,31 @@ const TEMPLATED: { pattern: string; display: string; liveSeed?: LiveSeed; static
103333
103844
  }
103334
103845
  }
103335
103846
  },
103847
+ {
103848
+ "id": "himi_group.description_rich",
103849
+ "body": {
103850
+ "package": "himalaya",
103851
+ "type": "RichContent",
103852
+ "props": {
103853
+ "documentJsonPath": "$service:himiBrandedGroup.descriptionJson",
103854
+ "onLink": {
103855
+ "actionId": "tier5.himiBrandedGroup.openLink"
103856
+ },
103857
+ "fallback": {
103858
+ "id": "",
103859
+ "body": {
103860
+ "package": "himalaya",
103861
+ "type": "Text",
103862
+ "props": {
103863
+ "text": "$service:himiBrandedGroup.description",
103864
+ "style": "body",
103865
+ "color": "textSecondary"
103866
+ }
103867
+ }
103868
+ }
103869
+ }
103870
+ }
103871
+ },
103336
103872
  {
103337
103873
  "id": "",
103338
103874
  "body": {
@@ -103344,6 +103880,9 @@ const TEMPLATED: { pattern: string; display: string; liveSeed?: LiveSeed; static
103344
103880
  "color": "textSecondary",
103345
103881
  "collapseWhenEmpty": true
103346
103882
  }
103883
+ },
103884
+ "modifiers": {
103885
+ "hiddenPath": "$service:himiBrandedGroup.hasDescriptionJson"
103347
103886
  }
103348
103887
  },
103349
103888
  {
@@ -103486,7 +104025,8 @@ const TEMPLATED: { pattern: string; display: string; liveSeed?: LiveSeed; static
103486
104025
  "contentType": "application/javascript+ts-bundle",
103487
104026
  "declaredCapabilities": [
103488
104027
  "wix_api",
103489
- "local_database"
104028
+ "local_database",
104029
+ "open_url"
103490
104030
  ],
103491
104031
  "minBinaryVersion": "0.1.0",
103492
104032
  "bundleVersion": "0.0.1"
@@ -43,9 +43,15 @@
43
43
  "himi_branded_home": {
44
44
  "displayName": "Home"
45
45
  },
46
+ "himi_branded_splash": {
47
+ "displayName": "Splash"
48
+ },
46
49
  "himi_business_chat": {
47
50
  "displayName": "Inbox"
48
51
  },
52
+ "himi_business_contact": {
53
+ "displayName": "Business contact"
54
+ },
49
55
  "himi_cart": {
50
56
  "displayName": "Cart"
51
57
  },
@@ -0,0 +1,3 @@
1
+ {
2
+ "iconUrl": ""
3
+ }
@@ -1,8 +1,8 @@
1
1
  // Copy-as-configuration for WORKER-emitted strings (`himi docs designing-himi-screens`,
2
2
  // §"Copy is configuration"): a worker never hardcodes user-facing copy — the
3
3
  // descriptor bakes the provisioned copy-pack overrides relevant to this worker
4
- // into its onAppear action params as a `copy` JSON object (key → override
5
- // string, computed from the app contract at descriptor-build time), and the
4
+ // into its onAppear action params as a `copy` JSON object (customer strings or
5
+ // source-matched stock translations, computed at descriptor-build time), and the
6
6
  // worker reads every user-facing string through `copyParam(key, fallback)`.
7
7
  //
8
8
  // STASHED (the stashed appear-params idiom, himi-branded-lite-home): the
@@ -16,9 +16,13 @@
16
16
  // every worker that emits user-facing copy, and copied verbatim into the
17
17
  // generated templates' tier5-src/_shared/.
18
18
 
19
- let stashedCopy: Record<string, string> = {};
19
+ /** Customer strings override every read; translated stock is valid only for its
20
+ * original English fallback. Some existing keys serve more than one message. */
21
+ export type CopyPackValue = string | { source: string; translation: string };
20
22
 
21
- /** Absorb the `copy` onAppear param (a JSON object of key → override string)
23
+ let stashedCopy: Record<string, CopyPackValue> = Object.create(null);
24
+
25
+ /** Absorb the `copy` onAppear param (customer strings or stock translation records)
22
26
  * from an action arg. Call first in every action that can receive onAppear
23
27
  * params (load/refresh). Non-copy args and malformed packs are ignored — the
24
28
  * stock fallbacks keep rendering. */
@@ -29,9 +33,15 @@ export function stashCopy(arg: unknown): void {
29
33
  try {
30
34
  const parsed = JSON.parse(raw) as unknown;
31
35
  if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) return;
32
- const next: Record<string, string> = {};
36
+ const next: Record<string, CopyPackValue> = Object.create(null);
33
37
  for (const [key, value] of Object.entries(parsed as Record<string, unknown>)) {
34
38
  if (typeof value === "string") next[key] = value;
39
+ else if (value && typeof value === "object" && !Array.isArray(value)) {
40
+ const row = value as Record<string, unknown>;
41
+ if (typeof row.source === "string" && typeof row.translation === "string") {
42
+ next[key] = { source: row.source, translation: row.translation };
43
+ }
44
+ }
35
45
  }
36
46
  stashedCopy = next;
37
47
  } catch {
@@ -43,7 +53,8 @@ export function stashCopy(arg: unknown): void {
43
53
  * pack / no such key reached this worker. */
44
54
  export function copyParam(key: string, fallback: string): string {
45
55
  const value = stashedCopy[key];
46
- return typeof value === "string" && value !== "" ? value : fallback;
56
+ if (typeof value === "string") return value !== "" ? value : fallback;
57
+ return value?.source === fallback && value.translation !== "" ? value.translation : fallback;
47
58
  }
48
59
 
49
60
  /** Interpolate `{name}` placeholders in a (possibly overridden) template: