@designcrowd/library.brand-page 5.18.4 → 5.18.5

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 (162) hide show
  1. package/lib/src/{CreatedOnBrandCrowd-de-de-DQLtpdLe.js → CreatedOnBrandCrowd-de-de-ciKpCAd9.js} +1 -1
  2. package/lib/src/{CreatedOnBrandCrowd-en-us-CvEhlADd.js → CreatedOnBrandCrowd-en-us-CZbTS1AZ.js} +1 -1
  3. package/lib/src/{CreatedOnBrandCrowd-es-es-pYQeTTC0.js → CreatedOnBrandCrowd-es-es-C8MExng5.js} +1 -1
  4. package/lib/src/{CreatedOnBrandCrowd-fr-fr-CcE-iCEq.js → CreatedOnBrandCrowd-fr-ca-CO0L9NK2.js} +1 -1
  5. package/lib/src/{CreatedOnBrandCrowd-fr-ca-CcE-iCEq.js → CreatedOnBrandCrowd-fr-fr-CO0L9NK2.js} +1 -1
  6. package/lib/src/{CreatedOnBrandCrowd-pt-pt-OyhWWWyO.js → CreatedOnBrandCrowd-pt-br-zVDvBF2H.js} +1 -1
  7. package/lib/src/{CreatedOnBrandCrowd-pt-br-OyhWWWyO.js → CreatedOnBrandCrowd-pt-pt-zVDvBF2H.js} +1 -1
  8. package/lib/src/{CreatedOnDcom-de-de-DH98FFLS.js → CreatedOnDcom-de-de-WrUSQdjf.js} +1 -1
  9. package/lib/src/{CreatedOnDcom-en-us-DK67NN1r.js → CreatedOnDcom-en-us-BqC9YtkL.js} +1 -1
  10. package/lib/src/{CreatedOnDcom-es-es-9-QU4BU6.js → CreatedOnDcom-es-es-BzH32Oya.js} +1 -1
  11. package/lib/src/{CreatedOnDcom-fr-ca-U9J9H9VB.js → CreatedOnDcom-fr-ca-D7TYfCW0.js} +1 -1
  12. package/lib/src/{CreatedOnDcom-fr-fr-DqdzB1DJ.js → CreatedOnDcom-fr-fr-DVlyfBtb.js} +1 -1
  13. package/lib/src/{CreatedOnDcom-pt-br-c4UiWtkB.js → CreatedOnDcom-pt-br-CSRB91ey.js} +1 -1
  14. package/lib/src/{CreatedOnDcom-pt-pt-Do2qJsYp.js → CreatedOnDcom-pt-pt-9KMj5gpc.js} +1 -1
  15. package/lib/src/brand-page/models/navigation-styles.model.d.ts +7 -0
  16. package/lib/src/brand-page/models/navigation-styles.model.js +25 -2
  17. package/lib/src/brand-page/utils/migration/migration-16.d.ts +2 -0
  18. package/lib/src/brand-page/utils/migration/migration-16.js +47 -0
  19. package/lib/src/brand-page/utils/migration.util.js +7 -0
  20. package/lib/src/brand-page-maker/components/action-bar/ActionBar.mixin.d.ts +7 -2
  21. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.d.ts +7 -2
  22. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.js +8 -0
  23. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMakerTemplateSettings.mixin.d.ts +7 -2
  24. package/lib/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-examples.js +1 -0
  25. package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.d.ts +87 -2
  26. package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.js +5 -0
  27. package/lib/src/brand-page-maker/components/brandpage-settings/ReplaceImageSettingsForBrandPageSettings.mixin.d.ts +7 -2
  28. package/lib/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.mixin.d.ts +3 -0
  29. package/lib/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.mixin.js +11 -0
  30. package/lib/src/brand-page-maker/components/seo-settings/SeoPageSettings.mixin.d.ts +7 -2
  31. package/lib/src/brand-page-maker/components/seo-settings/UrlSettings.mixin.d.ts +7 -2
  32. package/lib/src/brand-page-maker/components/social-share/SocialShare.mixin.d.ts +7 -2
  33. package/lib/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.d.ts +7 -2
  34. package/lib/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.js +9 -0
  35. package/lib/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.js +20 -1
  36. package/lib/src/brand-page-maker/composables/useEventTracker.d.ts +20 -0
  37. package/lib/src/brand-page-maker/composables/useEventTracker.js +17 -0
  38. package/lib/src/brand-page-maker/composables/useUndoRedoFlag.d.ts +17 -0
  39. package/lib/src/brand-page-maker/composables/useUndoRedoFlag.js +25 -0
  40. package/lib/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.d.ts +41 -2
  41. package/lib/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.js +308 -14
  42. package/lib/src/brand-page-maker/stores/history/history-store.d.ts +83 -0
  43. package/lib/src/brand-page-maker/stores/history/history-store.js +495 -0
  44. package/lib/src/brand-page-maker/stores/logo-store/logo-store.d.ts +1 -0
  45. package/lib/src/brand-page-maker/stores/user/user-store.js +1 -0
  46. package/lib/src/bundled-translations-D1q3rSEz.js +175 -0
  47. package/lib/src/bundled-translations.de-DE-BxqLLwbh.js +175 -0
  48. package/lib/src/bundled-translations.es-ES-uh249NlJ.js +175 -0
  49. package/lib/src/bundled-translations.fr-CA-BEQmv2fX.js +175 -0
  50. package/lib/src/bundled-translations.fr-FR-BnNuCojH.js +175 -0
  51. package/lib/src/bundled-translations.pt-BR-CJUOxVlq.js +175 -0
  52. package/lib/src/bundled-translations.pt-PT-Ds9cMEqK.js +175 -0
  53. package/lib/src/bundles/bundled-translations.de-DE.json +3 -1
  54. package/lib/src/bundles/bundled-translations.es-ES.json +3 -1
  55. package/lib/src/bundles/bundled-translations.fr-CA.json +3 -1
  56. package/lib/src/bundles/bundled-translations.fr-FR.json +3 -1
  57. package/lib/src/bundles/bundled-translations.json +3 -1
  58. package/lib/src/bundles/bundled-translations.pt-BR.json +3 -1
  59. package/lib/src/bundles/bundled-translations.pt-PT.json +3 -1
  60. package/lib/src/constants/ui.d.ts +1 -0
  61. package/lib/src/css/library.brand-page-brandCrowd.min.css +77 -82
  62. package/lib/src/css/library.brand-page-brandPage.min.css +77 -83
  63. package/lib/src/css/library.brand-page-designCom.min.css +77 -82
  64. package/lib/src/css/library.brand-page-preview.min.css +77 -82
  65. package/lib/src/index.mjs +62 -60
  66. package/lib/src/{lib-BI3J4Mbk.js → lib-BXbo_N88.js} +35072 -34447
  67. package/lib/src/metadata-builder/builders/reorder-pages-builder.d.ts +13 -0
  68. package/lib/src/metadata-builder/builders/reorder-pages-builder.js +49 -0
  69. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.d.ts +87 -2
  70. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.js +5 -0
  71. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.stories.js +1 -0
  72. package/lib/src/shared/content-settings/components/content-settings/ReplaceImageSettingsForContent.mixin.d.ts +23 -2
  73. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.d.ts +16 -0
  74. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.d.ts +7 -2
  75. package/lib/src/shared/content-settings/components/draggable-item-list/DraggableItemList.mixin.d.ts +3 -0
  76. package/lib/src/shared/content-settings/components/draggable-item-list/DraggableItemList.mixin.js +19 -2
  77. package/lib/src/shared/content-settings/components/form-fields-field/FormFieldsField.mixin.js +18 -8
  78. package/lib/src/shared/content-settings/components/payment-config-field/PaymentConfigField.mixin.d.ts +64 -0
  79. package/lib/src/shared/content-settings/components/payment-config-field/PaymentConfigField.mixin.js +6 -0
  80. package/lib/src/shared/logo-settings/components/EditLogoSettings.mixin.d.ts +19 -0
  81. package/lib/src/shared/logo-settings/components/EditLogoSettings.mixin.js +11 -0
  82. package/lib/src/shared/logo-settings/components/LogoSettings.mixin.d.ts +10 -2
  83. package/lib/src/shared/logo-settings/store/editable-logo-store.d.ts +5 -1
  84. package/lib/src/shared/logo-settings/store/editable-logo-store.js +31 -0
  85. package/lib/src/shared/navigation-style-settings/components/navigation-style-settings/NavigationStyleSettings.mixin.js +10 -8
  86. package/lib/src/shared/navigation-style-settings/store/index.js +1 -12
  87. package/lib/src/shared/page-settings/components/page-settings/PageSettings.mixin.d.ts +24 -2
  88. package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.d.ts +10 -2
  89. package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.d.ts +23 -2
  90. package/lib/src/shared/side-bar/components/SideBarTabButton.mixin.d.ts +16 -0
  91. package/lib/src/shared/style-settings/components/StyleSettings.mixin.d.ts +23 -2
  92. package/lib/src/shared/template-settings/components/TemplatesSettings.mixin.d.ts +16 -0
  93. package/package.json +1 -1
  94. package/src/brand-page/components/button/Button.vue +2 -10
  95. package/src/brand-page/components/contact-form/ContactForm.vue +2 -2
  96. package/src/brand-page/components/navigation/navigation-side-menu/NavigationSideMenu.vue +4 -1
  97. package/src/brand-page/models/navigation-styles.model.ts +39 -1
  98. package/src/brand-page/utils/__snapshots__/migration.util.test.ts.snap +3 -3
  99. package/src/brand-page/utils/migration/migration-16.test.ts +319 -0
  100. package/src/brand-page/utils/migration/migration-16.ts +75 -0
  101. package/src/brand-page/utils/migration.util.ts +8 -0
  102. package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.ts +9 -0
  103. package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.vue +2 -3
  104. package/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-examples.ts +1 -0
  105. package/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.ts +5 -0
  106. package/src/brand-page-maker/components/color-palette/BpColorPalette.vue +9 -7
  107. package/src/brand-page-maker/components/cookie-collection/CookieSettings.vue +18 -17
  108. package/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.mixin.ts +13 -0
  109. package/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.vue +26 -3
  110. package/src/brand-page-maker/components/quick-link-bar/RedoButton.vue +66 -0
  111. package/src/brand-page-maker/components/quick-link-bar/UndoButton.vue +66 -0
  112. package/src/brand-page-maker/components/quick-link-bar/i18n/quick-link-bar.de-DE.json +6 -4
  113. package/src/brand-page-maker/components/quick-link-bar/i18n/quick-link-bar.es-ES.json +6 -4
  114. package/src/brand-page-maker/components/quick-link-bar/i18n/quick-link-bar.fr-CA.json +6 -4
  115. package/src/brand-page-maker/components/quick-link-bar/i18n/quick-link-bar.fr-FR.json +6 -4
  116. package/src/brand-page-maker/components/quick-link-bar/i18n/quick-link-bar.json +3 -1
  117. package/src/brand-page-maker/components/quick-link-bar/i18n/quick-link-bar.pt-BR.json +6 -4
  118. package/src/brand-page-maker/components/quick-link-bar/i18n/quick-link-bar.pt-PT.json +6 -4
  119. package/src/brand-page-maker/components/quick-link-bar/undo-redo-buttons.test.ts +116 -0
  120. package/src/brand-page-maker/components/save-contact/SaveContact.vue +12 -19
  121. package/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.ts +10 -0
  122. package/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.ts +24 -1
  123. package/src/brand-page-maker/composables/useEventTracker.ts +29 -0
  124. package/src/brand-page-maker/composables/useUndoRedoFlag.ts +30 -0
  125. package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.test.ts +377 -0
  126. package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.ts +371 -18
  127. package/src/brand-page-maker/stores/history/history-store.test.ts +1120 -0
  128. package/src/brand-page-maker/stores/history/history-store.ts +660 -0
  129. package/src/brand-page-maker/stores/logo-store/logo-store.ts +5 -0
  130. package/src/brand-page-maker/stores/user/user-store.ts +1 -0
  131. package/src/bundles/bundled-translations.de-DE.json +3 -1
  132. package/src/bundles/bundled-translations.es-ES.json +3 -1
  133. package/src/bundles/bundled-translations.fr-CA.json +3 -1
  134. package/src/bundles/bundled-translations.fr-FR.json +3 -1
  135. package/src/bundles/bundled-translations.json +3 -1
  136. package/src/bundles/bundled-translations.pt-BR.json +3 -1
  137. package/src/bundles/bundled-translations.pt-PT.json +3 -1
  138. package/src/constants/ui.ts +1 -0
  139. package/src/metadata-builder/builders/reorder-pages-builder.ts +80 -0
  140. package/src/shared/content-settings/components/color-field/ColorField.vue +10 -5
  141. package/src/shared/content-settings/components/content-settings/ContentSettings.mixin.ts +5 -0
  142. package/src/shared/content-settings/components/content-settings/ContentSettings.stories.ts +1 -0
  143. package/src/shared/content-settings/components/draggable-item-list/DraggableItemList.mixin.ts +19 -2
  144. package/src/shared/content-settings/components/draggable-item-list/DraggableItemList.vue +1 -1
  145. package/src/shared/content-settings/components/form-fields-field/FormFieldsField.mixin.ts +26 -10
  146. package/src/shared/content-settings/components/logo-selection-field/LogoSelection.vue +63 -48
  147. package/src/shared/content-settings/components/page-dropdown-field/PageDropdownField.vue +4 -0
  148. package/src/shared/content-settings/components/payment-config-field/PaymentConfigField.mixin.ts +7 -0
  149. package/src/shared/content-settings/components/text-field/TextField.vue +1 -0
  150. package/src/shared/content-settings/components/text-image-field/TextImageField.vue +33 -4
  151. package/src/shared/logo-settings/components/EditLogoSettings.mixin.ts +11 -0
  152. package/src/shared/logo-settings/store/editable-logo-store.ts +42 -1
  153. package/src/shared/navigation-style-settings/components/navigation-style-settings/NavigationStyleSettings.mixin.ts +17 -11
  154. package/src/shared/navigation-style-settings/components/navigation-style-settings/NavigationStyleSettings.vue +4 -1
  155. package/src/shared/navigation-style-settings/store/index.ts +1 -21
  156. package/lib/src/bundled-translations-B5Fkt3qd.js +0 -175
  157. package/lib/src/bundled-translations.de-DE-DpdVePM9.js +0 -175
  158. package/lib/src/bundled-translations.es-ES-BsIcrzZF.js +0 -175
  159. package/lib/src/bundled-translations.fr-CA-G1XCp2Qh.js +0 -175
  160. package/lib/src/bundled-translations.fr-FR-BdwLXOnB.js +0 -175
  161. package/lib/src/bundled-translations.pt-BR-Bvn5ePe7.js +0 -175
  162. package/lib/src/bundled-translations.pt-PT-CDtkb2k1.js +0 -175
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-BI3J4Mbk.js";
2
+ import { _ as t } from "./lib-BXbo_N88.js";
3
3
  const i = {}, h = {
4
4
  width: "275",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-BI3J4Mbk.js";
2
+ import { _ as t } from "./lib-BXbo_N88.js";
3
3
  const i = {}, h = {
4
4
  width: "251",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-BI3J4Mbk.js";
2
+ import { _ as t } from "./lib-BXbo_N88.js";
3
3
  const i = {}, h = {
4
4
  width: "250",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-BI3J4Mbk.js";
2
+ import { _ as t } from "./lib-BXbo_N88.js";
3
3
  const i = {}, h = {
4
4
  width: "237",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-BI3J4Mbk.js";
2
+ import { _ as t } from "./lib-BXbo_N88.js";
3
3
  const i = {}, h = {
4
4
  width: "237",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-BI3J4Mbk.js";
2
+ import { _ as t } from "./lib-BXbo_N88.js";
3
3
  const i = {}, h = {
4
4
  width: "263",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-BI3J4Mbk.js";
2
+ import { _ as t } from "./lib-BXbo_N88.js";
3
3
  const i = {}, h = {
4
4
  width: "263",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as e } from "./lib-BI3J4Mbk.js";
2
+ import { _ as e } from "./lib-BXbo_N88.js";
3
3
  const M = {}, Z = {
4
4
  width: "242",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as e } from "./lib-BI3J4Mbk.js";
2
+ import { _ as e } from "./lib-BXbo_N88.js";
3
3
  const i = {}, M = {
4
4
  width: "231",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as e } from "./lib-BI3J4Mbk.js";
2
+ import { _ as e } from "./lib-BXbo_N88.js";
3
3
  const M = {}, Z = {
4
4
  width: "230",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as e } from "./lib-BI3J4Mbk.js";
2
+ import { _ as e } from "./lib-BXbo_N88.js";
3
3
  const i = {}, l = {
4
4
  width: "216",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as e } from "./lib-BI3J4Mbk.js";
2
+ import { _ as e } from "./lib-BXbo_N88.js";
3
3
  const i = {}, l = {
4
4
  width: "216",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as M } from "./lib-BI3J4Mbk.js";
2
+ import { _ as M } from "./lib-BXbo_N88.js";
3
3
  const Z = {}, e = {
4
4
  width: "232",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as M } from "./lib-BI3J4Mbk.js";
2
+ import { _ as M } from "./lib-BXbo_N88.js";
3
3
  const Z = {}, e = {
4
4
  width: "232",
5
5
  height: "36",
@@ -8,6 +8,13 @@ export declare class NavigationMenuStyles {
8
8
  subNavBackgroundColor?: string;
9
9
  constructor(options: Partial<NavigationMenuStyles>, defaultOptions: Partial<NavigationMenuStyles>);
10
10
  }
11
+ export declare const getDefaultSubNavBackgroundColor: (defaultTextColor: string | undefined) => string | undefined;
12
+ /**
13
+ * The hamburger sub nav background colour is auto color-matched only when the
14
+ * user has not deliberately set it - i.e. it has no value or is transparent.
15
+ * Any explicit colour (a hex) or an already color-matched key is preserved.
16
+ */
17
+ export declare const isUnsetOrTransparentColor: (color: string | undefined | null) => boolean;
11
18
  type NavigationStylesOptionType = Partial<Omit<NavigationDesktop | NavigationMobile, 'hamburgerMenuStyle'>> & {
12
19
  hamburgerMenuStyle?: Partial<NavigationMenuStyles>;
13
20
  };
@@ -1,4 +1,4 @@
1
- import { DEFAULT_FONT_FAMILY_KEY, DEFAULT_FONT_STYLE, DEFAULT_TEXT_ALIGN, DEFAULT_TEXT_DECORATION, FONT_FAMILY_CONFIGS, FONT_SIZE_BODY, FONT_WEIGHT_NORMAL, defaultHamburgerNavigation, NAVIGATION_DISPLAY, } from '../constants';
1
+ import { DEFAULT_FONT_FAMILY_KEY, DEFAULT_FONT_STYLE, DEFAULT_TEXT_ALIGN, DEFAULT_TEXT_DECORATION, FONT_FAMILY_CONFIGS, FONT_SIZE_BODY, FONT_WEIGHT_NORMAL, STYLE_THEME_KEYS, defaultHamburgerNavigation, NAVIGATION_DISPLAY, } from '../constants';
2
2
  import { VIEWPORTS } from './index';
3
3
  import { TEXT_STYLE_TYPES } from './index';
4
4
  import cloneDeep from 'lodash.clonedeep';
@@ -15,6 +15,29 @@ export class NavigationMenuStyles {
15
15
  options.subNavBackgroundColor ?? defaultOptions.subNavBackgroundColor;
16
16
  }
17
17
  }
18
+ export const getDefaultSubNavBackgroundColor = (defaultTextColor) => {
19
+ if (defaultTextColor === STYLE_THEME_KEYS.LogoTextColor ||
20
+ defaultTextColor === STYLE_THEME_KEYS.LogoTextMultiColor) {
21
+ return STYLE_THEME_KEYS.LogoBackgroundColor;
22
+ }
23
+ if (defaultTextColor === STYLE_THEME_KEYS.LogoBackgroundColor ||
24
+ defaultTextColor === STYLE_THEME_KEYS.LogoBackgroundMultiColor) {
25
+ return STYLE_THEME_KEYS.LogoTextColor;
26
+ }
27
+ return undefined;
28
+ };
29
+ /**
30
+ * The hamburger sub nav background colour is auto color-matched only when the
31
+ * user has not deliberately set it - i.e. it has no value or is transparent.
32
+ * Any explicit colour (a hex) or an already color-matched key is preserved.
33
+ */
34
+ export const isUnsetOrTransparentColor = (color) => {
35
+ if (color == null) {
36
+ return true;
37
+ }
38
+ const normalised = color.trim().toLowerCase();
39
+ return normalised === '' || normalised === 'transparent';
40
+ };
18
41
  class NavigationStyles {
19
42
  displayType;
20
43
  renderAfterLogo;
@@ -79,7 +102,7 @@ class NavigationStyles {
79
102
  color: theme?.secondaryColor,
80
103
  backgroundColor: theme?.primaryColor,
81
104
  },
82
- subNavBackgroundColor: theme?.secondaryColor,
105
+ // No sub nav default: a hex here defeats migration-16's colour match.
83
106
  });
84
107
  }
85
108
  }
@@ -0,0 +1,2 @@
1
+ import type { MigrationData, MigrationOptions } from '../migration.util';
2
+ export declare const migration16: (migrationResult: MigrationData, options: MigrationOptions) => Promise<MigrationData>;
@@ -0,0 +1,47 @@
1
+ import { getDefaultSubNavBackgroundColor, isUnsetOrTransparentColor, } from '../../models';
2
+ /**
3
+ * Migration 16: default the sub nav background colour to "colour matched" (the opposite
4
+ * logo colour) when the menu font is itself colour matched and the sub nav has no
5
+ * deliberate value. The default is applied ONCE, when content is first materialised — a
6
+ * template load, the create-draft flow, or the admin maker (isUserDraft === false). An
7
+ * existing user draft already carries its resolved value (including a deliberate
8
+ * transparent/explicit choice), so it is left untouched.
9
+ */
10
+ // Hamburger keeps its styles on hamburgerMenuStyle; every other nav type uses the
11
+ // top-level navigation styles. (This only locates the styles - the rule itself is uniform.)
12
+ const isHamburger = (displayType) => displayType.includes('hamburger');
13
+ const applyDefaultSubNavColorMatch = (navigation) => {
14
+ if (!navigation?.displayType) {
15
+ return;
16
+ }
17
+ let menuStyles;
18
+ if (isHamburger(navigation.displayType)) {
19
+ navigation.hamburgerMenuStyle =
20
+ navigation.hamburgerMenuStyle ?? {};
21
+ menuStyles = navigation.hamburgerMenuStyle;
22
+ }
23
+ else {
24
+ menuStyles = navigation;
25
+ }
26
+ // Leave a deliberately-set colour (an explicit hex or an already colour-matched key).
27
+ if (!isUnsetOrTransparentColor(menuStyles.subNavBackgroundColor)) {
28
+ return;
29
+ }
30
+ // Only when the menu font is itself colour matched: take the opposite logo colour
31
+ // (the helper returns undefined when the font is not colour matched).
32
+ const colorMatchedSubNav = getDefaultSubNavBackgroundColor(menuStyles.defaultButtonStyle?.color);
33
+ if (colorMatchedSubNav) {
34
+ menuStyles.subNavBackgroundColor = colorMatchedSubNav;
35
+ }
36
+ };
37
+ export const migration16 = async (migrationResult, options) => {
38
+ // Skip user drafts (isUserDraft === true) — they already have their value. Only
39
+ // templates (isUserDraft === false) get the sub nav default.
40
+ if (options.isUserDraft) {
41
+ return migrationResult;
42
+ }
43
+ const { brandPageModel } = migrationResult;
44
+ applyDefaultSubNavColorMatch(brandPageModel.pageHeaderDesktop?.navigation);
45
+ applyDefaultSubNavColorMatch(brandPageModel.pageHeaderMobile?.navigation);
46
+ return migrationResult;
47
+ };
@@ -18,6 +18,7 @@ import { migration12_1 } from './migration/migration-12_1';
18
18
  import { migration13 } from './migration/migration-13';
19
19
  import { migration14 } from './migration/migration-14';
20
20
  import { migration15 } from './migration/migration-15';
21
+ import { migration16 } from './migration/migration-16';
21
22
  const MIGRATION_TABLE = [
22
23
  {
23
24
  version: 1,
@@ -115,6 +116,12 @@ const MIGRATION_TABLE = [
115
116
  migrateFn: migration15,
116
117
  description: 'Adding default mediaOverlayStyle to background styles',
117
118
  },
119
+ {
120
+ version: 16,
121
+ migrateFn: migration16,
122
+ runAlways: true,
123
+ description: 'Default sub nav background color to color match on for TAB_2 and hamburger navs depending on font color only on first load flow',
124
+ },
118
125
  ];
119
126
  export const GetLatestModelVersion = () => Math.max(...MIGRATION_TABLE.map((x) => x.version));
120
127
  export const migrateBrandPageModel = async (brandPageModel, options) => {
@@ -107,16 +107,21 @@ declare const _default: import("vue").DefineComponent<{}, {
107
107
  hideChangeTemplateConfirmModal(): void;
108
108
  onBackgroundChanged(): void;
109
109
  onChangeTemplateConfirmModalCancel(): void;
110
- onChangeTemplateConfirmModalConfirm(): void;
110
+ onChangeTemplateConfirmModalConfirm(): Promise<void>;
111
111
  onContentChanged(): void;
112
112
  onStyleChanged(): void;
113
- onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): void;
113
+ onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): Promise<void>;
114
114
  setSelectedTabName(payload: any): void;
115
115
  showNextNotificationMessage(): Promise<void>;
116
116
  updateContent<TContent extends import("@brand-page/models").Content, P extends {
117
117
  id: string;
118
118
  content: TContent;
119
119
  }>(payload: P): Promise<void>;
120
+ _captureTemplateSwitchIfEnabled(): void;
121
+ applyHistorySnapshot(snapshot: import("@brand-page/models").BrandPageModel, activePageId?: string | undefined, logoEditsStr?: string | undefined): Promise<void>;
122
+ _syncLogoSettingsFromSnapshot(snapshot: import("@brand-page/models").BrandPageModel, logoEditsStr?: string | undefined): Promise<void>;
123
+ _navigateToActivePage(activePageId?: string | undefined): void;
124
+ _fallbackSidebarIfSelectedContentMissing(snapshot: import("@brand-page/models").BrandPageModel): void;
120
125
  export(): import("@brand-page/models").BrandPageModel;
121
126
  setBrandPageType({ brandPageType }: {
122
127
  brandPageType: "default" | "brandSite" | "brandContact";
@@ -152,16 +152,21 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
152
152
  hideChangeTemplateConfirmModal(): void;
153
153
  onBackgroundChanged(): void;
154
154
  onChangeTemplateConfirmModalCancel(): void;
155
- onChangeTemplateConfirmModalConfirm(): void;
155
+ onChangeTemplateConfirmModalConfirm(): Promise<void>;
156
156
  onContentChanged(): void;
157
157
  onStyleChanged(): void;
158
- onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): void;
158
+ onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): Promise<void>;
159
159
  setSelectedTabName(payload: any): void;
160
160
  showNextNotificationMessage(): Promise<void>;
161
161
  updateContent<TContent extends import("@brand-page").Content, P extends {
162
162
  id: string;
163
163
  content: TContent;
164
164
  }>(payload: P): Promise<void>;
165
+ _captureTemplateSwitchIfEnabled(): void;
166
+ applyHistorySnapshot(snapshot: import("@brand-page").BrandPageModel, activePageId?: string | undefined, logoEditsStr?: string | undefined): Promise<void>;
167
+ _syncLogoSettingsFromSnapshot(snapshot: import("@brand-page").BrandPageModel, logoEditsStr?: string | undefined): Promise<void>;
168
+ _navigateToActivePage(activePageId?: string | undefined): void;
169
+ _fallbackSidebarIfSelectedContentMissing(snapshot: import("@brand-page").BrandPageModel): void;
165
170
  export(): import("@brand-page").BrandPageModel;
166
171
  setBrandPageType({ brandPageType }: {
167
172
  brandPageType: "default" | "brandSite" | "brandContact";
@@ -11,6 +11,8 @@ import { navigateToPageByPageId } from '../../routing';
11
11
  import { useBrandPageContainerStore } from '@brand-page-maker/stores';
12
12
  import { UI_DEVICE_MODES, UI_SCREENSIZE_MODES, } from '@shared/models';
13
13
  import { useBrandPageMakerStore, useBrandPageMakerUserStore, useLocalisedRouteStore, useUiStore, useSnapshotStore, useVideoStore, } from '@brand-page-maker/stores';
14
+ import { useHistoryStore } from '@brand-page-maker/stores/history/history-store';
15
+ import { useUndoRedoFlag } from '@brand-page-maker/composables/useUndoRedoFlag';
14
16
  import { useUiContentSettingsStore } from '@shared/content-settings/store';
15
17
  import { useUiTemplateSettingsStore } from '@shared/template-settings/store';
16
18
  import { useUiPageSettingsStore } from '@shared/page-settings/store';
@@ -189,6 +191,12 @@ export default defineComponent({
189
191
  }
190
192
  // Mark brand page as fully loaded
191
193
  this.brandPageMakerStore.setIsBrandPageLoaded(true);
194
+ // Capture baseline for undo/redo when the feature is active for this
195
+ // session — see useUndoRedoFlag.ts for the gate (LaunchDarkly flag +
196
+ // brand-site + non-admin maker).
197
+ if (useUndoRedoFlag().value) {
198
+ useHistoryStore().captureBaseline();
199
+ }
192
200
  this.$emit(EVENTS.Initialised);
193
201
  },
194
202
  mounted() {
@@ -96,16 +96,21 @@ declare const _default: import("vue").DefineComponent<{}, {
96
96
  hideChangeTemplateConfirmModal(): void;
97
97
  onBackgroundChanged(): void;
98
98
  onChangeTemplateConfirmModalCancel(): void;
99
- onChangeTemplateConfirmModalConfirm(): void;
99
+ onChangeTemplateConfirmModalConfirm(): Promise<void>;
100
100
  onContentChanged(): void;
101
101
  onStyleChanged(): void;
102
- onTemplateSelected(payload: import("../../stores").OnTemplateSelectedPayload): void;
102
+ onTemplateSelected(payload: import("../../stores").OnTemplateSelectedPayload): Promise<void>;
103
103
  setSelectedTabName(payload: any): void;
104
104
  showNextNotificationMessage(): Promise<void>;
105
105
  updateContent<TContent extends import("../../../lib").Content, P extends {
106
106
  id: string;
107
107
  content: TContent;
108
108
  }>(payload: P): Promise<void>;
109
+ _captureTemplateSwitchIfEnabled(): void;
110
+ applyHistorySnapshot(snapshot: import("../../../lib").BrandPageModel, activePageId?: string | undefined, logoEditsStr?: string | undefined): Promise<void>;
111
+ _syncLogoSettingsFromSnapshot(snapshot: import("../../../lib").BrandPageModel, logoEditsStr?: string | undefined): Promise<void>;
112
+ _navigateToActivePage(activePageId?: string | undefined): void;
113
+ _fallbackSidebarIfSelectedContentMissing(snapshot: import("../../../lib").BrandPageModel): void;
109
114
  export(): import("../../../lib").BrandPageModel;
110
115
  setBrandPageType({ brandPageType }: {
111
116
  brandPageType: "default" | "brandSite" | "brandContact";
@@ -53,6 +53,7 @@ export const userFeatures = {
53
53
  canUseGettyVideos: false,
54
54
  canUseGoogleAdsense: false,
55
55
  googleAdsenseEnabled: false,
56
+ canUseUndoRedo: false,
56
57
  };
57
58
  export const BRAND_PAGE = {
58
59
  styles: {
@@ -602,16 +602,21 @@ declare const _default: import("vue").DefineComponent<{}, {
602
602
  hideChangeTemplateConfirmModal(): void;
603
603
  onBackgroundChanged(): void;
604
604
  onChangeTemplateConfirmModalCancel(): void;
605
- onChangeTemplateConfirmModalConfirm(): void;
605
+ onChangeTemplateConfirmModalConfirm(): Promise<void>;
606
606
  onContentChanged(): void;
607
607
  onStyleChanged(): void;
608
- onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): void;
608
+ onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): Promise<void>;
609
609
  setSelectedTabName(payload: any): void;
610
610
  showNextNotificationMessage(): Promise<void>;
611
611
  updateContent<TContent extends Content, P extends {
612
612
  id: string;
613
613
  content: TContent;
614
614
  }>(payload: P): Promise<void>;
615
+ _captureTemplateSwitchIfEnabled(): void;
616
+ applyHistorySnapshot(snapshot: import("@brand-page").BrandPageModel, activePageId?: string | undefined, logoEditsStr?: string | undefined): Promise<void>;
617
+ _syncLogoSettingsFromSnapshot(snapshot: import("@brand-page").BrandPageModel, logoEditsStr?: string | undefined): Promise<void>;
618
+ _navigateToActivePage(activePageId?: string | undefined): void;
619
+ _fallbackSidebarIfSelectedContentMissing(snapshot: import("@brand-page").BrandPageModel): void;
615
620
  export(): import("@brand-page").BrandPageModel;
616
621
  setBrandPageType({ brandPageType }: {
617
622
  brandPageType: "default" | "brandSite" | "brandContact";
@@ -1046,6 +1051,22 @@ declare const _default: import("vue").DefineComponent<{}, {
1046
1051
  }>;
1047
1052
  eventTracker: {
1048
1053
  sendShippingToggleEvent: (isEnabled: boolean) => void;
1054
+ sendUndoEvent: (props: {
1055
+ entries_count: number;
1056
+ actor: string | undefined;
1057
+ }) => void;
1058
+ sendRedoEvent: (props: {
1059
+ entries_count: number;
1060
+ actor: string | undefined;
1061
+ }) => void;
1062
+ sendHistoryCappedEvent: (props: {
1063
+ entries_count: number;
1064
+ size_bytes: number;
1065
+ }) => void;
1066
+ sendHistoryOversizedEvent: (props: {
1067
+ attempted_bytes: number;
1068
+ source: string;
1069
+ }) => void;
1049
1070
  sendSaveContactEvent: () => void;
1050
1071
  sendStartForFreeEvent: () => void;
1051
1072
  sendFooterLinkClickEvent: (linkType: "watermark_logo" | "create_your_website") => void;
@@ -1150,6 +1171,70 @@ declare const _default: import("vue").DefineComponent<{}, {
1150
1171
  }): Promise<void>;
1151
1172
  toggleLogoBackground(): Promise<any>;
1152
1173
  }>;
1174
+ historyStore: import("pinia").Store<"history", Pick<{
1175
+ entries: import("vue").ShallowRef<import("@brand-page-maker/stores/history/history-store").HistoryEntry[], import("@brand-page-maker/stores/history/history-store").HistoryEntry[]>;
1176
+ currentIndex: import("vue").Ref<number, number>;
1177
+ isApplyingSnapshot: import("vue").Ref<boolean, boolean>;
1178
+ baselineCaptured: import("vue").Ref<boolean, boolean>;
1179
+ canUndo: import("vue").ComputedRef<boolean>;
1180
+ canRedo: import("vue").ComputedRef<boolean>;
1181
+ captureBaseline: () => void;
1182
+ capture: (args: {
1183
+ source: "manual_edit" | "template_switch" | "ai_changeset" | "rich_text";
1184
+ actor: "user" | "ai_builder";
1185
+ label?: string | undefined;
1186
+ }) => "committed" | "oversized" | "noop" | "skipped";
1187
+ captureTemplateSwitch: (label?: string | undefined) => "committed" | "oversized" | "noop" | "skipped";
1188
+ captureAiChangeset: (label?: string | undefined) => "committed" | "oversized" | "noop" | "skipped";
1189
+ mergeNextMutation: () => void;
1190
+ undo: () => Promise<void>;
1191
+ redo: () => Promise<void>;
1192
+ reset: () => void;
1193
+ getCurrentSizeBytes: () => number;
1194
+ getCurrentEntryCount: () => number;
1195
+ }, "entries" | "currentIndex" | "isApplyingSnapshot" | "baselineCaptured">, Pick<{
1196
+ entries: import("vue").ShallowRef<import("@brand-page-maker/stores/history/history-store").HistoryEntry[], import("@brand-page-maker/stores/history/history-store").HistoryEntry[]>;
1197
+ currentIndex: import("vue").Ref<number, number>;
1198
+ isApplyingSnapshot: import("vue").Ref<boolean, boolean>;
1199
+ baselineCaptured: import("vue").Ref<boolean, boolean>;
1200
+ canUndo: import("vue").ComputedRef<boolean>;
1201
+ canRedo: import("vue").ComputedRef<boolean>;
1202
+ captureBaseline: () => void;
1203
+ capture: (args: {
1204
+ source: "manual_edit" | "template_switch" | "ai_changeset" | "rich_text";
1205
+ actor: "user" | "ai_builder";
1206
+ label?: string | undefined;
1207
+ }) => "committed" | "oversized" | "noop" | "skipped";
1208
+ captureTemplateSwitch: (label?: string | undefined) => "committed" | "oversized" | "noop" | "skipped";
1209
+ captureAiChangeset: (label?: string | undefined) => "committed" | "oversized" | "noop" | "skipped";
1210
+ mergeNextMutation: () => void;
1211
+ undo: () => Promise<void>;
1212
+ redo: () => Promise<void>;
1213
+ reset: () => void;
1214
+ getCurrentSizeBytes: () => number;
1215
+ getCurrentEntryCount: () => number;
1216
+ }, "canUndo" | "canRedo">, Pick<{
1217
+ entries: import("vue").ShallowRef<import("@brand-page-maker/stores/history/history-store").HistoryEntry[], import("@brand-page-maker/stores/history/history-store").HistoryEntry[]>;
1218
+ currentIndex: import("vue").Ref<number, number>;
1219
+ isApplyingSnapshot: import("vue").Ref<boolean, boolean>;
1220
+ baselineCaptured: import("vue").Ref<boolean, boolean>;
1221
+ canUndo: import("vue").ComputedRef<boolean>;
1222
+ canRedo: import("vue").ComputedRef<boolean>;
1223
+ captureBaseline: () => void;
1224
+ capture: (args: {
1225
+ source: "manual_edit" | "template_switch" | "ai_changeset" | "rich_text";
1226
+ actor: "user" | "ai_builder";
1227
+ label?: string | undefined;
1228
+ }) => "committed" | "oversized" | "noop" | "skipped";
1229
+ captureTemplateSwitch: (label?: string | undefined) => "committed" | "oversized" | "noop" | "skipped";
1230
+ captureAiChangeset: (label?: string | undefined) => "committed" | "oversized" | "noop" | "skipped";
1231
+ mergeNextMutation: () => void;
1232
+ undo: () => Promise<void>;
1233
+ redo: () => Promise<void>;
1234
+ reset: () => void;
1235
+ getCurrentSizeBytes: () => number;
1236
+ getCurrentEntryCount: () => number;
1237
+ }, "reset" | "undo" | "redo" | "captureBaseline" | "capture" | "captureTemplateSwitch" | "captureAiChangeset" | "mergeNextMutation" | "getCurrentSizeBytes" | "getCurrentEntryCount">>;
1153
1238
  }, {
1154
1239
  isDraggingContent: boolean;
1155
1240
  isContentSelected: boolean;
@@ -15,6 +15,7 @@ import { transformToRTE, RTE_ALLOWED_SECTION_TYPES, } from '@brand-page-maker/ut
15
15
  import { useExternalRichTextEditor } from '@brand-page-maker/composables/rich-text-editor/useRichTextEditor';
16
16
  import { useUiStyleSettingsStore } from '@shared/style-settings/store';
17
17
  import { STYLE_THEME_KEYS } from '@brand-page/constants';
18
+ import { useHistoryStore } from '@brand-page-maker/stores/history/history-store';
18
19
  export default defineComponent({
19
20
  mixins: [PageMixin],
20
21
  setup() {
@@ -29,6 +30,7 @@ export default defineComponent({
29
30
  const eventTracker = useEventTracker();
30
31
  const { externalEditor } = useExternalRichTextEditor();
31
32
  const styleSettingsStore = useUiStyleSettingsStore();
33
+ const historyStore = useHistoryStore();
32
34
  return {
33
35
  items: computed(() => contentSettingsStore.items),
34
36
  selectedItemId: computed(() => contentSettingsStore.selectedItemId),
@@ -51,6 +53,7 @@ export default defineComponent({
51
53
  eventTracker,
52
54
  externalEditor,
53
55
  styleSettingsStore,
56
+ historyStore,
54
57
  };
55
58
  },
56
59
  data() {
@@ -214,6 +217,8 @@ export default defineComponent({
214
217
  selectedItem = currentItem.settings.content;
215
218
  }
216
219
  }
220
+ // RTE rewrap on section selection — fold into current head.
221
+ this.historyStore.mergeNextMutation();
217
222
  transformToRTE(this.pageSettingsStore, this.externalEditor, this.styleSettingsStore, selectedItem);
218
223
  }
219
224
  if (this.selectEventDebounceHandler) {
@@ -102,16 +102,21 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
102
102
  hideChangeTemplateConfirmModal(): void;
103
103
  onBackgroundChanged(): void;
104
104
  onChangeTemplateConfirmModalCancel(): void;
105
- onChangeTemplateConfirmModalConfirm(): void;
105
+ onChangeTemplateConfirmModalConfirm(): Promise<void>;
106
106
  onContentChanged(): void;
107
107
  onStyleChanged(): void;
108
- onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): void;
108
+ onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): Promise<void>;
109
109
  setSelectedTabName(payload: any): void;
110
110
  showNextNotificationMessage(): Promise<void>;
111
111
  updateContent<TContent extends import("../../../brand-page").Content, P extends {
112
112
  id: string;
113
113
  content: TContent;
114
114
  }>(payload: P): Promise<void>;
115
+ _captureTemplateSwitchIfEnabled(): void;
116
+ applyHistorySnapshot(snapshot: import("../../../brand-page").BrandPageModel, activePageId?: string | undefined, logoEditsStr?: string | undefined): Promise<void>;
117
+ _syncLogoSettingsFromSnapshot(snapshot: import("../../../brand-page").BrandPageModel, logoEditsStr?: string | undefined): Promise<void>;
118
+ _navigateToActivePage(activePageId?: string | undefined): void;
119
+ _fallbackSidebarIfSelectedContentMissing(snapshot: import("../../../brand-page").BrandPageModel): void;
115
120
  export(): import("../../../brand-page").BrandPageModel;
116
121
  setBrandPageType({ brandPageType }: {
117
122
  brandPageType: "default" | "brandSite" | "brandContact";
@@ -291,9 +291,12 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
291
291
  pushManageWebPageUpdateSensitiveContentClickEvent(): Promise<void>;
292
292
  pushManageWebPageUnpublishClickEvent(): Promise<void>;
293
293
  }>;
294
+ undoRedoEnabled: import("vue").ComputedRef<boolean>;
294
295
  }, {
295
296
  copied: boolean;
296
297
  }, {
298
+ isPublished(): boolean;
299
+ shouldShowBar(): boolean;
297
300
  brandPageUrl(): string;
298
301
  copyButtonLabel(): string;
299
302
  }, {
@@ -1,6 +1,7 @@
1
1
  import { defineComponent } from 'vue';
2
2
  import { CUSTOM_DOMAIN_STATUSES } from '@brand-page-maker/constants';
3
3
  import { useBrandPageContainerStore, useEventManagerStore, } from '@brand-page-maker/stores';
4
+ import { useUndoRedoFlag } from '@brand-page-maker/composables/useUndoRedoFlag';
4
5
  import { quickLinkBarTr } from '@src/composables/useTranslate';
5
6
  export default defineComponent({
6
7
  props: {
@@ -17,6 +18,7 @@ export default defineComponent({
17
18
  return {
18
19
  brandPageContainerStore: useBrandPageContainerStore(),
19
20
  eventManagerStore: useEventManagerStore(),
21
+ undoRedoEnabled: useUndoRedoFlag(),
20
22
  };
21
23
  },
22
24
  data() {
@@ -25,6 +27,15 @@ export default defineComponent({
25
27
  };
26
28
  },
27
29
  computed: {
30
+ isPublished() {
31
+ return this.brandPageContainerStore.isPublished;
32
+ },
33
+ // Only render the bar when at least one inner cluster has something to
34
+ // show. Otherwise we'd render an empty white strip — e.g. on an
35
+ // unpublished page with the undo flag off.
36
+ shouldShowBar() {
37
+ return Boolean(this.undoRedoEnabled) || this.isPublished;
38
+ },
28
39
  brandPageUrl() {
29
40
  if (this.brandPageContainerStore.isCustomDomainEnabled &&
30
41
  this.brandPageContainerStore.customDomain &&
@@ -380,16 +380,21 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
380
380
  hideChangeTemplateConfirmModal(): void;
381
381
  onBackgroundChanged(): void;
382
382
  onChangeTemplateConfirmModalCancel(): void;
383
- onChangeTemplateConfirmModalConfirm(): void;
383
+ onChangeTemplateConfirmModalConfirm(): Promise<void>;
384
384
  onContentChanged(): void;
385
385
  onStyleChanged(): void;
386
- onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): void;
386
+ onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): Promise<void>;
387
387
  setSelectedTabName(payload: any): void;
388
388
  showNextNotificationMessage(): Promise<void>;
389
389
  updateContent<TContent extends import("../../../brand-page").Content, P extends {
390
390
  id: string;
391
391
  content: TContent;
392
392
  }>(payload: P): Promise<void>;
393
+ _captureTemplateSwitchIfEnabled(): void;
394
+ applyHistorySnapshot(snapshot: import("../../../brand-page").BrandPageModel, activePageId?: string | undefined, logoEditsStr?: string | undefined): Promise<void>;
395
+ _syncLogoSettingsFromSnapshot(snapshot: import("../../../brand-page").BrandPageModel, logoEditsStr?: string | undefined): Promise<void>;
396
+ _navigateToActivePage(activePageId?: string | undefined): void;
397
+ _fallbackSidebarIfSelectedContentMissing(snapshot: import("../../../brand-page").BrandPageModel): void;
393
398
  export(): import("../../../brand-page").BrandPageModel;
394
399
  setBrandPageType({ brandPageType }: {
395
400
  brandPageType: "default" | "brandSite" | "brandContact";
@@ -381,16 +381,21 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
381
381
  hideChangeTemplateConfirmModal(): void;
382
382
  onBackgroundChanged(): void;
383
383
  onChangeTemplateConfirmModalCancel(): void;
384
- onChangeTemplateConfirmModalConfirm(): void;
384
+ onChangeTemplateConfirmModalConfirm(): Promise<void>;
385
385
  onContentChanged(): void;
386
386
  onStyleChanged(): void;
387
- onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): void;
387
+ onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): Promise<void>;
388
388
  setSelectedTabName(payload: any): void;
389
389
  showNextNotificationMessage(): Promise<void>;
390
390
  updateContent<TContent extends import("../../../brand-page").Content, P extends {
391
391
  id: string;
392
392
  content: TContent;
393
393
  }>(payload: P): Promise<void>;
394
+ _captureTemplateSwitchIfEnabled(): void;
395
+ applyHistorySnapshot(snapshot: import("../../../brand-page").BrandPageModel, activePageId?: string | undefined, logoEditsStr?: string | undefined): Promise<void>;
396
+ _syncLogoSettingsFromSnapshot(snapshot: import("../../../brand-page").BrandPageModel, logoEditsStr?: string | undefined): Promise<void>;
397
+ _navigateToActivePage(activePageId?: string | undefined): void;
398
+ _fallbackSidebarIfSelectedContentMissing(snapshot: import("../../../brand-page").BrandPageModel): void;
394
399
  export(): import("../../../brand-page").BrandPageModel;
395
400
  setBrandPageType({ brandPageType }: {
396
401
  brandPageType: "default" | "brandSite" | "brandContact";