@useinsider/guido 3.19.0 → 3.20.0-beta.0849ec7

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 (148) hide show
  1. package/README.md +22 -3
  2. package/dist/@types/config/schemas.js +76 -53
  3. package/dist/components/Guido.vue.js +4 -4
  4. package/dist/components/Guido.vue2.js +102 -86
  5. package/dist/components/organisms/AutoSaveController.vue2.js +9 -8
  6. package/dist/components/organisms/base/AuthErrorModal.vue.js +18 -0
  7. package/dist/components/organisms/base/AuthErrorModal.vue2.js +42 -0
  8. package/dist/components/organisms/base/Toaster.vue2.js +13 -12
  9. package/dist/components/organisms/extensions/recommendation/AssignStrategyDrawer.vue.js +13 -11
  10. package/dist/components/organisms/extensions/recommendation/AssignStrategyDrawer.vue2.js +78 -57
  11. package/dist/components/organisms/extensions/recommendation/LegacyStrategyUpdatedModal.vue.js +18 -0
  12. package/dist/components/organisms/extensions/recommendation/LegacyStrategyUpdatedModal.vue2.js +25 -0
  13. package/dist/components/organisms/extensions/recommendation/RemoveStrategyModal.vue2.js +28 -42
  14. package/dist/components/organisms/header/EditorActions.vue.js +5 -5
  15. package/dist/components/organisms/header/EditorActions.vue2.js +90 -57
  16. package/dist/components/organisms/header/LeftSlot.vue.js +5 -5
  17. package/dist/components/organisms/header/LeftSlot.vue2.js +16 -12
  18. package/dist/components/organisms/onboarding/OnboardingWrapper.vue2.js +28 -24
  19. package/dist/components/organisms/onboarding/RecommendationLegacyStrategyOnboarding.vue.js +21 -0
  20. package/dist/components/organisms/onboarding/RecommendationLegacyStrategyOnboarding.vue2.js +46 -0
  21. package/dist/components/organisms/onboarding/RecommendationStrategyOnboarding.vue.js +21 -0
  22. package/dist/components/organisms/onboarding/RecommendationStrategyOnboarding.vue2.js +47 -0
  23. package/dist/components/organisms/validation/ValidationErrorDrawer.vue.js +20 -0
  24. package/dist/components/organisms/validation/ValidationErrorDrawer.vue2.js +49 -0
  25. package/dist/components/wrappers/WpDrawer.vue.js +9 -7
  26. package/dist/components/wrappers/WpDrawer.vue2.js +1 -1
  27. package/dist/components/wrappers/WpModal.vue.js +1 -1
  28. package/dist/components/wrappers/WpModal.vue2.js +4 -3
  29. package/dist/composables/useActionsApi.js +52 -47
  30. package/dist/composables/useAuthError.js +52 -0
  31. package/dist/composables/useAutoSave.js +11 -11
  32. package/dist/composables/useCodeEditorApi.js +23 -9
  33. package/dist/composables/useCortexBlueprintBridge.js +122 -54
  34. package/dist/composables/useCustomInterfaceAppearance.js +65 -51
  35. package/dist/composables/useEmailTemplateApplier.js +111 -50
  36. package/dist/composables/useHtmlCompiler.js +37 -26
  37. package/dist/composables/useHtmlValidator.js +89 -82
  38. package/dist/composables/useHttp.js +64 -54
  39. package/dist/composables/useLegacyStrategyConversion.js +65 -0
  40. package/dist/composables/useRecommendation.js +40 -35
  41. package/dist/composables/useSave.js +90 -45
  42. package/dist/composables/useSaveValidation.js +282 -0
  43. package/dist/composables/useSaveValidationRollout.js +9 -0
  44. package/dist/composables/useStripo.js +43 -39
  45. package/dist/composables/useToaster.js +18 -22
  46. package/dist/composables/useTranslations.js +3 -2
  47. package/dist/composables/useVersionHistoryApi.js +33 -24
  48. package/dist/composables/validators/useCouponBlockValidator.js +24 -21
  49. package/dist/composables/validators/useLiquidValidator.js +15 -15
  50. package/dist/composables/validators/useUnsubscribeBlockValidator.js +34 -27
  51. package/dist/config/migrator/index.js +14 -13
  52. package/dist/config/migrator/itemsBlockMigrator.js +236 -248
  53. package/dist/config/migrator/recommendationMigrator.js +28 -21
  54. package/dist/config/migrator/recommendationPartnerMigrator.js +56 -0
  55. package/dist/enums/extensions/recommendationBlock.js +51 -34
  56. package/dist/enums/save-validation.js +4 -0
  57. package/dist/extensions/Blocks/Items/constants/cardLayout.js +20 -0
  58. package/dist/extensions/Blocks/Items/controls/name/trimming.js +18 -17
  59. package/dist/extensions/Blocks/Items/controls/settingsControl.js +114 -105
  60. package/dist/extensions/Blocks/Items/enums/productEnums.js +14 -9
  61. package/dist/extensions/Blocks/Items/layouts/horizontal.html.js +11 -9
  62. package/dist/extensions/Blocks/Items/template.js +219 -204
  63. package/dist/extensions/Blocks/Recommendation/block.js +65 -45
  64. package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +21 -20
  65. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +103 -90
  66. package/dist/extensions/Blocks/Recommendation/controls/main/strategy.js +150 -52
  67. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +74 -74
  68. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +274 -92
  69. package/dist/extensions/Blocks/Recommendation/utils/legacyStrategyMigration.js +42 -0
  70. package/dist/extensions/Blocks/Recommendation/utils/nodeConfigWriter.js +26 -16
  71. package/dist/extensions/Blocks/Recommendation/utils/partnerCustomizations.js +3 -1
  72. package/dist/extensions/Blocks/Recommendation/utils/partnerScope.js +25 -0
  73. package/dist/extensions/Blocks/Recommendation/utils/productIds.js +5 -3
  74. package/dist/extensions/Blocks/Recommendation/utils/strategyCommit.js +24 -0
  75. package/dist/extensions/Blocks/Recommendation/validation/requiredFields.js +21 -12
  76. package/dist/guido.css +1 -1
  77. package/dist/services/recommendationApi.js +46 -37
  78. package/dist/src/@types/config/schemas.d.ts +36 -0
  79. package/dist/src/@types/save-validation.d.ts +19 -0
  80. package/dist/src/components/Guido.vue.d.ts +17 -1
  81. package/dist/src/components/organisms/base/AuthErrorModal.vue.d.ts +2 -0
  82. package/dist/src/components/organisms/extensions/recommendation/LegacyStrategyUpdatedModal.vue.d.ts +2 -0
  83. package/dist/src/components/organisms/header/EditorActions.vue.d.ts +17 -1
  84. package/dist/src/components/organisms/header/HeaderWrapper.vue.d.ts +17 -1
  85. package/dist/src/components/organisms/header/RightSlot.vue.d.ts +17 -1
  86. package/dist/src/components/organisms/onboarding/RecommendationLegacyStrategyOnboarding.vue.d.ts +2 -0
  87. package/dist/src/components/organisms/onboarding/RecommendationStrategyOnboarding.vue.d.ts +2 -0
  88. package/dist/src/components/organisms/validation/ValidationErrorDrawer.vue.d.ts +2 -0
  89. package/dist/src/components/wrappers/WpDrawer.vue.d.ts +4 -3
  90. package/dist/src/components/wrappers/WpModal.vue.d.ts +5 -1
  91. package/dist/src/composables/useAuthError.d.ts +12 -0
  92. package/dist/src/composables/useConfig.d.ts +8 -0
  93. package/dist/src/composables/useCortexBlueprintBridge.d.ts +2 -3
  94. package/dist/src/composables/useEmailTemplateApplier.d.ts +18 -5
  95. package/dist/src/composables/useGuidoActions.d.ts +2 -0
  96. package/dist/src/composables/useHtmlValidator.d.ts +21 -0
  97. package/dist/src/composables/useHttp.d.ts +2 -0
  98. package/dist/src/composables/useLegacyStrategyConversion.d.ts +3 -0
  99. package/dist/src/composables/useSave.d.ts +6 -1
  100. package/dist/src/composables/useSaveValidation.d.ts +6 -0
  101. package/dist/src/composables/useSaveValidationRollout.d.ts +3 -0
  102. package/dist/src/composables/validators/useCouponBlockValidator.d.ts +3 -0
  103. package/dist/src/composables/validators/useUnsubscribeBlockValidator.d.ts +10 -0
  104. package/dist/src/config/migrator/index.d.ts +2 -1
  105. package/dist/src/config/migrator/recommendationPartnerMigrator.d.ts +19 -0
  106. package/dist/src/enums/extensions/recommendationBlock.d.ts +7 -1
  107. package/dist/src/enums/save-validation.d.ts +27 -0
  108. package/dist/src/extensions/Blocks/Items/constants/cardLayout.d.ts +44 -0
  109. package/dist/src/extensions/Blocks/Items/enums/productEnums.d.ts +3 -0
  110. package/dist/src/extensions/Blocks/Items/template.d.ts +19 -0
  111. package/dist/src/extensions/Blocks/Recommendation/block.d.ts +10 -0
  112. package/dist/src/extensions/Blocks/Recommendation/constants/defaultConfig.d.ts +1 -0
  113. package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +1 -1
  114. package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +2 -0
  115. package/dist/src/extensions/Blocks/Recommendation/controls/main/strategy.d.ts +10 -0
  116. package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +7 -2
  117. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +162 -1
  118. package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +6 -0
  119. package/dist/src/extensions/Blocks/Recommendation/utils/legacyStrategyMigration.d.ts +32 -0
  120. package/dist/src/extensions/Blocks/Recommendation/utils/partnerScope.d.ts +33 -0
  121. package/dist/src/extensions/Blocks/Recommendation/utils/productIds.d.ts +2 -0
  122. package/dist/src/extensions/Blocks/Recommendation/utils/strategyCommit.d.ts +14 -0
  123. package/dist/src/extensions/Blocks/Recommendation/validation/requiredFields.d.ts +4 -0
  124. package/dist/src/mock/cortexChatStore.d.ts +12 -0
  125. package/dist/src/services/recommendationApi.d.ts +2 -1
  126. package/dist/src/stores/config.d.ts +374 -0
  127. package/dist/src/stores/guido-email-editor.d.ts +20 -10
  128. package/dist/src/stores/onboarding.d.ts +812 -10
  129. package/dist/src/stores/recommendation.d.ts +5 -0
  130. package/dist/src/stores/save-validation.d.ts +22 -0
  131. package/dist/src/utils/dateUtil.d.ts +10 -0
  132. package/dist/src/utils/genericUtil.d.ts +3 -0
  133. package/dist/src/utils/stripoEditorApi.d.ts +4 -0
  134. package/dist/src/utils/templatePreparation.d.ts +30 -0
  135. package/dist/static/assets/icons/filled-arrow-rising.svg.js +5 -0
  136. package/dist/static/assets/icons/line-info.svg.js +5 -0
  137. package/dist/static/styles/components/recommendation-strategy.css.js +113 -9
  138. package/dist/static/styles/components/skeleton.css.js +23 -0
  139. package/dist/static/styles/components/version-history.css.js +2 -6
  140. package/dist/stores/config.js +55 -24
  141. package/dist/stores/guido-email-editor.js +3 -1
  142. package/dist/stores/onboarding.js +50 -36
  143. package/dist/stores/save-validation.js +30 -0
  144. package/dist/stores/unsubscribe.js +3 -3
  145. package/dist/utils/pairProductVariables.js +71 -71
  146. package/dist/utils/stripoEditorApi.js +11 -0
  147. package/dist/utils/templatePreparation.js +54 -51
  148. package/package.json +2 -1
