@designcrowd/library.brand-page 6.1.17-ast-optional-button-3 → 6.1.17-ast-duplicate

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 (154) hide show
  1. package/lib/src/{CreatedOnBrandCrowd-de-de-Cu_ukOxI.js → CreatedOnBrandCrowd-de-de-Bz5w6xY7.js} +1 -1
  2. package/lib/src/{CreatedOnBrandCrowd-en-us-BK04pmL9.js → CreatedOnBrandCrowd-en-us-CcDoBjme.js} +1 -1
  3. package/lib/src/{CreatedOnBrandCrowd-es-es-DfREN5ib.js → CreatedOnBrandCrowd-es-es-D8e1mbkt.js} +1 -1
  4. package/lib/src/{CreatedOnBrandCrowd-fr-fr-C0_zl1cL.js → CreatedOnBrandCrowd-fr-ca-ZJ_zEHZC.js} +1 -1
  5. package/lib/src/{CreatedOnBrandCrowd-fr-ca-C0_zl1cL.js → CreatedOnBrandCrowd-fr-fr-ZJ_zEHZC.js} +1 -1
  6. package/lib/src/{CreatedOnBrandCrowd-pt-pt-CKQK6zH9.js → CreatedOnBrandCrowd-pt-br-DxPXv2g2.js} +1 -1
  7. package/lib/src/{CreatedOnBrandCrowd-pt-br-CKQK6zH9.js → CreatedOnBrandCrowd-pt-pt-DxPXv2g2.js} +1 -1
  8. package/lib/src/{CreatedOnDcom-de-de-yrdfxkUi.js → CreatedOnDcom-de-de-C2RXJmc_.js} +1 -1
  9. package/lib/src/{CreatedOnDcom-en-us-DanUrMxL.js → CreatedOnDcom-en-us-D9edHsj5.js} +1 -1
  10. package/lib/src/{CreatedOnDcom-es-es-D8d_PqxB.js → CreatedOnDcom-es-es-i4YR-7lH.js} +1 -1
  11. package/lib/src/{CreatedOnDcom-fr-ca-C1-28hQH.js → CreatedOnDcom-fr-ca-C2mq_W_H.js} +1 -1
  12. package/lib/src/{CreatedOnDcom-fr-fr-DKm8kfeQ.js → CreatedOnDcom-fr-fr-DD0VktYV.js} +1 -1
  13. package/lib/src/{CreatedOnDcom-pt-br-DQN8j45I.js → CreatedOnDcom-pt-br-BgVjPCIg.js} +1 -1
  14. package/lib/src/{CreatedOnDcom-pt-pt-Bq9n3MeJ.js → CreatedOnDcom-pt-pt-DqHGGZby.js} +1 -1
  15. package/lib/src/brand-page/components/navigation/navigation-side-menu/NavigationSideMenu.mixin.d.ts +2 -16
  16. package/lib/src/brand-page/components/navigation/navigation-side-menu/NavigationSideMenu.mixin.js +0 -17
  17. package/lib/src/brand-page/components/page/Page.mixin.d.ts +1 -2
  18. package/lib/src/brand-page/components/page/Page.mixin.js +7 -12
  19. package/lib/src/brand-page/components/page-header/HeaderLayout.stories.d.ts +0 -1
  20. package/lib/src/brand-page/components/page-header/HeaderLayout.stories.js +0 -9
  21. package/lib/src/brand-page/components/page-header/PageHeader.mixin.d.ts +1 -3
  22. package/lib/src/brand-page/components/page-header/PageHeader.mixin.js +4 -10
  23. package/lib/src/brand-page/constants/sections/header-display.constants.d.ts +0 -3
  24. package/lib/src/brand-page/constants/sections/header-display.constants.js +0 -15
  25. package/lib/src/brand-page/models/index.d.ts +0 -12
  26. package/lib/src/brand-page/models/index.js +0 -4
  27. package/lib/src/brand-page/utils/button.util.d.ts +0 -5
  28. package/lib/src/brand-page/utils/button.util.js +0 -4
  29. package/lib/src/brand-page/utils/context.util.d.ts +0 -1
  30. package/lib/src/brand-page/utils/context.util.js +0 -9
  31. package/lib/src/brand-page/utils/route.util.d.ts +0 -1
  32. package/lib/src/brand-page/utils/route.util.js +0 -9
  33. package/lib/src/brand-page/utils/view-model.util.js +1 -53
  34. package/lib/src/brand-page/view-models.d.ts +1 -3
  35. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.d.ts +8 -2
  36. package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.d.ts +6 -2
  37. package/lib/src/brand-page-maker/composables/useEventTracker.d.ts +3 -0
  38. package/lib/src/brand-page-maker/composables/useEventTracker.js +11 -0
  39. package/lib/src/brand-page-maker/stores/ai-checkpoint/ai-checkpoint-store.d.ts +16 -1642
  40. package/lib/src/brand-page-maker/validators/section-button.validator.d.ts +1 -3
  41. package/lib/src/{bundled-translations-KY0aSmMp.js → bundled-translations-CFsLTrMp.js} +17 -17
  42. package/lib/src/{bundled-translations.de-DE-BIFi4bYj.js → bundled-translations.de-DE-FhH2H_rd.js} +9 -9
  43. package/lib/src/{bundled-translations.es-ES-CHlKuPLO.js → bundled-translations.es-ES-_ZExxMi7.js} +5 -5
  44. package/lib/src/{bundled-translations.fr-CA-DR1fvm8e.js → bundled-translations.fr-CA-Tg-ODIiC.js} +1 -1
  45. package/lib/src/{bundled-translations.fr-FR-DnpWVIQg.js → bundled-translations.fr-FR-C0sU51Mz.js} +9 -9
  46. package/lib/src/{bundled-translations.pt-BR-p8szTOiT.js → bundled-translations.pt-BR-MYFIhA4u.js} +17 -17
  47. package/lib/src/{bundled-translations.pt-PT-DEk39NhW.js → bundled-translations.pt-PT-DeUBSzCB.js} +22 -22
  48. package/lib/src/bundles/bundled-translations.de-DE.json +1 -6
  49. package/lib/src/bundles/bundled-translations.es-ES.json +1 -6
  50. package/lib/src/bundles/bundled-translations.fr-CA.json +1 -6
  51. package/lib/src/bundles/bundled-translations.fr-FR.json +1 -6
  52. package/lib/src/bundles/bundled-translations.json +4 -7
  53. package/lib/src/bundles/bundled-translations.pt-BR.json +1 -6
  54. package/lib/src/bundles/bundled-translations.pt-PT.json +1 -6
  55. package/lib/src/composables/useTranslate.d.ts +1 -1
  56. package/lib/src/composables/useTranslate.js +1 -1
  57. package/lib/src/css/library.brand-page-brandCrowd.min.css +149 -401
  58. package/lib/src/css/library.brand-page-brandPage.min.css +149 -402
  59. package/lib/src/css/library.brand-page-designCom.min.css +149 -401
  60. package/lib/src/css/library.brand-page-preview.min.css +149 -401
  61. package/lib/src/index.mjs +2 -2
  62. package/lib/src/{lib-6Z0OQVEM.js → lib-Dn6SsFX-.js} +30394 -30853
  63. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.d.ts +9 -2
  64. package/lib/src/shared/content-settings/components/content-settings/ReplaceImageSettingsForContent.mixin.d.ts +6 -1
  65. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.d.ts +1 -0
  66. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.d.ts +5 -1
  67. package/lib/src/shared/content-settings/components/payment-config-field/PaymentConfigField.mixin.d.ts +5 -1
  68. package/lib/src/shared/ecommerce-settings/util/refreshDuplicatedMetadata.d.ts +14 -0
  69. package/lib/src/shared/ecommerce-settings/util/refreshDuplicatedMetadata.js +15 -2
  70. package/lib/src/shared/logo-settings/components/EditLogoSettings.mixin.d.ts +1 -0
  71. package/lib/src/shared/logo-settings/components/LogoSettings.mixin.d.ts +5 -1
  72. package/lib/src/shared/page-navigation/store/page-navigation-store.d.ts +3 -1
  73. package/lib/src/shared/page-navigation/store/page-navigation-store.js +27 -8
  74. package/lib/src/shared/page-settings/components/delete-page-modal/DeletePageModal.mixin.d.ts +1 -1
  75. package/lib/src/shared/page-settings/components/new-page-modal/NewPageModal.mixin.d.ts +8 -2
  76. package/lib/src/shared/page-settings/components/page-settings/PageSettings.mixin.d.ts +12 -190
  77. package/lib/src/shared/page-settings/components/page-settings/PageSettings.mixin.js +13 -0
  78. package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.d.ts +7 -184
  79. package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.js +2 -34
  80. package/lib/src/shared/page-settings/duplicate-page.util.d.ts +4 -0
  81. package/lib/src/shared/page-settings/duplicate-page.util.js +75 -0
  82. package/lib/src/shared/page-settings/models.d.ts +1 -0
  83. package/lib/src/shared/page-settings/store/page-settings-store.d.ts +6 -2
  84. package/lib/src/shared/page-settings/store/page-settings-store.js +58 -7
  85. package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.d.ts +1 -0
  86. package/lib/src/shared/side-bar/components/SideBarTabButton.mixin.d.ts +1 -0
  87. package/lib/src/shared/style-settings/components/StyleSettings.mixin.d.ts +1 -3
  88. package/lib/src/shared/template-settings/components/TemplatesSettings.mixin.d.ts +1 -0
  89. package/lib/src/tracker.mjs +1 -1
  90. package/lib/src/{useEventTracker-C5Ql5p7u.js → useEventTracker-BPE7Rq9Q.js} +14 -3
  91. package/package.json +2 -2
  92. package/src/brand-page/components/button/Button.vue +8 -33
  93. package/src/brand-page/components/button/Button.vue.test.ts +0 -58
  94. package/src/brand-page/components/navigation/hamburger/HamburgerNavigation.vue +0 -1
  95. package/src/brand-page/components/navigation/navigation-side-menu/NavigationSideMenu.mixin.ts +1 -18
  96. package/src/brand-page/components/navigation/navigation-side-menu/NavigationSideMenu.vue +3 -64
  97. package/src/brand-page/components/page/Page.mixin.ts +11 -21
  98. package/src/brand-page/components/page/Page.vue +0 -2
  99. package/src/brand-page/components/page-header/HeaderLayout.stories.ts +0 -10
  100. package/src/brand-page/components/page-header/HeaderLayout.vue +65 -195
  101. package/src/brand-page/components/page-header/PageHeader.mixin.ts +10 -14
  102. package/src/brand-page/components/page-header/PageHeader.vue +1 -21
  103. package/src/brand-page/constants/sections/header-display.constants.ts +0 -35
  104. package/src/brand-page/models/index.ts +0 -19
  105. package/src/brand-page/utils/button.util.ts +0 -8
  106. package/src/brand-page/utils/context.util.ts +0 -15
  107. package/src/brand-page/utils/route.util.ts +0 -13
  108. package/src/brand-page/utils/view-model.util.test.ts +1 -151
  109. package/src/brand-page/utils/view-model.util.ts +1 -73
  110. package/src/brand-page/view-models.ts +0 -3
  111. package/src/brand-page-maker/composables/useEventTracker.ts +14 -0
  112. package/src/brand-page-maker/validators/section-button.validator.ts +3 -9
  113. package/src/bundles/bundled-translations.de-DE.json +1 -6
  114. package/src/bundles/bundled-translations.es-ES.json +1 -6
  115. package/src/bundles/bundled-translations.fr-CA.json +1 -6
  116. package/src/bundles/bundled-translations.fr-FR.json +1 -6
  117. package/src/bundles/bundled-translations.json +4 -7
  118. package/src/bundles/bundled-translations.pt-BR.json +1 -6
  119. package/src/bundles/bundled-translations.pt-PT.json +1 -6
  120. package/src/composables/useTranslate.ts +2 -1
  121. package/src/shared/content-settings/components/url-field/UrlField.vue +0 -1
  122. package/src/shared/ecommerce-settings/util/refreshDuplicatedMetadata.ts +17 -3
  123. package/src/shared/page-navigation/store/page-navigation-store.ts +48 -12
  124. package/src/shared/page-settings/components/header-settings-panel/HeaderSettingsPanel.vue +10 -65
  125. package/src/shared/page-settings/components/page-settings/NestedDraggable.vue +3 -0
  126. package/src/shared/page-settings/components/page-settings/PageElement.vue +2 -0
  127. package/src/shared/page-settings/components/page-settings/PageSettingMenu.test.ts +106 -0
  128. package/src/shared/page-settings/components/page-settings/PageSettingMenu.vue +16 -0
  129. package/src/shared/page-settings/components/page-settings/PageSettings.mixin.ts +24 -0
  130. package/src/shared/page-settings/components/page-settings/PageSettings.vue +1 -0
  131. package/src/shared/page-settings/components/page-settings/i18n/page-settings.json +3 -1
  132. package/src/shared/page-settings/components/page-settings-section-styles/HeaderDisplayStyle.vue +8 -14
  133. package/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.ts +1 -38
  134. package/src/shared/page-settings/components/page-settings-section-styles/i18n/page-settings-section.de-DE.json +1 -6
  135. package/src/shared/page-settings/components/page-settings-section-styles/i18n/page-settings-section.es-ES.json +1 -6
  136. package/src/shared/page-settings/components/page-settings-section-styles/i18n/page-settings-section.fr-CA.json +1 -6
  137. package/src/shared/page-settings/components/page-settings-section-styles/i18n/page-settings-section.fr-FR.json +1 -6
  138. package/src/shared/page-settings/components/page-settings-section-styles/i18n/page-settings-section.json +1 -6
  139. package/src/shared/page-settings/components/page-settings-section-styles/i18n/page-settings-section.pt-BR.json +1 -6
  140. package/src/shared/page-settings/components/page-settings-section-styles/i18n/page-settings-section.pt-PT.json +1 -6
  141. package/src/shared/page-settings/duplicate-page.util.test.ts +320 -0
  142. package/src/shared/page-settings/duplicate-page.util.ts +107 -0
  143. package/src/shared/page-settings/models.ts +1 -0
  144. package/src/shared/page-settings/store/page-settings-store.test.ts +285 -0
  145. package/src/shared/page-settings/store/page-settings-store.ts +100 -13
  146. package/src/brand-page/components/navigation/navigation-side-menu/NavigationSideMenu.vue.test.ts +0 -181
  147. package/src/brand-page/components/page-header/PageHeader.vue.test.ts +0 -339
  148. package/src/brand-page/constants/sections/header-display.constants.test.ts +0 -44
  149. package/src/brand-page/models/header-button.model.test.ts +0 -85
  150. package/src/shared/page-settings/components/header-settings-panel/HeaderSettingsPanel.button-section.test.ts +0 -131
  151. package/src/shared/page-settings/components/page-settings-section-styles/HeaderButtonSettings.test.ts +0 -263
  152. package/src/shared/page-settings/components/page-settings-section-styles/HeaderButtonSettings.vue +0 -263
  153. package/src/shared/page-settings/components/page-settings-section-styles/HeaderDisplayStyle.test.ts +0 -170
  154. package/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.header-button.test.ts +0 -114
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-6Z0OQVEM.js";
2
+ import { _ as t } from "./lib-Dn6SsFX-.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-6Z0OQVEM.js";
2
+ import { _ as t } from "./lib-Dn6SsFX-.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-6Z0OQVEM.js";
2
+ import { _ as t } from "./lib-Dn6SsFX-.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-6Z0OQVEM.js";
2
+ import { _ as t } from "./lib-Dn6SsFX-.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-6Z0OQVEM.js";
2
+ import { _ as t } from "./lib-Dn6SsFX-.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-6Z0OQVEM.js";
2
+ import { _ as t } from "./lib-Dn6SsFX-.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-6Z0OQVEM.js";
2
+ import { _ as t } from "./lib-Dn6SsFX-.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-6Z0OQVEM.js";
2
+ import { _ as e } from "./lib-Dn6SsFX-.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-6Z0OQVEM.js";
2
+ import { _ as e } from "./lib-Dn6SsFX-.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-6Z0OQVEM.js";
2
+ import { _ as e } from "./lib-Dn6SsFX-.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-6Z0OQVEM.js";
2
+ import { _ as e } from "./lib-Dn6SsFX-.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-6Z0OQVEM.js";
2
+ import { _ as e } from "./lib-Dn6SsFX-.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-6Z0OQVEM.js";
2
+ import { _ as M } from "./lib-Dn6SsFX-.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-6Z0OQVEM.js";
2
+ import { _ as M } from "./lib-Dn6SsFX-.js";
3
3
  const Z = {}, e = {
4
4
  width: "232",
5
5
  height: "36",
@@ -1,6 +1,6 @@
1
1
  import type { PropType } from 'vue';
2
2
  import type { BrandPageContext, NavigationDesktop, NavigationMobile } from '../../../models';
3
- import type { ButtonViewModel, NavItemViewModel } from '../../../view-models';
3
+ import type { NavItemViewModel } from '../../../view-models';
4
4
  declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
5
5
  context: {
6
6
  type: PropType<BrandPageContext>;
@@ -18,11 +18,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
18
18
  type: PropType<NavigationDesktop | NavigationMobile>;
19
19
  required: true;
20
20
  };
21
- headerButtonViewModel: {
22
- type: PropType<ButtonViewModel>;
23
- required: false;
24
- default: undefined;
25
- };
26
21
  }>, {}, {
27
22
  expandedItems: Record<string, boolean>;
28
23
  }, {
@@ -32,14 +27,12 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
32
27
  selectedButtonStyle(): BrandPageCssStyle;
33
28
  defaultWrapperStyle(): BrandPageCssStyle;
34
29
  selectedWrapperStyle(): BrandPageCssStyle;
35
- showHeaderButton(): boolean;
36
30
  routes(): any[];
37
31
  }, {
38
32
  filterHiddenNavItems(navItems: NavItemViewModel[]): NavItemViewModel[];
39
33
  isCurrentPage(navItem: NavItemViewModel): boolean;
40
34
  getSubNavItemStyle(navItem: NavItemViewModel): BrandPageCssStyle;
41
35
  closeSideMenu(): void;
42
- onSideMenuCtaClick(event: MouseEvent): void;
43
36
  toggleExpanded(pageId: string): void;
44
37
  isExpanded(pageId: string): boolean;
45
38
  expandSubPageIfCurrentPage(): void;
@@ -60,14 +53,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
60
53
  type: PropType<NavigationDesktop | NavigationMobile>;
61
54
  required: true;
62
55
  };
