@wix/himalaya-cli 0.1032.0 → 0.1034.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 (128) hide show
  1. package/dist/cli.mjs +0 -2
  2. package/guides/getting-started.md +6 -2
  3. package/guides/wix-site-to-himi-app.md +9 -1
  4. package/package.json +2 -2
  5. package/templates/beauty-salon/dev/index.ts +398 -1
  6. package/templates/beauty-salon/tier5-src/_shared/collection-contract.ts +4 -1
  7. package/templates/beauty-salon/tier5-src/_shared/collection-service.ts +36 -5
  8. package/templates/beauty-salon/tier5-src/_shared/empty-flags.ts +33 -0
  9. package/templates/beauty-salon/tier5-src/himi-store-saved/index.ts +3 -2
  10. package/templates/beauty-salon/tier5-src/wix-spaces-collections/index.ts +3 -2
  11. package/templates/beauty-salon/tier5-src/wix-spaces-my-subscriptions/index.ts +11 -2
  12. package/templates/beauty-salon/tier5-src/wix-spaces-whats-new/index.ts +3 -2
  13. package/templates/beauty-salon-owner/dev/index.ts +1216 -0
  14. package/templates/beauty-salon-owner/tier5-src/_shared/collection-contract.ts +4 -1
  15. package/templates/beauty-salon-owner/tier5-src/_shared/collection-service.ts +36 -5
  16. package/templates/branded-lite/dev/index.ts +2239 -343
  17. package/templates/branded-lite/tier5-src/_shared/branded-load-state.ts +106 -0
  18. package/templates/branded-lite/tier5-src/_shared/collection-contract.ts +4 -1
  19. package/templates/branded-lite/tier5-src/_shared/collection-service.ts +36 -5
  20. package/templates/branded-lite/tier5-src/_shared/empty-flags.ts +33 -0
  21. package/templates/branded-lite/tier5-src/himi-branded-lite-badges/index.ts +20 -16
  22. package/templates/branded-lite/tier5-src/himi-branded-lite-coupons/index.ts +20 -20
  23. package/templates/branded-lite/tier5-src/himi-branded-lite-donations/index.ts +20 -16
  24. package/templates/branded-lite/tier5-src/himi-branded-lite-forms/index.ts +23 -31
  25. package/templates/branded-lite/tier5-src/himi-branded-lite-galleries/index.ts +19 -14
  26. package/templates/branded-lite/tier5-src/himi-branded-lite-giftcards/index.ts +20 -16
  27. package/templates/branded-lite/tier5-src/himi-branded-lite-inbox/index.ts +20 -15
  28. package/templates/branded-lite/tier5-src/himi-branded-lite-invoices/index.ts +20 -16
  29. package/templates/branded-lite/tier5-src/himi-branded-lite-loyalty/index.ts +20 -17
  30. package/templates/branded-lite/tier5-src/himi-branded-lite-notifications/index.ts +20 -18
  31. package/templates/branded-lite/tier5-src/himi-branded-lite-notifsettings/index.ts +23 -19
  32. package/templates/branded-lite/tier5-src/himi-branded-lite-podcasts/index.ts +1 -1
  33. package/templates/branded-lite/tier5-src/himi-branded-lite-reservations/index.ts +24 -20
  34. package/templates/branded-lite/tier5-src/himi-branded-lite-reviews/index.ts +20 -17
  35. package/templates/branded-lite/tier5-src/himi-branded-lite-videos/index.ts +19 -15
  36. package/templates/branded-lite/tier5-src/himi-store-saved/index.ts +3 -2
  37. package/templates/branded-lite/tier5-src/wix-spaces-collections/index.ts +3 -2
  38. package/templates/branded-lite/tier5-src/wix-spaces-forum/index.ts +3 -2
  39. package/templates/branded-lite/tier5-src/wix-spaces-members/index.ts +19 -6
  40. package/templates/branded-lite/tier5-src/wix-spaces-my-subscriptions/index.ts +11 -2
  41. package/templates/branded-lite/tier5-src/wix-spaces-new-message/index.ts +3 -2
  42. package/templates/branded-lite/tier5-src/wix-spaces-whats-new/index.ts +3 -2
  43. package/templates/community-club/dev/index.ts +283 -2
  44. package/templates/community-club/tier5-src/_shared/collection-contract.ts +4 -1
  45. package/templates/community-club/tier5-src/_shared/collection-service.ts +36 -5
  46. package/templates/community-club/tier5-src/_shared/empty-flags.ts +33 -0
  47. package/templates/community-club/tier5-src/wix-spaces-whats-new/index.ts +3 -2
  48. package/templates/community-club-owner/dev/index.ts +1216 -0
  49. package/templates/community-club-owner/tier5-src/_shared/collection-contract.ts +4 -1
  50. package/templates/community-club-owner/tier5-src/_shared/collection-service.ts +36 -5
  51. package/templates/events-meetups/dev/index.ts +197 -1
  52. package/templates/events-meetups/tier5-src/_shared/collection-contract.ts +4 -1
  53. package/templates/events-meetups/tier5-src/_shared/collection-service.ts +36 -5
  54. package/templates/events-meetups/tier5-src/_shared/empty-flags.ts +33 -0
  55. package/templates/events-meetups/tier5-src/wix-spaces-whats-new/index.ts +3 -2
  56. package/templates/events-meetups-owner/dev/index.ts +1088 -0
  57. package/templates/events-meetups-owner/tier5-src/_shared/collection-contract.ts +4 -1
  58. package/templates/events-meetups-owner/tier5-src/_shared/collection-service.ts +36 -5
  59. package/templates/gym-fitness/dev/index.ts +462 -1
  60. package/templates/gym-fitness/tier5-src/_shared/collection-contract.ts +4 -1
  61. package/templates/gym-fitness/tier5-src/_shared/collection-service.ts +36 -5
  62. package/templates/gym-fitness/tier5-src/_shared/empty-flags.ts +33 -0
  63. package/templates/gym-fitness/tier5-src/himi-store-saved/index.ts +3 -2
  64. package/templates/gym-fitness/tier5-src/wix-spaces-collections/index.ts +3 -2
  65. package/templates/gym-fitness/tier5-src/wix-spaces-my-subscriptions/index.ts +11 -2
  66. package/templates/gym-fitness/tier5-src/wix-spaces-whats-new/index.ts +3 -2
  67. package/templates/gym-fitness-owner/dev/index.ts +1280 -0
  68. package/templates/gym-fitness-owner/tier5-src/_shared/collection-contract.ts +4 -1
  69. package/templates/gym-fitness-owner/tier5-src/_shared/collection-service.ts +36 -5
  70. package/templates/nonprofit-cause/dev/index.ts +264 -1
  71. package/templates/nonprofit-cause/tier5-src/_shared/collection-contract.ts +4 -1
  72. package/templates/nonprofit-cause/tier5-src/_shared/collection-service.ts +36 -5
  73. package/templates/nonprofit-cause/tier5-src/_shared/empty-flags.ts +33 -0
  74. package/templates/nonprofit-cause/tier5-src/wix-spaces-my-subscriptions/index.ts +11 -2
  75. package/templates/nonprofit-cause/tier5-src/wix-spaces-whats-new/index.ts +3 -2
  76. package/templates/nonprofit-cause-owner/dev/index.ts +1152 -0
  77. package/templates/nonprofit-cause-owner/tier5-src/_shared/collection-contract.ts +4 -1
  78. package/templates/nonprofit-cause-owner/tier5-src/_shared/collection-service.ts +36 -5
  79. package/templates/owner-lite/dev/index.ts +1280 -0
  80. package/templates/owner-lite/tier5-src/_shared/collection-contract.ts +4 -1
  81. package/templates/owner-lite/tier5-src/_shared/collection-service.ts +36 -5
  82. package/templates/podcast-creator/dev/index.ts +286 -23
  83. package/templates/podcast-creator/tier5-src/_shared/collection-contract.ts +4 -1
  84. package/templates/podcast-creator/tier5-src/_shared/collection-service.ts +36 -5
  85. package/templates/podcast-creator/tier5-src/_shared/empty-flags.ts +33 -0
  86. package/templates/podcast-creator/tier5-src/himi-branded-lite-podcasts/index.ts +1 -1
  87. package/templates/podcast-creator/tier5-src/wix-spaces-my-subscriptions/index.ts +11 -2
  88. package/templates/podcast-creator/tier5-src/wix-spaces-whats-new/index.ts +3 -2
  89. package/templates/podcast-creator-owner/dev/index.ts +1216 -0
  90. package/templates/podcast-creator-owner/tier5-src/_shared/collection-contract.ts +4 -1
  91. package/templates/podcast-creator-owner/tier5-src/_shared/collection-service.ts +36 -5
  92. package/templates/portfolio-creative/dev/index.ts +353 -23
  93. package/templates/portfolio-creative/tier5-src/_shared/collection-contract.ts +4 -1
  94. package/templates/portfolio-creative/tier5-src/_shared/collection-service.ts +36 -5
  95. package/templates/portfolio-creative/tier5-src/_shared/empty-flags.ts +33 -0
  96. package/templates/portfolio-creative/tier5-src/himi-store-saved/index.ts +3 -2
  97. package/templates/portfolio-creative/tier5-src/wix-spaces-collections/index.ts +3 -2
  98. package/templates/portfolio-creative/tier5-src/wix-spaces-whats-new/index.ts +3 -2
  99. package/templates/portfolio-creative-owner/dev/index.ts +1216 -0
  100. package/templates/portfolio-creative-owner/tier5-src/_shared/collection-contract.ts +4 -1
  101. package/templates/portfolio-creative-owner/tier5-src/_shared/collection-service.ts +36 -5
  102. package/templates/restaurant/dev/index.ts +197 -1
  103. package/templates/restaurant/tier5-src/_shared/collection-contract.ts +4 -1
  104. package/templates/restaurant/tier5-src/_shared/collection-service.ts +36 -5
  105. package/templates/restaurant/tier5-src/_shared/empty-flags.ts +33 -0
  106. package/templates/restaurant/tier5-src/wix-spaces-whats-new/index.ts +3 -2
  107. package/templates/restaurant-owner/dev/index.ts +1280 -0
  108. package/templates/restaurant-owner/tier5-src/_shared/collection-contract.ts +4 -1
  109. package/templates/restaurant-owner/tier5-src/_shared/collection-service.ts +36 -5
  110. package/templates/retail-store/dev/index.ts +203 -1
  111. package/templates/retail-store/tier5-src/_shared/collection-contract.ts +4 -1
  112. package/templates/retail-store/tier5-src/_shared/collection-service.ts +36 -5
  113. package/templates/retail-store/tier5-src/_shared/empty-flags.ts +33 -0
  114. package/templates/retail-store/tier5-src/himi-store-saved/index.ts +3 -2
  115. package/templates/retail-store/tier5-src/wix-spaces-collections/index.ts +3 -2
  116. package/templates/retail-store/tier5-src/wix-spaces-whats-new/index.ts +3 -2
  117. package/templates/retail-store-owner/dev/index.ts +1152 -0
  118. package/templates/retail-store-owner/tier5-src/_shared/collection-contract.ts +4 -1
  119. package/templates/retail-store-owner/tier5-src/_shared/collection-service.ts +36 -5
  120. package/templates/yoga-studio/dev/index.ts +392 -1
  121. package/templates/yoga-studio/tier5-src/_shared/collection-contract.ts +4 -1
  122. package/templates/yoga-studio/tier5-src/_shared/collection-service.ts +36 -5
  123. package/templates/yoga-studio/tier5-src/_shared/empty-flags.ts +33 -0
  124. package/templates/yoga-studio/tier5-src/wix-spaces-my-subscriptions/index.ts +11 -2
  125. package/templates/yoga-studio/tier5-src/wix-spaces-whats-new/index.ts +3 -2
  126. package/templates/yoga-studio-owner/dev/index.ts +1152 -0
  127. package/templates/yoga-studio-owner/tier5-src/_shared/collection-contract.ts +4 -1
  128. package/templates/yoga-studio-owner/tier5-src/_shared/collection-service.ts +36 -5
