@designcrowd/library.brand-page 5.19.1-id-based-items-2 → 5.19.1

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 (52) hide show
  1. package/lib/src/{CreatedOnBrandCrowd-de-de-Ruu5Az32.js → CreatedOnBrandCrowd-de-de-BmeMc9oz.js} +1 -1
  2. package/lib/src/{CreatedOnBrandCrowd-en-us-DGUJtvld.js → CreatedOnBrandCrowd-en-us-CQNdm_6P.js} +1 -1
  3. package/lib/src/{CreatedOnBrandCrowd-es-es-Dg-1uOfV.js → CreatedOnBrandCrowd-es-es-BrmHWeAM.js} +1 -1
  4. package/lib/src/{CreatedOnBrandCrowd-fr-fr-CRKraZl8.js → CreatedOnBrandCrowd-fr-ca-CaIyjTXl.js} +1 -1
  5. package/lib/src/{CreatedOnBrandCrowd-fr-ca-CRKraZl8.js → CreatedOnBrandCrowd-fr-fr-CaIyjTXl.js} +1 -1
  6. package/lib/src/{CreatedOnBrandCrowd-pt-pt-bZ9VlEAu.js → CreatedOnBrandCrowd-pt-br-BClE0Nd9.js} +1 -1
  7. package/lib/src/{CreatedOnBrandCrowd-pt-br-bZ9VlEAu.js → CreatedOnBrandCrowd-pt-pt-BClE0Nd9.js} +1 -1
  8. package/lib/src/{CreatedOnDcom-de-de-CJYfwZx8.js → CreatedOnDcom-de-de-CkrdlPqK.js} +1 -1
  9. package/lib/src/{CreatedOnDcom-en-us-rzA1lVxH.js → CreatedOnDcom-en-us-D33J9qky.js} +1 -1
  10. package/lib/src/{CreatedOnDcom-es-es-CNwGPjik.js → CreatedOnDcom-es-es-BsmInngw.js} +1 -1
  11. package/lib/src/{CreatedOnDcom-fr-ca-DKw7OGIz.js → CreatedOnDcom-fr-ca-DOXlsRea.js} +1 -1
  12. package/lib/src/{CreatedOnDcom-fr-fr-WzOEaAZG.js → CreatedOnDcom-fr-fr-SfFYLtyn.js} +1 -1
  13. package/lib/src/{CreatedOnDcom-pt-br-DkualVhm.js → CreatedOnDcom-pt-br-DcWeuZUy.js} +1 -1
  14. package/lib/src/{CreatedOnDcom-pt-pt-w4Nnsdzq.js → CreatedOnDcom-pt-pt-DZsZZ4iX.js} +1 -1
  15. package/lib/src/brand-page/components/image-gallery/masonry/MasonryGallery.mixin.d.ts +1 -1
  16. package/lib/src/brand-page/models/index.d.ts +0 -12
  17. package/lib/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.js +0 -5
  18. package/lib/src/brand-page-maker/stores/ai-checkpoint/ai-checkpoint-store.d.ts +0 -18
  19. package/lib/src/index.mjs +1 -1
  20. package/lib/src/{lib-Dy7MYyqz.js → lib-C5vGkjfs.js} +17577 -17407
  21. package/lib/src/metadata-builder/builders/footer-builder.js +44 -34
  22. package/lib/src/metadata-builder/builders/section-builders/image-gallery-builder.js +68 -57
  23. package/lib/src/metadata-builder/builders/section-builders/images-section-builder.js +93 -58
  24. package/lib/src/metadata-builder/builders/section-builders/shapes-section-builder.js +99 -66
  25. package/lib/src/metadata-builder/builders/section-builders/social-links-builder.js +17 -57
  26. package/lib/src/metadata-builder/builders/section-builders/testimonial-section-builder.js +85 -51
  27. package/lib/src/metadata-builder/builders/section-builders/text-section-builder.js +74 -49
  28. package/lib/src/metadata-builder/parsers/ai-toolcall-parser.d.ts +4 -13
  29. package/lib/src/metadata-builder/parsers/section-tool-arguments.d.ts +48 -66
  30. package/lib/src/shared/page-settings/components/page-settings/PageSettings.mixin.d.ts +0 -2
  31. package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.d.ts +0 -2
  32. package/lib/src/utils/minify-brand-page-metadata.d.ts +0 -2
  33. package/lib/src/utils/minify-brand-page-metadata.js +1 -8
  34. package/package.json +1 -1
  35. package/src/brand-page/components/image-gallery/masonry/MasonryGallery.mixin.ts +1 -2
  36. package/src/brand-page/models/index.ts +0 -12
  37. package/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.ts +0 -6
  38. package/src/metadata-builder/builders/footer-builder.test.ts +0 -298
  39. package/src/metadata-builder/builders/footer-builder.ts +65 -56
  40. package/src/metadata-builder/builders/section-builders/image-gallery-builder.ts +88 -62
  41. package/src/metadata-builder/builders/section-builders/images-section-builder.ts +129 -66
  42. package/src/metadata-builder/builders/section-builders/shapes-section-builder.ts +160 -105
  43. package/src/metadata-builder/builders/section-builders/social-links-builder.ts +20 -65
  44. package/src/metadata-builder/builders/section-builders/testimonial-section-builder.ts +146 -83
  45. package/src/metadata-builder/builders/section-builders/text-section-builder.ts +122 -70
  46. package/src/metadata-builder/parsers/ai-toolcall-parser.ts +4 -13
  47. package/src/metadata-builder/parsers/section-tool-arguments.ts +48 -66
  48. package/src/utils/minify-brand-page-metadata.ts +2 -14
  49. package/lib/src/metadata-builder/builders/item-id-utils.d.ts +0 -54
  50. package/lib/src/metadata-builder/builders/item-id-utils.js +0 -96
  51. package/src/metadata-builder/builders/item-id-utils.test.ts +0 -184
  52. package/src/metadata-builder/builders/item-id-utils.ts +0 -117
