@useinsider/guido 3.2.1-beta.d58ee72 → 3.3.0-beta.1d2853a

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 (161) hide show
  1. package/README.md +117 -1
  2. package/dist/@types/config/schemas.js +153 -95
  3. package/dist/components/Guido.vue.js +4 -4
  4. package/dist/components/Guido.vue2.js +91 -87
  5. package/dist/components/organisms/AutoSaveController.vue.js +17 -0
  6. package/dist/components/organisms/AutoSaveController.vue2.js +13 -0
  7. package/dist/components/organisms/header/AiStatusPill.vue.js +18 -0
  8. package/dist/components/organisms/header/AiStatusPill.vue2.js +13 -0
  9. package/dist/components/organisms/header/AutoSaveToggle.vue.js +22 -0
  10. package/dist/components/organisms/header/AutoSaveToggle.vue2.js +19 -0
  11. package/dist/components/organisms/header/MiddleSlot.vue.js +7 -7
  12. package/dist/components/organisms/header/MiddleSlot.vue2.js +8 -7
  13. package/dist/components/organisms/header/RightSlot.vue.js +8 -8
  14. package/dist/components/organisms/header/RightSlot.vue2.js +9 -8
  15. package/dist/components/organisms/onboarding/AMPOnboarding.vue2.js +51 -31
  16. package/dist/components/organisms/onboarding/GenericOnboarding.vue.js +1 -1
  17. package/dist/components/organisms/onboarding/GenericOnboarding.vue2.js +23 -22
  18. package/dist/components/organisms/onboarding/ItemsOnboarding.vue.js +1 -1
  19. package/dist/components/organisms/onboarding/ItemsOnboarding.vue2.js +37 -39
  20. package/dist/components/organisms/onboarding/TextBlockOnboarding.vue.js +3 -3
  21. package/dist/components/organisms/onboarding/TextBlockOnboarding.vue2.js +30 -41
  22. package/dist/components/organisms/onboarding/VersionHistoryOnboarding.vue2.js +15 -14
  23. package/dist/composables/useAutoSave.js +71 -0
  24. package/dist/composables/useCortexBlueprintBridge.js +91 -0
  25. package/dist/composables/useEmailTemplateApplier.js +41 -0
  26. package/dist/composables/useFullStoryBridge.js +14 -0
  27. package/dist/composables/useGuidoStateBridge.js +48 -0
  28. package/dist/composables/useHtmlValidator.js +41 -36
  29. package/dist/composables/useRecommendation.js +46 -26
  30. package/dist/composables/useRibbonOffset.js +21 -0
  31. package/dist/composables/useSave.js +19 -16
  32. package/dist/composables/useStripo.js +40 -40
  33. package/dist/composables/validators/useCouponBlockValidator.js +24 -0
  34. package/dist/config/compiler/recommendationCompilerRules.js +25 -25
  35. package/dist/config/compiler/unsubscribeCompilerRules.js +40 -37
  36. package/dist/config/compiler/utils/recommendationCompilerUtils.js +107 -71
  37. package/dist/config/migrator/index.js +9 -9
  38. package/dist/config/migrator/radioButtonMigrator.js +64 -44
  39. package/dist/config/migrator/recommendation/compositionMapper.js +98 -0
  40. package/dist/config/migrator/recommendation/extractors.js +27 -0
  41. package/dist/config/migrator/recommendation/htmlBuilder.js +496 -0
  42. package/dist/config/migrator/recommendation/parseLegacyConfig.js +33 -0
  43. package/dist/config/migrator/recommendation/settingsMapper.js +70 -0
  44. package/dist/config/migrator/recommendation/themeMapper.js +93 -0
  45. package/dist/config/migrator/recommendationMigrator.js +74 -290
  46. package/dist/enums/extensions/recommendationBlock.js +97 -42
  47. package/dist/enums/onboarding.js +7 -2
  48. package/dist/enums/unsubscribe.js +39 -31
  49. package/dist/extensions/Blocks/Checkbox/control.js +23 -23
  50. package/dist/extensions/Blocks/RadioButton/control.js +15 -15
  51. package/dist/extensions/Blocks/RadioButton/template.js +1 -1
  52. package/dist/extensions/Blocks/Recommendation/block.js +60 -50
  53. package/dist/extensions/Blocks/Recommendation/constants/controlIds.js +1 -1
  54. package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +5 -5
  55. package/dist/extensions/Blocks/Recommendation/controls/customAttribute/index.js +21 -18
  56. package/dist/extensions/Blocks/Recommendation/controls/customAttribute/textTrim.js +99 -0
  57. package/dist/extensions/Blocks/Recommendation/controls/main/algorithm.js +27 -26
  58. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +3 -1
  59. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +228 -181
  60. package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +27 -57
  61. package/dist/extensions/Blocks/Recommendation/controls/shared/textTrimCssRules.js +14 -0
  62. package/dist/extensions/Blocks/Recommendation/services/configService.js +76 -33
  63. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +18 -17
  64. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +144 -91
  65. package/dist/extensions/Blocks/Recommendation/templates/grid/elementRenderer.js +19 -10
  66. package/dist/extensions/Blocks/Recommendation/templates/grid/template.js +8 -8
  67. package/dist/extensions/Blocks/Recommendation/templates/list/elementRenderer.js +25 -15
  68. package/dist/extensions/Blocks/Recommendation/templates/list/template.js +11 -11
  69. package/dist/extensions/Blocks/Recommendation/templates/utils.js +1 -1
  70. package/dist/extensions/Blocks/Recommendation/utils/filterUtil.js +17 -14
  71. package/dist/extensions/Blocks/Recommendation/utils/legacyStrategyMap.js +21 -0
  72. package/dist/extensions/Blocks/Recommendation/utils/preserveTextStyles.js +13 -22
  73. package/dist/extensions/Blocks/Recommendation/validation/requiredFields.js +33 -0
  74. package/dist/guido.css +1 -1
  75. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +393 -264
  76. package/dist/node_modules/valibot/dist/index.js +450 -235
  77. package/dist/package.json.js +1 -1
  78. package/dist/services/templateLibraryApi.js +5 -4
  79. package/dist/services/unsubscribeApi.js +6 -6
  80. package/dist/src/@types/config/defaults.d.ts +5 -1
  81. package/dist/src/@types/config/index.d.ts +3 -3
  82. package/dist/src/@types/config/schemas.d.ts +217 -0
  83. package/dist/src/@types/config/types.d.ts +9 -1
  84. package/dist/src/components/Guido.vue.d.ts +1 -1
  85. package/dist/src/components/organisms/AutoSaveController.vue.d.ts +2 -0
  86. package/dist/src/components/organisms/header/AiStatusPill.vue.d.ts +2 -0
  87. package/dist/src/components/organisms/header/AutoSaveToggle.vue.d.ts +2 -0
  88. package/dist/src/components/organisms/header/EditorActions.vue.d.ts +1 -1
  89. package/dist/src/components/organisms/header/HeaderWrapper.vue.d.ts +1 -1
  90. package/dist/src/components/organisms/header/RightSlot.vue.d.ts +1 -1
  91. package/dist/src/components/wrappers/WpModal.vue.d.ts +1 -1
  92. package/dist/src/composables/useAutoSave.d.ts +3 -0
  93. package/dist/src/composables/useConfig.d.ts +58 -0
  94. package/dist/src/composables/useCortexBlueprintBridge.d.ts +28 -0
  95. package/dist/src/composables/useEmailTemplateApplier.d.ts +21 -0
  96. package/dist/src/composables/useFullStoryBridge.d.ts +11 -0
  97. package/dist/src/composables/useGuidoStateBridge.d.ts +22 -0
  98. package/dist/src/composables/useRecommendation.d.ts +10 -1
  99. package/dist/src/composables/useRecommendation.test.d.ts +1 -0
  100. package/dist/src/composables/useRibbonOffset.d.ts +4 -0
  101. package/dist/src/composables/useSave.d.ts +1 -1
  102. package/dist/src/composables/validators/useCouponBlockValidator.d.ts +3 -0
  103. package/dist/src/config/migrator/index.d.ts +2 -1
  104. package/dist/src/config/migrator/recommendation/compositionMapper.d.ts +2 -0
  105. package/dist/src/config/migrator/recommendation/compositionMapper.test.d.ts +1 -0
  106. package/dist/src/config/migrator/recommendation/extractors.d.ts +7 -0
  107. package/dist/src/config/migrator/recommendation/extractors.test.d.ts +1 -0
  108. package/dist/src/config/migrator/recommendation/htmlBuilder.d.ts +11 -0
  109. package/dist/src/config/migrator/recommendation/parseLegacyConfig.d.ts +15 -0
  110. package/dist/src/config/migrator/recommendation/parseLegacyConfig.test.d.ts +1 -0
  111. package/dist/src/config/migrator/recommendation/settingsMapper.d.ts +7 -0
  112. package/dist/src/config/migrator/recommendation/settingsMapper.test.d.ts +1 -0
  113. package/dist/src/config/migrator/recommendation/themeMapper.d.ts +5 -0
  114. package/dist/src/config/migrator/recommendation/themeMapper.test.d.ts +1 -0
  115. package/dist/src/config/migrator/recommendation/types.d.ts +205 -0
  116. package/dist/src/config/migrator/recommendationMigrator.d.ts +13 -1
  117. package/dist/src/config/migrator/recommendationMigrator.test.d.ts +1 -0
  118. package/dist/src/enums/extensions/recommendationBlock.d.ts +5 -1
  119. package/dist/src/enums/onboarding.d.ts +6 -0
  120. package/dist/src/enums/unsubscribe.d.ts +13 -3
  121. package/dist/src/extensions/Blocks/RadioButton/template.d.ts +1 -1
  122. package/dist/src/extensions/Blocks/Recommendation/constants/controlIds.d.ts +1 -0
  123. package/dist/src/extensions/Blocks/Recommendation/controls/customAttribute/index.d.ts +3 -0
  124. package/dist/src/extensions/Blocks/Recommendation/controls/customAttribute/textTrim.d.ts +35 -0
  125. package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.test.d.ts +1 -0
  126. package/dist/src/extensions/Blocks/Recommendation/controls/name/textTrim.d.ts +3 -20
  127. package/dist/src/extensions/Blocks/Recommendation/controls/shared/textTrimCssRules.d.ts +29 -0
  128. package/dist/src/extensions/Blocks/Recommendation/services/configService.d.ts +21 -3
  129. package/dist/src/extensions/Blocks/Recommendation/services/configService.test.d.ts +1 -0
  130. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +41 -1
  131. package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +1 -1
  132. package/dist/src/extensions/Blocks/Recommendation/utils/legacyStrategyMap.d.ts +21 -0
  133. package/dist/src/extensions/Blocks/Recommendation/utils/legacyStrategyMap.test.d.ts +1 -0
  134. package/dist/src/extensions/Blocks/Recommendation/utils/preserveTextStyles.d.ts +0 -3
  135. package/dist/src/extensions/Blocks/Recommendation/validation/requiredFields.d.ts +21 -0
  136. package/dist/src/library.d.ts +1 -1
  137. package/dist/src/stores/ai-status.d.ts +41 -0
  138. package/dist/src/stores/autosave.d.ts +12 -0
  139. package/dist/src/stores/config.d.ts +522 -0
  140. package/dist/src/stores/editor.d.ts +23 -0
  141. package/dist/src/stores/guido-email-editor.d.ts +41 -0
  142. package/dist/src/stores/onboarding.d.ts +4 -0
  143. package/dist/src/utils/htmlEscape.d.ts +5 -0
  144. package/dist/src/utils/htmlEscape.test.d.ts +1 -0
  145. package/dist/src/utils/timeUtil.d.ts +8 -0
  146. package/dist/static/styles/components/button.css.js +16 -9
  147. package/dist/static/styles/components/loader.css.js +4 -0
  148. package/dist/static/styles/components/narrow-panel.css.js +52 -0
  149. package/dist/stores/ai-status.js +25 -0
  150. package/dist/stores/autosave.js +17 -0
  151. package/dist/stores/editor.js +3 -1
  152. package/dist/stores/guido-email-editor.js +20 -0
  153. package/dist/stores/onboarding.js +4 -0
  154. package/dist/utils/htmlEscape.js +13 -0
  155. package/dist/utils/pairProductVariables.js +89 -88
  156. package/dist/utils/templatePreparation.js +72 -32
  157. package/dist/utils/timeUtil.js +19 -0
  158. package/package.json +7 -3
  159. package/dist/enums/displayConditions.js +0 -80
  160. package/dist/extensions/Blocks/Recommendation/templates/grid/migration.js +0 -251
  161. package/dist/src/enums/displayConditions.d.ts +0 -2
