@designcrowd/library.brand-page 6.2.3 → 6.2.4
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.
- package/lib/src/{CreatedOnBrandCrowd-de-de-Cn0M-eZ1.js → CreatedOnBrandCrowd-de-de-ystrO2LW.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-en-us-DRLMSDZr.js → CreatedOnBrandCrowd-en-us-BU7hNzTZ.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-es-es-BglTu73U.js → CreatedOnBrandCrowd-es-es-CbuxneQ3.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-fr-fr-Bj6YZ_el.js → CreatedOnBrandCrowd-fr-ca-BuNUGOFr.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-fr-ca-Bj6YZ_el.js → CreatedOnBrandCrowd-fr-fr-BuNUGOFr.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-pt-pt-DEoOmQ1F.js → CreatedOnBrandCrowd-pt-br-BehL88mc.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-pt-br-DEoOmQ1F.js → CreatedOnBrandCrowd-pt-pt-BehL88mc.js} +1 -1
- package/lib/src/{CreatedOnDcom-de-de-BZ7gTt4Z.js → CreatedOnDcom-de-de-CMxjFZt9.js} +1 -1
- package/lib/src/{CreatedOnDcom-en-us-CD6Km5sH.js → CreatedOnDcom-en-us-2Cf6WBvx.js} +1 -1
- package/lib/src/{CreatedOnDcom-es-es-CNpZHvEl.js → CreatedOnDcom-es-es-CATNnbTq.js} +1 -1
- package/lib/src/{CreatedOnDcom-fr-ca-URS-ydJ1.js → CreatedOnDcom-fr-ca-DQtMfB-a.js} +1 -1
- package/lib/src/{CreatedOnDcom-fr-fr-D2AVeA3H.js → CreatedOnDcom-fr-fr-C1_FWOQf.js} +1 -1
- package/lib/src/{CreatedOnDcom-pt-br-C32frnFs.js → CreatedOnDcom-pt-br-C0QOCW0L.js} +1 -1
- package/lib/src/{CreatedOnDcom-pt-pt-TDYGjRXS.js → CreatedOnDcom-pt-pt-lHD-p6o4.js} +1 -1
- package/lib/src/brand-page/models/brand-page-context.model.d.ts +5 -0
- package/lib/src/brand-page/models/brand-page-context.model.js +8 -1
- package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.d.ts +21 -0
- package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.d.ts +21 -0
- package/lib/src/brand-page-maker/components/preview/Preview.mixin.d.ts +7 -0
- package/lib/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.mixin.d.ts +21 -0
- package/lib/src/brand-page-maker/components/seo-settings/SeoPageSettings.mixin.d.ts +22 -1
- package/lib/src/brand-page-maker/components/seo-settings/UrlSettings.mixin.d.ts +21 -0
- package/lib/src/brand-page-maker/components/seo-settings/UseExistingDomainModal.mixin.d.ts +21 -0
- package/lib/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.d.ts +21 -0
- package/lib/src/brand-page-maker/components/upgrade-to-premium-button/UpgradeToPremiumButton.mixin.d.ts +21 -0
- package/lib/src/brand-page-maker/composables/ai-chat/ai-builder-experiment.d.ts +10 -0
- package/lib/src/brand-page-maker/composables/ai-chat/ai-builder-experiment.js +11 -0
- package/lib/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.js +14 -4
- package/lib/src/brand-page-maker/stores/ai-thread/ai-website-builder-thread-store.d.ts +9 -2
- package/lib/src/brand-page-maker/stores/ai-thread/ai-website-builder-thread-store.js +20 -0
- package/lib/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.d.ts +21 -0
- package/lib/src/clients/ai-assistant-client.d.ts +1 -0
- package/lib/src/clients/ai-assistant-client.js +1 -0
- package/lib/src/index.mjs +224 -223
- package/lib/src/{lib-Dm9AuOJL.js → lib-CqHUUPUW.js} +21920 -21691
- package/lib/src/metadata-builder/builders/global-font-propagation.d.ts +41 -0
- package/lib/src/metadata-builder/builders/global-font-propagation.js +146 -0
- package/lib/src/metadata-builder/builders/global-styles-builder.js +29 -1
- package/lib/src/metadata-builder/builders/header-builder.js +8 -0
- package/lib/src/metadata-builder/builders/reorder-pages-builder.d.ts +13 -0
- package/lib/src/metadata-builder/builders/reorder-pages-builder.js +49 -0
- package/lib/src/metadata-builder/builders/section-builders/index.d.ts +1 -0
- package/lib/src/metadata-builder/builders/section-builders/index.js +1 -0
- package/lib/src/metadata-builder/builders/section-builders/support-me-builder.d.ts +8 -0
- package/lib/src/metadata-builder/builders/section-builders/support-me-builder.js +25 -0
- package/lib/src/metadata-builder/builders/section-builders/text-section-builder.js +5 -2
- package/lib/src/metadata-builder/builders/section-field-maps.js +15 -0
- package/lib/src/metadata-builder/builders/section-field-utils.d.ts +6 -1
- package/lib/src/metadata-builder/builders/section-field-utils.js +48 -12
- package/lib/src/metadata-builder/builders/section-rules/support-me.rules.d.ts +2 -0
- package/lib/src/metadata-builder/builders/section-rules/support-me.rules.js +17 -0
- package/lib/src/metadata-builder/helpers/rte.helpers.d.ts +9 -0
- package/lib/src/metadata-builder/helpers/rte.helpers.js +60 -1
- package/lib/src/metadata-builder/metadata-executor.js +3 -1
- package/lib/src/metadata-builder/models.d.ts +2 -0
- package/lib/src/metadata-builder/models.js +2 -0
- package/lib/src/metadata-builder/parsers/ai-toolcall-parser.d.ts +1 -0
- package/lib/src/metadata-builder/parsers/ai-toolcall-parser.js +4 -0
- package/lib/src/metadata-builder/parsers/section-tool-arguments.d.ts +14 -2
- package/lib/src/shared/content-settings/components/GenericTextInput.mixin.d.ts +1 -1
- package/lib/src/shared/content-settings/components/email-field/EmailField.mixin.d.ts +1 -1
- package/lib/src/shared/content-settings/components/payment-config-field/PaymentConfigField.mixin.d.ts +21 -0
- package/lib/src/shared/content-settings/components/tel-field/TelField.mixin.d.ts +1 -1
- package/lib/src/shared/content-settings/components/text-field/TextField.mixin.d.ts +1 -1
- package/lib/src/shared/content-settings/components/textarea-field/TextareaField.mixin.d.ts +1 -1
- package/lib/src/shared/content-settings/components/url-field/UrlField.mixin.d.ts +1 -1
- package/lib/src/shared/content-settings/components/youtube-video-field/YoutubeVideoField.mixin.d.ts +1 -1
- package/lib/src/shared/logo-settings/components/LogoSettings.mixin.d.ts +21 -0
- package/lib/src/shared/page-settings/components/delete-page-modal/DeletePageModal.mixin.d.ts +1 -1
- package/lib/src/shared/page-settings/components/page-settings/PageSettings.mixin.d.ts +21 -0
- package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.d.ts +21 -0
- package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.d.ts +28 -0
- package/lib/src/shared/side-bar/components/SideBar.mixin.d.ts +21 -0
- package/lib/src/shared/style-settings/button-style-preset.d.ts +12 -0
- package/lib/src/shared/style-settings/button-style-preset.js +39 -0
- package/lib/src/shared/style-settings/components/StyleSettings.mixin.d.ts +21 -0
- package/lib/src/shared/style-settings/store/style-settings-store.js +6 -32
- package/lib/src/utils/minify-brand-page-metadata.d.ts +9 -0
- package/lib/src/utils/minify-brand-page-metadata.js +23 -1
- package/package.json +1 -12
- package/src/brand-page/models/brand-page-context.model.ts +14 -1
- package/src/brand-page-maker/components/ai-website-builder/AiWebsiteBuilder.vue +1 -1
- package/src/brand-page-maker/composables/ai-chat/ai-builder-experiment.test.ts +82 -0
- package/src/brand-page-maker/composables/ai-chat/ai-builder-experiment.ts +19 -0
- package/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.ts +18 -4
- package/src/brand-page-maker/stores/ai-thread/ai-website-builder-thread-store.ts +30 -0
- package/src/clients/ai-assistant-client.ts +1 -0
- package/src/metadata-builder/builders/global-font-propagation.test.ts +401 -0
- package/src/metadata-builder/builders/global-font-propagation.ts +238 -0
- package/src/metadata-builder/builders/global-styles-builder.test.ts +107 -0
- package/src/metadata-builder/builders/global-styles-builder.ts +38 -1
- package/src/metadata-builder/builders/header-builder.test.ts +45 -0
- package/src/metadata-builder/builders/header-builder.ts +20 -0
- package/src/metadata-builder/builders/reorder-pages-builder.ts +80 -0
- package/src/metadata-builder/builders/section-builders/index.ts +1 -0
- package/src/metadata-builder/builders/section-builders/support-me-builder.test.ts +177 -0
- package/src/metadata-builder/builders/section-builders/support-me-builder.ts +43 -0
- package/src/metadata-builder/builders/section-builders/text-section-builder.ts +5 -2
- package/src/metadata-builder/builders/section-field-maps.ts +18 -0
- package/src/metadata-builder/builders/section-field-utils.test.ts +83 -0
- package/src/metadata-builder/builders/section-field-utils.ts +69 -18
- package/src/metadata-builder/builders/section-rules/support-me.rules.ts +39 -0
- package/src/metadata-builder/helpers/rte.helpers.ts +82 -1
- package/src/metadata-builder/metadata-executor.ts +3 -0
- package/src/metadata-builder/models.ts +2 -0
- package/src/metadata-builder/parsers/ai-toolcall-parser.ts +4 -0
- package/src/metadata-builder/parsers/section-tool-arguments.ts +14 -1
- package/src/shared/style-settings/button-style-preset.test.ts +67 -0
- package/src/shared/style-settings/button-style-preset.ts +56 -0
- package/src/shared/style-settings/store/style-settings-store.ts +9 -38
- package/src/utils/minify-brand-page-metadata.test.ts +166 -1
- package/src/utils/minify-brand-page-metadata.ts +31 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { describe, test, expect } from 'vitest';
|
|
1
|
+
import { describe, it, test, expect } from 'vitest';
|
|
2
2
|
import { BRAND_SITE } from '@brand-page-maker/components/brand-page-maker/__fixtures__';
|
|
3
3
|
import { BrandPageModel, PageHeaderDesktop } from '@brand-page';
|
|
4
4
|
import { minifyBrandPageMetadata } from './minify-brand-page-metadata';
|
|
@@ -71,6 +71,64 @@ describe('minifyBrandPageMetadata — header backgroundOpacity (BP-5851)', () =>
|
|
|
71
71
|
});
|
|
72
72
|
});
|
|
73
73
|
|
|
74
|
+
/**
|
|
75
|
+
* The AI builder can now create/update `support-me` sections, so the minified
|
|
76
|
+
* model it reads on update must surface the fields it can edit — otherwise it
|
|
77
|
+
* can't see the current `displayStyle` / `successMessage` when deciding what to
|
|
78
|
+
* change. `request-payment` (not AI-editable) must keep its original shape.
|
|
79
|
+
*/
|
|
80
|
+
|
|
81
|
+
const makeModel = (contents: unknown[]): BrandPageModel =>
|
|
82
|
+
({
|
|
83
|
+
brandPageType: 'brandSite',
|
|
84
|
+
v: 1,
|
|
85
|
+
styles: {},
|
|
86
|
+
nav: { routes: [{ pageId: 'page-1', pageSlug: 'home' }] },
|
|
87
|
+
pages: [{ id: 'page-1', title: 'Home', contents }],
|
|
88
|
+
}) as unknown as BrandPageModel;
|
|
89
|
+
|
|
90
|
+
const supportMe = {
|
|
91
|
+
id: 'sm-1',
|
|
92
|
+
type: 'support-me',
|
|
93
|
+
title: 'Buy me a coffee',
|
|
94
|
+
description: 'Support my work',
|
|
95
|
+
successMessage: 'Thanks so much!',
|
|
96
|
+
displayStyle: 'collapsed',
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
const requestPayment = {
|
|
100
|
+
id: 'rp-1',
|
|
101
|
+
type: 'request-payment',
|
|
102
|
+
title: 'Pay now',
|
|
103
|
+
description: 'Invoice',
|
|
104
|
+
successMessage: 'Paid',
|
|
105
|
+
displayStyle: 'preview',
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
describe('minifyBrandPageMetadata — support-me', () => {
|
|
109
|
+
it('surfaces title, description, successMessage and displayStyle', () => {
|
|
110
|
+
const out = minifyBrandPageMetadata(makeModel([supportMe]));
|
|
111
|
+
const minified = out.pages[0].contents[0];
|
|
112
|
+
|
|
113
|
+
expect(minified.type).toBe('support-me');
|
|
114
|
+
expect(minified.title).toBe('Buy me a coffee');
|
|
115
|
+
expect(minified.description).toBe('Support my work');
|
|
116
|
+
expect(minified.successMessage).toBe('Thanks so much!');
|
|
117
|
+
expect(minified.displayStyle).toBe('collapsed');
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
it('leaves request-payment shape unchanged (no successMessage / displayStyle)', () => {
|
|
121
|
+
const out = minifyBrandPageMetadata(makeModel([requestPayment]));
|
|
122
|
+
const minified = out.pages[0].contents[0];
|
|
123
|
+
|
|
124
|
+
expect(minified.type).toBe('request-payment');
|
|
125
|
+
expect(minified.title).toBe('Pay now');
|
|
126
|
+
expect(minified.description).toBe('Invoice');
|
|
127
|
+
expect(minified.successMessage).toBeUndefined();
|
|
128
|
+
expect(minified.displayStyle).toBeUndefined();
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
|
|
74
132
|
/**
|
|
75
133
|
* BP-5886 — the outbound half of the AI colour bridge (review blocker B8).
|
|
76
134
|
*
|
|
@@ -169,3 +227,110 @@ describe('minifyBrandPageMetadata — palette resolution', () => {
|
|
|
169
227
|
expect(sut.styles.colors).toHaveLength(3);
|
|
170
228
|
});
|
|
171
229
|
});
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* BP-6081: the AI reads colours as values and floors text against the band it
|
|
233
|
+
* sits on. The footer shipped with no colours at all and a text section's band
|
|
234
|
+
* lives on the flat `backgroundColor` key, so both bands were invisible to it.
|
|
235
|
+
*/
|
|
236
|
+
describe('minifyBrandPageMetadata — bands the AI must see (BP-6081)', () => {
|
|
237
|
+
const withFooter = (footer: Record<string, unknown>): BrandPageModel =>
|
|
238
|
+
({
|
|
239
|
+
...makeModel([]),
|
|
240
|
+
pageFooterDesktop: footer,
|
|
241
|
+
pageFooterMobile: footer,
|
|
242
|
+
}) as unknown as BrandPageModel;
|
|
243
|
+
|
|
244
|
+
it('surfaces the footer band, copyright ink and icon fill', () => {
|
|
245
|
+
const out = minifyBrandPageMetadata(
|
|
246
|
+
withFooter({
|
|
247
|
+
displayStyle: 'centered-menu',
|
|
248
|
+
copyrightText: '© 2026',
|
|
249
|
+
backgroundStyle: { backgroundColor: '#24749c' },
|
|
250
|
+
copyrightStyle: { color: '#e4f0f5', fontSize: '1.1em' },
|
|
251
|
+
iconStyle: { fill: '#e4f0f5' },
|
|
252
|
+
}),
|
|
253
|
+
);
|
|
254
|
+
|
|
255
|
+
expect(out.footer?.desktop?.backgroundStyle).toEqual({
|
|
256
|
+
backgroundColor: '#24749c',
|
|
257
|
+
});
|
|
258
|
+
expect(out.footer?.desktop?.copyrightStyle).toEqual({ color: '#e4f0f5' });
|
|
259
|
+
expect(out.footer?.desktop?.iconStyle).toEqual({ fill: '#e4f0f5' });
|
|
260
|
+
expect(out.footer?.mobile?.backgroundStyle).toEqual({
|
|
261
|
+
backgroundColor: '#24749c',
|
|
262
|
+
});
|
|
263
|
+
});
|
|
264
|
+
|
|
265
|
+
it('omits footer colour keys that are absent or empty', () => {
|
|
266
|
+
const out = minifyBrandPageMetadata(
|
|
267
|
+
withFooter({
|
|
268
|
+
displayStyle: 'centered-menu',
|
|
269
|
+
backgroundStyle: { backgroundColor: '' },
|
|
270
|
+
}),
|
|
271
|
+
);
|
|
272
|
+
|
|
273
|
+
expect(out.footer?.desktop?.backgroundStyle).toBeUndefined();
|
|
274
|
+
expect(out.footer?.desktop?.copyrightStyle).toBeUndefined();
|
|
275
|
+
expect(out.footer?.desktop?.iconStyle).toBeUndefined();
|
|
276
|
+
});
|
|
277
|
+
|
|
278
|
+
it('surfaces a text section band stored as a flat backgroundColor object', () => {
|
|
279
|
+
const out = minifyBrandPageMetadata(
|
|
280
|
+
makeModel([
|
|
281
|
+
{
|
|
282
|
+
id: 't-1',
|
|
283
|
+
type: 'text',
|
|
284
|
+
text: 'Hours',
|
|
285
|
+
textItems: [],
|
|
286
|
+
backgroundColor: { backgroundColor: '#254250' },
|
|
287
|
+
},
|
|
288
|
+
]),
|
|
289
|
+
);
|
|
290
|
+
|
|
291
|
+
expect(out.pages[0].contents[0].backgroundStyle).toEqual({
|
|
292
|
+
backgroundColor: '#254250',
|
|
293
|
+
});
|
|
294
|
+
});
|
|
295
|
+
|
|
296
|
+
it('surfaces a text section band stored as a bare string', () => {
|
|
297
|
+
const out = minifyBrandPageMetadata(
|
|
298
|
+
makeModel([
|
|
299
|
+
{
|
|
300
|
+
id: 't-2',
|
|
301
|
+
type: 'text',
|
|
302
|
+
text: 'Hours',
|
|
303
|
+
textItems: [],
|
|
304
|
+
backgroundColor: '#254250',
|
|
305
|
+
},
|
|
306
|
+
]),
|
|
307
|
+
);
|
|
308
|
+
|
|
309
|
+
expect(out.pages[0].contents[0].backgroundStyle).toEqual({
|
|
310
|
+
backgroundColor: '#254250',
|
|
311
|
+
});
|
|
312
|
+
});
|
|
313
|
+
|
|
314
|
+
it('emits no band for a text section without one', () => {
|
|
315
|
+
const out = minifyBrandPageMetadata(
|
|
316
|
+
makeModel([{ id: 't-3', type: 'text', text: 'Hours', textItems: [] }]),
|
|
317
|
+
);
|
|
318
|
+
|
|
319
|
+
expect(out.pages[0].contents[0].backgroundStyle).toBeUndefined();
|
|
320
|
+
});
|
|
321
|
+
|
|
322
|
+
it('resolves a palette reference on the footer band to its value', () => {
|
|
323
|
+
const model = withFooter({
|
|
324
|
+
backgroundStyle: { backgroundColor: 'var(--palette-1)' },
|
|
325
|
+
});
|
|
326
|
+
|
|
327
|
+
(model as any).styles = {
|
|
328
|
+
colors: [{ id: 'palette-1', value: '#24749c', type: 'brand' }],
|
|
329
|
+
};
|
|
330
|
+
const out = minifyBrandPageMetadata(model);
|
|
331
|
+
|
|
332
|
+
expect(out.footer?.desktop?.backgroundStyle).toEqual({
|
|
333
|
+
backgroundColor: '#24749c',
|
|
334
|
+
});
|
|
335
|
+
});
|
|
336
|
+
});
|
|
@@ -35,6 +35,11 @@ type MinifiedFooter = {
|
|
|
35
35
|
logoImageWidth?: string;
|
|
36
36
|
logoAssetKey?: string;
|
|
37
37
|
socialLinks?: MinifiedFooterSocialLink[];
|
|
38
|
+
// BP-6081: the footer's colours, so the AI can judge and recolour the copyright
|
|
39
|
+
// line and icons against the band they sit on (the header already carries its bg).
|
|
40
|
+
backgroundStyle?: { backgroundColor?: string };
|
|
41
|
+
copyrightStyle?: { color?: string };
|
|
42
|
+
iconStyle?: { fill?: string };
|
|
38
43
|
};
|
|
39
44
|
|
|
40
45
|
type MinifiedHeader = {
|
|
@@ -364,7 +369,15 @@ const minifyContent = (
|
|
|
364
369
|
})),
|
|
365
370
|
}),
|
|
366
371
|
...(includeStyle(c.textStyle) && { textStyle: c.textStyle }),
|
|
367
|
-
|
|
372
|
+
// A text section keeps its band on the flat `backgroundColor` key — as a
|
|
373
|
+
// `{ backgroundColor }` object or a bare string — not on `backgroundStyle`,
|
|
374
|
+
// so the shared helper saw nothing and the AI never knew the band (BP-6081).
|
|
375
|
+
...includeBackgroundStyle(
|
|
376
|
+
c.backgroundStyle ??
|
|
377
|
+
(typeof c.backgroundColor === 'string'
|
|
378
|
+
? { backgroundColor: c.backgroundColor }
|
|
379
|
+
: c.backgroundColor),
|
|
380
|
+
),
|
|
368
381
|
};
|
|
369
382
|
|
|
370
383
|
case 'profile':
|
|
@@ -516,11 +529,19 @@ const minifyContent = (
|
|
|
516
529
|
return base;
|
|
517
530
|
|
|
518
531
|
case 'request-payment':
|
|
532
|
+
return {
|
|
533
|
+
...base,
|
|
534
|
+
...st('title', c.title, editor),
|
|
535
|
+
...st('description', c.description, editor),
|
|
536
|
+
};
|
|
537
|
+
|
|
519
538
|
case 'support-me':
|
|
520
539
|
return {
|
|
521
540
|
...base,
|
|
522
541
|
...st('title', c.title, editor),
|
|
523
542
|
...st('description', c.description, editor),
|
|
543
|
+
...st('successMessage', c.successMessage, editor),
|
|
544
|
+
...(includeString(c.displayStyle) && { displayStyle: c.displayStyle }),
|
|
524
545
|
};
|
|
525
546
|
|
|
526
547
|
default:
|
|
@@ -549,6 +570,15 @@ const minifyFooter = (
|
|
|
549
570
|
url: l.url || '',
|
|
550
571
|
}))
|
|
551
572
|
: undefined,
|
|
573
|
+
backgroundStyle: footer.backgroundStyle?.backgroundColor
|
|
574
|
+
? { backgroundColor: footer.backgroundStyle.backgroundColor as string }
|
|
575
|
+
: undefined,
|
|
576
|
+
copyrightStyle: footer.copyrightStyle?.color
|
|
577
|
+
? { color: footer.copyrightStyle.color }
|
|
578
|
+
: undefined,
|
|
579
|
+
iconStyle: (footer.iconStyle as { fill?: string } | undefined)?.fill
|
|
580
|
+
? { fill: (footer.iconStyle as { fill?: string }).fill as string }
|
|
581
|
+
: undefined,
|
|
552
582
|
};
|
|
553
583
|
};
|
|
554
584
|
|