@wix/himalaya-cli 0.1479.0 → 0.1480.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/cli.mjs +454 -270
  2. package/dist/preview-assets.generated.bin +0 -0
  3. package/guides/component-reference.json +2 -25
  4. package/guides/component-reference.md +3 -9
  5. package/package.json +2 -2
  6. package/templates/beauty-salon/dev/index.ts +29 -229
  7. package/templates/beauty-salon/tier5-src/himi-booking-time/index.ts +69 -9
  8. package/templates/beauty-salon/tier5-src/himi-store-account/index.ts +6 -1
  9. package/templates/beauty-salon/tier5-src/wix-spaces-my-subscriptions/index.ts +2 -2
  10. package/templates/branded-lite/dev/index.ts +58 -364
  11. package/templates/branded-lite/tier5-src/himi-booking-time/index.ts +69 -9
  12. package/templates/branded-lite/tier5-src/himi-events-rsvp/index.ts +5 -0
  13. package/templates/branded-lite/tier5-src/himi-store-account/index.ts +6 -1
  14. package/templates/branded-lite/tier5-src/wix-spaces-my-subscriptions/index.ts +2 -2
  15. package/templates/community-club/dev/index.ts +26 -134
  16. package/templates/community-club/tier5-src/himi-events-rsvp/index.ts +5 -0
  17. package/templates/community-club/tier5-src/himi-store-account/index.ts +6 -1
  18. package/templates/events-meetups/dev/index.ts +26 -134
  19. package/templates/events-meetups/tier5-src/himi-events-rsvp/index.ts +5 -0
  20. package/templates/events-meetups/tier5-src/himi-store-account/index.ts +6 -1
  21. package/templates/gym-fitness/dev/index.ts +55 -363
  22. package/templates/gym-fitness/tier5-src/himi-booking-time/index.ts +69 -9
  23. package/templates/gym-fitness/tier5-src/himi-events-rsvp/index.ts +5 -0
  24. package/templates/gym-fitness/tier5-src/himi-store-account/index.ts +6 -1
  25. package/templates/gym-fitness/tier5-src/wix-spaces-my-subscriptions/index.ts +2 -2
  26. package/templates/nonprofit-cause/dev/index.ts +29 -136
  27. package/templates/nonprofit-cause/tier5-src/himi-events-rsvp/index.ts +5 -0
  28. package/templates/nonprofit-cause/tier5-src/himi-store-account/index.ts +6 -1
  29. package/templates/nonprofit-cause/tier5-src/wix-spaces-my-subscriptions/index.ts +2 -2
  30. package/templates/podcast-creator/dev/index.ts +29 -136
  31. package/templates/podcast-creator/tier5-src/himi-events-rsvp/index.ts +5 -0
  32. package/templates/podcast-creator/tier5-src/himi-store-account/index.ts +6 -1
  33. package/templates/podcast-creator/tier5-src/wix-spaces-my-subscriptions/index.ts +2 -2
  34. package/templates/portfolio-creative/dev/index.ts +26 -134
  35. package/templates/portfolio-creative/tier5-src/himi-events-rsvp/index.ts +5 -0
  36. package/templates/portfolio-creative/tier5-src/himi-store-account/index.ts +6 -1
  37. package/templates/restaurant/dev/index.ts +26 -134
  38. package/templates/restaurant/tier5-src/himi-events-rsvp/index.ts +5 -0
  39. package/templates/restaurant/tier5-src/himi-store-account/index.ts +6 -1
  40. package/templates/retail-store/tier5-src/himi-store-account/index.ts +6 -1
  41. package/templates/yoga-studio/dev/index.ts +55 -363
  42. package/templates/yoga-studio/tier5-src/himi-booking-time/index.ts +69 -9
  43. package/templates/yoga-studio/tier5-src/himi-events-rsvp/index.ts +5 -0
  44. package/templates/yoga-studio/tier5-src/himi-store-account/index.ts +6 -1
  45. package/templates/yoga-studio/tier5-src/wix-spaces-my-subscriptions/index.ts +2 -2
