diff --git a/apps/cms/config/plugins.ts b/apps/cms/config/plugins.ts
index 7ecff970..2924b25e 100644
--- a/apps/cms/config/plugins.ts
+++ b/apps/cms/config/plugins.ts
@@ -53,6 +53,10 @@ const config = ({
config: {
endpoint: "/graphql",
shadowCRUD: true,
+ // graphql-depth-limit@1.1.0 crashes on fragment spreads within
+ // dynamic-zone unions (reads .kind on undefined nodes). Set high
+ // to avoid the crash path in the library's recursive traversal.
+ depthLimit: 100,
landingPage: env("NODE_ENV") !== "production",
generateArtifacts: true,
artifacts: {
diff --git a/apps/cms/schema.graphql b/apps/cms/schema.graphql
index f50643c3..940ee6c7 100644
--- a/apps/cms/schema.graphql
+++ b/apps/cms/schema.graphql
@@ -392,6 +392,26 @@ input ComponentSectionsPromoBannerInput {
widthPercent: Int
}
+type ComponentSectionsQuizButton {
+ buttonText: String!
+ id: ID!
+ iframeSrc: String!
+}
+
+input ComponentSectionsQuizButtonFiltersInput {
+ and: [ComponentSectionsQuizButtonFiltersInput]
+ buttonText: StringFilterInput
+ iframeSrc: StringFilterInput
+ not: ComponentSectionsQuizButtonFiltersInput
+ or: [ComponentSectionsQuizButtonFiltersInput]
+}
+
+input ComponentSectionsQuizButtonInput {
+ buttonText: String
+ id: ID
+ iframeSrc: String
+}
+
type ComponentSectionsRelatedQuestionItem {
answer: String!
id: ID!
@@ -787,7 +807,7 @@ input FloatFilterInput {
startsWith: Float
}
-union GenericMorph = ComponentSectionsBibleQuoteItem | ComponentSectionsBibleQuotesCarousel | ComponentSectionsCard | ComponentSectionsContainer | ComponentSectionsContainerSlot | ComponentSectionsCta | ComponentSectionsEasterDates | ComponentSectionsInfoBlock | ComponentSectionsInfoBlocks | ComponentSectionsMediaCollection | ComponentSectionsMediaCollectionItem | ComponentSectionsPromoBanner | ComponentSectionsRelatedQuestionItem | ComponentSectionsRelatedQuestions | ComponentSectionsSection | ComponentSectionsText | ComponentSectionsVideo | ComponentSectionsVideoHero | Experience | I18NLocale | ReviewWorkflowsWorkflow | ReviewWorkflowsWorkflowStage | UploadFile | UsersPermissionsPermission | UsersPermissionsRole | UsersPermissionsUser | Video
+union GenericMorph = ComponentSectionsBibleQuoteItem | ComponentSectionsBibleQuotesCarousel | ComponentSectionsCard | ComponentSectionsContainer | ComponentSectionsContainerSlot | ComponentSectionsCta | ComponentSectionsEasterDates | ComponentSectionsInfoBlock | ComponentSectionsInfoBlocks | ComponentSectionsMediaCollection | ComponentSectionsMediaCollectionItem | ComponentSectionsPromoBanner | ComponentSectionsQuizButton | ComponentSectionsRelatedQuestionItem | ComponentSectionsRelatedQuestions | ComponentSectionsSection | ComponentSectionsText | ComponentSectionsVideo | ComponentSectionsVideoHero | Experience | I18NLocale | ReviewWorkflowsWorkflow | ReviewWorkflowsWorkflowStage | UploadFile | UsersPermissionsPermission | UsersPermissionsRole | UsersPermissionsUser | Video
type I18NLocale {
code: String
@@ -1190,7 +1210,7 @@ type ReviewWorkflowsWorkflowStageRelationResponseCollection {
nodes: [ReviewWorkflowsWorkflowStage!]!
}
-union SectionContentDynamicZone = ComponentSectionsBibleQuotesCarousel | ComponentSectionsCard | ComponentSectionsContainer | ComponentSectionsCta | ComponentSectionsInfoBlocks | ComponentSectionsMediaCollection | ComponentSectionsPromoBanner | ComponentSectionsRelatedQuestions | ComponentSectionsText | ComponentSectionsVideo | Error
+union SectionContentDynamicZone = ComponentSectionsBibleQuotesCarousel | ComponentSectionsCard | ComponentSectionsContainer | ComponentSectionsCta | ComponentSectionsInfoBlocks | ComponentSectionsMediaCollection | ComponentSectionsPromoBanner | ComponentSectionsQuizButton | ComponentSectionsRelatedQuestions | ComponentSectionsText | ComponentSectionsVideo | Error
scalar SectionContentDynamicZoneInput
diff --git a/apps/cms/scripts/seed-easter.cjs b/apps/cms/scripts/seed-easter.cjs
index 3985c7d4..73129393 100644
--- a/apps/cms/scripts/seed-easter.cjs
+++ b/apps/cms/scripts/seed-easter.cjs
@@ -349,6 +349,12 @@ async function main() {
],
}
+ const quizButtonBlock = {
+ __component: "sections.quiz-button",
+ buttonText: "What's your next step of faith?",
+ iframeSrc: "https://your.nextstep.is/embed/easter2025?expand=false",
+ }
+
const sectionBlock = {
__component: "sections.section",
sectionKey: "easter-meaning",
@@ -358,6 +364,7 @@ async function main() {
easterExplainedBlock,
textAndQuestionsContainer,
bibleQuotesBlock,
+ quizButtonBlock,
],
}
diff --git a/apps/cms/src/components/sections/quiz-button.json b/apps/cms/src/components/sections/quiz-button.json
new file mode 100644
index 00000000..e51f1e1c
--- /dev/null
+++ b/apps/cms/src/components/sections/quiz-button.json
@@ -0,0 +1,20 @@
+{
+ "collectionName": "components_sections_quiz_buttons",
+ "info": {
+ "displayName": "Quiz Button",
+ "icon": "question-circle",
+ "description": "Interactive quiz button that opens a modal with an embedded quiz iframe"
+ },
+ "options": {},
+ "attributes": {
+ "buttonText": {
+ "type": "string",
+ "required": true
+ },
+ "iframeSrc": {
+ "type": "string",
+ "required": true,
+ "regex": "^https://[\\w.-]+\\.nextstep\\.is/.*$"
+ }
+ }
+}
diff --git a/apps/cms/src/components/sections/section.json b/apps/cms/src/components/sections/section.json
index a464afd9..49aa8cec 100644
--- a/apps/cms/src/components/sections/section.json
+++ b/apps/cms/src/components/sections/section.json
@@ -43,7 +43,8 @@
"sections.related-questions",
"sections.bible-quotes-carousel",
"sections.card",
- "sections.video"
+ "sections.video",
+ "sections.quiz-button"
],
"required": false
}
diff --git a/apps/web/src/app/globals.css b/apps/web/src/app/globals.css
index 36a1b614..bec9cc21 100644
--- a/apps/web/src/app/globals.css
+++ b/apps/web/src/app/globals.css
@@ -133,3 +133,24 @@
@apply font-sans;
}
}
+
+@layer utilities {
+ .animate-mesh-gradient {
+ animation: mesh-gradient 6s ease infinite;
+ }
+ .animate-mesh-gradient-fast {
+ animation: mesh-gradient 2s ease infinite;
+ }
+}
+
+@keyframes mesh-gradient {
+ 0% {
+ background-position: 0% 50%;
+ }
+ 50% {
+ background-position: 100% 50%;
+ }
+ 100% {
+ background-position: 0% 50%;
+ }
+}
diff --git a/apps/web/src/components/sections/QuizButton.tsx b/apps/web/src/components/sections/QuizButton.tsx
new file mode 100644
index 00000000..cacadea7
--- /dev/null
+++ b/apps/web/src/components/sections/QuizButton.tsx
@@ -0,0 +1,78 @@
+"use client"
+
+import { type ReactElement, useState } from "react"
+import { Loader2, XIcon } from "lucide-react"
+import { Dialog, DialogClose, DialogContent } from "@/components/ui/dialog"
+
+type QuizButtonData = {
+ id: string
+ buttonText: string
+ iframeSrc: string
+}
+
+type QuizButtonProps = {
+ data: QuizButtonData
+}
+
+export function QuizButton({ data }: QuizButtonProps): ReactElement {
+ const { buttonText, iframeSrc } = data
+ const [open, setOpen] = useState(false)
+
+ return (
+ <>
+
+
+
+
+
+ >
+ )
+}
diff --git a/apps/web/src/components/sections/Section.tsx b/apps/web/src/components/sections/Section.tsx
index f13f32a4..50ef626b 100644
--- a/apps/web/src/components/sections/Section.tsx
+++ b/apps/web/src/components/sections/Section.tsx
@@ -11,6 +11,7 @@ import { BibleQuotesCarousel } from "./BibleQuotesCarousel"
import { Container } from "./Container"
import { DynamicBackground } from "./DynamicBackground"
import { MediaCollection } from "./MediaCollection"
+import { QuizButton } from "./QuizButton"
import { RelatedQuestions } from "./RelatedQuestions"
import { Video } from "./Video"
@@ -145,6 +146,18 @@ function SectionContentRenderer({ item }: { item: SectionContentItem }) {
data={item as unknown as FragmentOf}
/>
)
+ case "ComponentSectionsQuizButton":
+ return (
+
+ )
default: {
if (process.env.NODE_ENV === "development") {
console.warn("[Section] Unhandled content type:", typename)
diff --git a/apps/web/src/components/ui/dialog.tsx b/apps/web/src/components/ui/dialog.tsx
new file mode 100644
index 00000000..d0c9257e
--- /dev/null
+++ b/apps/web/src/components/ui/dialog.tsx
@@ -0,0 +1,158 @@
+"use client"
+
+import * as React from "react"
+import { Dialog as DialogPrimitive } from "@base-ui/react/dialog"
+
+import { cn } from "@/lib/utils"
+import { Button } from "@/components/ui/button"
+import { XIcon } from "lucide-react"
+
+function Dialog({ ...props }: DialogPrimitive.Root.Props) {
+ return
+}
+
+function DialogTrigger({ ...props }: DialogPrimitive.Trigger.Props) {
+ return
+}
+
+function DialogPortal({ ...props }: DialogPrimitive.Portal.Props) {
+ return
+}
+
+function DialogClose({ ...props }: DialogPrimitive.Close.Props) {
+ return
+}
+
+function DialogOverlay({
+ className,
+ ...props
+}: DialogPrimitive.Backdrop.Props) {
+ return (
+
+ )
+}
+
+function DialogContent({
+ className,
+ children,
+ showCloseButton = true,
+ overlayClassName,
+ ...props
+}: DialogPrimitive.Popup.Props & {
+ showCloseButton?: boolean
+ overlayClassName?: string
+}) {
+ return (
+
+
+
+ {children}
+ {showCloseButton && (
+
+ }
+ >
+
+ Close
+
+ )}
+
+
+ )
+}
+
+function DialogHeader({ className, ...props }: React.ComponentProps<"div">) {
+ return (
+
+ )
+}
+
+function DialogFooter({
+ className,
+ showCloseButton = false,
+ children,
+ ...props
+}: React.ComponentProps<"div"> & {
+ showCloseButton?: boolean
+}) {
+ return (
+
+ {children}
+ {showCloseButton && (
+ }>
+ Close
+
+ )}
+
+ )
+}
+
+function DialogTitle({ className, ...props }: DialogPrimitive.Title.Props) {
+ return (
+
+ )
+}
+
+function DialogDescription({
+ className,
+ ...props
+}: DialogPrimitive.Description.Props) {
+ return (
+
+ )
+}
+
+export {
+ Dialog,
+ DialogClose,
+ DialogContent,
+ DialogDescription,
+ DialogFooter,
+ DialogHeader,
+ DialogOverlay,
+ DialogPortal,
+ DialogTitle,
+ DialogTrigger,
+}
diff --git a/apps/web/src/lib/fragments/quiz-button-section.ts b/apps/web/src/lib/fragments/quiz-button-section.ts
new file mode 100644
index 00000000..ab7bbdf4
--- /dev/null
+++ b/apps/web/src/lib/fragments/quiz-button-section.ts
@@ -0,0 +1,9 @@
+import { graphql } from "@forge/graphql"
+
+export const quizButtonSectionFragment = graphql(`
+ fragment QuizButtonSection on ComponentSectionsQuizButton @_unmask {
+ id
+ buttonText
+ iframeSrc
+ }
+`)
diff --git a/apps/web/src/lib/fragments/section.ts b/apps/web/src/lib/fragments/section.ts
index 3ab82c57..60956676 100644
--- a/apps/web/src/lib/fragments/section.ts
+++ b/apps/web/src/lib/fragments/section.ts
@@ -25,6 +25,11 @@ export const sectionFragment = graphql(`
... on ComponentSectionsMediaCollection {
...MediaCollection
}
+ ... on ComponentSectionsQuizButton {
+ id
+ buttonText
+ iframeSrc
+ }
}
}
`)
diff --git a/packages/graphql/src/graphql-env.d.ts b/packages/graphql/src/graphql-env.d.ts
index 3714cdc7..77c6de16 100644
--- a/packages/graphql/src/graphql-env.d.ts
+++ b/packages/graphql/src/graphql-env.d.ts
@@ -40,6 +40,9 @@ export type introspection_types = {
'ComponentSectionsPromoBanner': { kind: 'OBJECT'; name: 'ComponentSectionsPromoBanner'; fields: { 'ctaLink': { name: 'ctaLink'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'heading': { name: 'heading'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'intro': { name: 'intro'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'sectionKey': { name: 'sectionKey'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'widthPercent': { name: 'widthPercent'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; }; };
'ComponentSectionsPromoBannerFiltersInput': { kind: 'INPUT_OBJECT'; name: 'ComponentSectionsPromoBannerFiltersInput'; isOneOf: false; inputFields: [{ name: 'and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ComponentSectionsPromoBannerFiltersInput'; ofType: null; }; }; defaultValue: null }, { name: 'ctaLink'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilterInput'; ofType: null; }; defaultValue: null }, { name: 'description'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilterInput'; ofType: null; }; defaultValue: null }, { name: 'heading'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilterInput'; ofType: null; }; defaultValue: null }, { name: 'intro'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilterInput'; ofType: null; }; defaultValue: null }, { name: 'not'; type: { kind: 'INPUT_OBJECT'; name: 'ComponentSectionsPromoBannerFiltersInput'; ofType: null; }; defaultValue: null }, { name: 'or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ComponentSectionsPromoBannerFiltersInput'; ofType: null; }; }; defaultValue: null }, { name: 'sectionKey'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilterInput'; ofType: null; }; defaultValue: null }, { name: 'widthPercent'; type: { kind: 'INPUT_OBJECT'; name: 'IntFilterInput'; ofType: null; }; defaultValue: null }]; };
'ComponentSectionsPromoBannerInput': { kind: 'INPUT_OBJECT'; name: 'ComponentSectionsPromoBannerInput'; isOneOf: false; inputFields: [{ name: 'ctaLink'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'description'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'heading'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'id'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'intro'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'sectionKey'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'widthPercent'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }]; };
+ 'ComponentSectionsQuizButton': { kind: 'OBJECT'; name: 'ComponentSectionsQuizButton'; fields: { 'buttonText': { name: 'buttonText'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'iframeSrc': { name: 'iframeSrc'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; };
+ 'ComponentSectionsQuizButtonFiltersInput': { kind: 'INPUT_OBJECT'; name: 'ComponentSectionsQuizButtonFiltersInput'; isOneOf: false; inputFields: [{ name: 'and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ComponentSectionsQuizButtonFiltersInput'; ofType: null; }; }; defaultValue: null }, { name: 'buttonText'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilterInput'; ofType: null; }; defaultValue: null }, { name: 'iframeSrc'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilterInput'; ofType: null; }; defaultValue: null }, { name: 'not'; type: { kind: 'INPUT_OBJECT'; name: 'ComponentSectionsQuizButtonFiltersInput'; ofType: null; }; defaultValue: null }, { name: 'or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ComponentSectionsQuizButtonFiltersInput'; ofType: null; }; }; defaultValue: null }]; };
+ 'ComponentSectionsQuizButtonInput': { kind: 'INPUT_OBJECT'; name: 'ComponentSectionsQuizButtonInput'; isOneOf: false; inputFields: [{ name: 'buttonText'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'id'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'iframeSrc'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }]; };
'ComponentSectionsRelatedQuestionItem': { kind: 'OBJECT'; name: 'ComponentSectionsRelatedQuestionItem'; fields: { 'answer': { name: 'answer'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'question': { name: 'question'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; };
'ComponentSectionsRelatedQuestionItemFiltersInput': { kind: 'INPUT_OBJECT'; name: 'ComponentSectionsRelatedQuestionItemFiltersInput'; isOneOf: false; inputFields: [{ name: 'and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ComponentSectionsRelatedQuestionItemFiltersInput'; ofType: null; }; }; defaultValue: null }, { name: 'answer'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilterInput'; ofType: null; }; defaultValue: null }, { name: 'not'; type: { kind: 'INPUT_OBJECT'; name: 'ComponentSectionsRelatedQuestionItemFiltersInput'; ofType: null; }; defaultValue: null }, { name: 'or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ComponentSectionsRelatedQuestionItemFiltersInput'; ofType: null; }; }; defaultValue: null }, { name: 'question'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilterInput'; ofType: null; }; defaultValue: null }]; };
'ComponentSectionsRelatedQuestionItemInput': { kind: 'INPUT_OBJECT'; name: 'ComponentSectionsRelatedQuestionItemInput'; isOneOf: false; inputFields: [{ name: 'answer'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'id'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'question'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }]; };
@@ -84,7 +87,7 @@ export type introspection_types = {
'FileInfoInput': { kind: 'INPUT_OBJECT'; name: 'FileInfoInput'; isOneOf: false; inputFields: [{ name: 'alternativeText'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'caption'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }]; };
'Float': unknown;
'FloatFilterInput': { kind: 'INPUT_OBJECT'; name: 'FloatFilterInput'; isOneOf: false; inputFields: [{ name: 'and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; }; defaultValue: null }, { name: 'between'; type: { kind: 'LIST'; name: never; ofType: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; }; defaultValue: null }, { name: 'contains'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; defaultValue: null }, { name: 'containsi'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; defaultValue: null }, { name: 'endsWith'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; defaultValue: null }, { name: 'eq'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; defaultValue: null }, { name: 'eqi'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; defaultValue: null }, { name: 'gt'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; defaultValue: null }, { name: 'gte'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; defaultValue: null }, { name: 'in'; type: { kind: 'LIST'; name: never; ofType: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; }; defaultValue: null }, { name: 'lt'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; defaultValue: null }, { name: 'lte'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; defaultValue: null }, { name: 'ne'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; defaultValue: null }, { name: 'nei'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; defaultValue: null }, { name: 'not'; type: { kind: 'INPUT_OBJECT'; name: 'FloatFilterInput'; ofType: null; }; defaultValue: null }, { name: 'notContains'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; defaultValue: null }, { name: 'notContainsi'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; defaultValue: null }, { name: 'notIn'; type: { kind: 'LIST'; name: never; ofType: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; }; defaultValue: null }, { name: 'notNull'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'null'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; }; defaultValue: null }, { name: 'startsWith'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; defaultValue: null }]; };
- 'GenericMorph': { kind: 'UNION'; name: 'GenericMorph'; fields: {}; possibleTypes: 'ComponentSectionsBibleQuoteItem' | 'ComponentSectionsBibleQuotesCarousel' | 'ComponentSectionsCard' | 'ComponentSectionsContainer' | 'ComponentSectionsContainerSlot' | 'ComponentSectionsCta' | 'ComponentSectionsEasterDates' | 'ComponentSectionsInfoBlock' | 'ComponentSectionsInfoBlocks' | 'ComponentSectionsMediaCollection' | 'ComponentSectionsMediaCollectionItem' | 'ComponentSectionsPromoBanner' | 'ComponentSectionsRelatedQuestionItem' | 'ComponentSectionsRelatedQuestions' | 'ComponentSectionsSection' | 'ComponentSectionsText' | 'ComponentSectionsVideo' | 'ComponentSectionsVideoHero' | 'Experience' | 'I18NLocale' | 'ReviewWorkflowsWorkflow' | 'ReviewWorkflowsWorkflowStage' | 'UploadFile' | 'UsersPermissionsPermission' | 'UsersPermissionsRole' | 'UsersPermissionsUser' | 'Video'; };
+ 'GenericMorph': { kind: 'UNION'; name: 'GenericMorph'; fields: {}; possibleTypes: 'ComponentSectionsBibleQuoteItem' | 'ComponentSectionsBibleQuotesCarousel' | 'ComponentSectionsCard' | 'ComponentSectionsContainer' | 'ComponentSectionsContainerSlot' | 'ComponentSectionsCta' | 'ComponentSectionsEasterDates' | 'ComponentSectionsInfoBlock' | 'ComponentSectionsInfoBlocks' | 'ComponentSectionsMediaCollection' | 'ComponentSectionsMediaCollectionItem' | 'ComponentSectionsPromoBanner' | 'ComponentSectionsQuizButton' | 'ComponentSectionsRelatedQuestionItem' | 'ComponentSectionsRelatedQuestions' | 'ComponentSectionsSection' | 'ComponentSectionsText' | 'ComponentSectionsVideo' | 'ComponentSectionsVideoHero' | 'Experience' | 'I18NLocale' | 'ReviewWorkflowsWorkflow' | 'ReviewWorkflowsWorkflowStage' | 'UploadFile' | 'UsersPermissionsPermission' | 'UsersPermissionsRole' | 'UsersPermissionsUser' | 'Video'; };
'I18NLocale': { kind: 'OBJECT'; name: 'I18NLocale'; fields: { 'code': { name: 'code'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; } }; 'documentId': { name: 'documentId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'publishedAt': { name: 'publishedAt'; type: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; } }; }; };
'I18NLocaleCode': unknown;
'I18NLocaleEntity': { kind: 'OBJECT'; name: 'I18NLocaleEntity'; fields: { 'attributes': { name: 'attributes'; type: { kind: 'OBJECT'; name: 'I18NLocale'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; } }; }; };
@@ -121,7 +124,7 @@ export type introspection_types = {
'ReviewWorkflowsWorkflowStageFiltersInput': { kind: 'INPUT_OBJECT'; name: 'ReviewWorkflowsWorkflowStageFiltersInput'; isOneOf: false; inputFields: [{ name: 'and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ReviewWorkflowsWorkflowStageFiltersInput'; ofType: null; }; }; defaultValue: null }, { name: 'color'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilterInput'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateTimeFilterInput'; ofType: null; }; defaultValue: null }, { name: 'documentId'; type: { kind: 'INPUT_OBJECT'; name: 'IDFilterInput'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilterInput'; ofType: null; }; defaultValue: null }, { name: 'not'; type: { kind: 'INPUT_OBJECT'; name: 'ReviewWorkflowsWorkflowStageFiltersInput'; ofType: null; }; defaultValue: null }, { name: 'or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ReviewWorkflowsWorkflowStageFiltersInput'; ofType: null; }; }; defaultValue: null }, { name: 'publishedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateTimeFilterInput'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateTimeFilterInput'; ofType: null; }; defaultValue: null }, { name: 'workflow'; type: { kind: 'INPUT_OBJECT'; name: 'ReviewWorkflowsWorkflowFiltersInput'; ofType: null; }; defaultValue: null }]; };
'ReviewWorkflowsWorkflowStageInput': { kind: 'INPUT_OBJECT'; name: 'ReviewWorkflowsWorkflowStageInput'; isOneOf: false; inputFields: [{ name: 'color'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'publishedAt'; type: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; defaultValue: null }, { name: 'workflow'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }]; };
'ReviewWorkflowsWorkflowStageRelationResponseCollection': { kind: 'OBJECT'; name: 'ReviewWorkflowsWorkflowStageRelationResponseCollection'; fields: { 'nodes': { name: 'nodes'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ReviewWorkflowsWorkflowStage'; ofType: null; }; }; }; } }; }; };
- 'SectionContentDynamicZone': { kind: 'UNION'; name: 'SectionContentDynamicZone'; fields: {}; possibleTypes: 'ComponentSectionsBibleQuotesCarousel' | 'ComponentSectionsCard' | 'ComponentSectionsContainer' | 'ComponentSectionsCta' | 'ComponentSectionsInfoBlocks' | 'ComponentSectionsMediaCollection' | 'ComponentSectionsPromoBanner' | 'ComponentSectionsRelatedQuestions' | 'ComponentSectionsText' | 'ComponentSectionsVideo' | 'Error'; };
+ 'SectionContentDynamicZone': { kind: 'UNION'; name: 'SectionContentDynamicZone'; fields: {}; possibleTypes: 'ComponentSectionsBibleQuotesCarousel' | 'ComponentSectionsCard' | 'ComponentSectionsContainer' | 'ComponentSectionsCta' | 'ComponentSectionsInfoBlocks' | 'ComponentSectionsMediaCollection' | 'ComponentSectionsPromoBanner' | 'ComponentSectionsQuizButton' | 'ComponentSectionsRelatedQuestions' | 'ComponentSectionsText' | 'ComponentSectionsVideo' | 'Error'; };
'SectionContentDynamicZoneInput': unknown;
'String': unknown;
'StringFilterInput': { kind: 'INPUT_OBJECT'; name: 'StringFilterInput'; isOneOf: false; inputFields: [{ name: 'and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'between'; type: { kind: 'LIST'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'contains'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'containsi'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'endsWith'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'eq'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'eqi'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'gt'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'gte'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'in'; type: { kind: 'LIST'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'lt'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'lte'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'ne'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'nei'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'not'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilterInput'; ofType: null; }; defaultValue: null }, { name: 'notContains'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'notContainsi'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'notIn'; type: { kind: 'LIST'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'notNull'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'null'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'startsWith'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }]; };