@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.
package/dist/index.mjs ADDED
@@ -0,0 +1,4219 @@
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
+ // src/section/default-website-section.model.ts
3475
+ var createDefaultWebsiteSectionModel = (editUrl) => {
3476
+ return {
3477
+ name: "default-website-section",
3478
+ kind: "component",
3479
+ displayName: "Default Website Section",
3480
+ helperText: "Default section for the website",
3481
+ contentTitleField: void 0,
3482
+ fields: [
3483
+ {
3484
+ name: "sectionType",
3485
+ friendlyName: "Section Type",
3486
+ type: "select",
3487
+ required: true,
3488
+ localized: false,
3489
+ defaultCollapsed: true,
3490
+ enum: [
3491
+ "cartPageAboveSummaryContent",
3492
+ "cartPageBelowSummaryContent",
3493
+ "cartPageEmptyCartContent",
3494
+ "cartPageTopSectionContent",
3495
+ "gdprContent",
3496
+ "mainFooter",
3497
+ "offerSelectorAboveCTAContent",
3498
+ "offerSelectorBelowCTAContent",
3499
+ "subscriptionManagementNoSubsContent"
3500
+ ],
3501
+ helperText: "Section Type"
3502
+ }
3503
+ ],
3504
+ editingUrlLogic: "return `" + editUrl + "/builder-default-website-section?builder.preview=true&builder.frameEditing=true`"
3505
+ };
3506
+ };
3507
+
3508
+ // src/section/site-banner.model.ts
3509
+ var createSiteBannerModel = (editUrl) => {
3510
+ return {
3511
+ name: "banner",
3512
+ kind: "component",
3513
+ displayName: "Banner / Announcement",
3514
+ helperText: "Banners / Announcements to display on your website",
3515
+ contentTitleField: void 0,
3516
+ fields: [
3517
+ {
3518
+ name: "position",
3519
+ friendlyName: "Banner Position",
3520
+ type: "select",
3521
+ enum: ["Above Header" /* AboveHeader */, "Below Header" /* BelowHeader */],
3522
+ defaultValue: "Above Header",
3523
+ helperText: "Select where this banner should appear on the page",
3524
+ defaultCollapsed: true
3525
+ }
3526
+ ],
3527
+ editingUrlLogic: "return `" + editUrl + "/builder-banner-section?builder.preview=true&builder.frameEditing=true`"
3528
+ };
3529
+ };
3530
+
3531
+ // src/page/page.model.ts
3532
+ var createPageModel = (props) => {
3533
+ const { productModelId, productGroupModelId, categoryModelId, bannerModelId, blogCategoryModelId, editUrl } = props;
3534
+ return {
3535
+ name: "page",
3536
+ displayName: "Page",
3537
+ kind: "page",
3538
+ helperText: "Default model for creating pages",
3539
+ contentTitleField: void 0,
3540
+ fields: [
3541
+ {
3542
+ name: "title",
3543
+ friendlyName: "Title",
3544
+ type: "text",
3545
+ required: true,
3546
+ helperText: "A short title for this page. If the SEO Page Title is not provided, this field is used for SEO. This field is not localized, so it is highly suggested to use the Heading.",
3547
+ defaultCollapsed: false
3548
+ },
3549
+ {
3550
+ name: "pageType",
3551
+ friendlyName: "Page Type",
3552
+ type: "select",
3553
+ defaultValue: "General" /* GENERAL */,
3554
+ required: true,
3555
+ helperText: "Select the type of page. This will determine which components are added automatically.",
3556
+ enum: ["General" /* GENERAL */, "Blog" /* BLOG */, "Product" /* PRODUCT */],
3557
+ defaultCollapsed: false
3558
+ },
3559
+ {
3560
+ name: "pdp",
3561
+ friendlyName: "Product Detail Page",
3562
+ type: "object",
3563
+ required: false,
3564
+ subFields: [
3565
+ {
3566
+ name: "type",
3567
+ friendlyName: "Type",
3568
+ type: "select",
3569
+ defaultValue: "Product" /* PRODUCT */,
3570
+ required: true,
3571
+ helperText: "",
3572
+ enum: ["Product" /* PRODUCT */, "Product Group" /* PRODUCT_GROUP */],
3573
+ defaultCollapsed: false
3574
+ },
3575
+ {
3576
+ name: "product",
3577
+ friendlyName: "Product",
3578
+ type: "reference",
3579
+ required: false,
3580
+ helperText: "Select the product to display",
3581
+ modelId: productModelId,
3582
+ copyOnAdd: true,
3583
+ showIf: "return options.get('type') === 'Product'",
3584
+ defaultCollapsed: false
3585
+ },
3586
+ {
3587
+ name: "productGroup",
3588
+ friendlyName: "Product Group",
3589
+ type: "reference",
3590
+ required: false,
3591
+ helperText: "",
3592
+ modelId: productGroupModelId,
3593
+ copyOnAdd: true,
3594
+ showIf: "return options.get('type') === 'Product Group'",
3595
+ defaultCollapsed: false
3596
+ },
3597
+ {
3598
+ name: "slides",
3599
+ friendlyName: "Product Slides",
3600
+ type: "list",
3601
+ required: false,
3602
+ subFields: [
3603
+ {
3604
+ name: "image",
3605
+ friendlyName: "Image",
3606
+ type: "file",
3607
+ required: true,
3608
+ helperText: "",
3609
+ allowedFileTypes: ["jpeg", "png", "svg", "webp"],
3610
+ copyOnAdd: true,
3611
+ defaultCollapsed: false
3612
+ }
3613
+ ],
3614
+ helperText: "Select the image slides to display for this product. If no slides are provided, the product's default image will be used.",
3615
+ copyOnAdd: true,
3616
+ defaultCollapsed: false
3617
+ },
3618
+ {
3619
+ name: "slideThumbs",
3620
+ friendlyName: "Product Slides Thumbnails",
3621
+ type: "list",
3622
+ required: false,
3623
+ subFields: [
3624
+ {
3625
+ name: "image",
3626
+ friendlyName: "Image",
3627
+ type: "file",
3628
+ required: true,
3629
+ helperText: "",
3630
+ allowedFileTypes: ["jpeg", "png", "svg", "webp"],
3631
+ copyOnAdd: true,
3632
+ defaultCollapsed: false
3633
+ }
3634
+ ],
3635
+ helperText: "Select the image thumbnails slides to display for this product. If no slides are provided, the Product Slides will be used",
3636
+ copyOnAdd: true,
3637
+ defaultCollapsed: false
3638
+ },
3639
+ {
3640
+ name: "sliderComponent",
3641
+ type: "select",
3642
+ enum: ["Slider A" /* SLIDER_A */, "Slider B" /* SLIDER_B */],
3643
+ friendlyName: "Slider Component",
3644
+ defaultValue: "Slider A" /* SLIDER_A */,
3645
+ required: false,
3646
+ helperText: "Select the style slider component to use for the product images",
3647
+ defaultCollapsed: false
3648
+ },
3649
+ {
3650
+ "@type": "@builder.io/core:Field",
3651
+ name: "hideNativeOfferSelector",
3652
+ friendlyName: "Hide Native Offer Selector",
3653
+ helperText: "Set to true to fully hide the native Offer Selector to provide your own (e.g. via VWO)",
3654
+ type: "boolean",
3655
+ localized: false,
3656
+ defaultCollapsed: true,
3657
+ advanced: true
3658
+ },
3659
+ {
3660
+ name: "offerSelector",
3661
+ friendlyName: "Offer Selector",
3662
+ type: "object",
3663
+ required: false,
3664
+ subFields: [
3665
+ {
3666
+ name: "osType",
3667
+ friendlyName: "Type",
3668
+ type: "select",
3669
+ defaultValue: "Vertical - Flavor Dropdown - Type Toggle" /* VERTICAL__FLAVOR_DROPDOWN__TYPE_TOGGLE */,
3670
+ required: false,
3671
+ helperText: "Select the type of offer selector to display",
3672
+ enum: [
3673
+ "Vertical" /* VERTICAL */,
3674
+ "Vertical - Flavor Dropdown - Type Toggle" /* VERTICAL__FLAVOR_DROPDOWN__TYPE_TOGGLE */,
3675
+ "Stacked - Flavor Buttons - Quantity Toggle" /* STACKED__FLAVOR_BUTTONS__QUANTITY_TOGGLE */
3676
+ ],
3677
+ defaultCollapsed: false
3678
+ },
3679
+ {
3680
+ name: "features",
3681
+ friendlyName: "Features",
3682
+ type: "object",
3683
+ required: false,
3684
+ subFields: [
3685
+ {
3686
+ name: "defaultPurchaseType",
3687
+ friendlyName: "Default Purchase Type",
3688
+ type: "select",
3689
+ defaultValue: "One-Time Purchase" /* ONE_TIME */,
3690
+ required: false,
3691
+ helperText: "When both purchase options are available to the customer, this is the option that will be selected by default.",
3692
+ enum: ["One-Time Purchase" /* ONE_TIME */, "Subscription" /* SUBSCRIPTION */],
3693
+ defaultCollapsed: false
3694
+ },
3695
+ {
3696
+ name: "preferredQuantity",
3697
+ friendlyName: "Initial Offer Quantity",
3698
+ type: "number",
3699
+ defaultValue: 3,
3700
+ required: false,
3701
+ helperText: `Enter the quantity you would prefer users see first. If that quantity is not available,
3702
+ we will locate the closest quantity available (defaults to 3 if not set).`,
3703
+ defaultCollapsed: false
3704
+ },
3705
+ {
3706
+ name: "showSavings",
3707
+ friendlyName: "Show Savings?",
3708
+ type: "boolean",
3709
+ defaultValue: {
3710
+ Default: true
3711
+ },
3712
+ required: false,
3713
+ helperText: "",
3714
+ defaultCollapsed: false
3715
+ },
3716
+ {
3717
+ name: "savingsType",
3718
+ friendlyName: "Savings Type",
3719
+ type: "select",
3720
+ defaultValue: "percentage" /* PERCENT */,
3721
+ required: false,
3722
+ helperText: "When showing savings, display as a percentage or value saved.",
3723
+ enum: ["percentage" /* PERCENT */, "dollar" /* DOLLAR */],
3724
+ defaultCollapsed: false
3725
+ },
3726
+ {
3727
+ name: "showMemberPriceMessage",
3728
+ friendlyName: "Show Member Price Message",
3729
+ type: "boolean",
3730
+ defaultValue: {
3731
+ Default: true
3732
+ },
3733
+ required: false,
3734
+ helperText: "",
3735
+ defaultCollapsed: false
3736
+ },
3737
+ {
3738
+ name: "showSubscriptionPriceMessage",
3739
+ friendlyName: "Show Subscription Price Message",
3740
+ type: "boolean",
3741
+ defaultValue: {
3742
+ Default: true
3743
+ },
3744
+ required: false,
3745
+ helperText: "",
3746
+ defaultCollapsed: false
3747
+ },
3748
+ {
3749
+ name: "scrollToTopOffset",
3750
+ friendlyName: "Scroll to Top Offset (px)",
3751
+ type: "number",
3752
+ defaultValue: 170,
3753
+ required: false,
3754
+ helperText: 'The number of pixels to offset the Scroll to Top button. Note: The label for this button may be set in the "Labels" section.',
3755
+ defaultCollapsed: false
3756
+ },
3757
+ {
3758
+ name: "enableAnonymousSubscriptions",
3759
+ friendlyName: "Always Show Subscriptions",
3760
+ type: "boolean",
3761
+ defaultValue: {},
3762
+ required: false,
3763
+ helperText: "Enable this to present subscriptions (when available) to non-MyAccount visitors. By default, a user must be logged in to access this option.",
3764
+ defaultCollapsed: false,
3765
+ hidden: false,
3766
+ advanced: true
3767
+ }
3768
+ ],
3769
+ helperText: "",
3770
+ defaultCollapsed: false
3771
+ },
3772
+ {
3773
+ name: "labels",
3774
+ friendlyName: "Labels",
3775
+ type: "object",
3776
+ defaultValue: {
3777
+ subscriptionOffer: {
3778
+ Default: "Or $PRICE when you subscribe & save"
3779
+ },
3780
+ subscriptionToggle: {
3781
+ Default: "Subscribe & save"
3782
+ },
3783
+ scrollButton: {
3784
+ Default: '<span class="material-icons">keyboard_arrow_up</span> Back to top'
3785
+ },
3786
+ actionButton: {
3787
+ Default: "ADD TO CART"
3788
+ },
3789
+ outOfStockFormSuccess: {
3790
+ Default: '<p class="text-center">We will notify you as soon as this item is back in stock.</p>'
3791
+ },
3792
+ otpToggle: {
3793
+ Default: "Single purchase"
3794
+ },
3795
+ flavorSelector: {
3796
+ Default: "Choose a flavor"
3797
+ },
3798
+ outOfStock: {
3799
+ Default: 'Sorry, we"re currently out of stock'
3800
+ },
3801
+ memberOffer: {
3802
+ Default: "Or pay member price of"
3803
+ }
3804
+ },
3805
+ required: false,
3806
+ subFields: [
3807
+ {
3808
+ name: "actionButton",
3809
+ friendlyName: "Action Button",
3810
+ type: "text",
3811
+ defaultValue: {
3812
+ Default: "ADD TO CART"
3813
+ },
3814
+ required: false,
3815
+ helperText: "",
3816
+ defaultCollapsed: false
3817
+ },
3818
+ {
3819
+ name: "subscriptionOffer",
3820
+ friendlyName: "Subscription Offer",
3821
+ type: "text",
3822
+ defaultValue: {
3823
+ Default: "Or $PRICE when you subscribe & save"
3824
+ },
3825
+ required: false,
3826
+ helperText: "Use $PRICE to represent the price, this will be automatically replaced.",
3827
+ defaultCollapsed: false
3828
+ },
3829
+ {
3830
+ name: "memberOffer",
3831
+ friendlyName: "Member Offer",
3832
+ type: "text",
3833
+ defaultValue: {
3834
+ Default: "Or pay member price of"
3835
+ },
3836
+ required: false,
3837
+ helperText: "",
3838
+ defaultCollapsed: false
3839
+ },
3840
+ {
3841
+ name: "subscriptionToggle",
3842
+ friendlyName: "Subscription Toggle",
3843
+ type: "text",
3844
+ defaultValue: {
3845
+ Default: "Subscribe & save"
3846
+ },
3847
+ required: false,
3848
+ helperText: "The label for the button when selecting a subscription",
3849
+ defaultCollapsed: false
3850
+ },
3851
+ {
3852
+ name: "otpToggle",
3853
+ friendlyName: "One-Time Purchase Toggle",
3854
+ type: "text",
3855
+ defaultValue: {
3856
+ Default: "Single purchase"
3857
+ },
3858
+ required: false,
3859
+ helperText: "The label for the button when selecting a single purchase (otp).",
3860
+ defaultCollapsed: false
3861
+ },
3862
+ {
3863
+ name: "outOfStock",
3864
+ friendlyName: "Out of Stock",
3865
+ type: "text",
3866
+ defaultValue: {
3867
+ Default: 'Sorry, we"re currently out of stock'
3868
+ },
3869
+ required: false,
3870
+ helperText: "The text to display when this product is marked as Out of Stock.",
3871
+ defaultCollapsed: false
3872
+ },
3873
+ {
3874
+ name: "outOfStockFormSuccess",
3875
+ friendlyName: "OOS Form Success Message",
3876
+ type: "html",
3877
+ defaultValue: {
3878
+ Default: '<p class="text-center">We will notify you as soon as this item is back in stock.</p>'
3879
+ },
3880
+ required: false,
3881
+ helperText: "The message displayed when a user requests to be notified when this product is back in stock.",
3882
+ defaultCollapsed: false
3883
+ },
3884
+ {
3885
+ name: "scrollButton",
3886
+ friendlyName: "Scroll Button Content",
3887
+ type: "html",
3888
+ defaultValue: {
3889
+ Default: '<span class="material-icons">keyboard_arrow_up</span> Back to top'
3890
+ },
3891
+ required: false,
3892
+ helperText: "",
3893
+ defaultCollapsed: false
3894
+ },
3895
+ {
3896
+ name: "flavorSelector",
3897
+ friendlyName: "Flavor / Option Selector",
3898
+ type: "text",
3899
+ defaultValue: {
3900
+ Default: "Choose a flavor"
3901
+ },
3902
+ required: false,
3903
+ helperText: "",
3904
+ defaultCollapsed: false
3905
+ }
3906
+ ],
3907
+ helperText: "Customize the various labels on the offer selector",
3908
+ defaultCollapsed: false
3909
+ },
3910
+ {
3911
+ name: "bestSellerImage",
3912
+ friendlyName: "Best Seller Image",
3913
+ type: "file",
3914
+ allowedFileTypes: ["jpeg", "png", "svg", "webp"],
3915
+ defaultValue: "https://cdn.builder.io/api/v1/image/assets%2Fcf992cf7343c4ca182a884e9a45f394e%2F3805efcc18184db8bccf74d5c5aaf891?format=webp",
3916
+ required: false,
3917
+ helperText: "The small image to display alongside the best seller offer",
3918
+ defaultCollapsed: true
3919
+ },
3920
+ {
3921
+ name: "bestValueImage",
3922
+ friendlyName: "Best Value Image",
3923
+ type: "file",
3924
+ defaultValue: "https://cdn.builder.io/api/v1/image/assets%2Fcf992cf7343c4ca182a884e9a45f394e%2F82105508987e4459bc4405617d4bee33",
3925
+ required: false,
3926
+ helperText: "The small image to display alongside the best value offer (highest quantity)",
3927
+ allowedFileTypes: ["jpeg", "png", "svg", "webp"],
3928
+ defaultCollapsed: true
3929
+ },
3930
+ {
3931
+ name: "cssOverrides",
3932
+ friendlyName: "CSS Properties",
3933
+ type: "object",
3934
+ defaultValue: {},
3935
+ required: false,
3936
+ subFields: [
3937
+ {
3938
+ name: "signupOfferCustomCssProps",
3939
+ friendlyName: "Signup Offer CSS",
3940
+ type: "map",
3941
+ required: false,
3942
+ helperText: "",
3943
+ defaultCollapsed: false
3944
+ },
3945
+ {
3946
+ name: "signupOfferPriceCustomCssProps",
3947
+ friendlyName: "Signup Offer Price CSS",
3948
+ type: "map",
3949
+ required: false,
3950
+ helperText: "",
3951
+ defaultCollapsed: false
3952
+ }
3953
+ ],
3954
+ helperText: "",
3955
+ defaultCollapsed: true
3956
+ }
3957
+ ],
3958
+ helperText: "Configure the offer selector to display.",
3959
+ defaultCollapsed: true,
3960
+ showIf: "return !(options.get('hideNativeOfferSelector'))"
3961
+ },
3962
+ {
3963
+ name: "category",
3964
+ type: "reference",
3965
+ required: false,
3966
+ helperText: "Provide the category to display breadcrumb navigation",
3967
+ modelId: categoryModelId,
3968
+ copyOnAdd: true,
3969
+ friendlyName: "Category",
3970
+ defaultCollapsed: false
3971
+ }
3972
+ ],
3973
+ helperText: "Configure the PDP options",
3974
+ showIf: "return options.get('pageType') === 'Product'",
3975
+ defaultCollapsed: false
3976
+ },
3977
+ {
3978
+ name: "blog",
3979
+ friendlyName: "Blog Configuration",
3980
+ type: "object",
3981
+ required: false,
3982
+ subFields: [
3983
+ {
3984
+ name: "title",
3985
+ friendlyName: "Blog Title",
3986
+ helperText: "Provide a title for this blog when shown on a grid or list. If not provided, the page title will be used.",
3987
+ type: "text",
3988
+ required: false,
3989
+ localized: true,
3990
+ defaultCollapsed: false
3991
+ },
3992
+ {
3993
+ name: "publicationDate",
3994
+ friendlyName: "Publication Date",
3995
+ type: "timestamp",
3996
+ helperText: "Provide the publication date, this is used for sorting.",
3997
+ required: true,
3998
+ localized: false,
3999
+ defaultCollapsed: false
4000
+ },
4001
+ {
4002
+ name: "snippet",
4003
+ friendlyName: "Blog Snippet",
4004
+ helperText: "Provide a snippet of the blog to display when shown on a grid or list. If not provided, we will attempt to use the page description or SEO description (if available)",
4005
+ type: "longText",
4006
+ required: false,
4007
+ localized: true,
4008
+ defaultCollapsed: false
4009
+ },
4010
+ {
4011
+ name: "author",
4012
+ friendlyName: "Blog Author",
4013
+ type: "text",
4014
+ helperText: "Provide an author for this blog to display when shown on a grid or list.",
4015
+ required: false,
4016
+ localized: false,
4017
+ defaultCollapsed: false
4018
+ },
4019
+ {
4020
+ name: "thumbnail",
4021
+ friendlyName: "Blog Thumbnail",
4022
+ type: "file",
4023
+ required: false,
4024
+ helperText: "Provide an image to display when shown on a grid or list. If not provided, we will attempt to use the SEO image (if available)",
4025
+ allowedFileTypes: ["jpeg", "png", "svg", "webp"],
4026
+ copyOnAdd: true,
4027
+ defaultCollapsed: false
4028
+ },
4029
+ {
4030
+ name: "categories",
4031
+ friendlyName: "Blog Categories",
4032
+ type: "list",
4033
+ required: false,
4034
+ copyOnAdd: true,
4035
+ defaultCollapsed: true,
4036
+ subFields: [
4037
+ {
4038
+ name: "category",
4039
+ friendlyName: "Blog Category",
4040
+ type: "reference",
4041
+ modelId: blogCategoryModelId,
4042
+ required: true,
4043
+ defaultCollapsed: false,
4044
+ copyOnAdd: false
4045
+ }
4046
+ ]
4047
+ }
4048
+ ],
4049
+ helperText: "Configure the blog options",
4050
+ showIf: "return options.get('pageType') === 'Blog'",
4051
+ defaultCollapsed: true
4052
+ },
4053
+ {
4054
+ name: "heading",
4055
+ friendlyName: "SEO Page Title",
4056
+ type: "text",
4057
+ required: false,
4058
+ helperText: "Provide an alternate page title to use for SEO purposes (if blank, the page title is used)",
4059
+ defaultCollapsed: false
4060
+ },
4061
+ {
4062
+ name: "description",
4063
+ friendlyName: "SEO Description",
4064
+ type: "longText",
4065
+ required: false,
4066
+ helperText: "Set the page description for SEO here. This is automatically embedded in your page.",
4067
+ defaultCollapsed: true
4068
+ },
4069
+ {
4070
+ name: "seoImage",
4071
+ friendlyName: "SEO Image",
4072
+ type: "file",
4073
+ required: false,
4074
+ helperText: "Provide an image to be used for SEO purposes",
4075
+ allowedFileTypes: ["jpeg", "png", "svg", "webp"],
4076
+ copyOnAdd: true,
4077
+ defaultCollapsed: false
4078
+ },
4079
+ {
4080
+ name: "search",
4081
+ friendlyName: "Search Configuration",
4082
+ type: "object",
4083
+ required: false,
4084
+ subFields: [
4085
+ {
4086
+ name: "title",
4087
+ friendlyName: "Search Title",
4088
+ type: "text",
4089
+ required: false,
4090
+ helperText: "Used when showing this page in your site's search function. If no value is provided, the page title will be used.",
4091
+ defaultCollapsed: false
4092
+ },
4093
+ {
4094
+ name: "description",
4095
+ friendlyName: "Search Description",
4096
+ type: "text",
4097
+ required: false,
4098
+ helperText: "(Optional) Provide a description to be used when showing this page in search results. If no value is provided, the SEO description is used.",
4099
+ defaultCollapsed: false
4100
+ },
4101
+ {
4102
+ name: "hide",
4103
+ friendlyName: "Hide from Search",
4104
+ type: "boolean",
4105
+ required: false,
4106
+ helperText: "Use this to hide this page from search results. This does not prevent navigation to the page.",
4107
+ defaultCollapsed: false
4108
+ },
4109
+ {
4110
+ name: "content",
4111
+ friendlyName: "Content",
4112
+ type: "longText",
4113
+ required: false,
4114
+ helperText: "(Optional) Use this field to add keywords or phrases to assist in search results (e.g. related products, categories, key words, etc.)",
4115
+ defaultCollapsed: false
4116
+ }
4117
+ ],
4118
+ helperText: "Configure how this page displays in your site's built-in search results. Pages will not show in search results if neither the SEO or Search information is configured. You may also elect to hide the page from search results.",
4119
+ defaultCollapsed: true
4120
+ },
4121
+ {
4122
+ "@type": "@builder.io/core:Field",
4123
+ name: "banners",
4124
+ friendlyName: "Banners",
4125
+ helperText: `Select the banner(s) to display on this page. These will be displayed in the
4126
+ order provided, but always below site-wide banners.`,
4127
+ type: "list",
4128
+ defaultCollapsed: true,
4129
+ localized: false,
4130
+ subFields: [
4131
+ {
4132
+ "@type": "@builder.io/core:Field",
4133
+ name: "banner",
4134
+ friendlyName: "Sitewide Banner",
4135
+ type: "reference",
4136
+ localized: false,
4137
+ helperText: "Select the banner to display.",
4138
+ defaultCollapsed: true,
4139
+ modelId: bannerModelId,
4140
+ copyOnAdd: false
4141
+ }
4142
+ ]
4143
+ },
4144
+ {
4145
+ name: "disableStickyHeader",
4146
+ friendlyName: "Disable Sticky Header",
4147
+ helperText: "Disable the sticky header for this page only.",
4148
+ type: "boolean",
4149
+ localized: false,
4150
+ defaultCollapsed: true,
4151
+ advanced: true
4152
+ },
4153
+ {
4154
+ name: "showBundleDrawer",
4155
+ friendlyName: "Show Bundle Drawer",
4156
+ helperText: "Enable the bundle drawer for this page.",
4157
+ type: "boolean",
4158
+ localized: false,
4159
+ defaultCollapsed: true,
4160
+ advanced: true
4161
+ },
4162
+ {
4163
+ name: "robotsMeta",
4164
+ friendlyName: "Robots Meta",
4165
+ type: "object",
4166
+ required: false,
4167
+ helperText: "Settings for the robots meta tag.",
4168
+ subFields: [
4169
+ {
4170
+ name: "noIndex",
4171
+ friendlyName: "No Index",
4172
+ type: "boolean",
4173
+ required: false,
4174
+ defaultCollapsed: true,
4175
+ helperText: "Prevents pages from being indexed and displayed in search engine result pages"
4176
+ },
4177
+ {
4178
+ name: "noFollow",
4179
+ friendlyName: "No Follow",
4180
+ type: "boolean",
4181
+ required: false,
4182
+ defaultCollapsed: true,
4183
+ helperText: "Prevents search engines from following links on the pages"
4184
+ },
4185
+ {
4186
+ name: "noArchive",
4187
+ friendlyName: "No Archive",
4188
+ type: "boolean",
4189
+ required: false,
4190
+ defaultCollapsed: true,
4191
+ helperText: "Prevents search engines from showing Cached links for pages"
4192
+ },
4193
+ {
4194
+ name: "noImageIndex",
4195
+ friendlyName: "No Image Index",
4196
+ type: "boolean",
4197
+ required: false,
4198
+ defaultCollapsed: true,
4199
+ helperText: "This option prevents images on a page from being indexed by Google and other search engines"
4200
+ },
4201
+ {
4202
+ name: "noSnippet",
4203
+ friendlyName: "No Snippet",
4204
+ type: "boolean",
4205
+ required: false,
4206
+ defaultCollapsed: true,
4207
+ helperText: "Prevents a snippet from being shown in the search results"
4208
+ }
4209
+ ],
4210
+ defaultCollapsed: true
4211
+ }
4212
+ ],
4213
+ editingUrlLogic: "return `" + editUrl + "${targeting.urlPath}?builder.preview=true&builder.frameEditing=true`"
4214
+ };
4215
+ };
4216
+
4217
+ export { createBlogCategoryModel, createBlogCommentModel, createBrandConfigModel, createCategoryModel, createDefaultWebsiteSectionModel, createIngredientsModel, createPageModel, createProductGridConfigModel, createProductGroupModel, createProductModel, createProductTagModel, createProductUseCaseModel, createSiteBannerModel };
4218
+ //# sourceMappingURL=index.mjs.map
4219
+ //# sourceMappingURL=index.mjs.map