@designcrowd/library.brand-page 6.2.16 → 6.2.17-header-logo-2

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 (730) hide show
  1. package/lib/src/{CreatedOnBrandCrowd-de-de-B_-PPZBi.js → CreatedOnBrandCrowd-de-de-BOI1vWbt.js} +1 -1
  2. package/lib/src/{CreatedOnBrandCrowd-en-us-BO1Kj3iA.js → CreatedOnBrandCrowd-en-us-Jbe9uKyr.js} +1 -1
  3. package/lib/src/{CreatedOnBrandCrowd-es-es-BoDJWRn2.js → CreatedOnBrandCrowd-es-es-Dz2jBuJE.js} +1 -1
  4. package/lib/src/{CreatedOnBrandCrowd-fr-fr-DUJZmdAy.js → CreatedOnBrandCrowd-fr-ca-Cm1BpEvu.js} +1 -1
  5. package/lib/src/{CreatedOnBrandCrowd-fr-ca-DUJZmdAy.js → CreatedOnBrandCrowd-fr-fr-Cm1BpEvu.js} +1 -1
  6. package/lib/src/{CreatedOnBrandCrowd-pt-pt-pIlAG13E.js → CreatedOnBrandCrowd-pt-br-CN9vyvDE.js} +1 -1
  7. package/lib/src/{CreatedOnBrandCrowd-pt-br-pIlAG13E.js → CreatedOnBrandCrowd-pt-pt-CN9vyvDE.js} +1 -1
  8. package/lib/src/{CreatedOnDcom-de-de-BNJtDtvi.js → CreatedOnDcom-de-de-BajY3tSa.js} +1 -1
  9. package/lib/src/{CreatedOnDcom-en-us-uL6WU_1S.js → CreatedOnDcom-en-us-BxEXoQ81.js} +1 -1
  10. package/lib/src/{CreatedOnDcom-es-es-DGZQISoF.js → CreatedOnDcom-es-es-DznU1_dJ.js} +1 -1
  11. package/lib/src/{CreatedOnDcom-fr-ca-CvYWKqNh.js → CreatedOnDcom-fr-ca-i-_eVdFp.js} +1 -1
  12. package/lib/src/{CreatedOnDcom-fr-fr-CpohVgCR.js → CreatedOnDcom-fr-fr-2AuegXtF.js} +1 -1
  13. package/lib/src/{CreatedOnDcom-pt-br-CaKS-48n.js → CreatedOnDcom-pt-br-B1Uh30JW.js} +1 -1
  14. package/lib/src/{CreatedOnDcom-pt-pt-D4g-iecQ.js → CreatedOnDcom-pt-pt-CtJ-Ax2w.js} +1 -1
  15. package/lib/src/about-ClPbbvEP.js +13 -0
  16. package/lib/src/add-page-BG8HrWd6.js +13 -0
  17. package/lib/src/ai-BC9-shMV.js +13 -0
  18. package/lib/src/align-center-DmTZgbR6.js +14 -0
  19. package/lib/src/align-justify-DtjgYa_R.js +14 -0
  20. package/lib/src/align-left-y8c8S6kK.js +14 -0
  21. package/lib/src/align-right-CF5cjUm5.js +14 -0
  22. package/lib/src/animate-Dza5yUux.js +14 -0
  23. package/lib/src/annotate-heart-fAnAVl9h.js +14 -0
  24. package/lib/src/arrow-down-C9WFeIPW.js +13 -0
  25. package/lib/src/arrow-left-Do7NUZSU.js +14 -0
  26. package/lib/src/arrow-right-QUcZg8m9.js +14 -0
  27. package/lib/src/arrow-top-right-DEiQzge_.js +13 -0
  28. package/lib/src/arrow-up-DKq0CXS7.js +14 -0
  29. package/lib/src/arrow-up-underline-FrAMFh20.js +14 -0
  30. package/lib/src/attach-CbIEV2iB.js +13 -0
  31. package/lib/src/auth-facebook-C8Uc_vyG.js +16 -0
  32. package/lib/src/auth-facebook-white-CUC_80AY.js +24 -0
  33. package/lib/src/auth-google-MNBcZcM4.js +16 -0
  34. package/lib/src/award-BBOTZiFo.js +14 -0
  35. package/lib/src/background-FoMxgtMT.js +14 -0
  36. package/lib/src/badge-Lf6nSNsI.js +15 -0
  37. package/lib/src/ban-BDZp09m4.js +10 -0
  38. package/lib/src/banner-BknAsxzR.js +14 -0
  39. package/lib/src/banner-centered-6kWp2Seu.js +28 -0
  40. package/lib/src/banner-left-CIjB0pBU.js +28 -0
  41. package/lib/src/bar-BG_z21fP.js +31 -0
  42. package/lib/src/bc-mast-BwMW-7kD.js +14 -0
  43. package/lib/src/bezier-curve-BrWXFsTe.js +14 -0
  44. package/lib/src/bezier-curve-outline-G3QC1LUn.js +14 -0
  45. package/lib/src/bold-DPo-2It8.js +14 -0
  46. package/lib/src/brand-page/components/page/Page.mixin.d.ts +0 -8
  47. package/lib/src/brand-page/components/page/Page.mixin.js +5 -85
  48. package/lib/src/brand-page/components/page-header/HeaderLayout.stories.js +0 -1
  49. package/lib/src/brand-page/components/page-header/PageHeader.mixin.d.ts +3 -3
  50. package/lib/src/brand-page/components/page-header/PageHeader.mixin.js +18 -7
  51. package/lib/src/brand-page/constants/misc.constants.d.ts +7 -0
  52. package/lib/src/brand-page/constants/misc.constants.js +7 -0
  53. package/lib/src/brand-page/constants/sections/header-display.constants.d.ts +1 -0
  54. package/lib/src/brand-page/constants/sections/header-display.constants.js +8 -0
  55. package/lib/src/brand-page/constants/styles.constants.d.ts +2 -0
  56. package/lib/src/brand-page/constants/styles.constants.js +2 -0
  57. package/lib/src/brand-page/models/content.model.d.ts +1 -0
  58. package/lib/src/brand-page/models/content.model.js +1 -0
  59. package/lib/src/brand-page/models/index.d.ts +28 -0
  60. package/lib/src/brand-page/models/index.js +4 -0
  61. package/lib/src/brand-page/models/navigation-styles.model.d.ts +0 -1
  62. package/lib/src/brand-page/models/navigation-styles.model.js +5 -2
  63. package/lib/src/brand-page/utils/container-text-color.util.js +12 -0
  64. package/lib/src/brand-page/utils/content-callback-util.d.ts +2 -1
  65. package/lib/src/brand-page/utils/content-callback-util.js +3 -0
  66. package/lib/src/brand-page/utils/logo.util.d.ts +2 -11
  67. package/lib/src/brand-page/utils/logo.util.js +18 -23
  68. package/lib/src/brand-page/utils/migration/migration-01.js +3 -2
  69. package/lib/src/brand-page/utils/migration/migration-23.d.ts +9 -0
  70. package/lib/src/brand-page/utils/migration/migration-23.js +141 -0
  71. package/lib/src/brand-page/utils/migration.util.d.ts +3 -0
  72. package/lib/src/brand-page/utils/migration.util.js +9 -0
  73. package/lib/src/brand-page/utils/model.util.js +5 -1
  74. package/lib/src/brand-page/utils/view-model.util.js +27 -8
  75. package/lib/src/brand-page/view-models.d.ts +5 -2
  76. package/lib/src/brand-page-maker/assessors/faq-accordion-color-field-visibility.assessor.d.ts +3 -0
  77. package/lib/src/brand-page-maker/assessors/faq-accordion-color-field-visibility.assessor.js +4 -0
  78. package/lib/src/brand-page-maker/assessors/index.d.ts +1 -0
  79. package/lib/src/brand-page-maker/assessors/index.js +1 -0
  80. package/lib/src/brand-page-maker/components/admin-logo-settings/AdminLogoSettings.mixin.d.ts +0 -30
  81. package/lib/src/brand-page-maker/components/admin-logo-settings/AdminLogoSettings.mixin.js +0 -14
  82. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.d.ts +1 -0
  83. package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.d.ts +5 -68
  84. package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.js +0 -6
  85. package/lib/src/brand-page-maker/components/navigation/Navigation.mixin.d.ts +1 -1
  86. package/lib/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.js +2 -0
  87. package/lib/src/brand-page-maker/composables/useEventTracker.d.ts +5 -0
  88. package/lib/src/brand-page-maker/composables/useEventTracker.js +5 -0
  89. package/lib/src/brand-page-maker/constants/config-settings-constant.d.ts +2 -1
  90. package/lib/src/brand-page-maker/constants/config-settings-constant.js +116 -4
  91. package/lib/src/brand-page-maker/constants/personalisation.constant.d.ts +2 -2
  92. package/lib/src/brand-page-maker/constants/personalisation.constant.js +3 -2
  93. package/lib/src/brand-page-maker/convertors/faq-display-style.convertor.d.ts +3 -0
  94. package/lib/src/brand-page-maker/convertors/faq-display-style.convertor.js +49 -0
  95. package/lib/src/brand-page-maker/models/content-settings-configs.d.ts +1 -0
  96. package/lib/src/brand-page-maker/models/content-settings-configs.js +1 -0
  97. package/lib/src/brand-page-maker/models/content-settings.d.ts +2 -1
  98. package/lib/src/brand-page-maker/models/content-settings.js +46 -1
  99. package/lib/src/brand-page-maker/models/navigation-style-configs.js +0 -7
  100. package/lib/src/brand-page-maker/stores/admin-logo-settings/admin-logo-settings-store.d.ts +0 -1
  101. package/lib/src/brand-page-maker/stores/admin-logo-settings/admin-logo-settings-store.js +0 -29
  102. package/lib/src/brand-page-maker/stores/ai-checkpoint/ai-checkpoint-store.d.ts +869 -113
  103. package/lib/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.js +6 -5
  104. package/lib/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.js +9 -13
  105. package/lib/src/brand-page-maker/utils/apply-color-strategy.js +41 -17
  106. package/lib/src/brand-page-maker/utils/rte-authoring.util.js +9 -1
  107. package/lib/src/brand-page-maker/validators/field.validator.js +2 -0
  108. package/lib/src/briefcase-C7QRlfVj.js +14 -0
  109. package/lib/src/browser-C4Fsu9Rp.js +14 -0
  110. package/lib/src/brush-CxvXKzhS.js +13 -0
  111. package/lib/src/building-BYKxplMv.js +10 -0
  112. package/lib/src/bulb-ejC9jV8k.js +14 -0
  113. package/lib/src/{bundled-translations-yGrvPE5i.js → bundled-translations-k_KKJCnS.js} +15 -15
  114. package/lib/src/{bundled-translations.de-DE-L4Znf8Hs.js → bundled-translations.de-DE-NMDaaBnp.js} +38 -38
  115. package/lib/src/{bundled-translations.es-ES-D6iticrK.js → bundled-translations.es-ES-CwkmEZam.js} +21 -21
  116. package/lib/src/{bundled-translations.fr-CA-BgAVE-9k.js → bundled-translations.fr-CA-BndgRIav.js} +33 -33
  117. package/lib/src/{bundled-translations.fr-FR-B8GbyqxQ.js → bundled-translations.fr-FR-Djo92wzG.js} +9 -9
  118. package/lib/src/{bundled-translations.pt-BR-DjPU3Db7.js → bundled-translations.pt-BR-Ce49ABPX.js} +19 -19
  119. package/lib/src/{bundled-translations.pt-PT-BaepaDpr.js → bundled-translations.pt-PT-CQlSVyFK.js} +39 -39
  120. package/lib/src/bundles/bundled-translations.de-DE.json +9 -2
  121. package/lib/src/bundles/bundled-translations.es-ES.json +9 -2
  122. package/lib/src/bundles/bundled-translations.fr-CA.json +9 -2
  123. package/lib/src/bundles/bundled-translations.fr-FR.json +9 -2
  124. package/lib/src/bundles/bundled-translations.json +10 -2
  125. package/lib/src/bundles/bundled-translations.pt-BR.json +9 -2
  126. package/lib/src/bundles/bundled-translations.pt-PT.json +9 -2
  127. package/lib/src/business-Bb8SY_4t.js +13 -0
  128. package/lib/src/business-card-filled-CvgmlFmT.js +10 -0
  129. package/lib/src/button-BFsYcRhD.js +15 -0
  130. package/lib/src/button-arrow-BJx7gSqA.js +19 -0
  131. package/lib/src/button-arrow-left-DH4AWq7r.js +19 -0
  132. package/lib/src/button-arrow-right-BCiUB6QH.js +19 -0
  133. package/lib/src/button-brushstroke-CA1mQBL6.js +21 -0
  134. package/lib/src/button-brushstroke-left-DAkJfXp6.js +14 -0
  135. package/lib/src/button-brushstroke-right-DfpxRjrR.js +14 -0
  136. package/lib/src/button-dashed-oval-D845tDes.js +25 -0
  137. package/lib/src/button-dashed-rectangle-BaNMJI6n.js +24 -0
  138. package/lib/src/button-dashed-rounded-D8dGILRK.js +25 -0
  139. package/lib/src/button-doubleline-oval-Dc_s_7EH.js +23 -0
  140. package/lib/src/button-doubleline-rectangle-CqF3C2lU.js +29 -0
  141. package/lib/src/button-doubleline-rounded-CYgA2cdT.js +23 -0
  142. package/lib/src/button-justified-BvDf6Pbt.js +33 -0
  143. package/lib/src/button-paper-DFL_w8i5.js +16 -0
  144. package/lib/src/button-paper-bottom-Cp-RylrX.js +12 -0
  145. package/lib/src/button-paper-top-np44rCsN.js +12 -0
  146. package/lib/src/button-softshadow-oval-BXo8fPgP.js +16 -0
  147. package/lib/src/button-softshadow-rectangle-BRrS4zyV.js +16 -0
  148. package/lib/src/button-softshadow-rounded-CK-QXrTn.js +16 -0
  149. package/lib/src/calculator-CTna5RqL.js +10 -0
  150. package/lib/src/calendar-CE15qaV1.js +10 -0
  151. package/lib/src/callout-error-D7YM8n0x.js +13 -0
  152. package/lib/src/callout-info-D7Xx1xjG.js +13 -0
  153. package/lib/src/callout-success-DICEVZAa.js +13 -0
  154. package/lib/src/callout-warning-BU5vtEfM.js +13 -0
  155. package/lib/src/cap-wwLcOxPS.js +27 -0
  156. package/lib/src/card-ONdGPsCh.js +19 -0
  157. package/lib/src/card-vertical-DlQSWLzg.js +14 -0
  158. package/lib/src/cart-empty-Nrixgx0R.js +16 -0
  159. package/lib/src/chart-CR_OxcOP.js +12 -0
  160. package/lib/src/chart-bar-7kB4RLvL.js +16 -0
  161. package/lib/src/chart-column-t56f9V2P.js +16 -0
  162. package/lib/src/chart-line-CCnCNxWd.js +14 -0
  163. package/lib/src/chart-pie-C1g_-Vkn.js +14 -0
  164. package/lib/src/check-CtYH_ouU.js +13 -0
  165. package/lib/src/check-circle-light-CIJpBwsF.js +14 -0
  166. package/lib/src/check-rounded-bLPfQlOf.js +14 -0
  167. package/lib/src/check-thin-B-CckFUs.js +14 -0
  168. package/lib/src/chevron-down-C4YXkyjj.js +14 -0
  169. package/lib/src/chevron-left-Dcj9aO1z.js +14 -0
  170. package/lib/src/chevron-right-htnITdyw.js +13 -0
  171. package/lib/src/chevron-right-wide-D9W9tRvo.js +10 -0
  172. package/lib/src/chevron-up-CTimP0W7.js +14 -0
  173. package/lib/src/clipboard-check-ChrOM2YN.js +14 -0
  174. package/lib/src/clock-DiL7VZIH.js +10 -0
  175. package/lib/src/close-DIzhn1GP.js +13 -0
  176. package/lib/src/coins-sparkle-OPx3ecC6.js +21 -0
  177. package/lib/src/column-1-CjKJ1AxO.js +23 -0
  178. package/lib/src/column-2-BtVQwHmz.js +29 -0
  179. package/lib/src/column-3-C5HbER1B.js +35 -0
  180. package/lib/src/column-4-D78b2Ua0.js +41 -0
  181. package/lib/src/community-Dqkcz-_P.js +10 -0
  182. package/lib/src/contact-message-BxTj9hos.js +13 -0
  183. package/lib/src/content-DkCXjW6X.js +14 -0
  184. package/lib/src/copy-D4fvhZV9.js +13 -0
  185. package/lib/src/crop-CoDLQLHd.js +13 -0
  186. package/lib/src/crown-BRoPrP-q.js +13 -0
  187. package/lib/src/crown-alt-CujHnvIM.js +10 -0
  188. package/lib/src/css/library.brand-page-brandCrowd.min.css +642 -450
  189. package/lib/src/css/library.brand-page-brandPage.min.css +643 -451
  190. package/lib/src/css/library.brand-page-designCom.min.css +642 -450
  191. package/lib/src/css/library.brand-page-preview.min.css +642 -450
  192. package/lib/src/custom-landscape-Bdgi1FoV.js +10 -0
  193. package/lib/src/delete-C-e_Qs44.js +13 -0
  194. package/lib/src/designs-BfNTmvUa.js +13 -0
  195. package/lib/src/desktop-hamburger-display-style-1-DwFJnRU8.js +31 -0
  196. package/lib/src/desktop-hamburger-display-style-2-dnc1s6ZD.js +31 -0
  197. package/lib/src/desktop-hamburger-display-style-with-button-1-Bxt77Z0-.js +16 -0
  198. package/lib/src/desktop-hamburger-display-style-with-button-2-DcLsiFmg.js +16 -0
  199. package/lib/src/desktop-tab-display-style-1-K4eUbUQc.js +31 -0
  200. package/lib/src/desktop-tab-display-style-2-DyIWoibZ.js +31 -0
  201. package/lib/src/desktop-tab-display-style-3-C5zYi9L-.js +27 -0
  202. package/lib/src/desktop-tab-display-style-4-IBVxAP6N.js +27 -0
  203. package/lib/src/desktop-tab-display-style-5-D6HYfiSA.js +31 -0
  204. package/lib/src/desktop-tab-display-style-6-CL-F2q6q.js +31 -0
  205. package/lib/src/desktop-tab-display-style-7-CAiqt3kJ.js +35 -0
  206. package/lib/src/desktop-tab-display-style-8-D2vHv7DX.js +31 -0
  207. package/lib/src/desktop-tab-display-style-with-button-1-Bz7fzcJd.js +35 -0
  208. package/lib/src/desktop-tab-display-style-with-button-2-eK4g0CtT.js +35 -0
  209. package/lib/src/desktop-tab-display-style-with-button-3-CFiX98ZH.js +35 -0
  210. package/lib/src/desktop-tab-display-style-with-button-4-DRBCVqdy.js +31 -0
  211. package/lib/src/desktop-tab-display-style-with-button-5-V6Dy6Kqr.js +16 -0
  212. package/lib/src/desktop-tab-display-style-with-button-6-CNg8lc48.js +16 -0
  213. package/lib/src/desktop-u69TVb5p.js +14 -0
  214. package/lib/src/diamond-w78TmD0h.js +14 -0
  215. package/lib/src/digital-business-card-filled-Demt1U8P.js +33 -0
  216. package/lib/src/display-style-1-BEu6CFUT.js +16 -0
  217. package/lib/src/display-style-1-Br29nU9V.js +31 -0
  218. package/lib/src/display-style-1-CnD7K-3Z.js +39 -0
  219. package/lib/src/display-style-2-8adBygQv.js +27 -0
  220. package/lib/src/display-style-2-C2mXt6qc.js +31 -0
  221. package/lib/src/display-style-2-DN4NykmH.js +16 -0
  222. package/lib/src/display-style-3-DDbu9GXv.js +31 -0
  223. package/lib/src/display-style-4-Dn2Op2-r.js +31 -0
  224. package/lib/src/display-style-about-1-3NI-IPV2.js +31 -0
  225. package/lib/src/display-style-about-2-bs-qb4kv.js +31 -0
  226. package/lib/src/display-style-about-3-BR-0sYYQ.js +31 -0
  227. package/lib/src/display-style-about-4-DD6zb0dc.js +16 -0
  228. package/lib/src/display-style-about-5-C86_L-fC.js +15 -0
  229. package/lib/src/display-style-about-6-BOwSe1YY.js +15 -0
  230. package/lib/src/display-style-banner-1-D0neiIKT.js +31 -0
  231. package/lib/src/display-style-banner-10-ACr-5zT1.js +31 -0
  232. package/lib/src/display-style-banner-11-D00gvWkN.js +31 -0
  233. package/lib/src/display-style-banner-12-9k_yNQBW.js +31 -0
  234. package/lib/src/display-style-banner-13-B_i8Ju4N.js +32 -0
  235. package/lib/src/display-style-banner-14-CpvQCpos.js +33 -0
  236. package/lib/src/display-style-banner-15-D8MD7sJG.js +33 -0
  237. package/lib/src/display-style-banner-2-BXuh9-AX.js +31 -0
  238. package/lib/src/display-style-banner-3-BsraiGBx.js +31 -0
  239. package/lib/src/display-style-banner-4-d91-Nxci.js +31 -0
  240. package/lib/src/display-style-banner-5-CBTCuJ55.js +31 -0
  241. package/lib/src/display-style-banner-6-DSAJJlaY.js +16 -0
  242. package/lib/src/display-style-banner-7-DzySW9Xy.js +16 -0
  243. package/lib/src/display-style-banner-8-B_cgq18m.js +31 -0
  244. package/lib/src/display-style-banner-9-t-pO6Jg4.js +31 -0
  245. package/lib/src/display-style-contact-1-B-AsF6my.js +16 -0
  246. package/lib/src/display-style-contact-2-DMfhyyt9.js +16 -0
  247. package/lib/src/display-style-contact-4-BJPk2Pbd.js +16 -0
  248. package/lib/src/display-style-contact-5-BAe-BYp8.js +16 -0
  249. package/lib/src/display-style-contact-6-CFauYgFb.js +16 -0
  250. package/lib/src/display-style-faq-1-BgT0eVND.js +16 -0
  251. package/lib/src/display-style-faq-2-BbER-sTX.js +16 -0
  252. package/lib/src/display-style-faq-3-D5yHpdug.js +16 -0
  253. package/lib/src/display-style-images-1-Bwf6ugpH.js +16 -0
  254. package/lib/src/display-style-images-2-SMGCL64f.js +16 -0
  255. package/lib/src/display-style-images-3-CnsgndWT.js +16 -0
  256. package/lib/src/display-style-images-4-ZA8JRP0Z.js +27 -0
  257. package/lib/src/display-style-images-5-C8u8Febf.js +16 -0
  258. package/lib/src/display-style-images-6-BVHykxa0.js +16 -0
  259. package/lib/src/divider-CR165RhP.js +14 -0
  260. package/lib/src/divider-thick-RshAbykX.js +23 -0
  261. package/lib/src/divider-thin-PizIMmao.js +23 -0
  262. package/lib/src/donate-DbZOJZnW.js +13 -0
  263. package/lib/src/download-ujggIjZY.js +14 -0
  264. package/lib/src/duplicate-Bhw4wrh1.js +13 -0
  265. package/lib/src/edit-BXYfQeCz.js +13 -0
  266. package/lib/src/edit-line-CYDRKzj9.js +16 -0
  267. package/lib/src/ellipsis-C2pBUY6z.js +13 -0
  268. package/lib/src/email-DaIH2ZUY.js +10 -0
  269. package/lib/src/email-symbol-SrN2dmcA.js +10 -0
  270. package/lib/src/envelope-email-BgdGi32i.js +16 -0
  271. package/lib/src/eraser-Cl4jOZ57.js +10 -0
  272. package/lib/src/error-Bqd4-C8y.js +13 -0
  273. package/lib/src/etsy-DV4EID0w.js +10 -0
  274. package/lib/src/external-link-DbomUDs5.js +10 -0
  275. package/lib/src/eye-crossed-1CvXFS6f.js +14 -0
  276. package/lib/src/eye-open-CNrGpXVz.js +24 -0
  277. package/lib/src/facebook-nXogbPGh.js +10 -0
  278. package/lib/src/favicon-BiVHU_d2.js +14 -0
  279. package/lib/src/fees-s1pYEj21.js +13 -0
  280. package/lib/src/file-box-DE8tkDVZ.js +13 -0
  281. package/lib/src/file-empty-D9NIKisK.js +14 -0
  282. package/lib/src/file-xz_a3HRC.js +14 -0
  283. package/lib/src/filter-BGGlmF74.js +14 -0
  284. package/lib/src/filter-BaHyfH4_.js +13 -0
  285. package/lib/src/filters-C9AT7gv9.js +13 -0
  286. package/lib/src/flag-CC_ibmfv.js +16 -0
  287. package/lib/src/flip-horizontal-CTBNXrTn.js +14 -0
  288. package/lib/src/flip-vertical-CDTrW306.js +14 -0
  289. package/lib/src/flyer-GZKJlWPk.js +14 -0
  290. package/lib/src/folder-BQ5gFVJm.js +13 -0
  291. package/lib/src/font-BOv93oqt.js +14 -0
  292. package/lib/src/footer-centered-Da9U18UX.js +35 -0
  293. package/lib/src/footer-left-Bnc_KqHz.js +35 -0
  294. package/lib/src/form-CmQAxidA.js +10 -0
  295. package/lib/src/form-message-C3SI_2VM.js +13 -0
  296. package/lib/src/fullscreen-BOwEZwBD.js +10 -0
  297. package/lib/src/fullscreen-exit-DGBOSH37.js +10 -0
  298. package/lib/src/gift-certificate-B6veGMIK.js +10 -0
  299. package/lib/src/globe-Bs2G5dbf.js +13 -0
  300. package/lib/src/globe-DFW8ogme.js +10 -0
  301. package/lib/src/globe-DdC9Dv-2.js +13 -0
  302. package/lib/src/group-DWmqRz8f.js +13 -0
  303. package/lib/src/hamburger-1-DmiITW7Y.js +17 -0
  304. package/lib/src/hamburger-2-QoMuoBxt.js +19 -0
  305. package/lib/src/hamburger-3-C07bJr3J.js +19 -0
  306. package/lib/src/hamburger-4-CVkY4au6.js +15 -0
  307. package/lib/src/hamburger-P-mY7VWK.js +19 -0
  308. package/lib/src/hamburger-display-style-no-logo-1-BSx4mtP5.js +27 -0
  309. package/lib/src/hamburger-display-style-no-logo-2-2B-GKQSU.js +27 -0
  310. package/lib/src/hamburger-display-style-no-logo-3-BXjPCwp8.js +27 -0
  311. package/lib/src/hamburger-x-dJBitX.js +31 -0
  312. package/lib/src/headphones-DDES6g0E.js +14 -0
  313. package/lib/src/heart-vRuF6Yno.js +14 -0
  314. package/lib/src/history-MCn9bdw-.js +41 -0
  315. package/lib/src/home-4gvv43pI.js +14 -0
  316. package/lib/src/home-C9Cc12KI.js +13 -0
  317. package/lib/src/home-outline-JeCQ_wqW.js +13 -0
  318. package/lib/src/icon-style-circle-bg-Bzmc4Mch.js +29 -0
  319. package/lib/src/icon-style-no-bg-VXDwahry.js +23 -0
  320. package/lib/src/icon-style-square-bg-CZI06D4R.js +29 -0
  321. package/lib/src/image-CDTu9td1.js +14 -0
  322. package/lib/src/image-DuHk1UkA.js +14 -0
  323. package/lib/src/image-gallery-carousel-sKibIp-z.js +22 -0
  324. package/lib/src/image-gallery-grid-DdzJGRWt.js +32 -0
  325. package/lib/src/image-gallery-masonry-Dq6IhBk5.js +26 -0
  326. package/lib/src/images-BD2b-GBv.js +14 -0
  327. package/lib/src/images-gallery-BlCSvhby.js +10 -0
  328. package/lib/src/index.d.ts +1 -1
  329. package/lib/src/index.mjs +171 -169
  330. package/lib/src/info-BMNzJhor.js +21 -0
  331. package/lib/src/infographics-CZ3Q1Exz.js +10 -0
  332. package/lib/src/instagram-nQQP0qcP.js +14 -0
  333. package/lib/src/invitation--3-xxz-7.js +10 -0
  334. package/lib/src/invoice-B3sw08vw.js +10 -0
  335. package/lib/src/italic-ePE1MCwa.js +14 -0
  336. package/lib/src/jobs-xzSei3ed.js +13 -0
  337. package/lib/src/layer-CCXYT1kV.js +13 -0
  338. package/lib/src/layer-bring-front-B8ggiwVa.js +13 -0
  339. package/lib/src/layer-send-back-NKtHI7eU.js +13 -0
  340. package/lib/src/layout-BYNrJ08n.js +10 -0
  341. package/lib/src/layout-icon-bottom-normal-text-center-normal-CWxX2Atx.js +35 -0
  342. package/lib/src/layout-icon-bottom-normal-text-center-small-DPmc6hDg.js +35 -0
  343. package/lib/src/layout-icon-bottom-small-text-center-normal-Cdtz9Wws.js +35 -0
  344. package/lib/src/layout-icon-center-normal-curved-text-bottom-CNsT1cwk.js +33 -0
  345. package/lib/src/layout-icon-center-normal-curved-text-circle-CfQ_ff9J.js +26 -0
  346. package/lib/src/layout-icon-center-normal-curved-text-top-BvizyC0f.js +33 -0
  347. package/lib/src/layout-icon-left-normal-text-center-normal-BjEh5GiP.js +35 -0
  348. package/lib/src/layout-icon-left-normal-text-justify-normal-Do6osf9Q.js +35 -0
  349. package/lib/src/layout-icon-left-normal-text-left-normal-B2D9-klC.js +35 -0
  350. package/lib/src/layout-icon-left-small-text-left-normal-3TZaP_AQ.js +35 -0
  351. package/lib/src/layout-icon-right-normal-text-center-normal-b3DVzXQr.js +35 -0
  352. package/lib/src/layout-icon-right-normal-text-justify-normal-DjzdGyVE.js +35 -0
  353. package/lib/src/layout-icon-right-normal-text-right-normal-8RPlsv0g.js +35 -0
  354. package/lib/src/layout-icon-right-small-text-right-normal-C6Lxmafr.js +35 -0
  355. package/lib/src/layout-icon-top-normal-text-center-normal-BPzGcL34.js +35 -0
  356. package/lib/src/layout-icon-top-normal-text-center-small-CiL6UapF.js +35 -0
  357. package/lib/src/layout-icon-top-normal-text-justify-normal-BdxKFlxz.js +35 -0
  358. package/lib/src/layout-icon-top-small-text-center-normal-CQEFgRGz.js +35 -0
  359. package/lib/src/letterhead-filled-D242ZmCV.js +10 -0
  360. package/lib/src/{lib-DwDFHSzX.js → lib-3Hnr9X6L.js} +44894 -50406
  361. package/lib/src/lib.js +1 -1
  362. package/lib/src/lightning-0DBN7brQ.js +14 -0
  363. package/lib/src/link-ASbs22iV.js +13 -0
  364. package/lib/src/link-f9Rqjgzs.js +14 -0
  365. package/lib/src/link-in-bio-filled-7KGQKnFf.js +33 -0
  366. package/lib/src/linkedin-DHZ9GYZR.js +14 -0
  367. package/lib/src/list-bullet-DmLotp-I.js +18 -0
  368. package/lib/src/list-numbered-4yfRS8uf.js +26 -0
  369. package/lib/src/location-CLAVWXlO.js +13 -0
  370. package/lib/src/lock-DeRe5704.js +13 -0
  371. package/lib/src/log-out-BcZt1tYV.js +14 -0
  372. package/lib/src/logo-CbnT5-3_.js +10 -0
  373. package/lib/src/logo-J_17MKVC.js +14 -0
  374. package/lib/src/mac-command-C_mOn-5D.js +15 -0
  375. package/lib/src/map-BYGwUtwG.js +13 -0
  376. package/lib/src/media-CtTU-S2_.js +10 -0
  377. package/lib/src/menu-BOvesjpI.js +10 -0
  378. package/lib/src/message-DpeaWeJO.js +13 -0
  379. package/lib/src/metadata-builder/builders/header-builder.d.ts +1 -0
  380. package/lib/src/metadata-builder/builders/header-builder.js +3 -1
  381. package/lib/src/metadata-builder/builders/section-rules/header.rules.d.ts +2 -1
  382. package/lib/src/metadata-builder/builders/section-rules/header.rules.js +18 -0
  383. package/lib/src/metadata-builder/parsers/section-tool-arguments.d.ts +1 -1
  384. package/lib/src/microphone-bold-DHNW7gHW.js +14 -0
  385. package/lib/src/microphone-oI9aYgUV.js +10 -0
  386. package/lib/src/minus-BnugKxWp.js +13 -0
  387. package/lib/src/minus-circle-light-BpwE33R9.js +14 -0
  388. package/lib/src/mobile-CWUkrrZz.js +10 -0
  389. package/lib/src/mobile-hamburger-display-style-1-CLeSmPUu.js +31 -0
  390. package/lib/src/mobile-hamburger-display-style-2-BT2wdGTM.js +31 -0
  391. package/lib/src/mobile-hamburger-display-style-3-BSfDOb_s.js +31 -0
  392. package/lib/src/mobile-hamburger-display-style-4-CMWaq5HF.js +31 -0
  393. package/lib/src/mobile-tab-display-style-1-BPHy8scy.js +31 -0
  394. package/lib/src/mobile-tab-display-style-2-rD9c_cim.js +31 -0
  395. package/lib/src/mobile-tab-display-style-with-button-1-DhbLIZq0.js +16 -0
  396. package/lib/src/mobile-tab-display-style-with-button-2-D--vnzWw.js +16 -0
  397. package/lib/src/mug-Dlk8rEi1.js +35 -0
  398. package/lib/src/opacity-CyK39FOD.js +13 -0
  399. package/lib/src/other-qYQKGjGx.js +29 -0
  400. package/lib/src/page-blank-Cutm12JP.js +13 -0
  401. package/lib/src/page-buttons-BVG-wqi2.js +18 -0
  402. package/lib/src/page-hamburger-CPzInb3g.js +37 -0
  403. package/lib/src/page-tabs-D6FfcoMT.js +39 -0
  404. package/lib/src/pages-DlRbcQ85.js +13 -0
  405. package/lib/src/paint-brush-D3Pb69Wl.js +10 -0
  406. package/lib/src/palette-4ouQ5VpX.js +14 -0
  407. package/lib/src/palette-outline-DDTfdInB.js +14 -0
  408. package/lib/src/pause-BY99VDWb.js +10 -0
  409. package/lib/src/pause-DidBP71W.js +10 -0
  410. package/lib/src/payment-BNKU6Duo.js +21 -0
  411. package/lib/src/payments-featured-BjAlUQu1.js +27 -0
  412. package/lib/src/payments-textonly-CqIcluCY.js +40 -0
  413. package/lib/src/payments-thumbnail-DhEXGUn-.js +29 -0
  414. package/lib/src/pen-WjD6Z863.js +14 -0
  415. package/lib/src/pen-outline-T-ujuXV9.js +14 -0
  416. package/lib/src/pen-sparkle-DmImSlQQ.js +26 -0
  417. package/lib/src/pen-tool-DcGjZWmF.js +14 -0
  418. package/lib/src/phone-B3Dv_9SX.js +13 -0
  419. package/lib/src/phone-DWXh3QKt.js +10 -0
  420. package/lib/src/pinterest-DUKuH82X.js +10 -0
  421. package/lib/src/play-CwcQ-4x1.js +10 -0
  422. package/lib/src/plus-DHtDsbcg.js +10 -0
  423. package/lib/src/plus-circle-Bhjd4jL5.js +14 -0
  424. package/lib/src/plus-circle-light-B8tUp3Z9.js +15 -0
  425. package/lib/src/plus-light-SrtSL6KT.js +14 -0
  426. package/lib/src/poll-CCpHFKR3.js +10 -0
  427. package/lib/src/portfolio-Cb3y-9ik.js +13 -0
  428. package/lib/src/postcard-ahKB24ZL.js +10 -0
  429. package/lib/src/poster-cBbPKnbr.js +14 -0
  430. package/lib/src/premium-content-BWeZ7Ogy.js +21 -0
  431. package/lib/src/preview-CBc7qQmh.js +13 -0
  432. package/lib/src/printing-CsuTvRzs.js +13 -0
  433. package/lib/src/processing-EcPXndeQ.js +10 -0
  434. package/lib/src/profile-BglPhJwI.js +10 -0
  435. package/lib/src/qrcode-BYoiJ8jq.js +10 -0
  436. package/lib/src/question-alt-D24ac-qg.js +29 -0
  437. package/lib/src/question-circle-filled-CCIGoq2U.js +14 -0
  438. package/lib/src/question-dJfpKnPX.js +21 -0
  439. package/lib/src/quote-Beov5JZG.js +12 -0
  440. package/lib/src/ratio-1-1-Ev1sUTpr.js +15 -0
  441. package/lib/src/ratio-16-9-mGEJdf_O.js +15 -0
  442. package/lib/src/ratio-2-3-B0O8kq4S.js +15 -0
  443. package/lib/src/ratio-3-2-xEZ6hW32.js +15 -0
  444. package/lib/src/ratio-3-4-cB-hCsw5.js +15 -0
  445. package/lib/src/ratio-4-3-BnQw8lJS.js +15 -0
  446. package/lib/src/ratio-9-16-BkCo5E7z.js +15 -0
  447. package/lib/src/ratio-circle-5fVudbEI.js +15 -0
  448. package/lib/src/ratio-original-Df7Cu-Iq.js +23 -0
  449. package/lib/src/redo-BO3BtgjR.js +13 -0
  450. package/lib/src/refresh-CSZ5cbQf.js +13 -0
  451. package/lib/src/reload-BZ-G467N.js +13 -0
  452. package/lib/src/reorderable-D-4Cz8gf.js +10 -0
  453. package/lib/src/request-payment-q1GdUQz3.js +13 -0
  454. package/lib/src/reset-DNJKFu9G.js +13 -0
  455. package/lib/src/resize-C1ym5cFG.js +25 -0
  456. package/lib/src/roller-brush-6Lkh0h57.js +10 -0
  457. package/lib/src/save-0Nq0XX2b.js +13 -0
  458. package/lib/src/search-CcXdiSZK.js +14 -0
  459. package/lib/src/secure-DQoaN8iR.js +14 -0
  460. package/lib/src/select-all-gere2HEj.js +24 -0
  461. package/lib/src/send-CY8t4K7K.js +23 -0
  462. package/lib/src/services-B-rJftx1.js +12 -0
  463. package/lib/src/settings-DjA93nK4.js +15 -0
  464. package/lib/src/shape-dbkIE51p.js +10 -0
  465. package/lib/src/share-C5troFj5.js +17 -0
  466. package/lib/src/shared/color-strategies/color-strategies.js +4 -0
  467. package/lib/src/shared/color-strategies/rte-field-pairs.d.ts +10 -0
  468. package/lib/src/shared/color-strategies/rte-field-pairs.js +22 -0
  469. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.d.ts +5 -0
  470. package/lib/src/shared/content-settings/components/content-settings/ReplaceImageSettingsForContent.mixin.d.ts +6 -1
  471. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.d.ts +5 -0
  472. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.d.ts +10 -115
  473. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.js +0 -30
  474. package/lib/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.d.ts +1 -0
  475. package/lib/src/shared/content-settings/components/items-field/ItemsField.mixin.d.ts +1 -0
  476. package/lib/src/shared/content-settings/components/items-field/ItemsField.mixin.js +3 -0
  477. package/lib/src/shared/content-settings/components/text-style-field/TextStyleField.mixin.d.ts +2 -0
  478. package/lib/src/shared/content-settings/store/content-settings-store.d.ts +2 -0
  479. package/lib/src/shared/content-settings/store/content-settings-store.js +23 -3
  480. package/lib/src/shared/logo-settings/components/EditLogoSettings.mixin.d.ts +4 -1
  481. package/lib/src/shared/logo-settings/components/LogoSettings.mixin.d.ts +0 -1
  482. package/lib/src/shared/logo-settings/components/LogoSettingsHeader.mixin.d.ts +0 -1
  483. package/lib/src/shared/logo-settings/store/logo-settings-store.d.ts +0 -1
  484. package/lib/src/shared/logo-settings/store/logo-settings-store.js +23 -93
  485. package/lib/src/shared/my-designs/MyDesigns.mixin.d.ts +0 -1
  486. package/lib/src/shared/navigation-style-settings/store/index.d.ts +0 -5
  487. package/lib/src/shared/navigation-style-settings/store/index.js +0 -3
  488. package/lib/src/shared/page-settings/components/page-settings/PageSettings.mixin.d.ts +97 -15
  489. package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.d.ts +165 -17
  490. package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.js +57 -13
  491. package/lib/src/shared/page-settings/store/page-settings-store.js +0 -6
  492. package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.d.ts +4 -0
  493. package/lib/src/shared/side-bar/components/SideBarTabButton.mixin.d.ts +4 -0
  494. package/lib/src/shared/style-settings/components/StyleSettings.mixin.d.ts +4 -0
  495. package/lib/src/shared/template-settings/components/TemplatesSettings.mixin.d.ts +4 -0
  496. package/lib/src/shared/template-settings/store/template-settings-store.js +1 -0
  497. package/lib/src/shield-tick-CJu2w7jV.js +13 -0
  498. package/lib/src/shop-BICCwqjA.js +13 -0
  499. package/lib/src/size-auto-DZ4AHHzc.js +10 -0
  500. package/lib/src/size-landscape-Co2ovloO.js +10 -0
  501. package/lib/src/size-portrait-2avbmbvP.js +10 -0
  502. package/lib/src/size-square-Bz1CZaK9.js +10 -0
  503. package/lib/src/sms-C1kZrMwo.js +10 -0
  504. package/lib/src/snapchat-BDhrhjxt.js +10 -0
  505. package/lib/src/social-facebook-DUNHwNb2.js +13 -0
  506. package/lib/src/social-facebook-color-Ct7tIJjy.js +25 -0
  507. package/lib/src/social-facebook-rcl4tAfz.js +10 -0
  508. package/lib/src/social-google-BTB1aEGv.js +10 -0
  509. package/lib/src/social-google-DJGuTMlB.js +13 -0
  510. package/lib/src/social-instagram-BCLf2eXM.js +13 -0
  511. package/lib/src/social-instagram-color-xjAjceQq.js +62 -0
  512. package/lib/src/social-linkedin-color-BZqnmI57.js +21 -0
  513. package/lib/src/social-share-DFkFeYix.js +12 -0
  514. package/lib/src/social-twitter-C1oScO7g.js +13 -0
  515. package/lib/src/social-twitter-color-DfOtI2Fg.js +25 -0
  516. package/lib/src/social-youtube-CkY91Sxk.js +13 -0
  517. package/lib/src/sort-Ba_MLXhQ.js +10 -0
  518. package/lib/src/soundcloud-D75CdlVH.js +14 -0
  519. package/lib/src/spacing-D_NTz008.js +27 -0
  520. package/lib/src/sparkle-square-C88DaAJm.js +31 -0
  521. package/lib/src/squares-CjaXv6E1.js +14 -0
  522. package/lib/src/star-filled-Dt4dP2V-.js +13 -0
  523. package/lib/src/star-hollow-DAKZTQq1.js +13 -0
  524. package/lib/src/sticker-DoYqtPNb.js +35 -0
  525. package/lib/src/stop-C0S-1Eo6.js +10 -0
  526. package/lib/src/strikethrough-BT13BDrx.js +14 -0
  527. package/lib/src/styles-Bs4y1ta6.js +10 -0
  528. package/lib/src/submit-BEB1wlPX.js +10 -0
  529. package/lib/src/t-shirt-D5YXSF2K.js +39 -0
  530. package/lib/src/tab-display-style-no-logo-1-BPxJPqUS.js +27 -0
  531. package/lib/src/tab-display-style-no-logo-2-Bkrgx0ll.js +27 -0
  532. package/lib/src/tab-display-style-no-logo-3-BWGcUgUX.js +27 -0
  533. package/lib/src/templates-B8egC2a3.js +14 -0
  534. package/lib/src/testimonial-big-image-DiPmYzdt.js +36 -0
  535. package/lib/src/testimonial-centered-jM2INLSy.js +32 -0
  536. package/lib/src/testimonial-columns-CDa9i6jz.js +40 -0
  537. package/lib/src/text-BK4YqqR7.js +14 -0
  538. package/lib/src/text-background-color-CPbyeOQM.js +21 -0
  539. package/lib/src/text-color-CbbWTlsX.js +23 -0
  540. package/lib/src/text-fkXBkdFx.js +14 -0
  541. package/lib/src/text-image-Co5SPyE6.js +44 -0
  542. package/lib/src/text-image-center-CmrIdS6C.js +28 -0
  543. package/lib/src/text-image-justified-BsXIFw9g.js +35 -0
  544. package/lib/src/text-image-left-CJVXL3QB.js +29 -0
  545. package/lib/src/text-image-only-ypeim10E.js +21 -0
  546. package/lib/src/text-image-right--XlSLgPu.js +29 -0
  547. package/lib/src/thankyou-card-CNoj8H8v.js +10 -0
  548. package/lib/src/thumbs-up-Cu5CKecf.js +10 -0
  549. package/lib/src/tiktok-DIga2vn6.js +10 -0
  550. package/lib/src/time-xJztv3yG.js +13 -0
  551. package/lib/src/tools-DKpoB0za.js +10 -0
  552. package/lib/src/tooltip-bottom-Bqw5Ggwa.js +12 -0
  553. package/lib/src/tooltip-left-CXVjJLB5.js +12 -0
  554. package/lib/src/tooltip-right-BY3BbjDG.js +12 -0
  555. package/lib/src/tooltip-top-BGstn3Lx.js +12 -0
  556. package/lib/src/tracker.mjs +1 -1
  557. package/lib/src/transition-D7Q-Bywn.js +27 -0
  558. package/lib/src/tumblr-DmzEhDlC.js +10 -0
  559. package/lib/src/twitch-CnDfpoBo.js +14 -0
  560. package/lib/src/twitter-DtPX8NYL.js +10 -0
  561. package/lib/src/underline-DHSpai3b.js +14 -0
  562. package/lib/src/undo-Db0DM_wS.js +13 -0
  563. package/lib/src/upgrade-alt-DBg1uVjf.js +14 -0
  564. package/lib/src/upgrade-eol6OnYc.js +16 -0
  565. package/lib/src/upgrade-to-add-page-xxEFVCff.js +57 -0
  566. package/lib/src/upgrade-to-contact-form-DlR6bx9L.js +95 -0
  567. package/lib/src/upgrade-to-google-ad-DMQhbFHz.js +129 -0
  568. package/lib/src/upgrade-to-maps-CodU6Iau.js +56 -0
  569. package/lib/src/upgrade-to-publish-JBLIGtsj.js +119 -0
  570. package/lib/src/upgrade-to-remove-watermark-z8PYQRQa.js +108 -0
  571. package/lib/src/upgrade-to-videos-BD2PpjC9.js +54 -0
  572. package/lib/src/upload-DIjYSaqf.js +10 -0
  573. package/lib/src/upload-arrow-C1Nu7eRP.js +10 -0
  574. package/lib/src/uppercase-DzGUT1dN.js +24 -0
  575. package/lib/src/{useEventTracker-DwPTmzpa.js → useEventTracker-BxQMBVf2.js} +6 -1
  576. package/lib/src/user-accounts-BxgZqjGt.js +10 -0
  577. package/lib/src/user-headset-nsAkiLau.js +57 -0
  578. package/lib/src/users-2-CnGpSLZE.js +15 -0
  579. package/lib/src/users-hA6xggk_.js +14 -0
  580. package/lib/src/video-BpWihNI_.js +10 -0
  581. package/lib/src/volume-BThAw2yn.js +10 -0
  582. package/lib/src/volume-muted-aeB5xUdN.js +10 -0
  583. package/lib/src/watchlist-filled-DN0u9uPt.js +24 -0
  584. package/lib/src/watchlist-hollow-B9t39PYN.js +13 -0
  585. package/lib/src/watchlist-hollow-alt-CVkYAHSm.js +24 -0
  586. package/lib/src/website-C_0agqCX.js +13 -0
  587. package/lib/src/website-filled-mlyF30rW.js +10 -0
  588. package/lib/src/whatsapp-DCNrs0zG.js +14 -0
  589. package/lib/src/wholesale-B5H4aswk.js +13 -0
  590. package/lib/src/wrap-text-iULZ1Msd.js +15 -0
  591. package/lib/src/youtube-C8GpL4B2.js +10 -0
  592. package/lib/src/zoom-2WYMtdQd.js +16 -0
  593. package/lib/src/zoom-WMvDdyz5.js +10 -0
  594. package/lib/src/zoom-in-BpNXDZ6b.js +10 -0
  595. package/lib/src/zoom-out-B7MQdPdu.js +10 -0
  596. package/package.json +2 -2
  597. package/src/brand-page/components/faq-section/FaqSection.test.ts +196 -0
  598. package/src/brand-page/components/faq-section/FaqSection.vue +315 -0
  599. package/src/brand-page/components/logo/Logo.vue +14 -7
  600. package/src/brand-page/components/page/Page.mixin.ts +6 -128
  601. package/src/brand-page/components/page/Page.vue +1 -103
  602. package/src/brand-page/components/page/Page.vue.test.ts +88 -2
  603. package/src/brand-page/components/page/PageComponent.vue +2 -0
  604. package/src/brand-page/components/page-header/HeaderLayout.stories.ts +0 -1
  605. package/src/brand-page/components/page-header/HeaderLayout.vue +52 -7
  606. package/src/brand-page/components/page-header/PageHeader.mixin.ts +24 -7
  607. package/src/brand-page/components/page-header/PageHeader.vue +28 -7
  608. package/src/brand-page/components/page-header/PageHeader.vue.test.ts +190 -4
  609. package/src/brand-page/constants/misc.constants.ts +9 -0
  610. package/src/brand-page/constants/sections/header-display.constants.ts +9 -0
  611. package/src/brand-page/constants/styles.constants.ts +2 -0
  612. package/src/brand-page/models/content.model.ts +1 -0
  613. package/src/brand-page/models/header-button.model.test.ts +26 -0
  614. package/src/brand-page/models/index.ts +37 -0
  615. package/src/brand-page/models/navigation-styles.model.ts +5 -2
  616. package/src/brand-page/utils/__snapshots__/migration.util.test.ts.snap +3 -9
  617. package/src/brand-page/utils/__snapshots__/migration2.util.test.ts.snap +0 -2
  618. package/src/brand-page/utils/__snapshots__/model.util.test.ts.snap +9 -13
  619. package/src/brand-page/utils/container-text-color.util.test.ts +126 -0
  620. package/src/brand-page/utils/container-text-color.util.ts +16 -0
  621. package/src/brand-page/utils/content-callback-util.ts +5 -0
  622. package/src/brand-page/utils/logo.util.recalculate.test.ts +37 -0
  623. package/src/brand-page/utils/logo.util.test.ts +35 -22
  624. package/src/brand-page/utils/logo.util.ts +28 -36
  625. package/src/brand-page/utils/migration/__snapshots__/migration-22-output/edited-brandsite-sections.v22.json +4 -4
  626. package/src/brand-page/utils/migration/__snapshots__/migration-22-output/new-brandcontact-every-section.v22.json +4 -4
  627. package/src/brand-page/utils/migration/__snapshots__/migration-22-output/new-brandpage-every-section.v22.json +4 -4
  628. package/src/brand-page/utils/migration/__snapshots__/migration-22-output/new-brandsite-every-section.v22.json +4 -4
  629. package/src/brand-page/utils/migration/__snapshots__/migration-22-output/real-brandcontact.v22.json +4 -4
  630. package/src/brand-page/utils/migration/__snapshots__/migration-22-output/real-brandpage-general-link.v22.json +4 -4
  631. package/src/brand-page/utils/migration/__snapshots__/migration-22-output/real-brandpage-links.v22.json +4 -4
  632. package/src/brand-page/utils/migration/__snapshots__/migration-22-output/real-brandpage-social-links.v22.json +4 -4
  633. package/src/brand-page/utils/migration/__snapshots__/migration-22-output/real-brandsite-about.v22.json +4 -4
  634. package/src/brand-page/utils/migration/__snapshots__/migration-22-output/real-brandsite-footer.v22.json +4 -4
  635. package/src/brand-page/utils/migration/__snapshots__/migration-22-output/real-brandsite-header-banner.v22.json +4 -4
  636. package/src/brand-page/utils/migration/__snapshots__/migration-22-output/real-brandsite-sections.v22.json +4 -4
  637. package/src/brand-page/utils/migration/migration-01.ts +17 -2
  638. package/src/brand-page/utils/migration/migration-23.test.ts +712 -0
  639. package/src/brand-page/utils/migration/migration-23.ts +214 -0
  640. package/src/brand-page/utils/migration.util.test.ts +32 -6
  641. package/src/brand-page/utils/migration.util.ts +13 -0
  642. package/src/brand-page/utils/model.util.test.ts +27 -2
  643. package/src/brand-page/utils/model.util.ts +6 -0
  644. package/src/brand-page/utils/personalisation.util.test.ts +53 -0
  645. package/src/brand-page/utils/style.util.test.ts +25 -2
  646. package/src/brand-page/utils/view-model.util.test.ts +138 -0
  647. package/src/brand-page/utils/view-model.util.ts +43 -7
  648. package/src/brand-page/view-models.ts +8 -1
  649. package/src/brand-page-maker/assessors/faq-accordion-color-field-visibility.assessor.ts +9 -0
  650. package/src/brand-page-maker/assessors/index.ts +1 -0
  651. package/src/brand-page-maker/components/admin-logo-settings/AdminLogoSettings.mixin.ts +0 -20
  652. package/src/brand-page-maker/components/admin-logo-settings/AdminLogoSettings.vue +1 -11
  653. package/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.ts +0 -6
  654. package/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.vue +0 -60
  655. package/src/brand-page-maker/components/preview/Preview.vue +0 -1
  656. package/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.ts +2 -0
  657. package/src/brand-page-maker/composables/useEventTracker.ts +8 -0
  658. package/src/brand-page-maker/constants/config-settings-constant.ts +122 -1
  659. package/src/brand-page-maker/constants/faq-section-config.test.ts +22 -0
  660. package/src/brand-page-maker/constants/personalisation.constant.ts +5 -3
  661. package/src/brand-page-maker/convertors/faq-display-style.convertor.ts +61 -0
  662. package/src/brand-page-maker/models/content-settings-configs.ts +1 -0
  663. package/src/brand-page-maker/models/content-settings.test.ts +6 -0
  664. package/src/brand-page-maker/models/content-settings.ts +51 -0
  665. package/src/brand-page-maker/models/navigation-style-configs.ts +0 -7
  666. package/src/brand-page-maker/stores/admin-logo-settings/admin-logo-settings-store.ts +0 -49
  667. package/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.save.test.ts +79 -1
  668. package/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.ts +6 -5
  669. package/src/brand-page-maker/stores/brandpage-maker/__snapshots__/brandpage-maker-store.test.ts.snap +0 -1
  670. package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.test.ts +111 -0
  671. package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.ts +18 -28
  672. package/src/brand-page-maker/utils/__snapshots__/apply-color-strategy.golden.test.ts.snap +2940 -300
  673. package/src/brand-page-maker/utils/apply-color-strategy.test.ts +93 -2
  674. package/src/brand-page-maker/utils/apply-color-strategy.ts +69 -19
  675. package/src/brand-page-maker/utils/rte-authoring.util.test.ts +30 -0
  676. package/src/brand-page-maker/utils/rte-authoring.util.ts +14 -0
  677. package/src/brand-page-maker/validators/field.validator.ts +2 -0
  678. package/src/bundles/bundled-translations.de-DE.json +9 -2
  679. package/src/bundles/bundled-translations.es-ES.json +9 -2
  680. package/src/bundles/bundled-translations.fr-CA.json +9 -2
  681. package/src/bundles/bundled-translations.fr-FR.json +9 -2
  682. package/src/bundles/bundled-translations.json +10 -2
  683. package/src/bundles/bundled-translations.pt-BR.json +9 -2
  684. package/src/bundles/bundled-translations.pt-PT.json +9 -2
  685. package/src/lib.ts +1 -0
  686. package/src/metadata-builder/builders/header-builder.test.ts +55 -1
  687. package/src/metadata-builder/builders/header-builder.ts +6 -1
  688. package/src/metadata-builder/builders/section-rules/header.rules.ts +37 -1
  689. package/src/metadata-builder/parsers/section-tool-arguments.ts +2 -1
  690. package/src/shared/color-strategies/color-strategies.ts +4 -0
  691. package/src/shared/color-strategies/rte-field-pairs.test.ts +2 -0
  692. package/src/shared/color-strategies/rte-field-pairs.ts +34 -0
  693. package/src/shared/content-settings/components/content-settings/i18n/content-settings.de-DE.json +10 -1
  694. package/src/shared/content-settings/components/content-settings/i18n/content-settings.es-ES.json +10 -1
  695. package/src/shared/content-settings/components/content-settings/i18n/content-settings.fr-CA.json +10 -1
  696. package/src/shared/content-settings/components/content-settings/i18n/content-settings.fr-FR.json +10 -1
  697. package/src/shared/content-settings/components/content-settings/i18n/content-settings.json +10 -1
  698. package/src/shared/content-settings/components/content-settings/i18n/content-settings.pt-BR.json +10 -1
  699. package/src/shared/content-settings/components/content-settings/i18n/content-settings.pt-PT.json +10 -1
  700. package/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.ts +2 -41
  701. package/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.test.ts +62 -0
  702. package/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.vue +2 -0
  703. package/src/shared/content-settings/components/faq-items-field/FaqItemsField.test.ts +162 -0
  704. package/src/shared/content-settings/components/faq-items-field/FaqItemsField.vue +287 -0
  705. package/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.vue +1 -0
  706. package/src/shared/content-settings/components/items-field/ItemsField.mixin.ts +3 -0
  707. package/src/shared/content-settings/components/items-field/ItemsField.vue +13 -3
  708. package/src/shared/content-settings/store/content-settings-store.test.ts +86 -0
  709. package/src/shared/content-settings/store/content-settings-store.ts +39 -4
  710. package/src/shared/logo-settings/store/logo-settings-store.test.ts +27 -1
  711. package/src/shared/logo-settings/store/logo-settings-store.ts +24 -137
  712. package/src/shared/navigation-style-settings/store/index.ts +0 -12
  713. package/src/shared/page-settings/components/header-settings-panel/HeaderSettingsPanel.test.ts +213 -25
  714. package/src/shared/page-settings/components/header-settings-panel/HeaderSettingsPanel.vue +15 -25
  715. package/src/shared/page-settings/components/page-settings/i18n/page-settings.json +1 -0
  716. package/src/shared/page-settings/components/page-settings-section-styles/HeaderDisplayStyle.test.ts +94 -29
  717. package/src/shared/page-settings/components/page-settings-section-styles/HeaderDisplayStyle.vue +19 -28
  718. package/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.header-button.test.ts +195 -3
  719. package/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.ts +74 -15
  720. package/src/shared/page-settings/components/page-settings-section-styles/i18n/page-settings-section.de-DE.json +0 -1
  721. package/src/shared/page-settings/components/page-settings-section-styles/i18n/page-settings-section.es-ES.json +0 -1
  722. package/src/shared/page-settings/components/page-settings-section-styles/i18n/page-settings-section.fr-CA.json +0 -1
  723. package/src/shared/page-settings/components/page-settings-section-styles/i18n/page-settings-section.fr-FR.json +0 -1
  724. package/src/shared/page-settings/components/page-settings-section-styles/i18n/page-settings-section.json +0 -1
  725. package/src/shared/page-settings/components/page-settings-section-styles/i18n/page-settings-section.pt-BR.json +0 -1
  726. package/src/shared/page-settings/components/page-settings-section-styles/i18n/page-settings-section.pt-PT.json +0 -1
  727. package/src/shared/page-settings/store/page-settings-store.test.ts +22 -0
  728. package/src/shared/page-settings/store/page-settings-store.ts +0 -7
  729. package/src/shared/template-settings/store/template-settings-store.ts +1 -0
  730. package/src/brand-page/components/page/BrandSiteNavigationLayout.vue +0 -70