@@ -24,7 +24,7 @@ export interface CurrencyConfig {
24
24
  /** Number of decimal places (-1 for no formatting) */
25
25
  decimalCount: number;
26
26
  /** Character used for decimal separation */
27
- decimalSeparator: '.' | ',';
27
+ decimalSeparator: '.' | ',' | ' ';
28
28
  /** Character used for thousands separation */
29
29
  thousandSeparator: '.' | ',' | ' ' | '';
30
30
  }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Maps legacy algorithm strategy keys (used by templates authored against the
3
+ * old recommendation system) to the new keys used by `RecommendationFeedSourceMaps`.
4
+ *
5
+ * Renames are matched by feed-source id:
6
+ * - `viewedTogether` → `similarViewed` (id 11, path `viewed-together`)
7
+ * - `purchasedTogether` → `similarBought` (id 12, path `purchased-together`)
8
+ * - `trending` → `trendingProducts` (id 40, path `trending`)
9
+ * - `mostValuable` → `mostValuableOfPartner` (id 46, path `most-valuable`)
10
+ * - `topSellers` → `mostPurchased` (id 62, path `top-sellers`)
11
+ *
12
+ * Used at two boundaries:
13
+ * 1. The migrator (`settingsMapper`), so freshly migrated node configs carry
14
+ * the new key.
15
+ * 2. The algorithm dropdown control, so already-saved blocks that still carry
16
+ * a legacy key resolve to a matching dropdown option.
17
+ *
18
+ * Unknown values pass through untouched so a future-added algorithm doesn't
19
+ * silently default.
20
+ */
21
+ export declare function mapLegacyStrategy(legacy: string | undefined): string | undefined;
@@ -1,6 +1,3 @@
1
- /**
2
- * Utility for preserving text styling when updating innerHTML
3
- */
4
1
  import type { ImmutableHtmlNode } from '@stripoinc/ui-editor-extensions';
