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