@@ -0,0 +1,214 @@
1
+ import cloneDeep from 'lodash.clonedeep';
2
+ import type { MigrationData, MigrationOptions } from '../migration.util';
3
+ import {
4
+ BRAND_PAGE_TYPES,
5
+ HEADER_DISPLAY,
6
+ type AbstractPageHeaderStyles,
7
+ type HeaderDisplayStyle,
8
+ type LogoContent,
9
+ type NavModel,
10
+ type PageModel,
11
+ } from '../../';
12
+ import { isLogoContent } from '../model.util';
13
+
14
+ // Mirrors the published site's own home rule: navItems[0] (slug-routes.composable.ts).
15
+ // A nav with no orders has no first entry to open, so it falls back to the first page.
16
+ const findHomePage = (
17
+ nav: NavModel,
18
+ pages: PageModel[],
19
+ ): PageModel | undefined => {
20
+ if (nav.orders.length === 0) {
21
+ return pages[0];
22
+ }
23
+
24
+ const homeRoute = nav.routes.find(
25
+ (route) => route.id === nav.orders[0].routeId,
26
+ );
27
+
28
+ return pages.find((page) => page.id === homeRoute?.pageId);
29
+ };
30
+
31
+ // Frozen copy of `hasVisibleNavigation` (route.util.ts) against the raw orders/routes a
32
+ // migration sees, instead of the NavItemViewModel the live renderer builds.
33
+ const isNavShown = (nav: NavModel): boolean => {
34
+ const isRouteVisible = (routeId: string): boolean => {
35
+ const route = nav.routes.find((r) => r.id === routeId);
36
+
37
+ return route !== undefined && !route.isHidden;
38
+ };
39
+
40
+ const visibleOrders = nav.orders.filter((order) =>
41
+ isRouteVisible(order.routeId),
42
+ );
43
+
44
+ return (
45
+ visibleOrders.length > 1 ||
46
+ (visibleOrders.length === 1 &&
47
+ visibleOrders[0].subRoutes.some((subRoute) =>
48
+ isRouteVisible(subRoute.routeId),
49
+ ))
50
+ );
51
+ };
52
+
53
+ const isFirstBlockAShownLogo = (page: PageModel | undefined): boolean => {
54
+ const first = page?.contents[0];
55
+
56
+ return isLogoContent(first) && first.isLogoVisible;
57
+ };
58
+
59
+ const isFirstBlockALogo = (page: PageModel | undefined): boolean =>
60
+ isLogoContent(page?.contents[0]);
61
+
62
+ // The home page's own leading block, shown or hidden; any other shape means the header
63
+ // keeps what it already has.
64
+ const findSourceLogoBlock = (
65
+ homePage: PageModel | undefined,
66
+ ): LogoContent | undefined => {
67
+ const homeBlock = homePage?.contents[0];
68
+
69
+ return homeBlock && isLogoContent(homeBlock) ? homeBlock : undefined;
70
+ };
71
+
72
+ // Retired field read raw (legacy-migrations.md).
73
+ const takeRenderAfterLogo = (
74
+ navigation: AbstractPageHeaderStyles['navigation'],
75
+ ): boolean => {
76
+ const raw = navigation as unknown as Record<string, unknown>;
77
+ const value = raw['renderAfterLogo'] === true;
78
+
79
+ delete raw['renderAfterLogo'];
80
+
81
+ return value;
82
+ };
83
+
84
+ // A tab layout always becomes the centred no-logo layout: today's BP/BC nav draws
85
+ // centred whatever is stored. Matched by the absence of "no-logo" in the stored value
86
+ // itself, not an enum allowlist, so a value this migration has never seen can't slip
87
+ // through unclassified.
88
+ const nextDisplayStyle = (
89
+ viewport: {
90
+ header: AbstractPageHeaderStyles;
91
+ stacked: HeaderDisplayStyle;
92
+ tabNoLogo: HeaderDisplayStyle;
93
+ hamburgerNoLogo: HeaderDisplayStyle;
94
+ isHamburger: boolean;
95
+ },
96
+ showsLogo: boolean,
97
+ ): HeaderDisplayStyle => {
98
+ if (showsLogo) {
99
+ return viewport.stacked;
100
+ }
101
+
102
+ if (viewport.isHamburger) {
103
+ return viewport.header.displayStyle.includes('no-logo')
104
+ ? viewport.header.displayStyle
105
+ : viewport.hamburgerNoLogo;
106
+ }
107
+
108
+ return viewport.tabNoLogo;
109
+ };
110
+
111
+ /**
112
+ * Each viewport decides on its own whether the home page's logo sits above the nav there:
113
+ * if so, the header takes the block's values, shown, centred; otherwise the same values,
114
+ * hidden. `options.isTemplate` (blank site, create-draft, template apply, or the admin
115
+ * maker editing a template) treats every tab viewport as above the nav, regardless of the
116
+ * stored setting. See `backward-compatibility.md`.
117
+ */
118
+ export const migration23 = async (
119
+ migrationResult: MigrationData,
120
+ options?: MigrationOptions,
121
+ ): Promise<MigrationData> => {
122
+ const { brandPageModel } = migrationResult;
123
+
124
+ if (brandPageModel.brandPageType === BRAND_PAGE_TYPES.brandSite) {
125
+ const { pageHeaderDesktop, pageHeaderMobile } = brandPageModel;
126
+
127
+ if (pageHeaderDesktop && pageHeaderMobile) {
128
+ for (const header of [pageHeaderDesktop, pageHeaderMobile]) {
129
+ takeRenderAfterLogo(header.navigation);
130
+ }
131
+ }
132
+
133
+ return migrationResult;
134
+ }
135
+
136
+ const { pages, nav, pageHeaderDesktop, pageHeaderMobile } = brandPageModel;
137
+
138
+ if (!nav || !pageHeaderDesktop || !pageHeaderMobile || !pages) {
139
+ return migrationResult;
140
+ }
141
+
142
+ const navShown = isNavShown(nav);
143
+ const homePage = findHomePage(nav, pages);
144
+ const sourceBlock = findSourceLogoBlock(homePage);
145
+
146
+ // No real `renderAfterLogo` to honour on this path; see the function doc above.
147
+ const treatAsAboveTheNav = options?.isTemplate === true;
148
+
149
+ const viewports = [
150
+ {
151
+ header: pageHeaderDesktop,
152
+ stacked: HEADER_DISPLAY.DESKTOP_TAB_5,
153
+ tabNoLogo: HEADER_DISPLAY.DESKTOP_TAB_NO_LOGO_2,
154
+ hamburgerNoLogo: HEADER_DISPLAY.DESKTOP_HAMBURGER_NO_LOGO_3,
155
+ },
156
+ {
157
+ header: pageHeaderMobile,
158
+ stacked: HEADER_DISPLAY.MOBILE_TAB_1,
159
+ tabNoLogo: HEADER_DISPLAY.MOBILE_TAB_NO_LOGO_1,
160
+ hamburgerNoLogo: HEADER_DISPLAY.MOBILE_HAMBURGER_NO_LOGO_3,
161
+ },
162
+ ].map((v) => {
163
+ const isHamburger = v.header.navigation.displayType.includes('hamburger');
164
+ const renderAfterLogo = takeRenderAfterLogo(v.header.navigation);
165
+
166
+ return {
167
+ ...v,
168
+ isHamburger,
169
+ logoAboveNav:
170
+ !isHamburger && (treatAsAboveTheNav || (navShown && renderAfterLogo)),
171
+ };
172
+ });
173
+
174
+ // A new site's header carries every page's leading logo block whether or not it was
175
+ // shown (R29); an existing site only carries one the home page actually showed.
176
+ const startsWithLogo = treatAsAboveTheNav
177
+ ? isFirstBlockALogo
178
+ : isFirstBlockAShownLogo;
179
+
180
+ // Collected before any header write: stripping a block must not change what "above
181
+ // the nav" saw, for the home page's own copy above or any other page's own check.
182
+ const pagesToStrip = viewports.every((v) => v.logoAboveNav)
183
+ ? pages.filter(startsWithLogo)
184
+ : [];
185
+
186
+ for (const v of viewports) {
187
+ const { header } = v;
188
+ const showsLogo = treatAsAboveTheNav
189
+ ? v.logoAboveNav
190
+ : v.logoAboveNav && isFirstBlockAShownLogo(homePage);
191
+
192
+ if (sourceBlock) {
193
+ header.logoImage = cloneDeep(sourceBlock.logoImage);
194
+ header.logoTemplateImage =
195
+ cloneDeep(sourceBlock.logoTemplateImage) || undefined;
196
+ header.logoImageHeight = sourceBlock.logoImageHeight;
197
+ header.logoImageWidth = sourceBlock.logoImageWidth;
198
+ header.logoBackgroundStyle = cloneDeep(sourceBlock.backgroundStyle);
199
+ }
200
+
201
+ header.isLogoVisible = showsLogo;
202
+ header.displayStyle = nextDisplayStyle(v, showsLogo);
203
+ header.backgroundStyle = {
204
+ ...header.backgroundStyle,
205
+ backgroundColor: 'transparent',
206
+ };
207
+ }
208
+
209
+ pagesToStrip.forEach((page) => {
210
+ page.contents.shift();
211
+ });
212
+
213
+ return migrationResult;
214
+ };
@@ -3,6 +3,8 @@ import { migrateNewLogoLogic } from './migration/migration-01';
3
3
  import { migration17 } from './migration/migration-17';