@@ -92,15 +92,10 @@ export interface ProfileSectionArguments {
92
92
  background_color?: string | null;
93
93
  }
94
94
  export interface TextSectionItem {
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;
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;
104
99
  text?: RichTextField;
105
100
  text_style?: TextStyleArguments;
106
101
  }
@@ -113,8 +108,10 @@ export interface TextSectionArguments {
113
108
  /** Multiple text items (BrandSite) */
114
109
  items?: TextSectionItem[];
115
110
  _replace_items?: boolean;
116
- /** Stable ids of items to remove. Order-independent (no index shifting). */
117
- _remove_item_ids?: string[];
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[];
118
115
  background_color?: string | null;
119
116
  }
120
117
  export interface ImageSectionArguments {
@@ -122,15 +119,10 @@ export interface ImageSectionArguments {
122
119
  image_title?: string;
123
120
  }
124
121
  export interface ImageGalleryItem {
125
- /** Stable id of the existing item to update or move. Omit to ADD a new item. */
126
- item_id?: string;
127
- /**
128
- * Id of an existing item to position this item before (insert for new items,
129
- * move for existing ones). Use "__end__" for the end of the list. Omit to
130
- * leave an existing item in place / append a new item. Mirrors the
131
- * section-level move_before_content_id.
132
- */
133
- move_before_item_id?: string;
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;
134
126
  image_url?: string;
135
127
  caption?: string;
136
128
  }
@@ -139,8 +131,10 @@ export interface ImageGallerySectionArguments {
139
131
  gallery_type?: 'grid' | 'carousel' | 'masonry';
140
132
  is_full_width?: boolean;
141
133
  _replace_items?: boolean;
142
- /** Stable ids of items to remove. Order-independent (no index shifting). */
143
- _remove_item_ids?: string[];
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
138
  }
145
139
  export interface GeneralLinkSectionArguments {
146
140
  title?: string;
@@ -195,15 +189,10 @@ export interface TiktokSectionArguments {
195
189
  url?: string;
196
190
  }
197
191
  export interface SocialLink {
198
- /** Stable id of the existing item to update or move. Omit to ADD a new item. */
199
- item_id?: string;
200
- /**
201
- * Id of an existing item to position this item before (insert for new items,
202
- * move for existing ones). Use "__end__" for the end of the list. Omit to
203
- * leave an existing item in place / append a new item. Mirrors the
204
- * section-level move_before_content_id.
205
- */
206
- move_before_item_id?: string;
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;
207
196
  platform?: 'facebook' | 'x' | 'instagram' | 'youtube' | 'linkedin' | 'pinterest' | 'twitch' | 'tiktok';
208
197
  url?: string;
209
198
  }
@@ -215,8 +204,10 @@ export interface SocialLinksSectionArguments {
215
204
  /** Style for the icon container background (used when icon_style is 'square' or 'circle'). */
216
205
  icon_background_style?: TextStyleArguments;
217
206
  _replace_items?: boolean;
218
- /** Stable ids of items to remove. Order-independent (no index shifting). */
219
- _remove_item_ids?: string[];
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[];
220
211
  }
221
212
  export interface MailingListSectionArguments {
222
213
  title?: RichTextField;
@@ -277,15 +268,10 @@ export interface AboutSectionArguments {
277
268
  background_color?: string | null;
278
269
  }
279
270
  export interface ImagesSectionItem {
280
- /** Stable id of the existing item to update or move. Omit to ADD a new item. */
281
- item_id?: string;
282
- /**
283
- * Id of an existing item to position this item before (insert for new items,
284
- * move for existing ones). Use "__end__" for the end of the list. Omit to
285
- * leave an existing item in place / append a new item. Mirrors the
286
- * section-level move_before_content_id.
287
- */
288
- move_before_item_id?: string;
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;
289
275
  image_url?: string;
290
276
  heading?: string;
291
277
  text?: string;
@@ -297,8 +283,10 @@ export interface ImagesSectionArguments {
297
283
  items?: ImagesSectionItem[];
298
284
  display_style?: 'left-aligned' | 'right-aligned' | 'centered' | 'media-only' | 'center-card-aligned-image' | 'alternate-image';
299
285
  _replace_items?: boolean;
300
- /** Stable ids of items to remove. Order-independent (no index shifting). */
301
- _remove_item_ids?: string[];
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[];
302
290
  title_style?: TextStyleArguments;
303
291
  description_style?: TextStyleArguments;
304
292
  heading_style?: TextStyleArguments;
@@ -310,15 +298,10 @@ export interface ImagesSectionArguments {
310
298
  card_style?: CardStyleArguments;
311
299
  }
312
300
  export interface TestimonialItem {
313
- /** Stable id of the existing item to update or move. Omit to ADD a new item. */
314
- item_id?: string;
315
- /**
316
- * Id of an existing item to position this item before (insert for new items,
317
- * move for existing ones). Use "__end__" for the end of the list. Omit to
318
- * leave an existing item in place / append a new item. Mirrors the
319
- * section-level move_before_content_id.
320
- */
321
- move_before_item_id?: string;
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;
322
305
  testimonial?: string;
323
306
  name?: string;
324
307
  position?: string;
@@ -331,8 +314,10 @@ export interface TestimonialSectionArguments {
331
314
  items?: TestimonialItem[];
332
315
  display_style?: 'centered' | 'big-image' | 'columns';
333
316
  _replace_items?: boolean;
334
- /** Stable ids of items to remove. Order-independent (no index shifting). */
335
- _remove_item_ids?: string[];
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[];
336
321
  title_style?: TextStyleArguments;
337
322
  testimonial_style?: TextStyleArguments;
338
323
  name_style?: TextStyleArguments;
@@ -341,15 +326,10 @@ export interface TestimonialSectionArguments {
341
326
  card_style?: CardStyleArguments;
342
327
  }
343
328
  export interface ShapesSectionItem {
344
- /** Stable id of the existing item to update or move. Omit to ADD a new item. */
345
- item_id?: string;
346
- /**
347
- * Id of an existing item to position this item before (insert for new items,
348
- * move for existing ones). Use "__end__" for the end of the list. Omit to
349
- * leave an existing item in place / append a new item. Mirrors the
350
- * section-level move_before_content_id.
351
- */
352
- move_before_item_id?: string;
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;
353
333
  icon_image_url?: string;
354
334
  shape_url?: string;
355
335
  color_theme?: string;
@@ -362,8 +342,10 @@ export interface ShapesSectionArguments {
362
342
  items?: ShapesSectionItem[];
363
343
  display_style?: 'left-aligned' | 'right-aligned' | 'centered' | 'media-only' | 'center-card-aligned-image' | 'alternate-image';
364
344
  _replace_items?: boolean;
365
- /** Stable ids of items to remove. Order-independent (no index shifting). */
366
- _remove_item_ids?: string[];
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[];
367
349
  title_style?: TextStyleArguments;
368
350
  description_style?: TextStyleArguments;
369
351
  heading_style?: TextStyleArguments;
@@ -2866,7 +2866,6 @@ declare const _default: import("vue").DefineComponent<{}, {
2866
2866
  logoImageBase64Url?: string | undefined;
2867
2867
  socialLinks: {
2868
2868
  url: string;
2869
- id?: string | undefined;
2870
2869
  imageUrl: string;
2871
2870
  size?: string | undefined;
2872
2871
  imageTitle: string;
@@ -3091,7 +3090,6 @@ declare const _default: import("vue").DefineComponent<{}, {
3091
3090
  logoImageBase64Url?: string | undefined;
3092
3091
  socialLinks: {
3093
3092
  url: string;
3094
- id?: string | undefined;
3095
3093
  imageUrl: string;
3096
3094
  size?: string | undefined;
3097
3095
  imageTitle: string;
@@ -2824,7 +2824,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
2824
2824
  logoImageBase64Url?: string | undefined;
2825
2825
  socialLinks: {
2826
2826
  url: string;
2827
- id?: string | undefined;
2828
2827
  imageUrl: string;
2829
2828
  size?: string | undefined;
2830
2829
  imageTitle: string;
@@ -3049,7 +3048,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
3049
3048
  logoImageBase64Url?: string | undefined;
3050
3049
  socialLinks: {
3051
3050
  url: string;
3052
- id?: string | undefined;
3053
3051
  imageUrl: string;
3054
3052
  size?: string | undefined;
3055
3053
  imageTitle: string;
@@ -2,8 +2,6 @@ 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;
7
5
  imageUrl: string;
8
6
  url: string;
9
7
  };
@@ -164,7 +164,6 @@ const minifyContent = (content, editor, assets) => {
164
164
  ...(Array.isArray(c.items) && {
165
165
  items: c.items.map((item, index) => ({
166
166
  position: index + 1,
167
- ...(item.id && { id: item.id }),
168
167
  ...st('name', item.name, editor),
169
168
  ...st('jobTitle', item.position, editor),
170
169
  ...st('testimonials', item.testimonials, editor),
@@ -192,7 +191,6 @@ const minifyContent = (content, editor, assets) => {
192
191
  ...(Array.isArray(c.items) && {
193
192
  items: c.items.map((item, index) => ({
194
193
  position: index + 1,
195
- ...(item.id && { id: item.id }),
196
194
  ...includeImageWithKey(item.imageUrl),
197
195
  ...st('title', item.title, editor),
198
196
  ...st('paragraph', item.paragraph, editor),
@@ -222,7 +220,6 @@ const minifyContent = (content, editor, assets) => {
222
220
  ...(Array.isArray(c.textItems) && {
223
221
  textItems: c.textItems.map((item, index) => ({
224
222
  position: index + 1,
225
- ...(item.id && { id: item.id }),
226
223
  ...st('text', item.text, editor),
227
224
  ...(includeStyle(item.textStyle) && { textStyle: item.textStyle }),
228
225
  })),
@@ -303,7 +300,6 @@ const minifyContent = (content, editor, assets) => {
303
300
  ...(Array.isArray(c.links) && {
304
301
  links: c.links.map((link, index) => ({
305
302
  position: index + 1,
306
- ...(link.id && { id: link.id }),
307
303
  ...(includeString(link.url) && { url: link.url }),
308
304
  ...includeImageWithKey(link.imageUrl),
309
305
  })),
@@ -343,7 +339,6 @@ const minifyContent = (content, editor, assets) => {
343
339
  ...(Array.isArray(c.images) && {
344
340
  images: c.images.map((img, index) => ({
345
341
  position: index + 1,
346
- ...(img.id && { id: img.id }),
347
342
  ...includeImageWithKey(img.imageUrl),
348
343
  ...st('imageTitle', img.imageTitle, editor),
349
344
  })),
@@ -384,9 +379,7 @@ const minifyFooter = (footer, logoAssetKey) => {
384
379
  logoImageWidth: footer.logoImageWidth || undefined,
385
380
  ...(logoAssetKey && { logoAssetKey }),
386
381
  socialLinks: footer.socialLinks?.length
387
- ? footer.socialLinks.map((l, index) => ({
388
- position: index + 1,
389
- ...(l.id && { id: l.id }),
382
+ ? footer.socialLinks.map((l) => ({
390
383
  imageUrl: l.imageUrl || '',
391
384
  url: l.url || '',
392
385
  }))
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.19.1-id-based-items-2",
4
+ "version": "5.19.1",
5
5
  "author": "Design.com Eng",
6
6
  "license": "UNLICENSED",
7
7
  "type": "module",
@@ -7,8 +7,7 @@ import type { ImageGalleryImageClickPayload } from '../models';
7
7
  import type { BrandPageContext, ImageGalleryItem } from '../../../models';
8
8
  import { getImageAltText } from '../../../utils';
9
9
 
10
- interface IndexedImageGalleryItem extends Omit<ImageGalleryItem, 'id'> {
11
- // Local rendering index, distinct from the stable string `id` on ImageItem.
10
+ interface IndexedImageGalleryItem extends ImageGalleryItem {
12
11
  id: number;
13
12
  }
14
13
 
@@ -234,13 +234,6 @@ export interface ImageContent extends Content {
234
234
  }
235
235
 
236
236
  export interface ImageItem {
237
- /**
238
- * Stable per-item identifier. Mirrors the section-level `Content.id` one
239
- * level deeper so AI tool calls can reference items by id rather than by
240
- * positional index. Optional for backward compatibility with persisted data
241
- * that predates item ids — backfilled on load (see ensureItemIds).
242
- */
243
- id?: string;
244
237
  imageUrl: string;
245
238
  imageTitle: string;
246
239
  width: number;
@@ -473,8 +466,6 @@ export interface ShapeItem extends ImageItem {
473
466
  }
474
467
 
475
468
  export interface TestimonialItems {
476
- /** Stable per-item identifier. See ImageItem.id. */
477
- id?: string;
478
469
  imageUrl: string;
479
470
  name: string;
480
471
  position: string;
@@ -492,8 +483,6 @@ export interface TestimonialItems {
492
483
  }
493
484
 
494
485
  export interface TextItem {
495
- /** Stable per-item identifier. See ImageItem.id. */
496
- id?: string;
497
486
  text: string;
498
487
  textStyle: TextStyleDeclaration;
499
488
 
@@ -563,7 +552,6 @@ export interface AboutSectionContent extends Content {
563
552
  }
564
553
 
565
554
  export interface LinksItem {
566
- id?: string;
567
555
  imageUrl: string;
568
556
  url: string;
569
557
  size?: string;
@@ -18,7 +18,6 @@ import {
18
18
  type PlanItem,
19
19
  } from '../../../clients/websocket-gateway-client';
20
20
  import { minifyBrandPageMetadata } from '../../../utils/minify-brand-page-metadata';
21
- import { ensureBrandPageItemIds } from '../../../metadata-builder/builders/item-id-utils';
22
21
  import { buildAssetManifest } from '../../../utils/build-asset-manifest';
23
22
  import { usePageNavigationStore } from '../../../shared/page-navigation/store/page-navigation-store';
24
23
  import { navigateToPageByPageId } from '../../routing';
@@ -257,11 +256,6 @@ export function useAiWebsiteBuilderChat(): UseAiChatResult {
257
256
 
258
257
  const buildMessagePayload = async (userPrompt: string) => {
259
258
  const brandPageData = brandPageMakerStore.brandPageData;
260
-
261
- // BP-5603: stamp stable uuid ids onto every nested item BEFORE minifying,
262
- // so the id the AI is shown (and returns as `item_id`) is the exact id the
263
- // executor matches when applying tool calls to this same live model.
264
- ensureBrandPageItemIds(brandPageData);
265
259
  const headerLogoDraftToken =
266
260
  brandPageData.pageHeaderDesktop?.logoImage?.logoDraftToken ??
267
261
  uiStore.logoDraftToken;