diff --git a/pages/community.tsx b/pages/community.tsx deleted file mode 100644 index f8185f96..00000000 --- a/pages/community.tsx +++ /dev/null @@ -1,193 +0,0 @@ -import { - Button, - ColorModeProvider, - DiscordIcon, - GitHubLogoIcon, -} from '@pluralsh/design-system' -import { type GetStaticProps, type InferGetStaticPropsType } from 'next' - -import { FooterVariant } from '@src/components/FooterFull' -import { GradientBG } from '@src/components/layout/GradientBG' -import { StandardPageWidth } from '@src/components/layout/LayoutHelpers' -import CalloutsSection from '@src/components/page-sections/CommunityCalloutsSection' -import CommunityResourcesSection from '@src/components/page-sections/CommunityResourcesSection' -import ContributorsSection from '@src/components/page-sections/ContributorsSection' -import EventsSection from '@src/components/page-sections/EventsSection' -import FeaturedContributorsSection from '@src/components/page-sections/FeaturedContributorsSection' -import { ScrollToLink } from '@src/components/ScrollToLink' -import { ResponsiveText } from '@src/components/Typography' -import { DISCORD_LINK } from '@src/consts' -import { - type Callouts, - getCommunityPageData, -} from '@src/data/getCommunityPageData' -import { type PluralEvent, getEvents } from '@src/data/getEvents' -import { getFeaturedContributors } from '@src/data/getFeaturedContributors' -import { getContributors } from '@src/data/getGithubData' -import { cn as classNames } from '@src/utils/cn' -import { propsWithGlobalSettings } from '@src/utils/getGlobalProps' - -import { HeaderPad } from '../src/components/layout/HeaderPad' -import { combineErrors } from '../src/utils/combineErrors' - -export default function Community({ - contributors, - featuredContributors, - events, - callouts, -}: InferGetStaticPropsType) { - return ( - <> - - -
-
- - Join our community - - - The Plural community is built to support all Plural users - through discussions, educational resources, and events. No - matter how big or small your challenge is our community of - Plural experts and contributors is here to help guide your - journey. - -
-
- - -
-
- - Resources - - - Our contributors - -
-
-
-
-
- -
- - - -
-
-
- -
- - - -
-
- - - - ) -} - -export type CommunityPageProps = { - contributors: any[] - featuredContributors: any[] - events: PluralEvent[] - callouts: Callouts -} - -export const getStaticProps: GetStaticProps = async ( - _context -) => { - const { data: pageData, error: pageDataError } = await getCommunityPageData() - const { data: contributors, error: githubError } = await getContributors() - const { data: featuredContributors, error: featuredContributorsError } = - await getFeaturedContributors() - - if (!contributors || !featuredContributors || !pageData) { - return { notFound: true } - } - - const { data: events, error: eventsError } = await getEvents() - - return propsWithGlobalSettings({ - metaTitle: 'Join the community', - metaDescription: - 'The Plural community is built to support all Plural users through discussions, educational resources, and events.', - contributors, - featuredContributors, - footerVariant: FooterVariant.kitchenSink, - events: events || [], - callouts: pageData.callouts, - errors: combineErrors([ - githubError, - eventsError, - featuredContributorsError, - pageDataError, - ]), - }) -} - -type BaseError = { - name: string - message: string -} -export type FullError = BaseError & { - graphQLErrors?: readonly BaseError[] | undefined -} diff --git a/pages/products/[product].tsx b/pages/products/[product].tsx index 9c1aac53..ace96d71 100644 --- a/pages/products/[product].tsx +++ b/pages/products/[product].tsx @@ -6,7 +6,7 @@ import { FooterVariant } from '@src/components/FooterFull' import { StandardPageWidth } from '@src/components/layout/LayoutHelpers' import { BasicPageHero } from '@src/components/PageHeros' import ProductFeature from '@src/components/ProductFeature' -import { productsConfigs } from '@src/data/getProductConfigs' +import { getProductsConfigs } from '@src/data/getProductConfigs' import { propsWithGlobalSettings } from '@src/utils/getGlobalProps' import { GradientBG } from '../../src/components/layout/GradientBG' @@ -15,7 +15,7 @@ import { HeaderPad } from '../../src/components/layout/HeaderPad' export default function Product({ slug, }: InferGetStaticPropsType) { - const productConfig = productsConfigs[slug] + const productConfig = getProductsConfigs()[slug] return ( { - const products = Object.keys(productsConfigs) + const products = Object.keys(getProductsConfigs()) if (process.env.NODE_ENV === 'development') { return { @@ -75,7 +75,7 @@ export const getStaticProps = async (context) => { ? context?.params?.product : null - if (!slug || !productsConfigs[slug]) { + if (!slug || !getProductsConfigs()[slug]) { return { notFound: true } } diff --git a/pages/solutions/[solution].tsx b/pages/solutions/[solution].tsx index 671b78cf..b49e27f0 100644 --- a/pages/solutions/[solution].tsx +++ b/pages/solutions/[solution].tsx @@ -8,39 +8,17 @@ import Link from 'next/link' import { until } from '@open-draft/until' -import { CaseStudyFAQSection } from '@pages/applications/[repo]' import { directusClient } from '@src/apollo-client' -import BasicMarkdown from '@src/components/BasicMarkdown' -import { Checklist2, Checklist2Item } from '@src/components/Checklist' -import { CompanyLogosSection } from '@src/components/CompanyLogos' -import { FeaturedQuote } from '@src/components/FeaturedQuote' import { FooterVariant } from '@src/components/FooterFull' -import { ColumnsMd, EqualColumn } from '@src/components/layout/Columns' -import { - StandardPageSection, - StandardPageWidth, -} from '@src/components/layout/LayoutHelpers' -import BuildStackSection from '@src/components/page-sections/BuildStackSection' -import { getCaseStudyApps } from '@src/components/page-sections/CaseStudySection' -import { HPWMiniSectionSolutions } from '@src/components/page-sections/HowPluralWorksMiniSection' +import { StandardPageSection } from '@src/components/layout/LayoutHelpers' +import SolutionDownloadSection from '@src/components/page-sections/SolutionDownloadSection' +import SolutionFeatureSection from '@src/components/page-sections/SolutionFeatureSection' import { BasicPageHero } from '@src/components/PageHeros' -import { - CenteredSectionHead, - SubsectionHead, -} from '@src/components/SectionHeads' -import { ShadowedCard } from '@src/components/ShadowedCard' -import { Body2, Cta } from '@src/components/Typography' -import { getImageUrl } from '@src/consts/routes' -import { type TinyRepo, getTinyRepos } from '@src/data/getRepos' +import SolutionProblem from '@src/components/SolutionProblem' +import { getTinyRepos } from '@src/data/getRepos' import { getStacks } from '@src/data/getStacks' import { getStackTabData } from '@src/data/getStackTabData' import { - type CaseStudyFragment, - type FaqItemFragment, - FaqListDocument, - type FaqListQuery, - type FaqListQueryVariables, - type QuoteFragment, type SolutionFragment, SolutionsDocument, type SolutionsQuery, @@ -49,13 +27,11 @@ import { type SolutionsSlugsQuery, type SolutionsSlugsQueryVariables, } from '@src/generated/graphqlDirectus' -import { cn as classNames } from '@src/utils/cn' import { combineErrors } from '@src/utils/combineErrors' import { type GlobalProps, propsWithGlobalSettings, } from '@src/utils/getGlobalProps' -import { normalizeM2mItems } from '@src/utils/normalizeQuotes' import { GradientBG } from '../../src/components/layout/GradientBG' import { HeaderPad } from '../../src/components/layout/HeaderPad' @@ -68,112 +44,90 @@ export type ProviderProps = { export default function Solution({ solution, - caseStudy, - caseStudyApps, - faqs, - featuredQuote, - buildStackTabs, - globalProps, }: InferGetStaticPropsType) { - // const router = useRouter() - const imageUrl = getImageUrl(solution?.hero_image) + if (!solution) return null return ( <> - + - - - ) : undefined - } ctas={ -
+
+
} /> + {/* upper features */} + + {/* solution problems */} - - -
- } + +
+ {solution?.problems?.map((problem) => ( + - - - - - - - - - - - {solution.bullet_points.map( - (bullet, i) => - bullet?.content && ( - - {bullet.content} - - ) - )} - - Book a demo today - - - - -
- + ))} +
- - - - {buildStackTabs && } + + + + + + + ) } export const getStaticPaths: GetStaticPaths = async () => { - const { data } = await directusClient.query< + const { data, error } = await directusClient.query< SolutionsSlugsQuery, SolutionsSlugsQueryVariables >({ query: SolutionsSlugsDocument, }) + + if (error) { + console.error('GraphQL query error in static:', error) + } + const solutions = data.solutions_pages if (process.env.NODE_ENV === 'development') { @@ -193,11 +147,7 @@ export const getStaticPaths: GetStaticPaths = async () => { export type AppPageProps = { solution: SolutionFragment - faqs: (FaqItemFragment | null)[] globalProps: GlobalProps - caseStudy: CaseStudyFragment | null - featuredQuote: QuoteFragment | null - caseStudyApps: TinyRepo[] buildStackTabs?: ReturnType } @@ -216,6 +166,10 @@ export const getStaticProps: GetStaticProps = async (context) => { query: SolutionsDocument, variables: { slug }, }) + + if (solutionError) { + console.error('GraphQL query error in static: ', solutionError) + } const solution = solutionData?.solutions_pages?.[0] || null if (!solution) { @@ -225,28 +179,14 @@ export const getStaticProps: GetStaticProps = async (context) => { const { data: repos, error: reposError } = await until(() => getTinyRepos()) const { data: stacks, error: stacksError } = await until(() => getStacks()) - const { data: faqData, error: faqError } = await directusClient.query< - FaqListQuery, - FaqListQueryVariables - >({ - query: FaqListDocument, - variables: { slug: 'generic' }, - }) const buildStackTabs = getStackTabData({ repos, stacks }) return propsWithGlobalSettings({ solution, metaTitle: `Solution${solution.title ? ` – ${solution.title}` : ''}`, metaDescription: solution.description || null, - faqs: normalizeM2mItems(faqData.collapsible_lists?.[0]) || [], - caseStudy: solution.case_study || null, - caseStudyApps: getCaseStudyApps( - repos, - (solution.case_study?.stack_apps as string[]) || [] - ), - featuredQuote: solution.featured_quote || null, buildStackTabs, footerVariant: FooterVariant.kitchenSink, - errors: combineErrors([solutionError, faqError, reposError, stacksError]), + errors: combineErrors([solutionError, reposError, stacksError]), }) } diff --git a/public/images/solutions/download-section-bg.png b/public/images/solutions/download-section-bg.png new file mode 100644 index 00000000..f66569d6 Binary files /dev/null and b/public/images/solutions/download-section-bg.png differ diff --git a/public/images/solutions/quote-left-circle.png b/public/images/solutions/quote-left-circle.png new file mode 100644 index 00000000..8107f404 Binary files /dev/null and b/public/images/solutions/quote-left-circle.png differ diff --git a/public/images/solutions/quote-right-circle.png b/public/images/solutions/quote-right-circle.png new file mode 100644 index 00000000..24db4de7 Binary files /dev/null and b/public/images/solutions/quote-right-circle.png differ diff --git a/public/images/solutions/solutions-background.png b/public/images/solutions/solutions-background.png new file mode 100644 index 00000000..a186e896 Binary files /dev/null and b/public/images/solutions/solutions-background.png differ diff --git a/public/pdfs/solutions/e-books/plural-for-healthcare.pdf b/public/pdfs/solutions/e-books/plural-for-healthcare.pdf new file mode 100644 index 00000000..64de464d Binary files /dev/null and b/public/pdfs/solutions/e-books/plural-for-healthcare.pdf differ diff --git a/src/components/FeaturedQuote.tsx b/src/components/FeaturedQuote.tsx index b331633a..7ee85840 100644 --- a/src/components/FeaturedQuote.tsx +++ b/src/components/FeaturedQuote.tsx @@ -13,28 +13,15 @@ const FeaturedQuoteSC = styled.div(({ theme }) => ({ // Used fill-two in Product page comp, but think that's a mistake // backgroundColor: theme.colors['fill-two'], backgroundColor: theme.colors['fill-zero'], + position: 'relative', '.contentArea': { display: 'flex', flexDirection: 'column', rowGap: theme.spacing.xlarge, textWrap: 'balance', }, - '.stars': { - display: 'flex', - gap: theme.spacing.xsmall, - alignItems: 'center', - }, -})) - -const IconStarSC = styled.img((_) => ({ - width: 20, - height: 20, })) -function IconStar() { - return -} - export function FeaturedQuote({ quote, ...props @@ -45,22 +32,25 @@ export function FeaturedQuote({ return ( - + + +
-
- - - - - -
- - {quote.quote} + + "{quote.quote}" {[quote.name, quote.title].filter((q) => !!q).join(' | ')} diff --git a/src/components/Navigation.tsx b/src/components/Navigation.tsx index 30ca15b3..9bf7daf6 100644 --- a/src/components/Navigation.tsx +++ b/src/components/Navigation.tsx @@ -4,7 +4,7 @@ import { ArrowRightIcon, useNavigationContext } from '@pluralsh/design-system' import styled, { useTheme } from 'styled-components' -import { productsConfigs } from '@src/data/getProductConfigs' +import { getProductsConfigs } from '@src/data/getProductConfigs' import { mqs } from '../breakpoints' @@ -28,7 +28,7 @@ export const ProductLink = forwardRef( const { Link } = useNavigationContext() const theme = useTheme() - const itemConfig = productsConfigs[props.id || ''] + const itemConfig = getProductsConfigs()[props.id || ''] return ( +
+ + {title} + + +
+
+ + + {subtitle} + + + + + {problem} + + + + + + + + + {solution} + + + +
+ + ) +} + +const sharedResponsiveStyles = + 'flex-col rounded-large border lg:flex-row py-xlarge px-medium lg:px-xxlarge lg:py-xxxlarge' + +export default SolutionProblem + +const SharedStyles = styled.div(({ theme }) => ({ + width: '100%', + flexGrow: 1, + gap: theme.spacing.medium, + borderColor: theme.colors['border-disabled'], + display: 'flex', + alignItems: 'center', +})) + +const ProblemContainerSC = styled(SharedStyles)(({ theme }) => ({ + background: `linear-gradient(to right, rgba(232, 23, 72, 0.04), ${theme.colors['fill-zero']})`, +})) + +const SolutionContainerSC = styled(SharedStyles)(({ theme }) => ({ + background: `linear-gradient(to right, ${theme.colors['fill-zero']}, rgba(60, 236, 175, 0.04))`, +})) diff --git a/src/components/page-sections/SolutionDownloadSection.tsx b/src/components/page-sections/SolutionDownloadSection.tsx new file mode 100644 index 00000000..b667c161 --- /dev/null +++ b/src/components/page-sections/SolutionDownloadSection.tsx @@ -0,0 +1,76 @@ +import { Button, ConsoleIcon, DownloadIcon } from '@pluralsh/design-system' +import Link from 'next/link' + +import styled from 'styled-components' + +import { type SolutionFragment } from '@src/generated/graphqlDirectus' + +import { EqualColumn } from '../layout/Columns' +import { StandardPageSection } from '../layout/LayoutHelpers' +import { ResponsiveText } from '../Typography' + +function SolutionDownloadSection({ solution }: { solution: SolutionFragment }) { + return ( + +
+ +
+ + {solution.download_section_title} + + + {solution.download_section_description} + + +
+ + + + + + +
+
+
+
+ ) +} + +export default SolutionDownloadSection + +const Background = styled.div(({ theme }) => ({ + overflow: 'hidden', + content: '""', + position: 'absolute', + top: '0', + left: '0', + right: '0', + bottom: '0', + width: '100%', + height: '100%', + backgroundImage: `url(/images/solutions/download-section-bg.png)`, + backgroundPosition: 'center center', + backgroundSize: '100%', + backgroundRepeat: 'no-repeat', + backgroundColor: theme.colors['fill-two'], +})) diff --git a/src/components/page-sections/SolutionFeatureSection.tsx b/src/components/page-sections/SolutionFeatureSection.tsx new file mode 100644 index 00000000..ee7a5bbe --- /dev/null +++ b/src/components/page-sections/SolutionFeatureSection.tsx @@ -0,0 +1,139 @@ +import { ArrowRightIcon, Button, IconFrame } from '@pluralsh/design-system' +import Link from 'next/link' + +import { useTheme } from 'styled-components' + +import { getFeatureIcon } from '@src/data/getSolutionsConfigs' +import { + type SolutionFeatureFragment, + type SolutionFragment, +} from '@src/generated/graphqlDirectus' +import { cn as classNames } from '@src/utils/cn' + +import { Columns, EqualColumn } from '../layout/Columns' +import { StandardPageWidth } from '../layout/LayoutHelpers' +import { ResponsiveText } from '../Typography' + +function SolutionFeature({ + feature, + index, +}: { + feature: SolutionFeatureFragment | null + index: number +}) { + const theme = useTheme() + + if (!feature) return null + + return ( + +
+
+ +
+ + {feature.title} + +
+ + {feature.description} + + +
+ ) +} + +function SolutionFeatureSection({ + solution, + kind, +}: { + solution: SolutionFragment + kind: 'upper' | 'lower' +}) { + const features = + kind === 'upper' ? solution?.upper_features : solution?.lower_features + + const title = + kind === 'upper' + ? solution?.upper_features_title + : solution?.lower_features_title + + return ( + + + {title} + + + {features?.map((feature, index) => ( + + ))} + + + ) +} +export default SolutionFeatureSection + +const backgrounds = { + dark: [ + 'radial-gradient(50% 26.3% at 50% 100%, rgba(150, 154, 248, 0.09) 0%, rgba(150, 154, 248, 0.00) 100%), linear-gradient(74deg, #252932 19.58%, #171A21 248.88%)', + 'radial-gradient(50% 26.3% at 50% 100%, rgba(150, 154, 248, 0.09) 0%, rgba(150, 154, 248, 0.00) 100%), linear-gradient(75deg, #252932 -67.36%, #171A21 167.36%)', + 'radial-gradient(50% 26.3% at 50% 100%, rgba(150, 154, 248, 0.09) 0%, rgba(150, 154, 248, 0.00) 100%), linear-gradient(75deg, #252932 -155.76%, #171A21 79.38%)', + ], + light: [ + 'radial-gradient(50% 26.3% at 50% 100%, rgba(74, 81, 242, 0.07) 0%, rgba(74, 81, 242, 0.00) 100%), linear-gradient(74deg, #FFF 19.58%, #EEF1F1 248.88%)', + 'radial-gradient(50% 26.3% at 50% 100%, rgba(74, 81, 242, 0.07) 0%, rgba(74, 81, 242, 0.00) 100%), linear-gradient(76deg, #FFF -66.4%, #EEF1F1 167.88%)', + 'radial-gradient(50% 26.3% at 50% 100%, rgba(74, 81, 242, 0.07) 0%, rgba(74, 81, 242, 0.00) 100%), linear-gradient(75deg, #FFF -154.87%, #EEF1F1 79.45%)', + ], +} diff --git a/src/data/getProductConfigs.tsx b/src/data/getProductConfigs.tsx index 9ecb4e84..13da8e54 100644 --- a/src/data/getProductConfigs.tsx +++ b/src/data/getProductConfigs.tsx @@ -49,7 +49,7 @@ export type ProductConfig = { features: FeatureConfig[] } -export const productsConfigs: Record = { +export const getProductsConfigs: () => Record = () => ({ 'cluster-upgrade-assistant': { title: 'Cluster Upgrade Assistant', navIcon: , @@ -290,4 +290,4 @@ export const productsConfigs: Record = { }, ], }, -} +}) diff --git a/src/data/getSiteSettings.tsx b/src/data/getSiteSettings.tsx index c7c6bd1b..485d6d8c 100644 --- a/src/data/getSiteSettings.tsx +++ b/src/data/getSiteSettings.tsx @@ -1,6 +1,11 @@ -import { productsConfigs } from './getProductConfigs' +import { getProductsConfigs } from './getProductConfigs' -export const getSiteSettings = () => ({ +type Solution = { + slug?: string | null + title?: string | null +} + +export const getSiteSettings = (solutions?: Solution[]) => ({ og_description: 'Open-source application deployment, faster than ever without sacrificing compliance."', partner_logos: { @@ -84,6 +89,15 @@ export const getSiteSettings = () => ({ }, subnav: getProductSubnav(), }, + { + id: '2', + link: { + id: '2', + title: 'Solutions', + url: '/solution', + }, + subnav: getSolutionSubnav(solutions), + }, { id: '3', link: { @@ -190,12 +204,25 @@ export type PartnerLogos = { } function getProductSubnav() { - return Object.keys(productsConfigs).map((productKey, i) => ({ + return Object.keys(getProductsConfigs()).map((productKey, i) => ({ id: productKey, link: { id: `${productKey}-${i}`, - title: productsConfigs[productKey].title, + title: getProductsConfigs()[productKey].title, url: `/products/${productKey}`, }, })) } + +function getSolutionSubnav(solutions?: Solution[]) { + if (!solutions || !solutions.length) return undefined + + return solutions.map((solution, i) => ({ + id: solution.slug || '', + link: { + id: `${solution.slug}-${i}`, + title: solution.title, + url: `/solutions/${solution.slug}`, + }, + })) +} diff --git a/src/data/getSolutionsConfigs.tsx b/src/data/getSolutionsConfigs.tsx new file mode 100644 index 00000000..ccb71962 --- /dev/null +++ b/src/data/getSolutionsConfigs.tsx @@ -0,0 +1,48 @@ +import { + EyeIcon, + ProtectedClusterIcon, + UpdatesIcon, + WarningShieldIcon, +} from '@pluralsh/design-system' + +export type SolutionFeatureConfig = { + title: string + description: string + icon: React.ReactElement + linkTitle: string + linkUrl: string +} + +type ProblemConfig = { + title: string + subtitle: string + problem: string + solution: string +} + +export type SolutionConfig = { + title: string + upperFeaturesTitle: string + lowerFeaturesTitle: string + description: string + upperFeatures: SolutionFeatureConfig[] + lowerFeatures: SolutionFeatureConfig[] + problems: ProblemConfig[] + downloadSectionTitle: string + downloadSectionDescription: string +} + +export function getFeatureIcon(iconName?: string | null) { + switch (iconName) { + case 'WarningShieldIcon': + return + case 'ProtectedClusterIcon': + return + case 'UpdatesIcon': + return + case 'EyeIcon': + return + default: + return + } +} diff --git a/src/generated/graphqlDirectus.ts b/src/generated/graphqlDirectus.ts index 1a9a05ce..7abaecda 100644 --- a/src/generated/graphqlDirectus.ts +++ b/src/generated/graphqlDirectus.ts @@ -84,8 +84,14 @@ export type Mutation = { create_site_settings_main_nav_items: Array; create_site_settings_nav_list_item?: Maybe; create_site_settings_nav_list_items: Array; + create_solution_features_item?: Maybe; + create_solution_features_items: Array; + create_solution_problems_item?: Maybe; + create_solution_problems_items: Array; create_solutions_pages_item?: Maybe; create_solutions_pages_items: Array; + create_solutions_pages_solution_problems_item?: Maybe; + create_solutions_pages_solution_problems_items: Array; create_stacks_item?: Maybe; create_stacks_items: Array; create_team_members_item?: Maybe; @@ -148,8 +154,14 @@ export type Mutation = { delete_site_settings_main_nav_items?: Maybe; delete_site_settings_nav_list_item?: Maybe; delete_site_settings_nav_list_items?: Maybe; + delete_solution_features_item?: Maybe; + delete_solution_features_items?: Maybe; + delete_solution_problems_item?: Maybe; + delete_solution_problems_items?: Maybe; delete_solutions_pages_item?: Maybe; delete_solutions_pages_items?: Maybe; + delete_solutions_pages_solution_problems_item?: Maybe; + delete_solutions_pages_solution_problems_items?: Maybe; delete_stacks_item?: Maybe; delete_stacks_items?: Maybe; delete_team_members_item?: Maybe; @@ -247,9 +259,18 @@ export type Mutation = { update_site_settings_nav_list_batch: Array; update_site_settings_nav_list_item?: Maybe; update_site_settings_nav_list_items: Array; + update_solution_features_batch: Array; + update_solution_features_item?: Maybe; + update_solution_features_items: Array; + update_solution_problems_batch: Array; + update_solution_problems_item?: Maybe; + update_solution_problems_items: Array; update_solutions_pages_batch: Array; update_solutions_pages_item?: Maybe; update_solutions_pages_items: Array; + update_solutions_pages_solution_problems_batch: Array; + update_solutions_pages_solution_problems_item?: Maybe; + update_solutions_pages_solution_problems_items: Array; update_stack_defaults?: Maybe; update_stacks_batch: Array; update_stacks_item?: Maybe; @@ -724,6 +745,38 @@ export type MutationCreate_Site_Settings_Nav_List_ItemsArgs = { }; +export type MutationCreate_Solution_Features_ItemArgs = { + data: Create_Solution_Features_Input; +}; + + +export type MutationCreate_Solution_Features_ItemsArgs = { + data?: InputMaybe>; + filter?: InputMaybe; + limit?: InputMaybe; + offset?: InputMaybe; + page?: InputMaybe; + search?: InputMaybe; + sort?: InputMaybe>>; +}; + + +export type MutationCreate_Solution_Problems_ItemArgs = { + data: Create_Solution_Problems_Input; +}; + + +export type MutationCreate_Solution_Problems_ItemsArgs = { + data?: InputMaybe>; + filter?: InputMaybe; + limit?: InputMaybe; + offset?: InputMaybe; + page?: InputMaybe; + search?: InputMaybe; + sort?: InputMaybe>>; +}; + + export type MutationCreate_Solutions_Pages_ItemArgs = { data: Create_Solutions_Pages_Input; }; @@ -740,6 +793,22 @@ export type MutationCreate_Solutions_Pages_ItemsArgs = { }; +export type MutationCreate_Solutions_Pages_Solution_Problems_ItemArgs = { + data: Create_Solutions_Pages_Solution_Problems_Input; +}; + + +export type MutationCreate_Solutions_Pages_Solution_Problems_ItemsArgs = { + data?: InputMaybe>; + filter?: InputMaybe; + limit?: InputMaybe; + offset?: InputMaybe; + page?: InputMaybe; + search?: InputMaybe; + sort?: InputMaybe>>; +}; + + export type MutationCreate_Stacks_ItemArgs = { data: Create_Stacks_Input; }; @@ -1062,6 +1131,26 @@ export type MutationDelete_Site_Settings_Nav_List_ItemsArgs = { }; +export type MutationDelete_Solution_Features_ItemArgs = { + id: Scalars['ID']['input']; +}; + + +export type MutationDelete_Solution_Features_ItemsArgs = { + ids: Array>; +}; + + +export type MutationDelete_Solution_Problems_ItemArgs = { + id: Scalars['ID']['input']; +}; + + +export type MutationDelete_Solution_Problems_ItemsArgs = { + ids: Array>; +}; + + export type MutationDelete_Solutions_Pages_ItemArgs = { id: Scalars['ID']['input']; }; @@ -1072,6 +1161,16 @@ export type MutationDelete_Solutions_Pages_ItemsArgs = { }; +export type MutationDelete_Solutions_Pages_Solution_Problems_ItemArgs = { + id: Scalars['ID']['input']; +}; + + +export type MutationDelete_Solutions_Pages_Solution_Problems_ItemsArgs = { + ids: Array>; +}; + + export type MutationDelete_Stacks_ItemArgs = { id: Scalars['ID']['input']; }; @@ -1963,6 +2062,64 @@ export type MutationUpdate_Site_Settings_Nav_List_ItemsArgs = { }; +export type MutationUpdate_Solution_Features_BatchArgs = { + data?: InputMaybe>; + filter?: InputMaybe; + limit?: InputMaybe; + offset?: InputMaybe; + page?: InputMaybe; + search?: InputMaybe; + sort?: InputMaybe>>; +}; + + +export type MutationUpdate_Solution_Features_ItemArgs = { + data: Update_Solution_Features_Input; + id: Scalars['ID']['input']; +}; + + +export type MutationUpdate_Solution_Features_ItemsArgs = { + data: Update_Solution_Features_Input; + filter?: InputMaybe; + ids: Array>; + limit?: InputMaybe; + offset?: InputMaybe; + page?: InputMaybe; + search?: InputMaybe; + sort?: InputMaybe>>; +}; + + +export type MutationUpdate_Solution_Problems_BatchArgs = { + data?: InputMaybe>; + filter?: InputMaybe; + limit?: InputMaybe; + offset?: InputMaybe; + page?: InputMaybe; + search?: InputMaybe; + sort?: InputMaybe>>; +}; + + +export type MutationUpdate_Solution_Problems_ItemArgs = { + data: Update_Solution_Problems_Input; + id: Scalars['ID']['input']; +}; + + +export type MutationUpdate_Solution_Problems_ItemsArgs = { + data: Update_Solution_Problems_Input; + filter?: InputMaybe; + ids: Array>; + limit?: InputMaybe; + offset?: InputMaybe; + page?: InputMaybe; + search?: InputMaybe; + sort?: InputMaybe>>; +}; + + export type MutationUpdate_Solutions_Pages_BatchArgs = { data?: InputMaybe>; filter?: InputMaybe; @@ -1992,6 +2149,35 @@ export type MutationUpdate_Solutions_Pages_ItemsArgs = { }; +export type MutationUpdate_Solutions_Pages_Solution_Problems_BatchArgs = { + data?: InputMaybe>; + filter?: InputMaybe; + limit?: InputMaybe; + offset?: InputMaybe; + page?: InputMaybe; + search?: InputMaybe; + sort?: InputMaybe>>; +}; + + +export type MutationUpdate_Solutions_Pages_Solution_Problems_ItemArgs = { + data: Update_Solutions_Pages_Solution_Problems_Input; + id: Scalars['ID']['input']; +}; + + +export type MutationUpdate_Solutions_Pages_Solution_Problems_ItemsArgs = { + data: Update_Solutions_Pages_Solution_Problems_Input; + filter?: InputMaybe; + ids: Array>; + limit?: InputMaybe; + offset?: InputMaybe; + page?: InputMaybe; + search?: InputMaybe; + sort?: InputMaybe>>; +}; + + export type MutationUpdate_Stack_DefaultsArgs = { data: Update_Stack_Defaults_Input; }; @@ -2149,9 +2335,18 @@ export type Query = { site_settings_nav_list: Array; site_settings_nav_list_aggregated: Array; site_settings_nav_list_by_id?: Maybe; + solution_features: Array; + solution_features_aggregated: Array; + solution_features_by_id?: Maybe; + solution_problems: Array; + solution_problems_aggregated: Array; + solution_problems_by_id?: Maybe; solutions_pages: Array; solutions_pages_aggregated: Array; solutions_pages_by_id?: Maybe; + solutions_pages_solution_problems: Array; + solutions_pages_solution_problems_aggregated: Array; + solutions_pages_solution_problems_by_id?: Maybe; stack_defaults?: Maybe; stacks: Array; stacks_aggregated: Array; @@ -2916,6 +3111,58 @@ export type QuerySite_Settings_Nav_List_By_IdArgs = { }; +export type QuerySolution_FeaturesArgs = { + filter?: InputMaybe; + limit?: InputMaybe; + offset?: InputMaybe; + page?: InputMaybe; + search?: InputMaybe; + sort?: InputMaybe>>; +}; + + +export type QuerySolution_Features_AggregatedArgs = { + filter?: InputMaybe; + groupBy?: InputMaybe>>; + limit?: InputMaybe; + offset?: InputMaybe; + page?: InputMaybe; + search?: InputMaybe; + sort?: InputMaybe>>; +}; + + +export type QuerySolution_Features_By_IdArgs = { + id: Scalars['ID']['input']; +}; + + +export type QuerySolution_ProblemsArgs = { + filter?: InputMaybe; + limit?: InputMaybe; + offset?: InputMaybe; + page?: InputMaybe; + search?: InputMaybe; + sort?: InputMaybe>>; +}; + + +export type QuerySolution_Problems_AggregatedArgs = { + filter?: InputMaybe; + groupBy?: InputMaybe>>; + limit?: InputMaybe; + offset?: InputMaybe; + page?: InputMaybe; + search?: InputMaybe; + sort?: InputMaybe>>; +}; + + +export type QuerySolution_Problems_By_IdArgs = { + id: Scalars['ID']['input']; +}; + + export type QuerySolutions_PagesArgs = { filter?: InputMaybe; limit?: InputMaybe; @@ -2942,6 +3189,32 @@ export type QuerySolutions_Pages_By_IdArgs = { }; +export type QuerySolutions_Pages_Solution_ProblemsArgs = { + filter?: InputMaybe; + limit?: InputMaybe; + offset?: InputMaybe; + page?: InputMaybe; + search?: InputMaybe; + sort?: InputMaybe>>; +}; + + +export type QuerySolutions_Pages_Solution_Problems_AggregatedArgs = { + filter?: InputMaybe; + groupBy?: InputMaybe>>; + limit?: InputMaybe; + offset?: InputMaybe; + page?: InputMaybe; + search?: InputMaybe; + sort?: InputMaybe>>; +}; + + +export type QuerySolutions_Pages_Solution_Problems_By_IdArgs = { + id: Scalars['ID']['input']; +}; + + export type QueryStacksArgs = { filter?: InputMaybe; limit?: InputMaybe; @@ -4567,27 +4840,67 @@ export type Create_Site_Settings_Nav_List_Input = { site_settings_id?: InputMaybe; }; +export type Create_Solution_Features_Input = { + date_created?: InputMaybe; + date_updated?: InputMaybe; + description?: InputMaybe; + icon?: InputMaybe; + id?: InputMaybe; + link_title?: InputMaybe; + link_url?: InputMaybe; + order_of_appearance?: InputMaybe; + solution_lower_id?: InputMaybe; + solution_upper_id?: InputMaybe; + sort?: InputMaybe; + status?: InputMaybe; + title?: InputMaybe; + user_created?: InputMaybe; + user_updated?: InputMaybe; +}; + +export type Create_Solution_Problems_Input = { + date_created?: InputMaybe; + date_updated?: InputMaybe; + id?: InputMaybe; + order_of_appearance?: InputMaybe; + problem?: InputMaybe; + solution?: InputMaybe; + solution_id?: InputMaybe; + sort?: InputMaybe; + status?: InputMaybe; + subtitle?: InputMaybe; + title?: InputMaybe; + user_created?: InputMaybe; + user_updated?: InputMaybe; +}; + export type Create_Solutions_Pages_Input = { - bullet_points?: InputMaybe; - case_study?: InputMaybe; - content_1?: InputMaybe; - content_2?: InputMaybe; date_created?: InputMaybe; date_updated?: InputMaybe; description?: InputMaybe; + download_section_description?: InputMaybe; + download_section_title?: InputMaybe; featured_quote?: InputMaybe; - heading_1?: InputMaybe; - heading_2?: InputMaybe; - hero_image?: InputMaybe; id?: InputMaybe; + lower_features?: InputMaybe>>; + lower_features_title?: InputMaybe; + problems?: InputMaybe>>; slug: Scalars['String']['input']; sort?: InputMaybe; status?: InputMaybe; title?: InputMaybe; + upper_features?: InputMaybe>>; + upper_features_title?: InputMaybe; user_created?: InputMaybe; user_updated?: InputMaybe; }; +export type Create_Solutions_Pages_Solution_Problems_Input = { + id?: InputMaybe; + solution_problems_id?: InputMaybe; + solutions_pages_id?: InputMaybe; +}; + export type Create_Stacks_Input = { case_study?: InputMaybe; date_updated?: InputMaybe; @@ -6648,34 +6961,269 @@ export type Site_Settings_Nav_List_Filter = { site_settings_id?: InputMaybe; }; +export type Solution_Features = { + __typename?: 'solution_features'; + date_created?: Maybe; + date_created_func?: Maybe; + date_updated?: Maybe; + date_updated_func?: Maybe; + description?: Maybe; + icon?: Maybe; + id: Scalars['ID']['output']; + link_title?: Maybe; + link_url?: Maybe; + order_of_appearance?: Maybe; + solution_lower_id?: Maybe; + solution_upper_id?: Maybe; + sort?: Maybe; + status?: Maybe; + title?: Maybe; + user_created?: Maybe; + user_updated?: Maybe; +}; + + +export type Solution_FeaturesSolution_Lower_IdArgs = { + filter?: InputMaybe; + limit?: InputMaybe; + offset?: InputMaybe; + page?: InputMaybe; + search?: InputMaybe; + sort?: InputMaybe>>; +}; + + +export type Solution_FeaturesSolution_Upper_IdArgs = { + filter?: InputMaybe; + limit?: InputMaybe; + offset?: InputMaybe; + page?: InputMaybe; + search?: InputMaybe; + sort?: InputMaybe>>; +}; + + +export type Solution_FeaturesUser_CreatedArgs = { + filter?: InputMaybe; + limit?: InputMaybe; + offset?: InputMaybe; + page?: InputMaybe; + search?: InputMaybe; + sort?: InputMaybe>>; +}; + + +export type Solution_FeaturesUser_UpdatedArgs = { + filter?: InputMaybe; + limit?: InputMaybe; + offset?: InputMaybe; + page?: InputMaybe; + search?: InputMaybe; + sort?: InputMaybe>>; +}; + +export type Solution_Features_Aggregated = { + __typename?: 'solution_features_aggregated'; + avg?: Maybe; + avgDistinct?: Maybe; + count?: Maybe; + countAll?: Maybe; + countDistinct?: Maybe; + group?: Maybe; + max?: Maybe; + min?: Maybe; + sum?: Maybe; + sumDistinct?: Maybe; +}; + +export type Solution_Features_Aggregated_Count = { + __typename?: 'solution_features_aggregated_count'; + date_created?: Maybe; + date_updated?: Maybe; + description?: Maybe; + icon?: Maybe; + id?: Maybe; + link_title?: Maybe; + link_url?: Maybe; + order_of_appearance?: Maybe; + solution_lower_id?: Maybe; + solution_upper_id?: Maybe; + sort?: Maybe; + status?: Maybe; + title?: Maybe; + user_created?: Maybe; + user_updated?: Maybe; +}; + +export type Solution_Features_Aggregated_Fields = { + __typename?: 'solution_features_aggregated_fields'; + id?: Maybe; + order_of_appearance?: Maybe; + solution_lower_id?: Maybe; + solution_upper_id?: Maybe; + sort?: Maybe; +}; + +export type Solution_Features_Filter = { + _and?: InputMaybe>>; + _or?: InputMaybe>>; + date_created?: InputMaybe; + date_created_func?: InputMaybe; + date_updated?: InputMaybe; + date_updated_func?: InputMaybe; + description?: InputMaybe; + icon?: InputMaybe; + id?: InputMaybe; + link_title?: InputMaybe; + link_url?: InputMaybe; + order_of_appearance?: InputMaybe; + solution_lower_id?: InputMaybe; + solution_upper_id?: InputMaybe; + sort?: InputMaybe; + status?: InputMaybe; + title?: InputMaybe; + user_created?: InputMaybe; + user_updated?: InputMaybe; +}; + +export type Solution_Problems = { + __typename?: 'solution_problems'; + date_created?: Maybe; + date_created_func?: Maybe; + date_updated?: Maybe; + date_updated_func?: Maybe; + id: Scalars['ID']['output']; + order_of_appearance?: Maybe; + problem?: Maybe; + solution?: Maybe; + solution_id?: Maybe; + sort?: Maybe; + status?: Maybe; + subtitle?: Maybe; + title?: Maybe; + user_created?: Maybe; + user_updated?: Maybe; +}; + + +export type Solution_ProblemsSolution_IdArgs = { + filter?: InputMaybe; + limit?: InputMaybe; + offset?: InputMaybe; + page?: InputMaybe; + search?: InputMaybe; + sort?: InputMaybe>>; +}; + + +export type Solution_ProblemsUser_CreatedArgs = { + filter?: InputMaybe; + limit?: InputMaybe; + offset?: InputMaybe; + page?: InputMaybe; + search?: InputMaybe; + sort?: InputMaybe>>; +}; + + +export type Solution_ProblemsUser_UpdatedArgs = { + filter?: InputMaybe; + limit?: InputMaybe; + offset?: InputMaybe; + page?: InputMaybe; + search?: InputMaybe; + sort?: InputMaybe>>; +}; + +export type Solution_Problems_Aggregated = { + __typename?: 'solution_problems_aggregated'; + avg?: Maybe; + avgDistinct?: Maybe; + count?: Maybe; + countAll?: Maybe; + countDistinct?: Maybe; + group?: Maybe; + max?: Maybe; + min?: Maybe; + sum?: Maybe; + sumDistinct?: Maybe; +}; + +export type Solution_Problems_Aggregated_Count = { + __typename?: 'solution_problems_aggregated_count'; + date_created?: Maybe; + date_updated?: Maybe; + id?: Maybe; + order_of_appearance?: Maybe; + problem?: Maybe; + solution?: Maybe; + solution_id?: Maybe; + sort?: Maybe; + status?: Maybe; + subtitle?: Maybe; + title?: Maybe; + user_created?: Maybe; + user_updated?: Maybe; +}; + +export type Solution_Problems_Aggregated_Fields = { + __typename?: 'solution_problems_aggregated_fields'; + id?: Maybe; + order_of_appearance?: Maybe; + solution_id?: Maybe; + sort?: Maybe; +}; + +export type Solution_Problems_Filter = { + _and?: InputMaybe>>; + _or?: InputMaybe>>; + date_created?: InputMaybe; + date_created_func?: InputMaybe; + date_updated?: InputMaybe; + date_updated_func?: InputMaybe; + id?: InputMaybe; + order_of_appearance?: InputMaybe; + problem?: InputMaybe; + solution?: InputMaybe; + solution_id?: InputMaybe; + sort?: InputMaybe; + status?: InputMaybe; + subtitle?: InputMaybe; + title?: InputMaybe; + user_created?: InputMaybe; + user_updated?: InputMaybe; +}; + export type Solutions_Pages = { __typename?: 'solutions_pages'; - bullet_points?: Maybe; - bullet_points_func?: Maybe; - case_study?: Maybe; - content_1?: Maybe; - content_2?: Maybe; date_created?: Maybe; date_created_func?: Maybe; date_updated?: Maybe; date_updated_func?: Maybe; description?: Maybe; + download_section_description?: Maybe; + download_section_title?: Maybe; featured_quote?: Maybe; - heading_1?: Maybe; - heading_2?: Maybe; - hero_image?: Maybe; id: Scalars['ID']['output']; + lower_features?: Maybe>>; + lower_features_func?: Maybe; + lower_features_title?: Maybe; + problems?: Maybe>>; + problems_func?: Maybe; slug: Scalars['String']['output']; sort?: Maybe; status?: Maybe; title?: Maybe; + upper_features?: Maybe>>; + upper_features_func?: Maybe; + upper_features_title?: Maybe; user_created?: Maybe; user_updated?: Maybe; }; -export type Solutions_PagesCase_StudyArgs = { - filter?: InputMaybe; +export type Solutions_PagesFeatured_QuoteArgs = { + filter?: InputMaybe; limit?: InputMaybe; offset?: InputMaybe; page?: InputMaybe; @@ -6684,8 +7232,8 @@ export type Solutions_PagesCase_StudyArgs = { }; -export type Solutions_PagesFeatured_QuoteArgs = { - filter?: InputMaybe; +export type Solutions_PagesLower_FeaturesArgs = { + filter?: InputMaybe; limit?: InputMaybe; offset?: InputMaybe; page?: InputMaybe; @@ -6694,8 +7242,18 @@ export type Solutions_PagesFeatured_QuoteArgs = { }; -export type Solutions_PagesHero_ImageArgs = { - filter?: InputMaybe; +export type Solutions_PagesProblemsArgs = { + filter?: InputMaybe; + limit?: InputMaybe; + offset?: InputMaybe; + page?: InputMaybe; + search?: InputMaybe; + sort?: InputMaybe>>; +}; + + +export type Solutions_PagesUpper_FeaturesArgs = { + filter?: InputMaybe; limit?: InputMaybe; offset?: InputMaybe; page?: InputMaybe; @@ -6739,29 +7297,28 @@ export type Solutions_Pages_Aggregated = { export type Solutions_Pages_Aggregated_Count = { __typename?: 'solutions_pages_aggregated_count'; - bullet_points?: Maybe; - case_study?: Maybe; - content_1?: Maybe; - content_2?: Maybe; date_created?: Maybe; date_updated?: Maybe; description?: Maybe; + download_section_description?: Maybe; + download_section_title?: Maybe; featured_quote?: Maybe; - heading_1?: Maybe; - heading_2?: Maybe; - hero_image?: Maybe; id?: Maybe; + lower_features?: Maybe; + lower_features_title?: Maybe; + problems?: Maybe; slug?: Maybe; sort?: Maybe; status?: Maybe; title?: Maybe; + upper_features?: Maybe; + upper_features_title?: Maybe; user_created?: Maybe; user_updated?: Maybe; }; export type Solutions_Pages_Aggregated_Fields = { __typename?: 'solutions_pages_aggregated_fields'; - case_study?: Maybe; featured_quote?: Maybe; id?: Maybe; sort?: Maybe; @@ -6770,29 +7327,94 @@ export type Solutions_Pages_Aggregated_Fields = { export type Solutions_Pages_Filter = { _and?: InputMaybe>>; _or?: InputMaybe>>; - bullet_points?: InputMaybe; - bullet_points_func?: InputMaybe; - case_study?: InputMaybe; - content_1?: InputMaybe; - content_2?: InputMaybe; date_created?: InputMaybe; date_created_func?: InputMaybe; date_updated?: InputMaybe; date_updated_func?: InputMaybe; description?: InputMaybe; + download_section_description?: InputMaybe; + download_section_title?: InputMaybe; featured_quote?: InputMaybe; - heading_1?: InputMaybe; - heading_2?: InputMaybe; - hero_image?: InputMaybe; id?: InputMaybe; + lower_features?: InputMaybe; + lower_features_func?: InputMaybe; + lower_features_title?: InputMaybe; + problems?: InputMaybe; + problems_func?: InputMaybe; slug?: InputMaybe; sort?: InputMaybe; status?: InputMaybe; title?: InputMaybe; + upper_features?: InputMaybe; + upper_features_func?: InputMaybe; + upper_features_title?: InputMaybe; user_created?: InputMaybe; user_updated?: InputMaybe; }; +export type Solutions_Pages_Solution_Problems = { + __typename?: 'solutions_pages_solution_problems'; + id: Scalars['ID']['output']; + solution_problems_id?: Maybe; + solutions_pages_id?: Maybe; +}; + + +export type Solutions_Pages_Solution_ProblemsSolution_Problems_IdArgs = { + filter?: InputMaybe; + limit?: InputMaybe; + offset?: InputMaybe; + page?: InputMaybe; + search?: InputMaybe; + sort?: InputMaybe>>; +}; + + +export type Solutions_Pages_Solution_ProblemsSolutions_Pages_IdArgs = { + filter?: InputMaybe; + limit?: InputMaybe; + offset?: InputMaybe; + page?: InputMaybe; + search?: InputMaybe; + sort?: InputMaybe>>; +}; + +export type Solutions_Pages_Solution_Problems_Aggregated = { + __typename?: 'solutions_pages_solution_problems_aggregated'; + avg?: Maybe; + avgDistinct?: Maybe; + count?: Maybe; + countAll?: Maybe; + countDistinct?: Maybe; + group?: Maybe; + max?: Maybe; + min?: Maybe; + sum?: Maybe; + sumDistinct?: Maybe; +}; + +export type Solutions_Pages_Solution_Problems_Aggregated_Count = { + __typename?: 'solutions_pages_solution_problems_aggregated_count'; + id?: Maybe; + solution_problems_id?: Maybe; + solutions_pages_id?: Maybe; +}; + +export type Solutions_Pages_Solution_Problems_Aggregated_Fields = { + __typename?: 'solutions_pages_solution_problems_aggregated_fields'; + id?: Maybe; + solution_problems_id?: Maybe; + solutions_pages_id?: Maybe; +}; + +export type Solutions_Pages_Solution_Problems_Filter = { + _and?: InputMaybe>>; + _or?: InputMaybe>>; + id?: InputMaybe; + solution_problems_id?: InputMaybe; + solutions_pages_id?: InputMaybe; +}; + export type Stack_Defaults = { __typename?: 'stack_defaults'; case_study?: Maybe; @@ -7474,27 +8096,67 @@ export type Update_Site_Settings_Nav_List_Input = { site_settings_id?: InputMaybe; }; +export type Update_Solution_Features_Input = { + date_created?: InputMaybe; + date_updated?: InputMaybe; + description?: InputMaybe; + icon?: InputMaybe; + id?: InputMaybe; + link_title?: InputMaybe; + link_url?: InputMaybe; + order_of_appearance?: InputMaybe; + solution_lower_id?: InputMaybe; + solution_upper_id?: InputMaybe; + sort?: InputMaybe; + status?: InputMaybe; + title?: InputMaybe; + user_created?: InputMaybe; + user_updated?: InputMaybe; +}; + +export type Update_Solution_Problems_Input = { + date_created?: InputMaybe; + date_updated?: InputMaybe; + id?: InputMaybe; + order_of_appearance?: InputMaybe; + problem?: InputMaybe; + solution?: InputMaybe; + solution_id?: InputMaybe; + sort?: InputMaybe; + status?: InputMaybe; + subtitle?: InputMaybe; + title?: InputMaybe; + user_created?: InputMaybe; + user_updated?: InputMaybe; +}; + export type Update_Solutions_Pages_Input = { - bullet_points?: InputMaybe; - case_study?: InputMaybe; - content_1?: InputMaybe; - content_2?: InputMaybe; date_created?: InputMaybe; date_updated?: InputMaybe; description?: InputMaybe; + download_section_description?: InputMaybe; + download_section_title?: InputMaybe; featured_quote?: InputMaybe; - heading_1?: InputMaybe; - heading_2?: InputMaybe; - hero_image?: InputMaybe; id?: InputMaybe; + lower_features?: InputMaybe>>; + lower_features_title?: InputMaybe; + problems?: InputMaybe>>; slug?: InputMaybe; sort?: InputMaybe; status?: InputMaybe; title?: InputMaybe; + upper_features?: InputMaybe>>; + upper_features_title?: InputMaybe; user_created?: InputMaybe; user_updated?: InputMaybe; }; +export type Update_Solutions_Pages_Solution_Problems_Input = { + id?: InputMaybe; + solution_problems_id?: InputMaybe; + solutions_pages_id?: InputMaybe; +}; + export type Update_Stack_Defaults_Input = { case_study?: InputMaybe; date_updated?: InputMaybe; @@ -7592,19 +8254,23 @@ export type FaqListQueryVariables = Exact<{ export type FaqListQuery = { __typename?: 'Query', collapsible_lists: Array<{ __typename?: 'collapsible_lists', items?: Array<{ __typename?: 'collapsible_lists_items', item?: { __typename?: 'collapsibles', id: string, label?: string | null, content?: string | null } | null } | null> | null }> }; -export type SolutionFragment = { __typename?: 'solutions_pages', id: string, slug: string, title?: string | null, description?: string | null, heading_1?: string | null, content_1?: string | null, heading_2?: string | null, content_2?: string | null, bullet_points?: any | null, hero_image?: { __typename?: 'directus_files', id: string, title?: string | null, description?: string | null, tags?: any | null, filename_disk?: string | null, filename_download: string, metadata?: any | null, type?: string | null, filesize?: any | null } | null, case_study?: { __typename?: 'case_studies', id: string, slug?: string | null, label?: string | null, title?: string | null, content?: string | null, ctas?: any | null, stack_label?: string | null, stack_apps?: any | null, hero_image?: { __typename?: 'directus_files', id: string, title?: string | null, description?: string | null, tags?: any | null, filename_disk?: string | null, filename_download: string, metadata?: any | null, type?: string | null, filesize?: any | null } | null } | null, featured_quote?: { __typename?: 'quotes', id: string, quote?: string | null, name?: string | null, title?: string | null, company?: string | null, portrait?: { __typename?: 'directus_files', id: string, title?: string | null, description?: string | null, tags?: any | null, filename_disk?: string | null, filename_download: string, metadata?: any | null, type?: string | null, filesize?: any | null } | null, logo?: { __typename?: 'directus_files', id: string, title?: string | null, description?: string | null, tags?: any | null, filename_disk?: string | null, filename_download: string, metadata?: any | null, type?: string | null, filesize?: any | null } | null } | null }; +export type SolutionFeatureFragment = { __typename?: 'solution_features', id: string, title?: string | null, description?: string | null, icon?: string | null, link_title?: string | null, link_url?: string | null }; + +export type SolutionProblemFragment = { __typename?: 'solution_problems', id: string, title?: string | null, subtitle?: string | null, problem?: string | null, solution?: string | null }; + +export type SolutionFragment = { __typename?: 'solutions_pages', id: string, slug: string, title?: string | null, description?: string | null, upper_features_title?: string | null, lower_features_title?: string | null, download_section_title?: string | null, download_section_description?: string | null, upper_features?: Array<{ __typename?: 'solution_features', id: string, title?: string | null, description?: string | null, icon?: string | null, link_title?: string | null, link_url?: string | null } | null> | null, lower_features?: Array<{ __typename?: 'solution_features', id: string, title?: string | null, description?: string | null, icon?: string | null, link_title?: string | null, link_url?: string | null } | null> | null, problems?: Array<{ __typename?: 'solution_problems', id: string, title?: string | null, subtitle?: string | null, problem?: string | null, solution?: string | null } | null> | null, featured_quote?: { __typename?: 'quotes', id: string, quote?: string | null, name?: string | null, title?: string | null, company?: string | null, portrait?: { __typename?: 'directus_files', id: string, title?: string | null, description?: string | null, tags?: any | null, filename_disk?: string | null, filename_download: string, metadata?: any | null, type?: string | null, filesize?: any | null } | null, logo?: { __typename?: 'directus_files', id: string, title?: string | null, description?: string | null, tags?: any | null, filename_disk?: string | null, filename_download: string, metadata?: any | null, type?: string | null, filesize?: any | null } | null } | null }; export type SolutionsSlugsQueryVariables = Exact<{ [key: string]: never; }>; -export type SolutionsSlugsQuery = { __typename?: 'Query', solutions_pages: Array<{ __typename?: 'solutions_pages', slug: string }> }; +export type SolutionsSlugsQuery = { __typename?: 'Query', solutions_pages: Array<{ __typename?: 'solutions_pages', slug: string, title?: string | null }> }; export type SolutionsQueryVariables = Exact<{ slug?: InputMaybe; }>; -export type SolutionsQuery = { __typename?: 'Query', solutions_pages: Array<{ __typename?: 'solutions_pages', id: string, slug: string, title?: string | null, description?: string | null, heading_1?: string | null, content_1?: string | null, heading_2?: string | null, content_2?: string | null, bullet_points?: any | null, hero_image?: { __typename?: 'directus_files', id: string, title?: string | null, description?: string | null, tags?: any | null, filename_disk?: string | null, filename_download: string, metadata?: any | null, type?: string | null, filesize?: any | null } | null, case_study?: { __typename?: 'case_studies', id: string, slug?: string | null, label?: string | null, title?: string | null, content?: string | null, ctas?: any | null, stack_label?: string | null, stack_apps?: any | null, hero_image?: { __typename?: 'directus_files', id: string, title?: string | null, description?: string | null, tags?: any | null, filename_disk?: string | null, filename_download: string, metadata?: any | null, type?: string | null, filesize?: any | null } | null } | null, featured_quote?: { __typename?: 'quotes', id: string, quote?: string | null, name?: string | null, title?: string | null, company?: string | null, portrait?: { __typename?: 'directus_files', id: string, title?: string | null, description?: string | null, tags?: any | null, filename_disk?: string | null, filename_download: string, metadata?: any | null, type?: string | null, filesize?: any | null } | null, logo?: { __typename?: 'directus_files', id: string, title?: string | null, description?: string | null, tags?: any | null, filename_disk?: string | null, filename_download: string, metadata?: any | null, type?: string | null, filesize?: any | null } | null } | null }> }; +export type SolutionsQuery = { __typename?: 'Query', solutions_pages: Array<{ __typename?: 'solutions_pages', id: string, slug: string, title?: string | null, description?: string | null, upper_features_title?: string | null, lower_features_title?: string | null, download_section_title?: string | null, download_section_description?: string | null, upper_features?: Array<{ __typename?: 'solution_features', id: string, title?: string | null, description?: string | null, icon?: string | null, link_title?: string | null, link_url?: string | null } | null> | null, lower_features?: Array<{ __typename?: 'solution_features', id: string, title?: string | null, description?: string | null, icon?: string | null, link_title?: string | null, link_url?: string | null } | null> | null, problems?: Array<{ __typename?: 'solution_problems', id: string, title?: string | null, subtitle?: string | null, problem?: string | null, solution?: string | null } | null> | null, featured_quote?: { __typename?: 'quotes', id: string, quote?: string | null, name?: string | null, title?: string | null, company?: string | null, portrait?: { __typename?: 'directus_files', id: string, title?: string | null, description?: string | null, tags?: any | null, filename_disk?: string | null, filename_download: string, metadata?: any | null, type?: string | null, filesize?: any | null } | null, logo?: { __typename?: 'directus_files', id: string, title?: string | null, description?: string | null, tags?: any | null, filename_disk?: string | null, filename_download: string, metadata?: any | null, type?: string | null, filesize?: any | null } | null } | null }> }; export type MinJobListingFragment = { __typename?: 'job_listings', id: string, slug: string, job_title?: string | null, department?: string | null, tags?: any | null, location?: string | null }; @@ -7845,29 +8511,50 @@ export const FeaturedContributorFragmentDoc = gql` ctas } ${ImageFileFragmentDoc}`; +export const SolutionFeatureFragmentDoc = gql` + fragment SolutionFeature on solution_features { + id + title + description + icon + link_title + link_url +} + `; +export const SolutionProblemFragmentDoc = gql` + fragment SolutionProblem on solution_problems { + id + title + subtitle + problem + solution +} + `; export const SolutionFragmentDoc = gql` fragment Solution on solutions_pages { id slug title description - heading_1 - content_1 - heading_2 - content_2 - hero_image { - ...ImageFile + upper_features_title + lower_features_title + download_section_title + download_section_description + upper_features { + ...SolutionFeature } - case_study { - ...CaseStudy + lower_features { + ...SolutionFeature + } + problems { + ...SolutionProblem } - bullet_points featured_quote { ...Quote } } - ${ImageFileFragmentDoc} -${CaseStudyFragmentDoc} + ${SolutionFeatureFragmentDoc} +${SolutionProblemFragmentDoc} ${QuoteFragmentDoc}`; export const MinJobListingFragmentDoc = gql` fragment MinJobListing on job_listings { @@ -8194,6 +8881,7 @@ export const SolutionsSlugsDocument = gql` query SolutionsSlugs { solutions_pages { slug + title } } `; diff --git a/src/generated/pages.json b/src/generated/pages.json index 21b34fba..91a23619 100644 --- a/src/generated/pages.json +++ b/src/generated/pages.json @@ -5,9 +5,6 @@ { "path": "/careers" }, - { - "path": "/community" - }, { "path": "/contact-sales" }, diff --git a/src/graph/directus/cms.graphql b/src/graph/directus/cms.graphql index 7764e1bd..94eca9a0 100644 --- a/src/graph/directus/cms.graphql +++ b/src/graph/directus/cms.graphql @@ -230,22 +230,41 @@ query FaqList($slug: String) { } } +fragment SolutionFeature on solution_features { + id + title + description + icon + link_title + link_url +} + +fragment SolutionProblem on solution_problems { + id + title + subtitle + problem + solution +} + fragment Solution on solutions_pages { id slug title description - heading_1 - content_1 - heading_2 - content_2 - hero_image { - ...ImageFile + upper_features_title + lower_features_title + download_section_title + download_section_description + upper_features { + ...SolutionFeature } - case_study { - ...CaseStudy + lower_features { + ...SolutionFeature + } + problems { + ...SolutionProblem } - bullet_points featured_quote { ...Quote } @@ -254,6 +273,7 @@ fragment Solution on solutions_pages { query SolutionsSlugs { solutions_pages { slug + title } } diff --git a/src/utils/combineErrors.tsx b/src/utils/combineErrors.tsx index 8726c2c4..947e3e54 100644 --- a/src/utils/combineErrors.tsx +++ b/src/utils/combineErrors.tsx @@ -1,6 +1,12 @@ import { isNonNullable } from '@src/utils/isNonNullable' -import { type FullError } from '../../pages/community' +type BaseError = { + name: string + message: string +} +export type FullError = BaseError & { + graphQLErrors?: readonly BaseError[] | undefined +} export function combineErrors( errors: (FullError | undefined | null)[] | null | undefined diff --git a/src/utils/getGlobalProps.tsx b/src/utils/getGlobalProps.tsx index 043c5f6b..86ad8308 100644 --- a/src/utils/getGlobalProps.tsx +++ b/src/utils/getGlobalProps.tsx @@ -2,6 +2,7 @@ import { type GetStaticPropsResult } from 'next' import { until } from '@open-draft/until' +import { directusClient } from '@src/apollo-client' import { GITHUB_DATA_URL, getGithubDataServer, @@ -9,6 +10,11 @@ import { } from '@src/components/GithubStars' import { REVALIDATE_TIME } from '@src/consts' import { getSiteSettings } from '@src/data/getSiteSettings' +import { + SolutionsSlugsDocument, + type SolutionsSlugsQuery, + type SolutionsSlugsQueryVariables, +} from '@src/generated/graphqlDirectus' import { combineErrors } from './combineErrors' @@ -23,7 +29,15 @@ async function getGlobalProps() { swrFallback[GITHUB_DATA_URL] = githubData } - const siteSettings = getSiteSettings() + const { data } = await directusClient.query< + SolutionsSlugsQuery, + SolutionsSlugsQueryVariables + >({ + query: SolutionsSlugsDocument, + }) + const solutions = data.solutions_pages + + const siteSettings = getSiteSettings(solutions) return { siteSettings,