@useinsider/guido 3.11.0-beta.f4ab671 → 3.12.0-beta.00cbb4c

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.
package/README.md CHANGED
@@ -113,6 +113,14 @@ const config: GuidoConfigInput = {
113
113
  html?: string,
114
114
  css?: string,
115
115
  preselectedDynamicContent?: DynamicContent[],
116
+ // Partner-keyed catalog of the account's dynamic-content attributes, e.g.
117
+ // { [partnerName]: [{ text, value, children }] } (architect is multi-partner).
118
+ // Guido flattens the active (first) partner's leaf attributes and uses them to
119
+ // repair label-form tokens (`{{ Phone Number }}` -> `{{phone_number}}`) in
120
+ // dropped saved modules; an unresolvable token raises a single warning toaster
121
+ // (translation key `dynamic-content.unresolved-attributes-on-drop`, registered
122
+ // host-side). Omit it and the repair is a silent no-op. Default: {}.
123
+ dynamicContentList?: DynamicContentList,
116
124
  selectedUnsubscribePages?: number[],
117
125
  forceRecreate?: boolean, // Default: false - Force recreate template in Stripo storage
118
126
  migration?: {
@@ -520,6 +528,8 @@ import type {
520
528
  BlocksConfig,
521
529
  CompilerConfig,
522
530
  DynamicContent,
531
+ DynamicContentList,
532
+ DynamicContentNode,
523
533
  DefaultBlockType,
524
534
  CustomBlockType,
525
535
  } from '@useinsider/guido';
@@ -584,6 +594,25 @@ const closeModal = () => {
584
594
  </script>
585
595
  ```
586
596
 
597
+ ### Saved-module token repair
598
+
599
+ Legacy **saved modules** may serialize their merge-tag chips by display label
600
+ (`{{ Phone Number }}`) instead of the canonical token (`{{phone_number}}`), which the
601
+ backend can't resolve. When such a module is dropped or copied into the editor, Guido
602
+ repairs these automatically using the `template.dynamicContentList` catalog (see
603
+ [Configuration](#configuration)):
604
+
605
+ - **Label match** → canonical value: `{{ Phone Number }}` → `{{phone_number}}` (any author `| default:` / format tail is preserved).
606
+ - Already-canonical values, Liquid nested tokens (`coupon.code`), recommendation-block variables (`123_0_price`), allowed system tokens, and `data-*` product tags are left untouched.
607
+ - An **unresolvable** token is left in place and raises a single **warning toaster** (translation key `dynamic-content.unresolved-attributes-on-drop`; register the copy host-side).
608
+
609
+ Pass `template.dynamicContentList` as a **partner-keyed** tree
610
+ (`{ [partnerName]: DynamicContentNode[] }`, where a node is `{ text, value, children? }`).
611
+ Guido flattens the **active (first) partner's** leaf attributes. Products that manage
612
+ multiple partners (e.g. architect) should key by partner and place the active partner
613
+ first. Omit the prop and the repair is a safe no-op — nothing is rewritten and no
614
+ toaster fires (useful before the host has wired the catalog).
615
+
587
616
  ---
588
617
 
589
618
  ## Development
@@ -147,10 +147,9 @@ const d = {
147
147
  ),
148
148
  /**
149
149
  * Partner-keyed set of dynamic-content items the account offers, e.g.
150
- * `{ [partnerName]: [{ text, value, children }] }`. Guido flattens it
151
- * (union across partners, leaf attributes only) into the label→token map
152
- * that repairs label-form placeholders (`{{ Phone Number }}`) in dropped
153
- * saved modules.
150
+ * `{ [partnerName]: [{ text, value, children }] }`. Guido flattens the active
151
+ * (first) partner's leaf attributes into the label→token map that repairs
152
+ * label-form placeholders (`{{ Phone Number }}`) in dropped saved modules.
154
153
  */
155
154
  dynamicContentList: e(P, {}),
156
155
  /** Valid custom field attribute names from the partner's categorized fields */
@@ -10,9 +10,9 @@ var n = function() {
10
10
  r,
11
11
  !1,
12
12
  null,
13
- "195ab6d4"
13
+ "10599c37"
14
14
  );
15
- const c = a.exports;
15
+ const d = a.exports;
16
16
  export {
17
- c as default
17
+ d as default
18
18
  };
@@ -10,7 +10,7 @@ var n = function() {
10
10
  r,
11
11
  !1,
12
12
  null,
13
- "d405ca59"
13
+ "38eb0a73"
14
14
  );
15
15
  const d = a.exports;
16
16
  export {
@@ -1,20 +1,21 @@
1
1
  import d from "./AMPOnboarding.vue2.js";
2
+ /* empty css */
2
3
  import g from "../../../_virtual/_plugin-vue2_normalizer.js";
3
- var l = function() {
4
- var t, r, e, i, a, s;
5
- var n = this, p = n._self._c, o = n._self._setupProxy;
6
- return o.isVisible ? p(o.InOnboard, { key: "guido__amp-onboard", staticClass: "w-21-s p-a z-11", class: (t = o.onboardingStore.getAmpCurrentCard) == null ? void 0 : t.classes, attrs: { id: "guido__amp-onboard", "is-multiple-page": "", visible: "", "image-source": "", title: "", "bottom-position": (r = o.onboardingStore.getAmpCurrentCard) == null ? void 0 : r.bottom, "left-position": (e = o.onboardingStore.getAmpCurrentCard) == null ? void 0 : e.left, "pages-config": o.onboardingStore.onboardings.ampOnboarding.config, "pointer-position": (i = o.onboardingStore.getAmpCurrentCard) == null ? void 0 : i.position, "right-position": (a = o.onboardingStore.getAmpCurrentCard) == null ? void 0 : a.right, "top-position": (s = o.onboardingStore.getAmpCurrentCard) == null ? void 0 : s.top }, on: { backButtonClick: o.handleBack, close: function(u) {
4
+ var c = function() {
5
+ var n, r, e, i, a, s;
6
+ var t = this, p = t._self._c, o = t._self._setupProxy;
7
+ return o.isVisible ? p(o.InOnboard, { key: "guido__amp-onboard", staticClass: "w-21-s p-a z-11", class: (n = o.onboardingStore.getAmpCurrentCard) == null ? void 0 : n.classes, attrs: { id: "guido__amp-onboard", "is-multiple-page": "", visible: "", "image-source": "", title: "", "bottom-position": (r = o.onboardingStore.getAmpCurrentCard) == null ? void 0 : r.bottom, "left-position": (e = o.onboardingStore.getAmpCurrentCard) == null ? void 0 : e.left, "pages-config": o.onboardingStore.onboardings.ampOnboarding.config, "pointer-position": (i = o.onboardingStore.getAmpCurrentCard) == null ? void 0 : i.position, "right-position": (a = o.onboardingStore.getAmpCurrentCard) == null ? void 0 : a.right, "top-position": (s = o.onboardingStore.getAmpCurrentCard) == null ? void 0 : s.top }, on: { backButtonClick: o.handleBack, close: function(b) {
7
8
  return o.onboardingStore.close("ampOnboarding");
8
- }, nextButtonClick: o.handleNext } }) : n._e();
9
- }, m = [], c = /* @__PURE__ */ g(
9
+ }, nextButtonClick: o.handleNext } }) : t._e();
10
+ }, m = [], l = /* @__PURE__ */ g(
10
11
  d,
11
- l,
12
+ c,
12
13
  m,
13
14
  !1,
14
15
  null,
15
- null
16
+ "6bcaca8a"
16
17
  );
17
- const f = c.exports;
18
+ const S = l.exports;
18
19
  export {
19
- f as default
20
+ S as default
20
21
  };
@@ -13,7 +13,7 @@ var l = function() {
13
13
  p,
14
14
  !1,
15
15
  null,
16
- "7419ae06"
16
+ "f16f20f8"
17
17
  );
18
18
  const S = _.exports;
19
19
  export {
@@ -1,21 +1,21 @@
1
1
  import g from "./ItemsOnboarding.vue2.js";
2
2
  /* empty css */
3
3
  import m from "../../../_virtual/_plugin-vue2_normalizer.js";
4
- var l = function() {
4
+ var c = function() {
5
5
  var e, n, r, i, s, a;
6
6
  var o = this, d = o._self._c, t = o._self._setupProxy;
7
- return t.isVisible ? d(t.InOnboard, { key: "guido__items-onboard", staticClass: "w-21-s p-a z-11", class: (e = t.onboardingStore.getItemsCurrentCard) == null ? void 0 : e.classes, attrs: { id: "guido__items-onboard", "is-multiple-page": "", visible: "", "image-source": "", title: "", "bottom-position": (n = t.onboardingStore.getItemsCurrentCard) == null ? void 0 : n.bottom, "left-position": (r = t.onboardingStore.getItemsCurrentCard) == null ? void 0 : r.left, "pages-config": t.onboardingStore.onboardings.itemsOnboarding.config, "pointer-position": (i = t.onboardingStore.getItemsCurrentCard) == null ? void 0 : i.position, "right-position": (s = t.onboardingStore.getItemsCurrentCard) == null ? void 0 : s.right, "top-position": (a = t.onboardingStore.getItemsCurrentCard) == null ? void 0 : a.top }, on: { backButtonClick: t.handleBack, close: function(b) {
7
+ return t.isVisible ? d(t.InOnboard, { key: "guido__items-onboard", staticClass: "w-21-s p-a z-11", class: (e = t.onboardingStore.getItemsCurrentCard) == null ? void 0 : e.classes, attrs: { id: "guido__items-onboard", "is-multiple-page": "", visible: "", "image-source": "", title: "", "bottom-position": (n = t.onboardingStore.getItemsCurrentCard) == null ? void 0 : n.bottom, "left-position": (r = t.onboardingStore.getItemsCurrentCard) == null ? void 0 : r.left, "pages-config": t.onboardingStore.onboardings.itemsOnboarding.config, "pointer-position": (i = t.onboardingStore.getItemsCurrentCard) == null ? void 0 : i.position, "right-position": (s = t.onboardingStore.getItemsCurrentCard) == null ? void 0 : s.right, "top-position": (a = t.onboardingStore.getItemsCurrentCard) == null ? void 0 : a.top }, on: { backButtonClick: t.handleBack, close: function(_) {
8
8
  return t.onboardingStore.close("itemsOnboarding");
9
9
  }, nextButtonClick: t.handleNext } }) : o._e();
10
- }, c = [], p = /* @__PURE__ */ m(
10
+ }, l = [], b = /* @__PURE__ */ m(
11
11
  g,
12
- l,
13
12
  c,
13
+ l,
14
14
  !1,
15
15
  null,
16
- "796d193b"
16
+ "bb3cca55"
17
17
  );
18
- const I = p.exports;
18
+ const I = b.exports;
19
19
  export {
20
20
  I as default
21
21
  };
@@ -1,46 +1,43 @@
1
- import { defineComponent as v, ref as D, computed as o } from "vue";
2
- import _ from "../../wrappers/WpModal.vue.js";
3
- import { useConfig as h } from "../../../composables/useConfig.js";
1
+ import { defineComponent as b, ref as v, computed as o } from "vue";
2
+ import D from "../../wrappers/WpModal.vue.js";
3
+ import { useConfig as _ } from "../../../composables/useConfig.js";
4
4
  import { useTranslations as y } from "../../../composables/useTranslations.js";
5
- import { ACADEMY_LINKS as c } from "../../../enums/academy.js";
5
+ import { ACADEMY_LINKS as m } from "../../../enums/academy.js";
6
6
  import L from "../../../static/assets/onboarding-img.svg.js";
7
- import { useOnboardingStore as C } from "../../../stores/onboarding.js";
8
- import { isAfterDate as w, formatShortDate as A } from "../../../utils/dateUtil.js";
9
- const V = /* @__PURE__ */ v({
7
+ import { useOnboardingStore as h } from "../../../stores/onboarding.js";
8
+ import { isAfterDate as C } from "../../../utils/dateUtil.js";
9
+ const x = /* @__PURE__ */ b({
10
10
  __name: "NewVersionPopup",
11
11
  emits: ["onboarding-finished"],
12
- setup(I, { emit: a }) {
13
- const e = y(), t = C(), s = D(!0), { config: p } = h(), i = o(() => {
14
- var l, m;
15
- return (m = (l = p.value) == null ? void 0 : l.editor) == null ? void 0 : m.migrationDate;
16
- }), n = o(() => w(i.value || 0)), d = o(() => A(
17
- i.value || 0
18
- )), f = o(() => n.value ? e("email-editor.onboarding-popup-sunsetted-title") : e("email-editor.onboarding-title")), g = o(() => n.value ? e("email-editor.onboarding-popup-sunsetted-description", {
19
- sunsetDate: d.value,
20
- academyLink: c.EMAIL_EDITOR
12
+ setup(w, { emit: i }) {
13
+ const e = y(), t = h(), a = v(!0), { config: s } = _(), p = o(() => {
14
+ var l, u;
15
+ return (u = (l = s.value) == null ? void 0 : l.editor) == null ? void 0 : u.migrationDate;
16
+ }), n = o(() => C(p.value || 0)), c = o(() => n.value ? e("email-editor.onboarding-popup-sunsetted-title") : e("email-editor.onboarding-title")), f = o(() => n.value ? e("email-editor.onboarding-popup-sunsetted-description", {
17
+ academyLink: m.EMAIL_EDITOR
21
18
  }) : e("email-editor.onboarding-description", {
22
- academyLink: c.EMAIL_EDITOR
23
- })), u = o(() => n.value ? e("products.cancel") : e("products.remind-me-later")), b = o(() => ({
19
+ academyLink: m.EMAIL_EDITOR
20
+ })), d = o(() => n.value ? e("products.cancel") : e("products.remind-me-later")), g = o(() => ({
24
21
  primaryButton: {
25
22
  type: "primary",
26
23
  labelText: e("left-menu.discover-now")
27
24
  },
28
25
  secondaryButton: {
29
26
  type: "subtle-primary",
30
- labelText: u.value
27
+ labelText: d.value
31
28
  }
32
29
  })), r = () => {
33
- s.value = !1, a("onboarding-finished");
30
+ a.value = !1, i("onboarding-finished");
34
31
  };
35
- return { __sfc: !0, emit: a, trans: e, onboardingStore: t, isVisible: s, config: p, migrationDate: i, isAfterMigrationDate: n, formattedSunsetDate: d, popupTitle: f, popupDescription: g, secondaryButtonLabel: u, footerButtonOptions: b, closePopup: r, handleDiscoverNow: () => {
32
+ return { __sfc: !0, emit: i, trans: e, onboardingStore: t, isVisible: a, config: s, migrationDate: p, isAfterMigrationDate: n, popupTitle: c, popupDescription: f, secondaryButtonLabel: d, footerButtonOptions: g, closePopup: r, handleDiscoverNow: () => {
36
33
  t.onDiscoverNowClicked(), r();
37
34
  }, handleRemindLater: () => {
38
35
  t.onRemindMeLater(), r();
39
36
  }, handleClose: () => {
40
37
  t.onNewVersionPopupClose(), r();
41
- }, WpModal: _, onboardingImageSvg: L };
38
+ }, WpModal: D, onboardingImageSvg: L };
42
39
  }
43
40
  });
44
41
  export {
45
- V as default
42
+ x as default
46
43
  };
@@ -13,9 +13,9 @@ var g = function() {
13
13
  b,
14
14
  !1,
15
15
  null,
16
- "cadfc82d"
16
+ "b09e80c4"
17
17
  );
18
- const C = p.exports;
18
+ const f = p.exports;
19
19
  export {
20
- C as default
20
+ f as default
21
21
  };
@@ -1,20 +1,21 @@
1
1
  import g from "./VersionHistoryOnboarding.vue2.js";
2
+ /* empty css */
2
3
  import l from "../../../_virtual/_plugin-vue2_normalizer.js";
3
4
  var c = function() {
4
- var n, t, i, e, s, a;
5
+ var t, n, i, e, s, a;
5
6
  var r = this, d = r._self._c, o = r._self._setupProxy;
6
- return o.isVisible ? d(o.InOnboard, { key: "guido__version-history-onboard", staticClass: "w-21-s p-a z-11", class: (n = o.onboardingStore.getVersionHistoryCurrentCard) == null ? void 0 : n.classes, attrs: { id: "guido__version-history-onboard", "is-multiple-page": "", visible: "", "image-source": "", title: "", "bottom-position": (t = o.onboardingStore.getVersionHistoryCurrentCard) == null ? void 0 : t.bottom, "left-position": (i = o.onboardingStore.getVersionHistoryCurrentCard) == null ? void 0 : i.left, "pages-config": o.onboardingStore.onboardings.versionHistoryOnboarding.config, "pointer-position": (e = o.onboardingStore.getVersionHistoryCurrentCard) == null ? void 0 : e.position, "right-position": (s = o.onboardingStore.getVersionHistoryCurrentCard) == null ? void 0 : s.right, "top-position": (a = o.onboardingStore.getVersionHistoryCurrentCard) == null ? void 0 : a.top }, on: { backButtonClick: o.handleBack, close: function(b) {
7
+ return o.isVisible ? d(o.InOnboard, { key: "guido__version-history-onboard", staticClass: "w-21-s p-a z-11", class: (t = o.onboardingStore.getVersionHistoryCurrentCard) == null ? void 0 : t.classes, attrs: { id: "guido__version-history-onboard", "is-multiple-page": "", visible: "", "image-source": "", title: "", "bottom-position": (n = o.onboardingStore.getVersionHistoryCurrentCard) == null ? void 0 : n.bottom, "left-position": (i = o.onboardingStore.getVersionHistoryCurrentCard) == null ? void 0 : i.left, "pages-config": o.onboardingStore.onboardings.versionHistoryOnboarding.config, "pointer-position": (e = o.onboardingStore.getVersionHistoryCurrentCard) == null ? void 0 : e.position, "right-position": (s = o.onboardingStore.getVersionHistoryCurrentCard) == null ? void 0 : s.right, "top-position": (a = o.onboardingStore.getVersionHistoryCurrentCard) == null ? void 0 : a.top }, on: { backButtonClick: o.handleBack, close: function(u) {
7
8
  return o.onboardingStore.close("versionHistoryOnboarding");
8
9
  }, nextButtonClick: o.handleNext } }) : r._e();
9
- }, _ = [], p = /* @__PURE__ */ l(
10
+ }, p = [], _ = /* @__PURE__ */ l(
10
11
  g,
11
12
  c,
12
- _,
13
+ p,
13
14
  !1,
14
15
  null,
15
- null
16
+ "9bdef600"
16
17
  );
17
- const m = p.exports;
18
+ const y = _.exports;
18
19
  export {
19
- m as default
20
+ y as default
20
21
  };
@@ -1,13 +1,14 @@
1
- import { migrateCheckbox as o } from "./checkboxMigrator.js";
1
+ import { migrateCheckbox as t } from "./checkboxMigrator.js";
2
2
  import { migrateCouponBlock as i } from "./couponBlockMigrator.js";
3
3
  import { migrateItemsBlock as e } from "./itemsBlockMigrator.js";
4
4
  import { migrateRadioButton as a } from "./radioButtonMigrator.js";
5
- import { migrateRecommendation as g } from "./recommendationMigrator.js";
5
+ import { migrateRecommendation as c } from "./recommendationMigrator.js";
6
+ import { migrateSocialIcons as g } from "./socialIconMigrator.js";
6
7
  import { migrateUnsubscribe as n } from "./unsubscribeMigrator.js";
7
- const b = async (r, t = {}) => {
8
- let m = r;
9
- return m = o(m), m = a(m), m = await n(m), m = i(m), m = g(m, t), m = e(m), m;
8
+ const k = async (o, r = {}) => {
9
+ let m = o;
10
+ return m = t(m), m = a(m), m = await n(m), m = i(m), m = c(m, r), m = e(m), m = g(m), m;
10
11
  };
11
12
  export {
12
- b as migrate
13
+ k as migrate
13
14
  };
@@ -0,0 +1,29 @@
1
+ var u = Object.defineProperty;
2
+ var T = (e, t, r) => t in e ? u(e, t, { enumerable: !0, configurable: !0, writable: !0, value: r }) : e[t] = r;
3
+ var s = (e, t, r) => T(e, typeof t != "symbol" ? t + "" : t, r);
4
+ const i = "twitter", E = "xcom", o = "esd-tmp-icon-type", p = new RegExp(i, "i");
5
+ class g {
6
+ constructor() {
7
+ s(this, "parser");
8
+ this.parser = new DOMParser();
9
+ }
10
+ migrate(t) {
11
+ try {
12
+ if (!p.test(t))
13
+ return t;
14
+ const r = this.parser.parseFromString(t, "text/html"), a = r.querySelectorAll(`[${o}]`);
15
+ let n = !1;
16
+ return a.forEach((c) => {
17
+ String(c.getAttribute(o)).toLowerCase() === i && (c.setAttribute(o, E), n = !0);
18
+ }), n ? r.documentElement.outerHTML : t;
19
+ } catch (r) {
20
+ return console.error("SocialIconMigrator failed:", r), t;
21
+ }
22
+ }
23
+ }
24
+ function _(e) {
25
+ return new g().migrate(e);
26
+ }
27
+ export {
28
+ _ as migrateSocialIcons
29
+ };
@@ -1,4 +1,4 @@
1
- const e = "https://academy.insiderone.com/", o = {
1
+ const e = "https://academy.insiderone.com", o = {
2
2
  EMAIL_EDITOR: `${e}/docs/email-drag-and-drop-editor`,
3
3
  GLOBAL_UNSUBSCRIBE: `${e}/docs/global-unsubscribe-preference-center`,
4
4
  AMP_FOR_EMAILS: `${e}/docs/amp-for-emails`
@@ -1,6 +1,5 @@
1
- const t = "tr-TR", T = "default", L = "UTC";
1
+ const t = "tr-TR", L = "default";
2
2
  export {
3
- T as DEFAULT,
4
- t as DEFAULT_LOCALE,
5
- L as DEFAULT_TZ
3
+ L as DEFAULT,
4
+ t as DEFAULT_LOCALE
6
5
  };
@@ -1,14 +1,14 @@
1
- import { ModificationDescription as L, UIElementType as P, UEAttr as D } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
- import { CommonControl as h } from "../../../common-control.js";
3
- import { ItemsBlockControlId as R, ItemsBlockId as _ } from "../../enums/controlEnums.js";
4
- import { productPairs as I } from "../../enums/productEnums.js";
5
- import { getItemsBlockConfig as d, setItemsBlockConfig as u, escapeReplacement as O } from "../../utils/nodeConfigUtils.js";
6
- const g = R.PRICE_FORMATTED_PRICE, s = {
1
+ import { ModificationDescription as C, UIElementType as _, UEAttr as L } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
+ import { CommonControl as D } from "../../../common-control.js";
3
+ import { ItemsBlockControlId as R, ItemsBlockId as I } from "../../enums/controlEnums.js";
4
+ import { productPairs as p } from "../../enums/productEnums.js";
5
+ import { getItemsBlockConfig as l, setItemsBlockConfig as h, escapeReplacement as g } from "../../utils/nodeConfigUtils.js";
6
+ const O = R.PRICE_FORMATTED_PRICE, a = {
7
7
  FORMATTED_PRICE: "formattedPrice"
8
8
  };
9
- class k extends h {
9
+ class k extends D {
10
10
  getId() {
11
- return g;
11
+ return O;
12
12
  }
13
13
  getTemplate() {
14
14
  return `
@@ -18,56 +18,58 @@ class k extends h {
18
18
  `;
19
19
  }
20
20
  onRender() {
21
- const t = d(this.currentNode);
22
- this.api.updateValues({ [s.FORMATTED_PRICE]: (t == null ? void 0 : t.priceFormatted) ?? !0 }), this.api.onValueChanged(s.FORMATTED_PRICE, (e) => {
23
- this._onFormattedPriceChange(e);
21
+ const e = l(this.currentNode);
22
+ this.api.updateValues({ [a.FORMATTED_PRICE]: (e == null ? void 0 : e.priceFormatted) ?? !0 }), this.api.onValueChanged(a.FORMATTED_PRICE, (t) => {
23
+ this._onFormattedPriceChange(t);
24
24
  });
25
25
  }
26
- onTemplateNodeUpdated(t) {
27
- super.onTemplateNodeUpdated(t), this.handleBlockInstanceChange(() => {
28
- const e = d(this.currentNode);
29
- this.api.updateValues({ [s.FORMATTED_PRICE]: (e == null ? void 0 : e.priceFormatted) ?? !0 });
26
+ onTemplateNodeUpdated(e) {
27
+ super.onTemplateNodeUpdated(e), this.handleBlockInstanceChange(() => {
28
+ const t = l(this.currentNode);
29
+ this.api.updateValues({ [a.FORMATTED_PRICE]: (t == null ? void 0 : t.priceFormatted) ?? !0 });
30
30
  });
31
31
  }
32
- _onFormattedPriceChange(t) {
33
- if (console.debug("Formatted price changed to: ", t), u(this.currentNode, this.api, { priceFormatted: t }), !this.currentNode)
32
+ _onFormattedPriceChange(e) {
33
+ if (console.debug("Formatted price changed to: ", e), !this.currentNode)
34
34
  return;
35
- const e = d(this.currentNode), n = (e == null ? void 0 : e.type) ?? "CART_ITEMS", i = (e == null ? void 0 : e.priceSinglePrice) ?? !1, r = I.PAIRS_FOR_EXTENSION.price[n], c = I.PAIRS_FOR_EXTENSION.originalPrice[n], [p, m] = t ? [
36
- i ? r.DEFAULT_SINGLE_PRICE : r.DEFAULT_PRICE,
37
- i ? r.DEFAULT_SINGLE_PRICE_FORMATTED : r.DEFAULT_PRICE_FORMATTED
35
+ const t = l(this.currentNode), n = (t == null ? void 0 : t.type) ?? "CART_ITEMS", o = (t == null ? void 0 : t.priceSinglePrice) ?? !1, r = p.PAIRS_FOR_EXTENSION.price[n], i = p.PAIRS_FOR_EXTENSION.originalPrice[n], [E, m] = e ? [
36
+ o ? r.DEFAULT_SINGLE_PRICE : r.DEFAULT_PRICE,
37
+ o ? r.DEFAULT_SINGLE_PRICE_FORMATTED : r.DEFAULT_PRICE_FORMATTED
38
38
  ] : [
39
- i ? r.DEFAULT_SINGLE_PRICE_FORMATTED : r.DEFAULT_PRICE_FORMATTED,
40
- i ? r.DEFAULT_SINGLE_PRICE : r.DEFAULT_PRICE
41
- ], l = i ? c.DEFAULT_SINGLE_PRICE : c.DEFAULT_PRICE, T = i ? c.DEFAULT_SINGLE_PRICE_FORMATTED : c.DEFAULT_PRICE_FORMATTED, [F, A] = t ? [l, T] : [T, l], o = this.currentNode.closest(".items-block"), C = (o == null ? void 0 : o.querySelectorAll(
42
- `[esd-extension-block-id="${_.PRICE}"]`
43
- )) || [], E = this.api.getDocumentModifier();
44
- C.forEach((a) => {
45
- this._updatePriceBlock(E, a, p, m);
46
- }), ((o == null ? void 0 : o.querySelectorAll(
47
- `[esd-extension-block-id="${_.ORIGINAL_PRICE}"]`
48
- )) || []).forEach((a) => {
49
- this._updatePriceBlock(E, a, F, A);
50
- }), E.apply(new L(
51
- `Updated price to ${t ? "formatted" : "unformatted"}`
39
+ o ? r.DEFAULT_SINGLE_PRICE_FORMATTED : r.DEFAULT_PRICE_FORMATTED,
40
+ o ? r.DEFAULT_SINGLE_PRICE : r.DEFAULT_PRICE
41
+ ], T = o ? i.DEFAULT_SINGLE_PRICE : i.DEFAULT_PRICE, P = o ? i.DEFAULT_SINGLE_PRICE_FORMATTED : i.DEFAULT_PRICE_FORMATTED, [F, A] = e ? [T, P] : [P, T], s = this.api.getDocumentModifier();
42
+ h(this.currentNode, this.api, { priceFormatted: e }, s);
43
+ const c = this.currentNode.closest(".items-block");
44
+ ((c == null ? void 0 : c.querySelectorAll(
45
+ `[esd-extension-block-id="${I.PRICE}"]`
46
+ )) || []).forEach((d) => {
47
+ this._updatePriceBlock(s, d, E, m, e);
48
+ }), ((c == null ? void 0 : c.querySelectorAll(
49
+ `[esd-extension-block-id="${I.ORIGINAL_PRICE}"]`
50
+ )) || []).forEach((d) => {
51
+ this._updatePriceBlock(s, d, F, A, e);
52
+ }), s.apply(new C(
53
+ `Updated price to ${e ? "formatted" : "unformatted"}`
52
54
  ));
53
55
  }
54
- _updatePriceBlock(t, e, n, i) {
55
- const r = e.getInnerHTML().trim().replace(n, O(i));
56
- t.modifyHtml(e).setInnerHtml(r);
56
+ _updatePriceBlock(e, t, n, o, r) {
57
+ const i = `data-formated="${r ? "true" : "false"}"`, E = t.getInnerHTML().trim().replace(n, g(o)).replace(/data-formated=(?:"[^"]*"|'[^']*')/g, i);
58
+ e.modifyHtml(t).setInnerHtml(E);
57
59
  }
58
60
  _getFormattedPrice() {
59
61
  return `
60
62
  <div class="display-flex align-items-center justify-content-between">
61
- <${P.LABEL}
62
- ${D.LABEL.text}="${this.api.translate("Formatted Price (e.g. $9.90)")}"
63
+ <${_.LABEL}
64
+ ${L.LABEL.text}="${this.api.translate("Formatted Price (e.g. $9.90)")}"
63
65
  >
64
- </${P.LABEL}>
65
- ${this._GuToggle(s.FORMATTED_PRICE)}
66
+ </${_.LABEL}>
67
+ ${this._GuToggle(a.FORMATTED_PRICE)}
66
68
  </div>
67
69
  `;
68
70
  }
69
71
  }
70
72
  export {
71
- g as CONTROL_BLOCK_ID,
73
+ O as CONTROL_BLOCK_ID,
72
74
  k as PriceFormattedPriceControl
73
75
  };
package/dist/guido.css CHANGED
@@ -1 +1 @@
1
- .gap-16[data-v-5553d071],.gap-16[data-v-0e1b0c54]{gap:16px}[data-v-73199fa4] .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-2cb418af] .in-progress-wrapper__progress p span:last-child{display:none!important}[data-v-2cb418af] .in-progress-description-status{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-fad98586]{gap:8px}.version-history__toolbar[data-v-fad98586]{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}.auto-save-toggle[data-v-2c964af4]{position:relative}.auto-save-toggle__info-box[data-v-2c964af4]{position:absolute;top:100%;left:0;z-index:10;width:280px}.editor-actions[data-v-6e711fd7]{gap:4px}.header-wrapper[data-v-d11dd577]{min-width:1000px}.guido-loading__wrapper[data-v-07c4b2d8]{height:100%;top:75px!important;bottom:0!important}.guido-editor__wrapper[data-v-50dac6de]{--ribbon-offset: 0px;position:relative;width:100%;height:calc(100vh - 128px - var(--ribbon-offset))}.guido-editor__container[data-v-50dac6de]{width:100%;height:calc(100vh - 128px - var(--ribbon-offset))}.guido-editor__no-header[data-v-50dac6de]{height:calc(100vh - 75px - var(--ribbon-offset))}[data-v-293f1c47] .in-breadcrumb-wrapper__links{cursor:pointer}.templates-wrapper[data-v-91a26acd]{gap:16px;grid-template-columns:repeat(3,1fr)}.templates-wrapper .template-wrapper[data-v-91a26acd]{cursor:pointer}.templates-wrapper .template-wrapper .template-container[data-v-91a26acd]{height:274px;padding:2px;transition:none}.templates-wrapper .template-wrapper .template-container.selected[data-v-91a26acd]{padding:1px}.templates-wrapper .template-wrapper .template-container .thumbnail[data-v-91a26acd]{object-fit:cover;transform:scale(1)}[data-v-b9a93c6e] .guido__verion-history-view-option-selection-desktop svg,[data-v-b9a93c6e] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-b9a93c6e] .in-segments-wrapper__button_selected,[data-v-b9a93c6e] .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-06afaecb]{min-width:602px;height:70vh;min-height:583px;border-radius:10px}.desktop-preview iframe[data-v-06afaecb]{min-height:504px}.iframe-wrapper[data-v-cbafc185]{width:258px}.iframe-scaled[data-v-cbafc185]{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-7419ae06] .vueperslides__bullets,[data-v-796d193b] .vueperslides__bullets{pointer-events:none!important}[data-v-796d193b] .vueperslides__parallax-wrapper{height:110px!important}[data-v-cadfc82d] .vueperslides__bullets{pointer-events:none!important}[data-v-cadfc82d] .vueperslides__parallax-wrapper{height:110px!important}
1
+ .gap-16[data-v-5553d071],.gap-16[data-v-0e1b0c54]{gap:16px}[data-v-73199fa4] .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-2cb418af] .in-progress-wrapper__progress p span:last-child{display:none!important}[data-v-2cb418af] .in-progress-description-status{display:none!important}.view-options-wrapper[data-v-10599c37]{position:relative;display:inline-block}.new-tag[data-v-10599c37]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-10599c37] .guido__view-option-selection-desktop svg,[data-v-10599c37] .guido__view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-10599c37] .in-segments-wrapper__button_selected,[data-v-10599c37] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}.editor-toolbar[data-v-173c3a40]{gap:4px}.version-history-item[data-v-ee4b9c3f]{flex-basis:200px}.version-history[data-v-fad98586]{gap:8px}.version-history__toolbar[data-v-fad98586]{gap:4px}.view-options-wrapper[data-v-38eb0a73]{position:relative;display:inline-block}.new-tag[data-v-38eb0a73]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-38eb0a73] .guido__verion-history-view-option-selection-desktop svg,[data-v-38eb0a73] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-38eb0a73] .in-segments-wrapper__button_selected,[data-v-38eb0a73] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}.auto-save-toggle[data-v-2c964af4]{position:relative}.auto-save-toggle__info-box[data-v-2c964af4]{position:absolute;top:100%;left:0;z-index:10;width:280px}.editor-actions[data-v-6e711fd7]{gap:4px}.header-wrapper[data-v-d11dd577]{min-width:1000px}.guido-loading__wrapper[data-v-07c4b2d8]{height:100%;top:75px!important;bottom:0!important}.guido-editor__wrapper[data-v-50dac6de]{--ribbon-offset: 0px;position:relative;width:100%;height:calc(100vh - 128px - var(--ribbon-offset))}.guido-editor__container[data-v-50dac6de]{width:100%;height:calc(100vh - 128px - var(--ribbon-offset))}.guido-editor__no-header[data-v-50dac6de]{height:calc(100vh - 75px - var(--ribbon-offset))}[data-v-293f1c47] .in-breadcrumb-wrapper__links{cursor:pointer}.templates-wrapper[data-v-91a26acd]{gap:16px;grid-template-columns:repeat(3,1fr)}.templates-wrapper .template-wrapper[data-v-91a26acd]{cursor:pointer}.templates-wrapper .template-wrapper .template-container[data-v-91a26acd]{height:274px;padding:2px;transition:none}.templates-wrapper .template-wrapper .template-container.selected[data-v-91a26acd]{padding:1px}.templates-wrapper .template-wrapper .template-container .thumbnail[data-v-91a26acd]{object-fit:cover;transform:scale(1)}[data-v-b9a93c6e] .guido__verion-history-view-option-selection-desktop svg,[data-v-b9a93c6e] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-b9a93c6e] .in-segments-wrapper__button_selected,[data-v-b9a93c6e] .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-06afaecb]{min-width:602px;height:70vh;min-height:583px;border-radius:10px}.desktop-preview iframe[data-v-06afaecb]{min-height:504px}.iframe-wrapper[data-v-cbafc185]{width:258px}.iframe-scaled[data-v-cbafc185]{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-6bcaca8a] .vueperslides__parallax-wrapper{padding-bottom:110px!important}[data-v-f16f20f8] .vueperslides__bullets{pointer-events:none!important}[data-v-f16f20f8] .vueperslides__parallax-wrapper{padding-bottom:110px!important}[data-v-bb3cca55] .vueperslides__bullets{pointer-events:none!important}[data-v-bb3cca55] .vueperslides__parallax-wrapper{height:110px!important;padding-bottom:110px!important}[data-v-b09e80c4] .vueperslides__bullets{pointer-events:none!important}[data-v-b09e80c4] .vueperslides__parallax-wrapper{height:110px!important;padding-bottom:110px!important}[data-v-9bdef600] .vueperslides__parallax-wrapper{padding-bottom:110px!important}
@@ -245,10 +245,9 @@ export declare const TemplateSchema: v.ObjectSchema<{
245
245
  }, undefined>, undefined>, readonly []>;
246
246
  /**
247
247
  * Partner-keyed set of dynamic-content items the account offers, e.g.
248
- * `{ [partnerName]: [{ text, value, children }] }`. Guido flattens it
249
- * (union across partners, leaf attributes only) into the label→token map
250
- * that repairs label-form placeholders (`{{ Phone Number }}`) in dropped
251
- * saved modules.
248
+ * `{ [partnerName]: [{ text, value, children }] }`. Guido flattens the active
249
+ * (first) partner's leaf attributes into the label→token map that repairs
250
+ * label-form placeholders (`{{ Phone Number }}`) in dropped saved modules.
252
251
  */
253
252
  readonly dynamicContentList: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.SchemaWithFallback<v.ArraySchema<v.GenericSchema<DynamicContentNode>, undefined>, readonly []>, undefined>, {}>;
254
253
  /** Valid custom field attribute names from the partner's categorized fields */
@@ -648,10 +647,9 @@ export declare const GuidoConfigSchema: v.ObjectSchema<{
648
647
  }, undefined>, undefined>, readonly []>;
649
648
  /**
650
649
  * Partner-keyed set of dynamic-content items the account offers, e.g.
651
- * `{ [partnerName]: [{ text, value, children }] }`. Guido flattens it
652
- * (union across partners, leaf attributes only) into the label→token map
653
- * that repairs label-form placeholders (`{{ Phone Number }}`) in dropped
654
- * saved modules.
650
+ * `{ [partnerName]: [{ text, value, children }] }`. Guido flattens the active
651
+ * (first) partner's leaf attributes into the label→token map that repairs
652
+ * label-form placeholders (`{{ Phone Number }}`) in dropped saved modules.
655
653
  */
656
654
  readonly dynamicContentList: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.SchemaWithFallback<v.ArraySchema<v.GenericSchema<DynamicContentNode>, undefined>, readonly []>, undefined>, {}>;
657
655
  /** Valid custom field attribute names from the partner's categorized fields */
@@ -28,7 +28,7 @@ export type DynamicContentNode = {
28
28
  /**
29
29
  * Partner-keyed dynamic-content list. Architect is multi-partner, so the map is
30
30
  * keyed by partner name; each entry is that partner's category tree. Guido
31
- * flattens it (union across partners, leaf attributes only) into a `DynamicContent[]`.
31
+ * flattens the active (first) partner's leaf attributes into a `DynamicContent[]`.
32
32
  */
33
33
  export type DynamicContentList = Record<string, DynamicContentNode[]>;
34
34
  export type MergeTag = BaseDynamicContent & {
@@ -0,0 +1 @@
1
+ export declare function migrateSocialIcons(html: string): string;
@@ -5,8 +5,8 @@
5
5
  * for easy maintenance and domain migration.
6
6
  */
7
7
  export declare const ACADEMY_LINKS: {
8
- readonly EMAIL_EDITOR: "https://academy.insiderone.com//docs/email-drag-and-drop-editor";
9
- readonly GLOBAL_UNSUBSCRIBE: "https://academy.insiderone.com//docs/global-unsubscribe-preference-center";
10
- readonly AMP_FOR_EMAILS: "https://academy.insiderone.com//docs/amp-for-emails";
8
+ readonly EMAIL_EDITOR: "https://academy.insiderone.com/docs/email-drag-and-drop-editor";
9
+ readonly GLOBAL_UNSUBSCRIBE: "https://academy.insiderone.com/docs/global-unsubscribe-preference-center";
10
+ readonly AMP_FOR_EMAILS: "https://academy.insiderone.com/docs/amp-for-emails";
11
11
  };
12
12
  export type AcademyLinkKey = keyof typeof ACADEMY_LINKS;
@@ -1,5 +1,8 @@
1
+ /** Production default — pony-express builds unsubscribe links on mail.useinsider.com. */
2
+ export declare const DEFAULT_ENVIRONMENT_PREFIX = "useinsider";
1
3
  /**
2
- * Gets the appropriate environment prefix by parsing from current hostname
3
- * Extracts environment prefix from domains by splitting hostname
4
+ * Gets the environment prefix by parsing the current hostname (third segment),
5
+ * falling back to the production default when that segment is absent or empty —
6
+ * so unsubscribe links never compile to `https://mail.undefined.com/...` (SD-145225).
4
7
  */
5
8
  export declare const getEnvironmentPrefix: () => string;
@@ -1,19 +1,10 @@
1
- import { DEFAULT_LOCALE as r, DEFAULT as a, DEFAULT_TZ as c } from "../enums/date.js";
2
- const m = (t) => t ? t instanceof Date ? t : typeof t == "string" ? t.length === 10 ? new Date(Number(t) * 1e3) : new Date(t) : typeof t == "number" ? t.toString().length === 10 ? new Date(t * 1e3) : new Date(t) : /* @__PURE__ */ new Date() : /* @__PURE__ */ new Date(), s = () => {
1
+ import { DEFAULT_LOCALE as r, DEFAULT as o } from "../enums/date.js";
2
+ const c = () => {
3
3
  const t = window.l10n;
4
- return (t == null ? void 0 : t.locale) === a ? r : (t == null ? void 0 : t.locale) || r;
5
- }, u = new Intl.DateTimeFormat().resolvedOptions().timeZone, f = () => {
6
- const t = window.l10n;
7
- return (t == null ? void 0 : t.timezone) || u || c;
8
- }, D = (t, e = s(), n = f()) => {
9
- const o = {
10
- year: "numeric",
11
- month: "2-digit",
12
- day: "2-digit",
13
- timeZone: n
14
- }, i = m(t);
15
- return new Intl.DateTimeFormat(e, o).format(i);
16
- }, T = (t) => {
4
+ return (t == null ? void 0 : t.locale) === o ? r : (t == null ? void 0 : t.locale) || r;
5
+ };
6
+ new Intl.DateTimeFormat().resolvedOptions().timeZone;
7
+ const i = (t) => {
17
8
  if (!t)
18
9
  return "";
19
10
  const e = new Date(t);
@@ -25,13 +16,9 @@ const m = (t) => t ? t instanceof Date ? t : typeof t == "string" ? t.length ===
25
16
  second: "2-digit",
26
17
  hour12: !1
27
18
  }).format(e);
28
- }, h = (t) => t ? Math.floor(Date.now() / 1e3) >= t : !1;
19
+ }, m = (t) => t ? Math.floor(Date.now() / 1e3) >= t : !1;
29
20
  export {
30
- m as convertToDateObject,
31
- T as formatPatchDate,
32
- D as formatShortDate,
33
- h as isAfterDate,
34
- u as localTz,
35
- s as locale,
36
- f as timezone
21
+ i as formatPatchDate,
22
+ m as isAfterDate,
23
+ c as locale
37
24
  };
@@ -1,4 +1,5 @@
1
- const n = () => window.location.hostname.split(".")[2];
1
+ const n = "useinsider", o = () => window.location.hostname.split(".")[2] || n;
2
2
  export {
3
- n as getEnvironmentPrefix
3
+ n as DEFAULT_ENVIRONMENT_PREFIX,
4
+ o as getEnvironmentPrefix
4
5
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@useinsider/guido",
3
- "version": "3.11.0-beta.f4ab671",
3
+ "version": "3.12.0-beta.00cbb4c",
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",
@@ -44,7 +44,7 @@
44
44
  "license": "ISC",
45
45
  "dependencies": {
46
46
  "@stripoinc/ui-editor-extensions": "3.8.0",
47
- "@useinsider/design-system-vue": "1.3.0",
47
+ "@useinsider/design-system-vue": "2.0.0",
48
48
  "@vueuse/core": "11.3.0",
49
49
  "lodash-es": "4.17.21",
50
50
  "pinia": "2.3.1",