@wix/himalaya-cli 0.1033.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 (126) hide show
  1. package/dist/cli.mjs +0 -2
  2. package/package.json +2 -2
  3. package/templates/beauty-salon/dev/index.ts +398 -1
  4. package/templates/beauty-salon/tier5-src/_shared/collection-contract.ts +4 -1
  5. package/templates/beauty-salon/tier5-src/_shared/collection-service.ts +36 -5
  6. package/templates/beauty-salon/tier5-src/_shared/empty-flags.ts +33 -0
  7. package/templates/beauty-salon/tier5-src/himi-store-saved/index.ts +3 -2
  8. package/templates/beauty-salon/tier5-src/wix-spaces-collections/index.ts +3 -2
  9. package/templates/beauty-salon/tier5-src/wix-spaces-my-subscriptions/index.ts +11 -2
  10. package/templates/beauty-salon/tier5-src/wix-spaces-whats-new/index.ts +3 -2
  11. package/templates/beauty-salon-owner/dev/index.ts +1216 -0
  12. package/templates/beauty-salon-owner/tier5-src/_shared/collection-contract.ts +4 -1
  13. package/templates/beauty-salon-owner/tier5-src/_shared/collection-service.ts +36 -5
  14. package/templates/branded-lite/dev/index.ts +2239 -343
  15. package/templates/branded-lite/tier5-src/_shared/branded-load-state.ts +106 -0
  16. package/templates/branded-lite/tier5-src/_shared/collection-contract.ts +4 -1
  17. package/templates/branded-lite/tier5-src/_shared/collection-service.ts +36 -5
  18. package/templates/branded-lite/tier5-src/_shared/empty-flags.ts +33 -0
  19. package/templates/branded-lite/tier5-src/himi-branded-lite-badges/index.ts +20 -16
  20. package/templates/branded-lite/tier5-src/himi-branded-lite-coupons/index.ts +20 -20
  21. package/templates/branded-lite/tier5-src/himi-branded-lite-donations/index.ts +20 -16
  22. package/templates/branded-lite/tier5-src/himi-branded-lite-forms/index.ts +23 -31
  23. package/templates/branded-lite/tier5-src/himi-branded-lite-galleries/index.ts +19 -14
  24. package/templates/branded-lite/tier5-src/himi-branded-lite-giftcards/index.ts +20 -16
  25. package/templates/branded-lite/tier5-src/himi-branded-lite-inbox/index.ts +20 -15
  26. package/templates/branded-lite/tier5-src/himi-branded-lite-invoices/index.ts +20 -16
  27. package/templates/branded-lite/tier5-src/himi-branded-lite-loyalty/index.ts +20 -17
  28. package/templates/branded-lite/tier5-src/himi-branded-lite-notifications/index.ts +20 -18
  29. package/templates/branded-lite/tier5-src/himi-branded-lite-notifsettings/index.ts +23 -19
  30. package/templates/branded-lite/tier5-src/himi-branded-lite-podcasts/index.ts +1 -1
  31. package/templates/branded-lite/tier5-src/himi-branded-lite-reservations/index.ts +24 -20
  32. package/templates/branded-lite/tier5-src/himi-branded-lite-reviews/index.ts +20 -17
  33. package/templates/branded-lite/tier5-src/himi-branded-lite-videos/index.ts +19 -15
  34. package/templates/branded-lite/tier5-src/himi-store-saved/index.ts +3 -2
  35. package/templates/branded-lite/tier5-src/wix-spaces-collections/index.ts +3 -2
  36. package/templates/branded-lite/tier5-src/wix-spaces-forum/index.ts +3 -2
  37. package/templates/branded-lite/tier5-src/wix-spaces-members/index.ts +19 -6
  38. package/templates/branded-lite/tier5-src/wix-spaces-my-subscriptions/index.ts +11 -2
  39. package/templates/branded-lite/tier5-src/wix-spaces-new-message/index.ts +3 -2
  40. package/templates/branded-lite/tier5-src/wix-spaces-whats-new/index.ts +3 -2
  41. package/templates/community-club/dev/index.ts +283 -2
  42. package/templates/community-club/tier5-src/_shared/collection-contract.ts +4 -1
  43. package/templates/community-club/tier5-src/_shared/collection-service.ts +36 -5
  44. package/templates/community-club/tier5-src/_shared/empty-flags.ts +33 -0
  45. package/templates/community-club/tier5-src/wix-spaces-whats-new/index.ts +3 -2
  46. package/templates/community-club-owner/dev/index.ts +1216 -0
  47. package/templates/community-club-owner/tier5-src/_shared/collection-contract.ts +4 -1
  48. package/templates/community-club-owner/tier5-src/_shared/collection-service.ts +36 -5
  49. package/templates/events-meetups/dev/index.ts +197 -1
  50. package/templates/events-meetups/tier5-src/_shared/collection-contract.ts +4 -1
  51. package/templates/events-meetups/tier5-src/_shared/collection-service.ts +36 -5
  52. package/templates/events-meetups/tier5-src/_shared/empty-flags.ts +33 -0
  53. package/templates/events-meetups/tier5-src/wix-spaces-whats-new/index.ts +3 -2
  54. package/templates/events-meetups-owner/dev/index.ts +1088 -0
  55. package/templates/events-meetups-owner/tier5-src/_shared/collection-contract.ts +4 -1
  56. package/templates/events-meetups-owner/tier5-src/_shared/collection-service.ts +36 -5
  57. package/templates/gym-fitness/dev/index.ts +462 -1
  58. package/templates/gym-fitness/tier5-src/_shared/collection-contract.ts +4 -1
  59. package/templates/gym-fitness/tier5-src/_shared/collection-service.ts +36 -5
  60. package/templates/gym-fitness/tier5-src/_shared/empty-flags.ts +33 -0
  61. package/templates/gym-fitness/tier5-src/himi-store-saved/index.ts +3 -2
  62. package/templates/gym-fitness/tier5-src/wix-spaces-collections/index.ts +3 -2
  63. package/templates/gym-fitness/tier5-src/wix-spaces-my-subscriptions/index.ts +11 -2
  64. package/templates/gym-fitness/tier5-src/wix-spaces-whats-new/index.ts +3 -2
  65. package/templates/gym-fitness-owner/dev/index.ts +1280 -0
  66. package/templates/gym-fitness-owner/tier5-src/_shared/collection-contract.ts +4 -1
  67. package/templates/gym-fitness-owner/tier5-src/_shared/collection-service.ts +36 -5
  68. package/templates/nonprofit-cause/dev/index.ts +264 -1
  69. package/templates/nonprofit-cause/tier5-src/_shared/collection-contract.ts +4 -1
  70. package/templates/nonprofit-cause/tier5-src/_shared/collection-service.ts +36 -5
  71. package/templates/nonprofit-cause/tier5-src/_shared/empty-flags.ts +33 -0
  72. package/templates/nonprofit-cause/tier5-src/wix-spaces-my-subscriptions/index.ts +11 -2
  73. package/templates/nonprofit-cause/tier5-src/wix-spaces-whats-new/index.ts +3 -2
  74. package/templates/nonprofit-cause-owner/dev/index.ts +1152 -0
  75. package/templates/nonprofit-cause-owner/tier5-src/_shared/collection-contract.ts +4 -1
  76. package/templates/nonprofit-cause-owner/tier5-src/_shared/collection-service.ts +36 -5
  77. package/templates/owner-lite/dev/index.ts +1280 -0
  78. package/templates/owner-lite/tier5-src/_shared/collection-contract.ts +4 -1
  79. package/templates/owner-lite/tier5-src/_shared/collection-service.ts +36 -5
  80. package/templates/podcast-creator/dev/index.ts +286 -23
  81. package/templates/podcast-creator/tier5-src/_shared/collection-contract.ts +4 -1
  82. package/templates/podcast-creator/tier5-src/_shared/collection-service.ts +36 -5
  83. package/templates/podcast-creator/tier5-src/_shared/empty-flags.ts +33 -0
  84. package/templates/podcast-creator/tier5-src/himi-branded-lite-podcasts/index.ts +1 -1
  85. package/templates/podcast-creator/tier5-src/wix-spaces-my-subscriptions/index.ts +11 -2
  86. package/templates/podcast-creator/tier5-src/wix-spaces-whats-new/index.ts +3 -2
  87. package/templates/podcast-creator-owner/dev/index.ts +1216 -0
  88. package/templates/podcast-creator-owner/tier5-src/_shared/collection-contract.ts +4 -1
  89. package/templates/podcast-creator-owner/tier5-src/_shared/collection-service.ts +36 -5
  90. package/templates/portfolio-creative/dev/index.ts +353 -23
  91. package/templates/portfolio-creative/tier5-src/_shared/collection-contract.ts +4 -1
  92. package/templates/portfolio-creative/tier5-src/_shared/collection-service.ts +36 -5
  93. package/templates/portfolio-creative/tier5-src/_shared/empty-flags.ts +33 -0
  94. package/templates/portfolio-creative/tier5-src/himi-store-saved/index.ts +3 -2
  95. package/templates/portfolio-creative/tier5-src/wix-spaces-collections/index.ts +3 -2
  96. package/templates/portfolio-creative/tier5-src/wix-spaces-whats-new/index.ts +3 -2
  97. package/templates/portfolio-creative-owner/dev/index.ts +1216 -0
  98. package/templates/portfolio-creative-owner/tier5-src/_shared/collection-contract.ts +4 -1
  99. package/templates/portfolio-creative-owner/tier5-src/_shared/collection-service.ts +36 -5
  100. package/templates/restaurant/dev/index.ts +197 -1
  101. package/templates/restaurant/tier5-src/_shared/collection-contract.ts +4 -1
  102. package/templates/restaurant/tier5-src/_shared/collection-service.ts +36 -5
  103. package/templates/restaurant/tier5-src/_shared/empty-flags.ts +33 -0
  104. package/templates/restaurant/tier5-src/wix-spaces-whats-new/index.ts +3 -2
  105. package/templates/restaurant-owner/dev/index.ts +1280 -0
  106. package/templates/restaurant-owner/tier5-src/_shared/collection-contract.ts +4 -1
  107. package/templates/restaurant-owner/tier5-src/_shared/collection-service.ts +36 -5
  108. package/templates/retail-store/dev/index.ts +203 -1
  109. package/templates/retail-store/tier5-src/_shared/collection-contract.ts +4 -1
  110. package/templates/retail-store/tier5-src/_shared/collection-service.ts +36 -5
  111. package/templates/retail-store/tier5-src/_shared/empty-flags.ts +33 -0
  112. package/templates/retail-store/tier5-src/himi-store-saved/index.ts +3 -2
  113. package/templates/retail-store/tier5-src/wix-spaces-collections/index.ts +3 -2
  114. package/templates/retail-store/tier5-src/wix-spaces-whats-new/index.ts +3 -2
  115. package/templates/retail-store-owner/dev/index.ts +1152 -0
  116. package/templates/retail-store-owner/tier5-src/_shared/collection-contract.ts +4 -1
  117. package/templates/retail-store-owner/tier5-src/_shared/collection-service.ts +36 -5
  118. package/templates/yoga-studio/dev/index.ts +392 -1
  119. package/templates/yoga-studio/tier5-src/_shared/collection-contract.ts +4 -1
  120. package/templates/yoga-studio/tier5-src/_shared/collection-service.ts +36 -5
  121. package/templates/yoga-studio/tier5-src/_shared/empty-flags.ts +33 -0
  122. package/templates/yoga-studio/tier5-src/wix-spaces-my-subscriptions/index.ts +11 -2
  123. package/templates/yoga-studio/tier5-src/wix-spaces-whats-new/index.ts +3 -2
  124. package/templates/yoga-studio-owner/dev/index.ts +1152 -0
  125. package/templates/yoga-studio-owner/tier5-src/_shared/collection-contract.ts +4 -1
  126. 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:`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wix/himalaya-cli",
3
- "version": "0.1033.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": "7837bf39e796e96ea058ad8a53b90966687ce65908583051a94208a3"
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…' },
@@ -122,14 +122,38 @@ export function decorateCollection(name: string, def: { state: State; actions?:
122
122
  const errored = s.status === 'error' || s.isErrored === true || s.errored === true || backendState?.status === 'error';
123
123
  const domainError = typeof s.error === 'string' ? s.error.trim() : '';
124
124
  const queryError = typeof backendState?.error === 'string' ? backendState.error.trim() : '';
125
- const errorMessage = queryError || domainError || copyParam('collection.loadError', 'This collection could not load. Try again.');
125
+ // Some domains carry their failure sentence in `emptyText` (portfolio, podcasts);
126
+ // the screen folds that node into this block, so keep the domain's own words.
127
+ const domainEmptyError = errored && typeof s.emptyText === 'string' ? s.emptyText.trim() : '';
128
+ const errorMessage = queryError || domainError || domainEmptyError || copyParam('collection.loadError', 'This collection could not load. Try again.');
126
129
  const canRetry = !!backend || typeof def.actions?.refresh === 'function' || typeof def.actions?.load === 'function' || typeof def.actions?.collectionRetry === 'function';
130
+ // Wix refused the visitor: retrying cannot help, signing in can.
131
+ const signInRequired = errored && s.signInRequired === true;
132
+ // "the source has nothing" and "your filter matched nothing" are
133
+ // different states. Only the second may offer "Clear filters", and the list chrome
134
+ // (view, refine, chips, counter, search) means nothing over a source with no rows.
135
+ // Loaded-row collections hold the whole source in `rows`, so zero rows IS an empty
136
+ // source. A backend query returns only matches, so zero rows is source-empty only
137
+ // when nothing narrowed it.
138
+ // Anything the customer (or the domain) narrowed the result by. While narrowed, zero rows
139
+ // is "your filter matched nothing" and the controls that got them here must stay.
140
+ // The DOMAIN's own filter (config.narrowedBy, e.g. blog category) narrowed the rows: the
141
+ // domain owns that empty state and its clear action. The shared "Clear filters" block
142
+ // cannot reset a domain filter, so it never shows for one.
143
+ const domainNarrowed = !!config.narrowedBy && !!s[config.narrowedBy];
127
144
  // A default view is what the screen opens on; anything else is the member's own
128
145
  // narrowing, which keeps the chrome (and the Clear that undoes it) on screen.
129
146
  // "All" and the collection's own default (e.g. Upcoming) are both un-narrowed: Clear
130
147
  // resets to "All", so showing it on either would offer a reset that changes nothing.
131
- const narrowed = !!prefs.query.trim() || (prefs.filter !== 'all' && prefs.filter !== initialCollection(config).filter);
132
- const hideChrome = !narrowed && !s.nextCursor && projected.loaded < COLLECTION_CHROME_MIN_ITEMS;
148
+ const narrowed = !!prefs.query.trim() || (prefs.filter !== 'all' && prefs.filter !== initialCollection(config).filter) || domainNarrowed;
149
+ const sourceEmpty = !loading && !errored && rows.length === 0 &&
150
+ (!(backend && config.backendQuery) || !narrowed) && !domainNarrowed;
151
+ const emptySourceText = (typeof s.emptyText === 'string' && s.emptyText.trim()) || copyParam('collection.emptySource', 'Nothing here yet');
152
+ // Chrome is noise over a small un-narrowed list (fewer than COLLECTION_CHROME_MIN_ITEMS
153
+ // records, no further page), over an empty source, and before the FIRST load or an
154
+ // un-narrowed failure. A re-query while typing keeps it (and the search field's focus).
155
+ const hideChrome = (!narrowed && !s.nextCursor && projected.loaded < COLLECTION_CHROME_MIN_ITEMS)
156
+ || sourceEmpty || ((loading || errored) && rows.length === 0 && !narrowed);
133
157
  return { ...s, collection: { ...prefs, ...projected,
134
158
  hideChrome, noActiveCriteria: !narrowed,
135
159
  viewName, viewMessage, saveMessage, noSavedViews: prefs.savedViews.length === 0,
@@ -138,8 +162,15 @@ export function decorateCollection(name: string, def: { state: State; actions?:
138
162
  noPageError: s.pageError !== true,
139
163
  noOffline: s.fromCache !== true,
140
164
  noError: !errored,
141
- noRetry: !canRetry,
165
+ noRetry: !canRetry || signInRequired,
166
+ noSignIn: !signInRequired,
167
+ errorTitle: signInRequired ? copyParam('collection.signInTitle', 'Sign in to see this') : copyParam('collection.loadErrorTitle', 'This collection could not load'),
142
168
  errorMessage,
169
+ noLoading: !loading,
170
+ // De-dup against a domain that paints its OWN empty block (screen-kit emptyBlock is
171
+ // gated on the domain's top-level `noEmpty`): only one empty state ever shows.
172
+ noEmptySource: !sourceEmpty || s.noEmpty === false,
173
+ emptySourceText,
143
174
  hideList: prefs.view !== 'list', hideGrid: prefs.view !== 'grid',
144
175
  hideComfortable: prefs.density !== 'comfortable', hideCompact: prefs.density !== 'compact',
145
176
  selectingLabel: prefs.selecting ? copyParam('collection.done', 'Done') : copyParam('collection.select', 'Select'),
@@ -147,7 +178,7 @@ export function decorateCollection(name: string, def: { state: State; actions?:
147
178
  cannotSaveSelected: !prefs.selectedIds.length || prefs.selectedIds.some(id => !rows.some(row => collectionId(row) === id)),
148
179
  filtersPresented, previewPresented: !!previewId, preview: projected.items.filter(row => row.collectionId === previewId),
149
180
  persistenceLabel: persisted.available ? copyParam('collection.onDevice', 'Saved on this device') : copyParam('collection.sessionOnly', 'Choices last for this session'),
150
- noEmpty: loading || errored || projected.items.length > 0,
181
+ noEmpty: loading || errored || sourceEmpty || domainNarrowed || projected.items.length > 0,
151
182
  summary: backend && config.backendQuery
152
183
  ? (s.fromCache ? copyParam('collection.cached', 'Saved offline · may be outdated')
153
184
  : typeof s.total === 'number' ? `${projected.items.length} / ${s.total} ${copyParam('collection.results', 'results')}`