@orion-studios/payload-studio 0.5.0-beta.4 → 0.5.0-beta.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/admin/client.js +68 -7
  2. package/dist/admin/client.mjs +68 -7
  3. package/dist/admin/index.d.mts +1 -1
  4. package/dist/admin/index.d.ts +1 -1
  5. package/dist/admin/index.js +37 -0
  6. package/dist/admin/index.mjs +3 -1
  7. package/dist/admin-app/client.d.mts +4 -0
  8. package/dist/admin-app/client.d.ts +4 -0
  9. package/dist/admin-app/client.js +705 -2
  10. package/dist/admin-app/client.mjs +701 -1
  11. package/dist/admin-app/index.d.mts +1 -1
  12. package/dist/admin-app/index.d.ts +1 -1
  13. package/dist/admin-app/index.js +167 -0
  14. package/dist/admin-app/index.mjs +13 -1
  15. package/dist/admin-app/styles.css +127 -0
  16. package/dist/blocks/index.js +457 -5
  17. package/dist/blocks/index.mjs +2 -2
  18. package/dist/{chunk-J7W5EE3B.mjs → chunk-7IGLXLUB.mjs} +37 -0
  19. package/dist/{chunk-ZLLNO5FM.mjs → chunk-GNYOAC5N.mjs} +44 -13
  20. package/dist/{chunk-UJFU323N.mjs → chunk-LB72FZZ3.mjs} +33 -9
  21. package/dist/{chunk-ETRRXURT.mjs → chunk-SIL2J5MF.mjs} +14 -0
  22. package/dist/{chunk-PC5622T7.mjs → chunk-XQYJXB46.mjs} +444 -6
  23. package/dist/chunk-XVH5SCBD.mjs +234 -0
  24. package/dist/index-BBvk9b9i.d.mts +97 -0
  25. package/dist/index-BBvk9b9i.d.ts +97 -0
  26. package/dist/{index-DbH0Ljwp.d.mts → index-CpG3UHcS.d.mts} +1 -0
  27. package/dist/{index-DbH0Ljwp.d.ts → index-CpG3UHcS.d.ts} +1 -0
  28. package/dist/{index-DJFhANvJ.d.ts → index-Dj21uD_B.d.mts} +5 -2
  29. package/dist/{index-DJFhANvJ.d.mts → index-Dj21uD_B.d.ts} +5 -2
  30. package/dist/index.d.mts +3 -3
  31. package/dist/index.d.ts +3 -3
  32. package/dist/index.js +904 -204
  33. package/dist/index.mjs +12 -12
  34. package/dist/nextjs/index.d.mts +1 -1
  35. package/dist/nextjs/index.d.ts +1 -1
  36. package/dist/nextjs/index.js +290 -13
  37. package/dist/nextjs/index.mjs +4 -1
  38. package/dist/studio-pages/builder.css +25 -1
  39. package/dist/studio-pages/client.js +3593 -1279
  40. package/dist/studio-pages/client.mjs +3593 -1279
  41. package/dist/studio-pages/index.js +33 -8
  42. package/dist/studio-pages/index.mjs +2 -2
  43. package/package.json +24 -12
  44. package/dist/chunk-AAOHJDNS.mjs +0 -67
  45. package/dist/index-BallJs-K.d.mts +0 -43
  46. package/dist/index-BallJs-K.d.ts +0 -43
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  sectionStyleDefaults
3
- } from "./chunk-ETRRXURT.mjs";
3
+ } from "./chunk-SIL2J5MF.mjs";
4
4
  import {
5
5
  __export
6
6
  } from "./chunk-6BWS3CLP.mjs";