63
- headerButtonViewModel: {
64
- type: PropType<ButtonViewModel>;
65
- required: false;
66
- default: undefined;
67
- };
68
56
  }>> & Readonly<{
69
57
  "onClose-side-menu"?: ((...args: any[]) => any) | undefined;
70
- }>, {
71
- headerButtonViewModel: ButtonViewModel;
72
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
58
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
73
59
  export default _default;
@@ -1,6 +1,5 @@
1
1
  import { defineComponent } from 'vue';
2
2
  import { resolveSubNavItemBackgroundColor } from '../../../models';
3
- import { guardPreviewClick } from '../../../utils/context.util';
4
3
  export default defineComponent({
5
4
  props: {
6
5
  context: {
@@ -19,13 +18,6 @@ export default defineComponent({
19
18
  type: Object,
20
19
  required: true,
21
20
  },
22
- // Provided only when the header row does not render the CTA (the caller
23
- // decides via headerRowRendersCta) — absent means the side menu shows none.
24
- headerButtonViewModel: {
25
- type: Object,
26
- required: false,
27
- default: undefined,
28
- },
29
21
  },
30
22
  emits: ['close-side-menu'],
31
23
  data() {
@@ -58,9 +50,6 @@ export default defineComponent({
58
50
  const { fontSize: _fontSize, lineHeight: _lineHeight, letterSpacing: _letterSpacing, ...rest } = this.selectedButtonStyle;
59
51
  return rest;
60
52
  },
61
- showHeaderButton() {
62
- return Boolean(this.headerButtonViewModel);
63
- },
64
53
  routes() {
65
54
  return this.visibleNavItems.map((navItem, _i) => {
66
55
  return {
@@ -96,12 +85,6 @@ export default defineComponent({
96
85
  closeSideMenu() {
97
86
  this.$emit('close-side-menu');
98
87
  },
99
- // Preview: inert; published: follow the link and close the side menu behind it.
100
- onSideMenuCtaClick(event) {
101
- if (!guardPreviewClick(event, this.context)) {
102
- this.closeSideMenu();
103
- }
104
- },
105
88
  toggleExpanded(pageId) {
106
89
  const isCurrentlyExpanded = this.expandedItems[pageId];
107
90
  this.expandedItems = {};
@@ -1,5 +1,5 @@
1
1
  import type { PropType } from 'vue';
2
- import type { BrandPageViewModel, ButtonViewModel, ContentViewModel, PageViewModel } from '@brand-page/view-models';
2
+ import type { BrandPageViewModel, ContentViewModel, PageViewModel } from '@brand-page/view-models';
3
3
  import type { BackgroundShape, BrandPageContext, ViewportsType } from '@brand-page/models';
4
4
  declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
5
5
  context: {
@@ -81,7 +81,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
81
81
  headerViewModelDesktop(): any;
82
82
  isNavigationEmbeddedInLogoMobile(): boolean;
83
83
  isNavigationEmbeddedInLogoDesktop(): boolean;
84
- sideMenuHeaderButtonViewModel(): ButtonViewModel | undefined;
85
84
  shouldShowNavigation(): boolean;
86
85
  showNavigationAfterLogoMobile(): boolean;
87
86
  showNavigationAfterLogoDesktop(): boolean;
@@ -1,7 +1,7 @@
1
1
  import { defineComponent } from 'vue';
2
- import { DEFAULT_FONT_FAMILY_KEY, FALLBACK_FONT_FAMILIES, FONT_FAMILY_CONFIGS, headerRowRendersCta, } from '../../constants';
2
+ import { DEFAULT_FONT_FAMILY_KEY, FALLBACK_FONT_FAMILIES, FONT_FAMILY_CONFIGS, } from '../../constants';
3
3
  import { getSlugFromContext, getPageHeadingText, buildPaletteRootCss, buildPaletteScopedCss, PAGE_SCOPE_ID_ATTRIBUTE, resolveColorReference, } from '@brand-page/utils';
4
- import { findNavItemByRelativePath, hasVisibleNavigation, } from '@brand-page/utils/route.util';
4
+ import { findNavItemByRelativePath } from '@brand-page/utils/route.util';
5
5
  import { BRAND_PAGE_TYPES } from '@brand-page/models';
6
6
  import { hasProfileContent as checkHasProfileContent } from '@brand-page/utils/vcard.util';
7
7
  // Per-instance id for a `Page` instance. Deliberately generic — any per-instance
@@ -276,17 +276,12 @@ export default defineComponent({
276
276
  this.contents[0]?.type === 'logo' &&
277
277
  this.viewModel.pages.length > 1);
278
278
  },
279
- // The button shows in the header row OR in the side menu, never both. This gives it to the side menu when the header doesn't show it; undefined = no button in the menu.
280
- sideMenuHeaderButtonViewModel() {
281
- const header = this.viewModel.headerViewModelMobile;
282
- if (!header.headerButtonViewModel ||
283
- headerRowRendersCta(header.displayStyle, this.shouldShowNavigation)) {
284
- return undefined;
285
- }
286
- return header.headerButtonViewModel;
287
- },
288
279
  shouldShowNavigation() {
289
- return hasVisibleNavigation(this.context.nav.navItems);
280
+ // Show navigation if more than 1 non-hidden page exists, or if there's 1 page with non-hidden subpages
281
+ const visibleNavItems = this.context.nav.navItems.filter((item) => !item.isHidden);
282
+ return (visibleNavItems.length > 1 ||
283
+ (visibleNavItems.length === 1 &&
284
+ visibleNavItems[0].nestedNavItems.some((item) => !item.isHidden)));
290
285
  },
291
286
  showNavigationAfterLogoMobile() {
292
287
  return (!this.context.isBrandSite &&
@@ -3,4 +3,3 @@ import HeaderLayout from './HeaderLayout.vue';
3
3
  declare const meta: Meta<typeof HeaderLayout>;
4
4
  export default meta;
5
5
  export declare const Sample: StoryFn;
6
- export declare const WithHeaderButton: StoryFn;
@@ -36,7 +36,6 @@ const Template = (args) => ({
36
36
  nav-id="nav-1"
37
37
  :show-nav="args.showNav"
38
38
  :display-style="args.displayStyle"
39
- :has-cta="args.hasCta"
40
39
  logo-width="100px"
41
40
  >
42
41
  <template v-slot:logo>
@@ -45,9 +44,6 @@ const Template = (args) => ({
45
44
  <template v-slot:nav>
46
45
  <div style="border: 1px solid red; display: inline-block;">Nav | Nav | Nav | Nav | Nav | Nav | Nav | Nav</div>
47
46
  </template>
48
- <template v-slot:cta>
49
- <div style="border: 1px solid green; display: inline-block; padding: 8px 16px;">Contact Us</div>
50
- </template>
51
47
  </HeaderLayout>
52
48
  </div>
53
49
  `,
@@ -56,8 +52,3 @@ export const Sample = Template.bind({});
56
52
  Sample.args = {
57
53
  displayStyle: HEADER_DISPLAY.DESKTOP_TAB_5,
58
54
  };
59
- export const WithHeaderButton = Template.bind({});
60
- WithHeaderButton.args = {
61
- displayStyle: HEADER_DISPLAY.DESKTOP_TAB_1,
62
- hasCta: true,
63
- };
@@ -1,6 +1,6 @@
1
1
  import type { PropType } from 'vue';
2
2
  import type { BrandPageContext } from '@brand-page/models';
3
- import type { ButtonViewModel, PageHeaderViewModel } from '@brand-page/view-models';
3
+ import type { PageHeaderViewModel } from '@brand-page/view-models';
4
4
  declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
5
5
  navId: {
6
6
  type: StringConstructor;
@@ -23,11 +23,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
23
23
  LOGO_SLIDER_DESKTOP_MAX: number;
24
24
  }, {
25
25
  containerCss(): BrandPageCssStyle;
26
- headerButtonViewModel(): ButtonViewModel | undefined;
27
26
  showNav(): boolean;
28
27
  }, {
29
28
  onHeaderContainerClick(): void;
30
- onHeaderCtaClick(event: MouseEvent): void;
31
29
  }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "header-container-click"[], "header-container-click", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
32
30
  navId: {
33
31
  type: StringConstructor;
@@ -1,7 +1,5 @@
1
1
  import { defineComponent } from 'vue';
2
2
  import { LOGO_SLIDER_DESKTOP_MAX } from '../../constants';
3
- import { hasVisibleNavigation } from '../../utils/route.util';
4
- import { guardPreviewClick } from '../../utils/context.util';
5
3
  export default defineComponent({
6
4
  props: {
7
5
  navId: {
@@ -35,11 +33,11 @@ export default defineComponent({
35
33
  padding: '1.5rem 0', // var(--page-padding) 0
36
34
  };
37
35
  },
38
- headerButtonViewModel() {
39
- return this.viewModel.headerButtonViewModel;
40
- },
41
36
  showNav() {
42
- return hasVisibleNavigation(this.context.nav.navItems);
37
+ const visibleNavItems = this.context.nav.navItems.filter((item) => !item.isHidden);
38
+ return (visibleNavItems.length > 1 ||
39
+ (visibleNavItems.length === 1 &&
40
+ visibleNavItems[0].nestedNavItems.some((item) => !item.isHidden)));
43
41
  },
44
42
  },
45
43
  emits: ['header-container-click'],
@@ -47,9 +45,5 @@ export default defineComponent({
47
45
  onHeaderContainerClick() {
48
46
  this.$emit('header-container-click');
49
47
  },
50
- // Preview only: deliberately inert — no link-follow, no Header Settings open.
51
- onHeaderCtaClick(event) {
52
- guardPreviewClick(event, this.context);
53
- },
54
48
  },
55
49
  });
@@ -42,9 +42,6 @@ interface HeaderDisplayStyleConfig {
42
42
  supportLogo: boolean;
43
43
  supportedNavTypes: string[];
44
44
  option: ButtonGroupOption;
45
- withButtonIconName?: string;
46
45
  }
47
46
  export declare const HEADER_DISPLAY_STYLE_CONFIGS: HeaderDisplayStyleConfig[];
48
- /** True when the header row shows the button; mobile hamburger styles put it in the side menu instead (unless the nav is hidden — then there is no side menu). */
49
- export declare const headerRowRendersCta: (displayStyle: string, showNav: boolean) => boolean;
50
47
  export {};
@@ -48,7 +48,6 @@ export const HEADER_DISPLAY_STYLE_CONFIGS = [
48
48
  dataAttribute: HEADER_DISPLAY.DESKTOP_TAB_1,
49
49
  isSelected: false,
50
50
  },
51
- withButtonIconName: 'header-desktop-nav-style-tab-display-style-with-button-1',
52
51
  },
53
52
  {
54
53
  viewMode: 'desktop',
@@ -62,7 +61,6 @@ export const HEADER_DISPLAY_STYLE_CONFIGS = [
62
61
  dataAttribute: HEADER_DISPLAY.DESKTOP_TAB_2,
63
62
  isSelected: false,
64
63
  },
65
- withButtonIconName: 'header-desktop-nav-style-tab-display-style-with-button-2',
66
64
  },
67
65
  {
68
66
  viewMode: 'desktop',
@@ -76,7 +74,6 @@ export const HEADER_DISPLAY_STYLE_CONFIGS = [
76
74
  dataAttribute: HEADER_DISPLAY.DESKTOP_TAB_3,
77
75
  isSelected: false,
78
76
  },
79
- withButtonIconName: 'header-desktop-nav-style-tab-display-style-with-button-3',
80
77
  },
81
78
  {
82
79
  viewMode: 'desktop',
@@ -90,7 +87,6 @@ export const HEADER_DISPLAY_STYLE_CONFIGS = [
90
87
  dataAttribute: HEADER_DISPLAY.DESKTOP_TAB_4,
91
88
  isSelected: false,
92
89
  },
93
- withButtonIconName: 'header-desktop-nav-style-tab-display-style-with-button-4',
94
90
  },
95
91
  {
96
92
  viewMode: 'desktop',
@@ -104,7 +100,6 @@ export const HEADER_DISPLAY_STYLE_CONFIGS = [
104
100
  dataAttribute: HEADER_DISPLAY.DESKTOP_TAB_5,
105
101
  isSelected: false,
106
102
  },
107
- withButtonIconName: 'header-desktop-nav-style-tab-display-style-with-button-5',
108
103
  },
109
104
  {
110
105
  viewMode: 'desktop',
@@ -118,7 +113,6 @@ export const HEADER_DISPLAY_STYLE_CONFIGS = [
118
113
  dataAttribute: HEADER_DISPLAY.DESKTOP_TAB_6,
119
114
  isSelected: false,
120
115
  },
121
- withButtonIconName: 'header-desktop-nav-style-tab-display-style-with-button-6',
122
116
  },
123
117
  // desktop - tab with no logo
124
118
  {
@@ -178,7 +172,6 @@ export const HEADER_DISPLAY_STYLE_CONFIGS = [
178
172
  dataAttribute: HEADER_DISPLAY.DESKTOP_HAMBURGER_1,
179
173
  isSelected: false,
180
174
  },
181
- withButtonIconName: 'header-desktop-nav-style-hamburger-display-style-with-button-1',
182
175
  },
183
176
  {
184
177
  viewMode: 'desktop',
@@ -197,7 +190,6 @@ export const HEADER_DISPLAY_STYLE_CONFIGS = [
197
190
  dataAttribute: HEADER_DISPLAY.DESKTOP_HAMBURGER_2,
198
191
  isSelected: false,
199
192
  },
200
- withButtonIconName: 'header-desktop-nav-style-hamburger-display-style-with-button-2',
201
193
  },
202
194
  // desktop - hamburger no logo
203
195
  {
@@ -267,7 +259,6 @@ export const HEADER_DISPLAY_STYLE_CONFIGS = [
267
259
  dataAttribute: HEADER_DISPLAY.MOBILE_TAB_1,
268
260
  isSelected: false,
269
261
  },
270
- withButtonIconName: 'header-mobile-nav-style-tab-display-style-with-button-1',
271
262
  },
272
263
  {
273
264
  viewMode: 'mobile',
@@ -281,7 +272,6 @@ export const HEADER_DISPLAY_STYLE_CONFIGS = [
281
272
  dataAttribute: HEADER_DISPLAY.MOBILE_TAB_2,
282
273
  isSelected: false,
283
274
  },
284
- withButtonIconName: 'header-mobile-nav-style-tab-display-style-with-button-2',
285
275
  },
286
276
  // mobile - tab with no logo
287
277
  {
@@ -426,8 +416,3 @@ export const HEADER_DISPLAY_STYLE_CONFIGS = [
426
416
  },
427
417
  },
428
418
  ];
429
- /** True when the header row shows the button; mobile hamburger styles put it in the side menu instead (unless the nav is hidden — then there is no side menu). */
430
- export const headerRowRendersCta = (displayStyle, showNav) => !showNav ||
431
- !HEADER_DISPLAY_STYLE_CONFIGS.some((config) => config.option.value === displayStyle &&
432
- config.viewMode === 'mobile' &&
433
- config.navType === 'hamburger');
@@ -501,16 +501,6 @@ export declare class NavModel {
501
501
  routes: NavRoute[];
502
502
  constructor(options?: Partial<NavModel>);
503
503
  }
504
- export interface HeaderButton {
505
- isVisible: boolean;
506
- text: string;
507
- buttonLinkType: ButtonLinkType;
508
- url?: string;
509
- buttonPageId?: string;
510
- buttonTextStyle?: TextStyleDeclaration;
511
- fillColor?: string;
512
- borderColor?: string;
513
- }
514
504
  type AbstractPageHeaderStylesType = Partial<AbstractPageHeaderStyles>;
515
505
  export declare abstract class AbstractPageHeaderStyles {
516
506
  displayStyle: HeaderDisplayStyle;
@@ -535,8 +525,6 @@ export declare abstract class AbstractPageHeaderStyles {
535
525
  backgroundStyle: BackgroundColorStyle;
536
526
  style: BrandPageCssStyle;
537
527
  viewport: ViewportsType;
538
- /** Missing = no button. `declare` keeps it off saved data so old migrations still see the same shape. */
539
- headerButton?: HeaderButton;
540
528
  protected constructor(options?: AbstractPageHeaderStylesType);
541
529
  }
542
530
  export declare class PageHeaderDesktop extends AbstractPageHeaderStyles {
@@ -257,10 +257,6 @@ export class AbstractPageHeaderStyles {
257
257
  ...(options.backgroundStyle || {}),
258
258
  backgroundOpacity: options.backgroundStyle?.backgroundOpacity ?? 100,
259
259
  };
260
- // Only set when given — a missing button must stay missing for old migrations.
261
- if (options.headerButton) {
262
- this.headerButton = options.headerButton;
263
- }
264
260
  }
265
261
  }
266
262
  export class PageHeaderDesktop extends AbstractPageHeaderStyles {
@@ -5,11 +5,6 @@ import type { ButtonStyles } from '../models';
5
5
  * @returns The calculated box shadow CSS value
6
6
  */
7
7
  export declare const getBoxShadowValue: (buttonStyles: ButtonStyles) => string;
8
- export declare const BUTTON_VARIANTS: {
9
- readonly section: "section";
10
- readonly header: "header";
11
- };
12
- export type ButtonVariant = (typeof BUTTON_VARIANTS)[keyof typeof BUTTON_VARIANTS];
13
8
  export declare const BUTTON_STYLE_BRUSHSTROKE = "BUTTON_STYLE_19";
14
9
  export declare const BUTTON_STYLE_ARROW = "BUTTON_STYLE_20";
15
10
  export declare const BUTTON_STYLE_PAPER = "BUTTON_STYLE_21";
@@ -32,10 +32,6 @@ export const getBoxShadowValue = (buttonStyles) => {
32
32
  }
33
33
  return boxShadow;
34
34
  };
35
- export const BUTTON_VARIANTS = {
36
- section: 'section',
37
- header: 'header',
38
- };
39
35
  // The "decorative" button styles — brushstroke / arrow / torn-paper — whose visual
40
36
  // is drawn by ButtonStyleWrapper rather than plain CSS. Their banner-like SVG
41
37
  // decoration needs the button to be reasonably wide to render legibly, so narrow
@@ -8,4 +8,3 @@ export declare const getSlugFromContext: (context: BrandPageContext) => string;
8
8
  * placeholders) must keep reading `context.isPreview` directly.
9
9
  */
10
10
  export declare const isPreviewMode: (context: BrandPageContext) => boolean;
11
- export declare const guardPreviewClick: (event: MouseEvent, context: BrandPageContext) => boolean;
@@ -12,12 +12,3 @@ export const getSlugFromContext = (context) => {
12
12
  * placeholders) must keep reading `context.isPreview` directly.
13
13
  */
14
14
  export const isPreviewMode = (context) => !!(context.isPreview || context.isLivePreview);
15
- // Blocks a click in the maker preview (no link-follow, no bubbling); true when it fired.
16
- export const guardPreviewClick = (event, context) => {
17
- if (!context.isPreview) {
18
- return false;
19
- }
20
- event.preventDefault();
21
- event.stopPropagation();
22
- return true;
23
- };
@@ -33,4 +33,3 @@ export declare const toRouteLocation: (navItem?: NavItemViewModel) => {
33
33
  };
34
34
  export declare const findNavItemByRelativePath: (navItems: NavItemViewModel[], relativePath: string) => NavItemViewModel | undefined;
35
35
  export declare const findNavItemByPageSlug: (navItems: NavItemViewModel[], pageSlug: string) => NavItemViewModel | undefined;
36
- export declare const hasVisibleNavigation: (navItems: NavItemViewModel[]) => boolean;
@@ -136,12 +136,3 @@ export const findNavItemByPageSlug = (navItems, pageSlug) => {
136
136
  }
137
137
  return undefined;
138
138
  };
139
- // Nav shows when more than one page is visible, or one page has visible subpages.
140
- // The header row and the side menu both key the button placement off this — one
141
- // source so the two can never disagree.
142
- export const hasVisibleNavigation = (navItems) => {
143
- const visibleNavItems = navItems.filter((item) => !item.isHidden);
144
- return (visibleNavItems.length > 1 ||
145
- (visibleNavItems.length === 1 &&
146
- visibleNavItems[0].nestedNavItems.some((item) => !item.isHidden)));
147
- };
@@ -1,6 +1,6 @@
1
1
  import { reactive } from 'vue';
2
2
  import { assertUnreachable } from '../../helpers/ts.helper';
3
- import { ButtonStyles, TEXT_STYLE_TYPES, VIEWPORTS } from '../models';
3
+ import { ButtonStyles, VIEWPORTS } from '../models';
4
4
  import { NavigationMobile, NavigationDesktop, BRAND_PAGE_TYPES, BUTTON_LINK_TYPE, NavigationMenuStyles, } from '../models';
5
5
  import { backgroundColorFromStyle, isTransparentColour, mutedTextForBackground, withColorOpacity, } from './color.util';
6
6
  import { resolveColorReference } from './color-palette.util';
@@ -691,57 +691,6 @@ export const mapToPageStyleViewModel = (pageStyles, options) => {
691
691
  colors: pageStyles.colors ?? [],
692
692
  };
693
693
  };
694
- // Maps each link kind to the role Button.vue already understands, so the button needs no new code.
695
- const HEADER_BUTTON_LINK_ROLES = {
696
- [BUTTON_LINK_TYPE.url]: 'general-link',
697
- [BUTTON_LINK_TYPE.page]: 'general-link',
698
- [BUTTON_LINK_TYPE.mailTo]: 'email',
699
- [BUTTON_LINK_TYPE.tel]: 'phone',
700
- };
701
- const mapToHeaderButtonViewModel = (headerButton, styles) => {
702
- // No label means no button — hidden in preview and on the published site.
703
- if (!headerButton?.isVisible || !headerButton.text?.trim()) {
704
- return undefined;
705
- }
706
- const titleStyle = headerButton.buttonTextStyle ?? {
707
- textStyleType: TEXT_STYLE_TYPES.buttons,
708
- };
709
- const viewModel = mapToButtonViewModel({
710
- id: 'page-header-button',
711
- // Old saved data may have no link kind — treat it as a url.
712
- type: HEADER_BUTTON_LINK_ROLES[headerButton.buttonLinkType] ??
713
- HEADER_BUTTON_LINK_ROLES[BUTTON_LINK_TYPE.url],
714
- iconUrl: '',
715
- modalImageUrl: '',
716
- colorReplacements: [],
717
- title: headerButton.text.trim(),
718
- titleStyle,
719
- url: headerButton.url ?? '',
720
- page: headerButton.buttonPageId ?? '',
721
- clickActionField: headerButton.buttonLinkType === BUTTON_LINK_TYPE.page ? 'page' : 'url',
722
- }, styles, { titleStyle });
723
- return {
724
- ...viewModel,
725
- // A wrapped label justifies; the last (or only) line stays centered like a short label.
726
- titleStyle: {
727
- ...viewModel.titleStyle,
728
- textAlign: 'justify',
729
- textAlignLast: 'center',
730
- },
731
- styles: {
732
- ...viewModel.styles,
733
- style: {
734
- ...viewModel.styles.style,
735
- ...(headerButton.fillColor
736
- ? { backgroundColor: headerButton.fillColor }
737
- : {}),
738
- ...(headerButton.borderColor
739
- ? { borderColor: headerButton.borderColor }
740
- : {}),
741
- },
742
- },
743
- };
744
- };
745
694
  export const mapToPageHeaderViewModel = (pageHeader, pageStyles, pages, useOldLogoRenderSize = false) => {
746
695
  const viewport = pageHeader.viewport;
747
696
  const logoContent = {
@@ -789,7 +738,6 @@ export const mapToPageHeaderViewModel = (pageHeader, pageStyles, pages, useOldLo
789
738
  }),
790
739
  style: pageHeader.style,
791
740
  backgroundStyle: getHeaderBackgroundStyleWithOpacity(pageHeader),
792
- headerButtonViewModel: mapToHeaderButtonViewModel(pageHeader.headerButton, pageStyles),
793
741
  };
794
742
  };
795
743
  // Folds backgroundOpacity into backgroundColor's alpha so only the container's paint fades, not its children.
@@ -132,12 +132,10 @@ export interface BookingSectionViewModel extends ContentViewModel, Omit<BookingS
132
132
  buttonViewModel: ButtonViewModel;
133
133
  isFullWidth: boolean;
134
134
  }
135
- export interface PageHeaderViewModel extends Omit<PageHeaderDesktop | PageHeaderMobile, 'logoImage' | 'logoImageStyle' | 'isLogoOptional' | 'viewport' | 'isLogoVisible' | 'logoTemplateImage' | 'logoImageHeight' | 'logoImageWidth' | 'headerButton' | 'backgroundStyle'> {
135
+ export interface PageHeaderViewModel extends Omit<PageHeaderDesktop | PageHeaderMobile, 'logoImage' | 'logoImageStyle' | 'isLogoOptional' | 'viewport' | 'isLogoVisible' | 'logoTemplateImage' | 'logoImageHeight' | 'logoImageWidth' | 'backgroundStyle'> {
136
136
  logo: LogoViewModel;
137
137
  pages: PageViewModel[];
138
138
  backgroundStyle: BrandPageCssStyle;
139
- /** Absent unless the header call-to-action button is configured AND visible. */
140
- headerButtonViewModel?: ButtonViewModel;
141
139
  }
142
140
  export interface PageFooterViewModel extends Omit<PageFooterDesktop | PageFooterMobile, 'logoImage' | 'logoImageStyle' | 'isLogoOptional' | 'viewport' | 'isLogoVisible' | 'logoTemplateImage' | 'logoImageHeight' | 'logoImageWidth'> {
143
141
  logo: LogoViewModel;