@designcrowd/library.brand-page 5.17.13 → 5.17.14-ai-26

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 (189) hide show
  1. package/lib/src/{CreatedOnBrandCrowd-de-de-Bca5lK0D.js → CreatedOnBrandCrowd-de-de-BaFficcN.js} +1 -1
  2. package/lib/src/{CreatedOnBrandCrowd-en-us-DsSv9Yb3.js → CreatedOnBrandCrowd-en-us-_I887_WU.js} +1 -1
  3. package/lib/src/{CreatedOnBrandCrowd-es-es-bmyh0Hhu.js → CreatedOnBrandCrowd-es-es-Dh9z3cqa.js} +1 -1
  4. package/lib/src/{CreatedOnBrandCrowd-fr-fr-CEY5Vwyl.js → CreatedOnBrandCrowd-fr-ca-B8rDMAV0.js} +1 -1
  5. package/lib/src/{CreatedOnBrandCrowd-fr-ca-CEY5Vwyl.js → CreatedOnBrandCrowd-fr-fr-B8rDMAV0.js} +1 -1
  6. package/lib/src/{CreatedOnBrandCrowd-pt-pt-B0qQyIQj.js → CreatedOnBrandCrowd-pt-br-C17kw9An.js} +1 -1
  7. package/lib/src/{CreatedOnBrandCrowd-pt-br-B0qQyIQj.js → CreatedOnBrandCrowd-pt-pt-C17kw9An.js} +1 -1
  8. package/lib/src/{CreatedOnDcom-de-de-Bge8ajmJ.js → CreatedOnDcom-de-de-ONg8PiAJ.js} +1 -1
  9. package/lib/src/{CreatedOnDcom-en-us-DEPPhuhr.js → CreatedOnDcom-en-us-B4_qSdFQ.js} +1 -1
  10. package/lib/src/{CreatedOnDcom-es-es-DPj_Ew87.js → CreatedOnDcom-es-es-DCgkbgWn.js} +1 -1
  11. package/lib/src/{CreatedOnDcom-fr-ca-Cpq5wFjs.js → CreatedOnDcom-fr-ca-C9Y2KwAS.js} +1 -1
  12. package/lib/src/{CreatedOnDcom-fr-fr-CBQ2WuX-.js → CreatedOnDcom-fr-fr-B0bylCkH.js} +1 -1
  13. package/lib/src/{CreatedOnDcom-pt-br-erHhjco0.js → CreatedOnDcom-pt-br-B3be1B-H.js} +1 -1
  14. package/lib/src/{CreatedOnDcom-pt-pt-mQnDH1e3.js → CreatedOnDcom-pt-pt-D9n37Y3J.js} +1 -1
  15. package/lib/src/brand-page/models/brand-page-context.model.js +1 -1
  16. package/lib/src/brand-page-maker/components/action-bar/ActionBar.mixin.d.ts +9 -7
  17. package/lib/src/brand-page-maker/components/action-bar/ActionBar.mixin.js +9 -0
  18. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.d.ts +4 -1
  19. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.js +3 -0
  20. package/lib/src/brand-page-maker/components/navigation/Navigation.mixin.d.ts +3 -0
  21. package/lib/src/brand-page-maker/components/navigation/Navigation.mixin.js +3 -0
  22. package/lib/src/brand-page-maker/composables/ai-chat/useAiChat.d.ts +5 -0
  23. package/lib/src/brand-page-maker/composables/ai-chat/useAiChat.js +9 -2
  24. package/lib/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.js +149 -49
  25. package/lib/src/brand-page-maker/composables/useEventTracker.d.ts +2 -0
  26. package/lib/src/brand-page-maker/composables/useEventTracker.js +2 -0
  27. package/lib/src/brand-page-maker/constants/sidebar-constant.js +7 -7
  28. package/lib/src/brand-page-maker/stores/ai-thread/ai-thread-store.d.ts +48 -0
  29. package/lib/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.js +34 -2
  30. package/lib/src/bundled-translations-C3bP1jT9.js +29 -0
  31. package/lib/src/bundled-translations-JUkaTF4h.js +173 -0
  32. package/lib/src/bundled-translations.de-DE-BS9DHJM-.js +173 -0
  33. package/lib/src/bundled-translations.de-DE-Ived4RSM.js +29 -0
  34. package/lib/src/bundled-translations.es-ES-C5Ar9cHx.js +173 -0
  35. package/lib/src/bundled-translations.es-ES-eeZf0FxG.js +29 -0
  36. package/lib/src/bundled-translations.fr-CA-01-9B5oP.js +29 -0
  37. package/lib/src/bundled-translations.fr-CA-BzKxkt5L.js +173 -0
  38. package/lib/src/bundled-translations.fr-FR-BBf1NoEQ.js +29 -0
  39. package/lib/src/bundled-translations.fr-FR-GXszyber.js +173 -0
  40. package/lib/src/bundled-translations.pt-BR-BgdLpX4p.js +173 -0
  41. package/lib/src/bundled-translations.pt-BR-YR-O3Wc5.js +29 -0
  42. package/lib/src/bundled-translations.pt-PT-D9LhV8fV.js +29 -0
  43. package/lib/src/bundled-translations.pt-PT-USM01NF6.js +173 -0
  44. package/lib/src/bundles/bundled-translations.de-DE.json +2 -1
  45. package/lib/src/bundles/bundled-translations.es-ES.json +2 -1
  46. package/lib/src/bundles/bundled-translations.fr-CA.json +2 -1
  47. package/lib/src/bundles/bundled-translations.fr-FR.json +2 -1
  48. package/lib/src/bundles/bundled-translations.json +2 -1
  49. package/lib/src/bundles/bundled-translations.pt-BR.json +2 -1
  50. package/lib/src/bundles/bundled-translations.pt-PT.json +2 -1
  51. package/lib/src/clients/ai-assistant-client.d.ts +11 -2
  52. package/lib/src/clients/ai-assistant-client.js +16 -0
  53. package/lib/src/clients/websocket-gateway-client.d.ts +9 -1
  54. package/lib/src/css/library.brand-page-brandCrowd.min.css +188 -43
  55. package/lib/src/css/library.brand-page-brandPage.min.css +189 -43
  56. package/lib/src/css/library.brand-page-designCom.min.css +188 -43
  57. package/lib/src/css/library.brand-page-preview.min.css +188 -43
  58. package/lib/src/index.mjs +1 -1
  59. package/lib/src/{lib-DLa849MC.js → lib-DuVDJ6PW.js} +22215 -21553
  60. package/lib/src/metadata-builder/ai-metadata-executor.js +26 -1
  61. package/lib/src/metadata-builder/builders/footer-builder.d.ts +11 -0
  62. package/lib/src/metadata-builder/builders/footer-builder.js +128 -0
  63. package/lib/src/metadata-builder/builders/global-styles-builder.d.ts +14 -0
  64. package/lib/src/metadata-builder/builders/global-styles-builder.js +79 -0
  65. package/lib/src/metadata-builder/builders/header-builder.d.ts +11 -0
  66. package/lib/src/metadata-builder/builders/header-builder.js +135 -0
  67. package/lib/src/metadata-builder/builders/section-builders/about-section-builder.js +1 -1
  68. package/lib/src/metadata-builder/builders/section-builders/banner-section-builder.js +42 -4
  69. package/lib/src/metadata-builder/builders/section-builders/base-section-builder.d.ts +5 -2
  70. package/lib/src/metadata-builder/builders/section-builders/base-section-builder.js +39 -4
  71. package/lib/src/metadata-builder/builders/section-builders/booking-section-builder.d.ts +6 -0
  72. package/lib/src/metadata-builder/builders/section-builders/booking-section-builder.js +50 -0
  73. package/lib/src/metadata-builder/builders/section-builders/button-section-builder.js +1 -1
  74. package/lib/src/metadata-builder/builders/section-builders/contact-form-builder.js +1 -1
  75. package/lib/src/metadata-builder/builders/section-builders/divider-section-builder.js +7 -1
  76. package/lib/src/metadata-builder/builders/section-builders/image-gallery-builder.js +4 -8
  77. package/lib/src/metadata-builder/builders/section-builders/images-section-builder.js +31 -10
  78. package/lib/src/metadata-builder/builders/section-builders/index.d.ts +1 -0
  79. package/lib/src/metadata-builder/builders/section-builders/index.js +1 -0
  80. package/lib/src/metadata-builder/builders/section-builders/mailing-list-builder.js +18 -2
  81. package/lib/src/metadata-builder/builders/section-builders/mailing-list-section-builder.js +18 -2
  82. package/lib/src/metadata-builder/builders/section-builders/profile-section-builder.js +39 -1
  83. package/lib/src/metadata-builder/builders/section-builders/shapes-section-builder.js +28 -3
  84. package/lib/src/metadata-builder/builders/section-builders/social-links-builder.js +1 -1
  85. package/lib/src/metadata-builder/builders/section-builders/testimonial-section-builder.js +1 -1
  86. package/lib/src/metadata-builder/builders/section-builders/text-section-builder.js +32 -18
  87. package/lib/src/metadata-builder/builders/section-field-maps.js +21 -1
  88. package/lib/src/metadata-builder/builders/section-field-utils.d.ts +1 -8
  89. package/lib/src/metadata-builder/builders/section-field-utils.js +7 -42
  90. package/lib/src/metadata-builder/helpers/rte.helpers.d.ts +6 -4
  91. package/lib/src/metadata-builder/helpers/rte.helpers.js +15 -10
  92. package/lib/src/metadata-builder/metadata-executor.js +12 -1
  93. package/lib/src/metadata-builder/models.d.ts +5 -0
  94. package/lib/src/metadata-builder/models.js +8 -0
  95. package/lib/src/metadata-builder/parsers/ai-toolcall-parser.d.ts +110 -0
  96. package/lib/src/metadata-builder/parsers/ai-toolcall-parser.js +10 -0
  97. package/lib/src/metadata-builder/parsers/section-tool-arguments.d.ts +62 -14
  98. package/lib/src/metadata-builder/parsers/section-tool-arguments.js +5 -1
  99. package/lib/src/shared/navigation-style-settings/store/index.js +1 -0
  100. package/lib/src/shared/page-navigation/store/page-navigation-store.js +1 -20
  101. package/lib/src/shared/page-navigation/utils/nav-order-utils.d.ts +3 -0
  102. package/lib/src/shared/page-navigation/utils/nav-order-utils.js +20 -0
  103. package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.d.ts +3 -1
  104. package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.js +5 -0
  105. package/lib/src/utils/minify-brand-page-metadata.d.ts +45 -0
  106. package/lib/src/utils/minify-brand-page-metadata.js +120 -119
  107. package/package.json +2 -2
  108. package/src/brand-page/models/brand-page-context.model.ts +1 -1
  109. package/src/brand-page-maker/components/action-bar/ActionBar.mixin.ts +12 -0
  110. package/src/brand-page-maker/components/action-bar/ActionBar.vue +7 -0
  111. package/src/brand-page-maker/components/action-bar/ActionBarNavigation.vue +10 -0
  112. package/src/brand-page-maker/components/action-bar/i18n/action-bar.de-DE.json +5 -4
  113. package/src/brand-page-maker/components/action-bar/i18n/action-bar.es-ES.json +5 -4
  114. package/src/brand-page-maker/components/action-bar/i18n/action-bar.fr-CA.json +5 -4
  115. package/src/brand-page-maker/components/action-bar/i18n/action-bar.fr-FR.json +5 -4
  116. package/src/brand-page-maker/components/action-bar/i18n/action-bar.json +2 -1
  117. package/src/brand-page-maker/components/action-bar/i18n/action-bar.pt-BR.json +5 -4
  118. package/src/brand-page-maker/components/action-bar/i18n/action-bar.pt-PT.json +5 -4
  119. package/src/brand-page-maker/components/ai-text-edit/AiProgressFeed.vue +162 -0
  120. package/src/brand-page-maker/components/ai-text-edit/AiTextEdit.vue +1 -8
  121. package/src/brand-page-maker/components/ai-text-edit/TextBubble.vue +44 -4
  122. package/src/brand-page-maker/components/ai-website-builder/AiWebsiteBuilder.vue +1 -2
  123. package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.ts +3 -0
  124. package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.vue +2 -0
  125. package/src/brand-page-maker/components/navigation/Navigation.mixin.ts +3 -0
  126. package/src/brand-page-maker/components/navigation/Navigation.vue +1 -0
  127. package/src/brand-page-maker/composables/ai-chat/useAiChat.ts +17 -2
  128. package/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.ts +181 -57
  129. package/src/brand-page-maker/composables/useEventTracker.ts +2 -0
  130. package/src/brand-page-maker/constants/sidebar-constant.ts +7 -7
  131. package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.ts +67 -0
  132. package/src/bundles/bundled-translations.de-DE.json +2 -1
  133. package/src/bundles/bundled-translations.es-ES.json +2 -1
  134. package/src/bundles/bundled-translations.fr-CA.json +2 -1
  135. package/src/bundles/bundled-translations.fr-FR.json +2 -1
  136. package/src/bundles/bundled-translations.json +2 -1
  137. package/src/bundles/bundled-translations.pt-BR.json +2 -1
  138. package/src/bundles/bundled-translations.pt-PT.json +2 -1
  139. package/src/clients/ai-assistant-client.ts +37 -2
  140. package/src/clients/websocket-gateway-client.ts +17 -1
  141. package/src/metadata-builder/ai-metadata-executor.ts +36 -0
  142. package/src/metadata-builder/builders/footer-builder.ts +190 -0
  143. package/src/metadata-builder/builders/global-styles-builder.ts +123 -0
  144. package/src/metadata-builder/builders/header-builder.ts +204 -0
  145. package/src/metadata-builder/builders/section-builders/about-section-builder.ts +1 -1
  146. package/src/metadata-builder/builders/section-builders/banner-section-builder.ts +49 -8
  147. package/src/metadata-builder/builders/section-builders/base-section-builder.ts +56 -4
  148. package/src/metadata-builder/builders/section-builders/booking-section-builder.ts +68 -0
  149. package/src/metadata-builder/builders/section-builders/button-section-builder.ts +1 -1
  150. package/src/metadata-builder/builders/section-builders/contact-form-builder.ts +1 -1
  151. package/src/metadata-builder/builders/section-builders/divider-section-builder.ts +8 -1
  152. package/src/metadata-builder/builders/section-builders/image-gallery-builder.ts +23 -27
  153. package/src/metadata-builder/builders/section-builders/images-section-builder.ts +62 -45
  154. package/src/metadata-builder/builders/section-builders/index.ts +1 -0
  155. package/src/metadata-builder/builders/section-builders/mailing-list-builder.ts +22 -2
  156. package/src/metadata-builder/builders/section-builders/mailing-list-section-builder.ts +22 -2
  157. package/src/metadata-builder/builders/section-builders/profile-section-builder.ts +44 -2
  158. package/src/metadata-builder/builders/section-builders/shapes-section-builder.ts +31 -10
  159. package/src/metadata-builder/builders/section-builders/social-links-builder.ts +1 -1
  160. package/src/metadata-builder/builders/section-builders/testimonial-section-builder.ts +1 -1
  161. package/src/metadata-builder/builders/section-builders/text-section-builder.ts +58 -21
  162. package/src/metadata-builder/builders/section-field-maps.ts +25 -1
  163. package/src/metadata-builder/builders/section-field-utils.ts +12 -56
  164. package/src/metadata-builder/helpers/rte.helpers.ts +18 -13
  165. package/src/metadata-builder/metadata-executor.ts +15 -0
  166. package/src/metadata-builder/models.ts +11 -0
  167. package/src/metadata-builder/parsers/ai-toolcall-parser.ts +112 -0
  168. package/src/metadata-builder/parsers/section-tool-arguments.ts +86 -14
  169. package/src/shared/navigation-style-settings/store/index.ts +5 -0
  170. package/src/shared/page-navigation/store/page-navigation-store.ts +4 -31
  171. package/src/shared/page-navigation/utils/nav-order-utils.ts +32 -0
  172. package/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.ts +5 -0
  173. package/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.vue +1 -1
  174. package/src/shared/side-bar/components/SideBar.vue +20 -1
  175. package/src/utils/minify-brand-page-metadata.ts +185 -120
  176. package/lib/src/bundled-translations-7nBFAyc1.js +0 -173
  177. package/lib/src/bundled-translations-D68IyOT-.js +0 -29
  178. package/lib/src/bundled-translations.de-DE-CXZ-2vzJ.js +0 -173
  179. package/lib/src/bundled-translations.de-DE-CutkEApx.js +0 -29
  180. package/lib/src/bundled-translations.es-ES-BBU9Jjfn.js +0 -173
  181. package/lib/src/bundled-translations.es-ES-DYz1JSy9.js +0 -29
  182. package/lib/src/bundled-translations.fr-CA-BtoS9CoB.js +0 -173
  183. package/lib/src/bundled-translations.fr-CA-CcZ2d8Di.js +0 -29
  184. package/lib/src/bundled-translations.fr-FR-Bm8CtJY-.js +0 -173
  185. package/lib/src/bundled-translations.fr-FR-DjJ0JiGa.js +0 -29
  186. package/lib/src/bundled-translations.pt-BR-Bq5FfF0e.js +0 -29
  187. package/lib/src/bundled-translations.pt-BR-CSz7z0l3.js +0 -173
  188. package/lib/src/bundled-translations.pt-PT-BSItSGh9.js +0 -173
  189. package/lib/src/bundled-translations.pt-PT-CHJAMmIT.js +0 -29
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-DLa849MC.js";
2
+ import { _ as t } from "./lib-DuVDJ6PW.js";
3
3
  const i = {}, h = {
4
4
  width: "275",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-DLa849MC.js";
2
+ import { _ as t } from "./lib-DuVDJ6PW.js";
3
3
  const i = {}, h = {
4
4
  width: "251",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-DLa849MC.js";
2
+ import { _ as t } from "./lib-DuVDJ6PW.js";
3
3
  const i = {}, h = {
4
4
  width: "250",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-DLa849MC.js";
2
+ import { _ as t } from "./lib-DuVDJ6PW.js";
3
3
  const i = {}, h = {
4
4
  width: "237",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-DLa849MC.js";
2
+ import { _ as t } from "./lib-DuVDJ6PW.js";
3
3
  const i = {}, h = {
4
4
  width: "237",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-DLa849MC.js";
2
+ import { _ as t } from "./lib-DuVDJ6PW.js";
3
3
  const i = {}, h = {
4
4
  width: "263",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-DLa849MC.js";
2
+ import { _ as t } from "./lib-DuVDJ6PW.js";
3
3
  const i = {}, h = {
4
4
  width: "263",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as e } from "./lib-DLa849MC.js";
2
+ import { _ as e } from "./lib-DuVDJ6PW.js";
3
3
  const M = {}, Z = {
4
4
  width: "242",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as e } from "./lib-DLa849MC.js";
2
+ import { _ as e } from "./lib-DuVDJ6PW.js";
3
3
  const i = {}, M = {
4
4
  width: "231",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as e } from "./lib-DLa849MC.js";
2
+ import { _ as e } from "./lib-DuVDJ6PW.js";
3
3
  const M = {}, Z = {
4
4
  width: "230",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as e } from "./lib-DLa849MC.js";
2
+ import { _ as e } from "./lib-DuVDJ6PW.js";
3
3
  const i = {}, l = {
4
4
  width: "216",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as e } from "./lib-DLa849MC.js";
2
+ import { _ as e } from "./lib-DuVDJ6PW.js";
3
3
  const i = {}, l = {
4
4
  width: "216",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as M } from "./lib-DLa849MC.js";
2
+ import { _ as M } from "./lib-DuVDJ6PW.js";
3
3
  const Z = {}, e = {
4
4
  width: "232",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as M } from "./lib-DLa849MC.js";
2
+ import { _ as M } from "./lib-DuVDJ6PW.js";
3
3
  const Z = {}, e = {
4
4
  width: "232",
5
5
  height: "36",
@@ -26,7 +26,7 @@ const AB_TEST_KEYS = {
26
26
  BP_3926_FREEMIUM_WATERMARK: 'bc-bp-3926-freemium-cta-in-website-editor',
27
27
  BP_4572_AI_TEXT_GENERATION_POST_PURCHASE: 'bc-bp-4572-ai-text-generation-post-purchase',
28
28
  BP_4964_AI_TEXT_GENERATION_IMPROVEMENT: 'bc-bp-4964-ai-text-improvement-post-purchase-on-website',
29
- BP_5245_AI_WEBSITE_ASSISTANT: 'bc-bp-5245-ai-website-assistant',
29
+ BP_5245_AI_WEBSITE_ASSISTANT: 'bc-bp-5245-ai-website-assistant-postpurchase',
30
30
  };
31
31
  export const MEDIA_SIZES = {
32
32
  size1x: 'size1x',
@@ -3,6 +3,7 @@ declare const _default: import("vue").DefineComponent<{}, {
3
3
  isSaving: import("vue").ComputedRef<boolean>;
4
4
  isPublished: import("vue").ComputedRef<boolean>;
5
5
  isPublishButtonEnabled: import("vue").ComputedRef<boolean>;
6
+ isBrandContact: import("vue").ComputedRef<boolean>;
6
7
  userStore: import("pinia").Store<"brandPageMakerUser", import("@brand-page-maker/stores").UserState, {}, {
7
8
  setUserState(payload: {
8
9
  emailAddress?: string | undefined;
@@ -17,7 +18,7 @@ declare const _default: import("vue").DefineComponent<{}, {
17
18
  contentErrorCount(): number;
18
19
  brandPageBaseUrl(): string;
19
20
  brandPageContentTypes(): string[];
20
- brandPageData(): import("../../../brand-page").BrandPageModel;
21
+ brandPageData(): import("@brand-page/models").BrandPageModel;
21
22
  brandPageToken(): string | undefined;
22
23
  brandPageDescription(): string;
23
24
  brandPageSlug(): string;
@@ -112,22 +113,22 @@ declare const _default: import("vue").DefineComponent<{}, {
112
113
  onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): void;
113
114
  setSelectedTabName(payload: any): void;
114
115
  showNextNotificationMessage(): Promise<void>;
115
- updateContent<TContent extends import("../../../brand-page").Content, P extends {
116
+ updateContent<TContent extends import("@brand-page/models").Content, P extends {
116
117
  id: string;
117
118
  content: TContent;
118
119
  }>(payload: P): Promise<void>;
119
- export(): import("../../../brand-page").BrandPageModel;
120
+ export(): import("@brand-page/models").BrandPageModel;
120
121
  setBrandPageType({ brandPageType }: {
121
122
  brandPageType: "default" | "brandSite" | "brandContact";
122
123
  }): void;
123
- initialiseStoresByBrandPageModelAsync(brandPageModel: import("../../../brand-page").BrandPageModel): Promise<void>;
124
+ initialiseStoresByBrandPageModelAsync(brandPageModel: import("@brand-page/models").BrandPageModel): Promise<void>;
124
125
  initialise({ brandPage, brandPageType, logoDraftDesignAttributes, unsplashApplicationName, templateCategories, personalisationData, isPersonalisationEnabled, businessName, industry, logoVariationImageUrls, shopConfigData, isServerRenderOverride, }: import("@brand-page-maker/stores").InitialisePayload): Promise<void>;
125
126
  initialisePages({ pages, sections, }: {
126
- pages: import("../../../brand-page").PageModel[];
127
+ pages: import("@brand-page/models").PageModel[];
127
128
  sections: import("../../../shared/page-settings/store").PageSettingsStateSections;
128
129
  }): void;
129
130
  initialisePagesForCurrentPage({ pages, sections, }: {
130
- pages: import("../../../brand-page").PageModel[];
131
+ pages: import("@brand-page/models").PageModel[];
131
132
  sections: import("../../../shared/page-settings/store").PageSettingsStateSections;
132
133
  }): void;
133
134
  initialiseAdminMaker(payload: {
@@ -146,7 +147,7 @@ declare const _default: import("vue").DefineComponent<{}, {
146
147
  validateContentItems(): Promise<void>;
147
148
  validateBrandPageData(): Promise<void>;
148
149
  setViewport(payload: {
149
- viewport: import("../../../brand-page").ViewportsType;
150
+ viewport: import("@brand-page/models").ViewportsType;
150
151
  }): void;
151
152
  showStripeOnboardingModal(): Promise<void>;
152
153
  selectInitialCategories(payload: import("../../../shared/template-settings/models").InitialCategories): void;
@@ -154,5 +155,6 @@ declare const _default: import("vue").DefineComponent<{}, {
154
155
  }, {}, {}, {
155
156
  saveBrandPage(): void;
156
157
  saveAndPublishBrandPage(isActionBar: boolean): void;
158
+ createTeamCards(isTopNav: boolean): void;
157
159
  }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
158
160
  export default _default;
@@ -2,6 +2,7 @@ import { EVENTS } from '../../../constants/brand-page-maker';
2
2
  import { useBrandPageMakerUserStore, useBrandPageMakerStore, } from '@brand-page-maker/stores';
3
3
  import { computed, defineComponent } from 'vue';
4
4
  import { UPGRADE_CTA_LOCATIONS } from './../../composables/useEventTracker';
5
+ import { BRAND_PAGE_TYPES } from '@brand-page/models';
5
6
  export default defineComponent({
6
7
  setup() {
7
8
  const userStore = useBrandPageMakerUserStore();
@@ -11,6 +12,7 @@ export default defineComponent({
11
12
  isSaving: computed(() => brandPageMakerStore.isSaving),
12
13
  isPublished: computed(() => brandPageMakerStore.isPublished),
13
14
  isPublishButtonEnabled: computed(() => brandPageMakerStore.isPublishButtonEnabled),
15
+ isBrandContact: computed(() => brandPageMakerStore.brandPageType === BRAND_PAGE_TYPES.brandContact),
14
16
  userStore,
15
17
  brandPageMakerStore,
16
18
  };
@@ -29,5 +31,12 @@ export default defineComponent({
29
31
  : UPGRADE_CTA_LOCATIONS.EDITOR_PUBLISH_TOP,
30
32
  });
31
33
  },
34
+ createTeamCards(isTopNav) {
35
+ this.$emit('create-team-cards', {
36
+ cta_location: isTopNav
37
+ ? UPGRADE_CTA_LOCATIONS.NAV_TOP
38
+ : UPGRADE_CTA_LOCATIONS.NAV_BOTTOM,
39
+ });
40
+ },
32
41
  },
33
42
  });
@@ -32,7 +32,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
32
32
  }>, {
33
33
  commonTr: (key: any) => any;
34
34
  currentNotificationMessage: import("vue").ComputedRef<false | {
35
- type: "success" | "warning" | "error";
35
+ type: "error" | "success" | "warning";
36
36
  label: string;
37
37
  description: string | false;
38
38
  }>;
@@ -1328,6 +1328,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
1328
1328
  onChangeTemplateConfirmModalCancel(): void;
1329
1329
  onChangeTemplateConfirmModalConfirm(): void;
1330
1330
  onVideoPlayToggle(): void;
1331
+ onCreateTeamCards(payload: {
1332
+ cta_location: string;
1333
+ }): void;
1331
1334
  }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
1332
1335
  viewModel: {
1333
1336
  type: PropType<BrandPageMakerViewModel>;
@@ -312,5 +312,8 @@ export default defineComponent({
312
312
  onVideoPlayToggle() {
313
313
  this.videoStore.toggleShouldPlayVideo();
314
314
  },
315
+ onCreateTeamCards(payload) {
316
+ this.$emit('create-team-cards', payload);
317
+ },
315
318
  },
316
319
  });
@@ -38,6 +38,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
38
38
  saveBrandPage(): void;
39
39
  saveAndPublishBrandPage(): void;
40
40
  handleBackClick(): void;
41
+ onCreateTeamCards(payload: {
42
+ cta_location: string;
43
+ }): void;
41
44
  }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
42
45
  isAdmin: {
43
46
  type: BooleanConstructor;
@@ -51,5 +51,8 @@ export default defineComponent({
51
51
  this.$emit(EVENTS.Back);
52
52
  }
53
53
  },
54
+ onCreateTeamCards(payload) {
55
+ this.$emit('create-team-cards', payload);
56
+ },
54
57
  },
55
58
  });
@@ -1,4 +1,5 @@
1
1
  import { type ComputedRef, type Ref } from 'vue';
2
+ import { type PlanItem } from '../../../clients/websocket-gateway-client';
2
3
  export interface BaseThreadMessage {
3
4
  id: string;
4
5
  role: 'user' | 'agent';
@@ -10,7 +11,11 @@ export interface BaseThreadMessage {
10
11
  export interface TextThreadMessage extends BaseThreadMessage {
11
12
  type: 'text';
12
13
  text: string;
14
+ initialMessage?: string;
15
+ planItems?: PlanItem[];
16
+ completedItemIds?: string[];
13
17
  }
18
+ export { type PlanItem };
14
19
  export interface ImageThreadMessage extends BaseThreadMessage {
15
20
  type: 'image';
16
21
  images: {
@@ -1,5 +1,6 @@
1
1
  import { ref, computed, watch, nextTick, } from 'vue';
2
2
  import { getInstance as getAiAssistantClient, AI_ASSISTANT_AGENT_TYPES, buildWebsiteTextElementMessage, } from '../../../clients/ai-assistant-client';
3
+ import {} from '../../../clients/websocket-gateway-client';
3
4
  import { getCurrentLocale } from '../../../composables/useTranslate';
4
5
  import { storeToRefs } from 'pinia';
5
6
  import { useSnapshotStore, useAiThreadStore } from '../../stores';
@@ -7,6 +8,7 @@ import { useBrandPageMakerStore } from '../../stores';
7
8
  import { useUiPageSettingsStore } from '../../../shared/page-settings/store';
8
9
  import { useAiMetadataBuilder } from '../ai-chat/useAiMetadataBuilder';
9
10
  import { Logger } from '../../../metadata-builder/logger';
11
+ export {};
10
12
  const MAX_TOOL_CALL_ITERATIONS = 5;
11
13
  const TEXT_DISPLAY_LIMIT = 150;
12
14
  const truncateText = (text) => {
@@ -186,10 +188,15 @@ export function useAiChat(options) {
186
188
  await submitCancelledToolCallsAsync();
187
189
  return { aiMessage: '' };
188
190
  }
189
- const nextResponse = await submitToolResults(toolResults);
191
+ // Only submit failed tool results — skip submission entirely if all succeeded
192
+ const failedResults = toolResults.filter((tr) => tr.success !== 'success');
193
+ if (failedResults.length === 0) {
194
+ break;
195
+ }
196
+ const nextResponse = await submitToolResults(failedResults);
190
197
  pendingToolCalls.value = []; // Cleared after successful submission
191
198
  aiLogger.log('handleToolResponseAsync submitToolResults', {
192
- toolResults,
199
+ toolResults: failedResults,
193
200
  nextResponse,
194
201
  });
195
202
  if (!nextResponse)
@@ -4,16 +4,17 @@ import { WebSocketGatewayClient, } from '../../../clients/websocket-gateway-clie
4
4
  import { minifyBrandPageMetadata } from '../../../utils/minify-brand-page-metadata';
5
5
  import { useSnapshotStore, useAiWebsiteBuilderThreadStore } from '../../stores';
6
6
  import { useBrandPageMakerStore } from '../../stores';
7
+ import { useBrandPageMakerUserStore } from '../../stores/user/user-store';
7
8
  import { useAiMetadataBuilder } from './useAiMetadataBuilder';
8
9
  import { Logger } from '../../../metadata-builder/logger';
9
10
  const BUILD_TIMEOUT_MS = 600000;
10
11
  const aiLogger = new Logger();
11
12
  let activeBuildWsClient = null;
12
- const MAX_TOOL_CALL_ITERATIONS = 5;
13
13
  export function useAiWebsiteBuilderChat() {
14
14
  const aiThreadStore = useAiWebsiteBuilderThreadStore();
15
15
  const snapshotStore = useSnapshotStore();
16
16
  const brandPageMakerStore = useBrandPageMakerStore();
17
+ const userStore = useBrandPageMakerUserStore();
17
18
  const aiMetadataBuilder = useAiMetadataBuilder(aiLogger);
18
19
  const hasStoredMessages = aiThreadStore.messages.length > 0;
19
20
  const threadItems = ref(aiThreadStore.messages.length > 0
@@ -77,10 +78,12 @@ export function useAiWebsiteBuilderChat() {
77
78
  let aiMessage = response.message || '';
78
79
  const modelToUpdate = brandPageMakerStore.brandPageData;
79
80
  const updateResult = await aiMetadataBuilder.applyAiToolCallsAsync(modelToUpdate, response.toolCalls || []);
80
- const toolResults = updateResult.results.map((x) => {
81
+ const toolResults = updateResult.results.map((x, i) => {
81
82
  return {
82
83
  toolId: x.toolId,
83
84
  success: x.errors && x.errors.length > 0 ? 'failed' : 'success',
85
+ name: (response.toolCalls || [])[i]?.function,
86
+ errorMessage: x.errors?.length ? x.errors.join('; ') : undefined,
84
87
  };
85
88
  });
86
89
  updateResult.parsedToolCalls.forEach((toolCall) => {
@@ -89,7 +92,6 @@ export function useAiWebsiteBuilderChat() {
89
92
  aiMessage = aiMessage ? `${aiMessage} ${args.message}` : args.message;
90
93
  }
91
94
  });
92
- console.log('updateResult.model', JSON.parse(JSON.stringify(updateResult.model)));
93
95
  await brandPageMakerStore.initialiseStoresByBrandPageModelAsync(updateResult.model);
94
96
  await nextTick();
95
97
  // Re-capture snapshot so subsequent messages reflect the updated page
@@ -106,13 +108,16 @@ export function useAiWebsiteBuilderChat() {
106
108
  try {
107
109
  const client = getAiAssistantClient();
108
110
  const message = buildMessage(userPrompt);
109
- wsClient.sendHeartbeat();
111
+ const userPlan = userStore.hasPremiumSubscription
112
+ ? 'premium'
113
+ : 'free';
110
114
  let buildResponse;
111
115
  if (!aiThreadStore.threadId) {
112
116
  buildResponse = await client.createWebsiteThreadBuildAsync({
113
117
  message,
114
118
  websiteSnapshot: snapshotStore.snapshotBase64 || undefined,
115
119
  agentType: AI_ASSISTANT_AGENT_TYPES.WEBSITE_BUILDER,
120
+ userPlan,
116
121
  connectionId,
117
122
  });
118
123
  }
@@ -121,6 +126,7 @@ export function useAiWebsiteBuilderChat() {
121
126
  message,
122
127
  websiteSnapshot: snapshotStore.snapshotBase64 || undefined,
123
128
  agentType: AI_ASSISTANT_AGENT_TYPES.WEBSITE_BUILDER,
129
+ userPlan,
124
130
  connectionId,
125
131
  });
126
132
  }
@@ -131,8 +137,18 @@ export function useAiWebsiteBuilderChat() {
131
137
  const langChainUrl = buildResponse.langChainUrl;
132
138
  wsClient.setBuildActive(true);
133
139
  wsClient.startResponseHeartbeat();
140
+ const withTypingMessage = (fn) => {
141
+ const typingId = currentTypingMessageId.value;
142
+ if (!typingId)
143
+ return;
144
+ const idx = threadItems.value.findIndex((m) => m.id === typingId);
145
+ if (idx !== -1)
146
+ fn(threadItems.value[idx]);
147
+ };
134
148
  return new Promise((resolve, reject) => {
135
149
  let settled = false;
150
+ let retryCount = 0;
151
+ let lastAiMessage = null;
136
152
  let handler = null;
137
153
  const finishBuild = () => {
138
154
  aiThreadStore.isBuildInProgress = false;
@@ -151,53 +167,132 @@ export function useAiWebsiteBuilderChat() {
151
167
  handler = (msg) => {
152
168
  if (settled)
153
169
  return;
154
- if (msg.buildId !== aiThreadStore.buildId)
155
- return;
156
- if (isStopped.value) {
157
- settled = true;
158
- clearTimeout(timeout);
159
- finishBuild();
160
- resolve({ text: null });
161
- return;
162
- }
163
- if (msg.type === 'build_complete') {
164
- settled = true;
165
- clearTimeout(timeout);
166
- const toolCalls = (msg.toolCalls || []);
167
- const aiResponse = {
168
- threadId: aiThreadStore.threadId || '',
169
- toolCalls,
170
- message: msg.message || null,
171
- type: 'tool_calls',
172
- totalPaidToolCalls: 0,
173
- timestamp: Date.now(),
174
- };
175
- (async () => {
176
- try {
177
- if (toolCalls.length > 0) {
178
- await applyToolCallsAsync(aiResponse);
170
+ try {
171
+ if (msg.buildId !== aiThreadStore.buildId)
172
+ return;
173
+ if (isStopped.value) {
174
+ settled = true;
175
+ clearTimeout(timeout);
176
+ finishBuild();
177
+ resolve({ text: null });
178
+ return;
179
+ }
180
+ if (msg.type === 'chat_started' && msg.message) {
181
+ withTypingMessage((m) => {
182
+ m.initialMessage = msg.message;
183
+ });
184
+ return;
185
+ }
186
+ if (msg.type === 'plan_announced' && msg.items) {
187
+ withTypingMessage((m) => {
188
+ if (!m.planItems)
189
+ m.planItems = msg.items;
190
+ });
191
+ return;
192
+ }
193
+ if (msg.type === 'item_complete' && msg.itemId) {
194
+ const itemId = msg.itemId;
195
+ withTypingMessage((m) => {
196
+ if (!m.completedItemIds?.includes(itemId)) {
197
+ m.completedItemIds = [
198
+ ...(m.completedItemIds ?? []),
199
+ itemId,
200
+ ];
201
+ }
202
+ });
203
+ return;
204
+ }
205
+ if (msg.type === 'server_response') {
206
+ const toolCalls = (msg.toolCalls ||
207
+ []);
208
+ const aiResponse = {
209
+ threadId: aiThreadStore.threadId || '',
210
+ toolCalls,
211
+ message: msg.message || null,
212
+ type: 'tool_calls',
213
+ totalPaidToolCalls: 0,
214
+ timestamp: Date.now(),
215
+ };
216
+ (async () => {
217
+ try {
218
+ // No tool calls = build cycle complete (success, max retries, or no retryable sections)
219
+ if (toolCalls.length === 0) {
220
+ settled = true;
221
+ clearTimeout(timeout);
222
+ finishBuild();
223
+ await snapshotStore.refreshSnapshotAsync();
224
+ resolve({
225
+ text: aiResponse.message ||
226
+ lastAiMessage ||
227
+ 'Your website has been updated.',
228
+ langChainUrl,
229
+ });
230
+ return;
231
+ }
232
+ // Tool calls present — apply locally and submit results back
233
+ const { toolResults, aiMessage } = await applyToolCallsAsync(aiResponse);
234
+ lastAiMessage = aiMessage;
235
+ // Only submit failed tool results — the server retries only failed sections.
236
+ const failedResults = toolResults.filter((tr) => tr.success !== 'success');
237
+ if (failedResults.length === 0) {
238
+ settled = true;
239
+ clearTimeout(timeout);
240
+ finishBuild();
241
+ resolve({
242
+ text: aiMessage || 'Your website has been updated.',
243
+ langChainUrl,
244
+ });
245
+ return;
246
+ }
247
+ aiLogger.log('tool submission for failed results', {
248
+ failedResults,
249
+ retryCount,
250
+ });
251
+ const submitResult = await client.submitToolResultsBuildAsync(aiThreadStore.threadId, {
252
+ toolCalls: failedResults,
253
+ agentType: AI_ASSISTANT_AGENT_TYPES.WEBSITE_BUILDER,
254
+ connectionId,
255
+ retryCount,
256
+ userPlan,
257
+ });
258
+ // Update buildId so the handler matches subsequent WS messages
259
+ if (submitResult.buildId) {
260
+ aiThreadStore.buildId = submitResult.buildId;
261
+ }
262
+ // eslint-disable-next-line no-plusplus
263
+ retryCount++;
264
+ }
265
+ catch (err) {
266
+ aiLogger.log('server_response apply error', { err });
267
+ settled = true;
268
+ clearTimeout(timeout);
269
+ finishBuild();
270
+ resolve({ text: 'An error occurred applying changes.' });
179
271
  }
180
- finishBuild();
181
- await snapshotStore.refreshSnapshotAsync();
182
- resolve({
183
- text: aiResponse.message || 'Your website has been updated.',
184
- langChainUrl,
185
- });
186
- }
187
- catch (err) {
188
- aiLogger.log('build_complete apply error', { err });
189
- finishBuild();
190
- resolve({ text: 'An error occurred applying changes.' });
191
- }
192
- })();
272
+ })();
273
+ return;
274
+ }
275
+ if (msg.type === 'server_error' || msg.type === 'build_error') {
276
+ settled = true;
277
+ clearTimeout(timeout);
278
+ finishBuild();
279
+ resolve({
280
+ text: msg.error || 'An error occurred during the build.',
281
+ });
282
+ return;
283
+ }
193
284
  }
194
- if (msg.type === 'build_error') {
195
- settled = true;
196
- clearTimeout(timeout);
197
- finishBuild();
198
- resolve({
199
- text: msg.error || 'An error occurred during the build.',
285
+ catch (err) {
286
+ aiLogger.log('Unexpected error in WS message handler', {
287
+ err,
288
+ type: msg.type,
200
289
  });
290
+ if (!settled) {
291
+ settled = true;
292
+ clearTimeout(timeout);
293
+ finishBuild();
294
+ resolve({ text: 'An error occurred during the build.' });
295
+ }
201
296
  }
202
297
  };
203
298
  wsClient.onMessage(handler);
@@ -287,7 +382,6 @@ export function useAiWebsiteBuilderChat() {
287
382
  // was destroyed (tab switch) and the writable computed setter is inert.
288
383
  aiThreadStore.isProcessing = false;
289
384
  }
290
- console.log('aiLogger', aiLogger);
291
385
  };
292
386
  const deleteMessage = (messageId) => {
293
387
  const index = threadItems.value.findIndex((msg) => msg.id === messageId);
@@ -331,6 +425,12 @@ export function useAiWebsiteBuilderChat() {
331
425
  isResponse: index >= 1,
332
426
  disableAnimation: index < initialMessageCount,
333
427
  langChainUrl: msg.langChainUrl,
428
+ ...(msg.type === 'text' &&
429
+ msg.isTyping && {
430
+ initialMessage: msg.initialMessage,
431
+ planItems: msg.planItems ?? [],
432
+ completedItemIds: msg.completedItemIds ?? [],
433
+ }),
334
434
  },
335
435
  }));
336
436
  });
@@ -79,6 +79,8 @@ export declare const UPGRADE_CTA_LOCATIONS: {
79
79
  GOOGLE_ADSENSE: string;
80
80
  QUICK_LINKS: string;
81
81
  SAVE_CONTACT_SETTINGS: string;
82
+ NAV_TOP: string;
83
+ NAV_BOTTOM: string;
82
84
  };
83
85
  export declare const GENERATE_AI_TEXT_CTA_LOCATIONS: {
84
86
  BANNER_DESCRIPTION: string;
@@ -60,6 +60,8 @@ export const UPGRADE_CTA_LOCATIONS = {
60
60
  GOOGLE_ADSENSE: 'google_adsense',
61
61
  QUICK_LINKS: 'quick_links',
62
62
  SAVE_CONTACT_SETTINGS: 'save_contact_settings',
63
+ NAV_TOP: 'nav_top',
64
+ NAV_BOTTOM: 'nav_bottom',
63
65
  };
64
66
  export const GENERATE_AI_TEXT_CTA_LOCATIONS = {
65
67
  BANNER_DESCRIPTION: 'banner_description',