package/dist/cli.mjs CHANGED
@@ -5388,7 +5388,6 @@ function walk(node, registry, path2, out) {
5388
5388
  var SYSTEM_FONT_FAMILY, TONAL_ELEVATION_ALPHA;
5389
5389
  var init_tokens = __esm({
5390
5390
  "../../core/ts/src/tokens.ts"() {
5391
- "use strict";
5392
5391
  SYSTEM_FONT_FAMILY = "$system";
5393
5392
  TONAL_ELEVATION_ALPHA = [0, 0.05, 0.08, 0.11, 0.12, 0.14];
5394
5393
  }
@@ -5415,7 +5414,6 @@ function resolveTranslation(value, catalog, sourceCatalog) {
5415
5414
  var BINDING_SIGILS, BINDING_SIGIL_RE, TRANSLATION_PREFIX, TRANSLATION_KEY_RE;
5416
5415
  var init_bindings = __esm({
5417
5416
  "../../core/ts/src/bindings.ts"() {
5418
- "use strict";
5419
5417
  BINDING_SIGILS = ["service", "flag", "item", "t"];
5420
5418
  BINDING_SIGIL_RE = new RegExp(
5421
5419
  `^\\$(?:${BINDING_SIGILS.filter((s) => s !== "t").join("|")})\\b|^\\$t:`
@@ -111,8 +111,12 @@ authenticated owner preview. The interactive `himi preview` URLs exist for a **d
111
111
  web host and call it owner-private, and do not let a template worker boot there until its startup
112
112
  network paths are authorized and preflighted.
113
113
 
114
- **Adopt, don't just rename, a template.** `himi init --template` seeds `SPEC.md` and
115
- `MOBILE-UX.md`; replace their boilerplate with the actual customer, data/auth assumptions,
114
+ **Adopt, don't just rename, a template.** The approved `SPEC.md` and `MOBILE-UX.md` are the
115
+ plan, and the plan wins over anything `himi init` seeds. `init` seeds placeholder copies of
116
+ both and can overwrite plan files already in the package root, so keep a copy of the approved
117
+ plan until `init` has run. After `init`, open both files:
118
+ if either holds `init`'s boilerplate rather than the approved plan, put the approved plan back in
119
+ its place — never the reverse — and finish it with the actual customer, data/auth assumptions,
116
120
  placeholder copy, flow/state matrix, and compact/phone/expanded + device evidence before calling
117
121
  the app ready. Keep scenario switches out of customer UI. A labelled preview fallback is acceptable
118
122
  only when the host cannot perform the task and it cannot write customer data.
@@ -208,9 +208,17 @@ images stay as `static.wixstatic.com` URLs in descriptors — do not vendor
208
208
  himi validate
209
209
  himi render <home-screen> --live --png # live visitor data; no VPN
210
210
  himi test --content . --json # wrong-reducer class; no test files
211
- himi push && himi promote # VPN + `himi login --dpx --target bo`
211
+ himi login --browser --target wix # your own Wix account; no VPN
212
+ himi push # a DRAFT by default; prints the exact promote command
213
+ himi promote --app <app> --release <id> --target wix # the one push printed; name the target
212
214
  ```
213
215
 
216
+ Self-serve is the default: `himi login --browser --target wix` signs in with the customer's own
217
+ Wix account and stores a scoped token, so `push` / `promote` need no VPN and no pasted secret
218
+ (`--wix` reuses the machine's Wix CLI credential, for a container with no browser). Wix
219
+ employees can sign in with `himi login --dpx` instead and then use `--target bo`, the in-house
220
+ alternative that does need the corporate network.
221
+
214
222
  Published `@wix/himalaya-cli@0.207.0` has `validate`/`render` but **no** `himi test`
215
223
  (or `himi site`). Use a newer CLI, or the in-repo CLI from a Himalaya checkout
216
224
  (`node --import tsx tools/himi-cli/src/cli.ts`, cwd = the checkout so `tsx` resolves).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wix/himalaya-cli",
3
- "version": "0.1032.0",
3
+ "version": "0.1034.0",
4
4
  "type": "module",
5
5
  "description": "himi — the Himalaya authoring CLI. Build a Tier-5 content package on your own machine, push it to the production serve as a draft, preview it on web + Himi Player, and read worker logs back — the remote dev loop. Wraps @himalaya/serve-cli for transport.",
6
6
  "keywords": [
@@ -65,5 +65,5 @@
65
65
  "artifactId": "himalaya-cli"
66
66
  }
67
67
  },
68
- "falconPackageHash": "5af127baf2b3845fd3e463154eecf88bb68a58849427ab3778d5627a"
68
+ "falconPackageHash": "c4b3f09da8eac063b06a334da8eb2e822f3f93974138b3e5daf56d84"
69
69
  }
@@ -5296,7 +5296,8 @@ const SCREENS = runtimeSetting({
5296
5296
  "props": {
5297
5297
  "text": "$service:spacesDeleteAccount.message",
5298
5298
  "style": "caption",
5299
- "color": "textTertiary"
5299
+ "color": "textTertiary",
5300
+ "collapseWhenEmpty": true
5300
5301
  }
5301
5302
  }
5302
5303
  },
@@ -5591,6 +5592,9 @@ const SCREENS = runtimeSetting({
5591
5592
  }
5592
5593
  ]
5593
5594
  }
5595
+ },
5596
+ "modifiers": {
5597
+ "hiddenPath": "$service:spacesWhatsNew.noItems"
5594
5598
  }
5595
5599
  },
5596
5600
  {
@@ -5972,6 +5976,24 @@ const SCREENS = runtimeSetting({
5972
5976
  "props": {
5973
5977
  "spacing": 0,
5974
5978
  "children": [
5979
+ {
5980
+ "id": "himi_shop.list.collection.loading",
5981
+ "body": {
5982
+ "package": "himalaya",
5983
+ "type": "Skeleton",
5984
+ "props": {
5985
+ "height": 72,
5986
+ "cornerRadius": 12,
5987
+ "count": 3
5988
+ }
5989
+ },
5990
+ "modifiers": {
5991
+ "hiddenPath": "$service:himiStoreShop.collection.noLoading",
5992
+ "padding": {
5993
+ "bottom": 12
5994
+ }
5995
+ }
5996
+ },
5975
5997
  {
5976
5998
  "id": "",
5977
5999
  "body": {
@@ -6233,6 +6255,52 @@ const SCREENS = runtimeSetting({
6233
6255
  }
6234
6256
  }
6235
6257
  },
6258
+ {
6259
+ "id": "himi_shop.list.collection.empty-source",
6260
+ "body": {
6261
+ "package": "himalaya",
6262
+ "type": "VStack",
6263
+ "props": {
6264
+ "spacing": 8,
6265
+ "alignment": "center",
6266
+ "children": [
6267
+ {
6268
+ "id": "",
6269
+ "body": {
6270
+ "package": "himalaya",
6271
+ "type": "Icon",
6272
+ "props": {
6273
+ "name": "inbox",
6274
+ "size": 28,
6275
+ "tint": "textTertiary"
6276
+ }
6277
+ },
6278
+ "modifiers": {
6279
+ "accessibilityRole": "decorative"
6280
+ }
6281
+ },
6282
+ {
6283
+ "id": "",
6284
+ "body": {
6285
+ "package": "himalaya",
6286
+ "type": "Text",
6287
+ "props": {
6288
+ "text": "$service:himiStoreShop.collection.emptySourceText",
6289
+ "style": "body",
6290
+ "color": "textSecondary"
6291
+ }
6292
+ }
6293
+ }
6294
+ ]
6295
+ }
6296
+ },
6297
+ "modifiers": {
6298
+ "hiddenPath": "$service:himiStoreShop.collection.noEmptySource",
6299
+ "padding": {
6300
+ "bottom": 12
6301
+ }
6302
+ }
6303
+ },
6236
6304
  {
6237
6305
  "id": "",
6238
6306
  "body": {
@@ -8647,6 +8715,9 @@ const SCREENS = runtimeSetting({
8647
8715
  "actionId": "tier5.himiStoreSaved.load"
8648
8716
  }
8649
8717
  }
8718
+ },
8719
+ "modifiers": {
8720
+ "hiddenPath": "$service:himiStoreSaved.noRows"
8650
8721
  }
8651
8722
  },
8652
8723
  {
@@ -8898,6 +8969,9 @@ const SCREENS = runtimeSetting({
8898
8969
  }
8899
8970
  ]
8900
8971
  }
8972
+ },
8973
+ "modifiers": {
8974
+ "hiddenPath": "$service:spacesCollections.noCollections"
8901
8975
  }
8902
8976
  },
8903
8977
  {
@@ -9944,6 +10018,24 @@ const SCREENS = runtimeSetting({
9944
10018
  "props": {
9945
10019
  "spacing": 0,
9946
10020
  "children": [
10021
+ {
10022
+ "id": "himi_orders.list.collection.loading",
10023
+ "body": {
10024
+ "package": "himalaya",
10025
+ "type": "Skeleton",
10026
+ "props": {
10027
+ "height": 72,
10028
+ "cornerRadius": 12,
10029
+ "count": 3
10030
+ }
10031
+ },
10032
+ "modifiers": {
10033
+ "hiddenPath": "$service:himiBrandedOrders.collection.noLoading",
10034
+ "padding": {
10035
+ "bottom": 12
10036
+ }
10037
+ }
10038
+ },
9947
10039
  {
9948
10040
  "id": "himi_orders.list.collection.search",
9949
10041
  "body": {
@@ -10226,6 +10318,52 @@ const SCREENS = runtimeSetting({
10226
10318
  }
10227
10319
  }
10228
10320
  },
10321
+ {
10322
+ "id": "himi_orders.list.collection.empty-source",
10323
+ "body": {
10324
+ "package": "himalaya",
10325
+ "type": "VStack",
10326
+ "props": {
10327
+ "spacing": 8,
10328
+ "alignment": "center",
10329
+ "children": [
10330
+ {
10331
+ "id": "",
10332
+ "body": {
10333
+ "package": "himalaya",
10334
+ "type": "Icon",
10335
+ "props": {
10336
+ "name": "inbox",
10337
+ "size": 28,
10338
+ "tint": "textTertiary"
10339
+ }
10340
+ },
10341
+ "modifiers": {
10342
+ "accessibilityRole": "decorative"
10343
+ }
10344
+ },
10345
+ {
10346
+ "id": "",
10347
+ "body": {
10348
+ "package": "himalaya",
10349
+ "type": "Text",
10350
+ "props": {
10351
+ "text": "$service:himiBrandedOrders.collection.emptySourceText",
10352
+ "style": "body",
10353
+ "color": "textSecondary"
10354
+ }
10355
+ }
10356
+ }
10357
+ ]
10358
+ }
10359
+ },
10360
+ "modifiers": {
10361
+ "hiddenPath": "$service:himiBrandedOrders.collection.noEmptySource",
10362
+ "padding": {
10363
+ "bottom": 12
10364
+ }
10365
+ }
10366
+ },
10229
10367
  {
10230
10368
  "id": "",
10231
10369
  "body": {
@@ -12467,6 +12605,24 @@ const SCREENS = runtimeSetting({
12467
12605
  "props": {
12468
12606
  "spacing": 0,
12469
12607
  "children": [
12608
+ {
12609
+ "id": "himi_services.list.collection.loading",
12610
+ "body": {
12611
+ "package": "himalaya",
12612
+ "type": "Skeleton",
12613
+ "props": {
12614
+ "height": 72,
12615
+ "cornerRadius": 12,
12616
+ "count": 3
12617
+ }
12618
+ },
12619
+ "modifiers": {
12620
+ "hiddenPath": "$service:himiBookingServices.collection.noLoading",
12621
+ "padding": {
12622
+ "bottom": 12
12623
+ }
12624
+ }
12625
+ },
12470
12626
  {
12471
12627
  "id": "",
12472
12628
  "body": {
@@ -12728,6 +12884,52 @@ const SCREENS = runtimeSetting({
12728
12884
  }
12729
12885
  }
12730
12886
  },
12887
+ {
12888
+ "id": "himi_services.list.collection.empty-source",
12889
+ "body": {
12890
+ "package": "himalaya",
12891
+ "type": "VStack",
12892
+ "props": {
12893
+ "spacing": 8,
12894
+ "alignment": "center",
12895
+ "children": [
12896
+ {
12897
+ "id": "",
12898
+ "body": {
12899
+ "package": "himalaya",
12900
+ "type": "Icon",
12901
+ "props": {
12902
+ "name": "inbox",
12903
+ "size": 28,
12904
+ "tint": "textTertiary"
12905
+ }
12906
+ },
12907
+ "modifiers": {
12908
+ "accessibilityRole": "decorative"
12909
+ }
12910
+ },
12911
+ {
12912
+ "id": "",
12913
+ "body": {
12914
+ "package": "himalaya",
12915
+ "type": "Text",
12916
+ "props": {
12917
+ "text": "$service:himiBookingServices.collection.emptySourceText",
12918
+ "style": "body",
12919
+ "color": "textSecondary"
12920
+ }
12921
+ }
12922
+ }
12923
+ ]
12924
+ }
12925
+ },
12926
+ "modifiers": {
12927
+ "hiddenPath": "$service:himiBookingServices.collection.noEmptySource",
12928
+ "padding": {
12929
+ "bottom": 12
12930
+ }
12931
+ }
12932
+ },
12731
12933
  {
12732
12934
  "id": "",
12733
12935
  "body": {
@@ -15347,6 +15549,24 @@ const SCREENS = runtimeSetting({
15347
15549
  "props": {
15348
15550
  "spacing": 0,
15349
15551
  "children": [
15552
+ {
15553
+ "id": "himi_bookings.list.collection.loading",
15554
+ "body": {
15555
+ "package": "himalaya",
15556
+ "type": "Skeleton",
15557
+ "props": {
15558
+ "height": 72,
15559
+ "cornerRadius": 12,
15560
+ "count": 3
15561
+ }
15562
+ },
15563
+ "modifiers": {
15564
+ "hiddenPath": "$service:himiBookingBookings.collection.noLoading",
15565
+ "padding": {
15566
+ "bottom": 12
15567
+ }
15568
+ }
15569
+ },
15350
15570
  {
15351
15571
  "id": "himi_bookings.list.collection.search",
15352
15572
  "body": {
@@ -15629,6 +15849,52 @@ const SCREENS = runtimeSetting({
15629
15849
  }
15630
15850
  }
15631
15851
  },
15852
+ {
15853
+ "id": "himi_bookings.list.collection.empty-source",
15854
+ "body": {
15855
+ "package": "himalaya",
15856
+ "type": "VStack",
15857
+ "props": {
15858
+ "spacing": 8,
15859
+ "alignment": "center",
15860
+ "children": [
15861
+ {
15862
+ "id": "",
15863
+ "body": {
15864
+ "package": "himalaya",
15865
+ "type": "Icon",
15866
+ "props": {
15867
+ "name": "inbox",
15868
+ "size": 28,
15869
+ "tint": "textTertiary"
15870
+ }
15871
+ },
15872
+ "modifiers": {
15873
+ "accessibilityRole": "decorative"
15874
+ }
15875
+ },
15876
+ {
15877
+ "id": "",
15878
+ "body": {
15879
+ "package": "himalaya",
15880
+ "type": "Text",
15881
+ "props": {
15882
+ "text": "$service:himiBookingBookings.collection.emptySourceText",
15883
+ "style": "body",
15884
+ "color": "textSecondary"
15885
+ }
15886
+ }
15887
+ }
15888
+ ]
15889
+ }
15890
+ },
15891
+ "modifiers": {
15892
+ "hiddenPath": "$service:himiBookingBookings.collection.noEmptySource",
15893
+ "padding": {
15894
+ "bottom": 12
15895
+ }
15896
+ }
15897
+ },
15632
15898
  {
15633
15899
  "id": "",
15634
15900
  "body": {
@@ -18146,6 +18412,24 @@ const SCREENS = runtimeSetting({
18146
18412
  "props": {
18147
18413
  "spacing": 0,
18148
18414
  "children": [
18415
+ {
18416
+ "id": "himi_plans.rows.collection.loading",
18417
+ "body": {
18418
+ "package": "himalaya",
18419
+ "type": "Skeleton",
18420
+ "props": {
18421
+ "height": 72,
18422
+ "cornerRadius": 12,
18423
+ "count": 3
18424
+ }
18425
+ },
18426
+ "modifiers": {
18427
+ "hiddenPath": "$service:himiBrandedPlans.collection.noLoading",
18428
+ "padding": {
18429
+ "bottom": 12
18430
+ }
18431
+ }
18432
+ },
18149
18433
  {
18150
18434
  "id": "himi_plans.rows.collection.search",
18151
18435
  "body": {
@@ -18385,6 +18669,52 @@ const SCREENS = runtimeSetting({
18385
18669
  }
18386
18670
  }
18387
18671
  },
18672
+ {
18673
+ "id": "himi_plans.rows.collection.empty-source",
18674
+ "body": {
18675
+ "package": "himalaya",
18676
+ "type": "VStack",
18677
+ "props": {
18678
+ "spacing": 8,
18679
+ "alignment": "center",
18680
+ "children": [
18681
+ {
18682
+ "id": "",
18683
+ "body": {
18684
+ "package": "himalaya",
18685
+ "type": "Icon",
18686
+ "props": {
18687
+ "name": "inbox",
18688
+ "size": 28,
18689
+ "tint": "textTertiary"
18690
+ }
18691
+ },
18692
+ "modifiers": {
18693
+ "accessibilityRole": "decorative"
18694
+ }
18695
+ },
18696
+ {
18697
+ "id": "",
18698
+ "body": {
18699
+ "package": "himalaya",
18700
+ "type": "Text",
18701
+ "props": {
18702
+ "text": "$service:himiBrandedPlans.collection.emptySourceText",
18703
+ "style": "body",
18704
+ "color": "textSecondary"
18705
+ }
18706
+ }
18707
+ }
18708
+ ]
18709
+ }
18710
+ },
18711
+ "modifiers": {
18712
+ "hiddenPath": "$service:himiBrandedPlans.collection.noEmptySource",
18713
+ "padding": {
18714
+ "bottom": 12
18715
+ }
18716
+ }
18717
+ },
18388
18718
  {
18389
18719
  "id": "",
18390
18720
  "body": {
@@ -20740,6 +21070,9 @@ const SCREENS = runtimeSetting({
20740
21070
  }
20741
21071
  ]
20742
21072
  }
21073
+ },
21074
+ "modifiers": {
21075
+ "hiddenPath": "$service:spacesMySubscriptions.noOrders"
20743
21076
  }
20744
21077
  },
20745
21078
  {
@@ -21570,6 +21903,24 @@ const SCREENS = runtimeSetting({
21570
21903
  "props": {
21571
21904
  "spacing": 0,
21572
21905
  "children": [
21906
+ {
21907
+ "id": "himi_blog.list.collection.loading",
21908
+ "body": {
21909
+ "package": "himalaya",
21910
+ "type": "Skeleton",
21911
+ "props": {
21912
+ "height": 72,
21913
+ "cornerRadius": 12,
21914
+ "count": 3
21915
+ }
21916
+ },
21917
+ "modifiers": {
21918
+ "hiddenPath": "$service:himiBlogFeed.collection.noLoading",
21919
+ "padding": {
21920
+ "bottom": 12
21921
+ }
21922
+ }
21923
+ },
21573
21924
  {
21574
21925
  "id": "",
21575
21926
  "body": {
@@ -21788,6 +22139,52 @@ const SCREENS = runtimeSetting({
21788
22139
  }
21789
22140
  }
21790
22141
  },
22142
+ {
22143
+ "id": "himi_blog.list.collection.empty-source",
22144
+ "body": {
22145
+ "package": "himalaya",
22146
+ "type": "VStack",
22147
+ "props": {
22148
+ "spacing": 8,
22149
+ "alignment": "center",
22150
+ "children": [
22151
+ {
22152
+ "id": "",
22153
+ "body": {
22154
+ "package": "himalaya",
22155
+ "type": "Icon",
22156
+ "props": {
22157
+ "name": "inbox",
22158
+ "size": 28,
22159
+ "tint": "textTertiary"
22160
+ }
22161
+ },
22162
+ "modifiers": {
22163
+ "accessibilityRole": "decorative"
22164
+ }
22165
+ },
22166
+ {
22167
+ "id": "",
22168
+ "body": {
22169
+ "package": "himalaya",
22170
+ "type": "Text",
22171
+ "props": {
22172
+ "text": "$service:himiBlogFeed.collection.emptySourceText",
22173
+ "style": "body",
22174
+ "color": "textSecondary"
22175
+ }
22176
+ }
22177
+ }
22178
+ ]
22179
+ }
22180
+ },
22181
+ "modifiers": {
22182
+ "hiddenPath": "$service:himiBlogFeed.collection.noEmptySource",
22183
+ "padding": {
22184
+ "bottom": 12
22185
+ }
22186
+ }
22187
+ },
21791
22188
  {
21792
22189
  "id": "",
21793
22190
  "body": {
@@ -30,6 +30,9 @@ export interface CollectionConfig {
30
30
  * `screenId` opens that screen with the row id; without it the verb reuses the
31
31
  * row's own tap action (the detail screen that owns the verb). */
32
32
  primaryVerb?: { label: string; screenId?: string };
33
+ /** A state field the DOMAIN narrows `rows` by (e.g. a category picker). While it is set,
34
+ * zero rows is a filtered result, not an empty source. */
35
+ narrowedBy?: string;
33
36
  }
34
37
  /** At or below this many records, with no query/filter narrowing them and no further
35
38
  * page, the list/grid toggle, Refine, chips, search and count are noise. */
@@ -41,7 +44,7 @@ export const COLLECTIONS: Record<string, CollectionConfig> = {
41
44
  defaultFilter: 'value:Upcoming', searchPlaceholder: 'Exact booking ID', filterValues: ['Upcoming', 'Past', 'Cancelled'],
42
45
  sortLabels: { default: 'Soonest', az: 'Oldest', za: 'Latest' } },
43
46
  himiEvents: { rows: 'results', title: 'title', subtitle: 'dateLine', image: 'image', view: 'grid', backendQuery: true, searchPlaceholder: 'Exact event title', filterValues: ['Upcoming', 'Past'], sortLabels: { default: 'Date', az: 'Title A–Z', za: 'Title Z–A' }, primaryVerb: { label: 'Register' } },
44
- himiBlogFeed: { rows: 'posts', title: 'title', subtitle: 'excerpt', image: 'image', filter: 'category', filterValuesFrom: 'categories', view: 'grid' },
47
+ himiBlogFeed: { rows: 'posts', title: 'title', subtitle: 'excerpt', image: 'image', filter: 'category', filterValuesFrom: 'categories', view: 'grid', narrowedBy: 'selectedCategoryId' },
45
48
  himiOwnerLiteProducts: { rows: 'products', title: 'name', subtitle: 'price', image: 'image', view: 'grid', backendQuery: true },
46
49
  himiOwnerModules: { instanceInput: 'module', rows: 'rows', title: 'title', subtitle: 'subtitle', image: 'image', filter: 'statusLabel', view: 'list', paged: true, reviewAction: 'prepareRecord', reviewSelectedAction: 'prepareSelected' },
47
50
  himiOwnerLiteServices: { rows: 'services', title: 'name', subtitle: 'subtitle', view: 'list', backendQuery: true, searchPlaceholder: 'Service name starts with…' },