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,137 @@
1
+ {
2
+ "version": 1,
3
+ "entryName": "News story",
4
+ "fields": [
5
+ {
6
+ "type": "text",
7
+ "label": "Title",
8
+ "name": "title",
9
+ "required": true
10
+ },
11
+ {
12
+ "type": "date",
13
+ "label": "Date",
14
+ "name": "date",
15
+ "required": true
16
+ },
17
+ {
18
+ "type": "textarea",
19
+ "hint": "One or two sentences, shown in lists of news.",
20
+ "label": "Summary",
21
+ "name": "summary"
22
+ },
23
+ {
24
+ "type": "tags",
25
+ "hint": "News pages list stories by topic.",
26
+ "label": "Topics",
27
+ "name": "topics",
28
+ "options": [
29
+ {
30
+ "label": "Parish life",
31
+ "value": "parish-life"
32
+ },
33
+ {
34
+ "label": "Youth",
35
+ "value": "youth"
36
+ },
37
+ {
38
+ "label": "Outreach",
39
+ "value": "outreach"
40
+ },
41
+ {
42
+ "label": "Music",
43
+ "value": "music"
44
+ }
45
+ ]
46
+ },
47
+ {
48
+ "type": "image",
49
+ "label": "Picture",
50
+ "name": "image"
51
+ },
52
+ {
53
+ "type": "richtext",
54
+ "label": "Text",
55
+ "name": "text"
56
+ }
57
+ ],
58
+ "name": "News",
59
+ "path": "/news/{slug}",
60
+ "sort": {
61
+ "field": "date",
62
+ "order": "desc"
63
+ },
64
+ "template": {
65
+ "content": [
66
+ {
67
+ "type": "Section",
68
+ "props": {
69
+ "id": "Section-story",
70
+ "background": "none",
71
+ "backgroundImage": "",
72
+ "className": "",
73
+ "content": [
74
+ {
75
+ "type": "EntryField",
76
+ "props": {
77
+ "id": "EntryField-date",
78
+ "className": "",
79
+ "field": "date",
80
+ "style": "small"
81
+ }
82
+ },
83
+ {
84
+ "type": "EntryField",
85
+ "props": {
86
+ "id": "EntryField-title",
87
+ "className": "mt-2",
88
+ "field": "title",
89
+ "style": "title"
90
+ }
91
+ },
92
+ {
93
+ "type": "EntryField",
94
+ "props": {
95
+ "id": "EntryField-image",
96
+ "className": "mt-8",
97
+ "field": "image",
98
+ "style": "text"
99
+ }
100
+ },
101
+ {
102
+ "type": "EntryField",
103
+ "props": {
104
+ "id": "EntryField-text",
105
+ "className": "mt-8",
106
+ "field": "text",
107
+ "style": "text"
108
+ }
109
+ },
110
+ {
111
+ "type": "Button",
112
+ "props": {
113
+ "id": "Button-news",
114
+ "className": "mt-10",
115
+ "href": "/news",
116
+ "label": "All news",
117
+ "newTab": false,
118
+ "size": "md",
119
+ "variant": "outline"
120
+ }
121
+ }
122
+ ],
123
+ "padding": "lg",
124
+ "width": "narrow"
125
+ }
126
+ }
127
+ ],
128
+ "root": {
129
+ "props": {
130
+ "className": "",
131
+ "description": "{summary}",
132
+ "image": "{image}",
133
+ "title": "{title}"
134
+ }
135
+ }
136
+ }
137
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "version": 1,
3
+ "fields": {
4
+ "date": "2026-07-19",
5
+ "image": "/media/placeholder.svg",
6
+ "summary": "After a summer of scaffolding, the bells ring again every Sunday morning.",
7
+ "text": "<p>Thank you for your patience while the tower was repaired, and to everyone who gave to the building fund to make it possible.</p>",
8
+ "title": "Bell tower repairs are finished",
9
+ "topics": [
10
+ "parish-life"
11
+ ]
12
+ }
13
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "version": 1,
3
+ "fields": {
4
+ "date": "2026-09-14",
5
+ "image": "/media/placeholder.svg",
6
+ "summary": "Six new singers joined the parish choir this fall, and there is room for more.",
7
+ "text": "<p>The choir rehearses on Thursday evenings in the church. No experience is needed, only a love of singing. Speak to the music director after any Sunday Mass.</p>",
8
+ "title": "Choir welcomes new voices",
9
+ "topics": [
10
+ "music",
11
+ "parish-life"
12
+ ]
13
+ }
14
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "version": 1,
3
+ "fields": {
4
+ "date": "2026-08-31",
5
+ "image": "/media/placeholder.svg",
6
+ "summary": "Parishioners filled the shelves of the local food pantry for the months ahead.",
7
+ "text": "<p>Thank you to everyone who brought food, sorted donations and drove deliveries. The pantry is open every Tuesday and Thursday, and always needs volunteers.</p>",
8
+ "title": "Thank you for supporting the food drive",
9
+ "topics": [
10
+ "outreach"
11
+ ]
12
+ }
13
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "version": 1,
3
+ "fields": {
4
+ "date": "2026-09-28",
5
+ "image": "/media/church.svg",
6
+ "summary": "Mass times, events and the weekly bulletin are now easier to find, on any phone or computer.",
7
+ "text": "<p>The parish office can now keep the website up to date themselves, so you'll always find this week's times and news here. Something missing? Let us know.</p>",
8
+ "title": "Welcome to our new website",
9
+ "topics": [
10
+ "parish-life"
11
+ ]
12
+ }
13
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "version": 1,
3
+ "fields": {
4
+ "date": "2026-10-04",
5
+ "image": "/media/placeholder.svg",
6
+ "summary": "Bring clean, warm coats for children and adults to the parish hall in October.",
7
+ "text": "<p>Coats go to families in the neighborhood through the parish outreach team. Hats, gloves and scarves are welcome too.</p>",
8
+ "title": "Winter coat collection begins",
9
+ "topics": [
10
+ "outreach"
11
+ ]
12
+ }
13
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "version": 1,
3
+ "fields": {
4
+ "date": "2026-09-14",
5
+ "image": "/media/gathering.svg",
6
+ "summary": "High school students meet on Sunday evenings after the 6:00 pm Mass, with pizza.",
7
+ "text": "<p>Every week there's food, games, conversation and a short reflection. New members are always welcome, and parents can contact the parish office for details.</p>",
8
+ "title": "Youth group starts again",
9
+ "topics": [
10
+ "youth"
11
+ ]
12
+ }
13
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "version": 1,
3
+ "fields": {
4
+ "date": "2026-06-21",
5
+ "image": "/media/placeholder.svg",
6
+ "summary": "Twenty young people painted, gardened and cooked lunch for neighbors.",
7
+ "text": "<p>The youth group plans a service day every summer. Parents and parishioners who would like to help next year can contact the parish office.</p>",
8
+ "title": "Teens spend a day serving the neighborhood",
9
+ "topics": [
10
+ "youth",
11
+ "outreach"
12
+ ]
13
+ }
14
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "version": 1,
3
+ "entryName": "Person",
4
+ "fields": [
5
+ {
6
+ "type": "text",
7
+ "label": "Name",
8
+ "name": "title",
9
+ "required": true
10
+ },
11
+ {
12
+ "type": "text",
13
+ "label": "Role",
14
+ "name": "role",
15
+ "required": true
16
+ },
17
+ {
18
+ "type": "image",
19
+ "label": "Photo",
20
+ "name": "photo"
21
+ },
22
+ {
23
+ "type": "number",
24
+ "hint": "Lower numbers are listed first.",
25
+ "label": "Order",
26
+ "name": "order"
27
+ }
28
+ ],
29
+ "name": "Staff",
30
+ "sort": {
31
+ "field": "order",
32
+ "order": "asc"
33
+ }
34
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": 1,
3
+ "fields": {
4
+ "order": 3,
5
+ "photo": "/media/person.svg",
6
+ "role": "Director of music",
7
+ "title": "David Okafor"
8
+ }
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": 1,
3
+ "fields": {
4
+ "order": 1,
5
+ "photo": "/media/person.svg",
6
+ "role": "Pastor",
7
+ "title": "Fr. Thomas Reed"
8
+ }
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": 1,
3
+ "fields": {
4
+ "order": 2,
5
+ "photo": "/media/person.svg",
6
+ "role": "Parish office manager",
7
+ "title": "Maria Chen"
8
+ }
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": 1,
3
+ "fields": {
4
+ "order": 4,
5
+ "photo": "/media/person.svg",
6
+ "role": "Director of religious education",
7
+ "title": "Sarah Lindqvist"
8
+ }
9
+ }
@@ -0,0 +1,142 @@
1
+ {
2
+ "version": 1,
3
+ "data": {
4
+ "content": [
5
+ {
6
+ "type": "Section",
7
+ "props": {
8
+ "id": "Section-footer",
9
+ "background": "muted",
10
+ "backgroundImage": "",
11
+ "className": "",
12
+ "content": [
13
+ {
14
+ "type": "Grid",
15
+ "props": {
16
+ "id": "Grid-footer",
17
+ "className": "",
18
+ "columns": "3",
19
+ "gap": "lg",
20
+ "items": [
21
+ {
22
+ "type": "Flex",
23
+ "props": {
24
+ "id": "Flex-footer-about",
25
+ "align": "start",
26
+ "className": "",
27
+ "direction": "column",
28
+ "gap": "sm",
29
+ "items": [
30
+ {
31
+ "type": "SiteBrand",
32
+ "props": {
33
+ "id": "SiteBrand-footer",
34
+ "className": "",
35
+ "show": "both"
36
+ }
37
+ },
38
+ {
39
+ "type": "Text",
40
+ "props": {
41
+ "id": "Text-footer-about",
42
+ "align": "left",
43
+ "className": "text-muted-foreground",
44
+ "content": "<p>A Catholic parish family in Anytown. All are welcome.</p>"
45
+ }
46
+ }
47
+ ],
48
+ "justify": "start",
49
+ "wrap": true
50
+ }
51
+ },
52
+ {
53
+ "type": "Flex",
54
+ "props": {
55
+ "id": "Flex-footer-contact",
56
+ "align": "start",
57
+ "className": "",
58
+ "direction": "column",
59
+ "gap": "sm",
60
+ "items": [
61
+ {
62
+ "type": "Heading",
63
+ "props": {
64
+ "id": "Heading-footer-contact",
65
+ "align": "left",
66
+ "className": "",
67
+ "level": "h4",
68
+ "text": "Visit us"
69
+ }
70
+ },
71
+ {
72
+ "type": "ContactDetails",
73
+ "props": {
74
+ "id": "ContactDetails-footer",
75
+ "address": true,
76
+ "className": "text-muted-foreground",
77
+ "email": true,
78
+ "layout": "stacked",
79
+ "phone": true
80
+ }
81
+ }
82
+ ],
83
+ "justify": "start",
84
+ "wrap": true
85
+ }
86
+ },
87
+ {
88
+ "type": "Flex",
89
+ "props": {
90
+ "id": "Flex-footer-links",
91
+ "align": "start",
92
+ "className": "",
93
+ "direction": "column",
94
+ "gap": "sm",
95
+ "items": [
96
+ {
97
+ "type": "Heading",
98
+ "props": {
99
+ "id": "Heading-footer-links",
100
+ "align": "left",
101
+ "className": "",
102
+ "level": "h4",
103
+ "text": "Find"
104
+ }
105
+ },
106
+ {
107
+ "type": "Menu",
108
+ "props": {
109
+ "id": "Menu-footer",
110
+ "className": "-mx-3",
111
+ "menu": "footer",
112
+ "orientation": "vertical"
113
+ }
114
+ }
115
+ ],
116
+ "justify": "start",
117
+ "wrap": true
118
+ }
119
+ }
120
+ ]
121
+ }
122
+ },
123
+ {
124
+ "type": "Text",
125
+ "props": {
126
+ "id": "Text-footer-note",
127
+ "align": "left",
128
+ "className": "mt-10 border-t pt-6 text-sm text-muted-foreground",
129
+ "content": "<p>St. Joseph Parish is not a real parish: this is an example site, made with Goodfellow.</p>"
130
+ }
131
+ }
132
+ ],
133
+ "padding": "md",
134
+ "width": "wide"
135
+ }
136
+ }
137
+ ],
138
+ "root": {
139
+ "props": {}
140
+ }
141
+ }
142
+ }
@@ -0,0 +1,54 @@
1
+ {
2
+ "version": 1,
3
+ "data": {
4
+ "content": [
5
+ {
6
+ "type": "Section",
7
+ "props": {
8
+ "id": "Section-header",
9
+ "background": "none",
10
+ "backgroundImage": "",
11
+ "className": "",
12
+ "content": [
13
+ {
14
+ "type": "Flex",
15
+ "props": {
16
+ "id": "Flex-header",
17
+ "align": "center",
18
+ "className": "",
19
+ "direction": "row",
20
+ "gap": "md",
21
+ "items": [
22
+ {
23
+ "type": "SiteBrand",
24
+ "props": {
25
+ "id": "SiteBrand-header",
26
+ "className": "",
27
+ "show": "both"
28
+ }
29
+ },
30
+ {
31
+ "type": "Menu",
32
+ "props": {
33
+ "id": "Menu-main",
34
+ "className": "",
35
+ "menu": "main",
36
+ "orientation": "horizontal"
37
+ }
38
+ }
39
+ ],
40
+ "justify": "between",
41
+ "wrap": true
42
+ }
43
+ }
44
+ ],
45
+ "padding": "sm",
46
+ "width": "wide"
47
+ }
48
+ }
49
+ ],
50
+ "root": {
51
+ "props": {}
52
+ }
53
+ }
54
+ }
@@ -0,0 +1,67 @@
1
+ {
2
+ "version": 1,
3
+ "menus": {
4
+ "footer": [
5
+ {
6
+ "href": "/mass-times",
7
+ "label": "Mass times"
8
+ },
9
+ {
10
+ "href": "/bulletins",
11
+ "label": "Bulletins"
12
+ },
13
+ {
14
+ "href": "/sacraments",
15
+ "label": "Sacraments"
16
+ },
17
+ {
18
+ "href": "/contact",
19
+ "label": "Contact us"
20
+ }
21
+ ],
22
+ "main": [
23
+ {
24
+ "href": "/",
25
+ "label": "Home"
26
+ },
27
+ {
28
+ "href": "/mass-times",
29
+ "label": "Mass times"
30
+ },
31
+ {
32
+ "href": "/sacraments",
33
+ "label": "Sacraments"
34
+ },
35
+ {
36
+ "children": [
37
+ {
38
+ "href": "/events",
39
+ "label": "Events"
40
+ },
41
+ {
42
+ "href": "/calendar",
43
+ "label": "Calendar"
44
+ },
45
+ {
46
+ "href": "/news",
47
+ "label": "News"
48
+ },
49
+ {
50
+ "href": "/bulletins",
51
+ "label": "Bulletins"
52
+ }
53
+ ],
54
+ "href": "/events",
55
+ "label": "Parish life"
56
+ },
57
+ {
58
+ "href": "/about",
59
+ "label": "About us"
60
+ },
61
+ {
62
+ "href": "/contact",
63
+ "label": "Contact"
64
+ }
65
+ ]
66
+ }
67
+ }
@@ -0,0 +1,85 @@
1
+ {
2
+ "version": 1,
3
+ "data": {
4
+ "content": [
5
+ {
6
+ "type": "Section",
7
+ "props": {
8
+ "id": "Section-not-found",
9
+ "background": "none",
10
+ "backgroundImage": "",
11
+ "className": "",
12
+ "content": [
13
+ {
14
+ "type": "Heading",
15
+ "props": {
16
+ "id": "Heading-not-found",
17
+ "align": "left",
18
+ "className": "",
19
+ "level": "h1",
20
+ "text": "Page not found"
21
+ }
22
+ },
23
+ {
24
+ "type": "Text",
25
+ "props": {
26
+ "id": "Text-not-found",
27
+ "align": "left",
28
+ "className": "mt-4 text-lg text-muted-foreground",
29
+ "content": "<p>Sorry, there's no page at this address. It may have moved.</p>"
30
+ }
31
+ },
32
+ {
33
+ "type": "Flex",
34
+ "props": {
35
+ "id": "Flex-not-found",
36
+ "align": "center",
37
+ "className": "mt-8",
38
+ "direction": "row",
39
+ "gap": "md",
40
+ "items": [
41
+ {
42
+ "type": "Button",
43
+ "props": {
44
+ "id": "Button-home",
45
+ "className": "",
46
+ "href": "/",
47
+ "label": "Go to the home page",
48
+ "newTab": false,
49
+ "size": "md",
50
+ "variant": "primary"
51
+ }
52
+ },
53
+ {
54
+ "type": "Button",
55
+ "props": {
56
+ "id": "Button-times",
57
+ "className": "",
58
+ "href": "/mass-times",
59
+ "label": "Mass times",
60
+ "newTab": false,
61
+ "size": "md",
62
+ "variant": "outline"
63
+ }
64
+ }
65
+ ],
66
+ "justify": "start",
67
+ "wrap": true
68
+ }
69
+ }
70
+ ],
71
+ "padding": "lg",
72
+ "width": "narrow"
73
+ }
74
+ }
75
+ ],
76
+ "root": {
77
+ "props": {
78
+ "className": "",
79
+ "description": "",
80
+ "image": "",
81
+ "title": "Page not found"
82
+ }
83
+ }
84
+ }
85
+ }