@designcrowd/library.brand-page 6.1.11 → 6.1.13-ast-opacity

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 (104) hide show
  1. package/lib/src/{CreatedOnBrandCrowd-de-de-DToCz9Tp.js → CreatedOnBrandCrowd-de-de-B8j4uryC.js} +1 -1
  2. package/lib/src/{CreatedOnBrandCrowd-en-us-CrjiEGmM.js → CreatedOnBrandCrowd-en-us-BsI2J4TR.js} +1 -1
  3. package/lib/src/{CreatedOnBrandCrowd-es-es-DgVVM-Df.js → CreatedOnBrandCrowd-es-es-CYxTGgvK.js} +1 -1
  4. package/lib/src/{CreatedOnBrandCrowd-fr-fr-C_oKH8iu.js → CreatedOnBrandCrowd-fr-ca-V6_P_kVa.js} +1 -1
  5. package/lib/src/{CreatedOnBrandCrowd-fr-ca-C_oKH8iu.js → CreatedOnBrandCrowd-fr-fr-V6_P_kVa.js} +1 -1
  6. package/lib/src/{CreatedOnBrandCrowd-pt-pt-DRvHblvI.js → CreatedOnBrandCrowd-pt-br-DSbvq-jt.js} +1 -1
  7. package/lib/src/{CreatedOnBrandCrowd-pt-br-DRvHblvI.js → CreatedOnBrandCrowd-pt-pt-DSbvq-jt.js} +1 -1
  8. package/lib/src/{CreatedOnDcom-de-de-uCIRFQYA.js → CreatedOnDcom-de-de-6LMPXiBe.js} +1 -1
  9. package/lib/src/{CreatedOnDcom-en-us-DfbhIoId.js → CreatedOnDcom-en-us-LJWKUu3G.js} +1 -1
  10. package/lib/src/{CreatedOnDcom-es-es-CipmOU1-.js → CreatedOnDcom-es-es-BcJkodUE.js} +1 -1
  11. package/lib/src/{CreatedOnDcom-fr-ca-B5Cq9iJK.js → CreatedOnDcom-fr-ca-DDBXmhmV.js} +1 -1
  12. package/lib/src/{CreatedOnDcom-fr-fr-DIvycPcx.js → CreatedOnDcom-fr-fr-D0jyOtYU.js} +1 -1
  13. package/lib/src/{CreatedOnDcom-pt-br-BQ3EajZC.js → CreatedOnDcom-pt-br-DzwvL7Me.js} +1 -1
  14. package/lib/src/{CreatedOnDcom-pt-pt-DchaL_tP.js → CreatedOnDcom-pt-pt-B-6e1n0b.js} +1 -1
  15. package/lib/src/brand-page/models/brand-page-context.model.d.ts +0 -1
  16. package/lib/src/brand-page/models/brand-page-context.model.js +0 -5
  17. package/lib/src/brand-page/models/index.d.ts +4 -1
  18. package/lib/src/brand-page/models/index.js +4 -1
  19. package/lib/src/brand-page/utils/view-model.util.js +18 -2
  20. package/lib/src/brand-page/view-models.d.ts +2 -1
  21. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.d.ts +0 -21
  22. package/lib/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-examples.js +1 -0
  23. package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.d.ts +0 -21
  24. package/lib/src/brand-page-maker/components/preview/Preview.mixin.d.ts +0 -7
  25. package/lib/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.mixin.d.ts +0 -21
  26. package/lib/src/brand-page-maker/components/seo-settings/SeoPageSettings.mixin.d.ts +0 -21
  27. package/lib/src/brand-page-maker/components/seo-settings/UrlSettings.mixin.d.ts +0 -21
  28. package/lib/src/brand-page-maker/components/seo-settings/UseExistingDomainModal.mixin.d.ts +0 -21
  29. package/lib/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.d.ts +0 -21
  30. package/lib/src/brand-page-maker/components/upgrade-to-premium-button/UpgradeToPremiumButton.mixin.d.ts +0 -21
  31. package/lib/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.js +8 -0
  32. package/lib/src/brand-page-maker/stores/ai-checkpoint/ai-checkpoint-store.d.ts +18 -0
  33. package/lib/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.d.ts +0 -21
  34. package/lib/src/brand-page-maker/stores/user/user-store.js +1 -0
  35. package/lib/src/{bundled-translations-BiFAlQdC.js → bundled-translations-B2q5GWTQ.js} +1 -1
  36. package/lib/src/{bundled-translations.de-DE-DuRWnOP-.js → bundled-translations.de-DE-FhH2H_rd.js} +5 -5
  37. package/lib/src/{bundled-translations.es-ES-CokHdZtW.js → bundled-translations.es-ES-_ZExxMi7.js} +5 -5
  38. package/lib/src/{bundled-translations.fr-CA-CJcMmubA.js → bundled-translations.fr-CA-Tg-ODIiC.js} +1 -1
  39. package/lib/src/{bundled-translations.fr-FR-DYPup8fJ.js → bundled-translations.fr-FR-C0sU51Mz.js} +1 -1
  40. package/lib/src/{bundled-translations.pt-BR-GSsp1kuV.js → bundled-translations.pt-BR-MYFIhA4u.js} +9 -9
  41. package/lib/src/{bundled-translations.pt-PT-DbkY8UQ3.js → bundled-translations.pt-PT-DeUBSzCB.js} +9 -9
  42. package/lib/src/bundles/bundled-translations.de-DE.json +1 -0
  43. package/lib/src/bundles/bundled-translations.es-ES.json +1 -0
  44. package/lib/src/bundles/bundled-translations.fr-CA.json +1 -0
  45. package/lib/src/bundles/bundled-translations.fr-FR.json +1 -0
  46. package/lib/src/bundles/bundled-translations.json +1 -0
  47. package/lib/src/bundles/bundled-translations.pt-BR.json +1 -0
  48. package/lib/src/bundles/bundled-translations.pt-PT.json +1 -0
  49. package/lib/src/clients/ai-assistant-client.d.ts +3 -0
  50. package/lib/src/constants/ui.d.ts +1 -0
  51. package/lib/src/css/library.brand-page-brandCrowd.min.css +1 -1
  52. package/lib/src/css/library.brand-page-brandPage.min.css +1 -1
  53. package/lib/src/css/library.brand-page-designCom.min.css +1 -1
  54. package/lib/src/css/library.brand-page-preview.min.css +1 -1
  55. package/lib/src/index.mjs +1 -1
  56. package/lib/src/{lib-zpGnKGKw.js → lib-Dpv7KURd.js} +13564 -13512
  57. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.stories.js +1 -0
  58. package/lib/src/shared/content-settings/components/payment-config-field/PaymentConfigField.mixin.d.ts +0 -21
  59. package/lib/src/shared/logo-settings/components/LogoSettings.mixin.d.ts +0 -21
  60. package/lib/src/shared/page-settings/components/page-settings/PageSettings.mixin.d.ts +3 -21
  61. package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.d.ts +5 -21
  62. package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.js +25 -0
  63. package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.d.ts +0 -28
  64. package/lib/src/shared/side-bar/components/SideBar.mixin.d.ts +1 -22
  65. package/lib/src/shared/side-bar/components/SideBar.mixin.js +2 -3
  66. package/lib/src/shared/style-settings/components/StyleSettings.mixin.d.ts +0 -21
  67. package/lib/src/utils/minify-brand-page-metadata.d.ts +1 -0
  68. package/lib/src/utils/minify-brand-page-metadata.js +13 -3
  69. package/package.json +1 -1
  70. package/src/brand-page/models/brand-page-context.model.ts +0 -11
  71. package/src/brand-page/models/index.ts +9 -2
  72. package/src/brand-page/utils/__snapshots__/migration.util.test.ts.snap +18 -6
  73. package/src/brand-page/utils/__snapshots__/migration2.util.test.ts.snap +6 -2
  74. package/src/brand-page/utils/__snapshots__/model.util.test.ts.snap +12 -4
  75. package/src/brand-page/utils/view-model.util.test.ts +145 -1
  76. package/src/brand-page/utils/view-model.util.ts +27 -2
  77. package/src/brand-page/view-models.ts +2 -0
  78. package/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-examples.ts +1 -0
  79. package/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.ts +9 -0
  80. package/src/brand-page-maker/stores/user/user-store.ts +1 -0
  81. package/src/bundles/bundled-translations.de-DE.json +1 -0
  82. package/src/bundles/bundled-translations.es-ES.json +1 -0
  83. package/src/bundles/bundled-translations.fr-CA.json +1 -0
  84. package/src/bundles/bundled-translations.fr-FR.json +1 -0
  85. package/src/bundles/bundled-translations.json +1 -0
  86. package/src/bundles/bundled-translations.pt-BR.json +1 -0
  87. package/src/bundles/bundled-translations.pt-PT.json +1 -0
  88. package/src/clients/ai-assistant-client.ts +6 -0
  89. package/src/constants/ui.ts +1 -0
  90. package/src/shared/content-settings/components/content-settings/ContentSettings.stories.ts +1 -0
  91. package/src/shared/page-settings/components/header-settings-panel/HeaderSettingsPanel.test.ts +111 -0
  92. package/src/shared/page-settings/components/header-settings-panel/HeaderSettingsPanel.vue +18 -0
  93. package/src/shared/page-settings/components/page-settings/i18n/page-settings.de-DE.json +1 -0
  94. package/src/shared/page-settings/components/page-settings/i18n/page-settings.es-ES.json +1 -0
  95. package/src/shared/page-settings/components/page-settings/i18n/page-settings.fr-CA.json +1 -0
  96. package/src/shared/page-settings/components/page-settings/i18n/page-settings.fr-FR.json +1 -0
  97. package/src/shared/page-settings/components/page-settings/i18n/page-settings.json +1 -0
  98. package/src/shared/page-settings/components/page-settings/i18n/page-settings.pt-BR.json +1 -0
  99. package/src/shared/page-settings/components/page-settings/i18n/page-settings.pt-PT.json +1 -0
  100. package/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.ts +33 -0
  101. package/src/shared/side-bar/components/SideBar.mixin.ts +3 -5
  102. package/src/shared/side-bar/components/SideBar.tabs.test.ts +1 -1
  103. package/src/utils/minify-brand-page-metadata.test.ts +70 -1
  104. package/src/utils/minify-brand-page-metadata.ts +19 -4
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-zpGnKGKw.js";
2
+ import { _ as t } from "./lib-Dpv7KURd.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-zpGnKGKw.js";
2
+ import { _ as t } from "./lib-Dpv7KURd.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-zpGnKGKw.js";
2
+ import { _ as t } from "./lib-Dpv7KURd.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-zpGnKGKw.js";
2
+ import { _ as t } from "./lib-Dpv7KURd.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-zpGnKGKw.js";
2
+ import { _ as t } from "./lib-Dpv7KURd.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-zpGnKGKw.js";
2
+ import { _ as t } from "./lib-Dpv7KURd.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-zpGnKGKw.js";
2
+ import { _ as t } from "./lib-Dpv7KURd.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-zpGnKGKw.js";
2
+ import { _ as e } from "./lib-Dpv7KURd.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-zpGnKGKw.js";
2
+ import { _ as e } from "./lib-Dpv7KURd.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-zpGnKGKw.js";
2
+ import { _ as e } from "./lib-Dpv7KURd.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-zpGnKGKw.js";
2
+ import { _ as e } from "./lib-Dpv7KURd.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-zpGnKGKw.js";
2
+ import { _ as e } from "./lib-Dpv7KURd.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-zpGnKGKw.js";
2
+ import { _ as M } from "./lib-Dpv7KURd.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-zpGnKGKw.js";
2
+ import { _ as M } from "./lib-Dpv7KURd.js";
3
3
  const Z = {}, e = {
4
4
  width: "232",
5
5
  height: "36",
@@ -36,7 +36,6 @@ export interface AbTestResult {
36
36
  }
37
37
  export interface AbTest {
38
38
  bp_3926_freemium_watermark?: AbTestResult;
39
- bp_5245_ai_website_assistant?: AbTestResult;
40
39
  bp_5873_live_preview_prepurchase?: AbTestResult;
41
40
  bp_5873_live_preview_postpurchase?: AbTestResult;
42
41
  }
@@ -24,7 +24,6 @@ export const AB_TEST_FLAG = {
24
24
  };
25
25
  const AB_TEST_KEYS = {
26
26
  BP_3926_FREEMIUM_WATERMARK: 'bc-bp-3926-freemium-cta-in-website-editor',
27
- BP_5245_AI_WEBSITE_ASSISTANT: 'bc-bp-5245-ai-website-assistant-postpurchase',
28
27
  // Two separate live-preview experiments — bc-net sends only the one for the
29
28
  // current purchase state, and a user's value on each side is independent
30
29
  // (BP-5873). Keys must match `CampaignNames.LivePreview*Test` in bc-net.
@@ -51,10 +50,6 @@ export const getAbTestResults = (abtestKeyValues) => {
51
50
  if (abtestKeyValues[AB_TEST_KEYS.BP_3926_FREEMIUM_WATERMARK]) {
52
51
  abTests.bp_3926_freemium_watermark = getValueType(AB_TEST_KEYS.BP_3926_FREEMIUM_WATERMARK, abtestKeyValues[AB_TEST_KEYS.BP_3926_FREEMIUM_WATERMARK]);
53
52
  }
54
- // AB Test for BP-5245 - AI Website Assistant
55
- if (abtestKeyValues[AB_TEST_KEYS.BP_5245_AI_WEBSITE_ASSISTANT]) {
56
- abTests.bp_5245_ai_website_assistant = getValueType(AB_TEST_KEYS.BP_5245_AI_WEBSITE_ASSISTANT, abtestKeyValues[AB_TEST_KEYS.BP_5245_AI_WEBSITE_ASSISTANT]);
57
- }
58
53
  // AB Test for BP-5873 - Live preview (pre- and post-purchase run separately)
59
54
  if (abtestKeyValues[AB_TEST_KEYS.BP_5873_LIVE_PREVIEW_PREPURCHASE]) {
60
55
  abTests.bp_5873_live_preview_prepurchase = getValueType(AB_TEST_KEYS.BP_5873_LIVE_PREVIEW_PREPURCHASE, abtestKeyValues[AB_TEST_KEYS.BP_5873_LIVE_PREVIEW_PREPURCHASE]);
@@ -34,6 +34,9 @@ export declare class BackgroundShape {
34
34
  constructor(option?: Partial<BackgroundShape>);
35
35
  }
36
36
  export type BackgroundStyle = Partial<Omit<BrandPageCssStyle, 'backgroundColor'>>;
37
+ export interface BackgroundColorStyle extends BrandPageCssStyle {
38
+ backgroundOpacity?: number;
39
+ }
37
40
  /**
38
41
  * The complete default for a page's background media overlay. Seeded into
39
42
  * metadata (constructor for new models, migration-20.5 for persisted partials) so
@@ -519,7 +522,7 @@ export declare abstract class AbstractPageHeaderStyles {
519
522
  logoImage: LogoImageModel;
520
523
  logoTemplateImage: LogoTemplateImageModel | undefined;
521
524
  logoImageBase64Url?: string;
522
- backgroundStyle: BrandPageCssStyle;
525
+ backgroundStyle: BackgroundColorStyle;
523
526
  style: BrandPageCssStyle;
524
527
  viewport: ViewportsType;
525
528
  protected constructor(options?: AbstractPageHeaderStylesType);
@@ -253,7 +253,10 @@ export class AbstractPageHeaderStyles {
253
253
  this.logoDraftToken = options.logoDraftToken || '';
254
254
  this.logoVariation = options.logoVariation || 0;
255
255
  this.style = options.style || {};
256
- this.backgroundStyle = options.backgroundStyle || {};
256
+ this.backgroundStyle = {
257
+ ...(options.backgroundStyle || {}),
258
+ backgroundOpacity: options.backgroundStyle?.backgroundOpacity ?? 100,
259
+ };
257
260
  }
258
261
  }
259
262
  export class PageHeaderDesktop extends AbstractPageHeaderStyles {
@@ -2,7 +2,7 @@ import { reactive } from 'vue';
2
2
  import { assertUnreachable } from '../../helpers/ts.helper';
3
3
  import { ButtonStyles, VIEWPORTS } from '../models';
4
4
  import { NavigationMobile, NavigationDesktop, BRAND_PAGE_TYPES, BUTTON_LINK_TYPE, NavigationMenuStyles, } from '../models';
5
- import { isTransparentColour, mutedTextForBackground, backgroundColorFromStyle, } from './color.util';
5
+ import { backgroundColorFromStyle, isTransparentColour, mutedTextForBackground, withColorOpacity, } from './color.util';
6
6
  import { resolveColorReference } from './color-palette.util';
7
7
  import { containerTextColorDefaults, containerSurfaceForContent, } from './container-text-color.util';
8
8
  import { CONTENT_TEXT_STYLE_PROPERTY_KEYS, FALLBACK_DEFAULT_LINK_COLOR, FONT_SIZE_BODY, LINE_HEIGHT_BODY, DEFAULT_LOGO_HEIGHT, DEFAULT_LOGO_WIDTH, ALIGN_LEFT_ALIGNED, ALIGN_RIGHT_ALIGNED, MAX_IMAGES_SECTION_ALIGNMENT_ITEMS_LENGTH, FONT_FAMILY_CONFIGS, isGoogleType, LINE_HEIGHT_HEADINGS, FONT_SIZE_HEADINGS, DEFAULT_TEXT_ALIGN, IMAGE_RESOLUTION_PRESETS, BIG_IMAGE, ALIGN_LEFT_BIG_IMAGE, ALIGN_CARD_CENTER, ALIGN_CARD_CENTER_IMAGE, ALIGN_CARD_LEFT_IMAGE, ALIGN_LEFT_FULL_IMAGE, ALIGN_RIGHT_FULL_IMAGE, } from '../constants';
@@ -737,7 +737,23 @@ export const mapToPageHeaderViewModel = (pageHeader, pageStyles, pages, useOldLo
737
737
  hamburgerMenuStyle,
738
738
  }),
739
739
  style: pageHeader.style,
740
- backgroundStyle: pageHeader.backgroundStyle,
740
+ backgroundStyle: getHeaderBackgroundStyleWithOpacity(pageHeader),
741
+ };
742
+ };
743
+ // Folds backgroundOpacity into backgroundColor's alpha so only the container's paint fades, not its children.
744
+ const getHeaderBackgroundStyleWithOpacity = (pageHeader) => {
745
+ // Real defaults: an un-constructed maker header, or metadata older than migration-11's backfill, can lack these entirely.
746
+ const { backgroundOpacity = 100, ...backgroundStyle } = pageHeader.backgroundStyle ?? {};
747
+ const { backgroundColor } = backgroundStyle;
748
+ if (backgroundOpacity >= 100 ||
749
+ !backgroundColor ||
750
+ isTransparentColour(backgroundColor)) {
751
+ return backgroundStyle;
752
+ }
753
+ // withColorOpacity, not setRgbAlpha: fades a var(--palette-n) reference too.
754
+ return {
755
+ ...backgroundStyle,
756
+ backgroundColor: withColorOpacity(backgroundColor, backgroundOpacity / 100),
741
757
  };
742
758
  };
743
759
  export const mapToPageFooterViewModel = (pageFooter, pageStyles, useOldLogoRenderSize = false) => {
@@ -132,9 +132,10 @@ export interface BookingSectionViewModel extends ContentViewModel, Omit<BookingS
132
132
  buttonViewModel: ButtonViewModel;
133
133
  isFullWidth: boolean;
134
134
  }
135
- export interface PageHeaderViewModel extends Omit<PageHeaderDesktop | PageHeaderMobile, 'logoImage' | 'logoImageStyle' | 'isLogoOptional' | 'viewport' | 'isLogoVisible' | 'logoTemplateImage' | 'logoImageHeight' | 'logoImageWidth'> {
135
+ export interface PageHeaderViewModel extends Omit<PageHeaderDesktop | PageHeaderMobile, 'logoImage' | 'logoImageStyle' | 'isLogoOptional' | 'viewport' | 'isLogoVisible' | 'logoTemplateImage' | 'logoImageHeight' | 'logoImageWidth' | 'backgroundStyle'> {
136
136
  logo: LogoViewModel;
137
137
  pages: PageViewModel[];
138
+ backgroundStyle: BrandPageCssStyle;
138
139
  }
139
140
  export interface PageFooterViewModel extends Omit<PageFooterDesktop | PageFooterMobile, 'logoImage' | 'logoImageStyle' | 'isLogoOptional' | 'viewport' | 'isLogoVisible' | 'logoTemplateImage' | 'logoImageHeight' | 'logoImageWidth'> {
140
141
  logo: LogoViewModel;
@@ -292,13 +292,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
292
292
  isVariation: boolean;
293
293
  isExcluded: boolean;
294
294
  } | undefined;
295
- bp_5245_ai_website_assistant?: {
296
- key: string;
297
- value: string;
298
- isControl: boolean;
299
- isVariation: boolean;
300
- isExcluded: boolean;
301
- } | undefined;
302
295
  bp_5873_live_preview_prepurchase?: {
303
296
  key: string;
304
297
  value: string;
@@ -388,13 +381,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
388
381
  isVariation: boolean;
389
382
  isExcluded: boolean;
390
383
  } | undefined;
391
- bp_5245_ai_website_assistant?: {
392
- key: string;
393
- value: string;
394
- isControl: boolean;
395
- isVariation: boolean;
396
- isExcluded: boolean;
397
- } | undefined;
398
384
  bp_5873_live_preview_prepurchase?: {
399
385
  key: string;
400
386
  value: string;
@@ -484,13 +470,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
484
470
  isVariation: boolean;
485
471
  isExcluded: boolean;
486
472
  } | undefined;
487
- bp_5245_ai_website_assistant?: {
488
- key: string;
489
- value: string;
490
- isControl: boolean;
491
- isVariation: boolean;
492
- isExcluded: boolean;
493
- } | undefined;
494
473
  bp_5873_live_preview_prepurchase?: {
495
474
  key: string;
496
475
  value: string;
@@ -54,6 +54,7 @@ export const userFeatures = {
54
54
  canUseGoogleAdsense: false,
55
55
  googleAdsenseEnabled: false,
56
56
  canUseUndoRedo: false,
57
+ aiAssistantEnabled: false,
57
58
  };
58
59
  export const BRAND_PAGE = {
59
60
  styles: {
@@ -706,13 +706,6 @@ declare const _default: import("vue").DefineComponent<{}, {
706
706
  isVariation: boolean;
707
707
  isExcluded: boolean;
708
708
  } | undefined;
709
- bp_5245_ai_website_assistant?: {
710
- key: string;
711
- value: string;
712
- isControl: boolean;
713
- isVariation: boolean;
714
- isExcluded: boolean;
715
- } | undefined;
716
709
  bp_5873_live_preview_prepurchase?: {
717
710
  key: string;
718
711
  value: string;
@@ -802,13 +795,6 @@ declare const _default: import("vue").DefineComponent<{}, {
802
795
  isVariation: boolean;
803
796
  isExcluded: boolean;
804
797
  } | undefined;
805
- bp_5245_ai_website_assistant?: {
806
- key: string;
807
- value: string;
808
- isControl: boolean;
809
- isVariation: boolean;
810
- isExcluded: boolean;
811
- } | undefined;
812
798
  bp_5873_live_preview_prepurchase?: {
813
799
  key: string;
814
800
  value: string;
@@ -898,13 +884,6 @@ declare const _default: import("vue").DefineComponent<{}, {
898
884
  isVariation: boolean;
899
885
  isExcluded: boolean;
900
886
  } | undefined;
901
- bp_5245_ai_website_assistant?: {
902
- key: string;
903
- value: string;
904
- isControl: boolean;
905
- isVariation: boolean;
906
- isExcluded: boolean;
907
- } | undefined;
908
887
  bp_5873_live_preview_prepurchase?: {
909
888
  key: string;
910
889
  value: string;
@@ -41,13 +41,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
41
41
  isVariation: boolean;
42
42
  isExcluded: boolean;
43
43
  } | undefined;
44
- bp_5245_ai_website_assistant?: {
45
- key: string;
46
- value: string;
47
- isControl: boolean;
48
- isVariation: boolean;
49
- isExcluded: boolean;
50
- } | undefined;
51
44
  bp_5873_live_preview_prepurchase?: {
52
45
  key: string;
53
46
  value: string;
@@ -78,13 +78,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
78
78
  isVariation: boolean;
79
79
  isExcluded: boolean;
80
80
  } | undefined;
81
- bp_5245_ai_website_assistant?: {
82
- key: string;
83
- value: string;
84
- isControl: boolean;
85
- isVariation: boolean;
86
- isExcluded: boolean;
87
- } | undefined;
88
81
  bp_5873_live_preview_prepurchase?: {
89
82
  key: string;
90
83
  value: string;
@@ -174,13 +167,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
174
167
  isVariation: boolean;
175
168
  isExcluded: boolean;
176
169
  } | undefined;
177
- bp_5245_ai_website_assistant?: {
178
- key: string;
179
- value: string;
180
- isControl: boolean;
181
- isVariation: boolean;
182
- isExcluded: boolean;
183
- } | undefined;
184
170
  bp_5873_live_preview_prepurchase?: {
185
171
  key: string;
186
172
  value: string;
@@ -270,13 +256,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
270
256
  isVariation: boolean;
271
257
  isExcluded: boolean;
272
258
  } | undefined;
273
- bp_5245_ai_website_assistant?: {
274
- key: string;
275
- value: string;
276
- isControl: boolean;
277
- isVariation: boolean;
278
- isExcluded: boolean;
279
- } | undefined;
280
259
  bp_5873_live_preview_prepurchase?: {
281
260
  key: string;
282
261
  value: string;
@@ -94,13 +94,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
94
94
  isVariation: boolean;
95
95
  isExcluded: boolean;
96
96
  } | undefined;
97
- bp_5245_ai_website_assistant?: {
98
- key: string;
99
- value: string;
100
- isControl: boolean;
101
- isVariation: boolean;
102
- isExcluded: boolean;
103
- } | undefined;
104
97
  bp_5873_live_preview_prepurchase?: {
105
98
  key: string;
106
99
  value: string;
@@ -190,13 +183,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
190
183
  isVariation: boolean;
191
184
  isExcluded: boolean;
192
185
  } | undefined;
193
- bp_5245_ai_website_assistant?: {
194
- key: string;
195
- value: string;
196
- isControl: boolean;
197
- isVariation: boolean;
198
- isExcluded: boolean;
199
- } | undefined;
200
186
  bp_5873_live_preview_prepurchase?: {
201
187
  key: string;
202
188
  value: string;
@@ -286,13 +272,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
286
272
  isVariation: boolean;
287
273
  isExcluded: boolean;
288
274
  } | undefined;
289
- bp_5245_ai_website_assistant?: {
290
- key: string;
291
- value: string;
292
- isControl: boolean;
293
- isVariation: boolean;
294
- isExcluded: boolean;
295
- } | undefined;
296
275
  bp_5873_live_preview_prepurchase?: {
297
276
  key: string;
298
277
  value: string;
@@ -99,13 +99,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
99
99
  isVariation: boolean;
100
100
  isExcluded: boolean;
101
101
  } | undefined;
102
- bp_5245_ai_website_assistant?: {
103
- key: string;
104
- value: string;
105
- isControl: boolean;
106
- isVariation: boolean;
107
- isExcluded: boolean;
108
- } | undefined;
109
102
  bp_5873_live_preview_prepurchase?: {
110
103
  key: string;
111
104
  value: string;
@@ -195,13 +188,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
195
188
  isVariation: boolean;
196
189
  isExcluded: boolean;
197
190
  } | undefined;
198
- bp_5245_ai_website_assistant?: {
199
- key: string;
200
- value: string;
201
- isControl: boolean;
202
- isVariation: boolean;
203
- isExcluded: boolean;
204
- } | undefined;
205
191
  bp_5873_live_preview_prepurchase?: {
206
192
  key: string;
207
193
  value: string;
@@ -291,13 +277,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
291
277
  isVariation: boolean;
292
278
  isExcluded: boolean;
293
279
  } | undefined;
294
- bp_5245_ai_website_assistant?: {
295
- key: string;
296
- value: string;
297
- isControl: boolean;
298
- isVariation: boolean;
299
- isExcluded: boolean;
300
- } | undefined;
301
280
  bp_5873_live_preview_prepurchase?: {
302
281
  key: string;
303
282
  value: string;
@@ -80,13 +80,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
80
80
  isVariation: boolean;
81
81
  isExcluded: boolean;
82
82
  } | undefined;
83
- bp_5245_ai_website_assistant?: {
84
- key: string;
85
- value: string;
86
- isControl: boolean;
87
- isVariation: boolean;
88
- isExcluded: boolean;
89
- } | undefined;
90
83
  bp_5873_live_preview_prepurchase?: {
91
84
  key: string;
92
85
  value: string;
@@ -176,13 +169,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
176
169
  isVariation: boolean;
177
170
  isExcluded: boolean;
178
171
  } | undefined;
179
- bp_5245_ai_website_assistant?: {
180
- key: string;
181
- value: string;
182
- isControl: boolean;
183
- isVariation: boolean;
184
- isExcluded: boolean;
185
- } | undefined;
186
172
  bp_5873_live_preview_prepurchase?: {
187
173
  key: string;
188
174
  value: string;
@@ -272,13 +258,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
272
258
  isVariation: boolean;
273
259
  isExcluded: boolean;
274
260
  } | undefined;
275
- bp_5245_ai_website_assistant?: {
276
- key: string;
277
- value: string;
278
- isControl: boolean;
279
- isVariation: boolean;
280
- isExcluded: boolean;
281
- } | undefined;
282
261
  bp_5873_live_preview_prepurchase?: {
283
262
  key: string;
284
263
  value: string;
@@ -148,13 +148,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
148
148
  isVariation: boolean;
149
149
  isExcluded: boolean;
150
150
  } | undefined;
151
- bp_5245_ai_website_assistant?: {
152
- key: string;
153
- value: string;
154
- isControl: boolean;
155
- isVariation: boolean;
156
- isExcluded: boolean;
157
- } | undefined;
158
151
  bp_5873_live_preview_prepurchase?: {
159
152
  key: string;
160
153
  value: string;
@@ -244,13 +237,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
244
237
  isVariation: boolean;
245
238
  isExcluded: boolean;
246
239
  } | undefined;
247
- bp_5245_ai_website_assistant?: {
248
- key: string;
249
- value: string;
250
- isControl: boolean;
251
- isVariation: boolean;
252
- isExcluded: boolean;
253
- } | undefined;
254
240
  bp_5873_live_preview_prepurchase?: {
255
241
  key: string;
256
242
  value: string;
@@ -340,13 +326,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
340
326
  isVariation: boolean;
341
327
  isExcluded: boolean;
342
328
  } | undefined;
343
- bp_5245_ai_website_assistant?: {
344
- key: string;
345
- value: string;
346
- isControl: boolean;
347
- isVariation: boolean;
348
- isExcluded: boolean;
349
- } | undefined;
350
329
  bp_5873_live_preview_prepurchase?: {
351
330
  key: string;
352
331
  value: string;
@@ -75,13 +75,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
75
75
  isVariation: boolean;
76
76
  isExcluded: boolean;
77
77
  } | undefined;
78
- bp_5245_ai_website_assistant?: {
79
- key: string;
80
- value: string;
81
- isControl: boolean;
82
- isVariation: boolean;
83
- isExcluded: boolean;
84
- } | undefined;
85
78
  bp_5873_live_preview_prepurchase?: {
86
79
  key: string;
87
80
  value: string;
@@ -171,13 +164,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
171
164
  isVariation: boolean;
172
165
  isExcluded: boolean;
173
166
  } | undefined;
174
- bp_5245_ai_website_assistant?: {
175
- key: string;
176
- value: string;
177
- isControl: boolean;
178
- isVariation: boolean;
179
- isExcluded: boolean;
180
- } | undefined;
181
167
  bp_5873_live_preview_prepurchase?: {
182
168
  key: string;
183
169
  value: string;
@@ -267,13 +253,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
267
253
  isVariation: boolean;
268
254
  isExcluded: boolean;
269
255
  } | undefined;
270
- bp_5245_ai_website_assistant?: {
271
- key: string;
272
- value: string;
273
- isControl: boolean;
274
- isVariation: boolean;
275
- isExcluded: boolean;
276
- } | undefined;
277
256
  bp_5873_live_preview_prepurchase?: {
278
257
  key: string;
279
258
  value: string;
@@ -1,4 +1,5 @@
1
1
  import { ref, computed, watch, nextTick } from 'vue';
2
+ import { getCurrentLocale } from '../../../composables/useTranslate';
2
3
  import { getInstance as getAiAssistantClient, AI_ASSISTANT_AGENT_TYPES, } from '../../../clients/ai-assistant-client';
3
4
  import { FabricRenderClient } from '../../../clients/fabric-render-client';
4
5
  import { parseLogoThemeToCssStyles } from '../../../brand-page/utils/style.util';
@@ -228,6 +229,10 @@ export function useAiWebsiteBuilderChat() {
228
229
  };
229
230
  return { message: userPrompt, websiteContext };
230
231
  };
232
+ // TCI-1349: dedicated top-level LLM-gateway locale attribution (cost tag only).
233
+ const buildAttributionFields = () => ({
234
+ locale: getCurrentLocale(),
235
+ });
231
236
  const applyToolCallsAsync = async (response, userMessageId, vacantSlots) => {
232
237
  let aiMessage = response.message || '';
233
238
  const modelToUpdate = brandPageMakerStore.brandPageData;
@@ -365,6 +370,7 @@ export function useAiWebsiteBuilderChat() {
365
370
  agentType: AI_ASSISTANT_AGENT_TYPES.WEBSITE_BUILDER,
366
371
  userPlan,
367
372
  connectionId,
373
+ ...buildAttributionFields(),
368
374
  });
369
375
  }
370
376
  else {
@@ -375,6 +381,7 @@ export function useAiWebsiteBuilderChat() {
375
381
  agentType: AI_ASSISTANT_AGENT_TYPES.WEBSITE_BUILDER,
376
382
  userPlan,
377
383
  connectionId,
384
+ ...buildAttributionFields(),
378
385
  });
379
386
  }
380
387
  aiThreadStore.threadId = buildResponse.threadId;
@@ -523,6 +530,7 @@ export function useAiWebsiteBuilderChat() {
523
530
  connectionId,
524
531
  retryCount,
525
532
  userPlan,
533
+ ...buildAttributionFields(),
526
534
  });
527
535
  if (failedResults.length === 0) {
528
536
  settle({