diff --git a/packages/web/app/src/components/organization/billing/BillingPlanPicker.tsx b/packages/web/app/src/components/organization/billing/BillingPlanPicker.tsx index e0e6aec9b..64f4bc81b 100644 --- a/packages/web/app/src/components/organization/billing/BillingPlanPicker.tsx +++ b/packages/web/app/src/components/organization/billing/BillingPlanPicker.tsx @@ -35,7 +35,7 @@ const planCollection: { 'Schema Registry', 'Detection of breaking changes based on usage reports', 'GitHub and Slack integrations', - '90 days of usage data retention', + '180 days of usage data retention',
Schema Policy Checks {comingSoon}
,
ESLint integration {comingSoon}
, ], diff --git a/packages/web/landing-page/components/pricing.tsx b/packages/web/landing-page/components/pricing.tsx new file mode 100644 index 000000000..76793ca54 --- /dev/null +++ b/packages/web/landing-page/components/pricing.tsx @@ -0,0 +1,136 @@ +import React from 'react'; +import 'twin.macro'; + +function Plan(plan: { + name: string; + description: string; + price: number | string; + features: Array; + footer?: React.ReactNode; +}) { + return ( +
+
+
+

{plan.name}

+
+ {typeof plan.price === 'string' ? ( + plan.price + ) : ( + <> + {'$'} + {plan.price} + /mo + + )} +
+
{plan.description}
+
+
    + {plan.features.map((feature, i) => { + return ( +
  • +
    {feature}
    +
  • + ); + })} +
+
+
+ {plan.footer && ( +
+
+
{plan.footer}
+
+ )} +
+
+ ); +} + +export function Pricing() { + return ( +
+
+

Pricing

+

Available in the application

+
+ + + Schema Policy Checks (coming soon) +
, +
+ ESLint integration (coming soon) +
, + ]} + footer={ + <> +
Free 14-day trial period
+
$15 for additional 1M operations
+
$1 for additional 10 schema pushes
+ + } + /> + + Schema Policy Checks (coming soon) +
, +
+ ESLint integration (coming soon) +
, + 'SAML (coming soon)', + + Support from + + The Guild + + , + ]} + footer={<>Shape a custom plan for your business} + /> +
+
+ + ); +} diff --git a/packages/web/landing-page/pages/_document.tsx b/packages/web/landing-page/pages/_document.tsx index e44d2ff10..411588599 100644 --- a/packages/web/landing-page/pages/_document.tsx +++ b/packages/web/landing-page/pages/_document.tsx @@ -84,7 +84,7 @@ export default class MyDocument extends Document { diff --git a/packages/web/landing-page/pages/index.tsx b/packages/web/landing-page/pages/index.tsx index 34ae2f519..3c4c76d4b 100644 --- a/packages/web/landing-page/pages/index.tsx +++ b/packages/web/landing-page/pages/index.tsx @@ -4,6 +4,7 @@ import Head from 'next/head'; import { GlobalStyles } from 'twin.macro'; import { css } from 'twin.macro'; import { Header, FooterExtended, GlobalStyles as TGCStyles, ThemeProvider } from '@theguild/components'; +import { Pricing } from '../components/pricing'; const CookiesConsent: React.FC = () => { const [show, setShow] = React.useState(typeof window !== 'undefined' && localStorage.getItem('cookies') === null); @@ -12,11 +13,6 @@ const CookiesConsent: React.FC = () => { setShow(false); localStorage.setItem('cookies', 'true'); }, [setShow]); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const close = React.useCallback(() => { - setShow(false); - localStorage.setItem('cookies', 'false'); - }, [setShow]); if (!show) { return null; @@ -130,7 +126,7 @@ export default function Index() {