@designcrowd/library.brand-page 6.0.11 → 6.0.13

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 (117) hide show
  1. package/lib/src/{CreatedOnBrandCrowd-de-de-DopPc6g2.js → CreatedOnBrandCrowd-de-de-CBjFFeBP.js} +1 -1
  2. package/lib/src/{CreatedOnBrandCrowd-en-us-CSHmaAWm.js → CreatedOnBrandCrowd-en-us-NuNXF81K.js} +1 -1
  3. package/lib/src/{CreatedOnBrandCrowd-es-es-C4vM0p2e.js → CreatedOnBrandCrowd-es-es-BJG8nfug.js} +1 -1
  4. package/lib/src/{CreatedOnBrandCrowd-fr-fr-ArpBbnxm.js → CreatedOnBrandCrowd-fr-ca-uX-nL53e.js} +1 -1
  5. package/lib/src/{CreatedOnBrandCrowd-fr-ca-ArpBbnxm.js → CreatedOnBrandCrowd-fr-fr-uX-nL53e.js} +1 -1
  6. package/lib/src/{CreatedOnBrandCrowd-pt-pt-CGAQLXiX.js → CreatedOnBrandCrowd-pt-br-DTrgFGQV.js} +1 -1
  7. package/lib/src/{CreatedOnBrandCrowd-pt-br-CGAQLXiX.js → CreatedOnBrandCrowd-pt-pt-DTrgFGQV.js} +1 -1
  8. package/lib/src/{CreatedOnDcom-de-de-3WVSgB6t.js → CreatedOnDcom-de-de-DSfpxioT.js} +1 -1
  9. package/lib/src/{CreatedOnDcom-en-us-Dx-RHXrH.js → CreatedOnDcom-en-us-C7G4gKem.js} +1 -1
  10. package/lib/src/{CreatedOnDcom-es-es-CfnEYFMA.js → CreatedOnDcom-es-es-DVckCaji.js} +1 -1
  11. package/lib/src/{CreatedOnDcom-fr-ca-BSHZTiUO.js → CreatedOnDcom-fr-ca-C5GDrm_C.js} +1 -1
  12. package/lib/src/{CreatedOnDcom-fr-fr-DtHssrQb.js → CreatedOnDcom-fr-fr-v5eMm-j2.js} +1 -1
  13. package/lib/src/{CreatedOnDcom-pt-br-CdX1aRI8.js → CreatedOnDcom-pt-br-Dq3-fPUc.js} +1 -1
  14. package/lib/src/{CreatedOnDcom-pt-pt-jy044FNL.js → CreatedOnDcom-pt-pt-DFsncYax.js} +1 -1
  15. package/lib/src/brand-page/components/image-gallery/ImageGallery.stories.js +3 -0
  16. package/lib/src/brand-page/components/image-gallery/masonry/MasonryGallery.mixin.d.ts +1 -1
  17. package/lib/src/brand-page/components/images-section/ImagesSection.stories.js +2 -1
  18. package/lib/src/brand-page/components/social-links/SocialLinks.stories.js +3 -0
  19. package/lib/src/brand-page/components/testimonial-section/__fixtures__/data.js +3 -0
  20. package/lib/src/brand-page/components/text/Text.stories.js +2 -0
  21. package/lib/src/brand-page/models/index.d.ts +13 -0
  22. package/lib/src/brand-page/models/index.js +4 -0
  23. package/lib/src/brand-page/utils/migration/migration-01.js +2 -0
  24. package/lib/src/brand-page/utils/migration/migration-18.d.ts +14 -0
  25. package/lib/src/brand-page/utils/migration/migration-18.js +17 -0
  26. package/lib/src/brand-page/utils/migration.util.js +6 -0
  27. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.stories.js +1 -0
  28. package/lib/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-examples.js +1 -0
  29. package/lib/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.js +5 -0
  30. package/lib/src/brand-page-maker/constants/config-settings-constant.js +4 -0
  31. package/lib/src/brand-page-maker/models/content-settings.js +4 -0
  32. package/lib/src/brand-page-maker/stores/ai-checkpoint/ai-checkpoint-store.d.ts +18 -0
  33. package/lib/src/index.mjs +84 -83
  34. package/lib/src/{lib-Bx7xK4dn.js → lib-BG-pyXi9.js} +19585 -19807
  35. package/lib/src/metadata-builder/ai-metadata-executor.js +24 -1
  36. package/lib/src/metadata-builder/builders/footer-builder.js +32 -41
  37. package/lib/src/metadata-builder/builders/item-id-utils.d.ts +54 -0
  38. package/lib/src/metadata-builder/builders/item-id-utils.js +96 -0
  39. package/lib/src/metadata-builder/builders/move-page-builder.d.ts +32 -0
  40. package/lib/src/metadata-builder/builders/move-page-builder.js +137 -0
  41. package/lib/src/metadata-builder/builders/nav-utils.d.ts +26 -0
  42. package/lib/src/metadata-builder/builders/nav-utils.js +95 -0
  43. package/lib/src/metadata-builder/builders/section-builders/image-gallery-builder.js +57 -68
  44. package/lib/src/metadata-builder/builders/section-builders/images-section-builder.js +58 -93
  45. package/lib/src/metadata-builder/builders/section-builders/move-section-builder.d.ts +13 -1
  46. package/lib/src/metadata-builder/builders/section-builders/move-section-builder.js +40 -30
  47. package/lib/src/metadata-builder/builders/section-builders/shapes-section-builder.js +66 -99
  48. package/lib/src/metadata-builder/builders/section-builders/social-links-builder.js +57 -17
  49. package/lib/src/metadata-builder/builders/section-builders/testimonial-section-builder.js +51 -85
  50. package/lib/src/metadata-builder/builders/section-builders/text-section-builder.js +50 -74
  51. package/lib/src/metadata-builder/builders/section-field-maps.js +17 -0
  52. package/lib/src/metadata-builder/builders/set-page-visibility-builder.d.ts +23 -0
  53. package/lib/src/metadata-builder/builders/set-page-visibility-builder.js +83 -0
  54. package/lib/src/metadata-builder/metadata-executor.js +4 -0
  55. package/lib/src/metadata-builder/models.d.ts +2 -0
  56. package/lib/src/metadata-builder/models.js +2 -0
  57. package/lib/src/metadata-builder/parsers/ai-toolcall-parser.d.ts +31 -7
  58. package/lib/src/metadata-builder/parsers/ai-toolcall-parser.js +2 -0
  59. package/lib/src/metadata-builder/parsers/section-tool-arguments.d.ts +84 -48
  60. package/lib/src/shared/content-settings/components/links-field/LinksField.mixin.js +2 -0
  61. package/lib/src/shared/page-settings/components/page-settings/PageSettings.mixin.d.ts +2 -0
  62. package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.d.ts +2 -0
  63. package/lib/src/tracker.d.ts +2 -0
  64. package/lib/src/tracker.js +12 -0
  65. package/lib/src/tracker.mjs +12 -0
  66. package/lib/src/useEventTracker-DmQ6AkNn.js +356 -0
  67. package/lib/src/utils/minify-brand-page-metadata.d.ts +2 -0
  68. package/lib/src/utils/minify-brand-page-metadata.js +8 -1
  69. package/package.json +16 -1
  70. package/src/brand-page/components/image-gallery/ImageGallery.stories.ts +3 -0
  71. package/src/brand-page/components/image-gallery/ImageGallery.test.ts +1 -0
  72. package/src/brand-page/components/image-gallery/masonry/MasonryGallery.mixin.ts +2 -1
  73. package/src/brand-page/components/images-section/ImagesSection.stories.ts +2 -1
  74. package/src/brand-page/components/social-links/SocialLinks.stories.ts +3 -0
  75. package/src/brand-page/components/social-links/SocialLinks.vue.test.ts +5 -0
  76. package/src/brand-page/components/testimonial-section/__fixtures__/data.ts +3 -0
  77. package/src/brand-page/components/text/Text.stories.ts +2 -0
  78. package/src/brand-page/models/index.ts +17 -0
  79. package/src/brand-page/utils/__snapshots__/migration.util.test.ts.snap +23 -3
  80. package/src/brand-page/utils/__snapshots__/migration2.util.test.ts.snap +6 -0
  81. package/src/brand-page/utils/__snapshots__/model.util.test.ts.snap +12 -0
  82. package/src/brand-page/utils/migration/migration-01.ts +2 -0
  83. package/src/brand-page/utils/migration/migration-18.test.ts +131 -0
  84. package/src/brand-page/utils/migration/migration-18.ts +22 -0
  85. package/src/brand-page/utils/migration.util.ts +7 -0
  86. package/src/brand-page/utils/personalisation.util.test.ts +4 -0
  87. package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.stories.ts +1 -0
  88. package/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-examples.ts +1 -0
  89. package/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.ts +6 -0
  90. package/src/brand-page-maker/constants/config-settings-constant.ts +4 -0
  91. package/src/brand-page-maker/models/content-settings.ts +4 -0
  92. package/src/metadata-builder/ai-metadata-executor.ts +31 -1
  93. package/src/metadata-builder/builders/footer-builder.test.ts +335 -28
  94. package/src/metadata-builder/builders/footer-builder.ts +40 -57
  95. package/src/metadata-builder/builders/item-id-utils.test.ts +184 -0
  96. package/src/metadata-builder/builders/item-id-utils.ts +117 -0
  97. package/src/metadata-builder/builders/move-page-builder.ts +227 -0
  98. package/src/metadata-builder/builders/nav-utils.ts +141 -0
  99. package/src/metadata-builder/builders/section-builders/image-gallery-builder.ts +62 -88
  100. package/src/metadata-builder/builders/section-builders/images-section-builder.ts +66 -129
  101. package/src/metadata-builder/builders/section-builders/move-section-builder.ts +58 -35
  102. package/src/metadata-builder/builders/section-builders/shapes-section-builder.ts +105 -160
  103. package/src/metadata-builder/builders/section-builders/social-links-builder.ts +65 -20
  104. package/src/metadata-builder/builders/section-builders/testimonial-section-builder.ts +83 -146
  105. package/src/metadata-builder/builders/section-builders/text-section-builder.ts +71 -122
  106. package/src/metadata-builder/builders/section-field-maps.ts +18 -0
  107. package/src/metadata-builder/builders/set-page-visibility-builder.ts +122 -0
  108. package/src/metadata-builder/metadata-executor.ts +4 -0
  109. package/src/metadata-builder/models.ts +2 -0
  110. package/src/metadata-builder/parsers/ai-toolcall-parser.ts +32 -7
  111. package/src/metadata-builder/parsers/section-tool-arguments.ts +84 -48
  112. package/src/shared/content-settings/components/links-field/LinksField.mixin.ts +2 -0
  113. package/src/tracker.ts +28 -0
  114. package/src/utils/minify-brand-page-metadata.ts +14 -2
  115. package/lib/src/metadata-builder/builders/reorder-pages-builder.d.ts +0 -13
  116. package/lib/src/metadata-builder/builders/reorder-pages-builder.js +0 -49
  117. package/src/metadata-builder/builders/reorder-pages-builder.ts +0 -80
