@designcrowd/library.brand-page 5.16.54 → 5.16.55

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 (43) hide show
  1. package/lib/src/{CreatedOnBrandCrowd-de-de-MT7ymeOj.js → CreatedOnBrandCrowd-de-de-CKdF-VPz.js} +1 -1
  2. package/lib/src/{CreatedOnBrandCrowd-en-us-C2GKnuEv.js → CreatedOnBrandCrowd-en-us-BKYnl-yb.js} +1 -1
  3. package/lib/src/{CreatedOnBrandCrowd-es-es-2takDYdw.js → CreatedOnBrandCrowd-es-es-C8imb_hy.js} +1 -1
  4. package/lib/src/{CreatedOnBrandCrowd-fr-fr-DFjtVwB7.js → CreatedOnBrandCrowd-fr-ca-boSG54Iv.js} +1 -1
  5. package/lib/src/{CreatedOnBrandCrowd-fr-ca-DFjtVwB7.js → CreatedOnBrandCrowd-fr-fr-boSG54Iv.js} +1 -1
  6. package/lib/src/{CreatedOnBrandCrowd-pt-pt-BgN5BFxF.js → CreatedOnBrandCrowd-pt-br-BDJJDXbB.js} +1 -1
  7. package/lib/src/{CreatedOnBrandCrowd-pt-br-BgN5BFxF.js → CreatedOnBrandCrowd-pt-pt-BDJJDXbB.js} +1 -1
  8. package/lib/src/{CreatedOnDcom-de-de-BzxanK33.js → CreatedOnDcom-de-de-mBzErUNE.js} +1 -1
  9. package/lib/src/{CreatedOnDcom-en-us-Vlybo-_L.js → CreatedOnDcom-en-us-DATpe8q3.js} +1 -1
  10. package/lib/src/{CreatedOnDcom-es-es-BRKauY9e.js → CreatedOnDcom-es-es-l7aq6D9Y.js} +1 -1
  11. package/lib/src/{CreatedOnDcom-fr-ca-BRSzGg7E.js → CreatedOnDcom-fr-ca-C3MoZ4Ks.js} +1 -1
  12. package/lib/src/{CreatedOnDcom-fr-fr-CQg_YrB1.js → CreatedOnDcom-fr-fr-CG_cHJxE.js} +1 -1
  13. package/lib/src/{CreatedOnDcom-pt-br-CXxzg52F.js → CreatedOnDcom-pt-br-CTSbFbwu.js} +1 -1
  14. package/lib/src/{CreatedOnDcom-pt-pt-Bv63jvQl.js → CreatedOnDcom-pt-pt-j7JeOpTM.js} +1 -1
  15. package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.d.ts +4 -0
  16. package/lib/src/brand-page-maker/components/seo-settings/UrlSettings.mixin.d.ts +2 -18
  17. package/lib/src/brand-page-maker/composables/useEventTracker.d.ts +7 -0
  18. package/lib/src/brand-page-maker/composables/useEventTracker.js +26 -8
  19. package/lib/src/brand-page-maker/stores/route/localised-route-store.d.ts +2 -18
  20. package/lib/src/brand-page-maker/stores/route/localised-route-store.js +34 -24
  21. package/lib/src/css/library.brand-page-brandCrowd.min.css +29 -29
  22. package/lib/src/css/library.brand-page-brandPage.min.css +29 -29
  23. package/lib/src/css/library.brand-page-designCom.min.css +29 -29
  24. package/lib/src/css/library.brand-page-preview.min.css +29 -29
  25. package/lib/src/index.d.ts +1 -0
  26. package/lib/src/index.mjs +1 -1
  27. package/lib/src/{lib-Ct6M2UhH.js → lib-BWXLHDqW.js} +4577 -4537
  28. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.d.ts +4 -0
  29. package/lib/src/shared/content-settings/components/content-settings/ReplaceImageSettingsForContent.mixin.d.ts +4 -0
  30. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.d.ts +4 -0
  31. package/lib/src/shared/logo-settings/components/EditLogoSettings.mixin.d.ts +4 -0
  32. package/lib/src/shared/page-settings/components/page-settings/PageSettings.mixin.d.ts +4 -0
  33. package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.d.ts +4 -0
  34. package/lib/src/shared/side-bar/components/SideBarTabButton.mixin.d.ts +4 -0
  35. package/lib/src/shared/style-settings/components/StyleSettings.mixin.d.ts +4 -0
  36. package/lib/src/shared/template-settings/components/TemplatesSettings.mixin.d.ts +4 -0
  37. package/package.json +1 -1
  38. package/src/brand-page/components/brand-page-footer/BrandPageFooter.vue +20 -5
  39. package/src/brand-page/components/save-contact/SaveContactWidget.vue +4 -8
  40. package/src/brand-page/components/save-contact/popup-card/PopupCard.vue +2 -8
  41. package/src/brand-page-maker/composables/useEventTracker.ts +48 -7
  42. package/src/brand-page-maker/stores/route/localised-route-store.ts +59 -45
  43. package/src/lib.ts +1 -0
