mirror of
https://github.com/supabase/supabase.git
synced 2026-10-06 09:55:06 +03:00
## I have read the [CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md) file. YES ## What kind of change does this PR introduce? Created a new solution page for Hosted Postgres. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added Hosted Postgres solution with a dedicated landing page (hero, features, pricing comparison, security, results, CTAs) * Introduced a reusable pricing comparison table component * Enhanced feature grids to support optional headers and richer icon options * **Updates** * Updated company stats (databases managed → 44M, daily launches → 200K, registered developers → 9M) * Added Hosted Postgres link to Solutions navigation * **Refactor** * Consolidated and exported component prop interfaces for cleaner prop contracts <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Terry Sutton <saltcod@gmail.com>
68 lines
2.8 KiB
TypeScript
68 lines
2.8 KiB
TypeScript
import Layout from 'components/Layouts/Default'
|
|
import ProductHeader from 'components/Sections/ProductHeader2'
|
|
import SolutionsStickyNav from 'components/SolutionsStickyNav'
|
|
import { Solutions } from 'data/Solutions'
|
|
import getContent from 'data/solutions/hosted-postgres'
|
|
import { NextPage } from 'next'
|
|
import { NextSeo } from 'next-seo'
|
|
import dynamic from 'next/dynamic'
|
|
|
|
const WhySupabase = dynamic(() => import('components/Solutions/FeaturesSection'))
|
|
const PricingComparison = dynamic(() => import('components/Solutions/PricingComparisonSection'))
|
|
const FeatureGrid = dynamic(() => import('components/Solutions/FeatureGrid'))
|
|
const ResultsSection = dynamic(() => import('components/Solutions/ResultsSection'))
|
|
const Security = dynamic(() => import('components/Enterprise/Security'))
|
|
const CtaSection = dynamic(() => import('components/Solutions/CtaSection'))
|
|
const PlatformStarterSection = dynamic(() => import('components/Solutions/TwoColumnsSection'))
|
|
const MPCSection = dynamic(() => import('components/Solutions/MPCSection'))
|
|
|
|
const HostedPostgresPage: NextPage = () => {
|
|
const content = getContent()
|
|
|
|
return (
|
|
<>
|
|
<NextSeo
|
|
title={content.metadata.metaTitle}
|
|
description={content.metadata.metaDescription}
|
|
openGraph={{
|
|
title: content.metadata.metaTitle,
|
|
description: content.metadata.metaDescription,
|
|
url: `https://supabase.com/solutions/hosted-postgres`,
|
|
}}
|
|
/>
|
|
<Layout className="overflow-visible">
|
|
<SolutionsStickyNav activeItem={Solutions.hostedPostgres} type="app-type" />
|
|
<ProductHeader
|
|
{...content.heroSection}
|
|
className="[&_h1]:2xl:text-5xl! bg-default border-0 lg:pb-8 [&_.ph-footer]:mt-0 [&_.ph-footer]:lg:mt-16 [&_.ph-footer]:xl:mt-24"
|
|
sectionContainerClassName="lg:gap-4"
|
|
/>
|
|
<WhySupabase {...content.why} />
|
|
<PricingComparison {...content.pricing} />
|
|
<FeatureGrid {...content.included} />
|
|
<FeatureGrid {...content.bundled} />
|
|
<ResultsSection
|
|
id={content.resultsSection.id}
|
|
heading={content.resultsSection.heading}
|
|
subheading={content.resultsSection.subheading}
|
|
highlights={content.resultsSection.highlights}
|
|
/>
|
|
<FeatureGrid {...content.performanceGrid} />
|
|
<Security
|
|
id={content.securitySection.id}
|
|
label={content.securitySection.label}
|
|
heading={content.securitySection.heading}
|
|
subheading={content.securitySection.subheading}
|
|
features={content.securitySection.features}
|
|
cta={content.securitySection.cta}
|
|
/>
|
|
<CtaSection {...content.platformUpsell} />
|
|
<PlatformStarterSection {...content.platformStarterSection} />
|
|
<MPCSection {...content.mcp} />
|
|
</Layout>
|
|
</>
|
|
)
|
|
}
|
|
|
|
export default HostedPostgresPage
|