4
4
  import { migration22 } from './migration/migration-22';
5
5
  import type * as Migration22Module from './migration/migration-22';
6
+ import { migration23 } from './migration/migration-23';
7
+ import type * as Migration23Module from './migration/migration-23';
6
8
  import {
7
9
  BrandPageModel,
8
10
  type BrandPageData,
@@ -49,6 +51,12 @@ vi.mock('./migration/migration-22', async (importOriginal) => {
49
51
  return { ...actual, migration22: vi.fn(actual.migration22) };
50
52
  });
51
53
 
54
+ vi.mock('./migration/migration-23', async (importOriginal) => {
55
+ const actual = await importOriginal<typeof Migration23Module>();
56
+
57
+ return { ...actual, migration23: vi.fn(actual.migration23) };
58
+ });
59
+
52
60
  describe('migration.util', () => {
53
61
  const getBsModel: () => BrandPageModel = () => {
54
62
  return {
@@ -2488,10 +2496,6 @@ describe('migration.util', () => {
2488
2496
  vi.mocked(migration22).mockClear();
2489
2497
  });
2490
2498
 
2491
- test('22 is the latest model version', () => {
2492
- expect(GetLatestModelVersion()).toBe(22);
2493
- });
2494
-
2495
2499
  test('migration 22 upgrades a v=21 model to v=22', async () => {
2496
2500
  const { brandPageModel } = await migrateBrandPageModel(
2497
2501
  {
@@ -2503,7 +2507,7 @@ describe('migration.util', () => {
2503
2507
  );
2504
2508
 
2505
2509
  expect(migration22).toHaveBeenCalledTimes(1);
2506
- expect(brandPageModel.v).toBe(22);
2510
+ expect(brandPageModel.v).toBe(GetLatestModelVersion());
2507
2511
  });
2508
2512
 
2509
2513
  test('migration 22 does not rerun on a v=22 model', async () => {
@@ -2517,11 +2521,33 @@ describe('migration.util', () => {
2517
2521
  );
2518
2522
 
2519
2523
  expect(migration22).not.toHaveBeenCalled();
2520
- expect(brandPageModel.v).toBe(22);
2524
+ expect(brandPageModel.v).toBe(GetLatestModelVersion());
2521
2525
 
2522
2526
  await migrateBrandPageModel(brandPageModel, options);
2523
2527
 
2524
2528
  expect(migration22).not.toHaveBeenCalled();
2525
2529
  });
2526
2530
  });
2531
+
2532
+ describe('migration 23 - header logo migration', () => {
2533
+ const options = { isUserDraft: true, isServerRender: false };
2534
+
2535
+ beforeEach(() => {
2536
+ vi.mocked(migration23).mockClear();
2537
+ });
2538
+
2539
+ test('header logo migration upgrades a v=22 model to v=23', async () => {
2540
+ const { brandPageModel } = await migrateBrandPageModel(
2541
+ {
2542
+ v: 22,
2543
+ pages: [{ contents: [] }],
2544
+ styles: {},
2545
+ } as unknown as BrandPageModel,
2546
+ options,
2547
+ );
2548
+
2549
+ expect(migration23).toHaveBeenCalledTimes(1);
2550
+ expect(brandPageModel.v).toBe(23);
2551
+ });
2552
+ });
2527
2553
  });
@@ -26,6 +26,7 @@ import { migration20 } from './migration/migration-20';
26
26
  import { migration20_5 } from './migration/migration-20_5';
27
27
  import { migration21 } from './migration/migration-21';
28
28
  import { migration22 } from './migration/migration-22';
29
+ import { migration23 } from './migration/migration-23';
29
30
 
30
31
  export interface MigrationData {
31
32
  brandPageModel: BrandPageModel;
@@ -37,6 +38,9 @@ export interface MigrationOptions {
37
38
  isUserDraft: boolean;
38
39
  isServerRender: boolean;
39
40
  disableLogoSizeMigration?: boolean;
41
+ /** A new BP/BC site, in or on its way to the maker: blank site, create-draft, template
42
+ * apply, or the admin maker editing a template (migration-23's own new-site rule). */
43
+ isTemplate?: boolean;
40
44
  }
41
45
 
42
46
  interface MigrationTableItem {
@@ -246,6 +250,15 @@ const MIGRATION_TABLE = [
246
250
  description:
247
251
  'BP-5969 Global Text Style V2: expand 4 roles -> 10 (H1-6/P1-3/button); roles keep default typography, reconnect all content to its nearest tier with its size kept as a per-block override, seed role colour + strip baked RTE typography (appearance-preserving, once)',
248
252
  },
253
+ {
254
+ version: 23,
255
+ migrateFn: migration23,
256
+ // Version-gated: runs once, when modelVersion < 23. Not re-run safe on BP/BC:
257
+ // renderAfterLogo is deleted, so a second pass would hide every header logo while
258
+ // the stripped blocks stay gone.
259
+ description:
260
+ "BP-6183 Header logo migration: renderAfterLogo deleted from every header; BP/BC headers take the home page's own leading logo block where it sits above the nav per viewport (hidden with its values otherwise); that block removed once the header carries it on both viewports; header background colour cleared",
261
+ },
249
262
  ] as MigrationTableItem[];
250
263
 
251
264
  export const GetLatestModelVersion = () =>
@@ -3,14 +3,18 @@ import {
3
3
  brandPageData,
4
4
  brandPageNoLogoData,
5
5
  } from '../__fixtures__/brand-page-sample-data';
6
- import { BrandPageModel, type LogoImageModel } from '../models';
6
+ import {
7
+ BRAND_PAGE_TYPES,
8
+ BrandPageModel,
9
+ type LogoImageModel,
10
+ } from '../models';
7
11
  import * as logoUtil from './logo.util';
8
12
 
9
13
  const LOGO_IMAGE_URL =
10
14
  'https://staging-dynamic.brandcrowd.com/asset/logodraft/brand-page/7a0545cd-ff28-46c2-a496-36cf7fd1b91b?v=637684854579600000&dimensionsType=preview_image_transparent_no_buffer&outputFormat=png';
11
15
 
12
16
  describe('model.util', () => {
13
- test('applyLogoImageToBrandPageModelLogoContents should return brand page model with replaced logo image url', () => {
17
+ test('applyLogoImageToBrandPageModelLogoContents should return brand page model with replaced logo image url, header included', () => {
14
18
  // Arrange
15
19
  const logoImage: LogoImageModel = {
16
20
  ...logoUtil.safeGetLogoImageFromLogoImageUrl(LOGO_IMAGE_URL)!,
@@ -26,6 +30,27 @@ describe('model.util', () => {
26
30
  expect(model).toMatchSnapshot();
27
31
  });
28
32
 
33
+ test('applyLogoImageToBrandPageModelLogoContents leaves a brand site header untouched', () => {
34
+ const logoImage: LogoImageModel = {
35
+ ...logoUtil.safeGetLogoImageFromLogoImageUrl(LOGO_IMAGE_URL)!,
36
+ };
37
+
38
+ const bsModel = new BrandPageModel(brandPageData);
39
+
40
+ bsModel.brandPageType = BRAND_PAGE_TYPES.brandSite;
41
+
42
+ const originalToken = bsModel.pageHeaderDesktop.logoImage.logoDraftToken;
43
+
44
+ applyLogoImageToBrandPageModelLogoContents(bsModel, logoImage);
45
+
46
+ expect(bsModel.pageHeaderDesktop.logoImage.logoDraftToken).toBe(
47
+ originalToken,
48
+ );
49
+ expect(bsModel.pageHeaderMobile.logoImage.logoDraftToken).toBe(
50
+ originalToken,
51
+ );
52
+ });
53
+
29
54
  test('applyLogoImageToBrandPageModelLogoContents should not modify data when no logo in model', () => {
30
55
  // Arrange
31
56
  const logoImage: LogoImageModel = {
@@ -20,6 +20,7 @@ import {
20
20
  type RequestPaymentContent,
21
21
  type ContactFormContent,
22
22
  type LogoImageModel,
23
+ BRAND_PAGE_TYPES,
23
24
  CONTENT_TYPES,
24
25
  type ShopContent,
25
26
  type ImageContent,
@@ -45,6 +46,11 @@ export const applyLogoImageToBrandPageModelLogoContents = (
45
46
  }),
46
47
  );
47
48
 
49
+ if (model.brandPageType !== BRAND_PAGE_TYPES.brandSite) {
50
+ model.pageHeaderDesktop.logoImage = logoImage;
51
+ model.pageHeaderMobile.logoImage = logoImage;
52
+ }
53
+
48
54
  return model;
49
55
  };
50
56
 
@@ -2,6 +2,7 @@ import { BrandPageModel, BRAND_PAGE_TYPES } from '../models';
2
2
  import type {
3
3
  BannerSectionContent,
4
4
  EmailContent,
5
+ FaqSectionContent,
5
6
  GeneralLinkContent,
6
7
  ImageGalleryContent,
7
8
  ImagesSectionContent,
@@ -28,6 +29,7 @@ import {
28
29
  createInitialTestimonialSectionContent,
29
30
  createInitialProfileContent,
30
31
  createInitialButtonContent,
32
+ createInitialFaqSectionContent,
31
33
  } from '@brand-page-maker/models';
32
34
  import { faker } from '@faker-js/faker';
33
35
  import { isTiptapDocument } from '@brand-page-maker/utils';
@@ -860,6 +862,57 @@ describe('personalisation.util', async () => {
860
862
  );
861
863
  });
862
864
 
865
+ test('applyUserPersonalisationToBrandPageModelAsync personalises an FAQ title, description and each item', async () => {
866
+ const faq = createInitialFaqSectionContent();
867
+ const faqContent = {
868
+ ...faq,
869
+ title: 'title',
870
+ description: 'description',
871
+ items: [
872
+ {
873
+ ...faq.items[0],
874
+ id: 'q1',
875
+ question: 'Question 1',
876
+ answer: 'Answer 1',
877
+ },
878
+ {
879
+ ...faq.items[0],
880
+ id: 'q2',
881
+ question: 'Question 2',
882
+ answer: 'Answer 2',
883
+ },
884
+ ],
885
+ personalisationRole: 'about',
886
+ } as FaqSectionContent;
887
+
888
+ const model = new BrandPageModel({
889
+ brandPageType: BRAND_PAGE_TYPES.brandSite,
890
+ pages: [{ title: 'home', slug: 'home', contents: [faqContent] }],
891
+ });
892
+
893
+ const result = await applyUserPersonalisationToBrandPageModelAsync(
894
+ PERSONALISATION,
895
+ model,
896
+ );
897
+
898
+ const personalised = result.model.pages[0].contents[0] as FaqSectionContent;
899
+ const sourceItems = PERSONALISATION.aboutSection.items!;
900
+
901
+ expect(result.isModified).toBe(true);
902
+ expect(personalised.title).toBe(PERSONALISATION.aboutSection.title);
903
+ expect(personalised.description).toBe(
904
+ PERSONALISATION.aboutSection.descriptionShort,
905
+ );
906
+ expect(personalised.items.map((item) => item.question)).toEqual([
907
+ sourceItems[0].itemTitle,
908
+ sourceItems[1].itemTitle,
909
+ ]);
910
+ expect(personalised.items.map((item) => item.answer)).toEqual([
911
+ sourceItems[0].itemDescription,
912
+ sourceItems[1].itemDescription,
913
+ ]);
914
+ });
915
+
863
916
  test('applyUserPersonalisationToBrandPageModelAsync should not personlise certain element if override has `none`', async () => {
864
917
  // Arrange
865
918
  const textContent = {
@@ -476,6 +476,29 @@ describe('style.util', () => {
476
476
  );
477
477
  });
478
478
 
479
+ test('applyLogoThemeToBrandPageModel keeps a stored header logo background colour', () => {
480
+ // Arrange
481
+ const logoTheme = logoWithFlatColorsTheme;
482
+ const logoBackgroundStyle = { backgroundColor: 'var(--palette-custom-x)' };
483
+ const model = new BrandPageModel({
484
+ ...BRAND_SITE,
485
+ pages: [],
486
+ pageHeaderMobile: new PageHeaderMobile({ logoBackgroundStyle }),
487
+ pageHeaderDesktop: new PageHeaderDesktop({ logoBackgroundStyle }),
488
+ });
489
+
490
+ // Act
491
+ const { model: result } = applyLogoThemeToBrandPageModel(logoTheme, model);
492
+
493
+ // Assert
494
+ expect(result.pageHeaderMobile.logoBackgroundStyle).toEqual(
495
+ logoBackgroundStyle,
496
+ );
497
+ expect(result.pageHeaderDesktop.logoBackgroundStyle).toEqual(
498
+ logoBackgroundStyle,
499
+ );
500
+ });
501
+
479
502
  test('applyLogoThemeToBrandPageStyleRecursive copy key value to new style when value is not a string or object', () => {
480
503
  // Arrange
481
504
  const logoTheme: LogoTheme = {
@@ -489,7 +512,7 @@ describe('style.util', () => {
489
512
  },
490
513
  };
491
514
 
492
- const style = { renderAfterLogo: true };
515
+ const style = { isLogoVisible: true };
493
516
 
494
517
  // Act
495
518
  const { newStyle } = applyLogoThemeToBrandPageStyleRecursive(
@@ -499,7 +522,7 @@ describe('style.util', () => {
499
522
  );
500
523
 
501
524
  // Assert
502
- expect((newStyle as any).renderAfterLogo).toBe(true);
525
+ expect((newStyle as any).isLogoVisible).toBe(true);
503
526
  });
504
527
 
505
528
  test('parseLogoThemeToCssStyles should return default values when given empty arrays', () => {
@@ -14,6 +14,7 @@ import {
14
14
  BUTTON_LINK_TYPE,
15
15
  BrandPageModel,
16
16
  PageHeaderDesktop,
17
+ PageHeaderMobile,
17
18
  PageStyles,
18
19
  } from '../models';
19
20
  import {
@@ -27,15 +28,24 @@ import {
27
28
  mapToTextViewModel,
28
29
  mapToViewModel,
29
30
  applyViewModelTextStyles,
31
+ applyLogoImageToBrandPageViewModel,
32
+ applyLogoImageToBrandPageModel,
33
+ applyLogoTemplateImageToBrandPageViewModel,
30
34
  getBrandPageViewModelFromBrandPageModel,
31
35
  getCriticalResourceURLs,
32
36
  resolveSaveContactTitleStyle,
33
37
  } from './view-model.util';
34
38
  import type { BrandPageViewModel } from '../view-models';
39
+ import type {
40
+ BrandPageType,
41
+ LogoImageModel,
42
+ LogoTemplateImageModel,
43
+ } from '../models';
35
44
  import {
36
45
  ALIGN_CARD_CENTER,
37
46
  HEADER_DISPLAY,
38
47
  NAVIGATION_DISPLAY,
48
+ STACKED_LOGO_LAYOUTS,
39
49
  } from '../constants';
40
50
  import * as uuid from 'uuid';
41
51
  import {
@@ -809,6 +819,134 @@ describe('view model util', () => {
809
819
  );
810
820
  });
811
821
 
822
+ // The header logo's background colour draws only in the two stacked layouts (logo
823
+ // centred above or below the nav); elsewhere the stored colour is kept but nothing paints.
824
+ describe('mapToPageHeaderViewModel header logo background', () => {
825
+ const A_COLOUR = { backgroundColor: 'var(--palette-1)' };
826
+
827
+ test.each(STACKED_LOGO_LAYOUTS)(
828
+ 'stacked layouts draw the stored colour (%s)',
829
+ (displayStyle) => {
830
+ const header = displayStyle.startsWith('desktop')
831
+ ? new PageHeaderDesktop({
832
+ displayStyle,
833
+ logoBackgroundStyle: A_COLOUR,
834
+ })
835
+ : new PageHeaderMobile({
836
+ displayStyle,
837
+ logoBackgroundStyle: A_COLOUR,
838
+ });
839
+
840
+ const viewModel = mapToPageHeaderViewModel(
841
+ header,
842
+ new PageStyles(),
843
+ [],
844
+ );
845
+
846
+ expect(viewModel.logo.styles.backgroundStyle.backgroundColor).toBe(
847
+ 'var(--palette-1)',
848
+ );
849
+ },
850
+ );
851
+
852
+ test('a side-by-side layout draws nothing, and the stored colour is left as is; mobile with none draws nothing', () => {
853
+ const header = new PageHeaderDesktop({
854
+ displayStyle: HEADER_DISPLAY.DESKTOP_TAB_1,
855
+ logoBackgroundStyle: A_COLOUR,
856
+ });
857
+
858
+ const viewModel = mapToPageHeaderViewModel(header, new PageStyles(), []);
859
+
860
+ expect(viewModel.logo.styles.backgroundStyle).toEqual({});
861
+ expect(header.logoBackgroundStyle).toEqual(A_COLOUR);
862
+
863
+ const mobile = mapToPageHeaderViewModel(
864
+ new PageHeaderMobile(),
865
+ new PageStyles(),
866
+ [],
867
+ );
868
+
869
+ expect(mobile.logo.styles.backgroundStyle).toEqual({});
870
+ });
871
+ });
872
+
873
+ describe('logo appliers write both header viewports for BP/BC', () => {
874
+ // Footers are brand-site only; headers never start with a logo image/template
875
+ // image of their own here, so a defined value after the call proves the write.
876
+ const makeViewModel = (brandPageType: BrandPageType): BrandPageViewModel =>
877
+ ({
878
+ brandPageType,
879
+ pages: [{ contents: [] }],
880
+ headerViewModelDesktop: { logo: {} },
881
+ headerViewModelMobile: { logo: {} },
882
+ footerViewModelDesktop: { logo: {} },
883
+ footerViewModelMobile: { logo: {} },
884
+ }) as unknown as BrandPageViewModel;
885
+
886
+ test('applyLogoImageToBrandPageViewModel writes both header viewports for a brand page; footer stays brand-site only', () => {
887
+ const logoImage = {
888
+ logoDraftToken: 'new-token',
889
+ logoVariation: 0,
890
+ logoLastUpdate: undefined,
891
+ } as LogoImageModel;
892
+
893
+ const bp = applyLogoImageToBrandPageViewModel(
894
+ makeViewModel(BRAND_PAGE_TYPES.default),
895
+ logoImage,
896
+ );
897
+
898
+ expect(bp.headerViewModelDesktop.logo.logoImage).toBe(logoImage);
899
+ expect(bp.headerViewModelMobile.logo.logoImage).toBe(logoImage);
900
+ expect(bp.footerViewModelDesktop.logo.logoImage).toBeUndefined();
901
+ });
902
+
903
+ test('applyLogoTemplateImageToBrandPageViewModel writes both header viewports for a brand page; footer stays brand-site only', () => {
904
+ const logoTemplateImage = {
905
+ logoTemplateToken: 'tmpl-token',
906
+ } as LogoTemplateImageModel;
907
+
908
+ const bp = applyLogoTemplateImageToBrandPageViewModel(
909
+ makeViewModel(BRAND_PAGE_TYPES.brandContact),
910
+ logoTemplateImage,
911
+ );
912
+
913
+ expect(bp.headerViewModelDesktop.logo.logoTemplateImage).toBe(
914
+ logoTemplateImage,
915
+ );
916
+ expect(bp.headerViewModelMobile.logo.logoTemplateImage).toBe(
917
+ logoTemplateImage,
918
+ );
919
+ expect(bp.footerViewModelDesktop.logo.logoTemplateImage).toBeUndefined();
920
+ });
921
+
922
+ test('applyLogoImageToBrandPageModel writes both header viewports for a brand page; footer stays brand-site only', () => {
923
+ const logoImage = {
924
+ logoDraftToken: 'new-token',
925
+ logoVariation: 0,
926
+ logoLastUpdate: undefined,
927
+ } as LogoImageModel;
928
+
929
+ const makeModel = (brandPageType: BrandPageType) =>
930
+ ({
931
+ brandPageType,
932
+ pages: [{ contents: [] }],
933
+ pageHeaderDesktop: {},
934
+ pageHeaderMobile: {},
935
+ pageFooterDesktop: {},
936
+ pageFooterMobile: {},
937
+ }) as unknown as BrandPageModel;
938
+
939
+ const bp = applyLogoImageToBrandPageModel(
940
+ makeModel(BRAND_PAGE_TYPES.default),
941
+ logoImage,
942
+ );
943
+
944
+ expect(bp.pageHeaderDesktop.logoImage).toBe(logoImage);
945
+ expect(bp.pageHeaderMobile.logoImage).toBe(logoImage);
946
+ expect(bp.pageFooterDesktop.logoImage).toBeUndefined();
947
+ });
948
+ });
949
+
812
950
  // BP-5969 (R1) — page data keeps only what a field sets itself; the painter references
813
951
  // the role for the rest (`roleTypographyStyle`/`fillRteRunTypography`). Colour, alignment,
814
952
  // autoscale and `textStyleType` still resolve here; the seven typography keys do not merge.