create-goodfellow 0.0.0-stage → 0.2.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.
Files changed (150) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +15 -2
  3. package/bin/create-goodfellow.js +2 -0
  4. package/dist/cli.d.ts +1 -0
  5. package/dist/cli.js +220 -0
  6. package/dist/index.d.ts +34 -0
  7. package/dist/index.js +2 -0
  8. package/dist/scaffold-BGxzPdN1.js +150 -0
  9. package/package.json +55 -3
  10. package/templates/next/.github/workflows/deploy.yml +86 -0
  11. package/templates/next/.gitlab-ci.yml +28 -0
  12. package/templates/next/README.md +127 -0
  13. package/templates/next/_gitignore +5 -0
  14. package/templates/next/app/(site)/[[...path]]/page.tsx +8 -0
  15. package/templates/next/app/(site)/layout.tsx +5 -0
  16. package/templates/next/app/admin/demo-content.json/route.ts +5 -0
  17. package/templates/next/app/admin/layout.tsx +8 -0
  18. package/templates/next/app/admin/page.tsx +8 -0
  19. package/templates/next/app/layout.tsx +11 -0
  20. package/templates/next/app/not-found.tsx +4 -0
  21. package/templates/next/app/robots.ts +4 -0
  22. package/templates/next/app/site.css +11 -0
  23. package/templates/next/app/sitemap.ts +4 -0
  24. package/templates/next/blocks/installed/index.ts +7 -0
  25. package/templates/next/components.json +24 -0
  26. package/templates/next/content/collections/news/_collection.json +113 -0
  27. package/templates/next/content/collections/news/open-house.json +9 -0
  28. package/templates/next/content/collections/news/welcome.json +10 -0
  29. package/templates/next/content/layout/footer.json +55 -0
  30. package/templates/next/content/layout/header.json +54 -0
  31. package/templates/next/content/menus.json +25 -0
  32. package/templates/next/content/pages/404.json +73 -0
  33. package/templates/next/content/pages/about.json +59 -0
  34. package/templates/next/content/pages/index.json +215 -0
  35. package/templates/next/content/pages/news.json +55 -0
  36. package/templates/next/content/site.json +25 -0
  37. package/templates/next/content/styles/custom.css +4 -0
  38. package/templates/next/goodfellow.config.tsx +17 -0
  39. package/templates/next/lib/site.ts +5 -0
  40. package/templates/next/next.config.ts +7 -0
  41. package/templates/next/package.json +40 -0
  42. package/templates/next/postcss.config.mjs +3 -0
  43. package/templates/next/public/media/favicon.svg +1 -0
  44. package/templates/next/public/media/logo.svg +1 -0
  45. package/templates/next/public/media/placeholder.svg +1 -0
  46. package/templates/next/tsconfig.json +27 -0
  47. package/templates/parish/.github/workflows/deploy.yml +84 -0
  48. package/templates/parish/.gitlab-ci.yml +28 -0
  49. package/templates/parish/README.md +128 -0
  50. package/templates/parish/_gitignore +2 -0
  51. package/templates/parish/blocks/installed/index.ts +7 -0
  52. package/templates/parish/blocks/mass-times.tsx +59 -0
  53. package/templates/parish/blocks/notice.tsx +46 -0
  54. package/templates/parish/blocks/scripture.tsx +40 -0
  55. package/templates/parish/components.json +24 -0
  56. package/templates/parish/content/collections/bulletins/2026-09-27.json +8 -0
  57. package/templates/parish/content/collections/bulletins/2026-10-04.json +8 -0
  58. package/templates/parish/content/collections/bulletins/_collection.json +113 -0
  59. package/templates/parish/content/collections/events/_collection.json +156 -0
  60. package/templates/parish/content/collections/events/advent-penance-service.json +14 -0
  61. package/templates/parish/content/collections/events/all-souls.json +14 -0
  62. package/templates/parish/content/collections/events/christmas-concert.json +14 -0
  63. package/templates/parish/content/collections/events/fall-festival.json +14 -0
  64. package/templates/parish/content/collections/events/youth-group.json +23 -0
  65. package/templates/parish/content/collections/news/_collection.json +137 -0
  66. package/templates/parish/content/collections/news/bell-tower-repairs.json +13 -0
  67. package/templates/parish/content/collections/news/choir-new-voices.json +14 -0
  68. package/templates/parish/content/collections/news/food-drive.json +13 -0
  69. package/templates/parish/content/collections/news/new-website.json +13 -0
  70. package/templates/parish/content/collections/news/winter-coats.json +13 -0
  71. package/templates/parish/content/collections/news/youth-group.json +13 -0
  72. package/templates/parish/content/collections/news/youth-service-day.json +14 -0
  73. package/templates/parish/content/collections/staff/_collection.json +34 -0
  74. package/templates/parish/content/collections/staff/david-okafor.json +9 -0
  75. package/templates/parish/content/collections/staff/fr-thomas-reed.json +9 -0
  76. package/templates/parish/content/collections/staff/maria-chen.json +9 -0
  77. package/templates/parish/content/collections/staff/sarah-lindqvist.json +9 -0
  78. package/templates/parish/content/layout/footer.json +142 -0
  79. package/templates/parish/content/layout/header.json +54 -0
  80. package/templates/parish/content/menus.json +67 -0
  81. package/templates/parish/content/pages/404.json +85 -0
  82. package/templates/parish/content/pages/about.json +153 -0
  83. package/templates/parish/content/pages/bulletins.json +64 -0
  84. package/templates/parish/content/pages/calendar.json +59 -0
  85. package/templates/parish/content/pages/contact.json +180 -0
  86. package/templates/parish/content/pages/events.json +107 -0
  87. package/templates/parish/content/pages/index.json +390 -0
  88. package/templates/parish/content/pages/mass-times.json +168 -0
  89. package/templates/parish/content/pages/news.json +68 -0
  90. package/templates/parish/content/pages/sacraments.json +259 -0
  91. package/templates/parish/content/site.json +36 -0
  92. package/templates/parish/content/styles/custom.css +4 -0
  93. package/templates/parish/goodfellow.config.tsx +24 -0
  94. package/templates/parish/package.json +36 -0
  95. package/templates/parish/public/media/bulletin-example.pdf +32 -0
  96. package/templates/parish/public/media/candles.svg +22 -0
  97. package/templates/parish/public/media/church.svg +33 -0
  98. package/templates/parish/public/media/favicon.svg +5 -0
  99. package/templates/parish/public/media/gathering.svg +18 -0
  100. package/templates/parish/public/media/logo.svg +5 -0
  101. package/templates/parish/public/media/person.svg +5 -0
  102. package/templates/parish/public/media/placeholder.svg +5 -0
  103. package/templates/parish/src/styles.css +8 -0
  104. package/templates/parish/tsconfig.json +14 -0
  105. package/templates/parish/vercel.ts +65 -0
  106. package/templates/registry/accordion.json +17 -0
  107. package/templates/registry/alert.json +16 -0
  108. package/templates/registry/badge.json +17 -0
  109. package/templates/registry/button.json +17 -0
  110. package/templates/registry/card.json +16 -0
  111. package/templates/registry/carousel.json +19 -0
  112. package/templates/registry/custom-html.json +31 -0
  113. package/templates/registry/registry.json +364 -0
  114. package/templates/registry/shadcn-call-to-action.json +26 -0
  115. package/templates/registry/shadcn-cards.json +26 -0
  116. package/templates/registry/shadcn-carousel.json +29 -0
  117. package/templates/registry/shadcn-faq.json +30 -0
  118. package/templates/registry/shadcn-hero.json +25 -0
  119. package/templates/registry/shadcn-notice.json +27 -0
  120. package/templates/registry/shadcn-pricing.json +28 -0
  121. package/templates/registry/shadcn-tabs.json +30 -0
  122. package/templates/registry/shadcn-testimonials.json +25 -0
  123. package/templates/registry/tabs.json +17 -0
  124. package/templates/starter/.github/workflows/deploy.yml +84 -0
  125. package/templates/starter/.gitlab-ci.yml +28 -0
  126. package/templates/starter/README.md +108 -0
  127. package/templates/starter/_gitignore +2 -0
  128. package/templates/starter/blocks/installed/index.ts +7 -0
  129. package/templates/starter/components.json +24 -0
  130. package/templates/starter/content/collections/news/_collection.json +113 -0
  131. package/templates/starter/content/collections/news/open-house.json +9 -0
  132. package/templates/starter/content/collections/news/welcome.json +10 -0
  133. package/templates/starter/content/layout/footer.json +55 -0
  134. package/templates/starter/content/layout/header.json +54 -0
  135. package/templates/starter/content/menus.json +25 -0
  136. package/templates/starter/content/pages/404.json +73 -0
  137. package/templates/starter/content/pages/about.json +59 -0
  138. package/templates/starter/content/pages/index.json +215 -0
  139. package/templates/starter/content/pages/news.json +55 -0
  140. package/templates/starter/content/site.json +25 -0
  141. package/templates/starter/content/styles/custom.css +4 -0
  142. package/templates/starter/goodfellow.config.tsx +17 -0
  143. package/templates/starter/package.json +36 -0
  144. package/templates/starter/public/media/favicon.svg +1 -0
  145. package/templates/starter/public/media/logo.svg +1 -0
  146. package/templates/starter/public/media/placeholder.svg +1 -0
  147. package/templates/starter/src/styles.css +8 -0
  148. package/templates/starter/tsconfig.json +14 -0
  149. package/templates/starter/vercel.ts +65 -0
  150. package/templates/versions.json +13 -0