@@ -756,11 +756,15 @@ declare const _default: import("vue").DefineComponent<{}, {
756
756
  toggleLogoBackground(): Promise<any>;
757
757
  }>;
758
758
  eventTracker: {
759
+ sendSaveContactEvent: () => void;
760
+ sendStartForFreeEvent: () => void;
761
+ sendFooterLinkClickEvent: (linkType: "watermark_logo" | "create_your_website") => void;
759
762
  sendGettyVideoAddEvent: () => void;
760
763
  sendGettyVideoReplaceEvent: () => void;
761
764
  sendGettyVideoRemoveEvent: () => void;
762
765
  sendExperimentStartedEvent: (abTestKey: string, abTestValue: string) => void;
763
766
  setGlobalEventProps: (props: Omit<import("../../../../brand-page-maker/composables/useEventTracker").BpGlobalEventProps, "template_category">) => void;
767
+ setCustomGlobalEventProps: (props: any) => void;
764
768
  setUpsellBridgeState: (props: import("../../../../brand-page-maker/composables/useEventTracker").BpUpsellEventProps) => void;
765
769
  setDomainUpsellBridgeState: (props: import("../../../../brand-page-maker/composables/useEventTracker").BpUpsellEventProps) => void;
766
770
  subscribe: (callbackFn: (event: import("../../../../brand-page-maker/composables/useEventTracker").BpEventTrackerEvent) => void) => void;
@@ -728,11 +728,15 @@ declare const _default: import("vue").DefineComponent<{}, {
728
728
  toggleShouldPlayVideo(): void;
729
729
  }>;
730
730
  bpEventTracker: {
731
+ sendSaveContactEvent: () => void;
732
+ sendStartForFreeEvent: () => void;
733
+ sendFooterLinkClickEvent: (linkType: "watermark_logo" | "create_your_website") => void;
731
734
  sendGettyVideoAddEvent: () => void;
732
735
  sendGettyVideoReplaceEvent: () => void;
733
736
  sendGettyVideoRemoveEvent: () => void;
734
737
  sendExperimentStartedEvent: (abTestKey: string, abTestValue: string) => void;
735
738
  setGlobalEventProps: (props: Omit<import("../../../../brand-page-maker/composables/useEventTracker").BpGlobalEventProps, "template_category">) => void;
739
+ setCustomGlobalEventProps: (props: any) => void;
736
740
  setUpsellBridgeState: (props: import("../../../../brand-page-maker/composables/useEventTracker").BpUpsellEventProps) => void;
737
741
  setDomainUpsellBridgeState: (props: import("../../../../brand-page-maker/composables/useEventTracker").BpUpsellEventProps) => void;
738
742
  subscribe: (callbackFn: (event: import("../../../../brand-page-maker/composables/useEventTracker").BpEventTrackerEvent) => void) => void;
@@ -473,11 +473,15 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
473
473
  }): void;
474
474
  }>;
