@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.
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/dev-server/src/l10n-strings.d.ts +3 -2
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/screens/src/business-contact-service.d.ts +17 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/screens/src/business-contact.d.ts +73 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/screens/src/index.d.ts +3 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/screens/src/invite-target.d.ts +1 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/screens/src/invite.d.ts +148 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/screens.mjs +558 -84
- package/dist/cli.mjs +21211 -20843
- package/dist/preview-assets.generated.bin +0 -0
- package/guides/app-config.md +10 -0
- package/guides/app-icon.md +20 -1
- package/guides/getting-started.md +5 -0
- package/guides/himi-json-output.md +7 -0
- package/guides/himi-skill.md +5 -0
- package/guides/one-app-to-himi-app.md +159 -4
- package/guides/skill.md +5 -0
- package/guides/splash-screens.md +156 -5
- package/guides/tier-5-add-a-screen.md +20 -0
- package/package.json +2 -2
- package/templates/beauty-salon/config.ts +17 -0
- package/templates/beauty-salon/dev/index.ts +478 -0
- package/templates/beauty-salon/himalaya.content.json +6 -0
- package/templates/beauty-salon/splash.json +3 -0
- package/templates/beauty-salon/tier5-src/_shared/himi-copy.ts +17 -6
- package/templates/beauty-salon/tier5-src/_shared/rich-body.ts +44 -0
- package/templates/beauty-salon/tier5-src/business-contact/index.ts +6 -0
- package/templates/beauty-salon/tier5-src/himi-booking-service/index.ts +13 -9
- package/templates/beauty-salon/tier5-src/himi-branded-lite-splash/index.ts +35 -0
- package/templates/beauty-salon-owner/config.ts +8 -0
- package/templates/beauty-salon-owner/dev/index.ts +1 -0
- package/templates/beauty-salon-owner/tier5-src/_shared/himi-copy.ts +17 -6
- package/templates/beauty-salon-owner/tier5-src/_shared/rich-body.ts +44 -0
- package/templates/branded-lite/config.ts +17 -0
- package/templates/branded-lite/dev/index.ts +541 -1
- package/templates/branded-lite/himalaya.content.json +6 -0
- package/templates/branded-lite/splash.json +3 -0
- package/templates/branded-lite/tier5-src/_shared/himi-copy.ts +17 -6
- package/templates/branded-lite/tier5-src/_shared/rich-body.ts +44 -0
- package/templates/branded-lite/tier5-src/business-contact/index.ts +6 -0
- package/templates/branded-lite/tier5-src/himi-booking-service/index.ts +13 -9
- package/templates/branded-lite/tier5-src/himi-branded-lite-group/index.ts +20 -3
- package/templates/branded-lite/tier5-src/himi-branded-lite-groups/index.ts +18 -2
- package/templates/branded-lite/tier5-src/himi-branded-lite-notifsettings/index.ts +39 -11
- package/templates/branded-lite/tier5-src/himi-branded-lite-splash/index.ts +35 -0
- package/templates/brandy/tier5-src/_shared/himi-copy.ts +17 -6
- package/templates/community-club/config.ts +17 -0
- package/templates/community-club/dev/index.ts +480 -1
- package/templates/community-club/himalaya.content.json +6 -0
- package/templates/community-club/splash.json +3 -0
- package/templates/community-club/tier5-src/_shared/himi-copy.ts +17 -6
- package/templates/community-club/tier5-src/_shared/rich-body.ts +44 -0
- package/templates/community-club/tier5-src/business-contact/index.ts +6 -0
- package/templates/community-club/tier5-src/himi-branded-lite-group/index.ts +20 -3
- package/templates/community-club/tier5-src/himi-branded-lite-groups/index.ts +18 -2
- package/templates/community-club/tier5-src/himi-branded-lite-splash/index.ts +35 -0
- package/templates/community-club-owner/config.ts +8 -0
- package/templates/community-club-owner/dev/index.ts +1 -0
- package/templates/community-club-owner/tier5-src/_shared/himi-copy.ts +17 -6
- package/templates/community-club-owner/tier5-src/_shared/rich-body.ts +44 -0
- package/templates/events-meetups/config.ts +17 -0
- package/templates/events-meetups/dev/index.ts +480 -1
- package/templates/events-meetups/himalaya.content.json +6 -0
- package/templates/events-meetups/splash.json +3 -0
- package/templates/events-meetups/tier5-src/_shared/himi-copy.ts +17 -6
- package/templates/events-meetups/tier5-src/_shared/rich-body.ts +44 -0
- package/templates/events-meetups/tier5-src/business-contact/index.ts +6 -0
- package/templates/events-meetups/tier5-src/himi-branded-lite-group/index.ts +20 -3
- package/templates/events-meetups/tier5-src/himi-branded-lite-groups/index.ts +18 -2
- package/templates/events-meetups/tier5-src/himi-branded-lite-splash/index.ts +35 -0
- package/templates/events-meetups-owner/config.ts +8 -0
- package/templates/events-meetups-owner/dev/index.ts +1 -0
- package/templates/events-meetups-owner/tier5-src/_shared/himi-copy.ts +17 -6
- package/templates/events-meetups-owner/tier5-src/_shared/rich-body.ts +44 -0
- package/templates/gym-fitness/config.ts +17 -0
- package/templates/gym-fitness/dev/index.ts +478 -0
- package/templates/gym-fitness/himalaya.content.json +6 -0
- package/templates/gym-fitness/splash.json +3 -0
- package/templates/gym-fitness/tier5-src/_shared/himi-copy.ts +17 -6
- package/templates/gym-fitness/tier5-src/_shared/rich-body.ts +44 -0
- package/templates/gym-fitness/tier5-src/business-contact/index.ts +6 -0
- package/templates/gym-fitness/tier5-src/himi-booking-service/index.ts +13 -9
- package/templates/gym-fitness/tier5-src/himi-branded-lite-splash/index.ts +35 -0
- package/templates/gym-fitness-owner/config.ts +8 -0
- package/templates/gym-fitness-owner/dev/index.ts +1 -0
- package/templates/gym-fitness-owner/tier5-src/_shared/himi-copy.ts +17 -6
- package/templates/gym-fitness-owner/tier5-src/_shared/rich-body.ts +44 -0
- package/templates/himi-chat/dev/index.ts +1 -0
- package/templates/himi-chat/tier5-src/_shared/himi-copy.ts +17 -6
- package/templates/nonprofit-cause/config.ts +17 -0
- package/templates/nonprofit-cause/dev/index.ts +480 -1
- package/templates/nonprofit-cause/himalaya.content.json +6 -0
- package/templates/nonprofit-cause/splash.json +3 -0
- package/templates/nonprofit-cause/tier5-src/_shared/himi-copy.ts +17 -6
- package/templates/nonprofit-cause/tier5-src/_shared/rich-body.ts +44 -0
- package/templates/nonprofit-cause/tier5-src/business-contact/index.ts +6 -0
- package/templates/nonprofit-cause/tier5-src/himi-branded-lite-group/index.ts +20 -3
- package/templates/nonprofit-cause/tier5-src/himi-branded-lite-groups/index.ts +18 -2
- package/templates/nonprofit-cause/tier5-src/himi-branded-lite-splash/index.ts +35 -0
- package/templates/nonprofit-cause-owner/config.ts +8 -0
- package/templates/nonprofit-cause-owner/dev/index.ts +1 -0
- package/templates/nonprofit-cause-owner/tier5-src/_shared/himi-copy.ts +17 -6
- package/templates/nonprofit-cause-owner/tier5-src/_shared/rich-body.ts +44 -0
- package/templates/owner-lite/config.ts +8 -0
- package/templates/owner-lite/dev/index.ts +1 -0
- package/templates/owner-lite/tier5-src/_shared/himi-copy.ts +17 -6
- package/templates/owner-lite/tier5-src/_shared/rich-body.ts +44 -0
- package/templates/podcast-creator/config.ts +17 -0
- package/templates/podcast-creator/dev/index.ts +450 -0
- package/templates/podcast-creator/himalaya.content.json +6 -0
- package/templates/podcast-creator/splash.json +3 -0
- package/templates/podcast-creator/tier5-src/_shared/himi-copy.ts +17 -6
- package/templates/podcast-creator/tier5-src/_shared/rich-body.ts +44 -0
- package/templates/podcast-creator/tier5-src/business-contact/index.ts +6 -0
- package/templates/podcast-creator/tier5-src/himi-branded-lite-splash/index.ts +35 -0
- package/templates/podcast-creator-owner/config.ts +8 -0
- package/templates/podcast-creator-owner/dev/index.ts +1 -0
- package/templates/podcast-creator-owner/tier5-src/_shared/himi-copy.ts +17 -6
- package/templates/podcast-creator-owner/tier5-src/_shared/rich-body.ts +44 -0
- package/templates/portfolio-creative/config.ts +17 -0
- package/templates/portfolio-creative/dev/index.ts +450 -0
- package/templates/portfolio-creative/himalaya.content.json +6 -0
- package/templates/portfolio-creative/splash.json +3 -0
- package/templates/portfolio-creative/tier5-src/_shared/himi-copy.ts +17 -6
- package/templates/portfolio-creative/tier5-src/_shared/rich-body.ts +44 -0
- package/templates/portfolio-creative/tier5-src/business-contact/index.ts +6 -0
- package/templates/portfolio-creative/tier5-src/himi-branded-lite-splash/index.ts +35 -0
- package/templates/portfolio-creative-owner/config.ts +8 -0
- package/templates/portfolio-creative-owner/dev/index.ts +1 -0
- package/templates/portfolio-creative-owner/tier5-src/_shared/himi-copy.ts +17 -6
- package/templates/portfolio-creative-owner/tier5-src/_shared/rich-body.ts +44 -0
- package/templates/restaurant/config.ts +17 -0
- package/templates/restaurant/dev/index.ts +450 -0
- package/templates/restaurant/himalaya.content.json +6 -0
- package/templates/restaurant/splash.json +3 -0
- package/templates/restaurant/tier5-src/_shared/himi-copy.ts +17 -6
- package/templates/restaurant/tier5-src/_shared/rich-body.ts +44 -0
- package/templates/restaurant/tier5-src/business-contact/index.ts +6 -0
- package/templates/restaurant/tier5-src/himi-branded-lite-splash/index.ts +35 -0
- package/templates/restaurant-owner/config.ts +8 -0
- package/templates/restaurant-owner/dev/index.ts +1 -0
- package/templates/restaurant-owner/tier5-src/_shared/himi-copy.ts +17 -6
- package/templates/restaurant-owner/tier5-src/_shared/rich-body.ts +44 -0
- package/templates/retail-store/config.ts +17 -0
- package/templates/retail-store/dev/index.ts +450 -0
- package/templates/retail-store/himalaya.content.json +6 -0
- package/templates/retail-store/splash.json +3 -0
- package/templates/retail-store/tier5-src/_shared/himi-copy.ts +17 -6
- package/templates/retail-store/tier5-src/_shared/rich-body.ts +44 -0
- package/templates/retail-store/tier5-src/business-contact/index.ts +6 -0
- package/templates/retail-store/tier5-src/himi-branded-lite-splash/index.ts +35 -0
- package/templates/retail-store-owner/config.ts +8 -0
- package/templates/retail-store-owner/dev/index.ts +1 -0
- package/templates/retail-store-owner/tier5-src/_shared/himi-copy.ts +17 -6
- package/templates/retail-store-owner/tier5-src/_shared/rich-body.ts +44 -0
- package/templates/surface-showcase/dev/index.ts +1 -0
- package/templates/yoga-studio/config.ts +17 -0
- package/templates/yoga-studio/dev/index.ts +478 -0
- package/templates/yoga-studio/himalaya.content.json +6 -0
- package/templates/yoga-studio/splash.json +3 -0
- package/templates/yoga-studio/tier5-src/_shared/himi-copy.ts +17 -6
- package/templates/yoga-studio/tier5-src/_shared/rich-body.ts +44 -0
- package/templates/yoga-studio/tier5-src/business-contact/index.ts +6 -0
- package/templates/yoga-studio/tier5-src/himi-booking-service/index.ts +13 -9
- package/templates/yoga-studio/tier5-src/himi-branded-lite-splash/index.ts +35 -0
- package/templates/yoga-studio-owner/config.ts +8 -0
- package/templates/yoga-studio-owner/dev/index.ts +1 -0
- package/templates/yoga-studio-owner/tier5-src/_shared/himi-copy.ts +17 -6
- 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",
|
|
@@ -5910,6 +6132,219 @@ const SCREENS = runtimeSetting({
|
|
|
5910
6132
|
"bundleVersion": "0.0.1"
|
|
5911
6133
|
}
|
|
5912
6134
|
},
|
|
6135
|
+
"himi_business_contact": {
|
|
6136
|
+
"screenId": "himi_business_contact",
|
|
6137
|
+
"title": "Business contact",
|
|
6138
|
+
"renderer": "sdui_intent",
|
|
6139
|
+
"schemaVersion": 1,
|
|
6140
|
+
"cacheControl": {
|
|
6141
|
+
"maxAge": 0,
|
|
6142
|
+
"staleWhileRevalidate": 0
|
|
6143
|
+
},
|
|
6144
|
+
"payload": {
|
|
6145
|
+
"id": "himi_business_contact.root",
|
|
6146
|
+
"body": {
|
|
6147
|
+
"package": "himalaya",
|
|
6148
|
+
"type": "VStack",
|
|
6149
|
+
"props": {
|
|
6150
|
+
"spacing": 16,
|
|
6151
|
+
"alignment": "leading",
|
|
6152
|
+
"children": [
|
|
6153
|
+
{
|
|
6154
|
+
"id": "himi_business_contact.section",
|
|
6155
|
+
"body": {
|
|
6156
|
+
"package": "himalaya",
|
|
6157
|
+
"type": "VStack",
|
|
6158
|
+
"props": {
|
|
6159
|
+
"spacing": 12,
|
|
6160
|
+
"alignment": "leading",
|
|
6161
|
+
"children": [
|
|
6162
|
+
{
|
|
6163
|
+
"id": "himi_business_contact.section.directions_copy",
|
|
6164
|
+
"body": {
|
|
6165
|
+
"package": "himalaya",
|
|
6166
|
+
"type": "Text",
|
|
6167
|
+
"props": {
|
|
6168
|
+
"text": "Directions",
|
|
6169
|
+
"style": "body",
|
|
6170
|
+
"collapseWhenEmpty": true
|
|
6171
|
+
}
|
|
6172
|
+
},
|
|
6173
|
+
"modifiers": {
|
|
6174
|
+
"hidden": true
|
|
6175
|
+
}
|
|
6176
|
+
},
|
|
6177
|
+
{
|
|
6178
|
+
"id": "himi_business_contact.section.unavailable",
|
|
6179
|
+
"body": {
|
|
6180
|
+
"package": "himalaya",
|
|
6181
|
+
"type": "Text",
|
|
6182
|
+
"props": {
|
|
6183
|
+
"text": "Contact details unavailable",
|
|
6184
|
+
"style": "body",
|
|
6185
|
+
"collapseWhenEmpty": true
|
|
6186
|
+
}
|
|
6187
|
+
}
|
|
6188
|
+
},
|
|
6189
|
+
{
|
|
6190
|
+
"id": "himi_business_contact.section.member_count",
|
|
6191
|
+
"body": {
|
|
6192
|
+
"package": "himalaya",
|
|
6193
|
+
"type": "FragmentSlot",
|
|
6194
|
+
"props": {
|
|
6195
|
+
"casePath": "$service:businessContact.memberCountCase",
|
|
6196
|
+
"defaultCase": "unavailable",
|
|
6197
|
+
"cases": [
|
|
6198
|
+
{
|
|
6199
|
+
"id": "one",
|
|
6200
|
+
"content": {
|
|
6201
|
+
"id": "himi_business_contact.section.members_one",
|
|
6202
|
+
"body": {
|
|
6203
|
+
"package": "himalaya",
|
|
6204
|
+
"type": "HStack",
|
|
6205
|
+
"props": {
|
|
6206
|
+
"spacing": 4,
|
|
6207
|
+
"alignment": "center",
|
|
6208
|
+
"children": [
|
|
6209
|
+
{
|
|
6210
|
+
"id": "himi_business_contact.section.count_one",
|
|
6211
|
+
"body": {
|
|
6212
|
+
"package": "himalaya",
|
|
6213
|
+
"type": "Text",
|
|
6214
|
+
"props": {
|
|
6215
|
+
"text": "$service:businessContact.memberCount",
|
|
6216
|
+
"style": "footnote",
|
|
6217
|
+
"collapseWhenEmpty": true
|
|
6218
|
+
}
|
|
6219
|
+
}
|
|
6220
|
+
},
|
|
6221
|
+
{
|
|
6222
|
+
"id": "himi_business_contact.section.unit_one",
|
|
6223
|
+
"body": {
|
|
6224
|
+
"package": "himalaya",
|
|
6225
|
+
"type": "Text",
|
|
6226
|
+
"props": {
|
|
6227
|
+
"text": "member",
|
|
6228
|
+
"style": "footnote",
|
|
6229
|
+
"collapseWhenEmpty": true
|
|
6230
|
+
}
|
|
6231
|
+
}
|
|
6232
|
+
}
|
|
6233
|
+
]
|
|
6234
|
+
}
|
|
6235
|
+
}
|
|
6236
|
+
}
|
|
6237
|
+
},
|
|
6238
|
+
{
|
|
6239
|
+
"id": "other",
|
|
6240
|
+
"content": {
|
|
6241
|
+
"id": "himi_business_contact.section.members_other",
|
|
6242
|
+
"body": {
|
|
6243
|
+
"package": "himalaya",
|
|
6244
|
+
"type": "HStack",
|
|
6245
|
+
"props": {
|
|
6246
|
+
"spacing": 4,
|
|
6247
|
+
"alignment": "center",
|
|
6248
|
+
"children": [
|
|
6249
|
+
{
|
|
6250
|
+
"id": "himi_business_contact.section.count_other",
|
|
6251
|
+
"body": {
|
|
6252
|
+
"package": "himalaya",
|
|
6253
|
+
"type": "Text",
|
|
6254
|
+
"props": {
|
|
6255
|
+
"text": "$service:businessContact.memberCount",
|
|
6256
|
+
"style": "footnote",
|
|
6257
|
+
"collapseWhenEmpty": true
|
|
6258
|
+
}
|
|
6259
|
+
}
|
|
6260
|
+
},
|
|
6261
|
+
{
|
|
6262
|
+
"id": "himi_business_contact.section.unit_other",
|
|
6263
|
+
"body": {
|
|
6264
|
+
"package": "himalaya",
|
|
6265
|
+
"type": "Text",
|
|
6266
|
+
"props": {
|
|
6267
|
+
"text": "members",
|
|
6268
|
+
"style": "footnote",
|
|
6269
|
+
"collapseWhenEmpty": true
|
|
6270
|
+
}
|
|
6271
|
+
}
|
|
6272
|
+
}
|
|
6273
|
+
]
|
|
6274
|
+
}
|
|
6275
|
+
}
|
|
6276
|
+
}
|
|
6277
|
+
},
|
|
6278
|
+
{
|
|
6279
|
+
"id": "unavailable",
|
|
6280
|
+
"content": {
|
|
6281
|
+
"id": "himi_business_contact.section.members_unavailable",
|
|
6282
|
+
"body": {
|
|
6283
|
+
"package": "himalaya",
|
|
6284
|
+
"type": "Text",
|
|
6285
|
+
"props": {
|
|
6286
|
+
"text": "Member count unavailable",
|
|
6287
|
+
"style": "footnote",
|
|
6288
|
+
"collapseWhenEmpty": true
|
|
6289
|
+
}
|
|
6290
|
+
}
|
|
6291
|
+
}
|
|
6292
|
+
}
|
|
6293
|
+
]
|
|
6294
|
+
}
|
|
6295
|
+
},
|
|
6296
|
+
"modifiers": {
|
|
6297
|
+
"hidden": true
|
|
6298
|
+
}
|
|
6299
|
+
},
|
|
6300
|
+
{
|
|
6301
|
+
"id": "himi_business_contact.section.feedback",
|
|
6302
|
+
"body": {
|
|
6303
|
+
"package": "himalaya",
|
|
6304
|
+
"type": "Text",
|
|
6305
|
+
"props": {
|
|
6306
|
+
"text": "$service:businessContact.message",
|
|
6307
|
+
"style": "footnote",
|
|
6308
|
+
"collapseWhenEmpty": true
|
|
6309
|
+
}
|
|
6310
|
+
}
|
|
6311
|
+
}
|
|
6312
|
+
]
|
|
6313
|
+
}
|
|
6314
|
+
}
|
|
6315
|
+
}
|
|
6316
|
+
]
|
|
6317
|
+
}
|
|
6318
|
+
},
|
|
6319
|
+
"modifiers": {
|
|
6320
|
+
"background": {
|
|
6321
|
+
"token": "surfacePrimary"
|
|
6322
|
+
},
|
|
6323
|
+
"padding": {
|
|
6324
|
+
"leading": 20,
|
|
6325
|
+
"trailing": 20,
|
|
6326
|
+
"top": 18,
|
|
6327
|
+
"bottom": 28
|
|
6328
|
+
},
|
|
6329
|
+
"onAppear": {
|
|
6330
|
+
"actionId": "tier5.businessContact.load",
|
|
6331
|
+
"args": {
|
|
6332
|
+
"showMemberCount": false
|
|
6333
|
+
}
|
|
6334
|
+
}
|
|
6335
|
+
}
|
|
6336
|
+
},
|
|
6337
|
+
"logicBundle": {
|
|
6338
|
+
"url": "http://localhost:8190/v1/bundles/business-contact?integrity=",
|
|
6339
|
+
"integrity": "",
|
|
6340
|
+
"contentType": "application/javascript+ts-bundle",
|
|
6341
|
+
"declaredCapabilities": [
|
|
6342
|
+
"open_url"
|
|
6343
|
+
],
|
|
6344
|
+
"minBinaryVersion": "0.1.0",
|
|
6345
|
+
"bundleVersion": "0.0.1"
|
|
6346
|
+
}
|
|
6347
|
+
},
|
|
5913
6348
|
"himi_appearance": {
|
|
5914
6349
|
"screenId": "himi_appearance",
|
|
5915
6350
|
"renderer": "sdui_intent",
|
|
@@ -17088,6 +17523,21 @@ const SCREENS = runtimeSetting({
|
|
|
17088
17523
|
},
|
|
17089
17524
|
}) as Record<string, unknown>;
|
|
17090
17525
|
|
|
17526
|
+
// The hosted app icon is content: updating splash.json needs an OTA publish, not a native build.
|
|
17527
|
+
// Without a hosted image, preserve the bundled icon and its native handoff crop.
|
|
17528
|
+
if (splashIcon.iconUrl) {
|
|
17529
|
+
const url = new URL(splashIcon.iconUrl);
|
|
17530
|
+
if (url.protocol !== "https:" || url.username || url.password) throw new Error("Splash images require a public HTTPS URL");
|
|
17531
|
+
interface IconNode { id?: string; body: { package: string; type: string; props: { children?: IconNode[]; asset?: string; url?: string } } }
|
|
17532
|
+
const splash = SCREENS.himi_branded_splash as { input?: { customLogo?: boolean }; payload?: { body?: { props?: { children?: IconNode[] } } } };
|
|
17533
|
+
const icon = splash.payload?.body?.props?.children?.find((node) => node.id === "splash_t5_icon");
|
|
17534
|
+
const image = icon?.body.type === "ZStack" ? icon.body.props.children?.find((node) => node.id === "splash_t5_icon_image") : icon;
|
|
17535
|
+
if (image && !splash.input?.customLogo) {
|
|
17536
|
+
delete image.body.props.asset;
|
|
17537
|
+
image.body.props.url = splashIcon.iconUrl;
|
|
17538
|
+
}
|
|
17539
|
+
}
|
|
17540
|
+
|
|
17091
17541
|
// The language destination stays registered for deep links and future translations. Keep its
|
|
17092
17542
|
// account entry out of a single-language app; adding a locale to config.locale.translations
|
|
17093
17543
|
// makes the same entry visible after the app config reloads.
|
|
@@ -21618,6 +22068,31 @@ const TEMPLATED: { pattern: string; display: string; liveSeed?: LiveSeed; static
|
|
|
21618
22068
|
}
|
|
21619
22069
|
}
|
|
21620
22070
|
},
|
|
22071
|
+
{
|
|
22072
|
+
"id": "himi_group.description_rich",
|
|
22073
|
+
"body": {
|
|
22074
|
+
"package": "himalaya",
|
|
22075
|
+
"type": "RichContent",
|
|
22076
|
+
"props": {
|
|
22077
|
+
"documentJsonPath": "$service:himiBrandedGroup.descriptionJson",
|
|
22078
|
+
"onLink": {
|
|
22079
|
+
"actionId": "tier5.himiBrandedGroup.openLink"
|
|
22080
|
+
},
|
|
22081
|
+
"fallback": {
|
|
22082
|
+
"id": "",
|
|
22083
|
+
"body": {
|
|
22084
|
+
"package": "himalaya",
|
|
22085
|
+
"type": "Text",
|
|
22086
|
+
"props": {
|
|
22087
|
+
"text": "$service:himiBrandedGroup.description",
|
|
22088
|
+
"style": "body",
|
|
22089
|
+
"color": "textSecondary"
|
|
22090
|
+
}
|
|
22091
|
+
}
|
|
22092
|
+
}
|
|
22093
|
+
}
|
|
22094
|
+
}
|
|
22095
|
+
},
|
|
21621
22096
|
{
|
|
21622
22097
|
"id": "",
|
|
21623
22098
|
"body": {
|
|
@@ -21629,6 +22104,9 @@ const TEMPLATED: { pattern: string; display: string; liveSeed?: LiveSeed; static
|
|
|
21629
22104
|
"color": "textSecondary",
|
|
21630
22105
|
"collapseWhenEmpty": true
|
|
21631
22106
|
}
|
|
22107
|
+
},
|
|
22108
|
+
"modifiers": {
|
|
22109
|
+
"hiddenPath": "$service:himiBrandedGroup.hasDescriptionJson"
|
|
21632
22110
|
}
|
|
21633
22111
|
},
|
|
21634
22112
|
{
|
|
@@ -21771,7 +22249,8 @@ const TEMPLATED: { pattern: string; display: string; liveSeed?: LiveSeed; static
|
|
|
21771
22249
|
"contentType": "application/javascript+ts-bundle",
|
|
21772
22250
|
"declaredCapabilities": [
|
|
21773
22251
|
"wix_api",
|
|
21774
|
-
"local_database"
|
|
22252
|
+
"local_database",
|
|
22253
|
+
"open_url"
|
|
21775
22254
|
],
|
|
21776
22255
|
"minBinaryVersion": "0.1.0",
|
|
21777
22256
|
"bundleVersion": "0.0.1"
|
|
@@ -25,6 +25,12 @@
|
|
|
25
25
|
"himi_branded_home": {
|
|
26
26
|
"displayName": "Home"
|
|
27
27
|
},
|
|
28
|
+
"himi_branded_splash": {
|
|
29
|
+
"displayName": "Splash"
|
|
30
|
+
},
|
|
31
|
+
"himi_business_contact": {
|
|
32
|
+
"displayName": "Business contact"
|
|
33
|
+
},
|
|
28
34
|
"himi_create_post": {
|
|
29
35
|
"displayName": "Create Post"
|
|
30
36
|
},
|
|
@@ -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 (
|
|
5
|
-
//
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
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:
|
|
@@ -32,3 +32,47 @@ export function richBody(richContent: unknown, fallback = "", imageWidth = 1400)
|
|
|
32
32
|
const text = rejected === "too_deep" ? "" : ricosToPlainText(doc);
|
|
33
33
|
return { bodyJson: json, bodyText: text || fallback };
|
|
34
34
|
}
|
|
35
|
+
|
|
36
|
+
/** A Wix description may be Ricos (including serialized JSON), HTML or ordinary text.
|
|
37
|
+
* Keep rich documents on the existing bounded encoder path. Non-document JSON and
|
|
38
|
+
* clearly malformed serialization use an independent fallback. Ambiguous bracketed
|
|
39
|
+
* prose stays readable; this does not attempt to repair arbitrary JSON syntax. */
|
|
40
|
+
export function descriptionBody(value: unknown, fallback = "", imageWidth = 1400): RichBody {
|
|
41
|
+
if (typeof value !== "string") return richBody(value, fallback, imageWidth);
|
|
42
|
+
const text = value.trim();
|
|
43
|
+
if (/^[{[]/.test(text)) {
|
|
44
|
+
try {
|
|
45
|
+
const parsed: unknown = JSON.parse(text);
|
|
46
|
+
// Passing the parsed value avoids parsing a valid Ricos document twice; a
|
|
47
|
+
// different JSON structure is rejected by the same existing document check.
|
|
48
|
+
if (parsed && typeof parsed === "object") return richBody(parsed, fallback, imageWidth);
|
|
49
|
+
} catch {
|
|
50
|
+
const objectLike = /^\{\s*(?:["'}]|nodes\b)/.test(text);
|
|
51
|
+
// Only reject scalar-looking malformed arrays when their syntax is clearly
|
|
52
|
+
// unfinished (or contains JS's non-JSON `undefined`). Balanced bracketed
|
|
53
|
+
// prose such as "[1,000]" and "[12:30, 13:30]" is not JSON and stays readable.
|
|
54
|
+
const arrayTokens = text.replace(/"(?:\\.|[^"\\])*"/g, "")
|
|
55
|
+
.replace(/\b(?:true|false|null|undefined)\b/g, "")
|
|
56
|
+
.replace(/-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?/g, "");
|
|
57
|
+
const arrayLike = /^\[\s*[{"]/.test(text)
|
|
58
|
+
|| (text.startsWith("[") && /^[\s[\]{},:]*$/.test(arrayTokens)
|
|
59
|
+
&& (/,\s*]?$/.test(text) || /\bundefined\b/.test(text) || !text.endsWith("]")));
|
|
60
|
+
if (objectLike || arrayLike) return { bodyJson: "", bodyText: fallback };
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// Legacy HTML descriptions stay text. Preserve paragraph breaks and ordinary prose's
|
|
64
|
+
// bare '<' (e.g. "ages < 8"), without relying on browser-only DOM APIs in workers.
|
|
65
|
+
const plain = text
|
|
66
|
+
.replace(/<(script|style)\b[^>]*>[\s\S]*?<\/\1\s*>/gi, "")
|
|
67
|
+
.replace(/<br\s*\/?\s*>/gi, "\n")
|
|
68
|
+
.replace(/<\/(?:p|div|h[1-6]|li)\s*>/gi, "\n\n")
|
|
69
|
+
.replace(/<\/?[a-z][^>]*>/gi, "")
|
|
70
|
+
.replace(/&(?:nbsp|amp|lt|gt|quot|apos|#39);/gi, (entity) => ({
|
|
71
|
+
" ": " ", "&": "&", "<": "<", ">": ">", """: '"', "'": "'", "'": "'",
|
|
72
|
+
})[entity.toLowerCase()] ?? entity)
|
|
73
|
+
.replace(/[\t\r ]+/g, " ")
|
|
74
|
+
.replace(/ *\n */g, "\n")
|
|
75
|
+
.replace(/\n{3,}/g, "\n\n")
|
|
76
|
+
.trim();
|
|
77
|
+
return { bodyJson: "", bodyText: plain || fallback };
|
|
78
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { createBusinessContactService } from "@himalaya/screens";
|
|
2
|
+
|
|
3
|
+
// Contact values and the optional public total are build-time source evidence.
|
|
4
|
+
// No owner API, device location, or cross-site source URL is read by this worker.
|
|
5
|
+
const svc = createBusinessContactService();
|
|
6
|
+
export { svc };
|