@@ -92,10 +92,15 @@ export interface ProfileSectionArguments {
92
92
  background_color?: string | null;
93
93
  }
94
94
  export interface TextSectionItem {
95
- /** 0-based index of existing item to update in-place */
96
- item_index?: number;
97
- /** 0-based position to insert a new item at */
98
- insert_at?: number;
95
+ /** Stable id of the existing item to update or move. Omit to ADD a new item. */
96
+ item_id?: string;
97
+ /**
98
+ * Id of an existing item to position this item before (insert for new items,
99
+ * move for existing ones). Use "__end__" for the end of the list. Omit to
100
+ * leave an existing item in place / append a new item. Mirrors the
101
+ * section-level move_before_content_id.
102
+ */
103
+ move_before_item_id?: string;
99
104
  text?: RichTextField;
100
105
  text_style?: TextStyleArguments;
101
106
  }
@@ -108,21 +113,26 @@ export interface TextSectionArguments {
108
113
  /** Multiple text items (BrandSite) */
109
114
  items?: TextSectionItem[];
110
115
  _replace_items?: boolean;
111
- /** 0-based indices of items to remove */
112
- _remove_item_indices?: number[];
113
- /** New order as array of current 0-based indices */
114
- _reorder_items?: number[];
116
+ /** Stable ids of items to remove. Order-independent (no index shifting). */
117
+ _remove_item_ids?: string[];
115
118
  background_color?: string | null;
119
+ padding_top?: number;
120
+ padding_bottom?: number;
116
121
  }
