@goldenhippo/builder-cart-schemas 0.1.0

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.
@@ -0,0 +1,3476 @@
1
+ // src/data/brand-config/sections/header-config.ts
2
+ var headerOptions = {
3
+ basic: {
4
+ name: "basicHeaderConfig",
5
+ showIf: "return options.get('headerType') === 'BASIC'",
6
+ friendlyName: "Basic Menu Config",
7
+ type: "object",
8
+ defaultCollapsed: true,
9
+ localized: false,
10
+ subFields: [
11
+ {
12
+ "@type": "@builder.io/core:Field",
13
+ name: "logoImage",
14
+ friendlyName: "Logo Image",
15
+ type: "file",
16
+ showTemplatePicker: true,
17
+ allowedFileTypes: ["jpeg", "png", "svg", "webp"],
18
+ required: false,
19
+ localized: true,
20
+ defaultCollapsed: true,
21
+ helperText: "Image displayed in the header"
22
+ },
23
+ {
24
+ "@type": "@builder.io/core:Field",
25
+ name: "mobileLinks",
26
+ friendlyName: "Mobile Links",
27
+ helperText: "Links to display in the mobile dropdown menu",
28
+ type: "list",
29
+ localized: true,
30
+ defaultCollapsed: true,
31
+ subFields: [
32
+ {
33
+ name: "title",
34
+ friendlyName: "Mobile Link Title",
35
+ helperText: "Title for the mobile link",
36
+ type: "text",
37
+ localized: true,
38
+ defaultCollapsed: true,
39
+ required: true
40
+ },
41
+ {
42
+ name: "href",
43
+ friendlyName: "Link URL",
44
+ helperText: "URL for the mobile link",
45
+ type: "url",
46
+ localized: false,
47
+ required: true,
48
+ defaultCollapsed: true
49
+ },
50
+ {
51
+ name: "newTab",
52
+ friendlyName: "New Tab",
53
+ helperText: "When true, this link will open in a new tab",
54
+ type: "boolean",
55
+ localized: false,
56
+ defaultCollapsed: true
57
+ },
58
+ {
59
+ name: "cssClasses",
60
+ friendlyName: "CSS Classes",
61
+ helperText: "Used for VWO targeting",
62
+ type: "Tags",
63
+ localized: false,
64
+ defaultCollapsed: true
65
+ }
66
+ ]
67
+ },
68
+ {
69
+ name: "desktopLinks",
70
+ friendlyName: "Desktop Links",
71
+ helperText: "Links to display in the desktop menu",
72
+ type: "list",
73
+ localized: true,
74
+ defaultCollapsed: true,
75
+ subFields: [
76
+ {
77
+ name: "title",
78
+ friendlyName: "Desktop Link Title",
79
+ helperText: "Title for the desktop link",
80
+ type: "text",
81
+ localized: true,
82
+ defaultCollapsed: true,
83
+ required: true
84
+ },
85
+ {
86
+ name: "href",
87
+ friendlyName: "Link URL",
88
+ helperText: "URL for the mobile link",
89
+ type: "url",
90
+ localized: false,
91
+ defaultCollapsed: true,
92
+ required: true
93
+ },
94
+ {
95
+ name: "newTab",
96
+ friendlyName: "New Tab",
97
+ helperText: "When true, this link will open in a new tab",
98
+ type: "boolean",
99
+ localized: false,
100
+ defaultCollapsed: true
101
+ },
102
+ {
103
+ name: "cssClasses",
104
+ friendlyName: "CSS Classes",
105
+ helperText: "Used for VWO targeting",
106
+ type: "Tags",
107
+ localized: false,
108
+ defaultCollapsed: true
109
+ }
110
+ ]
111
+ },
112
+ {
113
+ name: "ctas",
114
+ friendlyName: "Call To Action",
115
+ helperText: "Call to action button(s) to display",
116
+ type: "list",
117
+ localized: true,
118
+ defaultCollapsed: true,
119
+ subFields: [
120
+ {
121
+ name: "title",
122
+ friendlyName: "Desktop Link Title",
123
+ helperText: "Title for the desktop link",
124
+ type: "text",
125
+ localized: false,
126
+ defaultCollapsed: true,
127
+ required: true
128
+ },
129
+ {
130
+ name: "href",
131
+ friendlyName: "Link URL",
132
+ helperText: "URL for the mobile link",
133
+ type: "url",
134
+ localized: false,
135
+ defaultCollapsed: true,
136
+ required: true
137
+ },
138
+ {
139
+ name: "type",
140
+ friendlyName: "CTA Type",
141
+ helperText: "Select the type of CTA to display",
142
+ type: "select",
143
+ localized: false,
144
+ defaultCollapsed: true,
145
+ required: true,
146
+ defaultValue: "primary",
147
+ enum: [
148
+ "primary" /* PRIMARY */,
149
+ "secondary" /* SECONDARY */,
150
+ "outline" /* OUTLINE */,
151
+ "link" /* LINK */
152
+ ]
153
+ },
154
+ {
155
+ name: "newTab",
156
+ friendlyName: "New Tab",
157
+ helperText: "When true, this link will open in a new tab",
158
+ type: "boolean",
159
+ localized: false,
160
+ defaultCollapsed: true
161
+ },
162
+ {
163
+ name: "cssClasses",
164
+ friendlyName: "CSS Classes",
165
+ helperText: "Used for VWO targeting",
166
+ type: "Tags",
167
+ localized: false,
168
+ defaultCollapsed: true
169
+ },
170
+ {
171
+ name: "hideOnMobile",
172
+ friendlyName: "Hide on Mobile",
173
+ helperText: "Set to true to disable this CTA on mobile devices",
174
+ type: "boolean",
175
+ localized: false,
176
+ defaultCollapsed: true
177
+ }
178
+ ]
179
+ },
180
+ {
181
+ name: "myAccountGuest",
182
+ friendlyName: "MyAccount Menu Links - Guest",
183
+ helperText: "Links to show under the My Account menu when the user is logged out.",
184
+ type: "list",
185
+ localized: true,
186
+ defaultCollapsed: true,
187
+ subFields: [
188
+ {
189
+ name: "title",
190
+ friendlyName: "Desktop Link Title",
191
+ helperText: "Title for the desktop link",
192
+ type: "text",
193
+ localized: false,
194
+ defaultCollapsed: true,
195
+ required: true
196
+ },
197
+ {
198
+ name: "href",
199
+ friendlyName: "Link URL",
200
+ helperText: "URL for the mobile link",
201
+ type: "url",
202
+ localized: false,
203
+ defaultCollapsed: true,
204
+ required: true
205
+ },
206
+ {
207
+ name: "icon",
208
+ friendlyName: "Icon",
209
+ type: "file",
210
+ showTemplatePicker: true,
211
+ allowedFileTypes: ["jpeg", "png", "svg", "webp"],
212
+ required: false,
213
+ defaultCollapsed: true,
214
+ helperText: "Link icon"
215
+ },
216
+ {
217
+ name: "newTab",
218
+ friendlyName: "New Tab",
219
+ helperText: "When true, this link will open in a new tab",
220
+ type: "boolean",
221
+ localized: false,
222
+ defaultCollapsed: true
223
+ },
224
+ {
225
+ name: "cssClasses",
226
+ friendlyName: "CSS Classes",
227
+ helperText: "Used for VWO targeting",
228
+ type: "Tags",
229
+ localized: false,
230
+ defaultCollapsed: true
231
+ }
232
+ ]
233
+ },
234
+ {
235
+ name: "myAccountAuthorized",
236
+ friendlyName: "MyAccount Menu Links - Logged In",
237
+ helperText: "Links to show under the My Account menu when the user is logged in.",
238
+ type: "list",
239
+ localized: true,
240
+ defaultCollapsed: true,
241
+ subFields: [
242
+ {
243
+ name: "title",
244
+ friendlyName: "Desktop Link Title",
245
+ helperText: "Title for the desktop link",
246
+ type: "text",
247
+ localized: false,
248
+ defaultCollapsed: true,
249
+ required: true
250
+ },
251
+ {
252
+ name: "href",
253
+ friendlyName: "Link URL",
254
+ helperText: "URL for the mobile link",
255
+ type: "url",
256
+ localized: false,
257
+ defaultCollapsed: true,
258
+ required: true
259
+ },
260
+ {
261
+ name: "icon",
262
+ friendlyName: "Icon",
263
+ type: "file",
264
+ showTemplatePicker: true,
265
+ allowedFileTypes: ["jpeg", "png", "svg", "webp"],
266
+ required: false,
267
+ defaultCollapsed: true,
268
+ helperText: "Link icon"
269
+ },
270
+ {
271
+ name: "newTab",
272
+ friendlyName: "New Tab",
273
+ helperText: "When true, this link will open in a new tab",
274
+ type: "boolean",
275
+ localized: false,
276
+ defaultCollapsed: true
277
+ },
278
+ {
279
+ name: "cssClasses",
280
+ friendlyName: "CSS Classes",
281
+ helperText: "Used for VWO targeting",
282
+ type: "Tags",
283
+ localized: false,
284
+ defaultCollapsed: true
285
+ }
286
+ ]
287
+ },
288
+ {
289
+ name: "stickyHeader",
290
+ type: "object",
291
+ friendlyName: "Sticky Header Configuration",
292
+ defaultCollapsed: true,
293
+ localized: false,
294
+ subFields: [
295
+ {
296
+ name: "enabled",
297
+ type: "boolean",
298
+ friendlyName: "Enabled?",
299
+ defaultCollapsed: true,
300
+ localized: false
301
+ },
302
+ {
303
+ name: "backgroundColor",
304
+ type: "color",
305
+ friendlyName: "Background Color",
306
+ defaultCollapsed: true,
307
+ localized: false,
308
+ helperText: "The header background color at the top of the page. Leave blank for a transparent header"
309
+ },
310
+ {
311
+ name: "scrollBackgroundColor",
312
+ type: "color",
313
+ friendlyName: "Background Color - Scroll",
314
+ defaultCollapsed: true,
315
+ localized: false,
316
+ helperText: "The header background color while scrolling. Leave blank for a transparent header",
317
+ defaultValue: "#FFFFFF"
318
+ },
319
+ {
320
+ name: "scrollLogo",
321
+ friendlyName: "Scroll Logo",
322
+ type: "file",
323
+ showTemplatePicker: true,
324
+ allowedFileTypes: ["jpeg", "png", "svg", "webp"],
325
+ required: false,
326
+ localized: true,
327
+ defaultCollapsed: true,
328
+ helperText: "Image displayed in the header while scrolling. Leave blank to use the default header logo"
329
+ }
330
+ ]
331
+ },
332
+ {
333
+ name: "showLocaleSelection",
334
+ type: "boolean",
335
+ friendlyName: "Show Locale Selection?",
336
+ defaultCollapsed: true,
337
+ localized: false,
338
+ helperText: "Show Locale Selection"
339
+ }
340
+ ]
341
+ },
342
+ medium: {
343
+ "@type": "@builder.io/core:Field",
344
+ name: "mediumHeaderConfig",
345
+ friendlyName: "Medium Header Configuration",
346
+ type: "object",
347
+ showIf: "return options.get('headerType') === 'MEDIUM'",
348
+ defaultCollapsed: true,
349
+ localized: false,
350
+ subFields: [
351
+ {
352
+ "@type": "@builder.io/core:Field",
353
+ name: "wrapperID",
354
+ friendlyName: "Wrapper ID",
355
+ helperText: "ID for the medium header wrapper",
356
+ type: "text",
357
+ localized: false,
358
+ defaultValue: "header",
359
+ defaultCollapsed: true
360
+ },
361
+ {
362
+ "@type": "@builder.io/core:Field",
363
+ name: "wrapperClasses",
364
+ friendlyName: "Wrapper Classes",
365
+ helperText: "CSS classes for the medium header wrapper",
366
+ type: "text",
367
+ localized: false,
368
+ defaultCollapsed: true
369
+ },
370
+ {
371
+ "@type": "@builder.io/core:Field",
372
+ name: "showShippingMessage",
373
+ friendlyName: "Show Shipping Message",
374
+ helperText: "Display the free shipping message on the mega menu",
375
+ type: "boolean",
376
+ localized: true,
377
+ defaultCollapsed: true
378
+ },
379
+ {
380
+ "@type": "@builder.io/core:Field",
381
+ name: "mobileMenu",
382
+ friendlyName: "Mobile Menu",
383
+ helperText: "Mobile menu configuration for the medium header",
384
+ type: "object",
385
+ localized: false,
386
+ defaultCollapsed: true,
387
+ subFields: [
388
+ {
389
+ "@type": "@builder.io/core:Field",
390
+ name: "logo",
391
+ friendlyName: "Logo",
392
+ helperText: "Logo for the mobile header",
393
+ type: "file",
394
+ showTemplatePicker: true,
395
+ allowedFileTypes: ["jpeg", "png", "svg", "webp"],
396
+ localized: false,
397
+ defaultCollapsed: true
398
+ },
399
+ {
400
+ "@type": "@builder.io/core:Field",
401
+ name: "logoClasses",
402
+ friendlyName: "Logo Classes",
403
+ helperText: "CSS classes for the mobile logo",
404
+ type: "text",
405
+ localized: false,
406
+ defaultCollapsed: true
407
+ },
408
+ {
409
+ "@type": "@builder.io/core:Field",
410
+ name: "navClasses",
411
+ friendlyName: "Navigation Classes",
412
+ helperText: "CSS classes for the mobile navigation",
413
+ type: "text",
414
+ localized: false,
415
+ defaultCollapsed: true
416
+ },
417
+ {
418
+ "@type": "@builder.io/core:Field",
419
+ name: "dropDownWrapperClasses",
420
+ friendlyName: "Dropdown Wrapper Classes",
421
+ helperText: "CSS classes for the dropdown wrapper",
422
+ type: "text",
423
+ localized: false,
424
+ required: false,
425
+ defaultCollapsed: true
426
+ },
427
+ {
428
+ "@type": "@builder.io/core:Field",
429
+ name: "dropDownContent",
430
+ friendlyName: "Dropdown Content",
431
+ helperText: "Content to display in the dropdown",
432
+ type: "list",
433
+ localized: false,
434
+ required: false,
435
+ defaultCollapsed: true,
436
+ subFields: [
437
+ {
438
+ "@type": "@builder.io/core:Field",
439
+ name: "type",
440
+ friendlyName: "Dropdown Type",
441
+ helperText: "Select the type of dropdown content",
442
+ type: "select",
443
+ enum: [
444
+ "search" /* SEARCH */,
445
+ "links" /* LINKS */,
446
+ "accountLinks" /* ACCOUNT_LINKS */,
447
+ "html" /* HTML */,
448
+ "timedHtml" /* TIMED_HTML */
449
+ ],
450
+ defaultValue: "links",
451
+ localized: false,
452
+ defaultCollapsed: true
453
+ },
454
+ {
455
+ "@type": "@builder.io/core:Field",
456
+ name: "links",
457
+ friendlyName: "Links",
458
+ helperText: "Links for this dropdown",
459
+ type: "list",
460
+ localized: false,
461
+ defaultCollapsed: true,
462
+ subFields: [
463
+ {
464
+ "@type": "@builder.io/core:Field",
465
+ name: "itemClasses",
466
+ friendlyName: "Item Classes",
467
+ helperText: "CSS classes for the link item",
468
+ type: "text",
469
+ localized: false,
470
+ defaultCollapsed: true
471
+ },
472
+ {
473
+ "@type": "@builder.io/core:Field",
474
+ name: "loggedInOnly",
475
+ friendlyName: "Logged In Only",
476
+ helperText: "Display this link only when the user is logged in",
477
+ type: "boolean",
478
+ localized: false,
479
+ defaultCollapsed: true
480
+ },
481
+ {
482
+ "@type": "@builder.io/core:Field",
483
+ name: "loggedOutOnly",
484
+ friendlyName: "Logged Out Only",
485
+ helperText: "Display this link only when the user is logged out",
486
+ type: "boolean",
487
+ localized: false,
488
+ defaultCollapsed: true
489
+ },
490
+ {
491
+ "@type": "@builder.io/core:Field",
492
+ name: "text",
493
+ friendlyName: "Link Title",
494
+ helperText: "Title for the link",
495
+ type: "html",
496
+ localized: false,
497
+ defaultCollapsed: true
498
+ },
499
+ {
500
+ "@type": "@builder.io/core:Field",
501
+ name: "URL",
502
+ friendlyName: "URL",
503
+ helperText: "URL for the link",
504
+ type: "url",
505
+ localized: false,
506
+ defaultCollapsed: true
507
+ },
508
+ {
509
+ "@type": "@builder.io/core:Field",
510
+ name: "subLinksWrapperClasses",
511
+ friendlyName: "Sub Links Wrapper Classes",
512
+ helperText: "CSS classes for the sub-links wrapper",
513
+ type: "text",
514
+ localized: false,
515
+ defaultCollapsed: true
516
+ },
517
+ {
518
+ "@type": "@builder.io/core:Field",
519
+ name: "subLinks",
520
+ friendlyName: "Sub Links",
521
+ helperText: "Sub-links for this dropdown item",
522
+ type: "list",
523
+ localized: false,
524
+ defaultCollapsed: true,
525
+ subFields: [
526
+ {
527
+ "@type": "@builder.io/core:Field",
528
+ name: "text",
529
+ friendlyName: "Link Title",
530
+ helperText: "Title for the link",
531
+ type: "text",
532
+ localized: false,
533
+ defaultCollapsed: true
534
+ },
535
+ {
536
+ "@type": "@builder.io/core:Field",
537
+ name: "URL",
538
+ friendlyName: "Link Title",
539
+ helperText: "Title for the link",
540
+ type: "text",
541
+ localized: false,
542
+ defaultCollapsed: true
543
+ }
544
+ ]
545
+ }
546
+ ]
547
+ },
548
+ {
549
+ "@type": "@builder.io/core:Field",
550
+ name: "htmlContent",
551
+ friendlyName: "HTML Content",
552
+ helperText: "HTML content to display in the dropdown",
553
+ type: "html",
554
+ localized: false,
555
+ defaultCollapsed: true
556
+ },
557
+ {
558
+ "@type": "@builder.io/core:Field",
559
+ name: "inputs",
560
+ friendlyName: "Inputs",
561
+ helperText: "Inputs for the dropdown content",
562
+ type: "object",
563
+ localized: false,
564
+ required: true,
565
+ defaultCollapsed: true,
566
+ subFields: [
567
+ {
568
+ "@type": "@builder.io/core:Field",
569
+ name: "defaultHtml",
570
+ friendlyName: "Default HTML",
571
+ helperText: "Default HTML content that will be displayed",
572
+ type: "html",
573
+ localized: false,
574
+ defaultCollapsed: true
575
+ },
576
+ {
577
+ "@type": "@builder.io/core:Field",
578
+ name: "temporaryHtml",
579
+ friendlyName: "Temporary HTML",
580
+ helperText: "Temporary HTML content that will be displayed for a limited time",
581
+ type: "html",
582
+ localized: false,
583
+ defaultCollapsed: true
584
+ },
585
+ {
586
+ "@type": "@builder.io/core:Field",
587
+ name: "startTime",
588
+ friendlyName: "Start Time",
589
+ helperText: "Start time for the timed HTML content",
590
+ type: "timestamp",
591
+ localized: false,
592
+ defaultCollapsed: true
593
+ },
594
+ {
595
+ "@type": "@builder.io/core:Field",
596
+ name: "endTime",
597
+ friendlyName: "End Time",
598
+ helperText: "End time for the timed HTML content",
599
+ type: "timestamp",
600
+ localized: false,
601
+ defaultCollapsed: true
602
+ }
603
+ ]
604
+ }
605
+ ]
606
+ }
607
+ ]
608
+ },
609
+ {
610
+ "@type": "@builder.io/core:Field",
611
+ name: "desktopMenu",
612
+ friendlyName: "Desktop Menu",
613
+ helperText: "Desktop menu configuration for the medium header",
614
+ type: "object",
615
+ localized: false,
616
+ defaultCollapsed: true,
617
+ subFields: [
618
+ {
619
+ "@type": "@builder.io/core:Field",
620
+ name: "logo",
621
+ friendlyName: "Logo",
622
+ helperText: "Logo for the desktop header",
623
+ type: "file",
624
+ showTemplatePicker: true,
625
+ allowedFileTypes: ["jpeg", "png", "svg", "webp"],
626
+ localized: false,
627
+ defaultCollapsed: true
628
+ },
629
+ {
630
+ "@type": "@builder.io/core:Field",
631
+ name: "navClasses",
632
+ friendlyName: "Navigation Classes",
633
+ helperText: "CSS classes for the desktop navigation",
634
+ type: "text",
635
+ localized: false,
636
+ defaultCollapsed: true
637
+ },
638
+ {
639
+ "@type": "@builder.io/core:Field",
640
+ name: "content",
641
+ friendlyName: "Content",
642
+ helperText: "Content to display in the desktop header",
643
+ type: "list",
644
+ localized: false,
645
+ required: false,
646
+ defaultCollapsed: true,
647
+ subFields: [
648
+ {
649
+ "@type": "@builder.io/core:Field",
650
+ name: "type",
651
+ friendlyName: "Content Type",
652
+ helperText: "Select the type of content",
653
+ type: "select",
654
+ enum: [
655
+ "links" /* LINKS */,
656
+ "logo" /* LOGO */,
657
+ "accountLinks" /* ACCOUNT_LINKS */,
658
+ "cartCount" /* CART_COUNT */,
659
+ "html" /* HTML */
660
+ ],
661
+ defaultValue: "links",
662
+ localized: false,
663
+ defaultCollapsed: true
664
+ },
665
+ {
666
+ "@type": "@builder.io/core:Field",
667
+ name: "wrapperClasses",
668
+ friendlyName: "Wrapper Classes",
669
+ helperText: "CSS classes for the wrapper",
670
+ type: "text",
671
+ localized: false,
672
+ defaultCollapsed: true
673
+ },
674
+ {
675
+ "@type": "@builder.io/core:Field",
676
+ name: "links",
677
+ friendlyName: "Links",
678
+ helperText: "Links for the desktop header",
679
+ type: "list",
680
+ localized: false,
681
+ defaultCollapsed: true,
682
+ subFields: [
683
+ {
684
+ "@type": "@builder.io/core:Field",
685
+ name: "text",
686
+ friendlyName: "Link Text",
687
+ helperText: "Text for the link",
688
+ type: "html",
689
+ localized: false,
690
+ defaultCollapsed: true
691
+ },
692
+ {
693
+ "@type": "@builder.io/core:Field",
694
+ name: "URL",
695
+ friendlyName: "URL",
696
+ helperText: "URL for the link",
697
+ type: "url",
698
+ localized: false,
699
+ defaultCollapsed: true
700
+ },
701
+ {
702
+ "@type": "@builder.io/core:Field",
703
+ name: "loggedInOnly",
704
+ friendlyName: "Logged In Only",
705
+ helperText: "Display this link only when the user is logged in",
706
+ type: "boolean",
707
+ localized: false,
708
+ defaultCollapsed: true
709
+ },
710
+ {
711
+ "@type": "@builder.io/core:Field",
712
+ name: "loggedOutOnly",
713
+ friendlyName: "Logged Out Only",
714
+ helperText: "Display this link only when the user is logged out",
715
+ type: "boolean",
716
+ localized: false,
717
+ defaultCollapsed: true
718
+ },
719
+ {
720
+ "@type": "@builder.io/core:Field",
721
+ name: "dropdownWrapperClasses",
722
+ friendlyName: "Dropdown Wrapper Classes",
723
+ helperText: "CSS classes for the dropdown wrapper",
724
+ type: "text",
725
+ localized: false,
726
+ defaultCollapsed: true
727
+ },
728
+ {
729
+ "@type": "@builder.io/core:Field",
730
+ name: "dropdownItemClasses",
731
+ friendlyName: "Dropdown Item Classes",
732
+ helperText: "CSS classes for the dropdown item",
733
+ type: "text",
734
+ localized: false,
735
+ defaultCollapsed: true
736
+ },
737
+ {
738
+ "@type": "@builder.io/core:Field",
739
+ name: "subLinks",
740
+ friendlyName: "Sub Links",
741
+ helperText: "Sub-links for this header item",
742
+ type: "list",
743
+ localized: false,
744
+ defaultCollapsed: true,
745
+ subFields: [
746
+ {
747
+ "@type": "@builder.io/core:Field",
748
+ name: "columnHeaderTitle",
749
+ friendlyName: "Column Header Title",
750
+ helperText: "Title for the column header",
751
+ type: "text",
752
+ localized: false,
753
+ defaultCollapsed: true
754
+ },
755
+ {
756
+ "@type": "@builder.io/core:Field",
757
+ name: "columnContentType",
758
+ friendlyName: "Column Content Type",
759
+ helperText: "Select the type of content for the column",
760
+ type: "select",
761
+ enum: ["links", "html", "timedHtml"],
762
+ defaultValue: "links",
763
+ localized: false,
764
+ defaultCollapsed: true
765
+ },
766
+ {
767
+ "@type": "@builder.io/core:Field",
768
+ name: "links",
769
+ friendlyName: "Links",
770
+ helperText: "Links for the column",
771
+ type: "list",
772
+ localized: false,
773
+ defaultCollapsed: true,
774
+ subFields: [
775
+ {
776
+ "@type": "@builder.io/core:Field",
777
+ name: "text",
778
+ friendlyName: "Text",
779
+ helperText: "Text for the link",
780
+ type: "text",
781
+ localized: false,
782
+ defaultCollapsed: true
783
+ },
784
+ {
785
+ "@type": "@builder.io/core:Field",
786
+ name: "URL",
787
+ friendlyName: "URL",
788
+ helperText: "URL for the link",
789
+ type: "url",
790
+ localized: false,
791
+ defaultCollapsed: true
792
+ }
793
+ ]
794
+ },
795
+ {
796
+ "@type": "@builder.io/core:Field",
797
+ name: "content",
798
+ friendlyName: "Content",
799
+ helperText: "Content for the column",
800
+ type: "html",
801
+ localized: false,
802
+ defaultCollapsed: true
803
+ },
804
+ {
805
+ "@type": "@builder.io/core:Field",
806
+ name: "inputs",
807
+ friendlyName: "Inputs",
808
+ helperText: "Inputs for the dropdown content",
809
+ type: "object",
810
+ localized: false,
811
+ required: true,
812
+ defaultCollapsed: true,
813
+ subFields: [
814
+ {
815
+ "@type": "@builder.io/core:Field",
816
+ name: "defaultHtml",
817
+ friendlyName: "Default HTML",
818
+ helperText: "Default HTML content that will be displayed",
819
+ type: "html",
820
+ localized: false,
821
+ defaultCollapsed: true
822
+ },
823
+ {
824
+ "@type": "@builder.io/core:Field",
825
+ name: "temporaryHtml",
826
+ friendlyName: "Temporary HTML",
827
+ helperText: "Temporary HTML content that will be displayed for a limited time",
828
+ type: "html",
829
+ localized: false,
830
+ defaultCollapsed: true
831
+ },
832
+ {
833
+ "@type": "@builder.io/core:Field",
834
+ name: "startTime",
835
+ friendlyName: "Start Time",
836
+ helperText: "Start time for the timed HTML content",
837
+ type: "timestamp",
838
+ localized: false,
839
+ defaultCollapsed: true
840
+ },
841
+ {
842
+ "@type": "@builder.io/core:Field",
843
+ name: "endTime",
844
+ friendlyName: "End Time",
845
+ helperText: "End time for the timed HTML content",
846
+ type: "timestamp",
847
+ localized: false,
848
+ defaultCollapsed: true
849
+ }
850
+ ]
851
+ }
852
+ ]
853
+ }
854
+ ]
855
+ },
856
+ {
857
+ "@type": "@builder.io/core:Field",
858
+ name: "accountLinksConfig",
859
+ friendlyName: "Account Links Config",
860
+ helperText: "",
861
+ type: "object",
862
+ localized: false,
863
+ defaultCollapsed: true,
864
+ subFields: [
865
+ {
866
+ "@type": "@builder.io/core:Field",
867
+ name: "dropdownWrapperClasses",
868
+ friendlyName: "Dropdown Wrapper Classes",
869
+ helperText: "CSS classes for the dropdown wrapper",
870
+ type: "text",
871
+ localized: false,
872
+ defaultCollapsed: true
873
+ },
874
+ {
875
+ "@type": "@builder.io/core:Field",
876
+ name: "dropdownItemClasses",
877
+ friendlyName: "Dropdown Item Classes",
878
+ helperText: "CSS classes for the dropdown item",
879
+ type: "text",
880
+ localized: false,
881
+ defaultCollapsed: true
882
+ }
883
+ ]
884
+ },
885
+ {
886
+ "@type": "@builder.io/core:Field",
887
+ name: "htmlContent",
888
+ friendlyName: "HTML Content",
889
+ helperText: "HTML content to display in the header",
890
+ type: "html",
891
+ localized: false,
892
+ defaultCollapsed: true
893
+ }
894
+ ]
895
+ }
896
+ ]
897
+ },
898
+ {
899
+ "@type": "@builder.io/core:Field",
900
+ name: "bannersAboveHeader",
901
+ friendlyName: "Banners Above Header",
902
+ helperText: "Banners to display above the header",
903
+ type: "list",
904
+ localized: true,
905
+ defaultCollapsed: true,
906
+ subFields: [
907
+ {
908
+ "@type": "@builder.io/core:Field",
909
+ name: "wrapperClasses",
910
+ friendlyName: "Wrapper Classes",
911
+ helperText: "CSS classes for the banner wrapper",
912
+ type: "text",
913
+ localized: true,
914
+ defaultCollapsed: true
915
+ },
916
+ {
917
+ "@type": "@builder.io/core:Field",
918
+ name: "content",
919
+ friendlyName: "Banner Content",
920
+ helperText: "Content to display in the banner",
921
+ type: "html",
922
+ localized: true,
923
+ defaultCollapsed: true
924
+ }
925
+ ]
926
+ },
927
+ {
928
+ "@type": "@builder.io/core:Field",
929
+ name: "contactUrl",
930
+ friendlyName: "Contact URL",
931
+ helperText: "URL for the contact page",
932
+ type: "url",
933
+ localized: true,
934
+ defaultCollapsed: true
935
+ }
936
+ ]
937
+ },
938
+ mega: {
939
+ "@type": "@builder.io/core:Field",
940
+ name: "megaMenuConfig",
941
+ showIf: "return options.get('headerType') === 'MEGA'",
942
+ friendlyName: "Mega Menu Config",
943
+ type: "object",
944
+ defaultCollapsed: true,
945
+ localized: false,
946
+ subFields: [
947
+ {
948
+ "@type": "@builder.io/core:Field",
949
+ name: "showShippingMessage",
950
+ friendlyName: "Show Shipping Message",
951
+ helperText: "Display the free shipping message on the mega menu",
952
+ type: "boolean",
953
+ localized: true,
954
+ defaultCollapsed: true
955
+ },
956
+ {
957
+ "@type": "@builder.io/core:Field",
958
+ name: "mobileLinks",
959
+ friendlyName: "Mobile Links",
960
+ helperText: "Links to display in the mobile mega menu",
961
+ type: "list",
962
+ localized: true,
963
+ defaultCollapsed: true,
964
+ subFields: [
965
+ {
966
+ "@type": "@builder.io/core:Field",
967
+ name: "title",
968
+ friendlyName: "Mobile Link Title",
969
+ helperText: "Title for the mobile link",
970
+ type: "text",
971
+ localized: false,
972
+ defaultCollapsed: true
973
+ },
974
+ {
975
+ "@type": "@builder.io/core:Field",
976
+ name: "href",
977
+ friendlyName: "Link URL",
978
+ helperText: "URL for the mobile link",
979
+ type: "url",
980
+ localized: false,
981
+ required: false,
982
+ defaultCollapsed: true
983
+ },
984
+ {
985
+ "@type": "@builder.io/core:Field",
986
+ name: "expanded",
987
+ friendlyName: "Expanded",
988
+ helperText: "Indicates if the mobile link is expanded by default",
989
+ type: "boolean",
990
+ localized: false,
991
+ defaultCollapsed: true
992
+ },
993
+ {
994
+ "@type": "@builder.io/core:Field",
995
+ name: "links",
996
+ friendlyName: "Sub-Links",
997
+ helperText: "Sub-links for the mobile link",
998
+ type: "list",
999
+ localized: false,
1000
+ required: false,
1001
+ defaultCollapsed: true,
1002
+ subFields: [
1003
+ {
1004
+ "@type": "@builder.io/core:Field",
1005
+ name: "title",
1006
+ friendlyName: "Link Title",
1007
+ helperText: "Title for the link",
1008
+ type: "text",
1009
+ localized: false,
1010
+ defaultCollapsed: true
1011
+ },
1012
+ {
1013
+ "@type": "@builder.io/core:Field",
1014
+ name: "href",
1015
+ friendlyName: "Link URL",
1016
+ helperText: "URL for the link",
1017
+ type: "url",
1018
+ localized: false,
1019
+ required: true,
1020
+ defaultCollapsed: true
1021
+ }
1022
+ ]
1023
+ }
1024
+ ]
1025
+ },
1026
+ {
1027
+ "@type": "@builder.io/core:Field",
1028
+ name: "desktopShopNavLinks",
1029
+ friendlyName: "Desktop Shop Navigation Links",
1030
+ helperText: "Links to display in the desktop shop navigation",
1031
+ type: "list",
1032
+ localized: true,
1033
+ defaultCollapsed: true,
1034
+ subFields: [
1035
+ {
1036
+ "@type": "@builder.io/core:Field",
1037
+ name: "title",
1038
+ friendlyName: "Link Title",
1039
+ helperText: "Title for the desktop link",
1040
+ type: "text",
1041
+ localized: false,
1042
+ required: true,
1043
+ defaultCollapsed: true
1044
+ },
1045
+ {
1046
+ "@type": "@builder.io/core:Field",
1047
+ name: "links",
1048
+ friendlyName: "Links",
1049
+ helperText: "Links for the desktop navigation",
1050
+ type: "list",
1051
+ localized: false,
1052
+ required: false,
1053
+ defaultCollapsed: true,
1054
+ subFields: [
1055
+ {
1056
+ "@type": "@builder.io/core:Field",
1057
+ name: "title",
1058
+ friendlyName: "Link Title",
1059
+ helperText: "Title for the link",
1060
+ type: "text",
1061
+ localized: false,
1062
+ defaultCollapsed: true
1063
+ },
1064
+ {
1065
+ "@type": "@builder.io/core:Field",
1066
+ name: "href",
1067
+ friendlyName: "Link URL",
1068
+ helperText: "URL for the link",
1069
+ type: "url",
1070
+ localized: false,
1071
+ required: true,
1072
+ defaultCollapsed: true
1073
+ }
1074
+ ]
1075
+ },
1076
+ {
1077
+ "@type": "@builder.io/core:Field",
1078
+ name: "shopAllLink",
1079
+ friendlyName: "Shop All Link",
1080
+ helperText: 'Link to the "Shop All" page',
1081
+ type: "object",
1082
+ localized: false,
1083
+ required: false,
1084
+ defaultCollapsed: true,
1085
+ subFields: [
1086
+ {
1087
+ "@type": "@builder.io/core:Field",
1088
+ name: "title",
1089
+ friendlyName: "Link Title",
1090
+ helperText: "Title for the link",
1091
+ type: "text",
1092
+ localized: false,
1093
+ defaultCollapsed: true
1094
+ },
1095
+ {
1096
+ "@type": "@builder.io/core:Field",
1097
+ name: "href",
1098
+ friendlyName: "Link URL",
1099
+ helperText: "URL for the link",
1100
+ type: "url",
1101
+ localized: false,
1102
+ required: true,
1103
+ defaultCollapsed: true
1104
+ }
1105
+ ]
1106
+ }
1107
+ ]
1108
+ }
1109
+ ]
1110
+ },
1111
+ dmp: {
1112
+ "@type": "@builder.io/core:Field",
1113
+ name: "dmpHeaderConfig",
1114
+ showIf: "return options.get('headerType') === 'DMP'",
1115
+ friendlyName: "DMP Header Config",
1116
+ type: "object",
1117
+ defaultCollapsed: true,
1118
+ localized: false,
1119
+ subFields: [
1120
+ {
1121
+ "@type": "@builder.io/core:Field",
1122
+ name: "logoImage",
1123
+ friendlyName: "Logo Image",
1124
+ type: "file",
1125
+ showTemplatePicker: true,
1126
+ allowedFileTypes: ["jpeg", "png", "svg", "webp"],
1127
+ required: false,
1128
+ localized: true,
1129
+ defaultCollapsed: true,
1130
+ helperText: "Image displayed in the header"
1131
+ },
1132
+ {
1133
+ "@type": "@builder.io/core:Field",
1134
+ name: "mobileLinks",
1135
+ friendlyName: "Mobile Links",
1136
+ helperText: "Links to display in the mobile dropdown menu",
1137
+ type: "list",
1138
+ localized: true,
1139
+ defaultCollapsed: true,
1140
+ subFields: [
1141
+ {
1142
+ "@type": "@builder.io/core:Field",
1143
+ name: "title",
1144
+ friendlyName: "Mobile Link Title",
1145
+ helperText: "Title for the mobile link",
1146
+ type: "text",
1147
+ localized: false,
1148
+ defaultCollapsed: true
1149
+ },
1150
+ {
1151
+ "@type": "@builder.io/core:Field",
1152
+ name: "href",
1153
+ friendlyName: "Link URL",
1154
+ helperText: "URL for the mobile link",
1155
+ type: "url",
1156
+ localized: false,
1157
+ required: false,
1158
+ defaultCollapsed: true
1159
+ }
1160
+ ]
1161
+ },
1162
+ {
1163
+ "@type": "@builder.io/core:Field",
1164
+ name: "desktopLinks",
1165
+ friendlyName: "Desktop Links",
1166
+ helperText: "Links to display in the desktop menu",
1167
+ type: "list",
1168
+ localized: true,
1169
+ defaultCollapsed: true,
1170
+ subFields: [
1171
+ {
1172
+ "@type": "@builder.io/core:Field",
1173
+ name: "title",
1174
+ friendlyName: "Desktop Link Title",
1175
+ helperText: "Title for the desktop link",
1176
+ type: "text",
1177
+ localized: false,
1178
+ defaultCollapsed: true
1179
+ },
1180
+ {
1181
+ "@type": "@builder.io/core:Field",
1182
+ name: "href",
1183
+ friendlyName: "Link URL",
1184
+ helperText: "URL for the mobile link",
1185
+ type: "url",
1186
+ localized: false,
1187
+ required: false,
1188
+ defaultCollapsed: true
1189
+ }
1190
+ ]
1191
+ }
1192
+ ]
1193
+ }
1194
+ };
1195
+ var createHeaderConfig = () => {
1196
+ return {
1197
+ name: "header",
1198
+ friendlyName: "Header",
1199
+ type: "object",
1200
+ defaultCollapsed: true,
1201
+ subFields: [
1202
+ {
1203
+ name: "headerType",
1204
+ friendlyName: "Type",
1205
+ helperText: "Select the type of header to use",
1206
+ defaultCollapsed: true,
1207
+ type: "select",
1208
+ enum: ["BASIC" /* BASIC */, "MEDIUM" /* MEDIUM */, "MEGA" /* MEGA */, "NONE" /* NONE */, "DMP" /* DMP */],
1209
+ defaultValue: "MEDIUM"
1210
+ },
1211
+ headerOptions.basic,
1212
+ headerOptions.medium,
1213
+ headerOptions.mega,
1214
+ headerOptions.dmp
1215
+ ]
1216
+ };
1217
+ };
1218
+
1219
+ // src/data/brand-config/sections/footer-config.ts
1220
+ var createFooterConfig = () => {
1221
+ return {
1222
+ name: "footer",
1223
+ "@type": "@builder.io/core:Field",
1224
+ friendlyName: "Footer",
1225
+ type: "object",
1226
+ defaultCollapsed: true,
1227
+ subFields: [
1228
+ {
1229
+ name: "footerType",
1230
+ friendlyName: "Type",
1231
+ type: "select",
1232
+ enum: ["BASIC" /* BASIC */, "MEGA" /* MEGA */, "NONE" /* NONE */],
1233
+ defaultValue: "BASIC" /* BASIC */,
1234
+ defaultCollapsed: true
1235
+ }
1236
+ ]
1237
+ };
1238
+ };
1239
+
1240
+ // src/data/brand-config/sections/feature-config.ts
1241
+ var createFeatureConfig = (gridFilterModelId) => {
1242
+ return {
1243
+ name: "features",
1244
+ friendlyName: "Features",
1245
+ type: "object",
1246
+ defaultCollapsed: true,
1247
+ subFields: [
1248
+ {
1249
+ name: "productGridFilterType",
1250
+ friendlyName: "Product Grid Filter Type",
1251
+ type: "select",
1252
+ defaultCollapsed: true,
1253
+ helperText: `Select the type of filters to use. 'Dropdown' will display a drop down of categories, ingredients, use cases, and tags.
1254
+ 'Stacked List' allows you to create your own filter groupings from amongst those four filter types.`,
1255
+ enum: ["Dropdown" /* DROPDOWN */, "Stacked List" /* STACKED_LIST */],
1256
+ defaultValue: "Dropdown"
1257
+ },
1258
+ {
1259
+ name: "productGridFilterGroups",
1260
+ friendlyName: "Product Grid Filter Groups",
1261
+ type: "list",
1262
+ defaultCollapsed: true,
1263
+ helperText: "Select the filter groups to use. They will be presented in the order entered",
1264
+ subFields: [
1265
+ {
1266
+ name: "filterConfig",
1267
+ friendlyName: "Product Grid Filter",
1268
+ type: "reference",
1269
+ defaultCollapsed: true,
1270
+ modelId: gridFilterModelId,
1271
+ helperText: "Select a product grid filter group to display",
1272
+ copyOnAdd: false
1273
+ }
1274
+ ],
1275
+ showIf: `return options.get('productGridFilterType') === 'Custom'`
1276
+ },
1277
+ {
1278
+ name: "productGridHideRestricted",
1279
+ friendlyName: "Hide Restricted Products",
1280
+ helperText: `Hide restricted products from your product grid based on the user's selected country`,
1281
+ type: "boolean",
1282
+ localized: false,
1283
+ defaultCollapsed: true
1284
+ },
1285
+ {
1286
+ name: "productLinkPrefix",
1287
+ friendlyName: "Product Link Prefix",
1288
+ helperText: 'Set the prefix to append before product slugs throughout your site. For example, if you enter "p", all links from the product grid will be {website}/p/{product-slug}',
1289
+ type: "select",
1290
+ enum: ["/p" /* P */, "/product" /* PRODUCT */],
1291
+ localized: false,
1292
+ defaultCollapsed: true,
1293
+ defaultValue: "/p"
1294
+ },
1295
+ {
1296
+ name: "subscriptionAddOnsEnabled",
1297
+ friendlyName: "Subscription Add-Ons Enabled",
1298
+ helperText: "Enable or disable subscription add-ons for the brand",
1299
+ type: "boolean",
1300
+ localized: false,
1301
+ defaultCollapsed: true
1302
+ },
1303
+ {
1304
+ name: "shippingThresholdNotificationEnabled",
1305
+ friendlyName: "Shipping Threshold Notification Enabled",
1306
+ helperText: "Enable or disable shipping threshold notifications for the brand",
1307
+ type: "boolean",
1308
+ localized: true,
1309
+ defaultCollapsed: true
1310
+ },
1311
+ {
1312
+ name: "bundlingEnabled",
1313
+ friendlyName: "Enable Bundling Experience",
1314
+ helperText: "Enable or disable the bundling experience for the brand",
1315
+ type: "boolean",
1316
+ localized: false,
1317
+ defaultCollapsed: true
1318
+ }
1319
+ ]
1320
+ };
1321
+ };
1322
+
1323
+ // src/data/brand-config/sections/support-config.ts
1324
+ var createSupportConfig = () => {
1325
+ return {
1326
+ name: "support",
1327
+ friendlyName: "Support Information",
1328
+ type: "object",
1329
+ defaultCollapsed: true,
1330
+ localized: false,
1331
+ subFields: [
1332
+ {
1333
+ name: "email",
1334
+ friendlyName: "Support Email",
1335
+ type: "text",
1336
+ required: true,
1337
+ localized: true,
1338
+ helperText: "Email address for customer support inquiries",
1339
+ defaultCollapsed: true
1340
+ },
1341
+ {
1342
+ name: "phone",
1343
+ friendlyName: "Support Phone Number",
1344
+ type: "text",
1345
+ required: true,
1346
+ localized: true,
1347
+ helperText: "Phone number for customer support inquiries",
1348
+ defaultCollapsed: true
1349
+ },
1350
+ {
1351
+ name: "phoneDisplay",
1352
+ friendlyName: "Support Phone Display",
1353
+ type: "text",
1354
+ required: true,
1355
+ localized: true,
1356
+ helperText: "Formatted phone number for display",
1357
+ defaultCollapsed: true
1358
+ },
1359
+ {
1360
+ name: "address",
1361
+ friendlyName: "Support Address",
1362
+ type: "object",
1363
+ required: true,
1364
+ localized: false,
1365
+ helperText: "Support address for customer inquiries",
1366
+ defaultCollapsed: true,
1367
+ subFields: [
1368
+ {
1369
+ name: "street",
1370
+ friendlyName: "Street",
1371
+ type: "text",
1372
+ required: true,
1373
+ helperText: "Street address for support",
1374
+ defaultCollapsed: true
1375
+ },
1376
+ {
1377
+ name: "city",
1378
+ friendlyName: "City",
1379
+ type: "text",
1380
+ required: true,
1381
+ helperText: "City for support address",
1382
+ defaultCollapsed: true
1383
+ },
1384
+ {
1385
+ name: "state",
1386
+ friendlyName: "State Code",
1387
+ type: "text",
1388
+ required: true,
1389
+ helperText: "State code for support address (e.g. CA)",
1390
+ defaultCollapsed: true
1391
+ },
1392
+ {
1393
+ name: "zipcode",
1394
+ friendlyName: "Zip Code",
1395
+ type: "text",
1396
+ required: true,
1397
+ helperText: "Zip code for support address",
1398
+ defaultCollapsed: true
1399
+ }
1400
+ ]
1401
+ },
1402
+ {
1403
+ name: "addressString",
1404
+ friendlyName: "Support Address String",
1405
+ type: "text",
1406
+ required: false,
1407
+ localized: false,
1408
+ helperText: "The full support address as a string",
1409
+ defaultCollapsed: true
1410
+ }
1411
+ ]
1412
+ };
1413
+ };
1414
+
1415
+ // src/data/brand-config/sections/page-config.ts
1416
+ var createPageConfig = () => {
1417
+ return {
1418
+ name: "pageConfig",
1419
+ friendlyName: "Page Configurations",
1420
+ type: "object",
1421
+ defaultCollapsed: true,
1422
+ subFields: [
1423
+ {
1424
+ name: "accountDetails",
1425
+ friendlyName: "Account Details Page",
1426
+ type: "object",
1427
+ defaultCollapsed: true,
1428
+ subFields: [
1429
+ {
1430
+ name: "birthdayBannerConfig",
1431
+ friendlyName: "Birthday Banner Configuration",
1432
+ type: "object",
1433
+ defaultCollapsed: true,
1434
+ subFields: [
1435
+ {
1436
+ name: "content",
1437
+ friendlyName: "Banner Content",
1438
+ type: "html",
1439
+ required: false,
1440
+ localized: true,
1441
+ defaultCollapsed: true
1442
+ },
1443
+ {
1444
+ name: "linkText",
1445
+ friendlyName: "Link Text",
1446
+ type: "text",
1447
+ localized: true,
1448
+ defaultCollapsed: true
1449
+ },
1450
+ {
1451
+ name: "linkUrl",
1452
+ friendlyName: "Link URL",
1453
+ type: "url",
1454
+ required: false,
1455
+ localized: true,
1456
+ defaultCollapsed: true
1457
+ },
1458
+ {
1459
+ name: "styles",
1460
+ friendlyName: "Styles",
1461
+ type: "object",
1462
+ defaultCollapsed: true,
1463
+ subFields: [
1464
+ {
1465
+ name: "display",
1466
+ friendlyName: "Display",
1467
+ type: "text",
1468
+ defaultCollapsed: true
1469
+ },
1470
+ {
1471
+ name: "alignItems",
1472
+ friendlyName: "Align Items",
1473
+ type: "text",
1474
+ defaultCollapsed: true
1475
+ },
1476
+ {
1477
+ name: "margin",
1478
+ friendlyName: "Margin",
1479
+ type: "text",
1480
+ defaultCollapsed: true
1481
+ },
1482
+ {
1483
+ name: "padding",
1484
+ friendlyName: "Padding",
1485
+ type: "text",
1486
+ defaultCollapsed: true
1487
+ },
1488
+ {
1489
+ name: "backgroundColor",
1490
+ friendlyName: "Background Color",
1491
+ type: "color",
1492
+ required: false,
1493
+ localized: false,
1494
+ defaultCollapsed: true
1495
+ },
1496
+ {
1497
+ name: "color",
1498
+ friendlyName: "Color",
1499
+ type: "color",
1500
+ required: false,
1501
+ localized: false,
1502
+ defaultCollapsed: true
1503
+ }
1504
+ ]
1505
+ }
1506
+ ]
1507
+ }
1508
+ ]
1509
+ },
1510
+ {
1511
+ name: "cart",
1512
+ friendlyName: "Cart Page",
1513
+ type: "object",
1514
+ defaultCollapsed: true,
1515
+ localized: false,
1516
+ subFields: [
1517
+ {
1518
+ name: "continueShoppingUrl",
1519
+ friendlyName: "Continue Shopping URL",
1520
+ type: "url",
1521
+ required: false,
1522
+ localized: false,
1523
+ defaultCollapsed: true
1524
+ },
1525
+ {
1526
+ name: "imageContainerBGColor",
1527
+ friendlyName: "Background color for Image Container",
1528
+ type: "color",
1529
+ required: false,
1530
+ localized: false,
1531
+ defaultCollapsed: true
1532
+ },
1533
+ {
1534
+ name: "freeShippingBanner",
1535
+ friendlyName: "Free Shipping Banner Configuration",
1536
+ type: "object",
1537
+ defaultCollapsed: true,
1538
+ subFields: [
1539
+ {
1540
+ name: "isVisible",
1541
+ friendlyName: "Show Free Shipping Banner",
1542
+ type: "boolean",
1543
+ required: false,
1544
+ localized: true,
1545
+ defaultCollapsed: true
1546
+ },
1547
+ {
1548
+ name: "loggedOutBannerContent",
1549
+ friendlyName: "Logged Out Banner Content",
1550
+ type: "html",
1551
+ required: false,
1552
+ localized: true,
1553
+ defaultCollapsed: true
1554
+ },
1555
+ {
1556
+ name: "loggedInBannerContent",
1557
+ friendlyName: "Logged In Banner Content",
1558
+ type: "html",
1559
+ required: false,
1560
+ localized: true,
1561
+ defaultCollapsed: true
1562
+ },
1563
+ {
1564
+ name: "styles",
1565
+ friendlyName: "Styles",
1566
+ type: "object",
1567
+ defaultCollapsed: true,
1568
+ subFields: [
1569
+ {
1570
+ name: "backgroundColor",
1571
+ friendlyName: "Background Color",
1572
+ type: "color",
1573
+ required: false,
1574
+ localized: false,
1575
+ defaultCollapsed: true
1576
+ },
1577
+ {
1578
+ name: "color",
1579
+ friendlyName: "Color",
1580
+ type: "color",
1581
+ required: false,
1582
+ localized: false,
1583
+ defaultCollapsed: true
1584
+ }
1585
+ ]
1586
+ }
1587
+ ]
1588
+ },
1589
+ {
1590
+ name: "notices",
1591
+ friendlyName: "Cart Notices",
1592
+ type: "object",
1593
+ defaultCollapsed: true,
1594
+ subFields: [
1595
+ {
1596
+ name: "securePaymentNotice",
1597
+ friendlyName: "Secure Payment Notice",
1598
+ type: "object",
1599
+ defaultCollapsed: true,
1600
+ subFields: [
1601
+ {
1602
+ name: "isVisible",
1603
+ friendlyName: "Visible?",
1604
+ type: "boolean",
1605
+ localized: true,
1606
+ helperText: "Show the secure payment notice on the cart page",
1607
+ defaultCollapsed: true
1608
+ },
1609
+ {
1610
+ name: "text",
1611
+ friendlyName: "Text",
1612
+ type: "html",
1613
+ required: false,
1614
+ localized: true,
1615
+ helperText: "Content for the secure payment notice",
1616
+ defaultCollapsed: true
1617
+ },
1618
+ {
1619
+ name: "styles",
1620
+ friendlyName: "Styles",
1621
+ type: "object",
1622
+ helperText: "Styles for the secure payment notice",
1623
+ defaultCollapsed: true,
1624
+ subFields: [
1625
+ {
1626
+ name: "backgroundColor",
1627
+ friendlyName: "Background Color",
1628
+ type: "color",
1629
+ defaultCollapsed: true
1630
+ },
1631
+ {
1632
+ name: "color",
1633
+ friendlyName: "Color",
1634
+ type: "color",
1635
+ defaultCollapsed: true
1636
+ }
1637
+ ]
1638
+ }
1639
+ ]
1640
+ }
1641
+ ]
1642
+ }
1643
+ ]
1644
+ },
1645
+ {
1646
+ name: "checkout",
1647
+ friendlyName: "Checkout Page",
1648
+ type: "object",
1649
+ defaultCollapsed: true,
1650
+ localized: false,
1651
+ subFields: [
1652
+ {
1653
+ name: "freeShippingBanner",
1654
+ friendlyName: "Free Shipping Banner",
1655
+ type: "object",
1656
+ defaultCollapsed: true,
1657
+ subFields: [
1658
+ {
1659
+ name: "isVisible",
1660
+ friendlyName: "Visible?",
1661
+ type: "boolean",
1662
+ required: false,
1663
+ localized: true,
1664
+ helperText: "Show the free shipping banner on the checkout page",
1665
+ defaultCollapsed: true
1666
+ },
1667
+ {
1668
+ name: "loggedOutBannerContent",
1669
+ friendlyName: "Logged Out Banner Content",
1670
+ type: "html",
1671
+ required: false,
1672
+ localized: true,
1673
+ helperText: "Content for the free shipping banner when the user is not logged in",
1674
+ defaultCollapsed: true
1675
+ },
1676
+ {
1677
+ name: "loggedInBannerContent",
1678
+ friendlyName: "Logged In Banner Content",
1679
+ type: "html",
1680
+ required: false,
1681
+ localized: true,
1682
+ helperText: "Content for the free shipping banner when the user is logged in",
1683
+ defaultCollapsed: true
1684
+ }
1685
+ ]
1686
+ },
1687
+ {
1688
+ name: "securePaymentNotice",
1689
+ friendlyName: "Secure Payment Notice",
1690
+ type: "object",
1691
+ defaultCollapsed: true,
1692
+ subFields: [
1693
+ {
1694
+ name: "isVisible",
1695
+ friendlyName: "Visible?",
1696
+ type: "boolean",
1697
+ required: false,
1698
+ localized: true,
1699
+ helperText: "Show the secure payment notice on the checkout page",
1700
+ defaultCollapsed: true
1701
+ },
1702
+ {
1703
+ name: "content",
1704
+ friendlyName: "Content",
1705
+ type: "html",
1706
+ required: false,
1707
+ localized: true,
1708
+ helperText: "Content for the secure payment notice",
1709
+ defaultCollapsed: true
1710
+ }
1711
+ ]
1712
+ },
1713
+ {
1714
+ name: "autoSignUp",
1715
+ friendlyName: "Auto Sign Up",
1716
+ type: "object",
1717
+ defaultCollapsed: true,
1718
+ subFields: [
1719
+ {
1720
+ name: "isVisible",
1721
+ friendlyName: "Visible?",
1722
+ type: "boolean",
1723
+ required: false,
1724
+ localized: true,
1725
+ helperText: "Show the secure payment notice on the checkout page",
1726
+ defaultCollapsed: true
1727
+ },
1728
+ {
1729
+ name: "isChecked",
1730
+ friendlyName: "Checked by Default",
1731
+ type: "boolean",
1732
+ required: false,
1733
+ localized: true,
1734
+ helperText: "Whether the checkbox is checked by default",
1735
+ defaultCollapsed: true
1736
+ },
1737
+ {
1738
+ name: "labelText",
1739
+ friendlyName: "Label Text",
1740
+ type: "html",
1741
+ required: false,
1742
+ localized: true,
1743
+ helperText: "Text for the auto sign up checkbox",
1744
+ defaultCollapsed: true
1745
+ },
1746
+ {
1747
+ name: "helpModal",
1748
+ friendlyName: "Help Modal",
1749
+ type: "object",
1750
+ defaultCollapsed: true,
1751
+ subFields: [
1752
+ {
1753
+ name: "header",
1754
+ friendlyName: "Header",
1755
+ type: "html",
1756
+ required: false,
1757
+ localized: true,
1758
+ helperText: "Header content for the auto sign up help modal",
1759
+ defaultCollapsed: true
1760
+ },
1761
+ {
1762
+ name: "content",
1763
+ friendlyName: "Content",
1764
+ type: "html",
1765
+ required: false,
1766
+ localized: true,
1767
+ helperText: "Content for the auto sign up help modal",
1768
+ defaultCollapsed: true
1769
+ }
1770
+ ]
1771
+ }
1772
+ ]
1773
+ },
1774
+ {
1775
+ name: "smsOptIn",
1776
+ friendlyName: "SMS Opt In",
1777
+ helperText: "Use these settings to control whether you offer SMS sign up on the checkout form.",
1778
+ type: "object",
1779
+ defaultCollapsed: true,
1780
+ subFields: [
1781
+ {
1782
+ name: "isVisible",
1783
+ friendlyName: "Enabled?",
1784
+ type: "boolean",
1785
+ required: false,
1786
+ localized: true,
1787
+ helperText: "Show SMS opt-in at checkout to guests or returning customers who have not yet opted-in",
1788
+ defaultCollapsed: true
1789
+ },
1790
+ {
1791
+ name: "title",
1792
+ friendlyName: "Title",
1793
+ type: "text",
1794
+ required: false,
1795
+ localized: true,
1796
+ helperText: "The text to display on this section title",
1797
+ defaultCollapsed: true
1798
+ },
1799
+ {
1800
+ name: "content",
1801
+ friendlyName: "CTA Content",
1802
+ type: "html",
1803
+ required: false,
1804
+ localized: true,
1805
+ helperText: "Text for the SMS sign up CTA.",
1806
+ defaultCollapsed: true
1807
+ }
1808
+ ]
1809
+ }
1810
+ ]
1811
+ },
1812
+ {
1813
+ name: "orderDetails",
1814
+ friendlyName: "Order Details Page",
1815
+ type: "object",
1816
+ defaultCollapsed: true,
1817
+ localized: false,
1818
+ subFields: [
1819
+ {
1820
+ name: "title",
1821
+ friendlyName: "Title",
1822
+ type: "html",
1823
+ required: false,
1824
+ localized: true,
1825
+ helperText: "Title for the order details section on the checkout page",
1826
+ defaultCollapsed: true
1827
+ },
1828
+ {
1829
+ name: "tableHeaderStyle",
1830
+ friendlyName: "Table Header Style",
1831
+ type: "object",
1832
+ required: false,
1833
+ localized: false,
1834
+ helperText: "Style for the order details table header",
1835
+ defaultCollapsed: true,
1836
+ subFields: [
1837
+ {
1838
+ name: "color",
1839
+ friendlyName: "Color",
1840
+ type: "color",
1841
+ required: false,
1842
+ localized: false,
1843
+ helperText: "Text color for the order details table header",
1844
+ defaultCollapsed: true
1845
+ },
1846
+ {
1847
+ name: "backgroundColor",
1848
+ friendlyName: "Background Color",
1849
+ type: "color",
1850
+ required: false,
1851
+ localized: false,
1852
+ helperText: "Background color for the order details table header",
1853
+ defaultCollapsed: true
1854
+ }
1855
+ ]
1856
+ },
1857
+ {
1858
+ name: "tableContentStyle",
1859
+ friendlyName: "Table Content Style",
1860
+ type: "object",
1861
+ required: false,
1862
+ localized: false,
1863
+ helperText: "Style for the order details table content",
1864
+ defaultCollapsed: true,
1865
+ subFields: [
1866
+ {
1867
+ name: "backgroundColor",
1868
+ friendlyName: "Background Color",
1869
+ type: "color",
1870
+ required: false,
1871
+ localized: false,
1872
+ helperText: "Background color for the order details table content",
1873
+ defaultCollapsed: true
1874
+ }
1875
+ ]
1876
+ },
1877
+ {
1878
+ name: "buyItAgainButton",
1879
+ friendlyName: "Buy It Again Button",
1880
+ type: "object",
1881
+ required: false,
1882
+ localized: false,
1883
+ defaultCollapsed: true,
1884
+ helperText: 'Configuration for the "Buy It Again" button in the order details section',
1885
+ subFields: [
1886
+ {
1887
+ name: "text",
1888
+ friendlyName: "Button Text",
1889
+ type: "html",
1890
+ required: false,
1891
+ localized: true,
1892
+ helperText: 'Text to display on the "Buy It Again" button',
1893
+ defaultCollapsed: true
1894
+ },
1895
+ {
1896
+ name: "classes",
1897
+ friendlyName: "Classes",
1898
+ type: "text",
1899
+ required: false,
1900
+ localized: false,
1901
+ helperText: 'CSS classes to apply to the "Buy It Again" button',
1902
+ defaultCollapsed: true
1903
+ }
1904
+ ]
1905
+ },
1906
+ {
1907
+ name: "reOrderAllButton",
1908
+ friendlyName: "Re-Order All Button",
1909
+ type: "object",
1910
+ required: false,
1911
+ localized: false,
1912
+ defaultCollapsed: true,
1913
+ helperText: 'Configuration for the "Re-Order All" button in the order details section',
1914
+ subFields: [
1915
+ {
1916
+ name: "text",
1917
+ friendlyName: "Button Text",
1918
+ type: "html",
1919
+ required: false,
1920
+ localized: true,
1921
+ helperText: 'Text to display on the "Re-Order All" button',
1922
+ defaultCollapsed: true
1923
+ },
1924
+ {
1925
+ name: "classes",
1926
+ friendlyName: "Classes",
1927
+ type: "text",
1928
+ required: false,
1929
+ localized: false,
1930
+ helperText: 'CSS classes to apply to the "Re-Order All" button',
1931
+ defaultCollapsed: true
1932
+ }
1933
+ ]
1934
+ }
1935
+ ]
1936
+ },
1937
+ {
1938
+ name: "resetPassword",
1939
+ friendlyName: "Reset Password Page",
1940
+ type: "object",
1941
+ defaultCollapsed: true,
1942
+ localized: false,
1943
+ subFields: [
1944
+ {
1945
+ name: "title",
1946
+ friendlyName: "Page Title",
1947
+ type: "html",
1948
+ required: false,
1949
+ localized: true,
1950
+ helperText: "Title for the reset password page",
1951
+ defaultCollapsed: true
1952
+ }
1953
+ ]
1954
+ },
1955
+ {
1956
+ name: "subscriptionCancel",
1957
+ friendlyName: "Subscription Cancellation Page",
1958
+ type: "object",
1959
+ defaultCollapsed: true,
1960
+ localized: false,
1961
+ subFields: [
1962
+ {
1963
+ name: "cancelText",
1964
+ friendlyName: "Cancel Text",
1965
+ type: "html",
1966
+ required: false,
1967
+ localized: true,
1968
+ helperText: "Text displayed on the subscription cancellation page",
1969
+ defaultCollapsed: true
1970
+ },
1971
+ {
1972
+ name: "cancelReasons",
1973
+ friendlyName: "Cancel Reasons",
1974
+ type: "list",
1975
+ required: false,
1976
+ localized: true,
1977
+ defaultCollapsed: true,
1978
+ helperText: "List of reasons for subscription cancellation",
1979
+ subFields: [
1980
+ {
1981
+ name: "title",
1982
+ friendlyName: "Reason",
1983
+ type: "text",
1984
+ required: true,
1985
+ helperText: "The reason for cancellation.",
1986
+ localized: true,
1987
+ makeEntryTitle: true,
1988
+ defaultCollapsed: true
1989
+ },
1990
+ {
1991
+ name: "text",
1992
+ friendlyName: "Display Content",
1993
+ type: "html",
1994
+ required: false,
1995
+ helperText: "This is the content that will be displayed for this cancellation reason",
1996
+ localized: true,
1997
+ defaultCollapsed: true
1998
+ },
1999
+ {
2000
+ name: "identifier",
2001
+ friendlyName: "Identifier",
2002
+ type: "select",
2003
+ required: true,
2004
+ defaultCollapsed: true,
2005
+ helperText: "",
2006
+ enum: [
2007
+ "DoNotLike" /* DoNotLike */,
2008
+ "NotWorking" /* NotWorking */,
2009
+ "NoBenefits" /* NoBenefits */,
2010
+ "NoFitNoNeed" /* NoFitNoNeed */,
2011
+ "Budget" /* Budget */,
2012
+ "Mistake" /* Mistake */,
2013
+ "Try" /* Try */,
2014
+ "TooMuch" /* TooMuch */,
2015
+ "TravelMove" /* TravelMove */,
2016
+ "DoNotNeed" /* DoNotNeed */,
2017
+ "AnotherReason" /* AnotherReason */,
2018
+ "NotHelpingSkin" /* NotHelpingSkin */,
2019
+ "SkinImproved" /* SkinImproved */,
2020
+ "PetDoesNotLike" /* PetDoesNotLike */,
2021
+ "NotHelpingPet" /* NotHelpingPet */,
2022
+ "NoneGiven" /* NoneGiven */
2023
+ ]
2024
+ },
2025
+ {
2026
+ name: "buttons",
2027
+ friendlyName: "Buttons",
2028
+ type: "list",
2029
+ required: false,
2030
+ defaultCollapsed: true,
2031
+ subFields: [
2032
+ {
2033
+ name: "text",
2034
+ friendlyName: "Button Text",
2035
+ type: "text",
2036
+ required: false,
2037
+ helperText: "Text to display on the button",
2038
+ defaultCollapsed: true
2039
+ },
2040
+ {
2041
+ name: "link",
2042
+ friendlyName: "Button Link",
2043
+ type: "url",
2044
+ required: false,
2045
+ helperText: "",
2046
+ defaultCollapsed: true
2047
+ },
2048
+ {
2049
+ name: "type",
2050
+ type: "select",
2051
+ friendlyName: "Button Type",
2052
+ required: false,
2053
+ helperText: "",
2054
+ enum: [
2055
+ "link" /* Link */,
2056
+ "update" /* Update */,
2057
+ "keep" /* Keep */,
2058
+ "continue" /* Continue */,
2059
+ "cancel" /* Cancel */
2060
+ ],
2061
+ defaultValue: "link",
2062
+ defaultCollapsed: true
2063
+ }
2064
+ ],
2065
+ helperText: "Buttons to display for this cancellation reason."
2066
+ }
2067
+ ]
2068
+ }
2069
+ ]
2070
+ },
2071
+ {
2072
+ name: "subscriptionEdit",
2073
+ friendlyName: "Subscription Edit",
2074
+ type: "object",
2075
+ defaultCollapsed: true,
2076
+ localized: false,
2077
+ subFields: [
2078
+ {
2079
+ name: "subscriptionItemDefaultImage",
2080
+ friendlyName: "Subscription Item Default Image",
2081
+ type: "file",
2082
+ showTemplatePicker: true,
2083
+ allowedFileTypes: ["jpeg", "png", "svg", "webp"],
2084
+ required: false,
2085
+ localized: false,
2086
+ defaultCollapsed: true,
2087
+ helperText: "Default image to display for subscription items"
2088
+ },
2089
+ {
2090
+ name: "shipNow",
2091
+ friendlyName: "Ship Now",
2092
+ type: "object",
2093
+ required: false,
2094
+ defaultCollapsed: true,
2095
+ localized: false,
2096
+ subFields: [
2097
+ {
2098
+ name: "modalHeadlineContent",
2099
+ friendlyName: "Modal Headline Content",
2100
+ type: "html",
2101
+ required: true,
2102
+ helperText: "Headline text displayed in the Ship Now modal",
2103
+ localized: true,
2104
+ defaultCollapsed: true
2105
+ },
2106
+ {
2107
+ name: "modalContent",
2108
+ friendlyName: "Modal Content",
2109
+ type: "html",
2110
+ required: true,
2111
+ helperText: "Main content displayed in the Ship Now modal. You can use $FREQUENCY and it will be replaced with the frequency of the subscription.",
2112
+ localized: true,
2113
+ defaultCollapsed: true
2114
+ }
2115
+ ]
2116
+ }
2117
+ ]
2118
+ },
2119
+ {
2120
+ name: "upsell",
2121
+ friendlyName: "Upsell Page",
2122
+ type: "object",
2123
+ defaultCollapsed: true,
2124
+ localized: false,
2125
+ subFields: [
2126
+ {
2127
+ name: "mbgImage",
2128
+ friendlyName: "Money Back Guarantee Image",
2129
+ type: "file",
2130
+ showTemplatePicker: true,
2131
+ allowedFileTypes: ["jpeg", "png", "svg", "webp"],
2132
+ required: false,
2133
+ localized: true,
2134
+ defaultCollapsed: true,
2135
+ helperText: "Image displayed on the upsell page for the money back guarantee"
2136
+ },
2137
+ {
2138
+ name: "mbgText",
2139
+ friendlyName: "Money Back Guarantee Text",
2140
+ type: "html",
2141
+ required: false,
2142
+ localized: true,
2143
+ defaultCollapsed: true,
2144
+ helperText: "Text displayed on the upsell page for the money back guarantee"
2145
+ }
2146
+ ]
2147
+ }
2148
+ ]
2149
+ };
2150
+ };
2151
+
2152
+ // src/data/brand-config/sections/cookie-config.ts
2153
+ var createCookieConfig = () => {
2154
+ return {
2155
+ name: "cookieConfig",
2156
+ friendlyName: "Cookie Configuration",
2157
+ type: "object",
2158
+ defaultCollapsed: true,
2159
+ subFields: [
2160
+ {
2161
+ name: "popupBanner",
2162
+ friendlyName: "Cookie Policy Popup Banner",
2163
+ type: "object",
2164
+ defaultCollapsed: true,
2165
+ helperText: "Configure the cookie policy popup banner",
2166
+ subFields: [
2167
+ {
2168
+ name: "content",
2169
+ friendlyName: "Content",
2170
+ type: "html",
2171
+ localized: true,
2172
+ defaultCollapsed: true,
2173
+ helperText: "Content for the cookie policy popup banner"
2174
+ },
2175
+ {
2176
+ name: "bannerStyles",
2177
+ friendlyName: "Banner Styles",
2178
+ type: "object",
2179
+ defaultCollapsed: true,
2180
+ subFields: [
2181
+ {
2182
+ name: "backgroundColor",
2183
+ friendlyName: "Background Color",
2184
+ type: "color",
2185
+ required: false,
2186
+ defaultCollapsed: true
2187
+ },
2188
+ {
2189
+ name: "borderRadius",
2190
+ friendlyName: "Border Radius",
2191
+ type: "text",
2192
+ required: false,
2193
+ defaultCollapsed: true
2194
+ }
2195
+ ]
2196
+ },
2197
+ {
2198
+ name: "buttonStyles",
2199
+ friendlyName: "Button Styles",
2200
+ type: "object",
2201
+ defaultCollapsed: true,
2202
+ subFields: [
2203
+ {
2204
+ name: "backgroundColor",
2205
+ friendlyName: "Background Color",
2206
+ type: "color",
2207
+ required: false,
2208
+ defaultCollapsed: true
2209
+ },
2210
+ {
2211
+ name: "color",
2212
+ friendlyName: "Color",
2213
+ type: "color",
2214
+ required: false,
2215
+ defaultCollapsed: true
2216
+ }
2217
+ ]
2218
+ }
2219
+ ]
2220
+ }
2221
+ ]
2222
+ };
2223
+ };
2224
+
2225
+ // src/data/brand-config/sections/general-config.ts
2226
+ var createGeneralConfig = (bannerModelId) => {
2227
+ return [
2228
+ {
2229
+ name: "brandDisplayName",
2230
+ friendlyName: "Brand Display Name",
2231
+ type: "text",
2232
+ defaultCollapsed: true,
2233
+ localized: false,
2234
+ required: true
2235
+ },
2236
+ {
2237
+ name: "images",
2238
+ friendlyName: "Brand Images",
2239
+ type: "object",
2240
+ defaultCollapsed: true,
2241
+ localized: false,
2242
+ subFields: [
2243
+ {
2244
+ name: "brandLogoSmall",
2245
+ friendlyName: "Logo (Small)",
2246
+ type: "file",
2247
+ showTemplatePicker: true,
2248
+ allowedFileTypes: ["jpeg", "png", "svg", "webp"],
2249
+ localized: true,
2250
+ helperText: "Small logo for the brand",
2251
+ defaultCollapsed: true
2252
+ },
2253
+ {
2254
+ name: "brandLogoLarge",
2255
+ friendlyName: "Logo (Large)",
2256
+ type: "file",
2257
+ showTemplatePicker: true,
2258
+ allowedFileTypes: ["jpeg", "png", "svg", "webp"],
2259
+ localized: true,
2260
+ helperText: "Large logo for the brand",
2261
+ defaultCollapsed: true
2262
+ },
2263
+ {
2264
+ name: "brandLogoFooter",
2265
+ friendlyName: "Logo (Footer)",
2266
+ type: "file",
2267
+ showTemplatePicker: true,
2268
+ allowedFileTypes: ["jpeg", "png", "svg", "webp"],
2269
+ localized: true,
2270
+ helperText: "Footer logo for the brand",
2271
+ defaultCollapsed: true
2272
+ },
2273
+ {
2274
+ name: "bbbImage",
2275
+ friendlyName: "BBB Image",
2276
+ type: "file",
2277
+ showTemplatePicker: true,
2278
+ allowedFileTypes: ["jpeg", "png", "svg", "webp"],
2279
+ localized: true,
2280
+ helperText: "BBB logo for the brand",
2281
+ defaultCollapsed: true
2282
+ },
2283
+ {
2284
+ name: "accesibilityLogo",
2285
+ friendlyName: "Accessibility Logo",
2286
+ type: "file",
2287
+ showTemplatePicker: true,
2288
+ allowedFileTypes: ["jpeg", "png", "svg", "webp"],
2289
+ localized: true,
2290
+ helperText: "Accessibility logo for the brand",
2291
+ defaultCollapsed: true
2292
+ },
2293
+ {
2294
+ name: "brandLogoOffWhite",
2295
+ friendlyName: "Logo (Off-White)",
2296
+ type: "file",
2297
+ showTemplatePicker: true,
2298
+ allowedFileTypes: ["jpeg", "png", "svg", "webp"],
2299
+ localized: true,
2300
+ helperText: "Off white logo for the brand",
2301
+ defaultCollapsed: true
2302
+ },
2303
+ {
2304
+ name: "defaultPetProfileImage",
2305
+ friendlyName: "Default Pet Profile Image",
2306
+ type: "file",
2307
+ showTemplatePicker: true,
2308
+ allowedFileTypes: ["jpeg", "png", "svg", "webp"],
2309
+ localized: true,
2310
+ helperText: "Default image for pet profiles",
2311
+ defaultCollapsed: true
2312
+ },
2313
+ {
2314
+ name: "defaultCatProfileImage",
2315
+ friendlyName: "Default Cat Profile Image",
2316
+ type: "file",
2317
+ showTemplatePicker: true,
2318
+ allowedFileTypes: ["jpeg", "png", "svg", "webp"],
2319
+ localized: true,
2320
+ helperText: "Default image for cat profiles",
2321
+ defaultCollapsed: true
2322
+ },
2323
+ {
2324
+ name: "defaultDogProfileImage",
2325
+ friendlyName: "Default Dog Profile Image",
2326
+ type: "file",
2327
+ showTemplatePicker: true,
2328
+ allowedFileTypes: ["jpeg", "png", "svg", "webp"],
2329
+ localized: true,
2330
+ helperText: "Default image for dog profiles",
2331
+ defaultCollapsed: true
2332
+ },
2333
+ {
2334
+ name: "linklessPageHeaderLogo",
2335
+ friendlyName: "Linkless Header Image",
2336
+ type: "file",
2337
+ showTemplatePicker: true,
2338
+ allowedFileTypes: ["jpeg", "png", "svg", "webp"],
2339
+ localized: true,
2340
+ helperText: "Logo Image for the linkless header",
2341
+ defaultCollapsed: true
2342
+ }
2343
+ ]
2344
+ },
2345
+ {
2346
+ name: "links",
2347
+ friendlyName: "General Links",
2348
+ type: "object",
2349
+ defaultCollapsed: true,
2350
+ localized: false,
2351
+ subFields: [
2352
+ {
2353
+ name: "termsLink",
2354
+ friendlyName: "Terms of Service Link",
2355
+ type: "url",
2356
+ localized: false,
2357
+ helperText: "Link to the terms of service page",
2358
+ defaultCollapsed: true
2359
+ },
2360
+ {
2361
+ name: "subscriptionTermsLink",
2362
+ friendlyName: "Subscription Terms of Service Link",
2363
+ type: "url",
2364
+ localized: false,
2365
+ helperText: "Link to the subscription terms of service page",
2366
+ defaultCollapsed: true
2367
+ },
2368
+ {
2369
+ name: "privacyLink",
2370
+ friendlyName: "Privacy Policy Link",
2371
+ type: "url",
2372
+ localized: false,
2373
+ helperText: "Link to the privacy policy page",
2374
+ defaultCollapsed: true
2375
+ },
2376
+ {
2377
+ name: "ccpaLink",
2378
+ friendlyName: "CCPA Link",
2379
+ type: "url",
2380
+ localized: false,
2381
+ helperText: "Link to the CCPA page",
2382
+ defaultCollapsed: true
2383
+ },
2384
+ {
2385
+ name: "bbbLink",
2386
+ friendlyName: "BBB Link",
2387
+ type: "url",
2388
+ localized: false,
2389
+ helperText: "Link to the Better Business Bureau page",
2390
+ defaultCollapsed: true
2391
+ },
2392
+ {
2393
+ name: "accessibiltyLink",
2394
+ friendlyName: "Accessibility Link",
2395
+ type: "url",
2396
+ localized: false,
2397
+ helperText: "Link to the accessibility page",
2398
+ defaultCollapsed: true
2399
+ },
2400
+ {
2401
+ name: "socialMedia",
2402
+ friendlyName: "Social Media Links",
2403
+ type: "object",
2404
+ localized: false,
2405
+ helperText: "",
2406
+ defaultCollapsed: true,
2407
+ subFields: [
2408
+ {
2409
+ name: "twitter",
2410
+ friendlyName: "Twitter",
2411
+ type: "url",
2412
+ localized: false,
2413
+ helperText: "",
2414
+ defaultCollapsed: true
2415
+ },
2416
+ {
2417
+ name: "facebook",
2418
+ friendlyName: "Facebook",
2419
+ type: "url",
2420
+ localized: false,
2421
+ helperText: "",
2422
+ defaultCollapsed: true
2423
+ },
2424
+ {
2425
+ name: "youtube",
2426
+ friendlyName: "Youtube",
2427
+ type: "url",
2428
+ localized: false,
2429
+ helperText: "",
2430
+ defaultCollapsed: true
2431
+ },
2432
+ {
2433
+ name: "instagram",
2434
+ friendlyName: "Instagram",
2435
+ type: "url",
2436
+ localized: false,
2437
+ helperText: "",
2438
+ defaultCollapsed: true
2439
+ },
2440
+ {
2441
+ name: "pinterest",
2442
+ friendlyName: "Pinterest",
2443
+ type: "url",
2444
+ localized: false,
2445
+ helperText: "",
2446
+ defaultCollapsed: true
2447
+ },
2448
+ {
2449
+ name: "tiktok",
2450
+ friendlyName: "Tiktok",
2451
+ type: "url",
2452
+ localized: false,
2453
+ helperText: "",
2454
+ defaultCollapsed: true
2455
+ }
2456
+ ]
2457
+ }
2458
+ ]
2459
+ },
2460
+ {
2461
+ name: "banners",
2462
+ friendlyName: "Banners",
2463
+ helperText: `Select the banner(s) to display site-wide. These will be displayed in the
2464
+ order provided, and always above page-specific announcements`,
2465
+ type: "list",
2466
+ defaultCollapsed: true,
2467
+ localized: false,
2468
+ subFields: [
2469
+ {
2470
+ name: "banner",
2471
+ friendlyName: "Sitewide Banner",
2472
+ type: "reference",
2473
+ localized: false,
2474
+ helperText: "Select the banner to display.",
2475
+ defaultCollapsed: true,
2476
+ modelId: bannerModelId,
2477
+ copyOnAdd: false
2478
+ },
2479
+ {
2480
+ name: "alwaysShow",
2481
+ friendlyName: "Always Show?",
2482
+ type: "boolean",
2483
+ localized: false,
2484
+ helperText: 'By default, we hide sitewide banners on the classic "cart" pages. Use this setting to bypass those restrictions',
2485
+ defaultCollapsed: true
2486
+ }
2487
+ ]
2488
+ }
2489
+ ];
2490
+ };
2491
+
2492
+ // src/data/brand-config/index.ts
2493
+ var createBrandConfigModel = (gridFilterModelId, bannerModelId) => {
2494
+ return {
2495
+ name: "gh-brand-config",
2496
+ kind: "data",
2497
+ displayName: "Brand Configuration",
2498
+ helperText: "Manage global features and settings for your website",
2499
+ contentTitleField: void 0,
2500
+ fields: [
2501
+ ...createGeneralConfig(bannerModelId),
2502
+ createHeaderConfig(),
2503
+ createFooterConfig(),
2504
+ createFeatureConfig(gridFilterModelId),
2505
+ createSupportConfig(),
2506
+ createPageConfig(),
2507
+ createCookieConfig()
2508
+ ]
2509
+ };
2510
+ };
2511
+
2512
+ // src/data/blog-category.model.ts
2513
+ var createBlogCategoryModel = () => ({
2514
+ name: "blog-category",
2515
+ displayName: "Blog Category",
2516
+ kind: "data",
2517
+ helperText: "Category for blog categorization",
2518
+ contentTitleField: void 0,
2519
+ fields: [
2520
+ {
2521
+ name: "name",
2522
+ friendlyName: "Name",
2523
+ helperText: "Name of the category",
2524
+ type: "text",
2525
+ defaultCollapsed: false,
2526
+ localized: true,
2527
+ required: true
2528
+ },
2529
+ {
2530
+ name: "description",
2531
+ friendlyName: "Category Description",
2532
+ helperText: "Provide a description of the category. This may be used in components.",
2533
+ type: "html",
2534
+ defaultCollapsed: false,
2535
+ localized: true,
2536
+ required: false
2537
+ },
2538
+ {
2539
+ name: "slug",
2540
+ friendlyName: "Slug",
2541
+ helperText: "Path to use for linking to this category",
2542
+ type: "text",
2543
+ defaultCollapsed: false,
2544
+ localized: false,
2545
+ required: true
2546
+ },
2547
+ {
2548
+ name: "parentId",
2549
+ friendlyName: "Parent Category Id",
2550
+ helperText: "If this category is a child, provide the Id of the parent category",
2551
+ type: "text",
2552
+ required: false,
2553
+ defaultCollapsed: true,
2554
+ localized: false
2555
+ }
2556
+ ]
2557
+ });
2558
+
2559
+ // src/data/blog-comment.model.ts
2560
+ var BlogCommentModel = {
2561
+ name: "blog-comment",
2562
+ displayName: "Blog Comment",
2563
+ kind: "data",
2564
+ helperText: `Comments on your website's blogs`,
2565
+ contentTitleField: void 0,
2566
+ fields: [
2567
+ {
2568
+ name: "name",
2569
+ friendlyName: "Name",
2570
+ helperText: "Name of the user who submitted this comment",
2571
+ type: "text",
2572
+ defaultCollapsed: false,
2573
+ localized: false,
2574
+ required: true
2575
+ },
2576
+ {
2577
+ name: "date",
2578
+ friendlyName: "Date",
2579
+ helperText: "Date this comment was submitted",
2580
+ type: "timestamp",
2581
+ defaultCollapsed: false,
2582
+ localized: false,
2583
+ required: true
2584
+ },
2585
+ {
2586
+ name: "status",
2587
+ friendlyName: "Status",
2588
+ helperText: `Select the status of this comment. Only Approved comments will be displayed`,
2589
+ type: "select",
2590
+ enum: ["Pending Approval", "Approved", "Rejected"],
2591
+ defaultValue: "Pending Approval",
2592
+ defaultCollapsed: false,
2593
+ localized: false,
2594
+ required: true
2595
+ },
2596
+ {
2597
+ type: "text",
2598
+ name: "email",
2599
+ friendlyName: "Email",
2600
+ required: false,
2601
+ defaultCollapsed: false
2602
+ },
2603
+ {
2604
+ type: "html",
2605
+ name: "comment",
2606
+ friendlyName: "Comment",
2607
+ helperText: "HTML content of the comment",
2608
+ required: true,
2609
+ defaultCollapsed: false
2610
+ },
2611
+ {
2612
+ name: "language",
2613
+ friendlyName: "Language",
2614
+ helperText: `The language code of this comment. Legacy comments are synced as 'en'`,
2615
+ type: "select",
2616
+ enum: ["en"],
2617
+ defaultCollapsed: true,
2618
+ localized: false,
2619
+ defaultValue: "en",
2620
+ required: true
2621
+ },
2622
+ {
2623
+ name: "locale",
2624
+ friendlyName: "Locale",
2625
+ helperText: `The country code of this comment. Legacy comments are synced as 'US'`,
2626
+ type: "select",
2627
+ enum: ["US"],
2628
+ defaultValue: "US",
2629
+ defaultCollapsed: true,
2630
+ localized: false,
2631
+ required: true
2632
+ },
2633
+ {
2634
+ name: "parentId",
2635
+ friendlyName: "Parent Comment Id",
2636
+ helperText: "If this comment is a reply, this is the Id of the parent",
2637
+ type: "text",
2638
+ required: false,
2639
+ defaultCollapsed: true
2640
+ },
2641
+ {
2642
+ name: "internal",
2643
+ friendlyName: "Brand Response",
2644
+ helperText: "Indicates that this is a comment provided by the brand (i.e. a response)",
2645
+ type: "boolean",
2646
+ defaultCollapsed: false,
2647
+ required: false
2648
+ }
2649
+ ],
2650
+ hideFromUI: true
2651
+ };
2652
+ var createBlogCommentModel = (pageModelId) => {
2653
+ return {
2654
+ ...BlogCommentModel,
2655
+ fields: [
2656
+ ...BlogCommentModel.fields,
2657
+ {
2658
+ name: "blog",
2659
+ friendlyName: "Blog Post",
2660
+ helperText: "The blog that this comment is linked to",
2661
+ type: "reference",
2662
+ modelId: pageModelId,
2663
+ required: true,
2664
+ defaultCollapsed: false,
2665
+ copyOnAdd: false
2666
+ }
2667
+ ]
2668
+ };
2669
+ };
2670
+
2671
+ // src/data/product.model.ts
2672
+ var createProductModel = (request) => {
2673
+ return {
2674
+ name: "product",
2675
+ displayName: "Product",
2676
+ kind: "data",
2677
+ helperText: "Product Catalog",
2678
+ contentTitleField: "name",
2679
+ fields: [
2680
+ {
2681
+ name: "displayName",
2682
+ friendlyName: "Display Name",
2683
+ type: "text",
2684
+ required: true,
2685
+ localized: true,
2686
+ defaultCollapsed: true,
2687
+ helperText: "This is the name that will be displayed to the customer"
2688
+ },
2689
+ {
2690
+ name: "featuredImage",
2691
+ friendlyName: "Featured Image",
2692
+ helperText: "Displayed on the product card",
2693
+ defaultCollapsed: true,
2694
+ type: "file",
2695
+ showTemplatePicker: true,
2696
+ allowedFileTypes: ["jpeg", "png", "svg", "webp"]
2697
+ },
2698
+ {
2699
+ name: "secondaryImage",
2700
+ friendlyName: "Secondary Image",
2701
+ helperText: "Displayed on the product card hover for some grids",
2702
+ defaultCollapsed: true,
2703
+ type: "file",
2704
+ showTemplatePicker: true,
2705
+ allowedFileTypes: ["jpeg", "png", "svg", "webp"]
2706
+ },
2707
+ {
2708
+ name: "subHeading",
2709
+ defaultCollapsed: true,
2710
+ friendlyName: "Product Headline",
2711
+ helperText: "Subheading (tagline) for the product, displayed on the product card",
2712
+ type: "text",
2713
+ localized: true
2714
+ },
2715
+ {
2716
+ name: "gridTagline",
2717
+ defaultCollapsed: true,
2718
+ friendlyName: "Grid Tagline",
2719
+ helperText: "By default, we use the Product Headline field. Use this to override the tagline when displayed on the product grid.",
2720
+ type: "text",
2721
+ required: false,
2722
+ localized: true
2723
+ },
2724
+ {
2725
+ name: "gridDescription",
2726
+ defaultCollapsed: true,
2727
+ friendlyName: "Grid Description",
2728
+ helperText: "A small description, used on some product grids as an additional sub-heading or tagline.",
2729
+ type: "text",
2730
+ required: false,
2731
+ localized: true
2732
+ },
2733
+ {
2734
+ name: "shortDescription",
2735
+ defaultCollapsed: true,
2736
+ friendlyName: "Short Description",
2737
+ helperText: "Short description of the product, typically displayed on the PDP",
2738
+ type: "html",
2739
+ required: false,
2740
+ localized: true
2741
+ },
2742
+ {
2743
+ name: "quote",
2744
+ friendlyName: "Quote",
2745
+ defaultCollapsed: true,
2746
+ helperText: "A quote provided by the brand guru or spokesperson",
2747
+ type: "html",
2748
+ localized: true,
2749
+ required: false
2750
+ },
2751
+ {
2752
+ name: "packagingLabels",
2753
+ friendlyName: "Packaging Labels",
2754
+ defaultCollapsed: true,
2755
+ type: "object",
2756
+ subFields: [
2757
+ {
2758
+ name: "singular",
2759
+ friendlyName: "Singular",
2760
+ defaultCollapsed: true,
2761
+ type: "text",
2762
+ required: true,
2763
+ localized: true,
2764
+ helperText: "Provides the name of the packaging for single product (e.g. Unit, Jar, etc.)"
2765
+ },
2766
+ {
2767
+ name: "plural",
2768
+ defaultCollapsed: true,
2769
+ friendlyName: "Plural",
2770
+ type: "text",
2771
+ required: true,
2772
+ localized: true,
2773
+ helperText: "Provides the name of the packaging for multiple quantities of the product (e.g. Units, Jars, etc.)"
2774
+ }
2775
+ ]
2776
+ },
2777
+ {
2778
+ name: "hidden",
2779
+ friendlyName: "Hide Product",
2780
+ type: "boolean",
2781
+ required: false,
2782
+ localized: true,
2783
+ defaultCollapsed: true,
2784
+ helperText: "When true, this product will not be displayed in product grids or search results for this locale"
2785
+ },
2786
+ {
2787
+ name: "outOfStock",
2788
+ friendlyName: "Out of Stock",
2789
+ type: "boolean",
2790
+ required: false,
2791
+ defaultCollapsed: true,
2792
+ helperText: "Indicates whether this product is currently out of stock. When true, this product is not eligible for purchase."
2793
+ },
2794
+ {
2795
+ name: "cartOutOfStock",
2796
+ friendlyName: "Out of Stock (Site)",
2797
+ type: "boolean",
2798
+ required: false,
2799
+ defaultCollapsed: true,
2800
+ helperText: "Indicates that this product should be presented as out of stock on the site, even if it is not truly out of stock. This is used as an override for special cases where the product should not be purchasable on the site while remaining purchasable elsewhere."
2801
+ },
2802
+ {
2803
+ name: "upc",
2804
+ defaultCollapsed: true,
2805
+ friendlyName: "UPC Code",
2806
+ type: "text",
2807
+ required: false,
2808
+ helperText: "The UPC code of this product"
2809
+ },
2810
+ {
2811
+ name: "reviews",
2812
+ friendlyName: "Review Data",
2813
+ helperText: "Stores review data for this product. These values are automatically generated and should not be modified.",
2814
+ type: "object",
2815
+ defaultCollapsed: true,
2816
+ subFields: [
2817
+ {
2818
+ name: "id",
2819
+ defaultCollapsed: true,
2820
+ friendlyName: "Review ID",
2821
+ type: "text",
2822
+ required: true,
2823
+ localized: false,
2824
+ helperText: "ID used by the review service to identify this product. Do not modify this value."
2825
+ },
2826
+ {
2827
+ defaultCollapsed: true,
2828
+ name: "count",
2829
+ friendlyName: "Review Count",
2830
+ type: "number",
2831
+ defaultValue: 0,
2832
+ required: true,
2833
+ localized: false,
2834
+ helperText: "The number of reviews for this product. This value is automatically updated by the review service."
2835
+ },
2836
+ {
2837
+ name: "averageRating",
2838
+ friendlyName: "Average Rating",
2839
+ type: "number",
2840
+ defaultCollapsed: true,
2841
+ defaultValue: 0,
2842
+ required: true,
2843
+ localized: false,
2844
+ helperText: "The average rating for this product. This value is automatically updated by the review service."
2845
+ }
2846
+ ]
2847
+ },
2848
+ {
2849
+ name: "tags",
2850
+ friendlyName: "Tags",
2851
+ type: "list",
2852
+ localized: true,
2853
+ defaultCollapsed: true,
2854
+ subFields: [
2855
+ {
2856
+ type: "reference",
2857
+ modelId: request.tagModelId,
2858
+ name: "tag",
2859
+ friendlyName: "Tag",
2860
+ copyOnAdd: false,
2861
+ defaultCollapsed: true
2862
+ }
2863
+ ]
2864
+ },
2865
+ {
2866
+ name: "categories",
2867
+ friendlyName: "Categories",
2868
+ type: "list",
2869
+ localized: true,
2870
+ defaultCollapsed: true,
2871
+ subFields: [
2872
+ {
2873
+ type: "reference",
2874
+ modelId: request.categoryModelId,
2875
+ name: "category",
2876
+ friendlyName: "Category",
2877
+ copyOnAdd: false,
2878
+ defaultCollapsed: true
2879
+ }
2880
+ ]
2881
+ },
2882
+ {
2883
+ name: "ingredients",
2884
+ friendlyName: "Ingredients",
2885
+ type: "list",
2886
+ localized: true,
2887
+ defaultCollapsed: true,
2888
+ subFields: [
2889
+ {
2890
+ type: "reference",
2891
+ modelId: request.ingredientsModelId,
2892
+ name: "ingredient",
2893
+ friendlyName: "Ingredient",
2894
+ copyOnAdd: false,
2895
+ defaultCollapsed: true
2896
+ }
2897
+ ]
2898
+ },
2899
+ {
2900
+ name: "useCases",
2901
+ defaultCollapsed: true,
2902
+ friendlyName: "Use Cases",
2903
+ type: "list",
2904
+ localized: true,
2905
+ subFields: [
2906
+ {
2907
+ type: "reference",
2908
+ modelId: request.useCaseModelId,
2909
+ name: "useCase",
2910
+ friendlyName: "Use Case",
2911
+ copyOnAdd: false,
2912
+ defaultCollapsed: true
2913
+ }
2914
+ ]
2915
+ },
2916
+ {
2917
+ name: "name",
2918
+ friendlyName: "Name",
2919
+ type: "text",
2920
+ required: true,
2921
+ defaultCollapsed: true,
2922
+ localized: false,
2923
+ helperText: "Internal name for the product, used for identification in the CMS"
2924
+ },
2925
+ {
2926
+ name: "gh",
2927
+ friendlyName: "Golden Hippo Integration Data",
2928
+ helperText: "Stores integration data for Golden Hippo. Do not modify any of these values.",
2929
+ type: "object",
2930
+ subFields: [
2931
+ {
2932
+ name: "slug",
2933
+ friendlyName: "Page Slug",
2934
+ type: "text",
2935
+ required: true,
2936
+ localized: false,
2937
+ defaultCollapsed: true,
2938
+ helperText: "This is the URL slug for this product. This value is unique and required for cross-environment development. Do not modify this value."
2939
+ },
2940
+ {
2941
+ name: "productionId",
2942
+ friendlyName: "Production ID",
2943
+ type: "text",
2944
+ required: true,
2945
+ localized: false,
2946
+ defaultCollapsed: true,
2947
+ helperText: "This is the unique identifier for this product in the production environment. Do not modify this value."
2948
+ },
2949
+ {
2950
+ name: "type",
2951
+ friendlyName: "Product Type",
2952
+ type: "select",
2953
+ required: true,
2954
+ localized: false,
2955
+ defaultCollapsed: true,
2956
+ enum: ["Product", "Bundle", "Trial Size"],
2957
+ defaultValue: "Product",
2958
+ helperText: "Product Type"
2959
+ }
2960
+ ],
2961
+ defaultCollapsed: true,
2962
+ localized: false
2963
+ }
2964
+ ]
2965
+ };
2966
+ };
2967
+
2968
+ // src/data/product-group.model.ts
2969
+ var createProductGroupModel = (productModelId) => {
2970
+ return {
2971
+ name: "product-group",
2972
+ displayName: "Product Group",
2973
+ kind: "data",
2974
+ helperText: "Groups related products together (e.g. flavors, trial sizes).",
2975
+ contentTitleField: "displayName",
2976
+ fields: [
2977
+ {
2978
+ name: "displayName",
2979
+ friendlyName: "Display Name",
2980
+ type: "text",
2981
+ required: true,
2982
+ defaultCollapsed: true,
2983
+ localized: true,
2984
+ helperText: "The display name of this product group."
2985
+ },
2986
+ {
2987
+ name: "featuredImage",
2988
+ friendlyName: "Featured Image",
2989
+ type: "file",
2990
+ defaultCollapsed: true,
2991
+ showTemplatePicker: true,
2992
+ allowedFileTypes: ["jpeg", "png", "svg", "webp"],
2993
+ helperText: "The primary image of this product group."
2994
+ },
2995
+ {
2996
+ name: "subHeading",
2997
+ friendlyName: "Sub Heading",
2998
+ type: "text",
2999
+ required: false,
3000
+ defaultCollapsed: true,
3001
+ localized: true,
3002
+ helperText: "A short tagline displayed beneath the group name."
3003
+ },
3004
+ {
3005
+ name: "gridTagline",
3006
+ friendlyName: "Grid Tagline",
3007
+ type: "text",
3008
+ required: false,
3009
+ defaultCollapsed: true,
3010
+ localized: true,
3011
+ helperText: "A short tagline displayed on product grid cards."
3012
+ },
3013
+ {
3014
+ name: "shortDescription",
3015
+ friendlyName: "Short Description",
3016
+ type: "longText",
3017
+ required: false,
3018
+ defaultCollapsed: true,
3019
+ localized: true,
3020
+ helperText: "A short description of the product group."
3021
+ },
3022
+ {
3023
+ name: "products",
3024
+ friendlyName: "Products",
3025
+ type: "list",
3026
+ defaultCollapsed: true,
3027
+ helperText: "The products in this group.",
3028
+ subFields: [
3029
+ {
3030
+ name: "product",
3031
+ friendlyName: "Product",
3032
+ type: "reference",
3033
+ defaultCollapsed: false,
3034
+ modelId: productModelId,
3035
+ copyOnAdd: false
3036
+ },
3037
+ {
3038
+ name: "displayName",
3039
+ friendlyName: "Display Name",
3040
+ type: "text",
3041
+ defaultCollapsed: false,
3042
+ localized: true,
3043
+ helperText: "Override display name for this product in the group context."
3044
+ },
3045
+ {
3046
+ name: "isTrialSize",
3047
+ friendlyName: "Is Trial Size",
3048
+ type: "boolean",
3049
+ defaultCollapsed: false,
3050
+ helperText: "Whether this product is a trial size variant."
3051
+ }
3052
+ ]
3053
+ },
3054
+ {
3055
+ name: "selectionLabel",
3056
+ friendlyName: "Selection Label",
3057
+ type: "text",
3058
+ required: false,
3059
+ defaultCollapsed: true,
3060
+ localized: true,
3061
+ helperText: 'Label for the product selector (e.g. "Choose your flavor").'
3062
+ },
3063
+ {
3064
+ name: "hidden",
3065
+ friendlyName: "Hide Group",
3066
+ type: "boolean",
3067
+ required: false,
3068
+ defaultCollapsed: true,
3069
+ localized: true,
3070
+ helperText: "When true, this product group will not be displayed."
3071
+ },
3072
+ {
3073
+ name: "gh",
3074
+ friendlyName: "Golden Hippo",
3075
+ type: "object",
3076
+ defaultCollapsed: true,
3077
+ subFields: [
3078
+ {
3079
+ name: "productionId",
3080
+ friendlyName: "Production ID",
3081
+ type: "text",
3082
+ defaultCollapsed: false,
3083
+ helperText: "The production environment content ID for this product group."
3084
+ },
3085
+ {
3086
+ name: "slug",
3087
+ friendlyName: "Slug",
3088
+ type: "text",
3089
+ defaultCollapsed: false,
3090
+ helperText: "URL slug for this product group."
3091
+ }
3092
+ ]
3093
+ },
3094
+ {
3095
+ name: "groupType",
3096
+ friendlyName: "Group Type",
3097
+ type: "select",
3098
+ defaultCollapsed: true,
3099
+ enum: ["Flavor/Option Group" /* FlavorOptionGroup */, "Trial Group" /* TrialGroup */],
3100
+ helperText: "The type of product grouping."
3101
+ },
3102
+ {
3103
+ name: "name",
3104
+ friendlyName: "Group Name",
3105
+ type: "text",
3106
+ required: true,
3107
+ defaultCollapsed: true,
3108
+ localized: false,
3109
+ helperText: "The internal name for this product group."
3110
+ }
3111
+ ]
3112
+ };
3113
+ };
3114
+
3115
+ // src/data/product-category.model.ts
3116
+ var createCategoryModel = () => ({
3117
+ name: "product-category",
3118
+ kind: "data",
3119
+ displayName: "Product Category",
3120
+ helperText: "Categories for products",
3121
+ contentTitleField: "name",
3122
+ fields: [
3123
+ {
3124
+ name: "name",
3125
+ friendlyName: "Category",
3126
+ type: "text",
3127
+ required: true,
3128
+ defaultCollapsed: true,
3129
+ localized: true
3130
+ },
3131
+ {
3132
+ name: "description",
3133
+ friendlyName: "Description",
3134
+ type: "longText",
3135
+ required: false,
3136
+ defaultCollapsed: true,
3137
+ localized: true
3138
+ },
3139
+ {
3140
+ name: "desktopImage",
3141
+ friendlyName: "Desktop Image",
3142
+ type: "file",
3143
+ defaultCollapsed: true,
3144
+ showTemplatePicker: true,
3145
+ allowedFileTypes: ["jpeg", "png", "svg", "webp"]
3146
+ },
3147
+ {
3148
+ name: "mobileImage",
3149
+ defaultCollapsed: true,
3150
+ friendlyName: "Mobile Image",
3151
+ type: "file",
3152
+ showTemplatePicker: true,
3153
+ allowedFileTypes: ["jpeg", "png", "svg", "webp"]
3154
+ },
3155
+ {
3156
+ name: "hidden",
3157
+ friendlyName: "Hide Category",
3158
+ type: "boolean",
3159
+ required: false,
3160
+ localized: true,
3161
+ defaultCollapsed: true,
3162
+ helperText: "When true, this category will not be displayed in product grids or search results for this locale"
3163
+ },
3164
+ {
3165
+ name: "slug",
3166
+ friendlyName: "Page Slug",
3167
+ type: "text",
3168
+ defaultCollapsed: true,
3169
+ helperText: 'If this category has a specific web page, provide the path here without a leading slash (e.g. "shop/supplements") for use in breadcrumb navigation. By default, the path "shop" will be used.',
3170
+ required: false,
3171
+ localized: false
3172
+ },
3173
+ {
3174
+ name: "searchKeys",
3175
+ friendlyName: "Search Keys",
3176
+ type: "Tags",
3177
+ defaultCollapsed: true,
3178
+ helperText: 'Used when building links (e.g. "products?category=[Search Key]")',
3179
+ required: false,
3180
+ localized: false
3181
+ }
3182
+ ]
3183
+ });
3184
+
3185
+ // src/data/product-grid-filter-group.model.ts
3186
+ var createProductGridConfigModel = (models) => {
3187
+ return {
3188
+ name: "product-grid-filter-group",
3189
+ displayName: "Product Grid Filter Group",
3190
+ kind: "data",
3191
+ helperText: "Build filter group configurations. These can be applied in the brand configuration",
3192
+ contentTitleField: "displayName",
3193
+ fields: [
3194
+ {
3195
+ name: "displayName",
3196
+ friendlyName: "Display Name/Label",
3197
+ type: "text",
3198
+ localized: true,
3199
+ defaultCollapsed: false,
3200
+ helperText: "Provide a name to display for this grouping",
3201
+ makeEntryTitle: true
3202
+ },
3203
+ {
3204
+ name: "categories",
3205
+ friendlyName: "Categories",
3206
+ helperText: "Categories for this group",
3207
+ type: "list",
3208
+ defaultCollapsed: true,
3209
+ subFields: [
3210
+ {
3211
+ name: "category",
3212
+ friendlyName: "Category",
3213
+ type: "reference",
3214
+ modelId: models.categoryId,
3215
+ required: true,
3216
+ localized: false,
3217
+ copyOnAdd: true,
3218
+ defaultCollapsed: false
3219
+ // makeEntryTitle: true,
3220
+ }
3221
+ ]
3222
+ },
3223
+ {
3224
+ name: "ingredients",
3225
+ friendlyName: "Ingredients",
3226
+ helperText: "Ingredients for this group",
3227
+ type: "list",
3228
+ defaultCollapsed: true,
3229
+ subFields: [
3230
+ {
3231
+ name: "ingredient",
3232
+ friendlyName: "Ingredient",
3233
+ type: "reference",
3234
+ modelId: models.ingredientId,
3235
+ required: true,
3236
+ localized: false,
3237
+ copyOnAdd: true,
3238
+ defaultCollapsed: false
3239
+ // makeEntryTitle: true,
3240
+ }
3241
+ ]
3242
+ },
3243
+ {
3244
+ name: "useCases",
3245
+ friendlyName: "Use Cases",
3246
+ helperText: "Use Cases for this group",
3247
+ type: "list",
3248
+ defaultCollapsed: true,
3249
+ subFields: [
3250
+ {
3251
+ name: "useCase",
3252
+ friendlyName: "Use Case",
3253
+ type: "reference",
3254
+ modelId: models.useCaseId,
3255
+ required: true,
3256
+ localized: false,
3257
+ copyOnAdd: true,
3258
+ defaultCollapsed: false
3259
+ // makeEntryTitle: true,
3260
+ }
3261
+ ],
3262
+ copyOnAdd: false
3263
+ },
3264
+ {
3265
+ name: "tags",
3266
+ friendlyName: "Tags",
3267
+ helperText: "Tags for this group",
3268
+ type: "list",
3269
+ defaultCollapsed: true,
3270
+ subFields: [
3271
+ {
3272
+ name: "tag",
3273
+ friendlyName: "Tag",
3274
+ type: "reference",
3275
+ modelId: models.tagId,
3276
+ required: true,
3277
+ localized: false,
3278
+ copyOnAdd: true,
3279
+ defaultCollapsed: false
3280
+ // makeEntryTitle: true,
3281
+ }
3282
+ ],
3283
+ copyOnAdd: false
3284
+ },
3285
+ {
3286
+ name: "filterApplicationType",
3287
+ friendlyName: "Filter Application Type",
3288
+ type: "select",
3289
+ enum: ["Inclusive" /* Inclusive */, "Exclusive" /* Exclusive */],
3290
+ defaultValue: "Inclusive",
3291
+ required: false,
3292
+ defaultCollapsed: true,
3293
+ helperText: "Select how this filter is applied in relation to other filters. When set to Exclusive, ALL results must match a selected filter of this group."
3294
+ }
3295
+ ]
3296
+ };
3297
+ };
3298
+
3299
+ // src/data/product-ingredient.model.ts
3300
+ var createIngredientsModel = () => ({
3301
+ name: "product-ingredient",
3302
+ displayName: "Product Ingredient",
3303
+ kind: "data",
3304
+ helperText: "Ingredients used in products",
3305
+ contentTitleField: "name",
3306
+ fields: [
3307
+ {
3308
+ "@type": "@builder.io/core:Field",
3309
+ name: "name",
3310
+ friendlyName: "Ingredient",
3311
+ type: "text",
3312
+ required: true,
3313
+ defaultCollapsed: true,
3314
+ localized: true,
3315
+ defaultValue: {
3316
+ "@type": "@builder.io/core:LocalizedValue"
3317
+ }
3318
+ },
3319
+ {
3320
+ "@type": "@builder.io/core:Field",
3321
+ name: "description",
3322
+ friendlyName: "Description",
3323
+ type: "longText",
3324
+ required: false,
3325
+ defaultCollapsed: true,
3326
+ localized: true,
3327
+ defaultValue: {
3328
+ "@type": "@builder.io/core:LocalizedValue"
3329
+ }
3330
+ },
3331
+ {
3332
+ "@type": "@builder.io/core:Field",
3333
+ name: "image",
3334
+ friendlyName: "Image",
3335
+ type: "file",
3336
+ showTemplatePicker: true,
3337
+ defaultCollapsed: true,
3338
+ allowedFileTypes: ["jpeg", "png", "svg", "webp"]
3339
+ },
3340
+ {
3341
+ "@type": "@builder.io/core:Field",
3342
+ name: "shortDescription",
3343
+ friendlyName: "Short Description",
3344
+ type: "longText",
3345
+ required: false,
3346
+ defaultCollapsed: true,
3347
+ localized: true,
3348
+ defaultValue: {
3349
+ "@type": "@builder.io/core:LocalizedValue"
3350
+ }
3351
+ },
3352
+ {
3353
+ "@type": "@builder.io/core:Field",
3354
+ name: "searchKeys",
3355
+ friendlyName: "Search Keys",
3356
+ type: "Tags",
3357
+ defaultCollapsed: true,
3358
+ helperText: 'Used when building links (e.g. "products?category=[Search Key]")',
3359
+ required: false,
3360
+ localized: false
3361
+ }
3362
+ ]
3363
+ });
3364
+
3365
+ // src/data/product-tag.model.ts
3366
+ var createProductTagModel = () => ({
3367
+ name: "product-tag",
3368
+ kind: "data",
3369
+ displayName: "Product Tag",
3370
+ helperText: "Provides a link between products across categories.",
3371
+ contentTitleField: "name",
3372
+ fields: [
3373
+ {
3374
+ name: "name",
3375
+ friendlyName: "Tag",
3376
+ type: "text",
3377
+ required: true,
3378
+ defaultCollapsed: true,
3379
+ localized: true
3380
+ },
3381
+ {
3382
+ name: "tagColor",
3383
+ friendlyName: "Color",
3384
+ type: "color",
3385
+ required: true,
3386
+ defaultCollapsed: true,
3387
+ localized: false,
3388
+ defaultValue: "gba(255, 233, 214, 1)"
3389
+ },
3390
+ {
3391
+ name: "hidden",
3392
+ friendlyName: "Hide Tag",
3393
+ type: "boolean",
3394
+ required: false,
3395
+ localized: true,
3396
+ defaultCollapsed: true,
3397
+ helperText: "When true, this tag will not be displayed in product grids or search results for this locale"
3398
+ },
3399
+ {
3400
+ name: "image",
3401
+ friendlyName: "Tag Image",
3402
+ type: "file",
3403
+ allowedFileTypes: ["jpeg", "png", "svg", "webp"],
3404
+ required: false,
3405
+ localized: true,
3406
+ defaultCollapsed: true,
3407
+ helperText: "For product grids that support tag images, you may provide the image here."
3408
+ },
3409
+ {
3410
+ name: "pluralDisplayName",
3411
+ friendlyName: "Plural Display Name",
3412
+ defaultCollapsed: true,
3413
+ type: "text",
3414
+ helperText: 'This is used when grouping/filtering. Allows us to display "Favorites" instead of "Fave", for example.',
3415
+ required: false,
3416
+ localized: true
3417
+ }
3418
+ ]
3419
+ });
3420
+
3421
+ // src/data/product-use-case.model.ts
3422
+ var createProductUseCaseModel = () => ({
3423
+ name: "product-use-case",
3424
+ kind: "data",
3425
+ displayName: "Product Use Case",
3426
+ helperText: "Provides a link between products used for the same goal.",
3427
+ contentTitleField: "name",
3428
+ fields: [
3429
+ {
3430
+ name: "name",
3431
+ defaultCollapsed: true,
3432
+ friendlyName: "Use Case",
3433
+ type: "text",
3434
+ required: true,
3435
+ localized: true
3436
+ },
3437
+ {
3438
+ name: "description",
3439
+ friendlyName: "Description",
3440
+ type: "longText",
3441
+ defaultCollapsed: true,
3442
+ required: false,
3443
+ localized: true
3444
+ },
3445
+ {
3446
+ name: "searchKeys",
3447
+ friendlyName: "Search Keys",
3448
+ type: "Tags",
3449
+ defaultCollapsed: true,
3450
+ helperText: 'Used when building links (e.g. "products?category=[Search Key]")',
3451
+ required: false,
3452
+ localized: false
3453
+ },
3454
+ {
3455
+ name: "image",
3456
+ friendlyName: "Image",
3457
+ defaultCollapsed: true,
3458
+ type: "file",
3459
+ showTemplatePicker: true,
3460
+ allowedFileTypes: ["jpeg", "png", "svg", "webp"]
3461
+ },
3462
+ {
3463
+ name: "hidden",
3464
+ friendlyName: "Hide Use Case",
3465
+ type: "boolean",
3466
+ required: false,
3467
+ localized: true,
3468
+ defaultCollapsed: true,
3469
+ helperText: "When true, this use case will not be displayed in product grids or search results for this locale"
3470
+ }
3471
+ ]
3472
+ });
3473
+
3474
+ export { createBlogCategoryModel, createBlogCommentModel, createBrandConfigModel, createCategoryModel, createIngredientsModel, createProductGridConfigModel, createProductGroupModel, createProductModel, createProductTagModel, createProductUseCaseModel };
3475
+ //# sourceMappingURL=index.mjs.map
3476
+ //# sourceMappingURL=index.mjs.map