5
2
  /**
6
3
  * Preserves existing style tags when updating text content
@@ -0,0 +1,21 @@
1
+ import type { PerBlockConfigs } from '../store/recommendation';
2
+ import type { Currency, Languages } from '@@/Types/recommendation';
3
+ /**
4
+ * Structural slice of the recommendation extension store that descriptors may read.
5
+ * Add new fields here when a future descriptor needs them.
6
+ */
7
+ export interface ExtensionStoreSlice {
8
+ languages: Languages;
9
+ currencyList: Currency[];
10
+ }
11
+ interface RequiredField {
12
+ key: string;
13
+ getValue: (config: PerBlockConfigs) => string;
14
+ getAvailableOptions?: (store: ExtensionStoreSlice) => string[];
15
+ condition?: (config: PerBlockConfigs) => boolean;
16
+ }
17
+ export declare const REQUIRED_RECOMMENDATION_FIELDS: RequiredField[];
18
+ export declare const RecommendationRequiredFieldsKey = "newsletter.recommendation-fill-required-fields";
19
+ export declare function getInvalidFields(config: PerBlockConfigs, store: ExtensionStoreSlice): string[];
20
+ export declare function isConfigValid(config: PerBlockConfigs, store: ExtensionStoreSlice): boolean;
21
+ export {};
@@ -1,5 +1,5 @@
1
1
  export { default as Guido } from './components/Guido.vue';