@@ -32,6 +32,9 @@ var defaultNodeData = {
32
32
  items: [
33
33
  {
34
34
  description: "Before and after result summary.",
35
+ imageCornerStyle: "rounded",
36
+ imageFit: "cover",
37
+ imagePosition: "center",
35
38
  label: "Project One"
36
39
  }
37
40
  ],
@@ -55,9 +58,9 @@ var defaultNodeData = {
55
58
  featureGrid: {
56
59
  ...withSectionStyleDefaults({}),
57
60
  items: [
58
- { description: "Explain this point.", icon: "01", title: "Feature One" },
59
- { description: "Explain this point.", icon: "02", title: "Feature Two" },
60
- { description: "Explain this point.", icon: "03", title: "Feature Three" }
61
+ { description: "Explain this point.", iconType: "badge", icon: "01", imageCornerStyle: "rounded", imageFit: "cover", imagePosition: "center", title: "Feature One" },
62
+ { description: "Explain this point.", iconType: "badge", icon: "02", imageCornerStyle: "rounded", imageFit: "cover", imagePosition: "center", title: "Feature Two" },
63
+ { description: "Explain this point.", iconType: "badge", icon: "03", imageCornerStyle: "rounded", imageFit: "cover", imagePosition: "center", title: "Feature Three" }
61
64
  ],
62
65
  title: "Section Title",
63
66
  variant: "cards"
@@ -70,7 +73,22 @@ var defaultNodeData = {
70
73
  },
71
74
  hero: {
72
75
  ...withSectionStyleDefaults({}),
73
- backgroundColor: "#124a37",
76
+ backgroundColor: "",
77
+ backgroundOverlayMode: "none",
78
+ backgroundOverlayOpacity: 45,
79
+ backgroundOverlayColor: "#000000",
80
+ backgroundOverlayGradientFrom: "#0d4a37",
81
+ backgroundOverlayGradientTo: "#1f684f",
82
+ backgroundOverlayGradientAngle: "135",
83
+ backgroundOverlayGradientFromStrength: 100,
84
+ backgroundOverlayGradientToStrength: 100,
85
+ backgroundOverlayGradientStart: 0,
86
+ backgroundOverlayGradientEnd: 100,
87
+ backgroundOverlayGradientFeather: 100,
88
+ backgroundImageCornerStyle: "rounded",
89
+ backgroundImageFit: "cover",
90
+ backgroundImagePosition: "center",
91
+ heroHeight: "sm",
74
92
  headline: "New Hero Section",
75
93
  kicker: "Optional kicker",
76
94
  primaryHref: "/contact",
@@ -83,13 +101,16 @@ var defaultNodeData = {
83
101
  media: {
84
102
  ...withSectionStyleDefaults({}),
85
103
  caption: "Add a caption",
104
+ imageCornerStyle: "rounded",
105
+ imageFit: "cover",
106
+ imagePosition: "center",
86
107
  size: "default"
87
108
  },
88
109
  logoWall: withSectionStyleDefaults({
89
110
  items: [
90
- { name: "Trusted Partner 1" },
91
- { name: "Trusted Partner 2" },
92
- { name: "Trusted Partner 3" }
111
+ { imageCornerStyle: "rounded", imageFit: "contain", imagePosition: "center", name: "Trusted Partner 1" },
112
+ { imageCornerStyle: "rounded", imageFit: "contain", imagePosition: "center", name: "Trusted Partner 2" },
113
+ { imageCornerStyle: "rounded", imageFit: "contain", imagePosition: "center", name: "Trusted Partner 3" }
93
114
  ],
94
115
  subtitle: "Trusted by teams and homeowners across Central Texas.",
95
116
  title: "Trusted by Local Organizations"
@@ -130,8 +151,11 @@ var defaultNodeData = {
130
151
  },
131
152
  testimonials: {
132
153
  ...withSectionStyleDefaults({}),
154
+ autoRotate: true,
133
155
  items: [{ location: "City, ST", name: "Customer Name", quote: "Customer feedback goes here." }],
134
- title: "What Customers Say"
156
+ rotateIntervalSeconds: 7,
157
+ title: "What Customers Say",
158
+ visibleCount: 3
135
159
  },
136
160
  stats: withSectionStyleDefaults({
137
161
  items: [
@@ -7,6 +7,7 @@ var sectionStyleDefaults = {
7
7
  contentGradientPreset: "none",
8
8
  contentGradientTo: "#f4f6f2",
9
9
  contentWidth: "inherit",
10
+ sectionPaddingX: "inherit",
10
11
  sectionBackgroundColor: "#ffffff",
11
12
  sectionBackgroundMode: "none",
12
13
  sectionGradientAngle: "135",
@@ -44,6 +45,19 @@ var sectionStyleFields = () => [
44
45
  type: "select",
45
46
  defaultValue: sectionStyleDefaults.sectionPaddingY,
46
47
  options: [
48
+ { label: "None", value: "none" },
49
+ { label: "Small", value: "sm" },
50
+ { label: "Medium", value: "md" },
51
+ { label: "Large", value: "lg" }
52
+ ]
53
+ },
54
+ {
55
+ name: "sectionPaddingX",
56
+ type: "select",
57
+ defaultValue: sectionStyleDefaults.sectionPaddingX,
58
+ options: [
59
+ { label: "Inherit", value: "inherit" },
60
+ { label: "None", value: "none" },
47
61
  { label: "Small", value: "sm" },
48
62
  { label: "Medium", value: "md" },
49
63
  { label: "Large", value: "lg" }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  sectionStyleFields
3
- } from "./chunk-ETRRXURT.mjs";
3
+ } from "./chunk-SIL2J5MF.mjs";
4
4
  import {
5
5
  __export
6
6
  } from "./chunk-6BWS3CLP.mjs";
@@ -81,6 +81,67 @@ var BeforeAfterBlock = {
81
81
  relationTo: "media",
82
82
  required: false
83
83
  },
84
+ {
85
+ name: "imageHeight",
86
+ type: "number",
87
+ defaultValue: 160,
88
+ min: 60,
89
+ max: 600,
90
+ admin: {
91
+ description: "Overrides the before/after image height (in pixels).",
92
+ step: 10
93
+ }
94
+ },
95
+ {
96
+ name: "imageFit",
97
+ type: "select",
98
+ defaultValue: "cover",
99
+ options: [
100
+ { label: "Cover", value: "cover" },
101
+ { label: "Contain", value: "contain" }
102
+ ]
103
+ },
104
+ {
105
+ name: "imageCornerStyle",
106
+ type: "select",
107
+ defaultValue: "rounded",
108
+ options: [
109
+ { label: "Rounded", value: "rounded" },
110
+ { label: "Square", value: "square" }
111
+ ]
112
+ },
113
+ {
114
+ name: "imagePosition",
115
+ type: "select",
116
+ defaultValue: "center",
117
+ options: [
118
+ { label: "Center", value: "center" },
119
+ { label: "Top", value: "top" },
120
+ { label: "Bottom", value: "bottom" },
121
+ { label: "Left", value: "left" },
122
+ { label: "Right", value: "right" }
123
+ ]
124
+ },
125
+ {
126
+ name: "imagePositionX",
127
+ type: "number",
128
+ min: 0,
129
+ max: 100,
130
+ admin: {
131
+ description: "Optional custom horizontal focus (0-100). Overrides Image Position when set.",
132
+ step: 1
133
+ }
134
+ },
135
+ {
136
+ name: "imagePositionY",
137
+ type: "number",
138
+ min: 0,
139
+ max: 100,
140
+ admin: {
141
+ description: "Optional custom vertical focus (0-100). Overrides Image Position when set.",
142
+ step: 1
143
+ }
144
+ },
84
145
  {
85
146
  name: "description",
86
147
  type: "textarea"
@@ -266,11 +327,43 @@ var FeatureGridBlock = {
266
327
  name: "description",
267
328
  type: "textarea"
268
329
  },
330
+ {
331
+ name: "iconType",
332
+ type: "select",
333
+ defaultValue: "badge",
334
+ options: [
335
+ { label: "Badge Text", value: "badge" },
336
+ { label: "Icon", value: "lucide" }
337
+ ],
338
+ admin: {
339
+ description: "Choose whether this item uses a short badge label or an icon."
340
+ }
341
+ },
269
342
  {
270
343
  name: "icon",
271
344
  type: "text",
272
345
  admin: {
273
- description: 'Optional short icon label (e.g. "01", "Leaf", "Star").'
346
+ description: 'Optional short icon label (e.g. "01", "Leaf", "Star").',
347
+ condition: (_, siblingData) => siblingData?.iconType !== "lucide"
348
+ }
349
+ },
350
+ {
351
+ name: "iconLucide",
352
+ type: "select",
353
+ options: [
354
+ { label: "Shield Check", value: "ShieldCheck" },
355
+ { label: "Clock", value: "Clock" },
356
+ { label: "Leaf", value: "Leaf" },
357
+ { label: "Dollar Sign", value: "DollarSign" },
358
+ { label: "Hard Hat", value: "HardHat" },
359
+ { label: "Sparkles", value: "Sparkles" },
360
+ { label: "Tree Pine", value: "TreePine" },
361
+ { label: "Badge Check", value: "BadgeCheck" },
362
+ { label: "Calendar Clock", value: "CalendarClock" }
363
+ ],
364
+ admin: {
365
+ description: "Select an icon for this item.",
366
+ condition: (_, siblingData) => siblingData?.iconType === "lucide"
274
367
  }
275
368
  },
276
369
  {
@@ -278,6 +371,67 @@ var FeatureGridBlock = {
278
371
  type: "upload",
279
372
  relationTo: "media",
280
373
  required: false
374
+ },
375
+ {
376
+ name: "imageHeight",
377
+ type: "number",
378
+ defaultValue: 160,
379
+ min: 40,
380
+ max: 600,
381
+ admin: {
382
+ description: "Overrides the image height in the builder/section (in pixels).",
383
+ step: 10
384
+ }
385
+ },
386
+ {
387
+ name: "imageFit",
388
+ type: "select",
389
+ defaultValue: "cover",
390
+ options: [
391
+ { label: "Cover", value: "cover" },
392
+ { label: "Contain", value: "contain" }
393
+ ]
394
+ },
395
+ {
396
+ name: "imageCornerStyle",
397
+ type: "select",
398
+ defaultValue: "rounded",
399
+ options: [
400
+ { label: "Rounded", value: "rounded" },
401
+ { label: "Square", value: "square" }
402
+ ]
403
+ },
404
+ {
405
+ name: "imagePosition",
406
+ type: "select",
407
+ defaultValue: "center",
408
+ options: [
409
+ { label: "Center", value: "center" },
410
+ { label: "Top", value: "top" },
411
+ { label: "Bottom", value: "bottom" },
412
+ { label: "Left", value: "left" },
413
+ { label: "Right", value: "right" }
414
+ ]
415
+ },
416
+ {
417
+ name: "imagePositionX",
418
+ type: "number",
419
+ min: 0,
420
+ max: 100,
421
+ admin: {
422
+ description: "Optional custom horizontal focus (0-100). Overrides Image Position when set.",
423
+ step: 1
424
+ }
425
+ },
426
+ {
427
+ name: "imagePositionY",
428
+ type: "number",
429
+ min: 0,
430
+ max: 100,
431
+ admin: {
432
+ description: "Optional custom vertical focus (0-100). Overrides Image Position when set.",
433
+ step: 1
434
+ }
281
435
  }
282
436
  ]
283
437
  },
@@ -404,10 +558,44 @@ var HeroBlock = {
404
558
  relationTo: "media"
405
559
  },
406
560
  {
407
- name: "backgroundImageURL",
408
- type: "text",
561
+ name: "backgroundImageFit",
562
+ type: "select",
563
+ defaultValue: "cover",
564
+ options: [
565
+ { label: "Cover", value: "cover" },
566
+ { label: "Cover (Square)", value: "cover-square" },
567
+ { label: "Contain", value: "contain" },
568
+ { label: "Contain (Square)", value: "contain-square" }
569
+ ],
409
570
  admin: {
410
- description: "Optional external/background image URL override for this hero section."
571
+ description: "How the hero image should be sized within the section."
572
+ }
573
+ },
574
+ {
575
+ name: "backgroundImageCornerStyle",
576
+ type: "select",
577
+ defaultValue: "rounded",
578
+ options: [
579
+ { label: "Rounded", value: "rounded" },
580
+ { label: "Square", value: "square" }
581
+ ],
582
+ admin: {
583
+ description: "How the hero image corners should appear."
584
+ }
585
+ },
586
+ {
587
+ name: "backgroundImagePosition",
588
+ type: "select",
589
+ defaultValue: "center",
590
+ options: [
591
+ { label: "Center", value: "center" },
592
+ { label: "Top", value: "top" },
593
+ { label: "Bottom", value: "bottom" },
594
+ { label: "Left", value: "left" },
595
+ { label: "Right", value: "right" }
596
+ ],
597
+ admin: {
598
+ description: "Where the hero image should anchor inside the section."
411
599
  }
412
600
  },
413
601
  {
@@ -417,6 +605,113 @@ var HeroBlock = {
417
605
  description: "Optional background color override (example: #124a37)."
418
606
  }
419
607
  },
608
+ {
609
+ name: "backgroundOverlayMode",
610
+ type: "select",
611
+ defaultValue: "none",
612
+ options: [
613
+ { label: "None", value: "none" },
614
+ { label: "Solid", value: "solid" },
615
+ { label: "Gradient", value: "gradient" }
616
+ ],
617
+ admin: {
618
+ description: "Optional overlay on top of the hero image (applies when an image is present)."
619
+ }
620
+ },
621
+ {
622
+ name: "backgroundOverlayOpacity",
623
+ type: "number",
624
+ defaultValue: 45,
625
+ min: 0,
626
+ max: 100,
627
+ admin: {
628
+ description: "Overlay opacity (0-100).",
629
+ step: 1
630
+ }
631
+ },
632
+ {
633
+ name: "backgroundOverlayColor",
634
+ type: "text",
635
+ admin: {
636
+ description: "Overlay solid color (example: #000000). Used when Overlay Mode is Solid."
637
+ }
638
+ },
639
+ {
640
+ name: "backgroundOverlayGradientFrom",
641
+ type: "text",
642
+ admin: {
643
+ description: "Gradient overlay start color (example: #0d4a37). Used when Overlay Mode is Gradient."
644
+ }
645
+ },
646
+ {
647
+ name: "backgroundOverlayGradientTo",
648
+ type: "text",
649
+ admin: {
650
+ description: "Gradient overlay end color (example: #1f684f). Used when Overlay Mode is Gradient."
651
+ }
652
+ },
653
+ {
654
+ name: "backgroundOverlayGradientAngle",
655
+ type: "text",
656
+ admin: {
657
+ description: "Gradient overlay angle in degrees (0-360). Used when Overlay Mode is Gradient."
658
+ }
659
+ },
660
+ {
661
+ name: "backgroundOverlayGradientFromStrength",
662
+ type: "number",
663
+ defaultValue: 100,
664
+ min: 0,
665
+ max: 100,
666
+ admin: {
667
+ description: "Gradient start strength (0-100). Set to 0 for transparent.",
668
+ step: 1
669
+ }
670
+ },
671
+ {
672
+ name: "backgroundOverlayGradientToStrength",
673
+ type: "number",
674
+ defaultValue: 100,
675
+ min: 0,
676
+ max: 100,
677
+ admin: {
678
+ description: "Gradient end strength (0-100). Set to 0 for transparent.",
679
+ step: 1
680
+ }
681
+ },
682
+ {
683
+ name: "backgroundOverlayGradientStart",
684
+ type: "number",
685
+ defaultValue: 0,
686
+ min: 0,
687
+ max: 100,
688
+ admin: {
689
+ description: "Where the gradient starts (0-100).",
690
+ step: 1
691
+ }
692
+ },
693
+ {
694
+ name: "backgroundOverlayGradientEnd",
695
+ type: "number",
696
+ defaultValue: 100,
697
+ min: 0,
698
+ max: 100,
699
+ admin: {
700
+ description: "Where the gradient ends (0-100).",
701
+ step: 1
702
+ }
703
+ },
704
+ {
705
+ name: "backgroundOverlayGradientFeather",
706
+ type: "number",
707
+ defaultValue: 100,
708
+ min: 0,
709
+ max: 100,
710
+ admin: {
711
+ description: "How soft the transition is (0 = hard edge, 100 = smooth).",
712
+ step: 1
713
+ }
714
+ },
420
715
  {
421
716
  name: "variant",
422
717
  type: "select",
@@ -432,6 +727,28 @@ var HeroBlock = {
432
727
  }
433
728
  ]
434
729
  },
730
+ {
731
+ name: "heroHeight",
732
+ type: "select",
733
+ defaultValue: "sm",
734
+ options: [
735
+ {
736
+ label: "Small",
737
+ value: "sm"
738
+ },
739
+ {
740
+ label: "Medium (Half Screen)",
741
+ value: "md"
742
+ },
743
+ {
744
+ label: "Full Screen",
745
+ value: "full"
746
+ }
747
+ ],
748
+ admin: {
749
+ description: "Controls the vertical height of the hero section."
750
+ }
751
+ },
435
752
  ...sectionStyleFields()
436
753
  ]
437
754
  };
@@ -477,6 +794,67 @@ var LogoWallBlock = {
477
794
  relationTo: "media",
478
795
  required: false
479
796
  },
797
+ {
798
+ name: "imageHeight",
799
+ type: "number",
800
+ defaultValue: 64,
801
+ min: 24,
802
+ max: 200,
803
+ admin: {
804
+ description: "Overrides the logo image height (in pixels).",
805
+ step: 4
806
+ }
807
+ },
808
+ {
809
+ name: "imageFit",
810
+ type: "select",
811
+ defaultValue: "contain",
812
+ options: [
813
+ { label: "Cover", value: "cover" },
814
+ { label: "Contain", value: "contain" }
815
+ ]
816
+ },
817
+ {
818
+ name: "imageCornerStyle",
819
+ type: "select",
820
+ defaultValue: "rounded",
821
+ options: [
822
+ { label: "Rounded", value: "rounded" },
823
+ { label: "Square", value: "square" }
824
+ ]
825
+ },
826
+ {
827
+ name: "imagePosition",
828
+ type: "select",
829
+ defaultValue: "center",
830
+ options: [
831
+ { label: "Center", value: "center" },
832
+ { label: "Top", value: "top" },
833
+ { label: "Bottom", value: "bottom" },
834
+ { label: "Left", value: "left" },
835
+ { label: "Right", value: "right" }
836
+ ]
837
+ },
838
+ {
839
+ name: "imagePositionX",
840
+ type: "number",
841
+ min: 0,
842
+ max: 100,
843
+ admin: {
844
+ description: "Optional custom horizontal focus (0-100). Overrides Image Position when set.",
845
+ step: 1
846
+ }
847
+ },
848
+ {
849
+ name: "imagePositionY",
850
+ type: "number",
851
+ min: 0,
852
+ max: 100,
853
+ admin: {
854
+ description: "Optional custom vertical focus (0-100). Overrides Image Position when set.",
855
+ step: 1
856
+ }
857
+ },
480
858
  {
481
859
  name: "href",
482
860
  type: "text"
@@ -527,6 +905,36 @@ var MediaBlock = {
527
905
  }
528
906
  ]
529
907
  },
908
+ {
909
+ name: "imageFit",
910
+ type: "select",
911
+ defaultValue: "cover",
912
+ options: [
913
+ { label: "Cover", value: "cover" },
914
+ { label: "Contain", value: "contain" }
915
+ ]
916
+ },
917
+ {
918
+ name: "imageCornerStyle",
919
+ type: "select",
920
+ defaultValue: "rounded",
921
+ options: [
922
+ { label: "Rounded", value: "rounded" },
923
+ { label: "Square", value: "square" }
924
+ ]
925
+ },
926
+ {
927
+ name: "imagePosition",
928
+ type: "select",
929
+ defaultValue: "center",
930
+ options: [
931
+ { label: "Center", value: "center" },
932
+ { label: "Top", value: "top" },
933
+ { label: "Bottom", value: "bottom" },
934
+ { label: "Left", value: "left" },
935
+ { label: "Right", value: "right" }
936
+ ]
937
+ },
530
938
  ...sectionStyleFields()
531
939
  ]
532
940
  };
@@ -644,11 +1052,41 @@ var TestimonialsBlock = {
644
1052
  type: "text",
645
1053
  required: true
646
1054
  },
1055
+ {
1056
+ name: "visibleCount",
1057
+ type: "number",
1058
+ defaultValue: 3,
1059
+ min: 1,
1060
+ max: 6,
1061
+ admin: {
1062
+ description: "How many testimonials to show at once.",
1063
+ step: 1
1064
+ }
1065
+ },
1066
+ {
1067
+ name: "autoRotate",
1068
+ type: "checkbox",
1069
+ defaultValue: true,
1070
+ admin: {
1071
+ description: "Automatically rotates through all testimonials."
1072
+ }
1073
+ },
1074
+ {
1075
+ name: "rotateIntervalSeconds",
1076
+ type: "number",
1077
+ defaultValue: 7,
1078
+ min: 2,
1079
+ max: 30,
1080
+ admin: {
1081
+ description: "How often to rotate (in seconds).",
1082
+ step: 1
1083
+ }
1084
+ },
647
1085
  {
648
1086
  name: "items",
649
1087
  type: "array",
650
1088
  minRows: 1,
651
- maxRows: 6,
1089
+ maxRows: 30,
652
1090
  fields: [
653
1091
  {
654
1092
  name: "quote",