@@ -0,0 +1,153 @@
1
+ {
2
+ "version": 1,
3
+ "data": {
4
+ "content": [
5
+ {
6
+ "type": "Section",
7
+ "props": {
8
+ "id": "Section-about",
9
+ "background": "none",
10
+ "backgroundImage": "",
11
+ "className": "",
12
+ "content": [
13
+ {
14
+ "type": "Heading",
15
+ "props": {
16
+ "id": "Heading-about",
17
+ "align": "left",
18
+ "className": "",
19
+ "level": "h1",
20
+ "text": "About us"
21
+ }
22
+ },
23
+ {
24
+ "type": "Grid",
25
+ "props": {
26
+ "id": "Grid-about",
27
+ "className": "mt-8",
28
+ "columns": "2",
29
+ "gap": "lg",
30
+ "items": [
31
+ {
32
+ "type": "Text",
33
+ "props": {
34
+ "id": "Text-history",
35
+ "align": "left",
36
+ "className": "",
37
+ "content": "<p>St. Joseph Parish began in 1921, when a handful of families started meeting for Mass in a rented hall on Main Street. The church they built a few years later still stands at the corner of Church Street, and today the parish is home to families from all over Anytown.</p><p>We're a parish of all ages: young families, students, longtime parishioners and newcomers. Together we worship, serve our neighbors through the food pantry and visiting the sick, and support the parish school.</p>"
38
+ }
39
+ },
40
+ {
41
+ "type": "Image",
42
+ "props": {
43
+ "id": "Image-about",
44
+ "alt": "The church at night",
45
+ "aspect": "landscape",
46
+ "caption": "",
47
+ "className": "",
48
+ "rounded": true,
49
+ "src": "/media/church.svg"
50
+ }
51
+ }
52
+ ]
53
+ }
54
+ }
55
+ ],
56
+ "padding": "lg",
57
+ "width": "normal"
58
+ }
59
+ },
60
+ {
61
+ "type": "Section",
62
+ "props": {
63
+ "id": "Section-staff",
64
+ "background": "none",
65
+ "backgroundImage": "",
66
+ "className": "",
67
+ "content": [
68
+ {
69
+ "type": "Heading",
70
+ "props": {
71
+ "id": "Heading-staff",
72
+ "align": "left",
73
+ "className": "mb-8",
74
+ "level": "h2",
75
+ "text": "Parish staff"
76
+ }
77
+ },
78
+ {
79
+ "type": "CollectionLoop",
80
+ "props": {
81
+ "id": "CollectionLoop-staff",
82
+ "allLabel": "All",
83
+ "choicePages": "",
84
+ "className": "",
85
+ "collection": "staff",
86
+ "columns": "4",
87
+ "dateField": "",
88
+ "design": [
89
+ {
90
+ "type": "Image",
91
+ "props": {
92
+ "id": "Image-staff-photo",
93
+ "alt": "",
94
+ "aspect": "square",
95
+ "caption": "",
96
+ "className": "",
97
+ "rounded": true,
98
+ "src": "{photo}"
99
+ }
100
+ },
101
+ {
102
+ "type": "Heading",
103
+ "props": {
104
+ "id": "Heading-staff-name",
105
+ "align": "left",
106
+ "className": "text-lg",
107
+ "level": "h3",
108
+ "text": "{title}"
109
+ }
110
+ },
111
+ {
112
+ "type": "Text",
113
+ "props": {
114
+ "id": "Text-staff-role",
115
+ "align": "left",
116
+ "className": "text-muted-foreground",
117
+ "content": "<p>{role}</p>"
118
+ }
119
+ }
120
+ ],
121
+ "emptyText": "",
122
+ "filterField": "",
123
+ "filterValue": "",
124
+ "gap": "md",
125
+ "items": [],
126
+ "limit": 0,
127
+ "linkToPage": false,
128
+ "nextLabel": "Next",
129
+ "order": "default",
130
+ "pageTitle": "Page {number}",
131
+ "pagesLabel": "Pages",
132
+ "paginate": false,
133
+ "previousLabel": "Previous",
134
+ "show": "all",
135
+ "sortField": ""
136
+ }
137
+ }
138
+ ],
139
+ "padding": "md",
140
+ "width": "normal"
141
+ }
142
+ }
143
+ ],
144
+ "root": {
145
+ "props": {
146
+ "className": "",
147
+ "description": "The history of St. Joseph Parish, and the people who serve it.",
148
+ "image": "",
149
+ "title": "About us"
150
+ }
151
+ }
152
+ }
153
+ }
@@ -0,0 +1,64 @@
1
+ {
2
+ "version": 1,
3
+ "data": {
4
+ "content": [
5
+ {
6
+ "type": "Section",
7
+ "props": {
8
+ "id": "Section-bulletins",
9
+ "background": "none",
10
+ "backgroundImage": "",
11
+ "className": "",
12
+ "content": [
13
+ {
14
+ "type": "Heading",
15
+ "props": {
16
+ "id": "Heading-bulletins",
17
+ "align": "left",
18
+ "className": "",
19
+ "level": "h1",
20
+ "text": "Bulletins"
21
+ }
22
+ },
23
+ {
24
+ "type": "Text",
25
+ "props": {
26
+ "id": "Text-bulletins",
27
+ "align": "left",
28
+ "className": "mt-4 text-lg text-muted-foreground",
29
+ "content": "<p>The bulletin comes out every weekend, with announcements, Mass intentions and the week's calendar. Paper copies are at the church doors.</p>"
30
+ }
31
+ },
32
+ {
33
+ "type": "CollectionList",
34
+ "props": {
35
+ "id": "CollectionList-bulletins",
36
+ "className": "mt-8",
37
+ "collection": "bulletins",
38
+ "columns": "3",
39
+ "dateField": "date",
40
+ "emptyText": "No bulletins yet.",
41
+ "imageField": "",
42
+ "layout": "list",
43
+ "limit": 12,
44
+ "order": "default",
45
+ "show": "all",
46
+ "summaryField": ""
47
+ }
48
+ }
49
+ ],
50
+ "padding": "lg",
51
+ "width": "narrow"
52
+ }
53
+ }
54
+ ],
55
+ "root": {
56
+ "props": {
57
+ "className": "",
58
+ "description": "This week's bulletin and earlier ones.",
59
+ "image": "",
60
+ "title": "Bulletins"
61
+ }
62
+ }
63
+ }
64
+ }
@@ -0,0 +1,59 @@
1
+ {
2
+ "version": 1,
3
+ "data": {
4
+ "content": [
5
+ {
6
+ "type": "Section",
7
+ "props": {
8
+ "id": "Section-calendar",
9
+ "background": "none",
10
+ "backgroundImage": "",
11
+ "className": "",
12
+ "content": [
13
+ {
14
+ "type": "Heading",
15
+ "props": {
16
+ "id": "Heading-calendar",
17
+ "align": "left",
18
+ "className": "mb-8",
19
+ "level": "h1",
20
+ "text": "Calendar"
21
+ }
22
+ },
23
+ {
24
+ "type": "Calendar",
25
+ "props": {
26
+ "id": "Calendar-month",
27
+ "addLabel": "Add to calendar",
28
+ "className": "",
29
+ "collection": "events",
30
+ "days": 90,
31
+ "emptyText": "Nothing is planned this month yet.",
32
+ "feed": "",
33
+ "limit": 0,
34
+ "monthsAfter": 12,
35
+ "monthsBefore": 1,
36
+ "nextLabel": "Next month",
37
+ "otherCalendarsLabel": "Apple Calendar and others",
38
+ "previousLabel": "Previous month",
39
+ "subscribeLabel": "Subscribe to the parish calendar",
40
+ "view": "month",
41
+ "weekStart": "sunday"
42
+ }
43
+ }
44
+ ],
45
+ "padding": "lg",
46
+ "width": "normal"
47
+ }
48
+ }
49
+ ],
50
+ "root": {
51
+ "props": {
52
+ "className": "",
53
+ "description": "St. Joseph Parish's events, a month at a time.",
54
+ "image": "",
55
+ "title": "Calendar"
56
+ }
57
+ }
58
+ }
59
+ }
@@ -0,0 +1,180 @@
1
+ {
2
+ "version": 1,
3
+ "data": {
4
+ "content": [
5
+ {
6
+ "type": "Section",
7
+ "props": {
8
+ "id": "Section-contact",
9
+ "background": "none",
10
+ "backgroundImage": "",
11
+ "className": "",
12
+ "content": [
13
+ {
14
+ "type": "Heading",
15
+ "props": {
16
+ "id": "Heading-contact",
17
+ "align": "left",
18
+ "className": "",
19
+ "level": "h1",
20
+ "text": "Contact us"
21
+ }
22
+ },
23
+ {
24
+ "type": "Grid",
25
+ "props": {
26
+ "id": "Grid-contact",
27
+ "className": "mt-8",
28
+ "columns": "2",
29
+ "gap": "lg",
30
+ "items": [
31
+ {
32
+ "type": "Flex",
33
+ "props": {
34
+ "id": "Flex-office",
35
+ "align": "start",
36
+ "className": "",
37
+ "direction": "column",
38
+ "gap": "sm",
39
+ "items": [
40
+ {
41
+ "type": "Heading",
42
+ "props": {
43
+ "id": "Heading-office",
44
+ "align": "left",
45
+ "className": "",
46
+ "level": "h2",
47
+ "text": "Parish office"
48
+ }
49
+ },
50
+ {
51
+ "type": "ContactDetails",
52
+ "props": {
53
+ "id": "ContactDetails-contact",
54
+ "address": true,
55
+ "className": "text-lg",
56
+ "email": true,
57
+ "layout": "stacked",
58
+ "phone": true
59
+ }
60
+ },
61
+ {
62
+ "type": "Heading",
63
+ "props": {
64
+ "id": "Heading-hours",
65
+ "align": "left",
66
+ "className": "mt-4",
67
+ "level": "h3",
68
+ "text": "Office hours"
69
+ }
70
+ },
71
+ {
72
+ "type": "Text",
73
+ "props": {
74
+ "id": "Text-hours",
75
+ "align": "left",
76
+ "className": "",
77
+ "content": "<p>Monday to Thursday, 9 am to 4 pm<br>Friday, 9 am to noon</p>"
78
+ }
79
+ }
80
+ ],
81
+ "justify": "start",
82
+ "wrap": true
83
+ }
84
+ },
85
+ {
86
+ "type": "Flex",
87
+ "props": {
88
+ "id": "Flex-directions",
89
+ "align": "start",
90
+ "className": "",
91
+ "direction": "column",
92
+ "gap": "sm",
93
+ "items": [
94
+ {
95
+ "type": "Heading",
96
+ "props": {
97
+ "id": "Heading-directions",
98
+ "align": "left",
99
+ "className": "",
100
+ "level": "h2",
101
+ "text": "Getting here"
102
+ }
103
+ },
104
+ {
105
+ "type": "Text",
106
+ "props": {
107
+ "id": "Text-directions",
108
+ "align": "left",
109
+ "className": "",
110
+ "content": "<p>The church is on Church Street, two blocks from the town square. There's free parking behind the parish hall, and the main entrance has a ramp. Large-print missals and hearing loops are available; just ask an usher.</p>"
111
+ }
112
+ }
113
+ ],
114
+ "justify": "start",
115
+ "wrap": true
116
+ }
117
+ }
118
+ ]
119
+ }
120
+ }
121
+ ],
122
+ "padding": "lg",
123
+ "width": "normal"
124
+ }
125
+ },
126
+ {
127
+ "type": "Section",
128
+ "props": {
129
+ "id": "Section-register",
130
+ "background": "muted",
131
+ "backgroundImage": "",
132
+ "className": "",
133
+ "content": [
134
+ {
135
+ "type": "Heading",
136
+ "props": {
137
+ "id": "Heading-register",
138
+ "align": "left",
139
+ "className": "",
140
+ "level": "h2",
141
+ "text": "Join the parish"
142
+ }
143
+ },
144
+ {
145
+ "type": "Text",
146
+ "props": {
147
+ "id": "Text-register",
148
+ "align": "left",
149
+ "className": "mt-2 max-w-2xl",
150
+ "content": "<p>New to St. Joseph? Welcome! Stop by the office, or email us, and we'll help you register and find your way around.</p>"
151
+ }
152
+ },
153
+ {
154
+ "type": "Button",
155
+ "props": {
156
+ "id": "Button-email",
157
+ "className": "mt-6",
158
+ "href": "mailto:office@example.org",
159
+ "label": "Email the parish office",
160
+ "newTab": false,
161
+ "size": "md",
162
+ "variant": "primary"
163
+ }
164
+ }
165
+ ],
166
+ "padding": "md",
167
+ "width": "normal"
168
+ }
169
+ }
170
+ ],
171
+ "root": {
172
+ "props": {
173
+ "className": "",
174
+ "description": "How to reach the parish office, office hours and directions.",
175
+ "image": "",
176
+ "title": "Contact us"
177
+ }
178
+ }
179
+ }
180
+ }
@@ -0,0 +1,107 @@
1
+ {
2
+ "version": 1,
3
+ "data": {
4
+ "content": [
5
+ {
6
+ "type": "Section",
7
+ "props": {
8
+ "id": "Section-events",
9
+ "background": "none",
10
+ "backgroundImage": "",
11
+ "className": "",
12
+ "content": [
13
+ {
14
+ "type": "Heading",
15
+ "props": {
16
+ "id": "Heading-events",
17
+ "align": "left",
18
+ "className": "",
19
+ "level": "h1",
20
+ "text": "Events"
21
+ }
22
+ },
23
+ {
24
+ "type": "Text",
25
+ "props": {
26
+ "id": "Text-events",
27
+ "align": "left",
28
+ "className": "mt-4 text-lg text-muted-foreground",
29
+ "content": "<p>Everyone is welcome at parish events, whether or not you're a parishioner.</p>"
30
+ }
31
+ },
32
+ {
33
+ "type": "Calendar",
34
+ "props": {
35
+ "id": "Calendar-upcoming",
36
+ "addLabel": "Add to calendar",
37
+ "className": "mt-10",
38
+ "collection": "events",
39
+ "days": 90,
40
+ "emptyText": "Nothing on the calendar right now. Check back soon.",
41
+ "feed": "",
42
+ "limit": 12,
43
+ "monthsAfter": 12,
44
+ "monthsBefore": 1,
45
+ "nextLabel": "Next month",
46
+ "otherCalendarsLabel": "Apple Calendar and others",
47
+ "previousLabel": "Previous month",
48
+ "subscribeLabel": "Subscribe to the parish calendar",
49
+ "view": "list",
50
+ "weekStart": "sunday"
51
+ }
52
+ },
53
+ {
54
+ "type": "Button",
55
+ "props": {
56
+ "id": "Button-calendar",
57
+ "className": "mt-8",
58
+ "href": "/calendar",
59
+ "label": "See the month at a glance",
60
+ "newTab": false,
61
+ "size": "md",
62
+ "variant": "outline"
63
+ }
64
+ },
65
+ {
66
+ "type": "Heading",
67
+ "props": {
68
+ "id": "Heading-past",
69
+ "align": "left",
70
+ "className": "mt-16 mb-6",
71
+ "level": "h2",
72
+ "text": "Past events"
73
+ }
74
+ },
75
+ {
76
+ "type": "CollectionList",
77
+ "props": {
78
+ "id": "CollectionList-past",
79
+ "className": "",
80
+ "collection": "events",
81
+ "columns": "3",
82
+ "dateField": "when",
83
+ "emptyText": "No past events yet.",
84
+ "imageField": "",
85
+ "layout": "list",
86
+ "limit": 10,
87
+ "order": "newest",
88
+ "show": "past",
89
+ "summaryField": "summary"
90
+ }
91
+ }
92
+ ],
93
+ "padding": "lg",
94
+ "width": "normal"
95
+ }
96
+ }
97
+ ],
98
+ "root": {
99
+ "props": {
100
+ "className": "",
101
+ "description": "Upcoming events at St. Joseph Parish.",
102
+ "image": "",
103
+ "title": "Events"
104
+ }
105
+ }
106
+ }
107
+ }