117
122
  export interface ImageSectionArguments {
118
123
  image_url?: string;
119
124
  image_title?: string;
120
125
  }
121
126
  export interface ImageGalleryItem {
122
- /** 0-based index of existing item to update in-place */
123
- item_index?: number;
124
- /** 0-based position to insert a new item at */
125
- insert_at?: number;
127
+ /** Stable id of the existing item to update or move. Omit to ADD a new item. */
128
+ item_id?: string;
129
+ /**
130
+ * Id of an existing item to position this item before (insert for new items,
131
+ * move for existing ones). Use "__end__" for the end of the list. Omit to
132
+ * leave an existing item in place / append a new item. Mirrors the
133
+ * section-level move_before_content_id.
134
+ */
135
+ move_before_item_id?: string;
126
136
  image_url?: string;
127
137
  caption?: string;
128
138
  }
@@ -131,10 +141,10 @@ export interface ImageGallerySectionArguments {
131
141
  gallery_type?: 'grid' | 'carousel' | 'masonry';
132
142
  is_full_width?: boolean;
133
143
  _replace_items?: boolean;
134
- /** 0-based indices of items to remove */
135
- _remove_item_indices?: number[];
136
- /** New order as array of current 0-based indices */
137
- _reorder_items?: number[];
144
+ /** Stable ids of items to remove. Order-independent (no index shifting). */
145
+ _remove_item_ids?: string[];
146
+ padding_top?: number;
147
+ padding_bottom?: number;
138
148
  }