@@ -10554,14 +10554,15 @@ const SCREENS = runtimeSetting({
10554
10554
  "package": "himalaya",
10555
10555
  "type": "Button",
10556
10556
  "props": {
10557
- "title": "Go to Account",
10557
+ "title": "Sign in",
10558
10558
  "style": "secondary",
10559
10559
  "fullWidth": true,
10560
10560
  "leadingIcon": "person",
10561
10561
  "action": {
10562
10562
  "actionId": "himi.open",
10563
10563
  "params": {
10564
- "screenId": "himi_account"
10564
+ "screenId": "himi_sign_in",
10565
+ "mode": "signin"
10565
10566
  }
10566
10567
  }
10567
10568
  }
@@ -22283,140 +22284,6 @@ const TEMPLATED: { pattern: string; display: string; liveSeed?: LiveSeed; static
22283
22284
  }
22284
22285
  }
22285
22286
  },
22286
- {
22287
- "id": "himi_rsvp.signin_card",
22288
- "body": {
22289
- "package": "himalaya",
22290
- "type": "VStack",
22291
- "props": {
22292
- "spacing": 12,
22293
- "alignment": "leading",
22294
- "children": [
22295
- {
22296
- "id": "",
22297
- "body": {
22298
- "package": "himalaya",
22299
- "type": "HStack",
22300
- "props": {
22301
- "spacing": 10,
22302
- "children": [
22303
- {
22304
- "id": "",
22305
- "body": {
22306
- "package": "himalaya",
22307
- "type": "Icon",
22308
- "props": {
22309
- "name": "person",
22310
- "size": 18,
22311
- "tint": "accentPrimary"
22312
- }
22313
- },
22314
- "modifiers": {
22315
- "accessibilityRole": "decorative"
22316
- }
22317
- },
22318
- {
22319
- "id": "",
22320
- "body": {
22321
- "package": "himalaya",
22322
- "type": "Text",
22323
- "props": {
22324
- "text": "Sign in to RSVP",
22325
- "style": "bodyEmphasis"
22326
- }
22327
- }
22328
- }
22329
- ]
22330
- }
22331
- }
22332
- },
22333
- {
22334
- "id": "",
22335
- "body": {
22336
- "package": "himalaya",
22337
- "type": "Text",
22338
- "props": {
22339
- "text": "Events can be browsed as a guest. RSVP is saved to your member identity.",
22340
- "style": "body",
22341
- "color": "textSecondary"
22342
- }
22343
- }
22344
- },
22345
- {
22346
- "id": "himi_rsvp.email",
22347
- "body": {
22348
- "package": "himalaya",
22349
- "type": "TextField",
22350
- "props": {
22351
- "placeholder": "Email",
22352
- "value": "",
22353
- "keyboard": "email",
22354
- "autoCapitalization": "none",
22355
- "onChange": {
22356
- "actionId": "tier5.himiEventsRsvp.setEmail"
22357
- }
22358
- }
22359
- }
22360
- },
22361
- {
22362
- "id": "himi_rsvp.password",
22363
- "body": {
22364
- "package": "himalaya",
22365
- "type": "TextField",
22366
- "props": {
22367
- "placeholder": "Password",
22368
- "valuePath": "$service:himiEventsRsvp.password",
22369
- "secure": true,
22370
- "autoCapitalization": "none",
22371
- "onChange": {
22372
- "actionId": "tier5.himiEventsRsvp.setPassword"
22373
- }
22374
- }
22375
- }
22376
- },
22377
- {
22378
- "id": "himi_rsvp.signin",
22379
- "body": {
22380
- "package": "himalaya",
22381
- "type": "Button",
22382
- "props": {
22383
- "title": "Sign in",
22384
- "style": "primary",
22385
- "fullWidth": true,
22386
- "action": {
22387
- "actionId": "tier5.himiEventsRsvp.signIn"
22388
- }
22389
- }
22390
- },
22391
- "modifiers": {
22392
- "cornerRadius": 8,
22393
- "pressFeedback": "scale",
22394
- "haptic": "medium"
22395
- }
22396
- }
22397
- ]
22398
- }
22399
- },
22400
- "modifiers": {
22401
- "background": {
22402
- "token": "surfaceElevated"
22403
- },
22404
- "border": {
22405
- "width": 1,
22406
- "color": {
22407
- "token": "border"
22408
- }
22409
- },
22410
- "cornerRadius": 8,
22411
- "padding": {
22412
- "leading": 14,
22413
- "trailing": 14,
22414
- "top": 14,
22415
- "bottom": 14
22416
- },
22417
- "hiddenPath": "$service:himiEventsRsvp.isMember"
22418
- }
22419
- },
22420
22287
  {
22421
22288
  "id": "himi_rsvp.member_card",
22422
22289
  "body": {
@@ -22532,6 +22399,32 @@ const TEMPLATED: { pattern: string; display: string; liveSeed?: LiveSeed; static
22532
22399
  "hiddenPath": "$service:himiEventsRsvp.noSuccess"
22533
22400
  }
22534
22401
  },
22402
+ {
22403
+ "id": "himi_rsvp.confirm_sign_in",
22404
+ "body": {
22405
+ "package": "himalaya",
22406
+ "type": "Button",
22407
+ "props": {
22408
+ "title": "Confirm RSVP",
22409
+ "style": "primary",
22410
+ "fullWidth": true,
22411
+ "action": {
22412
+ "actionId": "himi.open",
22413
+ "params": {
22414
+ "screenId": "himi_sign_in",
22415
+ "mode": "signin",
22416
+ "intent": "rsvp"
22417
+ }
22418
+ }
22419
+ }
22420
+ },
22421
+ "modifiers": {
22422
+ "cornerRadius": 8,
22423
+ "pressFeedback": "scale",
22424
+ "haptic": "medium",
22425
+ "hiddenPath": "$service:himiEventsRsvp.hideGuestRsvp"
22426
+ }
22427
+ },
22535
22428
  {
22536
22429
  "id": "himi_rsvp.confirm",
22537
22430
  "body": {
@@ -35,6 +35,9 @@ interface S {
35
35
  noSuccess: boolean;
36
36
  canRsvp: boolean;
37
37
  cannotRsvp: boolean;
38
+ /** Hides a guest's RSVP button, which opens a sign-in screen: shown only for a guest with
39
+ * an event to RSVP to, as `cannotRsvp` requires an event for a member's. */
40
+ hideGuestRsvp: boolean;
38
41
  errored: boolean;
39
42
  notErrored: boolean;
40
43
  isLoading: boolean;
@@ -74,6 +77,7 @@ function derive(s: S): S {
74
77
  notMember: !s.isMember,
75
78
  canRsvp,
76
79
  cannotRsvp: !canRsvp,
80
+ hideGuestRsvp: s.isMember || !hasEvent,
77
81
  noSuccess: !hasSuccess,
78
82
  notErrored: !s.errored,
79
83
  noEmpty: s.status === "loading" || s.errored || hasEvent,
@@ -144,6 +148,7 @@ const svc = defineService<S, {
144
148
  noSuccess: true,
145
149
  canRsvp: false,
146
150
  cannotRsvp: true,
151
+ hideGuestRsvp: true,
147
152
  errored: false,
148
153
  notErrored: true,
149
154
  isLoading: true,
@@ -365,6 +365,11 @@ function authHeadline(s: S, isRegistering: boolean, isRecovering: boolean): { au
365
365
  authTitle: copyParam("storeAccount.authTitleRsvp", "Sign in to RSVP"),
366
366
  authBody: copyParam("storeAccount.authBodyRsvp", "Sign in to RSVP, then we’ll bring you back."),
367
367
  };
368
+ case "book":
369
+ return {
370
+ authTitle: copyParam("storeAccount.authTitleBook", "Sign in to book"),
371
+ authBody: copyParam("storeAccount.authBodyBook", "Sign in to book this time, then we’ll bring you back."),
372
+ };
368
373
  case "post":
369
374
  return {
370
375
  authTitle: copyParam("storeAccount.authTitlePost", "Sign in to post"),
@@ -392,7 +397,7 @@ interface S extends IapRestoreFields {
392
397
  noMemberImage: boolean;
393
398
  authTitle: string;
394
399
  authBody: string;
395
- /** Mid-flow gate intent (`join_group` | `rsvp` | `post` | ""). */
400
+ /** Mid-flow gate intent (`join_group` | `rsvp` | `book` | `post` | ""). */
396
401
  authIntent: string;
397
402
  authContextName: string;
398
403
  returnScreenId: string;
@@ -9,7 +9,7 @@ interface S {
9
9
  status: "loading" | "ready";
10
10
  orders: Row[];
11
11
  emptyText: string;
12
- /** When true, descriptor hides the guest-only "Go to Account" CTA (hiddenWhen). */
12
+ /** When true, descriptor hides the guest-only "Sign in" CTA (hiddenWhen). */
13
13
  hideAccountCta: boolean;
14
14
  }
15
15
 
@@ -19,7 +19,7 @@ function norm(o: WixPlanOrder): Row {
19
19
  }
20
20
 
21
21
  const EMPTY_MEMBER = "No subscriptions yet";
22
- const EMPTY_GUEST = "Sign in from Account to see subscriptions you’ve joined — we don’t invent sample memberships.";
22
+ const EMPTY_GUEST = "Sign in to see the subscriptions you’ve joined — we don’t invent sample memberships.";
23
23
  const EMPTY_FORBIDDEN = "No subscriptions for this member yet.";
24
24
 
25
25
  /** The signed-in member's email, or "" for anyone else. A visitor's identity is
@@ -10492,14 +10492,15 @@ const SCREENS = runtimeSetting({
10492
10492
  "package": "himalaya",
10493
10493
  "type": "Button",
10494
10494
  "props": {
10495
- "title": "Go to Account",
10495
+ "title": "Sign in",
10496
10496
  "style": "secondary",
10497
10497
  "fullWidth": true,
10498
10498
  "leadingIcon": "person",
10499
10499
  "action": {
10500
10500
  "actionId": "himi.open",
10501
10501
  "params": {
10502
- "screenId": "himi_account"
10502
+ "screenId": "himi_sign_in",
10503
+ "mode": "signin"
10503
10504
  }
10504
10505
  }
10505
10506
  }
@@ -22752,140 +22753,6 @@ const TEMPLATED: { pattern: string; display: string; liveSeed?: LiveSeed; static
22752
22753
  }
22753
22754
  }
22754
22755
  },
22755
- {
22756
- "id": "himi_rsvp.signin_card",
22757
- "body": {
22758
- "package": "himalaya",
22759
- "type": "VStack",
22760
- "props": {
22761
- "spacing": 12,
22762
- "alignment": "leading",
22763
- "children": [
22764
- {
22765
- "id": "",
22766
- "body": {
22767
- "package": "himalaya",
22768
- "type": "HStack",
22769
- "props": {
22770
- "spacing": 10,
22771
- "children": [
22772
- {
22773
- "id": "",
22774
- "body": {
22775
- "package": "himalaya",
22776
- "type": "Icon",
22777
- "props": {
22778
- "name": "person",
22779
- "size": 18,
22780
- "tint": "accentPrimary"
22781
- }
22782
- },
22783
- "modifiers": {
22784
- "accessibilityRole": "decorative"
22785
- }
22786
- },
22787
- {
22788
- "id": "",
22789
- "body": {
22790
- "package": "himalaya",
22791
- "type": "Text",
22792
- "props": {
22793
- "text": "Sign in to RSVP",
22794
- "style": "bodyEmphasis"
22795
- }
22796
- }
22797
- }
22798
- ]
22799
- }
22800
- }
22801
- },
22802
- {
22803
- "id": "",
22804
- "body": {
22805
- "package": "himalaya",
22806
- "type": "Text",
22807
- "props": {
22808
- "text": "Events can be browsed as a guest. RSVP is saved to your member identity.",
22809
- "style": "body",
22810
- "color": "textSecondary"
22811
- }
22812
- }
22813
- },
22814
- {
22815
- "id": "himi_rsvp.email",
22816
- "body": {
22817
- "package": "himalaya",
22818
- "type": "TextField",
22819
- "props": {
22820
- "placeholder": "Email",
22821
- "value": "",
22822
- "keyboard": "email",
22823
- "autoCapitalization": "none",
22824
- "onChange": {
22825
- "actionId": "tier5.himiEventsRsvp.setEmail"
22826
- }
22827
- }
22828
- }
22829
- },
22830
- {
22831
- "id": "himi_rsvp.password",
22832
- "body": {
22833
- "package": "himalaya",
22834
- "type": "TextField",
22835
- "props": {
22836
- "placeholder": "Password",
22837
- "valuePath": "$service:himiEventsRsvp.password",
22838
- "secure": true,
22839
- "autoCapitalization": "none",
22840
- "onChange": {
22841
- "actionId": "tier5.himiEventsRsvp.setPassword"
22842
- }
22843
- }
22844
- }
22845
- },
22846
- {
22847
- "id": "himi_rsvp.signin",
22848
- "body": {
22849
- "package": "himalaya",
22850
- "type": "Button",
22851
- "props": {
22852
- "title": "Sign in",
22853
- "style": "primary",
22854
- "fullWidth": true,
22855
- "action": {
22856
- "actionId": "tier5.himiEventsRsvp.signIn"
22857
- }
22858
- }
22859
- },
22860
- "modifiers": {
22861
- "cornerRadius": 8,
22862
- "pressFeedback": "scale",
22863
- "haptic": "medium"
22864
- }
22865
- }
22866
- ]
22867
- }
22868
- },
22869
- "modifiers": {
22870
- "background": {
22871
- "token": "surfaceElevated"
22872
- },
22873
- "border": {
22874
- "width": 1,
22875
- "color": {
22876
- "token": "border"
22877
- }
22878
- },
22879
- "cornerRadius": 8,
22880
- "padding": {
22881
- "leading": 14,
22882
- "trailing": 14,
22883
- "top": 14,
22884
- "bottom": 14
22885
- },
22886
- "hiddenPath": "$service:himiEventsRsvp.isMember"
22887
- }
22888
- },
22889
22756
  {
22890
22757
  "id": "himi_rsvp.member_card",
22891
22758
  "body": {
@@ -23001,6 +22868,32 @@ const TEMPLATED: { pattern: string; display: string; liveSeed?: LiveSeed; static
23001
22868
  "hiddenPath": "$service:himiEventsRsvp.noSuccess"
23002
22869
  }
23003
22870
  },
22871
+ {
22872
+ "id": "himi_rsvp.confirm_sign_in",
22873
+ "body": {
22874
+ "package": "himalaya",
22875
+ "type": "Button",
22876
+ "props": {
22877
+ "title": "Confirm RSVP",
22878
+ "style": "primary",
22879
+ "fullWidth": true,
22880
+ "action": {
22881
+ "actionId": "himi.open",
22882
+ "params": {
22883
+ "screenId": "himi_sign_in",
22884
+ "mode": "signin",
22885
+ "intent": "rsvp"
22886
+ }
22887
+ }
22888
+ }
22889
+ },
22890
+ "modifiers": {
22891
+ "cornerRadius": 8,
22892
+ "pressFeedback": "scale",
22893
+ "haptic": "medium",
22894
+ "hiddenPath": "$service:himiEventsRsvp.hideGuestRsvp"
22895
+ }
22896
+ },
23004
22897
  {
23005
22898
  "id": "himi_rsvp.confirm",
23006
22899
  "body": {
@@ -35,6 +35,9 @@ interface S {
35
35
  noSuccess: boolean;
36
36
  canRsvp: boolean;
37
37
  cannotRsvp: boolean;
38
+ /** Hides a guest's RSVP button, which opens a sign-in screen: shown only for a guest with
39
+ * an event to RSVP to, as `cannotRsvp` requires an event for a member's. */
40
+ hideGuestRsvp: boolean;
38
41
  errored: boolean;
39
42
  notErrored: boolean;
40
43
  isLoading: boolean;
@@ -74,6 +77,7 @@ function derive(s: S): S {
74
77
  notMember: !s.isMember,
75
78
  canRsvp,
76
79
  cannotRsvp: !canRsvp,
80
+ hideGuestRsvp: s.isMember || !hasEvent,
77
81
  noSuccess: !hasSuccess,
78
82
  notErrored: !s.errored,
79
83
  noEmpty: s.status === "loading" || s.errored || hasEvent,
@@ -144,6 +148,7 @@ const svc = defineService<S, {
144
148
  noSuccess: true,
145
149
  canRsvp: false,
146
150
  cannotRsvp: true,
151
+ hideGuestRsvp: true,
147
152
  errored: false,
148
153
  notErrored: true,
149
154
  isLoading: true,
@@ -365,6 +365,11 @@ function authHeadline(s: S, isRegistering: boolean, isRecovering: boolean): { au
365
365
  authTitle: copyParam("storeAccount.authTitleRsvp", "Sign in to RSVP"),
366
366
  authBody: copyParam("storeAccount.authBodyRsvp", "Sign in to RSVP, then we’ll bring you back."),
367
367
  };
368
+ case "book":
369
+ return {
370
+ authTitle: copyParam("storeAccount.authTitleBook", "Sign in to book"),
371
+ authBody: copyParam("storeAccount.authBodyBook", "Sign in to book this time, then we’ll bring you back."),
372
+ };
368
373
  case "post":
369
374
  return {
370
375
  authTitle: copyParam("storeAccount.authTitlePost", "Sign in to post"),
@@ -392,7 +397,7 @@ interface S extends IapRestoreFields {
392
397
  noMemberImage: boolean;
393
398
  authTitle: string;
394
399
  authBody: string;
395
- /** Mid-flow gate intent (`join_group` | `rsvp` | `post` | ""). */
400
+ /** Mid-flow gate intent (`join_group` | `rsvp` | `book` | `post` | ""). */
396
401
  authIntent: string;
397
402
  authContextName: string;
398
403
  returnScreenId: string;
@@ -9,7 +9,7 @@ interface S {
9
9
  status: "loading" | "ready";
10
10
  orders: Row[];
11
11
  emptyText: string;
12
- /** When true, descriptor hides the guest-only "Go to Account" CTA (hiddenWhen). */
12
+ /** When true, descriptor hides the guest-only "Sign in" CTA (hiddenWhen). */
13
13
  hideAccountCta: boolean;
14
14
  }
15
15
 
@@ -19,7 +19,7 @@ function norm(o: WixPlanOrder): Row {
19
19
  }
20
20
 
21
21
  const EMPTY_MEMBER = "No subscriptions yet";
22
- const EMPTY_GUEST = "Sign in from Account to see subscriptions you’ve joined — we don’t invent sample memberships.";
22
+ const EMPTY_GUEST = "Sign in to see the subscriptions you’ve joined — we don’t invent sample memberships.";
23
23
  const EMPTY_FORBIDDEN = "No subscriptions for this member yet.";
24
24
 
25
25
  /** The signed-in member's email, or "" for anyone else. A visitor's identity is