2
- export type { GuidoConfig, GuidoConfigInput, IdentityConfig, PartnerConfig, TemplateConfig, EditorConfig, UIConfig, FeaturesConfig, BlocksConfig, CompilerConfig, DynamicContent, EmailHeader, DefaultBlockType, CustomBlockType, ValidationResult, ValidationError, } from './@types/config';
2
+ export type { GuidoConfig, GuidoConfigInput, IdentityConfig, PartnerConfig, TemplateConfig, TemplateMigrationConfig, LegacyRecommendationConfig, EditorConfig, UIConfig, FeaturesConfig, BlocksConfig, CompilerConfig, DynamicContent, EmailHeader, DefaultBlockType, CustomBlockType, ValidationResult, ValidationError, } from './@types/config';
3
3
  export { validateConfig, parseConfig, parseConfigSafe, isValidConfig, getValidationErrors, MessageType, ProductType, } from './@types/config';
4
4
  export type { StripoEventType } from './@types/events';
5
5
  export type { PositionData, DynamicContentEvent, MergeTagClickEvent, MergeTag, BaseDynamicContent, TooltipOptions, TextValueObject, L10n, } from './@types/generic';
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Lightweight read-only store the cortex-fe blueprint bridge writes into and
3
+ * the editor toolbar reads from to show the "AI is generating…" pill while a
4
+ * tool call is in flight. State + getters only — per architecture invariant
5
+ * the bridge mutates state directly via `$patch`, no actions live here.
6
+ */
7
+ export declare const useAiStatusStore: import("pinia").StoreDefinition<"guidoAiStatus", {
8
+ /** A tool is currently running on the agent side. */
9
+ isWorking: boolean;
10
+ /** Tool name the agent is currently invoking, e.g. `tool__qmechanics__compile_template`. */
11
+ currentTool: string;
12
+ /** Last user-facing error message from the stream, cleared on the next tool_call. */
13
+ lastError: string;
14
+ }, {
15
+ /** Show the toolbar pill iff a tool is running AND no error overrides it. */
16
+ showStatusPill: (state: {
17
+ isWorking: boolean;
18
+ currentTool: string;
19
+ lastError: string;
20
+ } & import("pinia").PiniaCustomStateProperties<{
21
+ /** A tool is currently running on the agent side. */
22
+ isWorking: boolean;
23
+ /** Tool name the agent is currently invoking, e.g. `tool__qmechanics__compile_template`. */
24
+ currentTool: string;
25
+ /** Last user-facing error message from the stream, cleared on the next tool_call. */
26
+ lastError: string;
27
+ }>) => boolean;
28
+ /** Display label for the pill — short, suitable for inline UI. */
29
+ statusLabel: (state: {
30
+ isWorking: boolean;
31
+ currentTool: string;
32
+ lastError: string;
33
+ } & import("pinia").PiniaCustomStateProperties<{
34
+ /** A tool is currently running on the agent side. */
35
+ isWorking: boolean;
36
+ /** Tool name the agent is currently invoking, e.g. `tool__qmechanics__compile_template`. */
37
+ currentTool: string;
38
+ /** Last user-facing error message from the stream, cleared on the next tool_call. */
39
+ lastError: string;
40
+ }>) => string;
41
+ }, {}>;
@@ -0,0 +1,12 @@
1
+ export declare const AUTOSAVE_STATUS: {
2
+ readonly IDLE: "idle";
3
+ readonly SAVING: "saving";
4
+ readonly SAVED: "saved";
5
+ readonly ERROR: "error";
6
+ };
7
+ export type AutosaveStatus = typeof AUTOSAVE_STATUS[keyof typeof AUTOSAVE_STATUS];
8
+ export declare const useAutosaveStore: import("pinia").StoreDefinition<"guidoAutosave", {
9
+ isOn: boolean;
10
+ lastSavedAt: Date | null;
11
+ status: AutosaveStatus;
12
+ }, {}, {}>;