475
475
  eventTracker: {
476
+ sendSaveContactEvent: () => void;
477
+ sendStartForFreeEvent: () => void;
478
+ sendFooterLinkClickEvent: (linkType: "watermark_logo" | "create_your_website") => void;
476
479
  sendGettyVideoAddEvent: () => void;
477
480
  sendGettyVideoReplaceEvent: () => void;
478
481
  sendGettyVideoRemoveEvent: () => void;
479
482
  sendExperimentStartedEvent: (abTestKey: string, abTestValue: string) => void;
480
483
  setGlobalEventProps: (props: Omit<import("../../../../brand-page-maker/composables/useEventTracker").BpGlobalEventProps, "template_category">) => void;
484
+ setCustomGlobalEventProps: (props: any) => void;
481
485
  setUpsellBridgeState: (props: import("../../../../brand-page-maker/composables/useEventTracker").BpUpsellEventProps) => void;
482
486
  setDomainUpsellBridgeState: (props: import("../../../../brand-page-maker/composables/useEventTracker").BpUpsellEventProps) => void;
483
487
  subscribe: (callbackFn: (event: import("../../../../brand-page-maker/composables/useEventTracker").BpEventTrackerEvent) => void) => void;
@@ -242,11 +242,15 @@ declare const _default: import("vue").DefineComponent<{}, {
242
242
  setupLogoChangeWatcher(): void;
243
243
  }>;
244
244
  eventTracker: {
245
+ sendSaveContactEvent: () => void;
246
+ sendStartForFreeEvent: () => void;
247
+ sendFooterLinkClickEvent: (linkType: "watermark_logo" | "create_your_website") => void;
245
248
  sendGettyVideoAddEvent: () => void;
246
249
  sendGettyVideoReplaceEvent: () => void;
247
250
  sendGettyVideoRemoveEvent: () => void;
248
251
  sendExperimentStartedEvent: (abTestKey: string, abTestValue: string) => void;
249
252
  setGlobalEventProps: (props: Omit<import("../../../brand-page-maker/composables/useEventTracker").BpGlobalEventProps, "template_category">) => void;
253
+ setCustomGlobalEventProps: (props: any) => void;
250
254
  setUpsellBridgeState: (props: import("../../../brand-page-maker/composables/useEventTracker").BpUpsellEventProps) => void;
251
255
  setDomainUpsellBridgeState: (props: import("../../../brand-page-maker/composables/useEventTracker").BpUpsellEventProps) => void;
252
256
  subscribe: (callbackFn: (event: import("../../../brand-page-maker/composables/useEventTracker").BpEventTrackerEvent) => void) => void;
@@ -4712,11 +4712,15 @@ declare const _default: import("vue").DefineComponent<{}, {
4712
4712
  onDraggingStart: () => void;
4713
4713
  onDraggingEnd: (ev: any) => void;
4714
4714
  eventTracker: {
4715
+ sendSaveContactEvent: () => void;
4716
+ sendStartForFreeEvent: () => void;
4717
+ sendFooterLinkClickEvent: (linkType: "watermark_logo" | "create_your_website") => void;
4715
4718
  sendGettyVideoAddEvent: () => void;
4716
4719
  sendGettyVideoReplaceEvent: () => void;
4717
4720
  sendGettyVideoRemoveEvent: () => void;
4718
4721
  sendExperimentStartedEvent: (abTestKey: string, abTestValue: string) => void;
4719
4722
  setGlobalEventProps: (props: Omit<import("../../../../brand-page-maker/composables/useEventTracker").BpGlobalEventProps, "template_category">) => void;
4723
+ setCustomGlobalEventProps: (props: any) => void;
4720
4724
  setUpsellBridgeState: (props: import("../../../../brand-page-maker/composables/useEventTracker").BpUpsellEventProps) => void;
4721
4725
  setDomainUpsellBridgeState: (props: import("../../../../brand-page-maker/composables/useEventTracker").BpUpsellEventProps) => void;
4722
4726
  subscribe: (callbackFn: (event: import("../../../../brand-page-maker/composables/useEventTracker").BpEventTrackerEvent) => void) => void;
@@ -426,11 +426,15 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
426
426
  }): Promise<void>;
427
427
  }>;
428
428
  eventTracker: {
429
+ sendSaveContactEvent: () => void;
430
+ sendStartForFreeEvent: () => void;
431
+ sendFooterLinkClickEvent: (linkType: "watermark_logo" | "create_your_website") => void;
429
432
  sendGettyVideoAddEvent: () => void;
430
433
  sendGettyVideoReplaceEvent: () => void;
431
434
  sendGettyVideoRemoveEvent: () => void;
432
435
  sendExperimentStartedEvent: (abTestKey: string, abTestValue: string) => void;
433
436
  setGlobalEventProps: (props: Omit<import("../../brand-page-maker/composables/useEventTracker").BpGlobalEventProps, "template_category">) => void;
437
+ setCustomGlobalEventProps: (props: any) => void;
434
438
  setUpsellBridgeState: (props: import("../../brand-page-maker/composables/useEventTracker").BpUpsellEventProps) => void;
435
439
  setDomainUpsellBridgeState: (props: import("../../brand-page-maker/composables/useEventTracker").BpUpsellEventProps) => void;
436
440
  subscribe: (callbackFn: (event: import("../../brand-page-maker/composables/useEventTracker").BpEventTrackerEvent) => void) => void;
@@ -16,11 +16,15 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
16
16
  }>;
17
17
  isDesignCom: import("vue").ComputedRef<boolean>;
18
18
  eventTracker: {
19
+ sendSaveContactEvent: () => void;
20
+ sendStartForFreeEvent: () => void;
21
+ sendFooterLinkClickEvent: (linkType: "watermark_logo" | "create_your_website") => void;
19
22
  sendGettyVideoAddEvent: () => void;
20
23
  sendGettyVideoReplaceEvent: () => void;
21
24
  sendGettyVideoRemoveEvent: () => void;
22
25
  sendExperimentStartedEvent: (abTestKey: string, abTestValue: string) => void;
23
26
  setGlobalEventProps: (props: Omit<import("../../../brand-page-maker/composables/useEventTracker").BpGlobalEventProps, "template_category">) => void;
27
+ setCustomGlobalEventProps: (props: any) => void;
24
28
  setUpsellBridgeState: (props: import("../../../brand-page-maker/composables/useEventTracker").BpUpsellEventProps) => void;
25
29
  setDomainUpsellBridgeState: (props: import("../../../brand-page-maker/composables/useEventTracker").BpUpsellEventProps) => void;
26
30
  subscribe: (callbackFn: (event: import("../../../brand-page-maker/composables/useEventTracker").BpEventTrackerEvent) => void) => void;
@@ -871,11 +871,15 @@ declare const _default: import("vue").DefineComponent<{}, {
871
871
  removeBackgroundVideo(): void;
872
872
  }>;
873
873
  eventTracker: {
874
+ sendSaveContactEvent: () => void;
875
+ sendStartForFreeEvent: () => void;
876
+ sendFooterLinkClickEvent: (linkType: "watermark_logo" | "create_your_website") => void;
874
877
  sendGettyVideoAddEvent: () => void;
875
878
  sendGettyVideoReplaceEvent: () => void;
876
879
  sendGettyVideoRemoveEvent: () => void;
877
880
  sendExperimentStartedEvent: (abTestKey: string, abTestValue: string) => void;
878
881
  setGlobalEventProps: (props: Omit<import("../../../brand-page-maker/composables/useEventTracker").BpGlobalEventProps, "template_category">) => void;
882
+ setCustomGlobalEventProps: (props: any) => void;
879
883
  setUpsellBridgeState: (props: import("../../../brand-page-maker/composables/useEventTracker").BpUpsellEventProps) => void;
880
884
  setDomainUpsellBridgeState: (props: import("../../../brand-page-maker/composables/useEventTracker").BpUpsellEventProps) => void;
881
885
  subscribe: (callbackFn: (event: import("../../../brand-page-maker/composables/useEventTracker").BpEventTrackerEvent) => void) => void;
@@ -562,11 +562,15 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
562
562
  }>;
563
563
  isDesignCom: import("vue").ComputedRef<boolean>;
564
564
  eventTracker: {
565
+ sendSaveContactEvent: () => void;
566
+ sendStartForFreeEvent: () => void;
567
+ sendFooterLinkClickEvent: (linkType: "watermark_logo" | "create_your_website") => void;
565
568
  sendGettyVideoAddEvent: () => void;
566
569
  sendGettyVideoReplaceEvent: () => void;
567
570
  sendGettyVideoRemoveEvent: () => void;
568
571
  sendExperimentStartedEvent: (abTestKey: string, abTestValue: string) => void;
569
572
  setGlobalEventProps: (props: Omit<import("../../../brand-page-maker/composables/useEventTracker").BpGlobalEventProps, "template_category">) => void;
573
+ setCustomGlobalEventProps: (props: any) => void;
570
574
  setUpsellBridgeState: (props: import("../../../brand-page-maker/composables/useEventTracker").BpUpsellEventProps) => void;
571
575
  setDomainUpsellBridgeState: (props: import("../../../brand-page-maker/composables/useEventTracker").BpUpsellEventProps) => void;
572
576
  subscribe: (callbackFn: (event: import("../../../brand-page-maker/composables/useEventTracker").BpEventTrackerEvent) => void) => void;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@designcrowd/library.brand-page",
3
3
  "description": "A collection of Maker/Designer applications",
4
- "version": "5.16.54",
4
+ "version": "5.16.55",
5
5
  "author": "Design.com Eng",
6
6
  "license": "UNLICENSED",
7
7
  "type": "module",
@@ -6,13 +6,13 @@
6
6
  <a
7
7
  :href="url"
8
8
  class="brand-page__footer-link"
9
- @click="(event) => onBrandCrowdLogoClick(event)"
9
+ @click="(event) => onFooterLinkClick(event, 'watermark_logo')"
10
10
  >
11
11
  <component :is="watermarkComponent" />
12
12
  </a>
13
13
  <a
14
14
  v-if="!context.isPreview || shouldShowPreviewWatermarkAbTest"
15
- :href="!context.isPreview ? url : undefined"
15
+ :href="!context.isPreview ? urlCreateYourWebsite : undefined"
16
16
  >
17
17
  <button
18
18
  class="tw-cursor-pointer tw-py-2 tw-px-3 tw-flex tw-items-center tw-text-white tw-rounded tw-text-sm"
@@ -20,7 +20,7 @@
20
20
  'btn-bc tw-uppercase tw-bg-primary-500': !context.isDesignCom,
21
21
  'btn-dcom tw-rounded-md tw-font-bold': context.isDesignCom,
22
22
  }"
23
- @click="(event) => onBrandCrowdLogoClick(event, true)"
23
+ @click="(event) => onFooterLinkClick(event, 'create_your_website')"
24
24
  >
25
25
  {{ buttonText }}
26
26
  <div class="icon-container tw-ml-2">
@@ -131,6 +131,17 @@ const url = computed((): string =>
131
131
  props.context.brandPageType,
132
132
  props.context.isDesignCom,
133
133
  getCurrentLocale(),
134
+ 'bp-footer-watermark',
135
+ ),
136
+ );
137
+
138
+ const urlCreateYourWebsite = computed((): string =>
139
+ localisedRouteStore.getBuilderLandingPageByTypeUrl(
140
+ props.context.isPreview,
141
+ props.context.brandPageType,
142
+ props.context.isDesignCom,
143
+ getCurrentLocale(),
144
+ 'bp-footer-watermark-create-your-website',
134
145
  ),
135
146
  );
136
147
 
@@ -168,10 +179,12 @@ const buttonText = computed((): string => {
168
179
 
169
180
  const emit = defineEmits(['on-logo-click']);
170
181
 
171
- const onBrandCrowdLogoClick = async (
182
+ const onFooterLinkClick = async (
172
183
  event: any,
173
- isNewWatermarkDesign = false,
184
+ linkType: 'watermark_logo' | 'create_your_website',
174
185
  ) => {
186
+ const isNewWatermarkDesign = linkType === 'create_your_website';
187
+
175
188
  if (props.context.isPreview) {
176
189
  event.preventDefault();
177
190
  emit('on-logo-click', 'StyleSettings');
@@ -187,6 +200,8 @@ const onBrandCrowdLogoClick = async (
187
200
  await containerStore.showUpgradeModalAndSaveAsync(
188
201
  WEBSITE_UPGRADE_CONTEXT_TYPES.RemoveWatermark,
189
202
  );
203
+ } else {
204
+ eventTracker.sendFooterLinkClickEvent(linkType);
190
205
  }
191
206
  };
192
207
  </script>
@@ -42,10 +42,7 @@ import { computed, reactive, onMounted, watch, ref } from 'vue';
42
42
  import { Icon } from '@designcrowd/fe-shared-lib';
43
43
  import { type BrandPageContext, type TextStyleDeclaration } from '../../models';
44
44
  import { useLocalisedRouteStore } from '../../../brand-page-maker/stores';
45
- import {
46
- EVENTS,
47
- useEventTracker,
48
- } from '../../../brand-page-maker/composables/useEventTracker';
45
+ import { useEventTracker } from '../../../brand-page-maker/composables/useEventTracker';
49
46
  import {
50
47
  saveContactWidgetTr,
51
48
  getCurrentLocale,
@@ -125,10 +122,7 @@ const onSaveContactClick = (): void => {
125
122
 
126
123
  data.isProcessing = true;
127
124
 
128
- eventTracker?.sendWebsiteEvent({
129
- eventName: EVENTS.WEBSITE_SAVE_CONTACT,
130
- eventProps: {},
131
- });
125
+ eventTracker?.sendSaveContactEvent();
132
126
 
133
127
  const brandPageData = { pages: props.context.pages || [] };
134
128
 
@@ -186,11 +180,13 @@ const url = computed((): string => {
186
180
  if (!localisedRouteStore) {
187
181
  return '#';
188
182
  }
183
+
189
184
  return localisedRouteStore.getBuilderLandingPageByTypeUrl(
190
185
  props.context.isPreview,
191
186
  props.context.brandPageType,
192
187
  props.context.isDesignCom,
193
188
  getCurrentLocale(),
189
+ 'bp-save-contact',
194
190
  );
195
191
  });
196
192
 
@@ -51,10 +51,7 @@
51
51
  import { Icon } from '@designcrowd/fe-shared-lib';
52
52
  import { computed, ref, onMounted } from 'vue';
53
53
  import { type BrandPageContext } from '../../../models';
54
- import {
55
- EVENTS,
56
- useEventTracker,
57
- } from '../../../../brand-page-maker/composables/useEventTracker';
54
+ import { useEventTracker } from '../../../../brand-page-maker/composables/useEventTracker';
58
55
  import {
59
56
  saveContactWidgetTr,
60
57
  getCurrentLocale,
@@ -114,10 +111,7 @@ onMounted(() => {
114
111
  });
115
112
 
116
113
  const onStartFree = (): void => {
117
- eventTracker.sendWebsiteEvent({
118
- eventName: EVENTS.WEBSITE_START_FOR_FREE,
119
- eventProps: {},
120
- });
114
+ eventTracker.sendStartForFreeEvent();
121
115
  window.location.href = props.url;
122
116
  };
123
117
  </script>
@@ -1,5 +1,7 @@
1
1
  import { shallowRef } from 'vue';
2
2
 
3
+ type EventScope = 'maker_editor' | 'published_website';
4
+
3
5
  type LocationTypes = 'pre_purchase' | 'post_purchase';
4
6
 
5
7
  type TemplateTypes = 'brand-page' | 'brand-site' | 'brand-contact';
@@ -21,6 +23,7 @@ export interface BpUpsellEventProps {
21
23
  }
22
24
 
23
25
  export interface BpEventTrackerEvent {
26
+ scope?: EventScope;
24
27
  eventName: string;
25
28
  eventProps: any;
26
29
  }
@@ -60,6 +63,7 @@ export const EVENTS = {
60
63
  WEBSITE_MAKER_AI_STOP_GENERATION: 'website_maker_ai_stop_generation',
61
64
  WEBSITE_SAVE_CONTACT: 'website_save_contact',
62
65
  WEBSITE_START_FOR_FREE: 'website_start_for_free',
66
+ WEBSITE_FOOTER_LINK_CLICK: 'website_footer_link_click',
63
67
  WEBSITE_MAKER_AI_CLICK_SUGGESTED_PROMPT:
64
68
  'website_maker_ai_click_suggested_prompt',
65
69
  WEBSITE_MAKER_DOMAIN_UPSELL_MODAL: 'website_domain_upsell_modal',
@@ -134,12 +138,7 @@ export const PUBLISH_OPTION_MODAL_CONTINUATION_EVENTS = {
134
138
  FREEMIUM: 'freemium',
135
139
  };
136
140
 
137
- const GLOBAL_EVENT_PROPS = shallowRef<BpGlobalEventProps>({
138
- template_category: 'website',
139
- template_type: 'brand-page',
140
- location: 'post_purchase',
141
- domain_type: 'Free',
142
- });
141
+ const GLOBAL_EVENT_PROPS = shallowRef<any>();
143
142
 
144
143
  const bridgeState = shallowRef({
145
144
  upsellOpenEventProps: {},
@@ -153,9 +152,11 @@ const _publishEvent = (
153
152
  eventName: string,
154
153
  eventProps: any,
155
154
  excludeGlobal = false,
155
+ scope: EventScope = 'maker_editor',
156
156
  ) => {
157
157
  LISTENERS.value.forEach((listener) => {
158
158
  listener({
159
+ scope,
159
160
  eventName: eventName,
160
161
  eventProps: {
161
162
  ...(excludeGlobal ? {} : GLOBAL_EVENT_PROPS.value),
@@ -184,6 +185,35 @@ const useEventTracker = () => {
184
185
  },
185
186
  };
186
187
 
188
+ const publishedWebsiteEvents = {
189
+ sendSaveContactEvent: () => {
190
+ _publishEvent(
191
+ EVENTS.WEBSITE_SAVE_CONTACT,
192
+ {},
193
+ false,
194
+ 'published_website',
195
+ );
196
+ },
197
+ sendStartForFreeEvent: () => {
198
+ _publishEvent(
199
+ EVENTS.WEBSITE_START_FOR_FREE,
200
+ {},
201
+ false,
202
+ 'published_website',
203
+ );
204
+ },
205
+ sendFooterLinkClickEvent: (
206
+ linkType: 'watermark_logo' | 'create_your_website',
207
+ ) => {
208
+ _publishEvent(
209
+ EVENTS.WEBSITE_FOOTER_LINK_CLICK,
210
+ { link_type: linkType },
211
+ false,
212
+ 'published_website',
213
+ );
214
+ },
215
+ };
216
+
187
217
  return {
188
218
  sendExperimentStartedEvent: (abTestKey: string, abTestValue: string) => {
189
219
  _publishEvent(
@@ -198,7 +228,17 @@ const useEventTracker = () => {
198
228
  setGlobalEventProps: (
199
229
  props: Omit<BpGlobalEventProps, 'template_category'>,
200
230
  ) => {
201
- GLOBAL_EVENT_PROPS.value = { ...GLOBAL_EVENT_PROPS.value, ...props };
231
+ const defaultValues = {
232
+ template_category: 'website',
233
+ template_type: 'brand-page',
234
+ location: 'post_purchase',
235
+ domain_type: 'Free',
236
+ };
237
+
238
+ GLOBAL_EVENT_PROPS.value = { ...defaultValues, ...props };
239
+ },
240
+ setCustomGlobalEventProps: (props: any) => {
241
+ GLOBAL_EVENT_PROPS.value = props;
202
242
  },
203
243
  setUpsellBridgeState: (props: BpUpsellEventProps) => {
204
244
  bridgeState.value.upsellOpenEventProps = props;
@@ -349,6 +389,7 @@ const useEventTracker = () => {
349
389
  });
350
390
  },
351
391
  ...gettyVideoEvents,
392
+ ...publishedWebsiteEvents,
352
393
  };
353
394
  };
354
395
 
@@ -3,6 +3,8 @@ import { BRAND_PAGE_TYPES } from '../../../brand-page/models';
3
3
  import { interpolateUrl } from '../../utils/route.util';
4
4
  import { useBrandPageContainerStore } from '../brandpage-container';
5
5
 
6
+ const UTM_MEDIUM = 'published_website';
7
+
6
8
  const getLocalisedSlug = (defaultSlug: string, locale: string): string => {
7
9
  const translations: Record<string, Record<string, string>> = {
8
10
  '/website-builder': {
@@ -92,6 +94,63 @@ export const useLocalisedRouteStore = defineStore('localisedRoute', {
92
94
  this.logoEditUrlPath = payload.logoEditUrlPath;
93
95
  this.localisedBaseUrl = payload.localisedBaseUrl;
94
96
  },
97
+
98
+ buildUtmQueryStrings(brandPageType: string, utmCampaign?: string) {
99
+ if (!utmCampaign) {
100
+ return '';
101
+ }
102
+
103
+ return `utm_source=${brandPageType || BRAND_PAGE_TYPES.default}&utm_medium=${UTM_MEDIUM}&utm_campaign=${utmCampaign}`;
104
+ },
105
+
106
+ getBuilderLandingPageByTypeUrl(
107
+ isPreview: boolean,
108
+ brandPageType: string,
109
+ isDesignCom: boolean,
110
+ locale: string,
111
+ utmCampaign?: string,
112
+ ) {
113
+ if (isPreview) {
114
+ return '#';
115
+ }
116
+
117
+ let slug = '';
118
+
119
+ switch (brandPageType) {
120
+ case BRAND_PAGE_TYPES.brandSite:
121
+ slug = getLocalisedSlug(
122
+ this.websiteBuilderUrlPath || '/website-builder',
123
+ locale,
124
+ );
125
+ break;
126
+ case BRAND_PAGE_TYPES.brandContact:
127
+ slug = getLocalisedSlug(
128
+ this.digitalBusinessCardBuilderUrlPath || '/digital-business-card',
129
+ locale,
130
+ );
131
+ break;
132
+ default:
133
+ slug = getLocalisedSlug(
134
+ this.linkInBioBuilderUrlPath || '/link-in-bio',
135
+ locale,
136
+ );
137
+ }
138
+
139
+ const lowercaseLocale = locale.toLowerCase();
140
+ const isEnglish = lowercaseLocale === 'en-us';
141
+ const domain = isDesignCom
142
+ ? 'https://www.design.com'
143
+ : 'https://www.brandcrowd.com';
144
+ const localePath = isEnglish ? '' : `/${lowercaseLocale}`;
145
+
146
+ const url = `${domain}${localePath}${slug}`;
147
+
148
+ const utmParams = utmCampaign
149
+ ? `?${this.buildUtmQueryStrings(brandPageType, utmCampaign)}`
150
+ : '';
151
+
152
+ return url + utmParams;
153
+ },
95
154
  },
96
155
  getters: {
97
156
  currentPublishedSlugUrl: (state) => () => {
@@ -122,51 +181,6 @@ export const useLocalisedRouteStore = defineStore('localisedRoute', {
122
181
  });
123
182
  },
124
183
 
125
- getBuilderLandingPageByTypeUrl:
126
- (state) =>
127
- (
128
- isPreview: boolean,
129
- brandPageType: string,
130
- isDesignCom: boolean,
131
- locale: string,
132
- ) => {
133
- if (isPreview) {
134
- return '#';
135
- }
136
-
137
- let slug = '';
138
-
139
- switch (brandPageType) {
140
- case BRAND_PAGE_TYPES.brandSite:
141
- slug = getLocalisedSlug(
142
- state.websiteBuilderUrlPath || '/website-builder',
143
- locale,
144
- );
145
- break;
146
- case BRAND_PAGE_TYPES.brandContact:
147
- slug = getLocalisedSlug(
148
- state.digitalBusinessCardBuilderUrlPath ||
149
- '/digital-business-card',
150
- locale,
151
- );
152
- break;
153
- default:
154
- slug = getLocalisedSlug(
155
- state.linkInBioBuilderUrlPath || '/link-in-bio',
156
- locale,
157
- );
158
- }
159
-
160
- const lowercaseLocale = locale.toLowerCase();
161
- const isEnglish = lowercaseLocale === 'en-us';
162
- const domain = isDesignCom
163
- ? 'https://www.design.com'
164
- : 'https://www.brandcrowd.com';
165
- const localePath = isEnglish ? '' : `/${lowercaseLocale}`;
166
-
167
- return `${domain}${localePath}${slug}`;
168
- },
169
-
170
184
  getWebsiteBaseUrl: () => (isDesignCom: boolean) => {
171
185
  return isDesignCom
172
186
  ? `https://www.design.com`
package/src/lib.ts CHANGED
@@ -105,6 +105,7 @@ export {
105
105
 
106
106
  // Composable
107
107
  export { useEventTracker } from './brand-page-maker/composables/useEventTracker';
108
+ export type { BpEventTrackerEvent } from './brand-page-maker/composables/useEventTracker';
108
109
  export {
109
110
  useConsent,
110
111
  type ConsentType,