139
149
  export interface GeneralLinkSectionArguments {
140
150
  title?: string;
@@ -189,10 +199,15 @@ export interface TiktokSectionArguments {
189
199
  url?: string;
190
200
  }
191
201
  export interface SocialLink {
192
- /** 0-based index of existing item to update in-place */
193
- item_index?: number;
194
- /** 0-based position to insert a new item at */
195
- insert_at?: number;
202
+ /** Stable id of the existing item to update or move. Omit to ADD a new item. */
203
+ item_id?: string;
204
+ /**
205
+ * Id of an existing item to position this item before (insert for new items,
206
+ * move for existing ones). Use "__end__" for the end of the list. Omit to
207
+ * leave an existing item in place / append a new item. Mirrors the
208
+ * section-level move_before_content_id.
209
+ */
210
+ move_before_item_id?: string;
196
211
  platform?: 'facebook' | 'x' | 'instagram' | 'youtube' | 'linkedin' | 'pinterest' | 'twitch' | 'tiktok';
197
212
  url?: string;
198
213
  }
@@ -204,10 +219,10 @@ export interface SocialLinksSectionArguments {
204
219
  /** Style for the icon container background (used when icon_style is 'square' or 'circle'). */
205
220
  icon_background_style?: TextStyleArguments;
206
221
  _replace_items?: boolean;
207
- /** 0-based indices of items to remove */
208
- _remove_item_indices?: number[];
209
- /** New order as array of current 0-based indices */
210
- _reorder_items?: number[];
222
+ /** Stable ids of items to remove. Order-independent (no index shifting). */
223
+ _remove_item_ids?: string[];
224
+ padding_top?: number;
225
+ padding_bottom?: number;
211
226
  }
212
227
  export interface MailingListSectionArguments {
213
228
  title?: RichTextField;
@@ -215,6 +230,8 @@ export interface MailingListSectionArguments {
215
230
  accepted_fields?: 'emailOnly' | 'nameAndEmail';
216
231
  title_style?: TextStyleArguments;
217
232
  button_text_style?: ButtonTextStyleArguments;
233
+ padding_top?: number;
234
+ padding_bottom?: number;
218
235
  }
219
236
  export interface ContactFormFieldToggle {
220
237
  /** Field ID matching FORM_FIELD_IDS (e.g., 'firstName', 'lastName', 'phoneNumber', 'message') */
@@ -239,6 +256,8 @@ export interface ContactFormSectionArguments {
239
256
  fields?: ContactFormFieldToggle[];
240
257
  background_color?: string | null;
241
258
  card_style?: CardStyleArguments;
259
+ padding_top?: number;
260
+ padding_bottom?: number;
242
261
  }
243
262
  export interface BannerSectionArguments {
244
263
  title?: RichTextField;
@@ -255,6 +274,8 @@ export interface BannerSectionArguments {
255
274
  button_text_style?: ButtonTextStyleArguments;
256
275
  background_color?: string | null;
257
276
  card_style?: CardStyleArguments;
277
+ padding_top?: number;
278
+ padding_bottom?: number;
258
279
  }
259
280
  export interface AboutSectionArguments {
260
281
  title?: RichTextField;
@@ -266,12 +287,19 @@ export interface AboutSectionArguments {
266
287
  title_style?: TextStyleArguments;
267
288
  paragraph_style?: TextStyleArguments;
268
289
  background_color?: string | null;
290
+ padding_top?: number;
291
+ padding_bottom?: number;
269
292
  }
270
293
  export interface ImagesSectionItem {
271
- /** 0-based index of existing item to update in-place */
272
- item_index?: number;
273
- /** 0-based position to insert a new item at */
274
- insert_at?: number;
294
+ /** Stable id of the existing item to update or move. Omit to ADD a new item. */
295
+ item_id?: string;
296
+ /**
297
+ * Id of an existing item to position this item before (insert for new items,
298
+ * move for existing ones). Use "__end__" for the end of the list. Omit to
299
+ * leave an existing item in place / append a new item. Mirrors the
300
+ * section-level move_before_content_id.
301
+ */
302
+ move_before_item_id?: string;
275
303
  image_url?: string;
276
304
  heading?: string;
277
305
  text?: string;
@@ -283,10 +311,8 @@ export interface ImagesSectionArguments {
283
311
  items?: ImagesSectionItem[];
284
312
  display_style?: 'left-aligned' | 'right-aligned' | 'centered' | 'media-only' | 'center-card-aligned-image' | 'alternate-image';
285
313
  _replace_items?: boolean;
286
- /** 0-based indices of items to remove */
287
- _remove_item_indices?: number[];
288
- /** New order as array of current 0-based indices */
289
- _reorder_items?: number[];
314
+ /** Stable ids of items to remove. Order-independent (no index shifting). */
315
+ _remove_item_ids?: string[];
290
316
  title_style?: TextStyleArguments;
291
317
  description_style?: TextStyleArguments;
292
318
  heading_style?: TextStyleArguments;
@@ -298,10 +324,15 @@ export interface ImagesSectionArguments {
298
324
  card_style?: CardStyleArguments;
299
325
  }
300
326
  export interface TestimonialItem {
301
- /** 0-based index of existing item to update in-place */
302
- item_index?: number;
303
- /** 0-based position to insert a new item at */
304
- insert_at?: number;
327
+ /** Stable id of the existing item to update or move. Omit to ADD a new item. */
328
+ item_id?: string;
329
+ /**
330
+ * Id of an existing item to position this item before (insert for new items,
331
+ * move for existing ones). Use "__end__" for the end of the list. Omit to
332
+ * leave an existing item in place / append a new item. Mirrors the
333
+ * section-level move_before_content_id.
334
+ */
335
+ move_before_item_id?: string;
305
336
  testimonial?: string;
306
337
  name?: string;
307
338
  position?: string;
@@ -314,22 +345,27 @@ export interface TestimonialSectionArguments {
314
345
  items?: TestimonialItem[];
315
346
  display_style?: 'centered' | 'big-image' | 'columns';
316
347
  _replace_items?: boolean;
317
- /** 0-based indices of items to remove */
318
- _remove_item_indices?: number[];
319
- /** New order as array of current 0-based indices */
320
- _reorder_items?: number[];
348
+ /** Stable ids of items to remove. Order-independent (no index shifting). */
349
+ _remove_item_ids?: string[];
321
350
  title_style?: TextStyleArguments;
322
351
  testimonial_style?: TextStyleArguments;
323
352
  name_style?: TextStyleArguments;
324
353
  position_style?: TextStyleArguments;
325
354
  background_style?: BackgroundStyleArguments;
326
355
  card_style?: CardStyleArguments;
356
+ padding_top?: number;
357
+ padding_bottom?: number;
327
358
  }
328
359
  export interface ShapesSectionItem {
329
- /** 0-based index of existing item to update in-place */
330
- item_index?: number;
331
- /** 0-based position to insert a new item at */
332
- insert_at?: number;
360
+ /** Stable id of the existing item to update or move. Omit to ADD a new item. */
361
+ item_id?: string;
362
+ /**
363
+ * Id of an existing item to position this item before (insert for new items,
364
+ * move for existing ones). Use "__end__" for the end of the list. Omit to
365
+ * leave an existing item in place / append a new item. Mirrors the
366
+ * section-level move_before_content_id.
367
+ */
368
+ move_before_item_id?: string;
333
369
  icon_image_url?: string;
334
370
  shape_url?: string;
335
371
  color_theme?: string;
@@ -342,10 +378,8 @@ export interface ShapesSectionArguments {
342
378
  items?: ShapesSectionItem[];
343
379
  display_style?: 'left-aligned' | 'right-aligned' | 'centered' | 'media-only' | 'center-card-aligned-image' | 'alternate-image';
344
380
  _replace_items?: boolean;
345
- /** 0-based indices of items to remove */
346
- _remove_item_indices?: number[];
347
- /** New order as array of current 0-based indices */
348
- _reorder_items?: number[];
381
+ /** Stable ids of items to remove. Order-independent (no index shifting). */
382
+ _remove_item_ids?: string[];
349
383
  title_style?: TextStyleArguments;
350
384
  description_style?: TextStyleArguments;
351
385
  heading_style?: TextStyleArguments;
@@ -364,6 +398,8 @@ export interface BookingSectionArguments {
364
398
  description_style?: TextStyleArguments;
365
399
  button_text_style?: ButtonTextStyleArguments;
366
400
  background_color?: string | null;
401
+ padding_top?: number;
402
+ padding_bottom?: number;
367
403
  }
368
404
  export interface DividerSectionArguments {
369
405
  divider_style?: 'none' | 'thin' | 'thick';
@@ -1,5 +1,6 @@
1
1
  import { defineComponent } from 'vue';
2
2
  import cloneDeep from 'lodash.clonedeep';
3
+ import * as uuid from 'uuid';
3
4
  const ACCEPTED_MIME_TYPES = 'image/png, image/jpeg, image/svg+xml';
4
5
  export default defineComponent({
5
6
  props: {
@@ -75,6 +76,7 @@ export default defineComponent({
75
76
  },
76
77
  addNewItem() {
77
78
  const newItem = {
79
+ id: uuid.v4(),
78
80
  height: 0,
79
81
  imageTitle: '',
80
82
  width: 0,
@@ -2871,6 +2871,7 @@ declare const _default: import("vue").DefineComponent<{}, {
2871
2871
  logoImageBase64Url?: string | undefined;
2872
2872
  socialLinks: {
2873
2873
  url: string;
2874
+ id: string;
2874
2875
  imageUrl: string;
2875
2876
  size?: string | undefined;
2876
2877
  imageTitle: string;
@@ -3095,6 +3096,7 @@ declare const _default: import("vue").DefineComponent<{}, {
3095
3096
  logoImageBase64Url?: string | undefined;
3096
3097
  socialLinks: {
3097
3098
  url: string;
3099
+ id: string;
3098
3100
  imageUrl: string;
3099
3101
  size?: string | undefined;
3100
3102
  imageTitle: string;
@@ -2824,6 +2824,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
2824
2824
  logoImageBase64Url?: string | undefined;
2825
2825
  socialLinks: {
2826
2826
  url: string;
2827
+ id: string;
2827
2828
  imageUrl: string;
2828
2829
  size?: string | undefined;
2829
2830
  imageTitle: string;
@@ -3048,6 +3049,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
3048
3049
  logoImageBase64Url?: string | undefined;
3049
3050
  socialLinks: {
3050
3051
  url: string;
3052
+ id: string;
3051
3053
  imageUrl: string;
3052
3054
  size?: string | undefined;
3053
3055
  imageTitle: string;
@@ -0,0 +1,2 @@
1
+ export { useEventTracker, EVENTS, SELECT_LOCATIONS, UPGRADE_CTA_LOCATIONS, AI_CTA_LOCATIONS, TRIGGER_TYPE, PUBLISH_MODAL_CONTINUATION_EVENTS, GENERATE_TEXT_CONTINUATION_EVENTS, PUBLISH_OPTION_MODAL_CONTINUATION_EVENTS, } from './brand-page-maker/composables/useEventTracker';
2
+ export type { EventTracker, BpEventTrackerEvent, BpGlobalEventProps, BpUpsellEventProps, } from './brand-page-maker/composables/useEventTracker';
@@ -0,0 +1,12 @@
1
+ // Lightweight subpath entry: `@designcrowd/library.brand-page/tracker`.
2
+ // Re-exports ONLY the analytics surface (useEventTracker + event constants),
3
+ // which depends solely on `vue`. This lets consumers import the tracker without
4
+ // pulling the full library graph (maker, TipTap, renderer). See
5
+ // docs/plans/multi-entrypoint-tree-shaking.md and the /tracker proposal.
6
+ //
7
+ // IMPORTANT: useEventTracker holds module-scoped pub/sub state (LISTENERS,
8
+ // GLOBAL_EVENT_PROPS). It MUST resolve to a single shared instance across this
9
+ // entry and the root `.` entry, or subscribers registered here won't receive
10
+ // events published via the root. The multi-entry build hoists it into a shared
11
+ // chunk (both `index` and `tracker` import it) — verified at build time.
12
+ export { useEventTracker, EVENTS, SELECT_LOCATIONS, UPGRADE_CTA_LOCATIONS, AI_CTA_LOCATIONS, TRIGGER_TYPE, PUBLISH_MODAL_CONTINUATION_EVENTS, GENERATE_TEXT_CONTINUATION_EVENTS, PUBLISH_OPTION_MODAL_CONTINUATION_EVENTS, } from './brand-page-maker/composables/useEventTracker';
@@ -0,0 +1,12 @@
1
+ import { A as N, E as O, G as _, P as A, a as I, S as a, T as S, U as s, u as C } from "./useEventTracker-DmQ6AkNn.js";
2
+ export {
3
+ N as AI_CTA_LOCATIONS,
4
+ O as EVENTS,
5
+ _ as GENERATE_TEXT_CONTINUATION_EVENTS,
6
+ A as PUBLISH_MODAL_CONTINUATION_EVENTS,
7
+ I as PUBLISH_OPTION_MODAL_CONTINUATION_EVENTS,
8
+ a as SELECT_LOCATIONS,
9
+ S as TRIGGER_TYPE,
10
+ s as UPGRADE_CTA_LOCATIONS,
11
+ C as useEventTracker
12
+ };
@@ -0,0 +1,356 @@
1
+ import { shallowRef as A } from "vue";
2
+ const E = {
3
+ EXPERIMENT_STARTED: "$experiment_started",
4
+ WEBSITE_MAKER_ADD_CONTENT: "website_maker_add_content",
5
+ WEBSITE_MAKER_REMOVE_CONTENT: "website_maker_remove_content",
6
+ WEBSITE_MAKER_SELECT_CONTENT: "website_maker_select_content",
7
+ WEBSITE_MAKER_UPSELL_MODAL: "website_maker_upsell_modal",
8
+ WEBSITE_MAKER_PUBLISH_MODAL: "website_maker_publish_modal",
9
+ WEBSITE_MAKER_ADD_PAGE: "website_maker_add_page",
10
+ WEBSITE_MAKER_REMOVE_PAGE: "website_maker_remove_page",
11
+ WEBSITE_MAKER_REORDER_PAGE: "website_maker_reorder_page",
12
+ WEBSITE_MAKER_OPEN: "website_maker_open",
13
+ WEBSITE_MAKER_PUBLISH_UPSELL_OPTION_MODAL: "website_maker_publish_upsell_option_modal",
14
+ WEBSITE_MAKER_TEMPLATE_SEARCH: "website_maker_template_search",
15
+ WEBSITE_MAKER_TEMPLATE_SELECT: "website_maker_template_select",
16
+ WEBSITE_MAKER_TEMPLATE_CATEGORY_SELECT: "website_maker_template_category_select",
17
+ WEBSITE_SIDEBAR_TAB_CLICKED: "website_sidebar_tab_clicked",
18
+ WEBSITE_MAKER_HYPERLINK_ADD: "website_maker_hyperlink_add",
19
+ WEBSITE_MAKER_HYPERLINK_REMOVE: "website_maker_hyperlink_remove",
20
+ WEBSITE_MAKER_HYPERLINK_CLICK: "website_maker_hyperlink_click",
21
+ WEBSITE_MAKER_HYPERLINK_EDIT: "website_maker_hyperlink_edit",
22
+ WEBSITE_MAKER_CALENDLY_LINK_CLICKED: "website_maker_calendly_link_clicked",
23
+ WEBSITE_MAKER_UPSELL_OFFER: "website_maker_upsell_offer",
24
+ WEBSITE_MAKER_UPSELL_ACTION: "website_maker_upsell_action",
25
+ WEBSITE_MAKER_SWITCH_LOGO: "website_maker_switch_logo",
26
+ WEBSITE_MAKER_SWITCH_LOGO_MODAL: "website_maker_switch_logo_modal",
27
+ WEBSITE_MAKER_AI_SEND_PROMPT: "website_maker_ai_send_prompt",
28
+ WEBSITE_MAKER_AI_STOP_GENERATION: "website_maker_ai_stop_generation",
29
+ WEBSITE_SAVE_CONTACT: "website_save_contact",
30
+ WEBSITE_START_FOR_FREE: "website_start_for_free",
31
+ WEBSITE_FOOTER_LINK_CLICK: "website_footer_link_click",
32
+ WEBSITE_MAKER_AI_CLICK_SUGGESTED_PROMPT: "website_maker_ai_click_suggested_prompt",
33
+ WEBSITE_MAKER_DOMAIN_UPSELL_MODAL: "website_domain_upsell_modal",
34
+ WEBSITE_MAKER_DIGITAL_BUSINESS_CARDS_SAVE_CONTACT_TOGGLE: "website_maker_digital_business_cards_save_contact_toggle",
35
+ WEBSITE_MAKER_DIGITAL_BUSINESS_CARDS_HIDE_POPUP: "website_maker_digital_business_cards_hide_popup",
36
+ WEBSITE_MAKER_GETTY_VIDEO: "website_maker_getty_video",
37
+ WEBSITE_MAKER_SHIPPING_TOGGLE: "website_maker_shipping_toggle",
38
+ WEBSITE_MAKER_UNDO: "website_maker_undo",
39
+ WEBSITE_MAKER_REDO: "website_maker_redo",
40
+ WEBSITE_MAKER_HISTORY_CAPPED: "website_maker_history_capped",
41
+ WEBSITE_MAKER_HISTORY_OVERSIZED: "website_maker_history_oversized"
42
+ }, R = {
43
+ MAKER_PREVIEW: "maker_preview",
44
+ SIDEBAR: "sidebar"
45
+ }, p = {
46
+ MANAGE_WEBSITE: "manage_website",
47
+ MANAGE_WEBSITE_PUBLISH: "manage_website_publish",
48
+ MANAGE_WEBSITE_UPGRADE: "manage_website_upgrade",
49
+ REMOVE_WATERMARK: "remove_watermark",
50
+ REMOVE_WATERMARK_FOOTER_SETTINGS: "remove_watermark_footer_settings",
51
+ PREVIEW_WATERMARK: "preview_watermark",
52
+ ADD_NEW_PAGE: "add_new_page",
53
+ ADD_CONTENT: "add_content",
54
+ EDITOR_PUBLISH_TOP: "editor_publish_top",
55
+ EDITOR_PUBLISH_BOTTOM: "editor_publish_bottom",
56
+ SLUG_CHANGE_MAKER_SIDEBAR_SETTINGS: "slug_change_maker_sidebar_settings",
57
+ SLUG_CHANGE_MANAGE_PAGE: "slug_change_manage_page",
58
+ GOOGLE_ADSENSE: "google_adsense",
59
+ QUICK_LINKS: "quick_links",
60
+ SAVE_CONTACT_SETTINGS: "save_contact_settings",
61
+ NAV_TOP: "nav_top",
62
+ NAV_BOTTOM: "nav_bottom"
63
+ }, O = {
64
+ AI_BUILDER_TAB: "ai_builder_tab",
65
+ AI_BUILDER_CHAT_UPSELL: "ai_builder_chat_upsell"
66
+ }, S = {
67
+ AUTOMATIC: "automatic",
68
+ USER_TRIGGERED: "user_triggered",
69
+ AI_BUILDER: "ai_builder"
70
+ }, d = {
71
+ PUBLISH: "publish",
72
+ EXIT: "exit",
73
+ BUY_A_DOMAIN: "buy_a_domain",
74
+ SEARCH_A_DOMAIN: "search_a_domain",
75
+ COPY_LINK: "copy_link",
76
+ VIEW_WEBSITE: "view_website",
77
+ USE_EXISTING_DOMAIN: "use_existing_domain"
78
+ }, M = {
79
+ USE_TEXT: "use_text",
80
+ EXIT: "exit"
81
+ }, T = {
82
+ PREMIUM: "premium",
83
+ EXIT: "exit",
84
+ FREEMIUM: "freemium"
85
+ }, i = A(), n = A({
86
+ upsellOpenEventProps: {},
87
+ domainUpsellOpenEventProps: {},
88
+ publishOpenEventProps: {}
89
+ }), l = A([]), _ = (o, I, e = !1, t = "maker_editor") => {
90
+ l.value.forEach((s) => {
91
+ s({
92
+ scope: t,
93
+ eventName: o,
94
+ eventProps: {
95
+ ...e ? {} : i.value,
96
+ ...I
97
+ }
98
+ });
99
+ });
100
+ }, P = () => ({
101
+ sendExperimentStartedEvent: (e, t) => {
102
+ _(
103
+ E.EXPERIMENT_STARTED,
104
+ {
105
+ "Experiment name": e,
106
+ "Variant name": t
107
+ },
108
+ !0
109
+ );
110
+ },
111
+ setGlobalEventProps: (e) => {
112
+ const t = {
113
+ template_category: "website",
114
+ template_type: "brand-page",
115
+ location: "post_purchase",
116
+ domain_type: "Free"
117
+ };
118
+ i.value = { ...t, ...e };
119
+ },
120
+ setCustomGlobalEventProps: (e) => {
121
+ i.value = e;
122
+ },
123
+ setUpsellBridgeState: (e) => {
124
+ n.value.upsellOpenEventProps = e;
125
+ },
126
+ setDomainUpsellBridgeState: (e) => {
127
+ n.value.domainUpsellOpenEventProps = e;
128
+ },
129
+ subscribe: (e) => {
130
+ l.value.push(e);
131
+ },
132
+ // Publish event to subscriber
133
+ sendWebsiteEvent: (e) => {
134
+ _(e.eventName, e.eventProps);
135
+ },
136
+ // Open post or pre purchase maker
137
+ sendWebsiteMakerOpenEvent: (e) => {
138
+ _(E.WEBSITE_MAKER_OPEN, {
139
+ location: e
140
+ });
141
+ },
142
+ // Upsell
143
+ sendUpsellOpenEvent: (e) => {
144
+ _(E.WEBSITE_MAKER_UPSELL_MODAL, {
145
+ ...n.value.upsellOpenEventProps,
146
+ continuation: null,
147
+ cta_location: e
148
+ });
149
+ },
150
+ sendDomainUpsellOpenEvent: () => {
151
+ _(E.WEBSITE_MAKER_DOMAIN_UPSELL_MODAL, {
152
+ ...n.value.domainUpsellOpenEventProps,
153
+ continuation: null
154
+ });
155
+ },
156
+ sendDomainUpsellContinuationEvent: (e) => {
157
+ _(E.WEBSITE_MAKER_DOMAIN_UPSELL_MODAL, {
158
+ ...n.value.domainUpsellOpenEventProps,
159
+ continuation: e
160
+ });
161
+ },
162
+ sendUpsellContinuationEvent: (e) => {
163
+ _(E.WEBSITE_MAKER_UPSELL_MODAL, {
164
+ ...n.value.upsellOpenEventProps,
165
+ continuation: e
166
+ });
167
+ },
168
+ // Publish
169
+ sendPublishOpenEvent: () => {
170
+ _(E.WEBSITE_MAKER_PUBLISH_MODAL, {
171
+ ...n.value.publishOpenEventProps,
172
+ continuation: null
173
+ });
174
+ },
175
+ appendPublishBridgeState: (e) => {
176
+ n.value.publishOpenEventProps = {
177
+ ...n.value.publishOpenEventProps,
178
+ ...e
179
+ };
180
+ },
181
+ sendPublishContinuationEvent: (e, t) => {
182
+ _(E.WEBSITE_MAKER_PUBLISH_MODAL, {
183
+ ...n.value.publishOpenEventProps,
184
+ continuation: e,
185
+ domain: t
186
+ });
187
+ },
188
+ // Maker Page Management
189
+ sendWebsiteManageAddPageEvent: (e, t) => {
190
+ _(E.WEBSITE_MAKER_ADD_PAGE, {
191
+ page_name: e,
192
+ is_sub_page: !!t
193
+ });
194
+ },
195
+ sendWebsiteManageRemovePageEvent: (e, t) => {
196
+ _(E.WEBSITE_MAKER_REMOVE_PAGE, {
197
+ page_name: e,
198
+ is_sub_page: !!t
199
+ });
200
+ },
201
+ sendWebsiteManageReorderPageEvent: (e) => {
202
+ _(E.WEBSITE_MAKER_REORDER_PAGE, {
203
+ page_name: e
204
+ });
205
+ },
206
+ sendPublishOptionsForFreeEvent: () => {
207
+ _(E.WEBSITE_MAKER_PUBLISH_UPSELL_OPTION_MODAL, {
208
+ upsell_option_continuation: T.FREEMIUM
209
+ });
210
+ },
211
+ sendPublishOptionsForPremiumEvent: () => {
212
+ _(E.WEBSITE_MAKER_PUBLISH_UPSELL_OPTION_MODAL, {
213
+ upsell_option_continuation: T.PREMIUM
214
+ });
215
+ },
216
+ sendPublishOptionsForExitEvent: () => {
217
+ _(E.WEBSITE_MAKER_PUBLISH_UPSELL_OPTION_MODAL, {
218
+ upsell_option_continuation: T.EXIT
219
+ });
220
+ },
221
+ // Template sidebar events
222
+ sendTemplateSearchEvent: (e) => {
223
+ _(E.WEBSITE_MAKER_TEMPLATE_SEARCH, {
224
+ search_string: e
225
+ });
226
+ },
227
+ sendTemplateSelectEvent: (e) => {
228
+ _(E.WEBSITE_MAKER_TEMPLATE_SELECT, {
229
+ template_id: e
230
+ });
231
+ },
232
+ sendTemplateCategorySelectEvent: (e) => {
233
+ _(E.WEBSITE_MAKER_TEMPLATE_CATEGORY_SELECT, {
234
+ category: e
235
+ });
236
+ },
237
+ sendSidebarCategoryClickedEvent: (e) => {
238
+ _(E.WEBSITE_SIDEBAR_TAB_CLICKED, {
239
+ sidebar_category_tab_name: e
240
+ });
241
+ },
242
+ sendAddContentEvent: (e, t, s, a = S.USER_TRIGGERED) => {
243
+ _(E.WEBSITE_MAKER_ADD_CONTENT, {
244
+ content_type: e,
245
+ trigger_type: a,
246
+ select_location: t,
247
+ content_category: s
248
+ });
249
+ },
250
+ sendRemoveContentEvent: (e, t, s, a = S.USER_TRIGGERED) => {
251
+ _(E.WEBSITE_MAKER_REMOVE_CONTENT, {
252
+ content_type: e,
253
+ trigger_type: a,
254
+ select_location: t,
255
+ content_category: s
256
+ });
257
+ },
258
+ sendAddContentContinuationEvent: (e) => {
259
+ _(E.WEBSITE_MAKER_ADD_CONTENT, {
260
+ continuation: e
261
+ });
262
+ },
263
+ sendUpsellOfferEvent: (e) => {
264
+ _(E.WEBSITE_MAKER_UPSELL_OFFER, {
265
+ upsellType: e
266
+ });
267
+ },
268
+ sendUpsellOfferActionEvent: (e, t) => {
269
+ _(E.WEBSITE_MAKER_UPSELL_ACTION, {
270
+ upsellType: e,
271
+ action: t
272
+ });
273
+ },
274
+ sendAiSendPromptEvent: (e) => {
275
+ _(E.WEBSITE_MAKER_AI_SEND_PROMPT, {
276
+ cta_location: e
277
+ });
278
+ },
279
+ sendAiStopGenerationEvent: (e) => {
280
+ _(E.WEBSITE_MAKER_AI_STOP_GENERATION, {
281
+ cta_location: e
282
+ });
283
+ },
284
+ ...{
285
+ sendGettyVideoAddEvent: () => {
286
+ _(E.WEBSITE_MAKER_GETTY_VIDEO, {
287
+ action: "add"
288
+ });
289
+ },
290
+ sendGettyVideoReplaceEvent: () => {
291
+ _(E.WEBSITE_MAKER_GETTY_VIDEO, {
292
+ action: "replace"
293
+ });
294
+ },
295
+ sendGettyVideoRemoveEvent: () => {
296
+ _(E.WEBSITE_MAKER_GETTY_VIDEO, {
297
+ action: "remove"
298
+ });
299
+ }
300
+ },
301
+ ...{
302
+ sendSaveContactEvent: () => {
303
+ _(
304
+ E.WEBSITE_SAVE_CONTACT,
305
+ {},
306
+ !1,
307
+ "published_website"
308
+ );
309
+ },
310
+ sendStartForFreeEvent: () => {
311
+ _(
312
+ E.WEBSITE_START_FOR_FREE,
313
+ {},
314
+ !1,
315
+ "published_website"
316
+ );
317
+ },
318
+ sendFooterLinkClickEvent: (e) => {
319
+ _(
320
+ E.WEBSITE_FOOTER_LINK_CLICK,
321
+ { link_type: e },
322
+ !1,
323
+ "published_website"
324
+ );
325
+ }
326
+ },
327
+ sendShippingToggleEvent: (e) => {
328
+ _(E.WEBSITE_MAKER_SHIPPING_TOGGLE, {
329
+ is_enabled: e
330
+ });
331
+ },
332
+ // Undo / Redo (BP-5506)
333
+ sendUndoEvent: (e) => {
334
+ _(E.WEBSITE_MAKER_UNDO, e);
335
+ },
336
+ sendRedoEvent: (e) => {
337
+ _(E.WEBSITE_MAKER_REDO, e);
338
+ },
339
+ sendHistoryCappedEvent: (e) => {
340
+ _(E.WEBSITE_MAKER_HISTORY_CAPPED, e);
341
+ },
342
+ sendHistoryOversizedEvent: (e) => {
343
+ _(E.WEBSITE_MAKER_HISTORY_OVERSIZED, e);
344
+ }
345
+ });
346
+ export {
347
+ O as A,
348
+ E,
349
+ M as G,
350
+ d as P,
351
+ R as S,
352
+ S as T,
353
+ p as U,
354
+ T as a,
355
+ P as u
356
+ };
@@ -2,6 +2,8 @@ import { type BrandPageModel, type BrandPageType, type NavModel, type PageStyles
2
2
  import type { ContentType } from '../brand-page/models/content.model';
3
3
  import { type AssetEntry } from './build-asset-manifest';
4
4
  type MinifiedFooterSocialLink = {
5
+ position: number;
6
+ id?: string;
5
7
  imageUrl: string;
6
8
  url: string;
7
9
  };