@useinsider/guido 2.1.0-beta.bc229b1 → 2.1.0-beta.bcfc012

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 (27) hide show
  1. package/dist/components/organisms/header/EditorActions.vue.js +12 -10
  2. package/dist/components/organisms/header/EditorActions.vue2.js +41 -31
  3. package/dist/components/organisms/header/MigrationConfirmModal.vue.js +21 -0
  4. package/dist/components/organisms/header/MigrationConfirmModal.vue2.js +38 -0
  5. package/dist/config/i18n/en/labels.json.js +8 -3
  6. package/dist/config/migrator/itemsBlockMigrator.js +136 -134
  7. package/dist/config/migrator/recommendationMigrator.js +42 -40
  8. package/dist/extensions/Blocks/Items/block.js +45 -25
  9. package/dist/extensions/Blocks/Items/iconsRegistry.js +40 -5
  10. package/dist/extensions/Blocks/Items/items.css.js +48 -0
  11. package/dist/extensions/Blocks/Recommendation/block.js +49 -29
  12. package/dist/extensions/Blocks/Recommendation/iconsRegistry.js +37 -2
  13. package/dist/extensions/Blocks/Recommendation/recommendation.css.js +48 -0
  14. package/dist/extensions/Blocks/common-control.js +12 -4
  15. package/dist/guido.css +1 -1
  16. package/dist/src/components/Guido.vue.d.ts +1 -1
  17. package/dist/src/components/organisms/header/EditorActions.vue.d.ts +1 -1
  18. package/dist/src/components/organisms/header/HeaderWrapper.vue.d.ts +1 -1
  19. package/dist/src/components/organisms/header/MigrationConfirmModal.vue.d.ts +5 -0
  20. package/dist/src/components/organisms/header/RightSlot.vue.d.ts +1 -1
  21. package/dist/src/components/wrappers/WpModal.vue.d.ts +2 -2
  22. package/dist/src/extensions/Blocks/Items/block.d.ts +1 -0
  23. package/dist/src/extensions/Blocks/Recommendation/block.d.ts +1 -0
  24. package/dist/src/extensions/Blocks/common-control.d.ts +5 -0
  25. package/dist/src/stores/template.d.ts +3 -0
  26. package/dist/stores/template.js +9 -0
  27. package/package.json +1 -1
@@ -22,6 +22,54 @@ const n = `/* Utils */
22
22
  ue-orderable.orderable-disabled .droppable-icon {
23
23
  display: none;
24
24
  }
25
+
26
+ /* ─── Migration Info Box ─────────────────────────────────────────────── */
27
+ /* Shown in the settings panel title when a block was migrated from legacy */
28
+
29
+ /* Layout variables for positioning the absolutely-placed info box */
30
+ :host {
31
+ --rec-migration-padding: 16px;
32
+ --rec-migration-title-height: 61px;
33
+ --rec-migration-box-height: 98px;
34
+ }
35
+
36
+ /* Push tabs down when info box is present inside the control panel header */
37
+ .control-panel-header:has(.recommendation-migration-info) {
38
+ position: relative;
39
+ margin-bottom: calc(2 * var(--rec-migration-padding) + var(--rec-migration-box-height));
40
+ }
41
+
42
+ /* Info box container */
43
+ .recommendation-migration-info {
44
+ display: flex;
45
+ align-items: flex-start;
46
+ gap: 8px;
47
+ padding: 12px;
48
+ background: var(--guido-color-background-onpage-message-info);
49
+ border: 1px solid var(--guido-color-border-onpage-message-info);
50
+ border-radius: 4px;
51
+ box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.07);
52
+ position: absolute;
53
+ left: var(--rec-migration-padding);
54
+ right: var(--rec-migration-padding);
55
+ top: calc(var(--rec-migration-padding) + var(--rec-migration-title-height));
56
+ }
57
+
58
+ /* Icon — 18x19 icon inside a 24x24 bounding box (matches Figma) */
59
+ .recommendation-migration-info__icon {
60
+ flex-shrink: 0;
61
+ width: 24px;
62
+ height: 24px;
63
+ }
64
+
65
+ /* Text content */
66
+ .recommendation-migration-info__text {
67
+ margin: 4px 0;
68
+ white-space: normal;
69
+ font-size: 13px;
70
+ font-weight: 400;
71
+ line-height: 16px;
72
+ }
25
73
  `;