@@ -16,6 +16,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
16
16
  templateId: string;
17
17
  userId: string;
18
18
  variationId?: string | undefined;
19
+ campaignId?: string | undefined;
20
+ templateLibraryId?: string | undefined;
19
21
  };
20
22
  partner: {
21
23
  name: string;
@@ -46,6 +48,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
46
48
  selectedUnsubscribePages: number[];
47
49
  forceRecreate: boolean;
48
50
  trackIdCounter: number;
51
+ recommendationCampaignUrls?: Record<string, unknown> | undefined;
49
52
  migration: {
50
53
  recommendationConfigs: {
51
54
  [x: string]: {
@@ -104,6 +107,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
104
107
  autosave: boolean;
105
108
  allowlistEnabled: boolean;
106
109
  linkTrackingIds: boolean;
110
+ allowSaveWithErrors: boolean;
107
111
  reusableRecommendationStrategy: boolean;
108
112
  };
109
113
  blocks: {
@@ -157,6 +161,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
157
161
  templateId: string;
158
162
  userId: string;
159
163
  variationId?: string | undefined;
164
+ campaignId?: string | undefined;
165
+ templateLibraryId?: string | undefined;
160
166
  };
161
167
  partner: {
162
168
  name: string;
@@ -187,6 +193,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
187
193
  selectedUnsubscribePages: number[];
188
194
  forceRecreate: boolean;
189
195
  trackIdCounter: number;
196
+ recommendationCampaignUrls?: Record<string, unknown> | undefined;
190
197
  migration: {
191
198
  recommendationConfigs: {
192
199
  [x: string]: {
@@ -245,6 +252,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
245
252
  autosave: boolean;
246
253
  allowlistEnabled: boolean;
247
254
  linkTrackingIds: boolean;
255
+ allowSaveWithErrors: boolean;
248
256
  reusableRecommendationStrategy: boolean;
249
257
  };
250
258
  blocks: {
@@ -298,6 +306,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
298
306
  templateId: string;
299
307
  userId: string;
300
308
  variationId?: string | undefined;
309
+ campaignId?: string | undefined;
310
+ templateLibraryId?: string | undefined;
301
311
  };
302
312
  partner: {
303
313
  name: string;
@@ -328,6 +338,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
328
338
  selectedUnsubscribePages: number[];
329
339
  forceRecreate: boolean;
330
340
  trackIdCounter: number;
341
+ recommendationCampaignUrls?: Record<string, unknown> | undefined;
331
342
  migration: {
332
343
  recommendationConfigs: {
333
344
  [x: string]: {
@@ -386,6 +397,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
386
397
  autosave: boolean;
387
398
  allowlistEnabled: boolean;
388
399
  linkTrackingIds: boolean;
400
+ allowSaveWithErrors: boolean;
389
401
  reusableRecommendationStrategy: boolean;
390
402
  };
391
403
  blocks: {
@@ -439,6 +451,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
439
451
  templateId: string;
440
452
  userId: string;
441
453
  variationId?: string | undefined;
454
+ campaignId?: string | undefined;
455
+ templateLibraryId?: string | undefined;
442
456
  };
443
457
  partner: {
444
458
  name: string;
@@ -469,6 +483,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
469
483
  selectedUnsubscribePages: number[];
470
484
  forceRecreate: boolean;
471
485
  trackIdCounter: number;
486
+ recommendationCampaignUrls?: Record<string, unknown> | undefined;
472
487
  migration: {
473
488
  recommendationConfigs: {
474
489
  [x: string]: {
@@ -527,6 +542,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
527
542
  autosave: boolean;
528
543
  allowlistEnabled: boolean;
529
544
  linkTrackingIds: boolean;
545
+ allowSaveWithErrors: boolean;
530
546
  reusableRecommendationStrategy: boolean;
531
547
  };
532
548
  blocks: {
@@ -580,6 +596,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
580
596
  templateId: string;
581
597
  userId: string;
582
598
  variationId?: string | undefined;
599
+ campaignId?: string | undefined;
600
+ templateLibraryId?: string | undefined;
583
601
  };
584
602
  partner: {
585
603
  name: string;
@@ -610,6 +628,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
610
628
  selectedUnsubscribePages: number[];
611
629
  forceRecreate: boolean;
612
630
  trackIdCounter: number;
631
+ recommendationCampaignUrls?: Record<string, unknown> | undefined;
613
632
  migration: {
614
633
  recommendationConfigs: {
615
634
  [x: string]: {
@@ -668,6 +687,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
668
687
  autosave: boolean;
669
688
  allowlistEnabled: boolean;
670
689
  linkTrackingIds: boolean;
690
+ allowSaveWithErrors: boolean;
671
691
  reusableRecommendationStrategy: boolean;
672
692
  };
673
693
  blocks: {
@@ -721,6 +741,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
721
741
  templateId: string;
722
742
  userId: string;
723
743
  variationId?: string | undefined;
744
+ campaignId?: string | undefined;
745
+ templateLibraryId?: string | undefined;
724
746
  };
725
747
  partner: {
726
748
  name: string;
@@ -751,6 +773,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
751
773
  selectedUnsubscribePages: number[];
752
774
  forceRecreate: boolean;
753
775
  trackIdCounter: number;
776
+ recommendationCampaignUrls?: Record<string, unknown> | undefined;
754
777
  migration: {
755
778
  recommendationConfigs: {
756
779
  [x: string]: {
@@ -809,6 +832,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
809
832
  autosave: boolean;
810
833
  allowlistEnabled: boolean;
811
834
  linkTrackingIds: boolean;
835
+ allowSaveWithErrors: boolean;
812
836
  reusableRecommendationStrategy: boolean;
813
837
  };
814
838
  blocks: {
@@ -862,6 +886,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
862
886
  templateId: string;
863
887
  userId: string;
864
888
  variationId?: string | undefined;
889
+ campaignId?: string | undefined;
890
+ templateLibraryId?: string | undefined;
865
891
  };
866
892
  partner: {
867
893
  name: string;
@@ -892,6 +918,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
892
918
  selectedUnsubscribePages: number[];
893
919
  forceRecreate: boolean;
894
920
  trackIdCounter: number;
921
+ recommendationCampaignUrls?: Record<string, unknown> | undefined;
895
922
  migration: {
896
923
  recommendationConfigs: {
897
924
  [x: string]: {
@@ -950,6 +977,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
950
977
  autosave: boolean;
951
978
  allowlistEnabled: boolean;
952
979
  linkTrackingIds: boolean;
980
+ allowSaveWithErrors: boolean;
953
981
  reusableRecommendationStrategy: boolean;
954
982
  };
955
983
  blocks: {
@@ -1003,6 +1031,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1003
1031
  templateId: string;
1004
1032
  userId: string;
1005
1033
  variationId?: string | undefined;
1034
+ campaignId?: string | undefined;
1035
+ templateLibraryId?: string | undefined;
1006
1036
  };
1007
1037
  partner: {
1008
1038
  name: string;
@@ -1033,6 +1063,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1033
1063
  selectedUnsubscribePages: number[];
1034
1064
  forceRecreate: boolean;
1035
1065
  trackIdCounter: number;
1066
+ recommendationCampaignUrls?: Record<string, unknown> | undefined;
1036
1067
  migration: {
1037
1068
  recommendationConfigs: {
1038
1069
  [x: string]: {
@@ -1091,6 +1122,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1091
1122
  autosave: boolean;
1092
1123
  allowlistEnabled: boolean;
1093
1124
  linkTrackingIds: boolean;
1125
+ allowSaveWithErrors: boolean;
1094
1126
  reusableRecommendationStrategy: boolean;
1095
1127
  };
1096
1128
  blocks: {
@@ -1144,6 +1176,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1144
1176
  templateId: string;
1145
1177
  userId: string;
1146
1178
  variationId?: string | undefined;
1179
+ campaignId?: string | undefined;
1180
+ templateLibraryId?: string | undefined;
1147
1181
  };
1148
1182
  partner: {
1149
1183
  name: string;
@@ -1174,6 +1208,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1174
1208
  selectedUnsubscribePages: number[];
1175
1209
  forceRecreate: boolean;
1176
1210
  trackIdCounter: number;
1211
+ recommendationCampaignUrls?: Record<string, unknown> | undefined;
1177
1212
  migration: {
1178
1213
  recommendationConfigs: {
1179
1214
  [x: string]: {
@@ -1232,6 +1267,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1232
1267
  autosave: boolean;
1233
1268
  allowlistEnabled: boolean;
1234
1269
  linkTrackingIds: boolean;
1270
+ allowSaveWithErrors: boolean;
1235
1271
  reusableRecommendationStrategy: boolean;
1236
1272
  };
1237
1273
  blocks: {
@@ -1285,6 +1321,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1285
1321
  templateId: string;
1286
1322
  userId: string;
1287
1323
  variationId?: string | undefined;
1324
+ campaignId?: string | undefined;
1325
+ templateLibraryId?: string | undefined;
1288
1326
  };
1289
1327
  partner: {
1290
1328
  name: string;
@@ -1315,6 +1353,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1315
1353
  selectedUnsubscribePages: number[];
1316
1354
  forceRecreate: boolean;
1317
1355
  trackIdCounter: number;
1356
+ recommendationCampaignUrls?: Record<string, unknown> | undefined;
1318
1357
  migration: {
1319
1358
  recommendationConfigs: {
1320
1359
  [x: string]: {
@@ -1373,6 +1412,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1373
1412
  autosave: boolean;
1374
1413
  allowlistEnabled: boolean;
1375
1414
  linkTrackingIds: boolean;
1415
+ allowSaveWithErrors: boolean;
1376
1416
  reusableRecommendationStrategy: boolean;
1377
1417
  };
1378
1418
  blocks: {
@@ -1426,6 +1466,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1426
1466
  templateId: string;
1427
1467
  userId: string;
1428
1468
  variationId?: string | undefined;
1469
+ campaignId?: string | undefined;
1470
+ templateLibraryId?: string | undefined;
1429
1471
  };
1430
1472
  partner: {
1431
1473
  name: string;
@@ -1456,6 +1498,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1456
1498
  selectedUnsubscribePages: number[];
1457
1499
  forceRecreate: boolean;
1458
1500
  trackIdCounter: number;
1501
+ recommendationCampaignUrls?: Record<string, unknown> | undefined;
1459
1502
  migration: {
1460
1503
  recommendationConfigs: {
1461
1504
  [x: string]: {
@@ -1514,6 +1557,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1514
1557
  autosave: boolean;
1515
1558
  allowlistEnabled: boolean;
1516
1559
  linkTrackingIds: boolean;
1560
+ allowSaveWithErrors: boolean;
1517
1561
  reusableRecommendationStrategy: boolean;
1518
1562
  };
1519
1563
  blocks: {
@@ -1567,6 +1611,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1567
1611
  templateId: string;
1568
1612
  userId: string;
1569
1613
  variationId?: string | undefined;
1614
+ campaignId?: string | undefined;
1615
+ templateLibraryId?: string | undefined;
1570
1616
  };
1571
1617
  partner: {
1572
1618
  name: string;
@@ -1597,6 +1643,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1597
1643
  selectedUnsubscribePages: number[];
1598
1644
  forceRecreate: boolean;
1599
1645
  trackIdCounter: number;
1646
+ recommendationCampaignUrls?: Record<string, unknown> | undefined;
1600
1647
  migration: {
1601
1648
  recommendationConfigs: {
1602
1649
  [x: string]: {
@@ -1655,6 +1702,297 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1655
1702
  autosave: boolean;
1656
1703
  allowlistEnabled: boolean;
1657
1704
  linkTrackingIds: boolean;
1705
+ allowSaveWithErrors: boolean;
1706
+ reusableRecommendationStrategy: boolean;
1707
+ };
1708
+ blocks: {
1709
+ excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
1710
+ includeCustoms: ("dynamic-content" | "checkbox-block" | "radio-button-block" | "recommendation-block" | "unsubscribe-block" | "coupon-block" | "items-block")[];
1711
+ };
1712
+ compiler: {
1713
+ customRules: ({
1714
+ type: "replace";
1715
+ search: string;
1716
+ replacement: string;
1717
+ replaceAll?: boolean | undefined;
1718
+ id: string;
1719
+ description?: string | undefined;
1720
+ priority: number;
1721
+ } | {
1722
+ type: "regex";
1723
+ pattern: string;
1724
+ replacement: string;
1725
+ flags?: string | undefined;
1726
+ id: string;
1727
+ description?: string | undefined;
1728
+ priority: number;
1729
+ } | {
1730
+ type: "remove";
1731
+ targets: string[];
1732
+ id: string;
1733
+ description?: string | undefined;
1734
+ priority: number;
1735
+ } | {
1736
+ type: "custom";
1737
+ processor: (html: string) => string;
1738
+ id: string;
1739
+ description?: string | undefined;
1740
+ priority: number;
1741
+ })[];
1742
+ ignoreDefaultRules: boolean;
1743
+ };
1744
+ callbacks: {
1745
+ externalValidation?: import("@@/Types/config").ExternalValidationHandler | undefined;
1746
+ };
1747
+ } | null;
1748
+ } & import("pinia").PiniaCustomStateProperties<ConfigStoreState>) => string;
1749
+ /**
1750
+ * Get the campaign ID
1751
+ */
1752
+ campaignId: (state: {
1753
+ initialized: boolean;
1754
+ config: {
1755
+ identity: {
1756
+ templateId: string;
1757
+ userId: string;
1758
+ variationId?: string | undefined;
1759
+ campaignId?: string | undefined;
1760
+ templateLibraryId?: string | undefined;
1761
+ };
1762
+ partner: {
1763
+ name: string;
1764
+ productType: 60 | 49 | 97;
1765
+ messageType: 1 | 2;
1766
+ username: string;
1767
+ fallbackFont?: {
1768
+ name: string;
1769
+ family: string;
1770
+ } | undefined;
1771
+ };
1772
+ template: {
1773
+ html: string;
1774
+ css: string;
1775
+ preselectedDynamicContent: {
1776
+ text: string;
1777
+ value: string;
1778
+ fallback?: string | undefined;
1779
+ format?: {
1780
+ key: string;
1781
+ value: string;
1782
+ } | undefined;
1783
+ }[];
1784
+ dynamicContentList: {
1785
+ [x: string]: import("../library").DynamicContentNode[];
1786
+ };
1787
+ customFieldAttributes: string[];
1788
+ selectedUnsubscribePages: number[];
1789
+ forceRecreate: boolean;
1790
+ trackIdCounter: number;
1791
+ recommendationCampaignUrls?: Record<string, unknown> | undefined;
1792
+ migration: {
1793
+ recommendationConfigs: {
1794
+ [x: string]: {
1795
+ id?: number | undefined;
1796
+ decimalCount?: string | number | undefined;
1797
+ productIds?: unknown[] | undefined;
1798
+ sendProductRequestFlag?: boolean | undefined;
1799
+ shuffleProducts?: boolean | undefined;
1800
+ filters?: unknown[] | undefined;
1801
+ currency?: string | undefined;
1802
+ currencySettings?: unknown;
1803
+ language?: string | undefined;
1804
+ strategy?: string | undefined;
1805
+ recommendedProducts?: unknown[] | undefined;
1806
+ cardsInRow?: number | undefined;
1807
+ mobileRightPadding?: number | undefined;
1808
+ mobileLeftPadding?: number | undefined;
1809
+ unresponsive?: boolean | undefined;
1810
+ orientation?: string | undefined;
1811
+ textTrimming?: boolean | undefined;
1812
+ blockType?: string | undefined;
1813
+ size?: string | number | undefined;
1814
+ verticalResponsiveness?: boolean | undefined;
1815
+ isPriceMovedToNextLine?: boolean | undefined;
1816
+ isPriceDeletedForZeroSale?: boolean | undefined;
1817
+ } & {
1818
+ [key: string]: unknown;
1819
+ };
1820
+ };
1821
+ };
1822
+ };
1823
+ editor: {
1824
+ locale: string;
1825
+ translationsPath: string;
1826
+ migrationDate: number;
1827
+ emailHeader: {
1828
+ senderName: string;
1829
+ subject: string;
1830
+ };
1831
+ savedModulesFolderName: string;
1832
+ defaultModulesFolderName: string;
1833
+ };
1834
+ ui: {
1835
+ showHeader: boolean;
1836
+ backButtonLabel?: string | undefined;
1837
+ };
1838
+ features: {
1839
+ dynamicContent: boolean;
1840
+ saveAsTemplate: boolean;
1841
+ versionHistory: boolean;
1842
+ testMessage: boolean;
1843
+ displayConditions: boolean;
1844
+ unsubscribe: boolean;
1845
+ modulesDisabled: boolean;
1846
+ liquidSyntax: boolean;
1847
+ autosave: boolean;
1848
+ allowlistEnabled: boolean;
1849
+ linkTrackingIds: boolean;
1850
+ allowSaveWithErrors: boolean;
1851
+ reusableRecommendationStrategy: boolean;
1852
+ };
1853
+ blocks: {
1854
+ excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
1855
+ includeCustoms: ("dynamic-content" | "checkbox-block" | "radio-button-block" | "recommendation-block" | "unsubscribe-block" | "coupon-block" | "items-block")[];
1856
+ };
1857
+ compiler: {
1858
+ customRules: ({
1859
+ type: "replace";
1860
+ search: string;
1861
+ replacement: string;
1862
+ replaceAll?: boolean | undefined;
1863
+ id: string;
1864
+ description?: string | undefined;
1865
+ priority: number;
1866
+ } | {
1867
+ type: "regex";
1868
+ pattern: string;
1869
+ replacement: string;
1870
+ flags?: string | undefined;
1871
+ id: string;
1872
+ description?: string | undefined;
1873
+ priority: number;
1874
+ } | {
1875
+ type: "remove";
1876
+ targets: string[];
1877
+ id: string;
1878
+ description?: string | undefined;
1879
+ priority: number;
1880
+ } | {
1881
+ type: "custom";
1882
+ processor: (html: string) => string;
1883
+ id: string;
1884
+ description?: string | undefined;
1885
+ priority: number;
1886
+ })[];
1887
+ ignoreDefaultRules: boolean;
1888
+ };
1889
+ callbacks: {
1890
+ externalValidation?: import("@@/Types/config").ExternalValidationHandler | undefined;
1891
+ };
1892
+ } | null;
1893
+ } & import("pinia").PiniaCustomStateProperties<ConfigStoreState>) => string;
1894
+ /**
1895
+ * Get the template-library ID of the host template
1896
+ */
1897
+ templateLibraryId: (state: {
1898
+ initialized: boolean;
1899
+ config: {
1900
+ identity: {
1901
+ templateId: string;
1902
+ userId: string;
1903
+ variationId?: string | undefined;
1904
+ campaignId?: string | undefined;
1905
+ templateLibraryId?: string | undefined;
1906
+ };
1907
+ partner: {
1908
+ name: string;
1909
+ productType: 60 | 49 | 97;
1910
+ messageType: 1 | 2;
1911
+ username: string;
1912
+ fallbackFont?: {
1913
+ name: string;
1914
+ family: string;
1915
+ } | undefined;
1916
+ };
1917
+ template: {
1918
+ html: string;
1919
+ css: string;
1920
+ preselectedDynamicContent: {
1921
+ text: string;
1922
+ value: string;
1923
+ fallback?: string | undefined;
1924
+ format?: {
1925
+ key: string;
1926
+ value: string;
1927
+ } | undefined;
1928
+ }[];
1929
+ dynamicContentList: {
1930
+ [x: string]: import("../library").DynamicContentNode[];
1931
+ };
1932
+ customFieldAttributes: string[];
1933
+ selectedUnsubscribePages: number[];
1934
+ forceRecreate: boolean;
1935
+ trackIdCounter: number;
1936
+ recommendationCampaignUrls?: Record<string, unknown> | undefined;
1937
+ migration: {
1938
+ recommendationConfigs: {
1939
+ [x: string]: {
1940
+ id?: number | undefined;
1941
+ decimalCount?: string | number | undefined;
1942
+ productIds?: unknown[] | undefined;
1943
+ sendProductRequestFlag?: boolean | undefined;
1944
+ shuffleProducts?: boolean | undefined;
1945
+ filters?: unknown[] | undefined;
1946
+ currency?: string | undefined;
1947
+ currencySettings?: unknown;
1948
+ language?: string | undefined;
1949
+ strategy?: string | undefined;
1950
+ recommendedProducts?: unknown[] | undefined;
1951
+ cardsInRow?: number | undefined;
1952
+ mobileRightPadding?: number | undefined;
1953
+ mobileLeftPadding?: number | undefined;
1954
+ unresponsive?: boolean | undefined;
1955
+ orientation?: string | undefined;
1956
+ textTrimming?: boolean | undefined;
1957
+ blockType?: string | undefined;
1958
+ size?: string | number | undefined;
1959
+ verticalResponsiveness?: boolean | undefined;
1960
+ isPriceMovedToNextLine?: boolean | undefined;
1961
+ isPriceDeletedForZeroSale?: boolean | undefined;
1962
+ } & {
1963
+ [key: string]: unknown;
1964
+ };
1965
+ };
1966
+ };
1967
+ };
1968
+ editor: {
1969
+ locale: string;
1970
+ translationsPath: string;
1971
+ migrationDate: number;
1972
+ emailHeader: {
1973
+ senderName: string;
1974
+ subject: string;
1975
+ };
1976
+ savedModulesFolderName: string;
1977
+ defaultModulesFolderName: string;
1978
+ };
1979
+ ui: {
1980
+ showHeader: boolean;
1981
+ backButtonLabel?: string | undefined;
1982
+ };
1983
+ features: {
1984
+ dynamicContent: boolean;
1985
+ saveAsTemplate: boolean;
1986
+ versionHistory: boolean;
1987
+ testMessage: boolean;
1988
+ displayConditions: boolean;
1989
+ unsubscribe: boolean;
1990
+ modulesDisabled: boolean;
1991
+ liquidSyntax: boolean;
1992
+ autosave: boolean;
1993
+ allowlistEnabled: boolean;
1994
+ linkTrackingIds: boolean;
1995
+ allowSaveWithErrors: boolean;
1658
1996
  reusableRecommendationStrategy: boolean;
1659
1997
  };
1660
1998
  blocks: {
@@ -1708,6 +2046,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1708
2046
  templateId: string;
1709
2047
  userId: string;
1710
2048
  variationId?: string | undefined;
2049
+ campaignId?: string | undefined;
2050
+ templateLibraryId?: string | undefined;
1711
2051
  };
1712
2052
  partner: {
1713
2053
  name: string;
@@ -1738,6 +2078,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1738
2078
  selectedUnsubscribePages: number[];
1739
2079
  forceRecreate: boolean;
1740
2080
  trackIdCounter: number;
2081
+ recommendationCampaignUrls?: Record<string, unknown> | undefined;
1741
2082
  migration: {
1742
2083
  recommendationConfigs: {
1743
2084
  [x: string]: {
@@ -1796,6 +2137,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1796
2137
  autosave: boolean;
1797
2138
  allowlistEnabled: boolean;
1798
2139
  linkTrackingIds: boolean;
2140
+ allowSaveWithErrors: boolean;
1799
2141
  reusableRecommendationStrategy: boolean;
1800
2142
  };
1801
2143
  blocks: {
@@ -1849,6 +2191,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1849
2191
  templateId: string;
1850
2192
  userId: string;
1851
2193
  variationId?: string | undefined;
2194
+ campaignId?: string | undefined;
2195
+ templateLibraryId?: string | undefined;
1852
2196
  };
1853
2197
  partner: {
1854
2198
  name: string;
@@ -1879,6 +2223,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1879
2223
  selectedUnsubscribePages: number[];
1880
2224
  forceRecreate: boolean;
1881
2225
  trackIdCounter: number;
2226
+ recommendationCampaignUrls?: Record<string, unknown> | undefined;
1882
2227
  migration: {
1883
2228
  recommendationConfigs: {
1884
2229
  [x: string]: {
@@ -1937,6 +2282,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1937
2282
  autosave: boolean;
1938
2283
  allowlistEnabled: boolean;
1939
2284
  linkTrackingIds: boolean;
2285
+ allowSaveWithErrors: boolean;
1940
2286
  reusableRecommendationStrategy: boolean;
1941
2287
  };
1942
2288
  blocks: {
@@ -1990,6 +2336,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1990
2336
  templateId: string;
1991
2337
  userId: string;
1992
2338
  variationId?: string | undefined;
2339
+ campaignId?: string | undefined;
2340
+ templateLibraryId?: string | undefined;
1993
2341
  };
1994
2342
  partner: {
1995
2343
  name: string;
@@ -2020,6 +2368,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
2020
2368
  selectedUnsubscribePages: number[];
2021
2369
  forceRecreate: boolean;
2022
2370
  trackIdCounter: number;
2371
+ recommendationCampaignUrls?: Record<string, unknown> | undefined;
2023
2372
  migration: {
2024
2373
  recommendationConfigs: {
2025
2374
  [x: string]: {
@@ -2078,6 +2427,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
2078
2427
  autosave: boolean;
2079
2428
  allowlistEnabled: boolean;
2080
2429
  linkTrackingIds: boolean;
2430
+ allowSaveWithErrors: boolean;
2081
2431
  reusableRecommendationStrategy: boolean;
2082
2432
  };
2083
2433
  blocks: {
@@ -2121,6 +2471,18 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
2121
2471
  };
2122
2472
  } | null;
2123
2473
  } & import("pinia").PiniaCustomStateProperties<ConfigStoreState>) => number;
2474
+ /**
2475
+ * Transactional campaigns keep the hard save block. Reactive getter, so
2476
+ * consumers stay safe in setup where a raw config read snapshots null (SD-147945).
2477
+ */
2478
+ isTransactional(): boolean;
2479
+ /**
2480
+ * Soft-save policy: may the editor persist a template with validation errors?
2481
+ * Default true (host sets features.allowSaveWithErrors=false for transactional +
2482
+ * unsub). Reactive getter defaulting true — reading via isFeatureEnabled would
2483
+ * floor to false pre-init and momentarily hide the soft-save option (SD-147430).
2484
+ */
2485
+ allowSaveWithErrors(): boolean;
2124
2486
  /**
2125
2487
  * Get the username
2126
2488
  */
@@ -2131,6 +2493,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
2131
2493
  templateId: string;
2132
2494
  userId: string;
2133
2495
  variationId?: string | undefined;
2496
+ campaignId?: string | undefined;
2497
+ templateLibraryId?: string | undefined;
2134
2498
  };
2135
2499
  partner: {
2136
2500
  name: string;
@@ -2161,6 +2525,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
2161
2525
  selectedUnsubscribePages: number[];
2162
2526
  forceRecreate: boolean;
2163
2527
  trackIdCounter: number;
2528
+ recommendationCampaignUrls?: Record<string, unknown> | undefined;
2164
2529
  migration: {
2165
2530
  recommendationConfigs: {
2166
2531
  [x: string]: {
@@ -2219,6 +2584,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
2219
2584
  autosave: boolean;
2220
2585
  allowlistEnabled: boolean;
2221
2586
  linkTrackingIds: boolean;
2587
+ allowSaveWithErrors: boolean;
2222
2588
  reusableRecommendationStrategy: boolean;
2223
2589
  };
2224
2590
  blocks: {
@@ -2272,6 +2638,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
2272
2638
  templateId: string;
2273
2639
  userId: string;
2274
2640
  variationId?: string | undefined;
2641
+ campaignId?: string | undefined;
2642
+ templateLibraryId?: string | undefined;
2275
2643
  };
2276
2644
  partner: {
2277
2645
  name: string;
@@ -2302,6 +2670,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
2302
2670
  selectedUnsubscribePages: number[];
2303
2671
  forceRecreate: boolean;
2304
2672
  trackIdCounter: number;
2673
+ recommendationCampaignUrls?: Record<string, unknown> | undefined;
2305
2674
  migration: {
2306
2675
  recommendationConfigs: {
2307
2676
  [x: string]: {
@@ -2360,6 +2729,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
2360
2729
  autosave: boolean;
2361
2730
  allowlistEnabled: boolean;
2362
2731
  linkTrackingIds: boolean;
2732
+ allowSaveWithErrors: boolean;
2363
2733
  reusableRecommendationStrategy: boolean;
2364
2734
  };
2365
2735
  blocks: {
@@ -2415,6 +2785,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
2415
2785
  templateId: string;
2416
2786
  userId: string;
2417
2787
  variationId?: string | undefined;
2788
+ campaignId?: string | undefined;
2789
+ templateLibraryId?: string | undefined;
2418
2790
  };
2419
2791
  partner: {
2420
2792
  name: string;
@@ -2445,6 +2817,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
2445
2817
  selectedUnsubscribePages: number[];
2446
2818
  forceRecreate: boolean;
2447
2819
  trackIdCounter: number;
2820
+ recommendationCampaignUrls?: Record<string, unknown> | undefined;
2448
2821
  migration: {
2449
2822
  recommendationConfigs: {
2450
2823
  [x: string]: {
@@ -2503,6 +2876,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
2503
2876
  autosave: boolean;
2504
2877
  allowlistEnabled: boolean;
2505
2878
  linkTrackingIds: boolean;
2879
+ allowSaveWithErrors: boolean;
2506
2880
  reusableRecommendationStrategy: boolean;
2507
2881
  };
2508
2882
  blocks: {