@designcrowd/library.brand-page 5.17.28 → 5.18.0

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 (380) hide show
  1. package/lib/src/{CreatedOnBrandCrowd-de-de-CJZpKPNH.js → CreatedOnBrandCrowd-de-de-xmkupPus.js} +1 -1
  2. package/lib/src/{CreatedOnBrandCrowd-en-us-DkIa7iEb.js → CreatedOnBrandCrowd-en-us-Ck7EdTtb.js} +1 -1
  3. package/lib/src/{CreatedOnBrandCrowd-es-es-CE2p6XHz.js → CreatedOnBrandCrowd-es-es-BC8sJuDH.js} +1 -1
  4. package/lib/src/{CreatedOnBrandCrowd-fr-fr-BBjOZS3M.js → CreatedOnBrandCrowd-fr-ca-CN-UBe1q.js} +1 -1
  5. package/lib/src/{CreatedOnBrandCrowd-fr-ca-BBjOZS3M.js → CreatedOnBrandCrowd-fr-fr-CN-UBe1q.js} +1 -1
  6. package/lib/src/{CreatedOnBrandCrowd-pt-pt-Dayzl4BZ.js → CreatedOnBrandCrowd-pt-br-CajQyNkx.js} +1 -1
  7. package/lib/src/{CreatedOnBrandCrowd-pt-br-Dayzl4BZ.js → CreatedOnBrandCrowd-pt-pt-CajQyNkx.js} +1 -1
  8. package/lib/src/{CreatedOnDcom-de-de-CFzDqfCb.js → CreatedOnDcom-de-de-BRCNMmDq.js} +1 -1
  9. package/lib/src/{CreatedOnDcom-en-us-C2jIPBDY.js → CreatedOnDcom-en-us-BzQDtZhc.js} +1 -1
  10. package/lib/src/{CreatedOnDcom-es-es-qejpzqho.js → CreatedOnDcom-es-es-D-qAM4Cd.js} +1 -1
  11. package/lib/src/{CreatedOnDcom-fr-ca-DMO9Ld7K.js → CreatedOnDcom-fr-ca-CZ1irFOc.js} +1 -1
  12. package/lib/src/{CreatedOnDcom-fr-fr-BFWN9qTP.js → CreatedOnDcom-fr-fr-Gb5BCF0N.js} +1 -1
  13. package/lib/src/{CreatedOnDcom-pt-br-CneD3ghF.js → CreatedOnDcom-pt-br-CAQV0q6o.js} +1 -1
  14. package/lib/src/{CreatedOnDcom-pt-pt-Cg1B7s0o.js → CreatedOnDcom-pt-pt-D6tQdQFh.js} +1 -1
  15. package/lib/src/brand-page/components/image-gallery/ImageGalleryModal.mixin.js +2 -2
  16. package/lib/src/brand-page/models/brand-page-context.model.d.ts +0 -2
  17. package/lib/src/brand-page/models/brand-page-context.model.js +1 -11
  18. package/lib/src/brand-page/models/index.d.ts +1 -0
  19. package/lib/src/brand-page/models/index.js +1 -0
  20. package/lib/src/brand-page/utils/color.util.js +23 -3
  21. package/lib/src/brand-page/utils/raygun.util.d.ts +5 -1
  22. package/lib/src/brand-page/utils/raygun.util.js +7 -2
  23. package/lib/src/brand-page/utils/svg-color.util.js +1 -2
  24. package/lib/src/brand-page/utils/view-model.util.js +1 -1
  25. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.d.ts +1 -31
  26. package/lib/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-examples.js +0 -2
  27. package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.d.ts +2 -31
  28. package/lib/src/brand-page-maker/components/preview/Preview.mixin.d.ts +0 -14
  29. package/lib/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.mixin.d.ts +0 -28
  30. package/lib/src/brand-page-maker/components/seo-settings/SeoPageSettings.mixin.d.ts +0 -28
  31. package/lib/src/brand-page-maker/components/seo-settings/UrlSettings.mixin.d.ts +0 -28
  32. package/lib/src/brand-page-maker/components/seo-settings/UseExistingDomainModal.mixin.d.ts +0 -28
  33. package/lib/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.d.ts +0 -28
  34. package/lib/src/brand-page-maker/components/upgrade-to-premium-button/UpgradeToPremiumButton.mixin.d.ts +0 -28
  35. package/lib/src/brand-page-maker/composables/ai-chat/aiErrorCopy.d.ts +35 -0
  36. package/lib/src/brand-page-maker/composables/ai-chat/aiErrorCopy.js +108 -0
  37. package/lib/src/brand-page-maker/composables/ai-chat/{useAiChat.d.ts → types.d.ts} +5 -13
  38. package/lib/src/brand-page-maker/composables/ai-chat/types.js +1 -0
  39. package/lib/src/brand-page-maker/composables/ai-chat/useAiMetadataBuilder.d.ts +19 -0
  40. package/lib/src/brand-page-maker/composables/ai-chat/useAiMetadataBuilder.js +1 -0
  41. package/lib/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.d.ts +1 -1
  42. package/lib/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.js +488 -82
  43. package/lib/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.js +5 -5
  44. package/lib/src/brand-page-maker/composables/useEventTracker.d.ts +6 -16
  45. package/lib/src/brand-page-maker/composables/useEventTracker.js +19 -21
  46. package/lib/src/brand-page-maker/constants/sidebar-constant.d.ts +0 -1
  47. package/lib/src/brand-page-maker/constants/sidebar-constant.js +7 -15
  48. package/lib/src/brand-page-maker/convertors/image-aspect-ratio.convertor.js +2 -2
  49. package/lib/src/brand-page-maker/convertors/text-size-value.convertor.js +3 -1
  50. package/lib/src/brand-page-maker/stores/ai-checkpoint/ai-checkpoint-store.d.ts +30660 -0
  51. package/lib/src/brand-page-maker/stores/ai-checkpoint/ai-checkpoint-store.js +34 -0
  52. package/lib/src/brand-page-maker/stores/ai-thread/ai-website-builder-thread-store.d.ts +1 -1
  53. package/lib/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.d.ts +0 -28
  54. package/lib/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.js +42 -2
  55. package/lib/src/brand-page-maker/stores/index.d.ts +1 -1
  56. package/lib/src/brand-page-maker/stores/index.js +1 -1
  57. package/lib/src/brand-page-maker/stores/user/user-store.js +0 -1
  58. package/lib/src/bundled-translations-CnareLWC.js +175 -0
  59. package/lib/src/bundled-translations.de-DE-2Ys7epLO.js +175 -0
  60. package/lib/src/bundled-translations.es-ES-Cjp-G8rT.js +175 -0
  61. package/lib/src/bundled-translations.fr-CA-CsaW4Oae.js +175 -0
  62. package/lib/src/bundled-translations.fr-FR-DIT2dd8J.js +175 -0
  63. package/lib/src/bundled-translations.pt-BR-BamoBpDW.js +175 -0
  64. package/lib/src/bundled-translations.pt-PT-C9A4hY_e.js +175 -0
  65. package/lib/src/bundles/bundled-translations.de-DE.json +1 -20
  66. package/lib/src/bundles/bundled-translations.es-ES.json +1 -20
  67. package/lib/src/bundles/bundled-translations.fr-CA.json +1 -20
  68. package/lib/src/bundles/bundled-translations.fr-FR.json +1 -20
  69. package/lib/src/bundles/bundled-translations.json +1 -20
  70. package/lib/src/bundles/bundled-translations.pt-BR.json +1 -20
  71. package/lib/src/bundles/bundled-translations.pt-PT.json +1 -20
  72. package/lib/src/clients/ai-assistant-client.d.ts +30 -29
  73. package/lib/src/clients/ai-assistant-client.js +16 -16
  74. package/lib/src/clients/design-template-client.d.ts +0 -2
  75. package/lib/src/clients/design-template-client.js +0 -38
  76. package/lib/src/clients/websocket-gateway-client.d.ts +9 -1
  77. package/lib/src/composables/useTranslate.d.ts +2 -1
  78. package/lib/src/composables/useTranslate.js +2 -1
  79. package/lib/src/constants/ui.d.ts +0 -1
  80. package/lib/src/css/library.brand-page-brandCrowd.min.css +225 -134
  81. package/lib/src/css/library.brand-page-brandPage.min.css +227 -121
  82. package/lib/src/css/library.brand-page-designCom.min.css +225 -134
  83. package/lib/src/css/library.brand-page-preview.min.css +225 -118
  84. package/lib/src/index.d.ts +1 -1
  85. package/lib/src/index.mjs +1 -1
  86. package/lib/src/{lib-33w_DBny.js → lib-CSRUPpSo.js} +30887 -29395
  87. package/lib/src/metadata-builder/ai-metadata-executor.d.ts +21 -0
  88. package/lib/src/metadata-builder/ai-metadata-executor.js +56 -3
  89. package/lib/src/metadata-builder/builders/add-page-builder.d.ts +2 -4
  90. package/lib/src/metadata-builder/builders/add-page-builder.js +5 -8
  91. package/lib/src/metadata-builder/builders/footer-builder.d.ts +11 -0
  92. package/lib/src/metadata-builder/builders/footer-builder.js +151 -0
  93. package/lib/src/metadata-builder/builders/global-styles-builder.d.ts +15 -0
  94. package/lib/src/metadata-builder/builders/global-styles-builder.js +129 -0
  95. package/lib/src/metadata-builder/builders/header-builder.d.ts +11 -0
  96. package/lib/src/metadata-builder/builders/header-builder.js +167 -0
  97. package/lib/src/metadata-builder/builders/rename-page-builder.d.ts +12 -0
  98. package/lib/src/metadata-builder/builders/rename-page-builder.js +49 -0
  99. package/lib/src/metadata-builder/builders/section-builders/about-section-builder.d.ts +2 -0
  100. package/lib/src/metadata-builder/builders/section-builders/about-section-builder.js +44 -4
  101. package/lib/src/metadata-builder/builders/section-builders/banner-section-builder.d.ts +2 -0
  102. package/lib/src/metadata-builder/builders/section-builders/banner-section-builder.js +70 -6
  103. package/lib/src/metadata-builder/builders/section-builders/base-section-builder.d.ts +36 -4
  104. package/lib/src/metadata-builder/builders/section-builders/base-section-builder.js +102 -12
  105. package/lib/src/metadata-builder/builders/section-builders/booking-section-builder.d.ts +8 -0
  106. package/lib/src/metadata-builder/builders/section-builders/booking-section-builder.js +50 -0
  107. package/lib/src/metadata-builder/builders/section-builders/button-section-builder.d.ts +2 -0
  108. package/lib/src/metadata-builder/builders/section-builders/button-section-builder.js +5 -1
  109. package/lib/src/metadata-builder/builders/section-builders/contact-form-builder.d.ts +2 -0
  110. package/lib/src/metadata-builder/builders/section-builders/contact-form-builder.js +47 -3
  111. package/lib/src/metadata-builder/builders/section-builders/delete-section-builder.d.ts +2 -1
  112. package/lib/src/metadata-builder/builders/section-builders/delete-section-builder.js +5 -2
  113. package/lib/src/metadata-builder/builders/section-builders/divider-section-builder.d.ts +2 -0
  114. package/lib/src/metadata-builder/builders/section-builders/divider-section-builder.js +11 -1
  115. package/lib/src/metadata-builder/builders/section-builders/image-gallery-builder.d.ts +2 -0
  116. package/lib/src/metadata-builder/builders/section-builders/image-gallery-builder.js +52 -13
  117. package/lib/src/metadata-builder/builders/section-builders/images-section-builder.d.ts +2 -0
  118. package/lib/src/metadata-builder/builders/section-builders/images-section-builder.js +47 -17
  119. package/lib/src/metadata-builder/builders/section-builders/index.d.ts +1 -0
  120. package/lib/src/metadata-builder/builders/section-builders/index.js +1 -0
  121. package/lib/src/metadata-builder/builders/section-builders/mailing-list-builder.d.ts +2 -0
  122. package/lib/src/metadata-builder/builders/section-builders/mailing-list-builder.js +20 -2
  123. package/lib/src/metadata-builder/builders/section-builders/mailing-list-section-builder.d.ts +2 -0
  124. package/lib/src/metadata-builder/builders/section-builders/mailing-list-section-builder.js +20 -2
  125. package/lib/src/metadata-builder/builders/section-builders/profile-section-builder.d.ts +2 -0
  126. package/lib/src/metadata-builder/builders/section-builders/profile-section-builder.js +36 -2
  127. package/lib/src/metadata-builder/builders/section-builders/shapes-section-builder.d.ts +2 -0
  128. package/lib/src/metadata-builder/builders/section-builders/shapes-section-builder.js +70 -27
  129. package/lib/src/metadata-builder/builders/section-builders/social-links-builder.d.ts +2 -0
  130. package/lib/src/metadata-builder/builders/section-builders/social-links-builder.js +7 -2
  131. package/lib/src/metadata-builder/builders/section-builders/testimonial-section-builder.d.ts +2 -0
  132. package/lib/src/metadata-builder/builders/section-builders/testimonial-section-builder.js +91 -26
  133. package/lib/src/metadata-builder/builders/section-builders/text-section-builder.d.ts +2 -0
  134. package/lib/src/metadata-builder/builders/section-builders/text-section-builder.js +69 -31
  135. package/lib/src/metadata-builder/builders/section-content-factory.d.ts +2 -2
  136. package/lib/src/metadata-builder/builders/section-content-factory.js +8 -2
  137. package/lib/src/metadata-builder/builders/section-field-maps.js +30 -2
  138. package/lib/src/metadata-builder/builders/section-field-utils.d.ts +46 -7
  139. package/lib/src/metadata-builder/builders/section-field-utils.js +86 -62
  140. package/lib/src/metadata-builder/builders/section-rules/about-section.rules.d.ts +2 -0
  141. package/lib/src/metadata-builder/builders/section-rules/about-section.rules.js +20 -0
  142. package/lib/src/metadata-builder/builders/section-rules/add-page.rules.d.ts +7 -0
  143. package/lib/src/metadata-builder/builders/section-rules/add-page.rules.js +8 -0
  144. package/lib/src/metadata-builder/builders/section-rules/banner-section.rules.d.ts +2 -0
  145. package/lib/src/metadata-builder/builders/section-rules/banner-section.rules.js +27 -0
  146. package/lib/src/metadata-builder/builders/section-rules/booking-section.rules.d.ts +2 -0
  147. package/lib/src/metadata-builder/builders/section-rules/booking-section.rules.js +16 -0
  148. package/lib/src/metadata-builder/builders/section-rules/button-section.rules.d.ts +2 -0
  149. package/lib/src/metadata-builder/builders/section-rules/button-section.rules.js +13 -0
  150. package/lib/src/metadata-builder/builders/section-rules/contact-form.rules.d.ts +2 -0
  151. package/lib/src/metadata-builder/builders/section-rules/contact-form.rules.js +16 -0
  152. package/lib/src/metadata-builder/builders/section-rules/divider-section.rules.d.ts +2 -0
  153. package/lib/src/metadata-builder/builders/section-rules/divider-section.rules.js +7 -0
  154. package/lib/src/metadata-builder/builders/section-rules/footer.rules.d.ts +4 -0
  155. package/lib/src/metadata-builder/builders/section-rules/footer.rules.js +5 -0
  156. package/lib/src/metadata-builder/builders/section-rules/global-styles.rules.d.ts +6 -0
  157. package/lib/src/metadata-builder/builders/section-rules/global-styles.rules.js +26 -0
  158. package/lib/src/metadata-builder/builders/section-rules/header.rules.d.ts +4 -0
  159. package/lib/src/metadata-builder/builders/section-rules/header.rules.js +41 -0
  160. package/lib/src/metadata-builder/builders/section-rules/image-gallery.rules.d.ts +2 -0
  161. package/lib/src/metadata-builder/builders/section-rules/image-gallery.rules.js +10 -0
  162. package/lib/src/metadata-builder/builders/section-rules/images-section.rules.d.ts +2 -0
  163. package/lib/src/metadata-builder/builders/section-rules/images-section.rules.js +31 -0
  164. package/lib/src/metadata-builder/builders/section-rules/mailing-list.rules.d.ts +2 -0
  165. package/lib/src/metadata-builder/builders/section-rules/mailing-list.rules.js +11 -0
  166. package/lib/src/metadata-builder/builders/section-rules/profile.rules.d.ts +2 -0
  167. package/lib/src/metadata-builder/builders/section-rules/profile.rules.js +14 -0
  168. package/lib/src/metadata-builder/builders/section-rules/rename-page.rules.d.ts +7 -0
  169. package/lib/src/metadata-builder/builders/section-rules/rename-page.rules.js +8 -0
  170. package/lib/src/metadata-builder/builders/section-rules/shapes-section.rules.d.ts +2 -0
  171. package/lib/src/metadata-builder/builders/section-rules/shapes-section.rules.js +27 -0
  172. package/lib/src/metadata-builder/builders/section-rules/social-links.rules.d.ts +2 -0
  173. package/lib/src/metadata-builder/builders/section-rules/social-links.rules.js +9 -0
  174. package/lib/src/metadata-builder/builders/section-rules/testimonial-section.rules.d.ts +7 -0
  175. package/lib/src/metadata-builder/builders/section-rules/testimonial-section.rules.js +26 -0
  176. package/lib/src/metadata-builder/builders/section-rules/text-section.rules.d.ts +2 -0
  177. package/lib/src/metadata-builder/builders/section-rules/text-section.rules.js +14 -0
  178. package/lib/src/metadata-builder/builders/shape-color-utils.d.ts +26 -0
  179. package/lib/src/metadata-builder/builders/shape-color-utils.js +52 -0
  180. package/lib/src/metadata-builder/builders/undo-builder.d.ts +48 -0
  181. package/lib/src/metadata-builder/builders/undo-builder.js +58 -0
  182. package/lib/src/metadata-builder/builders/update-content-text-style-builder.js +5 -1
  183. package/lib/src/metadata-builder/helpers/rte.helpers.d.ts +15 -4
  184. package/lib/src/metadata-builder/helpers/rte.helpers.js +24 -10
  185. package/lib/src/metadata-builder/metadata-executor.d.ts +2 -1
  186. package/lib/src/metadata-builder/metadata-executor.js +32 -5
  187. package/lib/src/metadata-builder/models.d.ts +26 -1
  188. package/lib/src/metadata-builder/models.js +14 -1
  189. package/lib/src/metadata-builder/parsers/ai-toolcall-parser.d.ts +144 -0
  190. package/lib/src/metadata-builder/parsers/ai-toolcall-parser.js +17 -0
  191. package/lib/src/metadata-builder/parsers/section-tool-arguments.d.ts +113 -24
  192. package/lib/src/metadata-builder/parsers/section-tool-arguments.js +5 -1
  193. package/lib/src/metadata-builder/sanitizers/rte-schema-check.d.ts +22 -0
  194. package/lib/src/metadata-builder/sanitizers/rte-schema-check.js +84 -0
  195. package/lib/src/metadata-builder/sanitizers/sanitizer-rules.d.ts +47 -0
  196. package/lib/src/metadata-builder/sanitizers/sanitizer-rules.js +60 -0
  197. package/lib/src/metadata-builder/sanitizers/section-args-validator.d.ts +41 -0
  198. package/lib/src/metadata-builder/sanitizers/section-args-validator.js +274 -0
  199. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.d.ts +2 -1
  200. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.js +2 -16
  201. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.stories.js +0 -1
  202. package/lib/src/shared/content-settings/components/content-settings/ReplaceImageSettingsForContent.mixin.d.ts +2 -1
  203. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.d.ts +2 -3
  204. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.d.ts +0 -4
  205. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.js +6 -8
  206. package/lib/src/shared/content-settings/components/payment-config-field/PaymentConfigField.mixin.d.ts +0 -28
  207. package/lib/src/shared/logo-settings/components/EditLogoSettings.mixin.d.ts +2 -1
  208. package/lib/src/shared/logo-settings/components/LogoSettings.mixin.d.ts +0 -28
  209. package/lib/src/shared/navigation-style-settings/store/index.js +1 -0
  210. package/lib/src/shared/page-navigation/store/page-navigation-store.js +1 -20
  211. package/lib/src/shared/page-navigation/utils/nav-order-utils.d.ts +3 -0
  212. package/lib/src/shared/page-navigation/utils/nav-order-utils.js +20 -0
  213. package/lib/src/shared/page-settings/components/page-settings/PageSettings.mixin.d.ts +2 -30
  214. package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.d.ts +0 -28
  215. package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.d.ts +2 -43
  216. package/lib/src/shared/side-bar/components/SideBar.mixin.d.ts +0 -30
  217. package/lib/src/shared/side-bar/components/SideBarTabButton.mixin.d.ts +2 -3
  218. package/lib/src/shared/side-bar/store/side-bar-store.d.ts +0 -12
  219. package/lib/src/shared/side-bar/store/side-bar-store.js +0 -7
  220. package/lib/src/shared/style-settings/components/StyleSettings.mixin.d.ts +2 -29
  221. package/lib/src/shared/template-settings/components/TemplatesSettings.mixin.d.ts +2 -1
  222. package/lib/src/utils/build-asset-manifest.d.ts +26 -0
  223. package/lib/src/utils/build-asset-manifest.js +114 -0
  224. package/lib/src/utils/minify-brand-page-metadata.d.ts +49 -1
  225. package/lib/src/utils/minify-brand-page-metadata.js +216 -129
  226. package/package.json +1 -1
  227. package/src/brand-page/components/banner-section/BannerSection.vue +1 -1
  228. package/src/brand-page/components/contact-form/ContactForm.vue +29 -26
  229. package/src/brand-page/components/image-gallery/ImageGalleryModal.mixin.ts +6 -2
  230. package/src/brand-page/components/text-media-section/TextMediaSection.vue +1 -5
  231. package/src/brand-page/models/brand-page-context.model.ts +1 -25
  232. package/src/brand-page/models/index.ts +1 -0
  233. package/src/brand-page/utils/color.util.test.ts +48 -0
  234. package/src/brand-page/utils/color.util.ts +29 -4
  235. package/src/brand-page/utils/raygun.util.ts +11 -2
  236. package/src/brand-page/utils/svg-color.util.ts +1 -3
  237. package/src/brand-page/utils/view-model.util.ts +1 -4
  238. package/src/brand-page-maker/components/ai-text-edit/AiChatbox.vue +2 -2
  239. package/src/brand-page-maker/components/ai-text-edit/AiProgressFeed.vue +162 -0
  240. package/src/brand-page-maker/components/ai-text-edit/TextBubble.vue +57 -5
  241. package/src/brand-page-maker/components/ai-text-edit/i18n/generate-ai.de-DE.json +0 -20
  242. package/src/brand-page-maker/components/ai-text-edit/i18n/generate-ai.es-ES.json +0 -20
  243. package/src/brand-page-maker/components/ai-text-edit/i18n/generate-ai.fr-CA.json +0 -20
  244. package/src/brand-page-maker/components/ai-text-edit/i18n/generate-ai.fr-FR.json +0 -20
  245. package/src/brand-page-maker/components/ai-text-edit/i18n/generate-ai.json +0 -20
  246. package/src/brand-page-maker/components/ai-text-edit/i18n/generate-ai.pt-BR.json +0 -20
  247. package/src/brand-page-maker/components/ai-text-edit/i18n/generate-ai.pt-PT.json +0 -20
  248. package/src/brand-page-maker/components/ai-website-builder/AiWebsiteBuilder.vue +1 -2
  249. package/src/brand-page-maker/components/ai-website-builder/i18n/ai-website-builder.de-DE.json +3 -0
  250. package/src/brand-page-maker/components/ai-website-builder/i18n/ai-website-builder.es-ES.json +3 -0
  251. package/src/brand-page-maker/components/ai-website-builder/i18n/ai-website-builder.fr-CA.json +3 -0
  252. package/src/brand-page-maker/components/ai-website-builder/i18n/ai-website-builder.fr-FR.json +3 -0
  253. package/src/brand-page-maker/components/ai-website-builder/i18n/ai-website-builder.json +3 -0
  254. package/src/brand-page-maker/components/ai-website-builder/i18n/ai-website-builder.pt-BR.json +3 -0
  255. package/src/brand-page-maker/components/ai-website-builder/i18n/ai-website-builder.pt-PT.json +3 -0
  256. package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.vue +3 -28
  257. package/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-examples.ts +0 -2
  258. package/src/brand-page-maker/composables/ai-chat/aiErrorCopy.test.ts +229 -0
  259. package/src/brand-page-maker/composables/ai-chat/aiErrorCopy.ts +164 -0
  260. package/src/brand-page-maker/composables/ai-chat/types.ts +49 -0
  261. package/src/brand-page-maker/composables/ai-chat/useAiMetadataBuilder.ts +20 -0
  262. package/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.ts +651 -94
  263. package/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.ts +9 -9
  264. package/src/brand-page-maker/composables/useEventTracker.ts +31 -25
  265. package/src/brand-page-maker/constants/sidebar-constant.ts +7 -15
  266. package/src/brand-page-maker/convertors/image-aspect-ratio.convertor.ts +2 -2
  267. package/src/brand-page-maker/convertors/text-size-value.convertor.ts +3 -3
  268. package/src/brand-page-maker/stores/ai-checkpoint/ai-checkpoint-store.ts +54 -0
  269. package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.ts +76 -0
  270. package/src/brand-page-maker/stores/index.ts +1 -1
  271. package/src/brand-page-maker/stores/user/user-store.ts +0 -1
  272. package/src/bundles/bundled-translations.de-DE.json +1 -20
  273. package/src/bundles/bundled-translations.es-ES.json +1 -20
  274. package/src/bundles/bundled-translations.fr-CA.json +1 -20
  275. package/src/bundles/bundled-translations.fr-FR.json +1 -20
  276. package/src/bundles/bundled-translations.json +1 -20
  277. package/src/bundles/bundled-translations.pt-BR.json +1 -20
  278. package/src/bundles/bundled-translations.pt-PT.json +1 -20
  279. package/src/clients/ai-assistant-client.ts +59 -46
  280. package/src/clients/design-template-client.ts +0 -66
  281. package/src/clients/websocket-gateway-client.ts +17 -1
  282. package/src/composables/useTranslate.ts +3 -0
  283. package/src/constants/ui.ts +0 -1
  284. package/src/lib.ts +1 -0
  285. package/src/metadata-builder/ai-metadata-executor.ts +94 -1
  286. package/src/metadata-builder/builders/add-page-builder.ts +9 -13
  287. package/src/metadata-builder/builders/footer-builder.test.ts +76 -0
  288. package/src/metadata-builder/builders/footer-builder.ts +226 -0
  289. package/src/metadata-builder/builders/global-styles-builder.ts +187 -0
  290. package/src/metadata-builder/builders/header-builder.test.ts +106 -0
  291. package/src/metadata-builder/builders/header-builder.ts +254 -0
  292. package/src/metadata-builder/builders/rename-page-builder.ts +79 -0
  293. package/src/metadata-builder/builders/section-builders/about-section-builder.ts +73 -5
  294. package/src/metadata-builder/builders/section-builders/banner-section-builder.ts +112 -7
  295. package/src/metadata-builder/builders/section-builders/base-section-builder.ts +149 -11
  296. package/src/metadata-builder/builders/section-builders/booking-section-builder.ts +87 -0
  297. package/src/metadata-builder/builders/section-builders/button-section-builder.ts +6 -1
  298. package/src/metadata-builder/builders/section-builders/contact-form-builder.ts +74 -4
  299. package/src/metadata-builder/builders/section-builders/delete-section-builder.ts +15 -1
  300. package/src/metadata-builder/builders/section-builders/divider-section-builder.ts +13 -1
  301. package/src/metadata-builder/builders/section-builders/image-gallery-builder.ts +91 -31
  302. package/src/metadata-builder/builders/section-builders/images-section-builder.ts +102 -48
  303. package/src/metadata-builder/builders/section-builders/index.ts +1 -0
  304. package/src/metadata-builder/builders/section-builders/mailing-list-builder.ts +38 -2
  305. package/src/metadata-builder/builders/section-builders/mailing-list-section-builder.ts +38 -2
  306. package/src/metadata-builder/builders/section-builders/profile-section-builder.ts +55 -3
  307. package/src/metadata-builder/builders/section-builders/shapes-section-builder.ts +170 -77
  308. package/src/metadata-builder/builders/section-builders/social-links-builder.test.ts +119 -0
  309. package/src/metadata-builder/builders/section-builders/social-links-builder.ts +13 -2
  310. package/src/metadata-builder/builders/section-builders/testimonial-section-builder.ts +178 -57
  311. package/src/metadata-builder/builders/section-builders/text-section-builder.ts +130 -30
  312. package/src/metadata-builder/builders/section-content-factory.ts +15 -2
  313. package/src/metadata-builder/builders/section-field-maps.ts +34 -1
  314. package/src/metadata-builder/builders/section-field-utils.ts +131 -72
  315. package/src/metadata-builder/builders/section-rules/about-section.rules.ts +38 -0
  316. package/src/metadata-builder/builders/section-rules/add-page.rules.ts +17 -0
  317. package/src/metadata-builder/builders/section-rules/banner-section.rules.ts +49 -0
  318. package/src/metadata-builder/builders/section-rules/booking-section.rules.ts +34 -0
  319. package/src/metadata-builder/builders/section-rules/button-section.rules.ts +22 -0
  320. package/src/metadata-builder/builders/section-rules/contact-form.rules.ts +30 -0
  321. package/src/metadata-builder/builders/section-rules/divider-section.rules.ts +17 -0
  322. package/src/metadata-builder/builders/section-rules/footer.rules.ts +21 -0
  323. package/src/metadata-builder/builders/section-rules/global-styles.rules.ts +44 -0
  324. package/src/metadata-builder/builders/section-rules/header.rules.ts +75 -0
  325. package/src/metadata-builder/builders/section-rules/image-gallery.rules.ts +22 -0
  326. package/src/metadata-builder/builders/section-rules/images-section.rules.ts +55 -0
  327. package/src/metadata-builder/builders/section-rules/mailing-list.rules.ts +21 -0
  328. package/src/metadata-builder/builders/section-rules/profile.rules.ts +27 -0
  329. package/src/metadata-builder/builders/section-rules/rename-page.rules.ts +17 -0
  330. package/src/metadata-builder/builders/section-rules/shapes-section.rules.ts +51 -0
  331. package/src/metadata-builder/builders/section-rules/social-links.rules.ts +27 -0
  332. package/src/metadata-builder/builders/section-rules/testimonial-section.rules.ts +48 -0
  333. package/src/metadata-builder/builders/section-rules/text-section.rules.ts +28 -0
  334. package/src/metadata-builder/builders/shape-color-utils.test.ts +115 -0
  335. package/src/metadata-builder/builders/shape-color-utils.ts +75 -0
  336. package/src/metadata-builder/builders/undo-builder.ts +105 -0
  337. package/src/metadata-builder/builders/update-content-text-style-builder.ts +4 -1
  338. package/src/metadata-builder/helpers/rte.helpers.ts +27 -13
  339. package/src/metadata-builder/metadata-executor.ts +42 -2
  340. package/src/metadata-builder/models.ts +39 -1
  341. package/src/metadata-builder/parsers/ai-toolcall-parser.ts +152 -0
  342. package/src/metadata-builder/parsers/section-tool-arguments.ts +138 -24
  343. package/src/metadata-builder/sanitizers/__tests__/section-args-validator.test.ts +659 -0
  344. package/src/metadata-builder/sanitizers/rte-schema-check.ts +99 -0
  345. package/src/metadata-builder/sanitizers/sanitizer-rules.ts +97 -0
  346. package/src/metadata-builder/sanitizers/section-args-validator.ts +445 -0
  347. package/src/shared/content-settings/components/content-settings/ContentSettings.mixin.ts +10 -16
  348. package/src/shared/content-settings/components/content-settings/ContentSettings.stories.ts +0 -1
  349. package/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.ts +6 -10
  350. package/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.vue +1 -23
  351. package/src/shared/content-settings/components/testimonial-items-field/TestimonialItemsField.vue +0 -15
  352. package/src/shared/content-settings/components/text-items-field/TextItemsField.vue +0 -15
  353. package/src/shared/navigation-style-settings/store/index.ts +5 -0
  354. package/src/shared/page-navigation/store/page-navigation-store.ts +4 -31
  355. package/src/shared/page-navigation/utils/nav-order-utils.ts +32 -0
  356. package/src/shared/side-bar/components/SideBar.vue +14 -1
  357. package/src/shared/side-bar/store/side-bar-store.ts +0 -20
  358. package/src/utils/build-asset-manifest.ts +153 -0
  359. package/src/utils/minify-brand-page-metadata.ts +362 -130
  360. package/lib/src/brand-page-maker/composables/ai-chat/useAiChat.js +0 -368
  361. package/lib/src/brand-page-maker/composables/ai-chat/useAiTextEditPrompts.d.ts +0 -18
  362. package/lib/src/brand-page-maker/composables/ai-chat/useAiTextEditPrompts.js +0 -144
  363. package/lib/src/brand-page-maker/stores/ai-thread/ai-thread-store.d.ts +0 -155
  364. package/lib/src/brand-page-maker/stores/ai-thread/ai-thread-store.js +0 -25
  365. package/lib/src/brand-page-maker/utils/mixpanel.util.d.ts +0 -1
  366. package/lib/src/brand-page-maker/utils/mixpanel.util.js +0 -29
  367. package/lib/src/bundled-translations-CNK7l6_v.js +0 -173
  368. package/lib/src/bundled-translations.de-DE-BLE4_y0H.js +0 -173
  369. package/lib/src/bundled-translations.es-ES-thO9osbg.js +0 -173
  370. package/lib/src/bundled-translations.fr-CA-BZkhiNgU.js +0 -173
  371. package/lib/src/bundled-translations.fr-FR-bhDLPKgZ.js +0 -173
  372. package/lib/src/bundled-translations.pt-BR-CI9a5Bq1.js +0 -173
  373. package/lib/src/bundled-translations.pt-PT-DBoErBaq.js +0 -173
  374. package/src/brand-page-maker/components/ai-text-edit/AiTextEdit.vue +0 -154
  375. package/src/brand-page-maker/composables/ai-chat/useAiChat.ts +0 -562
  376. package/src/brand-page-maker/composables/ai-chat/useAiTextEditPrompts.ts +0 -196
  377. package/src/brand-page-maker/stores/ai-thread/ai-thread-store.ts +0 -31
  378. package/src/brand-page-maker/utils/mixpanel.util.ts +0 -42
  379. package/src/shared/content-settings/components/generate-ai-button/GenerateAiButton.vue +0 -114
  380. package/src/shared/content-settings/components/generate-ai-modal/GenerateAiModal.vue +0 -761