26
74
  export {
27
75
  n as default
@@ -1,5 +1,5 @@
1
- var I = Object.defineProperty;
2
- var O = (T, r, e) => r in T ? I(T, r, { enumerable: !0, configurable: !0, writable: !0, value: e }) : T[r] = e;
1
+ var l = Object.defineProperty;
2
+ var O = (T, r, e) => r in T ? l(T, r, { enumerable: !0, configurable: !0, writable: !0, value: e }) : T[r] = e;
3
3
  var u = (T, r, e) => O(T, typeof r != "symbol" ? r + "" : r, e);
4
4
  import { Control as c, UIElementType as n, UEAttr as $ } from "../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
5
5
  class _ extends c {
@@ -129,6 +129,14 @@ class _ extends c {
129
129
  </${n.BUTTON}>
130
130
  `;
131
131
  }
132
+ _GuIcon({ src: e, className: t = "" }) {
133
+ return `
134
+ <${n.ICON}
135
+ ${$.ICON.src}="${e}"
136
+ ${t ? `class="${t}"` : ""}>
137
+ </${n.ICON}>
138
+ `;
139
+ }
132
140
  /**
133
141
  *
134
142
  * @param param0
@@ -167,9 +175,9 @@ class _ extends c {
167
175
  _GuOrderable(e, t) {
168
176
  let E = "";
169
177
  t.forEach((a) => {
170
- const l = $.ORDERABLE_ITEM && "name" in $.ORDERABLE_ITEM ? $.ORDERABLE_ITEM.name : "name";
178
+ const I = $.ORDERABLE_ITEM && "name" in $.ORDERABLE_ITEM ? $.ORDERABLE_ITEM.name : "name";
171
179
  E += `
172
- <${n.ORDERABLE_ITEM} ${l}="${a.key}">
180
+ <${n.ORDERABLE_ITEM} ${I}="${a.key}">
173
181
  ${a.content}
174
182
  </${n.ORDERABLE_ITEM}>
175
183
  `;
package/dist/guido.css CHANGED
@@ -1 +1 @@
1
- .gap-16[data-v-6562e38c],.gap-16[data-v-1ccb6d4a]{gap:16px}[data-v-cd76c125] .in-button-v2__wrapper{line-height:0}[data-v-22226124] .in-segments-wrapper__button_selected,[data-v-22226124] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb;color:#0010ac;border-color:#0010ac}[data-v-913a3417] .in-progress-wrapper__progress p span:last-child{display:none!important}.view-options-wrapper[data-v-195ab6d4]{position:relative;display:inline-block}.new-tag[data-v-195ab6d4]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-195ab6d4] .guido__view-option-selection-desktop svg,[data-v-195ab6d4] .guido__view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-195ab6d4] .in-segments-wrapper__button_selected,[data-v-195ab6d4] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-195ab6d4] .in-tooltip-wrapper__icon{cursor:pointer}.editor-toolbar[data-v-173c3a40]{gap:4px}.version-history-item[data-v-ee4b9c3f]{flex-basis:200px}.version-history[data-v-64c52560]{gap:8px}.version-history__toolbar[data-v-64c52560]{gap:4px}.view-options-wrapper[data-v-d405ca59]{position:relative;display:inline-block}.new-tag[data-v-d405ca59]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-d405ca59] .guido__verion-history-view-option-selection-desktop svg,[data-v-d405ca59] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-d405ca59] .in-segments-wrapper__button_selected,[data-v-d405ca59] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-d405ca59] .in-tooltip-wrapper__icon{cursor:pointer}.editor-actions[data-v-17dd4d8b]{gap:4px}.header-wrapper[data-v-5c02dcc7]{min-width:1000px}.guido-loading__wrapper[data-v-07c4b2d8]{height:100%;top:75px!important;bottom:0!important}.guido-editor__wrapper[data-v-16abb398]{position:relative;width:100%;height:calc(100vh - 128px)}.guido-editor__container[data-v-16abb398]{width:100%;height:calc(100vh - 128px)}.guido-editor__no-header[data-v-16abb398]{height:calc(100vh - 75px)}[data-v-293f1c47] .in-breadcrumb-wrapper__links{cursor:pointer}.templates-wrapper[data-v-a86fc486]{gap:16px;grid-template-columns:repeat(3,1fr)}.templates-wrapper .template-wrapper[data-v-a86fc486]{cursor:pointer}.templates-wrapper .template-wrapper .template-container[data-v-a86fc486]{height:274px;padding:2px;transition:none}.templates-wrapper .template-wrapper .template-container.selected[data-v-a86fc486]{padding:1px}.templates-wrapper .template-wrapper .template-container .thumbnail[data-v-a86fc486]{object-fit:cover;transform:scale(1)}[data-v-43c617a7] .guido__verion-history-view-option-selection-desktop svg,[data-v-43c617a7] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-43c617a7] .in-segments-wrapper__button_selected,[data-v-43c617a7] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}.error-list[data-v-c3fd5d4b]{gap:16px}.desktop-browser-header[data-v-d86c5af5]{height:79px;min-height:79px}.desktop-browser-header__left[data-v-d86c5af5]{-webkit-user-drag:none;height:79px;width:378px}.desktop-browser-header__center[data-v-d86c5af5]{height:79px;background-repeat:repeat-x;background-size:auto 100%;background-position:left top}.desktop-browser-header__right[data-v-d86c5af5]{-webkit-user-drag:none;height:79px;width:112px}.desktop-preview[data-v-988f8da6]{min-width:602px;height:70vh;min-height:583px;border-radius:10px}.desktop-preview iframe[data-v-988f8da6]{min-height:504px}.iframe-wrapper[data-v-e0424e99]{width:258px}.iframe-scaled[data-v-e0424e99]{width:320px;height:124.0310077519%;transform:scale(.80625);transform-origin:top left}.cropped-text[data-v-eb3d05d7]{width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mobile-preview-wrapper__phone[data-v-3f472f96]{width:282px}.mobile-preview-wrapper__phone img[data-v-3f472f96]{object-fit:cover;border-radius:44px}.mobile-preview-wrapper__content[data-v-3f472f96]{width:258px;height:450px;left:12px}[data-v-d3c52b44] .vueperslides__bullets,[data-v-dd1a237a] .vueperslides__bullets{pointer-events:none!important}[data-v-dd1a237a] .vueperslides__parallax-wrapper{height:110px!important}[data-v-a408dcea] .vueperslides__bullets{pointer-events:none!important}[data-v-a408dcea] .vueperslides__parallax-wrapper{height:110px!important}
1
+ .gap-16[data-v-6562e38c],.gap-16[data-v-1ccb6d4a]{gap:16px}[data-v-cd76c125] .in-button-v2__wrapper{line-height:0}[data-v-22226124] .in-segments-wrapper__button_selected,[data-v-22226124] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb;color:#0010ac;border-color:#0010ac}[data-v-913a3417] .in-progress-wrapper__progress p span:last-child{display:none!important}.view-options-wrapper[data-v-195ab6d4]{position:relative;display:inline-block}.new-tag[data-v-195ab6d4]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-195ab6d4] .guido__view-option-selection-desktop svg,[data-v-195ab6d4] .guido__view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-195ab6d4] .in-segments-wrapper__button_selected,[data-v-195ab6d4] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-195ab6d4] .in-tooltip-wrapper__icon{cursor:pointer}.editor-toolbar[data-v-173c3a40]{gap:4px}.version-history-item[data-v-ee4b9c3f]{flex-basis:200px}.version-history[data-v-64c52560]{gap:8px}.version-history__toolbar[data-v-64c52560]{gap:4px}.view-options-wrapper[data-v-d405ca59]{position:relative;display:inline-block}.new-tag[data-v-d405ca59]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-d405ca59] .guido__verion-history-view-option-selection-desktop svg,[data-v-d405ca59] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-d405ca59] .in-segments-wrapper__button_selected,[data-v-d405ca59] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-d405ca59] .in-tooltip-wrapper__icon{cursor:pointer}.editor-actions[data-v-92b1be6c]{gap:4px}.header-wrapper[data-v-5c02dcc7]{min-width:1000px}.guido-loading__wrapper[data-v-07c4b2d8]{height:100%;top:75px!important;bottom:0!important}.guido-editor__wrapper[data-v-16abb398]{position:relative;width:100%;height:calc(100vh - 128px)}.guido-editor__container[data-v-16abb398]{width:100%;height:calc(100vh - 128px)}.guido-editor__no-header[data-v-16abb398]{height:calc(100vh - 75px)}[data-v-293f1c47] .in-breadcrumb-wrapper__links{cursor:pointer}.templates-wrapper[data-v-a86fc486]{gap:16px;grid-template-columns:repeat(3,1fr)}.templates-wrapper .template-wrapper[data-v-a86fc486]{cursor:pointer}.templates-wrapper .template-wrapper .template-container[data-v-a86fc486]{height:274px;padding:2px;transition:none}.templates-wrapper .template-wrapper .template-container.selected[data-v-a86fc486]{padding:1px}.templates-wrapper .template-wrapper .template-container .thumbnail[data-v-a86fc486]{object-fit:cover;transform:scale(1)}[data-v-43c617a7] .guido__verion-history-view-option-selection-desktop svg,[data-v-43c617a7] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-43c617a7] .in-segments-wrapper__button_selected,[data-v-43c617a7] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}.error-list[data-v-c3fd5d4b]{gap:16px}.desktop-browser-header[data-v-d86c5af5]{height:79px;min-height:79px}.desktop-browser-header__left[data-v-d86c5af5]{-webkit-user-drag:none;height:79px;width:378px}.desktop-browser-header__center[data-v-d86c5af5]{height:79px;background-repeat:repeat-x;background-size:auto 100%;background-position:left top}.desktop-browser-header__right[data-v-d86c5af5]{-webkit-user-drag:none;height:79px;width:112px}.desktop-preview[data-v-988f8da6]{min-width:602px;height:70vh;min-height:583px;border-radius:10px}.desktop-preview iframe[data-v-988f8da6]{min-height:504px}.iframe-wrapper[data-v-e0424e99]{width:258px}.iframe-scaled[data-v-e0424e99]{width:320px;height:124.0310077519%;transform:scale(.80625);transform-origin:top left}.cropped-text[data-v-eb3d05d7]{width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mobile-preview-wrapper__phone[data-v-3f472f96]{width:282px}.mobile-preview-wrapper__phone img[data-v-3f472f96]{object-fit:cover;border-radius:44px}.mobile-preview-wrapper__content[data-v-3f472f96]{width:258px;height:450px;left:12px}[data-v-d3c52b44] .vueperslides__bullets,[data-v-dd1a237a] .vueperslides__bullets{pointer-events:none!important}[data-v-dd1a237a] .vueperslides__parallax-wrapper{height:110px!important}[data-v-a408dcea] .vueperslides__bullets{pointer-events:none!important}[data-v-a408dcea] .vueperslides__parallax-wrapper{height:110px!important}
@@ -11,7 +11,7 @@ declare const _default: import("vue").DefineComponent<__VLS_TypePropsToOption<__
11
11
  close: () => void;
12
12
  };
13
13
  hasChanges: import("vue").ComputedRef<boolean>;
14
- saveSilent: () => Promise<SavedTemplateDetails | undefined> | undefined;
14
+ saveSilent: () => void | undefined;
15
15
  }, {}, {}, {}, import("vue/types/v3-component-options.js").ComponentOptionsMixin, import("vue/types/v3-component-options.js").ComponentOptionsMixin, {
16
16
  "dynamic-content:open": (detail: {
17
17
  text: string;
@@ -1,4 +1,4 @@
1
1
  declare const _default: import("vue").DefineComponent<{}, {
2
- handleSave: (isSilent: boolean) => Promise<import("../../../@types/stripo").SavedTemplateDetails | undefined>;
2
+ handleSave: (isSilent: boolean) => void;
3
3
  }, {}, {}, {}, import("vue/types/v3-component-options.js").ComponentOptionsMixin, import("vue/types/v3-component-options.js").ComponentOptionsMixin, {}, string, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
4
4
  export default _default;
@@ -1,4 +1,4 @@
1
1
  declare const _default: import("vue").DefineComponent<{}, {
2
- handleSave: (isSilent: boolean) => Promise<import("../../../@types/stripo.js").SavedTemplateDetails | undefined> | undefined;
2
+ handleSave: (isSilent: boolean) => void | undefined;
3
3
  }, {}, {}, {}, import("vue/types/v3-component-options.js").ComponentOptionsMixin, import("vue/types/v3-component-options.js").ComponentOptionsMixin, {}, string, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
4
4
  export default _default;
@@ -0,0 +1,5 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue/types/v3-component-options.js").ComponentOptionsMixin, import("vue/types/v3-component-options.js").ComponentOptionsMixin, {
2
+ close: () => void;
3
+ confirm: () => void;
4
+ }, string, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
5
+ export default _default;
@@ -1,4 +1,4 @@
1
1
  declare const _default: import("vue").DefineComponent<{}, {
2
- handleSave: (isSilent: boolean) => Promise<import("../../../@types/stripo.js").SavedTemplateDetails | undefined> | undefined;
2
+ handleSave: (isSilent: boolean) => void | undefined;
3
3
  }, {}, {}, {}, import("vue/types/v3-component-options.js").ComponentOptionsMixin, import("vue/types/v3-component-options.js").ComponentOptionsMixin, {}, string, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
4
4
  export default _default;
@@ -3,7 +3,7 @@ type __VLS_Props = {
3
3
  id: string;
4
4
  title: string;
5
5
  description?: string;
6
- size?: 'small' | 'medium' | 'large';
6
+ size?: 'X-small' | 'small' | 'medium' | 'large';
7
7
  footerButtonOptions?: FooterButtonGroup;
8
8
  closeButtonStatus?: boolean;
9
9
  closeOnOutsideClick?: boolean;
@@ -33,7 +33,7 @@ declare const __VLS_component: import("vue").DefineComponent<__VLS_WithDefaults<
33
33
  footerStatus: boolean;
34
34
  }>>>, {
35
35
  description: string;
36
- size: "small" | "medium" | "large";
36
+ size: "X-small" | "small" | "medium" | "large";
37
37
  closeOnOutsideClick: boolean;
38
38
  footerButtonOptions: FooterButtonGroup;
39
39
  closeButtonStatus: boolean;
@@ -20,6 +20,7 @@ export declare class ItemsBlock extends Block {
20
20
  getBlockCompositionType(): BlockCompositionType;
21
21
  getName(): string;
22
22
  getDescription(): string;
23
+ getSettingsPanelTitleHtml(): string;
23
24
  getTemplate(): string;
24
25
  allowInnerBlocksDND(): boolean;
25
26
  onCreated(node: ImmutableHtmlNode): void;
@@ -20,6 +20,7 @@ export declare class RecommendationBlock extends Block {
20
20
  getBlockCompositionType(): BlockCompositionType;
21
21
  getName(): string;
22
22
  getDescription(): string;
23
+ getSettingsPanelTitleHtml(): string;
23
24
  /**
24
25
  * Returns the template HTML for a new recommendation block.
25
26
  * Generates a unique recommendation ID and embeds the instance class
@@ -11,6 +11,10 @@ interface LabelProps {
11
11
  name?: string;
12
12
  position?: 'top' | 'left';
13
13
  }
14
+ interface IconProps {
15
+ src: string;
16
+ className?: string;
17
+ }
14
18
  interface IconButtonProps {
15
19
  name: string;
16
20
  icon: string;
@@ -89,6 +93,7 @@ export declare abstract class CommonControl extends Control {
89
93
  }): string;
90
94
  _GuRadioButton({ name, buttons, id }: RadioButtonProps): string;
91
95
  _GuButton({ name, label, id }: ButtonProps): string;
96
+ _GuIcon({ src, className }: IconProps): string;
92
97
  /**
93
98
  *
94
99
  * @param param0
@@ -0,0 +1,3 @@
1
+ export declare const useTemplateStore: import("pinia").StoreDefinition<"guidoTemplate", {
2
+ migrations: Record<string, number>;
3
+ }, {}, {}>;
@@ -0,0 +1,9 @@
1
+ import { defineStore as e } from "pinia";
2
+ const o = e("guidoTemplate", {
3
+ state: () => ({
4
+ migrations: {}
5
+ })
6
+ });
7
+ export {
8
+ o as useTemplateStore
9
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@useinsider/guido",
3
- "version": "2.1.0-beta.bc229b1",
3
+ "version": "2.1.0-beta.bcfc012",
4
4
  "description": "Guido is a Vue + TypeScript wrapper for Email Plugin. Easily embed the email editor in your Vue applications.",
5
5
  "main": "./dist/guido.umd.cjs",
6
6
  "module": "./dist/library.js",