@@ -518,12 +518,12 @@ export const useRichTextEditor = (
518
518
  }
519
519
 
520
520
  if (textStyleAttributes && textStyleAttributes.fontSize) {
521
- fontSettings.selectedFontSizePx = parseInt(
522
- emToPx(textStyleAttributes.fontSize),
521
+ fontSettings.selectedFontSizePx = Math.ceil(
522
+ parseFloat(emToPx(textStyleAttributes.fontSize)),
523
523
  );
524
524
  } else {
525
- fontSettings.selectedFontSizePx = parseInt(
526
- emToPx(fontSettings.selectedFontSize),
525
+ fontSettings.selectedFontSizePx = Math.ceil(
526
+ parseFloat(emToPx(fontSettings.selectedFontSize)),
527
527
  );
528
528
  }
529
529
 
@@ -596,8 +596,8 @@ export const useRichTextEditor = (
596
596
  // sync toolbar editor styles
597
597
  fontSettings.selectedFont = globalStyles?.fontFamily ?? 'Lato';
598
598
  fontSettings.selectedFontSize = globalStyles?.fontSize ?? '2.25em';
599
- fontSettings.selectedFontSizePx = parseInt(
600
- emToPx(globalStyles?.fontSize ?? '2.25em'),
599
+ fontSettings.selectedFontSizePx = Math.ceil(
600
+ parseFloat(emToPx(globalStyles?.fontSize ?? '2.25em')),
601
601
  );
602
602
  fontSettings.selectedTextColor = hasLogoColorVar(globalStyles.color ?? '')
603
603
  ? '#000000'
@@ -624,8 +624,8 @@ export const useRichTextEditor = (
624
624
  // copy the content settings styles to the editor
625
625
  fontSettings.selectedFont = props.styles?.fontFamily ?? 'Lato';
626
626
  fontSettings.selectedFontSize = props.styles?.fontSize ?? '2.25em';
627
- fontSettings.selectedFontSizePx = parseInt(
628
- emToPx(props.styles?.fontSize ?? '2.25em'),
627
+ fontSettings.selectedFontSizePx = Math.ceil(
628
+ parseFloat(emToPx(props.styles?.fontSize ?? '2.25em')),
629
629
  );
630
630
  fontSettings.selectedTextColor = hasLogoColorVar(
631
631
  props.styles?.color ?? '#000000',
@@ -698,7 +698,7 @@ export const useRichTextEditor = (
698
698
  const size = editorOption.value as string;
699
699
 
700
700
  fontSettings.selectedFontSizePx = size.includes('em')
701
- ? parseInt(emToPx(size))
701
+ ? Math.ceil(parseFloat(emToPx(size)))
702
702
  : parseInt(size);
703
703
 
704
704
  toggleFontSize(size);
@@ -56,10 +56,7 @@ export const EVENTS = {
56
56
  WEBSITE_MAKER_UPSELL_ACTION: 'website_maker_upsell_action',
57
57
  WEBSITE_MAKER_SWITCH_LOGO: 'website_maker_switch_logo',
58
58
  WEBSITE_MAKER_SWITCH_LOGO_MODAL: 'website_maker_switch_logo_modal',
59
- WEBSITE_MAKER_AI_GENERATE_TEXT: 'website_maker_ai_generate_text',
60
- WEBSITE_MAKER_AI_REGENERATE_TEXT: 'website_maker_ai_regenerate_text',
61
59
  WEBSITE_MAKER_AI_SEND_PROMPT: 'website_maker_ai_send_prompt',
62
- WEBSITE_MAKER_AI_COPY_RESPONSE: 'website_maker_ai_copy_response',
63
60
  WEBSITE_MAKER_AI_STOP_GENERATION: 'website_maker_ai_stop_generation',
64
61
  WEBSITE_SAVE_CONTACT: 'website_save_contact',
65
62
  WEBSITE_START_FOR_FREE: 'website_start_for_free',
@@ -100,24 +97,14 @@ export const UPGRADE_CTA_LOCATIONS = {
100
97
  NAV_BOTTOM: 'nav_bottom',
101
98
  };
102
99
 
103
- export const GENERATE_AI_TEXT_CTA_LOCATIONS = {
104
- BANNER_DESCRIPTION: 'banner_description',
105
- BANNER_TITLE: 'banner_title',
106
- ABOUT_TITLE: 'about_title',
107
- ABOUT_PARAGRAPH: 'about_paragraph',
108
- TEXT_ITEM: 'text_item',
109
- TESTIMONIAL_ITEM: 'testimonial_item',
110
- };
111
-
112
- export const GENERATE_AI_SUGGESTED_PROMPT = {
113
- GENERATE_TEXT: 'generate_text',
114
- IMPROVE_TEXT: 'improve_text',
115
- SPELL_CHECK: 'spell_check',
100
+ export const AI_CTA_LOCATIONS = {
101
+ AI_BUILDER_TAB: 'ai_builder_tab',
116
102
  };
117
103
 
118
104
  export const TRIGGER_TYPE = {
119
105
  AUTOMATIC: 'automatic',
120
106
  USER_TRIGGERED: 'user_triggered',
107
+ AI_BUILDER: 'ai_builder',
121
108
  };
122
109
 
123
110
  export const PUBLISH_MODAL_CONTINUATION_EVENTS = {
@@ -374,6 +361,32 @@ const useEventTracker = () => {
374
361
  sidebar_category_tab_name: tabName,
375
362
  });
376
363
  },
364
+ sendAddContentEvent: (
365
+ contentType: string,
366
+ selectLocation?: string,
367
+ contentCategory?: string,
368
+ triggerType: string = TRIGGER_TYPE.USER_TRIGGERED,
369
+ ) => {
370
+ _publishEvent(EVENTS.WEBSITE_MAKER_ADD_CONTENT, {
371
+ content_type: contentType,
372
+ trigger_type: triggerType,
373
+ select_location: selectLocation,
374
+ content_category: contentCategory,
375
+ });
376
+ },
377
+ sendRemoveContentEvent: (
378
+ contentType: string,
379
+ selectLocation?: string,
380
+ contentCategory?: string,
381
+ triggerType: string = TRIGGER_TYPE.USER_TRIGGERED,
382
+ ) => {
383
+ _publishEvent(EVENTS.WEBSITE_MAKER_REMOVE_CONTENT, {
384
+ content_type: contentType,
385
+ trigger_type: triggerType,
386
+ select_location: selectLocation,
387
+ content_category: contentCategory,
388
+ });
389
+ },
377
390
  sendAddContentContinuationEvent: (continuation: string) => {
378
391
  _publishEvent(EVENTS.WEBSITE_MAKER_ADD_CONTENT, {
379
392
  continuation,
@@ -390,15 +403,6 @@ const useEventTracker = () => {
390
403
  action,
391
404
  });
392
405
  },
393
- sendGenerateTextContinuationEvent: (
394
- cta_location: string,
395
- continuation: string | null,
396
- ) => {
397
- _publishEvent(EVENTS.WEBSITE_MAKER_AI_GENERATE_TEXT, {
398
- cta_location,
399
- continuation,
400
- });
401
- },
402
406
  sendAiSendPromptEvent: (ctaLocation: string) => {
403
407
  _publishEvent(EVENTS.WEBSITE_MAKER_AI_SEND_PROMPT, {
404
408
  cta_location: ctaLocation,
@@ -419,4 +423,6 @@ const useEventTracker = () => {
419
423
  };
420
424
  };
421
425
 
426
+ export type EventTracker = ReturnType<typeof useEventTracker>;
427
+
422
428
  export { useEventTracker };
@@ -11,7 +11,6 @@ export const SIDE_BAR_TAB_NAMES = {
11
11
  ADMIN_LOGO_SETTINGS: 'AdminLogoSettings',
12
12
  STYLE_SETTINGS: 'StyleSettings',
13
13
  BRANDPAGE_SETTINGS: 'BrandPageSettings',
14
- AI_TEXT_EDIT: 'AiTextEdit',
15
14
  AI_WEBSITE_BUILDER: 'AiWebsiteBuilder',
16
15
  };
17
16
 
@@ -39,20 +38,6 @@ export const DEFAULT_SIDE_BAR_TABS = (): SideBarTab[] => [
39
38
  accessibleDisplayName: 'Content',
40
39
  isVisible: true,
41
40
  },
42
- {
43
- name: SIDE_BAR_TAB_NAMES.AI_TEXT_EDIT,
44
- displayName: 'AI Text',
45
- iconName: 'sparkles',
46
- accessibleDisplayName: 'AI Text Edit',
47
- isVisible: false,
48
- },
49
- {
50
- name: SIDE_BAR_TAB_NAMES.AI_WEBSITE_BUILDER,
51
- displayName: 'AI Builder',
52
- iconName: 'ai',
53
- accessibleDisplayName: 'AI Website Builder',
54
- isVisible: true,
55
- },
56
41
  {
57
42
  name: SIDE_BAR_TAB_NAMES.BACKGROUND_SETTINGS,
58
43
  displayName: constantsTr(`backgroundDisplayName`),
@@ -101,4 +86,11 @@ export const DEFAULT_SIDE_BAR_TABS = (): SideBarTab[] => [
101
86
  accessibleDisplayName: 'Settings',
102
87
  isVisible: true,
103
88
  },
89
+ {
90
+ name: SIDE_BAR_TAB_NAMES.AI_WEBSITE_BUILDER,
91
+ displayName: 'AI',
92
+ iconName: 'ai',
93
+ accessibleDisplayName: 'AI Website Builder',
94
+ isVisible: true,
95
+ },
104
96
  ];
@@ -21,7 +21,7 @@ export const imageAspectRatioConvertor: OptionsConvertor<AspectRatio | false> =
21
21
  dataAttribute: 'data-test-btn-left-aligned',
22
22
  label: converterTr(`original`),
23
23
  value: ASPECT_RATIOS['Default'],
24
- isSelected: !value,
24
+ isSelected: !value || value === 'original',
25
25
  },
26
26
  {
27
27
  iconName: 'aspect-ratio1_1',
@@ -96,7 +96,7 @@ export const imageAspectRatioConvertor: OptionsConvertor<AspectRatio | false> =
96
96
  {
97
97
  label: converterTr(`default`),
98
98
  value: ASPECT_RATIOS['Default'],
99
- isSelected: !value,
99
+ isSelected: !value || value === 'original',
100
100
  },
101
101
  {
102
102
  label: '1:1',
@@ -7,9 +7,9 @@ export const textSizeValueConvertor: ValueConvertor<BrandPageCssStyle, string> =
7
7
  convertBackToMultipleValues: false,
8
8
 
9
9
  convert(value: BrandPageCssStyle): string {
10
- return (
11
- value.fontSize ? emToPx(value.fontSize) : DEFAULT_FONT_SIZE
12
- ).toString();
10
+ if (!value.fontSize) return DEFAULT_FONT_SIZE.toString();
11
+
12
+ return Math.ceil(parseFloat(emToPx(value.fontSize))).toString();
13
13
  },
14
14
 
15
15
  convertBack(valuePx: string): BrandPageCssStyle {
@@ -0,0 +1,54 @@
1
+ import { defineStore } from 'pinia';
2
+ import { ref } from 'vue';
3
+ import cloneDeep from 'lodash.clonedeep';
4
+ import type { BrandPageModel } from '../../../brand-page/models';
5
+
6
+ export interface AiCheckpoint {
7
+ userMessageId: string;
8
+ model: BrandPageModel;
9
+ }
10
+
11
+ export const useAiCheckpointStore = defineStore('aiCheckpoint', () => {
12
+ const checkpoints = ref<AiCheckpoint[]>([]);
13
+
14
+ const createCheckpoint = (
15
+ userMessageId: string,
16
+ model: BrandPageModel,
17
+ ): void => {
18
+ checkpoints.value.push({
19
+ userMessageId,
20
+ model: cloneDeep(model),
21
+ });
22
+ };
23
+
24
+ const revertToCheckpoint = (userMessageId: string): BrandPageModel | null => {
25
+ const index = checkpoints.value.findIndex(
26
+ (cp) => cp.userMessageId === userMessageId,
27
+ );
28
+
29
+ if (index === -1) return null;
30
+
31
+ const model = checkpoints.value[index].model;
32
+
33
+ // Remove this checkpoint and all subsequent ones
34
+ checkpoints.value.splice(index);
35
+
36
+ return model;
37
+ };
38
+
39
+ const hasCheckpoint = (userMessageId: string): boolean => {
40
+ return checkpoints.value.some((cp) => cp.userMessageId === userMessageId);
41
+ };
42
+
43
+ const clearAll = (): void => {
44
+ checkpoints.value = [];
45
+ };
46
+
47
+ return {
48
+ checkpoints,
49
+ createCheckpoint,
50
+ revertToCheckpoint,
51
+ hasCheckpoint,
52
+ clearAll,
53
+ };
54
+ });
@@ -13,6 +13,7 @@ import type {
13
13
  import {
14
14
  EMPTY_LOGO_IMAGE_MODEL,
15
15
  SENSITIVE_CONTENT_TYPES,
16
+ TEXT_STYLE_TYPES,
16
17
  VIEWPORTS,
17
18
  } from '@brand-page';
18
19
  import {
@@ -74,7 +75,9 @@ import {
74
75
  mapBrandPageContentToContentSettingsItem,
75
76
  removeContentFieldValues,
76
77
  removeLogoTemplateModel,
78
+ transformToRTE,
77
79
  } from '@brand-page-maker/utils';
80
+ import { useExternalRichTextEditor } from '@brand-page-maker/composables/rich-text-editor/useRichTextEditor';
78
81
  import type {
79
82
  ContentItem,
80
83
  FieldSettingsBase,
@@ -762,6 +765,9 @@ export const useBrandPageMakerStore = defineStore('brandPageMaker', {
762
765
  brandPageModel: BrandPageModel,
763
766
  ) {
764
767
  const pageNavigationStore = usePageNavigationStore();
768
+ const backgroundSettingsStore = useUiBackgroundSettingsStore();
769
+ const styleSettingsStore = useUiStyleSettingsStore();
770
+ const navigationStyleSettingsStore = useUiNavigationStyleSettingsStore();
765
771
 
766
772
  pageNavigationStore.setNav({ nav: brandPageModel.nav });
767
773
 
@@ -778,6 +784,76 @@ export const useBrandPageMakerStore = defineStore('brandPageMaker', {
778
784
  },
779
785
  },
780
786
  });
787
+
788
+ navigationStyleSettingsStore.setState({
789
+ newState: {
790
+ navigation: {
791
+ [PAGE_SECTIONS.header]: {
792
+ [VIEWPORTS.desktop]: brandPageModel.pageHeaderDesktop.navigation,
793
+ [VIEWPORTS.mobile]: brandPageModel.pageHeaderMobile.navigation,
794
+ },
795
+ },
796
+ },
797
+ });
798
+
799
+ backgroundSettingsStore.setBackgroundStyles({
800
+ backgroundStyles: new BackgroundStyles(
801
+ brandPageModel.styles.backgroundStyles,
802
+ ),
803
+ });
804
+
805
+ const { buttonStyles, logoStyles, textStyles, galleryStyles } =
806
+ brandPageModel.styles;
807
+
808
+ styleSettingsStore.setState({
809
+ newState: {
810
+ buttonStyles,
811
+ logoStyles,
812
+ textStyles,
813
+ galleryStyles,
814
+ },
815
+ });
816
+
817
+ // Apply button style config CSS (border-radius, box-shadow) to match
818
+ // the selectedButtonStyleId. setState sets the raw model values but
819
+ // doesn't derive the config-specific CSS that setSelectedButtonStyle does.
820
+ if (buttonStyles.selectedButtonStyleId) {
821
+ styleSettingsStore.setSelectedButtonStyle({
822
+ id: buttonStyles.selectedButtonStyleId,
823
+ });
824
+ }
825
+
826
+ const pageSettingsStore = useUiPageSettingsStore();
827
+ const { externalEditor } = useExternalRichTextEditor();
828
+
829
+ transformToRTE(
830
+ pageSettingsStore,
831
+ externalEditor,
832
+ undefined,
833
+ undefined,
834
+ TEXT_STYLE_TYPES.titles,
835
+ textStyles.textStyleOptions.titles.style,
836
+ );
837
+
838
+ transformToRTE(
839
+ pageSettingsStore,
840
+ externalEditor,
841
+ undefined,
842
+ undefined,
843
+ TEXT_STYLE_TYPES.headings,
844
+ textStyles.textStyleOptions.headings.style,
845
+ );
846
+
847
+ transformToRTE(
848
+ pageSettingsStore,
849
+ externalEditor,
850
+ undefined,
851
+ undefined,
852
+ TEXT_STYLE_TYPES.paragraphs,
853
+ textStyles.textStyleOptions.paragraphs.style,
854
+ );
855
+
856
+ externalEditor.destroy();
781
857
  },
782
858
 
783
859
  async initialise({
@@ -12,5 +12,5 @@ export * from './route';
12
12
  export * from './logo-store';
13
13
  export * from './video';
14
14
  export * from './snapshot/snapshot-store';
15
- export * from './ai-thread/ai-thread-store';
16
15
  export * from './ai-thread/ai-website-builder-thread-store';
16
+ export * from './ai-checkpoint/ai-checkpoint-store';
@@ -31,7 +31,6 @@ export const useBrandPageMakerUserStore = defineStore('brandPageMakerUser', {
31
31
  canUsePremiumFontFamily: false,
32
32
  maxNumOfPages: DEFAULT_MAX_NUM_OF_PAGES,
33
33
  canUseGettyVideos: false,
34
- canUseAITextGenerator: false,
35
34
  canUseGoogleAdsense: false,
36
35
  googleAdsenseEnabled: false,
37
36
  },
@@ -1069,29 +1069,10 @@
1069
1069
  "createTeamCards": "Teamkarten erstellen"
1070
1070
  },
1071
1071
  "aiModal": {
1072
- "generateTitle": "Text mit KI generieren",
1073
- "generateDescription": "Der Inhalt wurde von einer KI generiert und muss möglicherweise zur Verbesserung der Genauigkeit bearbeitet werden",
1074
- "generatePlaceholder": "Beschreiben Sie Ihren Text.",
1075
- "generationStopped": "Die Textgenerierung wurde gestoppt. Starten Sie eine neue Eingabeaufforderung, um fortzufahren.",
1076
- "generateInputPlaceholder": "Geben Sie Ihre Eingabeaufforderung ein, um den Text zu beschreiben ...",
1077
- "stopGeneration": "Generierung anhalten",
1078
- "useText": "Text verwenden",
1079
- "promptTooLong": "Der Prompt darf maximal {{maxLength}} Zeichen lang sein ({{currentLength}})",
1080
- "generateText": "Erstellen Sie {{ location }}",
1081
- "improveText": "Meinen Text verbessern",
1082
- "spellCheck": "Rechtschreibprüfung",
1083
- "generateTextPrompt": "Schreiben Sie ein einprägsames {{fieldName}} für {{businessName}}, ein {{industry}} Unternehmen. Gestalten Sie es freundlich und einladend.",
1084
- "generateTextPromptWithIndustry": "Ein einprägsames {{fieldName}} schreiben für ein Unternehmen in der folgenden Branche: {{industry}}. Freundlich und einladend gestalten.",
1085
- "generateTextPromptWithBusinessName": "Ein einprägsames {{fieldName}} schreiben für {{businessName}}. Freundlich und einladend gestalten.",
1086
- "generateTextPromptSimple": "Ein einprägsames {{fieldName}} schreiben. Freundlich und einladend gestalten.",
1087
- "improveTextPrompt": "Diesen Text für {{businessName}} verbessern, ein Unternehmen in der folgenden Branche: {{industry}}. Natürlicher, klarer und professioneller formulieren.",
1088
- "improveTextPromptWithIndustry": "Diesen Text für {{industry}} verbessern. Natürlicher, klarer und professioneller formulieren.",
1089
- "improveTextPromptWithBusinessName": "Diesen Text für {{businessName}} verbessern. Natürlicher, klarer und professioneller formulieren.",
1090
- "improveTextPromptSimple": "Diesen Text verbessern. Natürlicher, klarer und professioneller formulieren.",
1091
- "spellCheckPrompt": "Prüfen Sie diesen Text auf Rechtschreibung und Grammatik.",
1092
1072
  "stop": "Stopp",
1093
1073
  "thinkingResponse": "Ich überlege mir eine Antwort …"
1094
1074
  },
1075
+ "aiWebsiteBuilder": {},
1095
1076
  "brandpageBackgroundSettings": {
1096
1077
  "userImageUpgradeText": "Laden Sie mit BrandPage Premium Ihre eigenen Bilder als Hintergrund hoch.",
1097
1078
  "libraryImageUpgradeText": "Fügen Sie mit BrandPage Premium Hintergrundbilder von Unsplash hinzu."
@@ -1069,29 +1069,10 @@
1069
1069
  "createTeamCards": "Crea tarjetas de equipo"
1070
1070
  },
1071
1071
  "aiModal": {
1072
- "generateTitle": "Generar texto con IA",
1073
- "generateDescription": "El contenido se genera mediante IA y podría necesitar una revisión para garantizar su precisión",
1074
- "generatePlaceholder": "Describe tu texto.",
1075
- "generationStopped": "El proceso de generación se ha detenido. Envía un nuevo mensaje para continuar.",
1076
- "generateInputPlaceholder": "Introduce tu mensaje para describir el texto...",
1077
- "stopGeneration": "Detén la generación",
1078
- "useText": "Usa texto",
1079
- "promptTooLong": "El mensaje debe tener {{maxLength}} caracteres como máximo ({{currentLength}})",
1080
- "generateText": "Genera {{ location }}",
1081
- "improveText": "Mejora mi texto",
1082
- "spellCheck": "Comprueba la ortografía",
1083
- "generateTextPrompt": "Escribe un {{fieldName}} pegadizo para {{businessName}}, un negocio {{industry}}. Hazlo amigable y acogedor.",
1084
- "generateTextPromptWithIndustry": "Escribe una {{fieldName}} que llame la atención para un negocio en el sector de {{industry}}. Haz que resulte cordial y agradable.",
1085
- "generateTextPromptWithBusinessName": "Escribe una {{fieldName}} que llame la atención para {{businessName}}. Haz que resulte cordial y agradable.",
1086
- "generateTextPromptSimple": "Escribe una {{fieldName}} que llame la atención. Haz que resulte cordial y agradable.",
1087
- "improveTextPrompt": "Mejora este texto para {{businessName}}, un negocio de {{industry}}. Haz que suene más natural, claro y profesional.",
1088
- "improveTextPromptWithIndustry": "Mejora este texto para un negocio de {{industry}}. Haz que suene más natural, claro y profesional.",
1089
- "improveTextPromptWithBusinessName": "Mejora este texto para {{businessName}}. Haz que suene más natural, claro y profesional.",
1090
- "improveTextPromptSimple": "Mejora este texto. Haz que suene más natural, claro y profesional.",
1091
- "spellCheckPrompt": "Verificar la ortografía y la gramática de este texto.",
1092
1072
  "stop": "Detener",
1093
1073
  "thinkingResponse": "Pensando una respuesta..."
1094
1074
  },
1075
+ "aiWebsiteBuilder": {},
1095
1076
  "brandpageBackgroundSettings": {
1096
1077
  "userImageUpgradeText": "Con BrandPage Premium puedes subir tus propias imágenes como fondo.",
1097
1078
  "libraryImageUpgradeText": "Con BrandPage Premium puedes añadir imágenes de fondo proporcionadas por Unsplash."
@@ -1069,29 +1069,10 @@
1069
1069
  "createTeamCards": "Créer des cartes pour votre équipe"
1070
1070
  },
1071
1071
  "aiModal": {
1072
- "generateTitle": "Générer du texte avec l'IA",
1073
- "generateDescription": "Le contenu est généré par l'IA et peut nécessiter des modifications pour plus de précision.",
1074
- "generatePlaceholder": "Décrivez votre texte.",
1075
- "generationStopped": "La génération de texte s'est arrêtée. Lancez une nouvelle requête pour continuer.",
1076
- "generateInputPlaceholder": "Entrez votre requête pour décrire le contenu...",
1077
- "stopGeneration": "Arrêter la génération",
1078
- "useText": "Utiliser le texte",
1079
- "promptTooLong": "La requête doit comporter {{maxLength}} caractères ou moins ({{currentLength}})",
1080
- "generateText": "Générer {{ location }}",
1081
- "improveText": "Améliorez votre texte",
1082
- "spellCheck": "Vérification orthographique",
1083
- "generateTextPrompt": "Rédigez un(e) {{fieldName}} accrocheur(-se) pour {{businessName}}, une entreprise de {{industry}}. Votre création devrait être chaleureuse et accueillante.",
1084
- "generateTextPromptWithIndustry": "Rédigez un(e) {{fieldName}} pour une entreprise de ce secteur : {{industry}}. Votre création devrait être chaleureuse et accueillante.",
1085
- "generateTextPromptWithBusinessName": "Rédigez un(e) {{fieldName}} accrocheur(-se) pour {{businessName}}. Votre création devrait être chaleureuse et accueillante.",
1086
- "generateTextPromptSimple": "Rédigez un(e) {{fieldName}} accrocheur(-se). Votre création devrait être chaleureuse et accueillante.",
1087
- "improveTextPrompt": "Améliorez ce texte pour {{businessName}}, une entreprise de {{industry}}. Rendez-le plus naturel, clair et professionnel.",
1088
- "improveTextPromptWithIndustry": "Améliorez ce texte pour une entreprise de {{industry}}. Rendez-le plus naturel, clair et professionnel.",
1089
- "improveTextPromptWithBusinessName": "Améliorez ce texte pour {{businessName}}. Rendez-le plus naturel, clair et professionnel.",
1090
- "improveTextPromptSimple": "Améliorez ce texte. Rendez-le plus naturel, clair et professionnel.",
1091
- "spellCheckPrompt": "Vérifiez l'orthographe et la grammaire de ce texte.",
1092
1072
  "stop": "Arrêtez",
1093
1073
  "thinkingResponse": "Je réfléchis à une réponse…"
1094
1074
  },
1075
+ "aiWebsiteBuilder": {},
1095
1076
  "brandpageBackgroundSettings": {
1096
1077
  "userImageUpgradeText": "Avec BrandPage Premium, vous pouvez télécharger vos propres images comme arrière-plan.",
1097
1078
  "libraryImageUpgradeText": "Avec BrandPage Premium, vous pouvez ajouter des images d'arrière-plan fournies par Unsplash."
@@ -1069,29 +1069,10 @@
1069
1069
  "createTeamCards": "Créer des cartes d'équipe"
1070
1070
  },
1071
1071
  "aiModal": {
1072
- "generateTitle": "Générer du texte avec l'IA",
1073
- "generateDescription": "Le contenu est généré par l'IA et peut nécessiter des modifications pour plus de précision.",
1074
- "generatePlaceholder": "Décrivez votre texte.",
1075
- "generationStopped": "La génération de texte s'est arrêtée. Démarrez une nouvelle invite pour continuer.",
1076
- "generateInputPlaceholder": "Entrez votre prompt pour décrire le contenu...",
1077
- "stopGeneration": "Arrêter la génération",
1078
- "useText": "Utiliser le texte",
1079
- "promptTooLong": "L'invite doit comporter {{maxLength}} caractères ou moins ({{currentLength}})",
1080
- "generateText": "Générer {{ location }}",
1081
- "improveText": "Améliorez mon texte",
1082
- "spellCheck": "Vérification orthographique",
1083
- "generateTextPrompt": "Rédigez un {{fieldName}} accrocheur pour {{businessName}}, une entreprise de {{industry}}. Rendez-le chaleureux et accueillant.",
1084
- "generateTextPromptWithIndustry": "Rédigez un {{fieldName}} accrocheur pour une entreprise de ce secteur : {{industry}}. Rendez-le chaleureux et accueillant.",
1085
- "generateTextPromptWithBusinessName": "Rédigez un {{fieldName}} accrocheur pour {{businessName}}. Rendez-le chaleureux et accueillant.",
1086
- "generateTextPromptSimple": "Rédigez un {{fieldName}} accrocheur. Rendez-le chaleureux et accueillant.",
1087
- "improveTextPrompt": "Améliorez ce texte pour {{businessName}}, une entreprise de {{industry}}. Donnez-lui un ton plus naturel, plus clair et plus professionnel.",
1088
- "improveTextPromptWithIndustry": "Améliorez ce texte pour une entreprise de {{industry}}. Donnez-lui un ton plus naturel, plus clair et plus professionnel.",
1089
- "improveTextPromptWithBusinessName": "Améliorez ce texte pour {{businessName}}. Donnez-lui un ton plus naturel, plus clair et plus professionnel.",
1090
- "improveTextPromptSimple": "Améliorez ce texte. Donnez-lui un ton plus naturel, plus clair et plus professionnel.",
1091
- "spellCheckPrompt": "Vérifiez l'orthographe et la grammaire de ce texte.",
1092
1072
  "stop": "Arrêtez",
1093
1073
  "thinkingResponse": "Je réfléchis à une réponse…"
1094
1074
  },
1075
+ "aiWebsiteBuilder": {},
1095
1076
  "brandpageBackgroundSettings": {
1096
1077
  "userImageUpgradeText": "Avec BrandPage Premium, vous pouvez télécharger vos propres images comme arrière-plan.",
1097
1078
  "libraryImageUpgradeText": "Avec BrandPage Premium, vous pouvez ajouter des images d'arrière-plan fournies par Unsplash."
@@ -1069,29 +1069,10 @@
1069
1069
  "createTeamCards": "Create Team Cards"
1070
1070
  },
1071
1071
  "aiModal": {
1072
- "generateTitle": "Generate Text with AI",
1073
- "generateDescription": "Content is AI-generated and may require editing for accuracy",
1074
- "generatePlaceholder": "Describe your text.",
1075
- "generationStopped": "Text generation stopped. Start a new prompt to continue.",
1076
- "generateInputPlaceholder": "Enter your prompt to describe the text...",
1077
- "stopGeneration": "Stop generation",
1078
- "useText": "Use text",
1079
- "promptTooLong": "Prompt must be {{maxLength}} characters or less ({{currentLength}})",
1080
- "generateText": "Generate {{ location }}",
1081
- "improveText": "Improve my text",
1082
- "spellCheck": "Spell Check",
1083
- "generateTextPrompt": "Write a catchy {{fieldName}} for {{businessName}}, a {{industry}} business. Make it friendly and inviting.",
1084
- "generateTextPromptWithIndustry": "Write a catchy {{fieldName}} for a business in the {{industry}} industry. Make it friendly and inviting.",
1085
- "generateTextPromptWithBusinessName": "Write a catchy {{fieldName}} for {{businessName}}. Make it friendly and inviting.",
1086
- "generateTextPromptSimple": "Write a catchy {{fieldName}}. Make it friendly and inviting.",
1087
- "improveTextPrompt": "Improve this text for {{businessName}}, a {{industry}} business. Make it sound more natural, clear, and professional.",
1088
- "improveTextPromptWithIndustry": "Improve this text for a {{industry}} business. Make it sound more natural, clear, and professional.",
1089
- "improveTextPromptWithBusinessName": "Improve this text for {{businessName}}. Make it sound more natural, clear, and professional.",
1090
- "improveTextPromptSimple": "Improve this text. Make it sound more natural, clear, and professional.",
1091
- "spellCheckPrompt": "Check this text for spelling and grammar.",
1092
1072
  "stop": "Stop",
1093
1073
  "thinkingResponse": "Thinking of a response..."
1094
1074
  },
1075
+ "aiWebsiteBuilder": {},
1095
1076
  "brandpageBackgroundSettings": {
1096
1077
  "userImageUpgradeText": "With BrandPage Premium you can upload your own images as background.",
1097
1078
  "libraryImageUpgradeText": "With BrandPage Premium you can add background images powered by Unsplash."
@@ -1069,29 +1069,10 @@
1069
1069
  "createTeamCards": "Criar cartões de equipe"
1070
1070
  },
1071
1071
  "aiModal": {
1072
- "generateTitle": "Gerar texto com IA",
1073
- "generateDescription": "O conteúdo é gerado por IA, pode precisar de alterações para melhorar a precisão",
1074
- "generatePlaceholder": "Descreva seu texto.",
1075
- "generationStopped": "A geração de texto parou. Inicie um novo prompt para continuar.",
1076
- "generateInputPlaceholder": "Digite o prompt para descrever o texto...",
1077
- "stopGeneration": "Parar de gerar",
1078
- "useText": "Usar texto",
1079
- "promptTooLong": "O prompt deve ter {{maxLength}} caracteres ou menos ({{currentLength}})",
1080
- "generateText": "Gerar {{ location }}",
1081
- "improveText": "Melhore meu texto",
1082
- "spellCheck": "Verificação Ortográfica",
1083
- "generateTextPrompt": "Escreva um {{fieldName}} cativante para {{businessName}}, uma empresa de {{industry}}. Torne-o amigável e convidativo.",
1084
- "generateTextPromptWithIndustry": "Crie um {{fieldName}} cativante para um negócio no setor de {{industry}}. O texto deve ser simpático e convidativo.",
1085
- "generateTextPromptWithBusinessName": "Crie um {{fieldName}} cativante para um {{businessName}}. O texto deve ser simpático e convidativo.",
1086
- "generateTextPromptSimple": "Crie um {{fieldName}} cativante. O texto deve ser simpático e convidativo.",
1087
- "improveTextPrompt": "Aprimore o texto do {{businessName}} para um negócio de {{industry}}. Ele deve soar natural, claro e profissional.",
1088
- "improveTextPromptWithIndustry": "Aprimore o texto para um negócio de {{industry}}. Ele deve soar natural, claro e profissional.",
1089
- "improveTextPromptWithBusinessName": "Aprimore o texto do {{businessName}}. Ele deve soar natural, claro e profissional.",
1090
- "improveTextPromptSimple": "Melhore este texto. Torne-o mais natural, claro e profissional.",
1091
- "spellCheckPrompt": "Verifique a ortografia e a gramática deste texto.",
1092
1072
  "stop": "Parar",
1093
1073
  "thinkingResponse": "Pensando em uma resposta..."
1094
1074
  },
1075
+ "aiWebsiteBuilder": {},
1095
1076
  "brandpageBackgroundSettings": {
1096
1077
  "userImageUpgradeText": "Com o BrandPage Premium, você pode carregar as suas próprias imagens de fundo.",
1097
1078
  "libraryImageUpgradeText": "Com o BrandPage Premium, você pode adicionar imagens de fundo fornecidas pela Unsplash."
@@ -1069,29 +1069,10 @@
1069
1069
  "createTeamCards": "Criar cartões de equipa"
1070
1070
  },
1071
1071
  "aiModal": {
1072
- "generateTitle": "Gerar Texto com IA",
1073
- "generateDescription": "O conteúdo é gerado por IA e pode precisar de edição para ser preciso",
1074
- "generatePlaceholder": "Descreva o seu texto.",
1075
- "generationStopped": "A geração de texto parou. Inicie um novo prompt para continuar.",
1076
- "generateInputPlaceholder": "Introduza o seu comando para descrever o texto...",
1077
- "stopGeneration": "Parar a geração",
1078
- "useText": "Utilizar texto",
1079
- "promptTooLong": "A mensagem tem de ter {{maxLength}} carateres ou menos ({{currentLength}})",
1080
- "generateText": "Gerar {{ location }}",
1081
- "improveText": "Melhore o seu texto",
1082
- "spellCheck": "Verificação Ortográfica",
1083
- "generateTextPrompt": "Escreva um {{fieldName}} cativante para {{businessName}}, uma empresa de {{industry}}. Escreva com um tom amigável e convidativo.",
1084
- "generateTextPromptWithIndustry": "Escreva um {{fieldName}} cativante para uma empresa na indústria de {{industry}}. Escreva com um tom amigável e convidativo.",
1085
- "generateTextPromptWithBusinessName": "Escreva um {{fieldName}} cativante para {{businessName}}. Escreva com um tom amigável e convidativo.",
1086
- "generateTextPromptSimple": "Escreva um {{fieldName}} cativante. Escreva com um tom amigável e convidativo.",
1087
- "improveTextPrompt": "Melhore este texto para {{businessName}}, uma empresa de {{industry}}. Faça com que soe mais natural, claro e profissional.",
1088
- "improveTextPromptWithIndustry": "Melhore este texto para uma empresa de {{industry}}. Faça com que soe mais natural, claro e profissional.",
1089
- "improveTextPromptWithBusinessName": "Melhore este texto para {{businessName}}. Faça com que soe mais natural, claro e profissional.",
1090
- "improveTextPromptSimple": "Melhore este texto. Faça com que soe mais natural, claro e profissional.",
1091
- "spellCheckPrompt": "Verifique a ortografia e a gramática deste texto.",
1092
1072
  "stop": "Parar",
1093
1073
  "thinkingResponse": "A pensar numa resposta..."
1094
1074
  },
1075
+ "aiWebsiteBuilder": {},
1095
1076
  "brandpageBackgroundSettings": {
1096
1077
  "userImageUpgradeText": "Com o BrandPage Premium, pode carregar as suas próprias imagens como fundo.",
1097
1078
  "libraryImageUpgradeText": "Com o BrandPage Premium, pode adicionar imagens de fundo fornecidas pela Unsplash."