diff --git a/gatsby-config.ts b/gatsby-config.ts index dcd4bac9..bc537581 100644 --- a/gatsby-config.ts +++ b/gatsby-config.ts @@ -238,6 +238,7 @@ const cfg: GatsbyConfig = { `500`, `600`, `700`, + `900`, ], }, ], diff --git a/shared.ts b/shared.ts index fd2dc6bd..897a1293 100644 --- a/shared.ts +++ b/shared.ts @@ -1,3 +1,5 @@ +import { features } from './src/components/DeploymentOptionsPage/shared'; + export const webinarsUrl = 'https://try.estuary.dev/webinar-estuary101-ondemand'; @@ -144,3 +146,5 @@ export interface Vendor { }; }; } + +export type DeploymentOption = keyof typeof features; diff --git a/src/components/ContactUs/index.tsx b/src/components/ContactUs/index.tsx deleted file mode 100644 index aa7cc793..00000000 --- a/src/components/ContactUs/index.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import SectionOne from './SectionOne'; -import SectionTwo from './SectionTwo'; -import SectionThree from './SectionThree'; - -export { SectionOne, SectionTwo, SectionThree }; diff --git a/src/components/ContactUs/SectionTwo/index.tsx b/src/components/ContactUsPage/Address/index.tsx similarity index 95% rename from src/components/ContactUs/SectionTwo/index.tsx rename to src/components/ContactUsPage/Address/index.tsx index b501371f..2a128b69 100644 --- a/src/components/ContactUs/SectionTwo/index.tsx +++ b/src/components/ContactUsPage/Address/index.tsx @@ -11,7 +11,7 @@ import { address, } from './styles.module.less'; -const SectionTwo = () => { +const Address = () => { const { streetAddress, addressLocality, @@ -39,4 +39,4 @@ const SectionTwo = () => { ); }; -export default SectionTwo; +export default Address; diff --git a/src/components/ContactUs/SectionTwo/styles.module.less b/src/components/ContactUsPage/Address/styles.module.less similarity index 100% rename from src/components/ContactUs/SectionTwo/styles.module.less rename to src/components/ContactUsPage/Address/styles.module.less diff --git a/src/components/ContactUs/SectionOne/index.tsx b/src/components/ContactUsPage/FormSection/index.tsx similarity index 93% rename from src/components/ContactUs/SectionOne/index.tsx rename to src/components/ContactUsPage/FormSection/index.tsx index a530088b..5b1e5796 100644 --- a/src/components/ContactUs/SectionOne/index.tsx +++ b/src/components/ContactUsPage/FormSection/index.tsx @@ -7,7 +7,7 @@ import { redirectLink, } from './styles.module.less'; -const SectionOne = () => { +const FormSection = () => { return (
@@ -26,4 +26,4 @@ const SectionOne = () => { ); }; -export default SectionOne; +export default FormSection; diff --git a/src/components/ContactUs/SectionOne/styles.module.less b/src/components/ContactUsPage/FormSection/styles.module.less similarity index 100% rename from src/components/ContactUs/SectionOne/styles.module.less rename to src/components/ContactUsPage/FormSection/styles.module.less diff --git a/src/components/ContactUs/SectionThree/index.tsx b/src/components/ContactUsPage/GetEmail/index.tsx similarity index 93% rename from src/components/ContactUs/SectionThree/index.tsx rename to src/components/ContactUsPage/GetEmail/index.tsx index dc671483..82557291 100644 --- a/src/components/ContactUs/SectionThree/index.tsx +++ b/src/components/ContactUsPage/GetEmail/index.tsx @@ -4,7 +4,7 @@ import { defaultWrapperDark } from '../../../globalStyles/wrappers.module.less'; import { dashboardRegisterUrl } from '../../../../shared'; import { container, title } from './styles.module.less'; -const SectionThree = () => { +const GetEmail = () => { return (
@@ -21,4 +21,4 @@ const SectionThree = () => { ); }; -export default SectionThree; +export default GetEmail; diff --git a/src/components/ContactUs/SectionThree/styles.module.less b/src/components/ContactUsPage/GetEmail/styles.module.less similarity index 100% rename from src/components/ContactUs/SectionThree/styles.module.less rename to src/components/ContactUsPage/GetEmail/styles.module.less diff --git a/src/components/Container/index.tsx b/src/components/Container/index.tsx new file mode 100644 index 00000000..2817273a --- /dev/null +++ b/src/components/Container/index.tsx @@ -0,0 +1,21 @@ +import React, { ReactNode } from 'react'; +import clsx from 'clsx'; +import { container, vertical } from './styles.module.less'; + +interface ContainerProps { + children: ReactNode; + className?: string; + isVertical?: boolean; +} + +const Container = ({ children, className, isVertical }: ContainerProps) => { + return ( +
+ {children} +
+ ); +}; + +export default Container; diff --git a/src/components/Container/styles.module.less b/src/components/Container/styles.module.less new file mode 100644 index 00000000..4cc03003 --- /dev/null +++ b/src/components/Container/styles.module.less @@ -0,0 +1,39 @@ +@import '../../globalStyles/sections.module.less'; + +.container { + .globalMaxWidth; + display: flex; + gap: 60px; + align-items: center; + justify-content: space-between; + + > :nth-child(1), + > :nth-child(2) { + flex: 1; + max-width: 50%; + } + + @media (max-width: 1024px) { + flex-direction: column-reverse; + gap: 40px; + + > :nth-child(1), + > :nth-child(2) { + max-width: 100%; + } + } + + @media (max-width: 425px) { + gap: 20px; + } +} + +.vertical { + flex-direction: column; + + > :nth-child(1), + > :nth-child(2) { + flex: 1; + max-width: 100%; + } +} diff --git a/src/components/Homepage/DeploymentModes/DeploymentOptionDetails/index.tsx b/src/components/DeploymentOptionDetails/index.tsx similarity index 59% rename from src/components/Homepage/DeploymentModes/DeploymentOptionDetails/index.tsx rename to src/components/DeploymentOptionDetails/index.tsx index 6d6bca6c..55417e82 100644 --- a/src/components/Homepage/DeploymentModes/DeploymentOptionDetails/index.tsx +++ b/src/components/DeploymentOptionDetails/index.tsx @@ -1,23 +1,29 @@ import React from 'react'; -import KeyFeature from '../KeyFeature'; +import KeyFeature from '../Homepage/DeploymentModes/KeyFeature'; import { wrapper } from './styles.module.less'; interface DeploymentOptionDetailsProps { title: string; description: string; keyFeatures: string[]; + TitleHeadingLevel?: keyof JSX.IntrinsicElements; + KeyFeaturesTitleHeadingLevel?: keyof JSX.IntrinsicElements; } const DeploymentOptionDetails = ({ title, description, keyFeatures, + TitleHeadingLevel = 'h3', + KeyFeaturesTitleHeadingLevel = 'h4', }: DeploymentOptionDetailsProps) => { return (
-

{title}

+ {title}

{description}

-

Key Features:

+ + Key Features: +
    {keyFeatures.map((keyFeature, index) => ( diff --git a/src/components/Homepage/DeploymentModes/DeploymentOptionDetails/styles.module.less b/src/components/DeploymentOptionDetails/styles.module.less similarity index 82% rename from src/components/Homepage/DeploymentModes/DeploymentOptionDetails/styles.module.less rename to src/components/DeploymentOptionDetails/styles.module.less index 4e94f0b3..54be784e 100644 --- a/src/components/Homepage/DeploymentModes/DeploymentOptionDetails/styles.module.less +++ b/src/components/DeploymentOptionDetails/styles.module.less @@ -4,9 +4,12 @@ gap: 16px; font-size: 1rem; - h3 { + h2, h3 { font-size: 1.25rem; line-height: 24px; + color: #47506D; + text-transform: uppercase; + font-weight: 700; } p { diff --git a/src/components/Homepage/DeploymentModes/DeploymentOptionDiagram/index.tsx b/src/components/DeploymentOptionDiagram/index.tsx similarity index 81% rename from src/components/Homepage/DeploymentModes/DeploymentOptionDiagram/index.tsx rename to src/components/DeploymentOptionDiagram/index.tsx index d7306b8d..0705e483 100644 --- a/src/components/Homepage/DeploymentModes/DeploymentOptionDiagram/index.tsx +++ b/src/components/DeploymentOptionDiagram/index.tsx @@ -1,15 +1,17 @@ import React from 'react'; import clsx from 'clsx'; -import CloudProviderIcon from '../../../../svgs/cloud-provider-icon.svg'; -import CustomerCloudIcon from '../../../../svgs/customer-cloud-icon.svg'; -import ControlPlaneIcon from '../../../../svgs/control-plane-icon.svg'; -import VpcIcon from '../../../../svgs/vpc-icon.svg'; -import DatabaseIcon from '../../../../svgs/database-icon.svg'; -import FlowStorageIcon from '../../../../svgs/flow-storage-icon.svg'; -import UsaFlagIcon from '../../../../svgs/usa-flag-icon.svg'; -import EuropeFlagIcon from '../../../../svgs/europe-flag-icon.svg'; -import PrivateDataPlaneIcon from '../../../../svgs/private-data-plane-icon.svg'; +import CloudProviderIcon from '../../svgs/cloud-provider-icon.svg'; +import CustomerCloudIcon from '../../svgs/customer-cloud-icon.svg'; +import ControlPlaneIcon from '../../svgs/control-plane-icon.svg'; +import VpcIcon from '../../svgs/vpc-icon.svg'; +import DatabaseIcon from '../../svgs/database-icon.svg'; +import FlowStorageIcon from '../../svgs/flow-storage-icon.svg'; +import UsaFlagIcon from '../../svgs/usa-flag-icon.svg'; +import EuropeFlagIcon from '../../svgs/europe-flag-icon.svg'; +import PrivateDataPlaneIcon from '../../svgs/private-data-plane-icon.svg'; +import { DeploymentOption } from '../../../shared'; import { + container, solidBorderBox, secondLevelSolidBorderBox, dashedBorderBox, @@ -23,22 +25,21 @@ import { vpcMarginBottom, privateDeploymentTag, metadataOnlyDarkerBlueTag, - metadataOnlyLighterBlueTag, relativePosition, privateDeploymentVpcBox, -} from '../styles.module.less'; +} from './styles.module.less'; const iconSize = 30; interface DeploymentDiagramProps { - selectedTab: string; + deploymentOption: DeploymentOption; } const DeploymentOptionDiagram = ({ - selectedTab = '1', + deploymentOption = 'public', }: DeploymentDiagramProps) => { return ( - <> +
    @@ -53,7 +54,7 @@ const DeploymentOptionDiagram = ({ Control Plane
    - {selectedTab === '1' ? ( + {deploymentOption === 'public' ? (
    - {selectedTab === '1' + {deploymentOption === 'public' ? 'Customer Cloud' : 'Customer Cloud & Region'}
    - {selectedTab === '2' ? ( + {deploymentOption === 'private' ? (
    Customer VPC
    - {selectedTab === '3' ? ( + {deploymentOption === 'byoc' ? (
    - {['1', '3'].includes(selectedTab) ? ( -
    + {['public', 'byoc'].includes(deploymentOption) ? ( +
    - {selectedTab === '1' ? 'Internet' : 'metadata only'} + {deploymentOption === 'public' + ? 'Internet' + : 'metadata only'}
    ) : null} - {selectedTab === '2' ? ( + {deploymentOption === 'private' ? ( <>
    ) : null}
    - +
    ); }; diff --git a/src/components/DeploymentOptionDiagram/styles.module.less b/src/components/DeploymentOptionDiagram/styles.module.less new file mode 100644 index 00000000..b63660a8 --- /dev/null +++ b/src/components/DeploymentOptionDiagram/styles.module.less @@ -0,0 +1,230 @@ +@primaryTagColor: #6ED5D6; +@secondaryTagColor: #5072EB; + +.container { + display: grid; + grid-template-columns: 1fr 1fr; + align-items: center; + justify-content: center; + gap: 20px; + position: relative; + max-width: 536px; + width: 100%; + margin: auto; + + div { + width: 100%; + } + + svg { + min-height: 30px; + } + + @media (max-width: 600px) { + svg { + max-width: 20px; + max-height: 20px; + } + } + + @media (max-width: 360px) { + gap: 10px; + } +} + +.solidBorderBox { + border: 1px solid #A4B6F4; + border-radius: 16px; + padding: 16px; + display: flex; + flex-direction: column; + align-items: center; + gap: 16px; + height: 100%; + + @media (max-width: 600px) { + gap: 10px; + padding: 10px; + } + + @media (max-width: 450px) { + gap: 6px; + padding: 6px; + } +} + +.secondLevelSolidBorderBox { + border-radius: 8px; + background-color: #FCFCFD; + + span { + font-weight: 500; + } +} + +.dashedBorderBox { + border: 1px dashed #A4B6F4B2; + border-radius: 12px; + padding: 16px; + background-color: #F5F7FF; + text-align: center; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 16px; + width: 100%; + height: 100%; + + @media (max-width: 600px) { + gap: 10px; + padding: 10px; + } + + @media (max-width: 450px) { + gap: 6px; + padding: 6px; + } + + span { + font-size: 0.75rem; + font-weight: 600; + line-height: 14.4px; + + @media (max-width: 600px) { + font-size: 0.6rem; + } + } +} + +.middleTag { + position: absolute; + top: 46%; + left: -55%; + text-align: center; + display: flex; + align-items: center; + + span { + background-color: @primaryTagColor; + color: #FFFFFF; + font-size: 0.875rem; + font-weight: 700; + padding: 4px 12px; + white-space: nowrap; + min-width: 116px; + + @media (max-width: 600px) { + min-width: 70px; + font-size: 0.6rem; + padding: 2px 0; + } + } +} + +.tagArrow { + width: 0; + height: 0; + border-top: 14px solid transparent; + border-bottom: 14px solid transparent; + + @media (max-width: 600px) { + border-top: 9px solid transparent; + border-bottom: 9px solid transparent; + } +} + +.tagArrowLeft { + border-right: 14px solid @primaryTagColor; + + @media (max-width: 600px) { + border-right: 9px solid @primaryTagColor; + } +} + +.tagArrowRight { + border-left: 14px solid @primaryTagColor; + + @media (max-width: 600px) { + border-left: 9px solid @primaryTagColor; + } +} + +.minHeight { + align-items: center; + justify-content: center; +} + +.horizontalWrapper { + display: flex; + align-items: center; + justify-content: center; + gap: 16px; + + @media (max-width: 600px) { + gap: 10px; + } + + @media (max-width: 450px) { + gap: 6px; + } +} + +.privateDeploymentTag { + @media (max-width: 600px) { + span { + padding: 2px 0; + } + } +} + +.privateLinkTag { + top: 41%; + left: -2%; + + @media (max-width: 600px) { + top: 44.5%; + } +} + +.vpcMarginBottom { + margin-bottom: 54px; + + @media (max-width: 600px) { + margin-bottom: 40px; + } +} + +.metadataOnlyDarkerBlueTag { + top: 85%; + + span { + background-color: @secondaryTagColor; + } + + .tagArrowLeft { + border-right-color: @secondaryTagColor; + } + + .tagArrowRight { + border-left-color: @secondaryTagColor; + } + + @media (max-width: 600px) { + span { + min-width: 80px; + } + } +} + +.relativePosition { + position: relative; +} + +.privateDeploymentVpcBox { + margin-bottom: 26px; + + @media (max-width: 600px) { + margin-bottom: 25px; + } +} diff --git a/src/components/DeploymentOptionsPage/ByocDeployment/index.tsx b/src/components/DeploymentOptionsPage/ByocDeployment/index.tsx new file mode 100644 index 00000000..de793e60 --- /dev/null +++ b/src/components/DeploymentOptionsPage/ByocDeployment/index.tsx @@ -0,0 +1,26 @@ +import React from 'react'; +import { defaultWrapperGrey } from '../../../globalStyles/wrappers.module.less'; +import DeploymentOptionDetails from '../../DeploymentOptionDetails'; +import { features } from '../shared'; +import { container } from '../styles.module.less'; +import DeploymentOptionDiagram from '../../DeploymentOptionDiagram'; +import Container from '../../Container'; + +const ByocDeployment = () => { + return ( +
    + + + + +
    + ); +}; + +export default ByocDeployment; diff --git a/src/components/DeploymentOptionsPage/ComparisonTable/index.tsx b/src/components/DeploymentOptionsPage/ComparisonTable/index.tsx new file mode 100644 index 00000000..b87d0add --- /dev/null +++ b/src/components/DeploymentOptionsPage/ComparisonTable/index.tsx @@ -0,0 +1,31 @@ +import React from 'react'; +import { defaultWrapperDark } from '../../../globalStyles/wrappers.module.less'; +import Table from '../../Table'; +import Container from '../../Container'; +import { container } from './styles.module.less'; + +const headers = ['Features', 'Public Deployment', 'Private Deployment', 'BYOC']; + +const data = [ + ['Infrastructure Control', 'Limited', 'High', 'High'], + ['Security', 'Standard', 'Enhanced', 'Customizable'], + ['Setup Complexity', 'Low', 'Low', 'Medium'], + ['Customization', 'Limited', 'Moderate', 'Extensive'], + ['Data Residency Control', 'Limited', 'Full', 'Full'], + ['Compliance Flexibility', 'Standard', 'High', 'Highest'], + ['Cost', 'Predictable', 'Predictable', 'Depends on setup'], + ['Maintenance Responsibility', 'Estuary', 'Shared', 'Shared'], +]; + +const ComparisonTable = () => { + return ( +
    + +

    COMPARISON TABLE

    + + + + ); +}; + +export default ComparisonTable; diff --git a/src/components/DeploymentOptionsPage/ComparisonTable/styles.module.less b/src/components/DeploymentOptionsPage/ComparisonTable/styles.module.less new file mode 100644 index 00000000..c512401d --- /dev/null +++ b/src/components/DeploymentOptionsPage/ComparisonTable/styles.module.less @@ -0,0 +1,15 @@ +.container { + h2 { + font-size: 2.5rem; + font-weight: 600; + color: #5072EB; + } + + @media(max-width: 768px) { + gap: 40px; + + h2 { + font-size: 2rem; + } + } +} diff --git a/src/components/DeploymentOptionsPage/Hero/index.tsx b/src/components/DeploymentOptionsPage/Hero/index.tsx new file mode 100644 index 00000000..1f0ae376 --- /dev/null +++ b/src/components/DeploymentOptionsPage/Hero/index.tsx @@ -0,0 +1,100 @@ +import React from 'react'; +import { StaticImage } from 'gatsby-plugin-image'; +import clsx from 'clsx'; +import { defaultWrapperDarkBlue } from '../../../globalStyles/wrappers.module.less'; +import { OutboundLinkFilled } from '../../OutboundLink'; +import { LinkOutlined } from '../../../globalStyles'; +import { dashboardRegisterUrl } from '../../../../shared'; +import CustomerCloudIcon from '../../../svgs/customer-cloud-icon.svg'; +import PublicDeploymentsIcon from '../../../svgs/public-deployments-icon.svg'; +import PrivateDeploymentsIcon from '../../../svgs/private-deployments-icon.svg'; +import Container from '../../Container'; +import { + container, + leftColumn, + rightColumn, + solidBorderBox, + dashedBorderBox, + reverse, +} from './styles.module.less'; + +const Hero = () => { + return ( +
    + +
    +

    ESTUARY FLOW DEPLOYMENT OPTIONS

    +

    + Estuary Flow offers three main deployment options to + cater to various organizational needs and security + requirements. This section provides a high-level + overview and comparison of Public Deployment, Private + Deployment, and BYOC options. +

    +
    + + Build a pipeline + + + Contact Us + +
    +
    +
    + +
    + + + BYOC + +
    +
    + + + Public Deployments + +
    +
    + + + Private Deployments + +
    +
    + Private +
    +
    + Secure +
    +
    + Private +
    +
    + Enterprise-ready +
    +
    + Secure +
    +
    + Private +
    +
    +
    +
    + ); +}; + +export default Hero; diff --git a/src/components/DeploymentOptionsPage/Hero/styles.module.less b/src/components/DeploymentOptionsPage/Hero/styles.module.less new file mode 100644 index 00000000..3afcd113 --- /dev/null +++ b/src/components/DeploymentOptionsPage/Hero/styles.module.less @@ -0,0 +1,279 @@ +@purple: #A4B6F4; +@darkGreen: #134753; +@lightGreen: #4EFFF2; +@sizeProportionalToViewWidth: 0.7vw; +@sizeProportionalToViewWidth2: 1vw; +@sizeProportionalToViewWidth3: 2vw; +@sizeProportionalToViewWidth4: 2.8vw; +@sizeProportionalToViewWidth5: 7vw; + +.fullSize { + width: 100%; + height: 100%; +} + +.centralize { + display: flex; + align-items: center; + justify-content: center; +} + +.reverse { + transform: scaleX(-1); + + span { + transform: scaleX(-1); + } +} + +.container { + h1, + p { + color: #fff; + } + + h1 { + line-height: 72px; + } + + p { + font-size: 1.25rem; + color: #F2F3F5; + margin: 0; + } + + span { + .fullSize; + font-size: 0.9vw; + font-weight: 600; + line-height: @sizeProportionalToViewWidth2; + color: #47506D; + text-align: center; + } + + @media (min-width: 1441px) { + span { + font-size: 0.875rem; + line-height: 16.3px; + } + } + + @media (max-width: 1024px) { + .leftColumn { + max-width: 100%; + } + + span { + font-size: 1.8vw; + line-height: 2.2vw; + } + } + + @media (max-width: 768px) { + h1 { + font-size: 2.5rem; + line-height: 48px; + } + + p { + font-size: 1rem; + } + } + + @media (max-width: 425px) { + h1 { + font-size: 2.25rem; + line-height: 43.2px; + } + } +} + +.leftColumn { + display: flex; + flex-direction: column; + gap: 24px; + max-width: 50%; + width: 100%; + + div { + display: flex; + gap: 16px; + max-width: 480px; + flex-direction: row; + + &>a { + white-space: nowrap; + width: 100%; + } + + @media (max-width: 1024px) { + margin: 0; + } + + @media (max-width: 360px) { + flex-direction: column; + } + } +} + +.solidBorderBox { + .fullSize; + background-color: #FFFFFF33; + padding: @sizeProportionalToViewWidth2; + top: 26%; + left: 2%; + position: absolute; + border: 1px solid @purple; + border-top-right-radius: @sizeProportionalToViewWidth2; + border-bottom-left-radius: @sizeProportionalToViewWidth2; + max-width: 26%; + max-height: 36%; + + span { + .centralize; + flex-direction: column; + gap: @sizeProportionalToViewWidth; + background-color: #D8E1FF; + border: 1px solid @purple; + border-top-right-radius: @sizeProportionalToViewWidth; + border-bottom-left-radius: @sizeProportionalToViewWidth; + + svg { + max-width: @sizeProportionalToViewWidth4; + } + } + + @media (min-width: 1441px) { + padding: 16px; + } + + @media (max-width: 1024px) { + padding: @sizeProportionalToViewWidth3; + border-top-right-radius: @sizeProportionalToViewWidth4; + border-bottom-left-radius: @sizeProportionalToViewWidth4; + + span { + border-top-right-radius: @sizeProportionalToViewWidth3; + border-bottom-left-radius: @sizeProportionalToViewWidth3; + gap: @sizeProportionalToViewWidth3; + + svg { + max-width: @sizeProportionalToViewWidth5; + max-height: @sizeProportionalToViewWidth5; + } + } + } +} + +.dashedBorderBox { + .fullSize; + position: absolute; + top: 65%; + left: 2%; + border: 1px dashed @purple; + background-color: #172D48; + border-top-left-radius: @sizeProportionalToViewWidth; + border-bottom-right-radius: @sizeProportionalToViewWidth; + max-width: 11%; + max-height: 13%; + + span { + .centralize; + font-size: @sizeProportionalToViewWidth; + color: #B8C7F7; + font-weight: 900; + + @media (min-width: 1441px) { + font-size: 0.75rem; + } + } + + @media (max-width: 1024px) { + border-top-left-radius: @sizeProportionalToViewWidth3; + border-bottom-right-radius: @sizeProportionalToViewWidth3; + + span { + font-size: 1.5vw; + } + } +} + +.rightColumn { + position: relative; + width: 100%; + + div { + img { + position: absolute; + } + } + + .solidBorderBox:nth-of-type(3) { + top: 18%; + left: 31%; + max-height: 44%; + + span { + border-top-left-radius: @sizeProportionalToViewWidth; + border-bottom-right-radius: @sizeProportionalToViewWidth; + border-top-right-radius: 0; + border-bottom-left-radius: 0; + + @media (max-width: 1024px) { + border-top-left-radius: @sizeProportionalToViewWidth3; + border-bottom-right-radius: @sizeProportionalToViewWidth3; + } + } + } + + .solidBorderBox:nth-of-type(4) { + top: 10%; + left: 60%; + max-height: 52%; + } + + .dashedBorderBox:nth-of-type(5) { + top: 65%; + left: 46%; + } + + .dashedBorderBox:nth-of-type(6) { + top: 65%; + left: 87%; + background-color: @darkGreen; + border-color: @lightGreen; + + span { + color: @lightGreen; + } + } + + .dashedBorderBox:nth-of-type(7) { + top: 49%; + left: 89%; + } + + .dashedBorderBox:nth-of-type(8) { + top: 65%; + left: 70%; + max-width: 14%; + max-height: 16%; + background-color: #152D5B; + border-color: #5072EB; + + span { + color: #FFFFFF; + } + } + + .dashedBorderBox:nth-of-type(9) { + top: 65%; + left: 31%; + background-color: @darkGreen; + border-color: @lightGreen; + + span { + color: @lightGreen; + } + } +} \ No newline at end of file diff --git a/src/components/DeploymentOptionsPage/PrivateDeployment/index.tsx b/src/components/DeploymentOptionsPage/PrivateDeployment/index.tsx new file mode 100644 index 00000000..1996c47f --- /dev/null +++ b/src/components/DeploymentOptionsPage/PrivateDeployment/index.tsx @@ -0,0 +1,27 @@ +import React from 'react'; +import clsx from 'clsx'; +import { defaultWrapperDark } from '../../../globalStyles/wrappers.module.less'; +import DeploymentOptionDetails from '../../DeploymentOptionDetails'; +import { features } from '../shared'; +import { container, reverseColumn } from '../styles.module.less'; +import DeploymentOptionDiagram from '../../DeploymentOptionDiagram'; +import Container from '../../Container'; + +const PrivateDeployment = () => { + return ( +
    + + + + +
    + ); +}; + +export default PrivateDeployment; diff --git a/src/components/DeploymentOptionsPage/PublicDeployment/index.tsx b/src/components/DeploymentOptionsPage/PublicDeployment/index.tsx new file mode 100644 index 00000000..09d28036 --- /dev/null +++ b/src/components/DeploymentOptionsPage/PublicDeployment/index.tsx @@ -0,0 +1,26 @@ +import React from 'react'; +import { defaultWrapperGrey } from '../../../globalStyles/wrappers.module.less'; +import DeploymentOptionDetails from '../../DeploymentOptionDetails'; +import { features } from '../shared'; +import { container } from '../styles.module.less'; +import DeploymentOptionDiagram from '../../DeploymentOptionDiagram'; +import Container from '../../Container'; + +const PublicDeployment = () => { + return ( +
    + + + + +
    + ); +}; + +export default PublicDeployment; diff --git a/src/components/DeploymentOptionsPage/shared.ts b/src/components/DeploymentOptionsPage/shared.ts new file mode 100644 index 00000000..3b13ea0a --- /dev/null +++ b/src/components/DeploymentOptionsPage/shared.ts @@ -0,0 +1,23 @@ +export const features = { + public: [ + 'Fully managed by Estuary', + 'Quick setup and minimal configuration required', + 'Automatic updates and maintenance', + 'Multiple data processing region options', + 'Suitable for organizations with less stringent data security requirements', + ], + private: [ + 'Enhanced security with data remaining within the private network', + 'Complete control over data pathways', + 'Immutable infrastructure pattern for up-to-date security', + 'Compliant with stringent data security requirements', + 'Ability to move data across regions', + ], + byoc: [ + 'Full control over the cloud infrastructure', + 'Ability to leverage existing cloud resources and configurations', + 'Customizable to fit specific organizational needs', + 'Potential cost savings by using existing cloud credits or negotiated rates', + 'Greater flexibility in terms of data residency and compliance', + ], +}; diff --git a/src/components/DeploymentOptionsPage/styles.module.less b/src/components/DeploymentOptionsPage/styles.module.less new file mode 100644 index 00000000..e57b6edf --- /dev/null +++ b/src/components/DeploymentOptionsPage/styles.module.less @@ -0,0 +1,27 @@ +.container { + h2 { + font-size: 2.25rem; + margin-bottom: 8px; + line-height: 38.4px; + } + + h3 { + color: #5072EB; + font-size: 1rem; + } + + @media(max-width: 1024px) { + display: flex; + flex-direction: column; + + h2 { + font-size: 2rem; + } + } +} + +.reverseColumn { + @media(max-width: 1024px) { + flex-direction: column-reverse; + } +} diff --git a/src/components/EtlToolsXvsYPage/SectionTwo/TableRows/index.tsx b/src/components/EtlToolsXvsYPage/SectionTwo/TableRows/index.tsx index 9690796a..c09c6b99 100644 --- a/src/components/EtlToolsXvsYPage/SectionTwo/TableRows/index.tsx +++ b/src/components/EtlToolsXvsYPage/SectionTwo/TableRows/index.tsx @@ -1,6 +1,6 @@ import React from 'react'; import FeatureData from '../FeatureData'; -import TitledTableCell from '../TitledTableCell'; +import TitledTableCell from '../../../Table/TitledTableCell'; interface ComparisonVendor { name: string; diff --git a/src/components/EtlToolsXvsYPage/SectionTwo/VendorAvatar/index.tsx b/src/components/EtlToolsXvsYPage/SectionTwo/VendorAvatar/index.tsx index c21a30ae..6f137c1a 100644 --- a/src/components/EtlToolsXvsYPage/SectionTwo/VendorAvatar/index.tsx +++ b/src/components/EtlToolsXvsYPage/SectionTwo/VendorAvatar/index.tsx @@ -28,6 +28,4 @@ const VendorAvatar = React.forwardRef( } ); -VendorAvatar.displayName = 'VendorAvatar'; - export default VendorAvatar; diff --git a/src/components/EtlToolsXvsYPage/SectionTwo/styles.module.less b/src/components/EtlToolsXvsYPage/SectionTwo/styles.module.less index b30809be..fb751ede 100644 --- a/src/components/EtlToolsXvsYPage/SectionTwo/styles.module.less +++ b/src/components/EtlToolsXvsYPage/SectionTwo/styles.module.less @@ -1,4 +1,5 @@ @import '../../../globalStyles/sections.module.less'; +@import '../../Table/styles.module.less'; .container { .globalMaxWidth; @@ -36,150 +37,73 @@ } table { - margin: 24px 0 48px 0; - border: none; - font-size: 1rem; - border-collapse: separate; - border-spacing: 0; - color: #47506D; - border-bottom: 1px solid #EEF1FD; - border-bottom-left-radius: 32px; - border-bottom-right-radius: 32px; - } - - thead th:not(:first-of-type) { - position: sticky; - top: 116px; - padding: 0; - } - - thead th:nth-child(2) div:first-of-type { - border-bottom-left-radius: 16px; - } - - thead th:last-of-type div:first-of-type { - border-bottom-right-radius: 16px; - } - - th { - background-color: #EEF1FD; - color: #04192B; - font-size: 1.25rem; - font-weight: 600; - padding: 24px; - border: none; - } - - tr:first-of-type { - th { - border-top-left-radius: 32px; - border-top-right-radius: 32px; - } - } - - tr:last-of-type td:first-of-type { - border-bottom-left-radius: 32px; - } - - tr:last-of-type td:last-of-type { - border-bottom-right-radius: 32px; - } - - thead { - th { - background-color: transparent; - color: #47506D; - font-weight: 600; - font-size: 1rem; - } - } - - td { - background-color: #fff; - border: none; - border-top: 1px dashed #DCE3FB; - padding: 12px; - text-align: center; + .table; - p { - margin: 0; - font-size: 1rem; - line-height: 30px; - } - } - - td:not(:first-child) { - border-left: none; - } - - td:not(:last-child) { - border-right: none; - } - - td:first-of-type { - width: 340px; - padding: 12px 24px; - border-left: 1px solid #EEF1FD; - font-weight: 600; - text-align: left; - } - - td:last-of-type { - border-right: 1px solid #EEF1FD; - padding: 12px 24px; - } + margin: 24px 0 48px 0; - @media (max-width: 768px) { - table { - border: 1px solid #EEF1FD; - border-radius: 32px; + thead th:not(:first-of-type) { + position: sticky; + top: 116px; + padding: 0; } thead { - display: none; - } - - th { - text-align: center; - } - - tr { - display: flex; - flex-direction: column; + th { + background-color: transparent; + color: #47506D; + font-weight: 600; + font-size: 1rem; + } } td:first-of-type { - width: 100%; - text-align: center; + padding: 12px 24px; } - tr td:last-of-type { - border-right: none; + td:last-of-type { + padding: 12px 24px; } - tr:last-of-type td:last-of-type { - border-bottom-left-radius: 32px; - } + tr { + td:first-of-type { + padding-left: 24px; + } - td:first-of-type { - border-left: none; - background-color: #F6F8FE; + td:last-of-type { + padding-right: 24px; + } } - .vendorNameMobile { - display: block; - margin-bottom: 8px; - font-size: 1rem; + tr:first-of-type { + th:first-of-type { + padding-left: 24px; + } + + th:last-of-type { + padding-right: 0; + } } - } - @media (min-width: 769px) { - td:not(:first-child) strong { - display: none; + @media (max-width: 768px) { + tr { + td:first-of-type { + padding: 12px; + } + + td:last-of-type { + padding: 12px; + } + } + + tr:first-of-type { + th:last-of-type { + padding-right: 24px; + } + } } } } .bold { font-weight: 600; -} +} \ No newline at end of file diff --git a/src/components/HeaderNavbar/CardItem/index.tsx b/src/components/HeaderNavbar/CardItem/index.tsx index 569de09d..1d3ec93a 100644 --- a/src/components/HeaderNavbar/CardItem/index.tsx +++ b/src/components/HeaderNavbar/CardItem/index.tsx @@ -15,7 +15,7 @@ import { } from './styles'; import { contentFooter } from './styles.module.less'; -const ItemLink = ({ name, description, Image, to, hasChevronIcon }) => { +const ItemLink = ({ name, description, Image, to }) => { const LinkElement: any = to[0] === '/' ? Link : OutboundLink; const linkProps = to[0] === '/' ? { to } : { href: to, target: '_blank' }; @@ -36,12 +36,7 @@ const ItemLink = ({ name, description, Image, to, hasChevronIcon }) => { ) : null} - {hasChevronIcon ? ( - - ) : null} + diff --git a/src/components/HeaderNavbar/Product/items.tsx b/src/components/HeaderNavbar/Product/items.tsx index 2bdfc418..fe5ad732 100644 --- a/src/components/HeaderNavbar/Product/items.tsx +++ b/src/components/HeaderNavbar/Product/items.tsx @@ -1,21 +1,24 @@ -import { StaticImage } from 'gatsby-plugin-image'; import React from 'react'; import { getComparisonSlug } from '../../../../shared'; +import BookIcon from '../../../svgs/header-book.svg'; +import BalanceIcon from '../../../svgs/header-balance.svg'; + +const BookHeaderIcon = () => ; +const BalanceHeaderIcon = () => ; export const products = [ { name: 'ESTUARY FLOW', to: '/product', description: 'Build fully managed real-time data pipelines in minutes.', - hasChevronIcon: false, - Image: () => ( - - ), + Image: () => , + }, + { + name: 'DEPLOYMENT OPTIONS', + to: '/deployment-options', + description: + 'Explore the deployment options for Estuary Flow: Public, Private, and BYOC, with a comparison.', + Image: () => , }, ]; @@ -26,53 +29,21 @@ export const compare = [ { name: 'Estuary vs. Fivetran', to: generateComparisonTo('estuary', 'fivetran'), - hasChevronIcon: true, - Image: () => ( - - ), + Image: () => , }, { name: 'Estuary vs. Confluent', to: generateComparisonTo('confluent', 'estuary'), - hasChevronIcon: true, - Image: () => ( - - ), + Image: () => , }, { name: 'Estuary vs. Airbyte', to: generateComparisonTo('airbyte', 'estuary'), - hasChevronIcon: true, - Image: () => ( - - ), + Image: () => , }, { name: 'Estuary vs. Debezium', to: generateComparisonTo('debezium-kafka', 'estuary'), - hasChevronIcon: true, - Image: () => ( - - ), + Image: () => , }, ]; diff --git a/src/components/HeaderNavbar/Resources/index.tsx b/src/components/HeaderNavbar/Resources/index.tsx index e52fce3b..1a01333d 100644 --- a/src/components/HeaderNavbar/Resources/index.tsx +++ b/src/components/HeaderNavbar/Resources/index.tsx @@ -18,9 +18,12 @@ import { } from '../styles'; import { hideOnMobile, longLinkList } from '../styles.module.less'; import Carousel from '../../Carousel'; +import SuccessIcon from '../../../svgs/success.svg'; import { listen, read } from './items'; import ResourcesLink from './Link'; +const iconSize = 16; + const HeaderNavbarResources = ({ active, setActive }) => { const { allStrapiCaseStudy: { nodes: allCaseStudies }, @@ -60,15 +63,7 @@ const HeaderNavbarResources = ({ active, setActive }) => { name: caseStudy.Title.toUpperCase(), to: `/customers/${caseStudy.Slug}`, description: caseStudy.LinkOneLiner, - hasCrevronIcon: false, - Image: () => ( - - ), + Image: () => , })); return ( diff --git a/src/components/HeaderNavbar/Resources/items.tsx b/src/components/HeaderNavbar/Resources/items.tsx index 35a62fc9..c59ec51d 100644 --- a/src/components/HeaderNavbar/Resources/items.tsx +++ b/src/components/HeaderNavbar/Resources/items.tsx @@ -6,13 +6,11 @@ export const read = [ { name: 'Blog', to: '/blog/data-engineering', - hasChevronIcon: true, Image: () => , }, { name: 'Docs & Guides', to: 'https://docs.estuary.dev', - hasChevronIcon: true, Image: () => ( ( ( ), @@ -47,7 +43,6 @@ export const listen = [ { name: 'Podcasts', to: '/podcasts', - hasChevronIcon: true, Image: () => ( ), @@ -55,7 +50,6 @@ export const listen = [ { name: 'Webinars', to: webinarsUrl, - hasChevronIcon: true, Image: () => ( ), @@ -63,7 +57,6 @@ export const listen = [ { name: 'YouTube', to: 'https://www.youtube.com/watch?v=Ys5BoNqKljc', - hasChevronIcon: true, Image: () => ( ), diff --git a/src/components/Homepage/DeploymentModes/DeploymentDiagramContainer/index.tsx b/src/components/Homepage/DeploymentModes/DeploymentDiagramContainer/index.tsx new file mode 100644 index 00000000..614cae1b --- /dev/null +++ b/src/components/Homepage/DeploymentModes/DeploymentDiagramContainer/index.tsx @@ -0,0 +1,15 @@ +import React from 'react'; +import DeploymentOptionDiagram from '../../../DeploymentOptionDiagram'; +import { DeploymentOption } from '../../../../../shared'; + +interface DeploymentDiagramContainerProps { + deploymentOption: DeploymentOption; +} + +const DeploymentDiagramContainer = ({ + deploymentOption, +}: DeploymentDiagramContainerProps) => ( + +); + +export default DeploymentDiagramContainer; diff --git a/src/components/Homepage/DeploymentModes/DeploymentTabPanel/index.tsx b/src/components/Homepage/DeploymentModes/DeploymentTabPanel/index.tsx index 1e244b34..4d61d8b8 100644 --- a/src/components/Homepage/DeploymentModes/DeploymentTabPanel/index.tsx +++ b/src/components/Homepage/DeploymentModes/DeploymentTabPanel/index.tsx @@ -1,8 +1,8 @@ import React from 'react'; import TabPanel from '@mui/lab/TabPanel'; -import DeploymentOptionDetails from '../DeploymentOptionDetails'; +import DeploymentOptionDetails from '../../../DeploymentOptionDetails'; -const tabPanelStyling = { padding: '40px 0 0 0', minHeight: '458px' }; +const tabPanelStyling = { padding: '40px 0 0 0', minHeight: '340px' }; const DeploymentTabPanel = ({ value, title, description, keyFeatures }) => ( diff --git a/src/components/Homepage/DeploymentModes/DiagramContainer/index.tsx b/src/components/Homepage/DeploymentModes/DiagramContainer/index.tsx deleted file mode 100644 index 2045e5e0..00000000 --- a/src/components/Homepage/DeploymentModes/DiagramContainer/index.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react'; -import DeploymentOptionDiagram from '../DeploymentOptionDiagram'; - -const DiagramContainer = ({ selectedTab }) => ( - -); - -export default DiagramContainer; diff --git a/src/components/Homepage/DeploymentModes/TabPanels/index.tsx b/src/components/Homepage/DeploymentModes/TabPanels/index.tsx index b0a23eff..5f333fdc 100644 --- a/src/components/Homepage/DeploymentModes/TabPanels/index.tsx +++ b/src/components/Homepage/DeploymentModes/TabPanels/index.tsx @@ -3,46 +3,40 @@ import DeploymentTabPanel from '../DeploymentTabPanel'; const features = { public: [ - 'Fully managed by Estuary', - 'Quick setup and minimal configuration required', - 'Automatic updates and maintenance', - 'Multiple data processing region options', - 'Suitable for organizations with less stringent data security requirements', + 'Managed by Estuary', + 'Easy setup and minimal configuration', + 'Multiple data processing regions', ], private: [ - 'Enhanced security with data remaining within the private network', - 'Complete control over data pathways', - 'Immutable infrastructure pattern for up-to-date security', - 'Compliant with stringent data security requirements', - 'Ability to move data across regions', + 'Private network data control', + 'Maximum security', + 'Compliance-ready', ], byoc: [ - 'Full control over the cloud infrastructure', - 'Ability to leverage existing cloud resources and configurations', - 'Customizable to fit specific organizational needs', - 'Potential cost savings by using existing cloud credits or negotiated rates', - 'Greater flexibility in terms of data residency and compliance', + 'Full infrastructure control and customization', + 'Potential cost savings for cloud resources', + 'Total flexibility', ], }; const TabPanels = () => ( <> diff --git a/src/components/Homepage/DeploymentModes/Tabs/index.tsx b/src/components/Homepage/DeploymentModes/Tabs/index.tsx index 4426671d..dd53a456 100644 --- a/src/components/Homepage/DeploymentModes/Tabs/index.tsx +++ b/src/components/Homepage/DeploymentModes/Tabs/index.tsx @@ -23,19 +23,19 @@ const Tabs = ({ handleTabChange }) => ( > diff --git a/src/components/Homepage/DeploymentModes/index.tsx b/src/components/Homepage/DeploymentModes/index.tsx index 5ed3378f..4659bbed 100644 --- a/src/components/Homepage/DeploymentModes/index.tsx +++ b/src/components/Homepage/DeploymentModes/index.tsx @@ -1,25 +1,28 @@ import React from 'react'; import TabContext from '@mui/lab/TabContext'; -import clsx from 'clsx'; import { defaultWrapperGrey } from '../../../globalStyles/wrappers.module.less'; -import { grid, container, leftColumn, rightColumn } from './styles.module.less'; -import DiagramContainer from './DiagramContainer'; +import { DeploymentOption } from '../../../../shared'; +import { LinkFilled } from '../../../globalStyles'; +import { container, rightColumn } from './styles.module.less'; +import DeploymentDiagramContainer from './DeploymentDiagramContainer'; import TabPanels from './TabPanels'; import Tabs from './Tabs'; const DeploymentModes = () => { - const [selectedTab, setSelectedTab] = React.useState('1'); + const [selectedTab, setSelectedTab] = + React.useState('public'); - const handleTabChange = (event: React.SyntheticEvent, newValue: string) => { + const handleTabChange = ( + event: React.SyntheticEvent, + newValue: DeploymentOption + ) => { setSelectedTab(newValue); }; return (
    -
    -
    - -
    +
    +

    DEPLOYMENT MODES FOR EVERY ENVIRONMENT @@ -28,6 +31,9 @@ const DeploymentModes = () => { + + See Details +

    diff --git a/src/components/Homepage/DeploymentModes/styles.module.less b/src/components/Homepage/DeploymentModes/styles.module.less index 21df3c8e..f11b29ac 100644 --- a/src/components/Homepage/DeploymentModes/styles.module.less +++ b/src/components/Homepage/DeploymentModes/styles.module.less @@ -3,15 +3,12 @@ @primaryTagColor: #6ED5D6; @secondaryTagColor: #5072EB; -.grid { - display: grid; - grid-template-columns: 1fr 1fr; - align-items: center; -} - .container { .globalMaxWidth; + display: grid; + grid-template-columns: 1fr 1fr; + align-items: center; justify-content: space-between; gap: 60px; @@ -47,233 +44,12 @@ } } -.leftColumn { - justify-content: center; - gap: 20px; - position: relative; - max-width: 536px; - width: 100%; - margin: auto; - - div { - width: 100%; - } - - svg { - min-height: 30px; - } - - @media (max-width: 600px) { - svg { - max-width: 20px; - max-height: 20px; - } - } - - @media (max-width: 360px) { - gap: 10px; - } -} - .rightColumn { @media (max-width: 360px) { max-width: calc(100vw - 40px); } -} - -.solidBorderBox { - border: 1px solid #A4B6F4; - border-radius: 16px; - padding: 16px; - display: flex; - flex-direction: column; - align-items: center; - gap: 16px; - height: 100%; - - @media (max-width: 600px) { - gap: 10px; - padding: 10px; - } - - @media (max-width: 450px) { - gap: 6px; - padding: 6px; - } -} - -.relativePosition { - position: relative; -} - -.dashedBorderBox { - border: 1px dashed #A4B6F4B2; - border-radius: 12px; - padding: 16px; - background-color: #F5F7FF; - text-align: center; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - gap: 16px; - width: 100%; - height: 100%; - - @media (max-width: 600px) { - gap: 10px; - padding: 10px; - } - - @media (max-width: 450px) { - gap: 6px; - padding: 6px; - } - - span { - font-size: 0.75rem; - font-weight: 600; - line-height: 14.4px; - - @media (max-width: 600px) { - font-size: 0.6rem; - } - } -} - -.minHeight { - align-items: center; - justify-content: center; -} - -.middleTag { - position: absolute; - top: 46%; - left: -55%; - text-align: center; - display: flex; - align-items: center; - - span { - background-color: @primaryTagColor; - color: #FFFFFF; - font-size: 0.875rem; - font-weight: 700; - padding: 4px 12px; - white-space: nowrap; - min-width: 116px; - - @media (max-width: 600px) { - min-width: 70px; - font-size: 0.6rem; - padding: 2px 0; - } - } -} - -.tagArrow { - width: 0; - height: 0; - border-top: 14px solid transparent; - border-bottom: 14px solid transparent; - - @media (max-width: 600px) { - border-top: 9px solid transparent; - border-bottom: 9px solid transparent; - } -} - -.tagArrowLeft { - border-right: 14px solid @primaryTagColor; - - @media (max-width: 600px) { - border-right: 9px solid @primaryTagColor; - } -} - -.tagArrowRight { - border-left: 14px solid @primaryTagColor; - - @media (max-width: 600px) { - border-left: 9px solid @primaryTagColor; - } -} -.horizontalWrapper { - display: flex; - align-items: center; - justify-content: center; - gap: 16px; - - @media (max-width: 600px) { - gap: 10px; - } - - @media (max-width: 450px) { - gap: 6px; - } -} - -.secondLevelSolidBorderBox { - border-radius: 8px; - background-color: #FCFCFD; - - span { - font-weight: 500; - } -} - -.vpcMarginBottom { - margin-bottom: 54px; - - @media (max-width: 600px) { - margin-bottom: 40px; - } -} - -.privateDeploymentVpcBox { - margin-bottom: 26px; - - @media (max-width: 600px) { - margin-bottom: 25px; - } -} - -.privateDeploymentTag { - @media (max-width: 600px) { - span { - padding: 2px 0; - } - } -} - -.privateLinkTag { - top: 41%; - left: -2%; - - @media (max-width: 600px) { - top: 44.5%; - } -} - -.metadataOnlyDarkerBlueTag { - top: 85%; - - span { - background-color: @secondaryTagColor; - } - - .tagArrowLeft { - border-right-color: @secondaryTagColor; - } - - .tagArrowRight { - border-left-color: @secondaryTagColor; - } - - @media (max-width: 600px) { - span { - min-width: 80px; - } + a { + width: fit-content; } } diff --git a/src/components/PricingPage/SectionTwo/PlanCard/index.tsx b/src/components/PricingPage/ChooseYourPlan/PlanCard/index.tsx similarity index 100% rename from src/components/PricingPage/SectionTwo/PlanCard/index.tsx rename to src/components/PricingPage/ChooseYourPlan/PlanCard/index.tsx diff --git a/src/components/PricingPage/SectionTwo/PlanCard/styles.module.less b/src/components/PricingPage/ChooseYourPlan/PlanCard/styles.module.less similarity index 100% rename from src/components/PricingPage/SectionTwo/PlanCard/styles.module.less rename to src/components/PricingPage/ChooseYourPlan/PlanCard/styles.module.less diff --git a/src/components/PricingPage/SectionTwo/index.tsx b/src/components/PricingPage/ChooseYourPlan/index.tsx similarity index 95% rename from src/components/PricingPage/SectionTwo/index.tsx rename to src/components/PricingPage/ChooseYourPlan/index.tsx index 050f5a3b..8288e0d8 100644 --- a/src/components/PricingPage/SectionTwo/index.tsx +++ b/src/components/PricingPage/ChooseYourPlan/index.tsx @@ -10,7 +10,7 @@ const planCards = plans.map((plan, index) => ( )); -const SectionTwo = () => { +const ChooseYourPlan = () => { const isMobile = useMediaQuery('(max-width:1024px)'); return ( @@ -36,4 +36,4 @@ const SectionTwo = () => { ); }; -export default SectionTwo; +export default ChooseYourPlan; diff --git a/src/components/PricingPage/SectionTwo/styles.module.less b/src/components/PricingPage/ChooseYourPlan/styles.module.less similarity index 100% rename from src/components/PricingPage/SectionTwo/styles.module.less rename to src/components/PricingPage/ChooseYourPlan/styles.module.less diff --git a/src/components/PricingPage/SectionTwo/utils.tsx b/src/components/PricingPage/ChooseYourPlan/utils.tsx similarity index 100% rename from src/components/PricingPage/SectionTwo/utils.tsx rename to src/components/PricingPage/ChooseYourPlan/utils.tsx diff --git a/src/components/PricingPage/SectionFour/FaqAccordion/index.tsx b/src/components/PricingPage/Faq/FaqAccordion/index.tsx similarity index 100% rename from src/components/PricingPage/SectionFour/FaqAccordion/index.tsx rename to src/components/PricingPage/Faq/FaqAccordion/index.tsx diff --git a/src/components/PricingPage/SectionFour/FaqAccordion/styles.module.less b/src/components/PricingPage/Faq/FaqAccordion/styles.module.less similarity index 100% rename from src/components/PricingPage/SectionFour/FaqAccordion/styles.module.less rename to src/components/PricingPage/Faq/FaqAccordion/styles.module.less diff --git a/src/components/PricingPage/SectionFour/faqs.tsx b/src/components/PricingPage/Faq/faqs.tsx similarity index 100% rename from src/components/PricingPage/SectionFour/faqs.tsx rename to src/components/PricingPage/Faq/faqs.tsx diff --git a/src/components/PricingPage/SectionFour/index.tsx b/src/components/PricingPage/Faq/index.tsx similarity index 95% rename from src/components/PricingPage/SectionFour/index.tsx rename to src/components/PricingPage/Faq/index.tsx index d383090e..e55c5178 100644 --- a/src/components/PricingPage/SectionFour/index.tsx +++ b/src/components/PricingPage/Faq/index.tsx @@ -4,7 +4,7 @@ import { container, title, questionsList } from './styles.module.less'; import FaqAccordion from './FaqAccordion'; import { faqs } from './faqs'; -const SectionFour = () => { +const Faq = () => { const [expanded, setExpanded] = React.useState(null); const handleChange = @@ -35,4 +35,4 @@ const SectionFour = () => { ); }; -export default SectionFour; +export default Faq; diff --git a/src/components/PricingPage/SectionFour/styles.module.less b/src/components/PricingPage/Faq/styles.module.less similarity index 100% rename from src/components/PricingPage/SectionFour/styles.module.less rename to src/components/PricingPage/Faq/styles.module.less diff --git a/src/components/PricingPage/SectionOne/index.tsx b/src/components/PricingPage/Hero/index.tsx similarity index 95% rename from src/components/PricingPage/SectionOne/index.tsx rename to src/components/PricingPage/Hero/index.tsx index 442bad8e..d36cde0b 100644 --- a/src/components/PricingPage/SectionOne/index.tsx +++ b/src/components/PricingPage/Hero/index.tsx @@ -17,7 +17,7 @@ import { buttonsContainer, } from './styles.module.less'; -const SectionOne = () => { +const Hero = () => { return (
    @@ -50,7 +50,7 @@ const SectionOne = () => { src="../../../images/pricing/illustration.png" alt="It was just one insert though." quality={100} - placeholder="none" + placeholder="blurred" loading="eager" />
    @@ -59,4 +59,4 @@ const SectionOne = () => { ); }; -export default SectionOne; +export default Hero; diff --git a/src/components/PricingPage/SectionOne/styles.module.less b/src/components/PricingPage/Hero/styles.module.less similarity index 100% rename from src/components/PricingPage/SectionOne/styles.module.less rename to src/components/PricingPage/Hero/styles.module.less diff --git a/src/components/PricingPage/SectionThree/index.tsx b/src/components/PricingPage/PricingCalculatorSection/index.tsx similarity index 95% rename from src/components/PricingPage/SectionThree/index.tsx rename to src/components/PricingPage/PricingCalculatorSection/index.tsx index 2d18a925..b1ec8d4e 100644 --- a/src/components/PricingPage/SectionThree/index.tsx +++ b/src/components/PricingPage/PricingCalculatorSection/index.tsx @@ -13,7 +13,7 @@ import { jumpLinkOffset, } from './styles.module.less'; -const SectionThree = () => { +const PricingCalculatorSection = () => { const hasWindow = useWindowExistence(); return ( @@ -47,4 +47,4 @@ const SectionThree = () => { ); }; -export default SectionThree; +export default PricingCalculatorSection; diff --git a/src/components/PricingPage/SectionThree/styles.module.less b/src/components/PricingPage/PricingCalculatorSection/styles.module.less similarity index 100% rename from src/components/PricingPage/SectionThree/styles.module.less rename to src/components/PricingPage/PricingCalculatorSection/styles.module.less diff --git a/src/components/PricingPage/index.tsx b/src/components/PricingPage/index.tsx deleted file mode 100644 index 512441ff..00000000 --- a/src/components/PricingPage/index.tsx +++ /dev/null @@ -1,6 +0,0 @@ -import SectionOne from './SectionOne'; -import SectionTwo from './SectionTwo'; -import SectionThree from './SectionThree'; -import SectionFour from './SectionFour'; - -export { SectionOne, SectionTwo, SectionThree, SectionFour }; diff --git a/src/components/Product/SectionSix/index.tsx b/src/components/ProductPage/ConfigureOrCode/index.tsx similarity index 95% rename from src/components/Product/SectionSix/index.tsx rename to src/components/ProductPage/ConfigureOrCode/index.tsx index 8a81b9f8..170ecd7f 100644 --- a/src/components/Product/SectionSix/index.tsx +++ b/src/components/ProductPage/ConfigureOrCode/index.tsx @@ -6,7 +6,7 @@ import { DefaultWrapperDark } from '../../../styles/wrappers'; import Advantages from '../../Advantages'; import { sectionSixAdvantages } from '../advantages'; -const SectionSix = () => { +const ConfigureOrCode = () => { return ( { ); }; -export default SectionSix; +export default ConfigureOrCode; diff --git a/src/components/Product/SectionFour/Step/index.tsx b/src/components/ProductPage/CreateADataPipelineInMinutes/Step/index.tsx similarity index 100% rename from src/components/Product/SectionFour/Step/index.tsx rename to src/components/ProductPage/CreateADataPipelineInMinutes/Step/index.tsx diff --git a/src/components/Product/SectionFour/Step/styles.ts b/src/components/ProductPage/CreateADataPipelineInMinutes/Step/styles.ts similarity index 100% rename from src/components/Product/SectionFour/Step/styles.ts rename to src/components/ProductPage/CreateADataPipelineInMinutes/Step/styles.ts diff --git a/src/components/Product/SectionFour/index.tsx b/src/components/ProductPage/CreateADataPipelineInMinutes/index.tsx similarity index 96% rename from src/components/Product/SectionFour/index.tsx rename to src/components/ProductPage/CreateADataPipelineInMinutes/index.tsx index b6232f41..9951be4f 100644 --- a/src/components/Product/SectionFour/index.tsx +++ b/src/components/ProductPage/CreateADataPipelineInMinutes/index.tsx @@ -14,7 +14,7 @@ import { VideoWrapper, } from './styles'; -const SectionFour = () => { +const CreateADataPipelineInMinutes = () => { return ( @@ -71,4 +71,4 @@ const SectionFour = () => { ); }; -export default SectionFour; +export default CreateADataPipelineInMinutes; diff --git a/src/components/Product/SectionFour/styles.ts b/src/components/ProductPage/CreateADataPipelineInMinutes/styles.ts similarity index 100% rename from src/components/Product/SectionFour/styles.ts rename to src/components/ProductPage/CreateADataPipelineInMinutes/styles.ts diff --git a/src/components/Product/SectionNine/index.tsx b/src/components/ProductPage/DeliverRealTimeData/index.tsx similarity index 98% rename from src/components/Product/SectionNine/index.tsx rename to src/components/ProductPage/DeliverRealTimeData/index.tsx index 85461574..9451c460 100644 --- a/src/components/Product/SectionNine/index.tsx +++ b/src/components/ProductPage/DeliverRealTimeData/index.tsx @@ -17,7 +17,7 @@ import { TextWrapper, } from './styles'; -const SectionNine = () => { +const DeliverRealTimeData = () => { return ( { ); }; -export default SectionNine; +export default DeliverRealTimeData; diff --git a/src/components/Product/SectionNine/styles.ts b/src/components/ProductPage/DeliverRealTimeData/styles.ts similarity index 100% rename from src/components/Product/SectionNine/styles.ts rename to src/components/ProductPage/DeliverRealTimeData/styles.ts diff --git a/src/components/Product/SectionThirteen/index.tsx b/src/components/ProductPage/DontMissAThing/index.tsx similarity index 96% rename from src/components/Product/SectionThirteen/index.tsx rename to src/components/ProductPage/DontMissAThing/index.tsx index 4592ce03..320f41f5 100644 --- a/src/components/Product/SectionThirteen/index.tsx +++ b/src/components/ProductPage/DontMissAThing/index.tsx @@ -13,7 +13,7 @@ import { Title, } from './styles'; -const SectionThirteen = () => { +const DontMissAThing = () => { return ( @@ -50,4 +50,4 @@ const SectionThirteen = () => { ); }; -export default SectionThirteen; +export default DontMissAThing; diff --git a/src/components/Product/SectionThirteen/styles.ts b/src/components/ProductPage/DontMissAThing/styles.ts similarity index 100% rename from src/components/Product/SectionThirteen/styles.ts rename to src/components/ProductPage/DontMissAThing/styles.ts diff --git a/src/components/Product/SectionOne/Card/index.tsx b/src/components/ProductPage/Hero/Card/index.tsx similarity index 100% rename from src/components/Product/SectionOne/Card/index.tsx rename to src/components/ProductPage/Hero/Card/index.tsx diff --git a/src/components/Product/SectionOne/Card/styles.ts b/src/components/ProductPage/Hero/Card/styles.ts similarity index 100% rename from src/components/Product/SectionOne/Card/styles.ts rename to src/components/ProductPage/Hero/Card/styles.ts diff --git a/src/components/Product/SectionOne/index.tsx b/src/components/ProductPage/Hero/index.tsx similarity index 98% rename from src/components/Product/SectionOne/index.tsx rename to src/components/ProductPage/Hero/index.tsx index 2f6997ac..35f0bab5 100644 --- a/src/components/Product/SectionOne/index.tsx +++ b/src/components/ProductPage/Hero/index.tsx @@ -23,7 +23,7 @@ import { Title, } from './styles'; -const SectionOne = () => { +const Hero = () => { return ( @@ -97,4 +97,4 @@ const SectionOne = () => { ); }; -export default SectionOne; +export default Hero; diff --git a/src/components/Product/SectionOne/styles.ts b/src/components/ProductPage/Hero/styles.ts similarity index 100% rename from src/components/Product/SectionOne/styles.ts rename to src/components/ProductPage/Hero/styles.ts diff --git a/src/components/Product/SectionTwelve/index.tsx b/src/components/ProductPage/HowEstuaryFlowCompares/index.tsx similarity index 92% rename from src/components/Product/SectionTwelve/index.tsx rename to src/components/ProductPage/HowEstuaryFlowCompares/index.tsx index 4755d3fc..8b8c0790 100644 --- a/src/components/Product/SectionTwelve/index.tsx +++ b/src/components/ProductPage/HowEstuaryFlowCompares/index.tsx @@ -5,7 +5,7 @@ import { DefaultWrapperDark } from '../../../styles/wrappers'; import PipelinesTable from '../../PipelinesTable'; import { Container, TableTitle, TableWrapper, Title } from './styles'; -const SectionTwelve = () => { +const HowEstuaryFlowCompares = () => { return ( @@ -28,4 +28,4 @@ const SectionTwelve = () => { ); }; -export default SectionTwelve; +export default HowEstuaryFlowCompares; diff --git a/src/components/Product/SectionTwelve/styles.ts b/src/components/ProductPage/HowEstuaryFlowCompares/styles.ts similarity index 100% rename from src/components/Product/SectionTwelve/styles.ts rename to src/components/ProductPage/HowEstuaryFlowCompares/styles.ts diff --git a/src/components/Product/SectionTwo/Hover/index.tsx b/src/components/ProductPage/HowItWorks/Hover/index.tsx similarity index 100% rename from src/components/Product/SectionTwo/Hover/index.tsx rename to src/components/ProductPage/HowItWorks/Hover/index.tsx diff --git a/src/components/Product/SectionTwo/Hover/styles.ts b/src/components/ProductPage/HowItWorks/Hover/styles.ts similarity index 100% rename from src/components/Product/SectionTwo/Hover/styles.ts rename to src/components/ProductPage/HowItWorks/Hover/styles.ts diff --git a/src/components/Product/SectionTwo/index.tsx b/src/components/ProductPage/HowItWorks/index.tsx similarity index 99% rename from src/components/Product/SectionTwo/index.tsx rename to src/components/ProductPage/HowItWorks/index.tsx index 78519d90..5dd2f6ad 100644 --- a/src/components/Product/SectionTwo/index.tsx +++ b/src/components/ProductPage/HowItWorks/index.tsx @@ -15,7 +15,7 @@ import { Title, } from './styles'; -const SectionTwo = () => { +const HowItWorks = () => { return ( @@ -165,4 +165,4 @@ const SectionTwo = () => { ); }; -export default SectionTwo; +export default HowItWorks; diff --git a/src/components/Product/SectionTwo/styles.ts b/src/components/ProductPage/HowItWorks/styles.ts similarity index 100% rename from src/components/Product/SectionTwo/styles.ts rename to src/components/ProductPage/HowItWorks/styles.ts diff --git a/src/components/Product/SectionEight/index.tsx b/src/components/ProductPage/IncreaseProductivity/index.tsx similarity index 97% rename from src/components/Product/SectionEight/index.tsx rename to src/components/ProductPage/IncreaseProductivity/index.tsx index a8c93e3f..be0974b0 100644 --- a/src/components/Product/SectionEight/index.tsx +++ b/src/components/ProductPage/IncreaseProductivity/index.tsx @@ -11,7 +11,7 @@ import { TopCaseStudy, } from './styles'; -const SectionEight = () => { +const IncreaseProductivity = () => { return ( { ); }; -export default SectionEight; +export default IncreaseProductivity; diff --git a/src/components/Product/SectionEight/styles.ts b/src/components/ProductPage/IncreaseProductivity/styles.ts similarity index 100% rename from src/components/Product/SectionEight/styles.ts rename to src/components/ProductPage/IncreaseProductivity/styles.ts diff --git a/src/components/Product/SectionThree/KeyFeature/index.tsx b/src/components/ProductPage/KeyFeatures/KeyFeature/index.tsx similarity index 100% rename from src/components/Product/SectionThree/KeyFeature/index.tsx rename to src/components/ProductPage/KeyFeatures/KeyFeature/index.tsx diff --git a/src/components/Product/SectionThree/KeyFeature/styles.ts b/src/components/ProductPage/KeyFeatures/KeyFeature/styles.ts similarity index 100% rename from src/components/Product/SectionThree/KeyFeature/styles.ts rename to src/components/ProductPage/KeyFeatures/KeyFeature/styles.ts diff --git a/src/components/Product/SectionThree/KeyFeatureContent/index.tsx b/src/components/ProductPage/KeyFeatures/KeyFeatureContent/index.tsx similarity index 100% rename from src/components/Product/SectionThree/KeyFeatureContent/index.tsx rename to src/components/ProductPage/KeyFeatures/KeyFeatureContent/index.tsx diff --git a/src/components/Product/SectionThree/KeyFeatureContent/styles.ts b/src/components/ProductPage/KeyFeatures/KeyFeatureContent/styles.ts similarity index 100% rename from src/components/Product/SectionThree/KeyFeatureContent/styles.ts rename to src/components/ProductPage/KeyFeatures/KeyFeatureContent/styles.ts diff --git a/src/components/Product/SectionThree/features.tsx b/src/components/ProductPage/KeyFeatures/features.tsx similarity index 100% rename from src/components/Product/SectionThree/features.tsx rename to src/components/ProductPage/KeyFeatures/features.tsx diff --git a/src/components/Product/SectionThree/index.tsx b/src/components/ProductPage/KeyFeatures/index.tsx similarity index 99% rename from src/components/Product/SectionThree/index.tsx rename to src/components/ProductPage/KeyFeatures/index.tsx index 89ac3115..9cfbf6ce 100644 --- a/src/components/Product/SectionThree/index.tsx +++ b/src/components/ProductPage/KeyFeatures/index.tsx @@ -35,7 +35,7 @@ const tooltipRightProps: Omit = { placement: 'right', }; -const SectionThree = () => { +const KeyFeatures = () => { const isDesktop = useMediaQuery('(min-width:811px)'); const leftFeatures = useMemo( @@ -199,4 +199,4 @@ const SectionThree = () => { ); }; -export default SectionThree; +export default KeyFeatures; diff --git a/src/components/Product/SectionThree/styles.ts b/src/components/ProductPage/KeyFeatures/styles.ts similarity index 100% rename from src/components/Product/SectionThree/styles.ts rename to src/components/ProductPage/KeyFeatures/styles.ts diff --git a/src/components/Product/SectionSeven/index.tsx b/src/components/ProductPage/ModernDataops/index.tsx similarity index 96% rename from src/components/Product/SectionSeven/index.tsx rename to src/components/ProductPage/ModernDataops/index.tsx index f2e1d689..fd41b2dd 100644 --- a/src/components/Product/SectionSeven/index.tsx +++ b/src/components/ProductPage/ModernDataops/index.tsx @@ -6,7 +6,7 @@ import Advantages from '../../Advantages'; import { sectionSevenAdvantages } from '../advantages'; import { docsPageUrl } from '../../../../shared'; -const SectionSeven = () => { +const ModernDataops = () => { return ( { ); }; -export default SectionSeven; +export default ModernDataops; diff --git a/src/components/Product/SectionFourteen/index.tsx b/src/components/ProductPage/ReadyToStart/index.tsx similarity index 97% rename from src/components/Product/SectionFourteen/index.tsx rename to src/components/ProductPage/ReadyToStart/index.tsx index bf4aa89d..6352121d 100644 --- a/src/components/Product/SectionFourteen/index.tsx +++ b/src/components/ProductPage/ReadyToStart/index.tsx @@ -21,7 +21,7 @@ import { Title, } from './styles'; -const SectionFourteen = () => { +const ReadyToStart = () => { return ( @@ -75,4 +75,4 @@ const SectionFourteen = () => { ); }; -export default SectionFourteen; +export default ReadyToStart; diff --git a/src/components/Product/SectionFourteen/styles.ts b/src/components/ProductPage/ReadyToStart/styles.ts similarity index 100% rename from src/components/Product/SectionFourteen/styles.ts rename to src/components/ProductPage/ReadyToStart/styles.ts diff --git a/src/components/Product/SectionTen/index.tsx b/src/components/ProductPage/SecurityCertificatesSection/index.tsx similarity index 75% rename from src/components/Product/SectionTen/index.tsx rename to src/components/ProductPage/SecurityCertificatesSection/index.tsx index 8fa6c005..a6f4ec91 100644 --- a/src/components/Product/SectionTen/index.tsx +++ b/src/components/ProductPage/SecurityCertificatesSection/index.tsx @@ -2,7 +2,7 @@ import React from 'react'; import { DefaultWrapperDark } from '../../../styles/wrappers'; import SecurityCertificates from '../../SecuriityCertificates'; -const SectionTen = () => { +const SecurityCertificatesSection = () => { return ( @@ -10,4 +10,4 @@ const SectionTen = () => { ); }; -export default SectionTen; +export default SecurityCertificatesSection; diff --git a/src/components/Product/SectionEleven/index.tsx b/src/components/ProductPage/Streaming/index.tsx similarity index 98% rename from src/components/Product/SectionEleven/index.tsx rename to src/components/ProductPage/Streaming/index.tsx index 9d324b25..46b4642f 100644 --- a/src/components/Product/SectionEleven/index.tsx +++ b/src/components/ProductPage/Streaming/index.tsx @@ -24,7 +24,7 @@ import { Title, } from './styles'; -const SectionEleven = () => { +const Streaming = () => { return ( @@ -126,4 +126,4 @@ const SectionEleven = () => { ); }; -export default SectionEleven; +export default Streaming; diff --git a/src/components/Product/SectionEleven/styles.ts b/src/components/ProductPage/Streaming/styles.ts similarity index 100% rename from src/components/Product/SectionEleven/styles.ts rename to src/components/ProductPage/Streaming/styles.ts diff --git a/src/components/Product/SectionFive/LogoAndPath/index.tsx b/src/components/ProductPage/TheSameData/LogoAndPath/index.tsx similarity index 100% rename from src/components/Product/SectionFive/LogoAndPath/index.tsx rename to src/components/ProductPage/TheSameData/LogoAndPath/index.tsx diff --git a/src/components/Product/SectionFive/LogoAndPath/styles.ts b/src/components/ProductPage/TheSameData/LogoAndPath/styles.ts similarity index 100% rename from src/components/Product/SectionFive/LogoAndPath/styles.ts rename to src/components/ProductPage/TheSameData/LogoAndPath/styles.ts diff --git a/src/components/Product/SectionFive/index.tsx b/src/components/ProductPage/TheSameData/index.tsx similarity index 99% rename from src/components/Product/SectionFive/index.tsx rename to src/components/ProductPage/TheSameData/index.tsx index e27b5093..38be305c 100644 --- a/src/components/Product/SectionFive/index.tsx +++ b/src/components/ProductPage/TheSameData/index.tsx @@ -27,7 +27,7 @@ import { Title, } from './styles'; -const SectionFive = () => { +const TheSameData = () => { return ( @@ -189,4 +189,4 @@ const SectionFive = () => { ); }; -export default SectionFive; +export default TheSameData; diff --git a/src/components/Product/SectionFive/styles.ts b/src/components/ProductPage/TheSameData/styles.ts similarity index 100% rename from src/components/Product/SectionFive/styles.ts rename to src/components/ProductPage/TheSameData/styles.ts diff --git a/src/components/Product/advantages.tsx b/src/components/ProductPage/advantages.tsx similarity index 92% rename from src/components/Product/advantages.tsx rename to src/components/ProductPage/advantages.tsx index 4a5e94c4..20421223 100644 --- a/src/components/Product/advantages.tsx +++ b/src/components/ProductPage/advantages.tsx @@ -117,18 +117,3 @@ export const sectionNineAdvantages = [ title: 'Use built-in monitoring and alerting, and active-active load balancing and failover.', }, ]; - -export const sectionTenAdvantages = [ - { - id: 14, - title: 'Estuary never stores your data.', - }, - { - id: 15, - title: 'GDPR, CCPA and CPRA compliant.', - }, - { - id: 16, - title: 'SOC 2 Type II certified.', - }, -]; diff --git a/src/components/SecuriityCertificates/index.tsx b/src/components/SecuriityCertificates/index.tsx index 97997cff..767cc227 100644 --- a/src/components/SecuriityCertificates/index.tsx +++ b/src/components/SecuriityCertificates/index.tsx @@ -1,7 +1,6 @@ import React from 'react'; import { StaticImage } from 'gatsby-plugin-image'; import Advantages from '../Advantages'; -import { sectionTenAdvantages } from '../Product/advantages'; interface SecurityCertificatesProps { isDarkTheme?: boolean; @@ -31,7 +30,20 @@ const SecurityCertificates = ({ isDarkTheme }: SecurityCertificatesProps) => { quality={100} /> } - advantages={sectionTenAdvantages} + advantages={[ + { + id: 14, + title: 'Estuary never stores your data.', + }, + { + id: 15, + title: 'GDPR, CCPA and CPRA compliant.', + }, + { + id: 16, + title: 'SOC 2 Type II certified.', + }, + ]} isDarkTheme={isDarkTheme} /> ); diff --git a/src/components/EtlToolsXvsYPage/SectionTwo/TitledTableCell/index.tsx b/src/components/Table/TitledTableCell/index.tsx similarity index 70% rename from src/components/EtlToolsXvsYPage/SectionTwo/TitledTableCell/index.tsx rename to src/components/Table/TitledTableCell/index.tsx index 11af12ff..1cba28ea 100644 --- a/src/components/EtlToolsXvsYPage/SectionTwo/TitledTableCell/index.tsx +++ b/src/components/Table/TitledTableCell/index.tsx @@ -1,5 +1,4 @@ import React, { ReactNode } from 'react'; -import { vendorNameMobile } from '../styles.module.less'; interface TitledTableCellProps { title: string; @@ -9,7 +8,7 @@ interface TitledTableCellProps { const TitledTableCell = ({ title, children }: TitledTableCellProps) => { return (
    ); diff --git a/src/components/Table/index.tsx b/src/components/Table/index.tsx new file mode 100644 index 00000000..918fdf7d --- /dev/null +++ b/src/components/Table/index.tsx @@ -0,0 +1,37 @@ +import React from 'react'; +import TitledTableCell from './TitledTableCell'; +import { table } from './styles.module.less'; + +const Table = ({ headers, data }) => { + return ( +
    - {title} + {title} {children}
    + + + {headers.map((header, index) => ( + + ))} + + + + {data.map((row, rowIndex) => ( + + {row.map((cell, cellIndex) => + cellIndex === 0 ? ( + + ) : ( + + {cell} + + ) + )} + + ))} + +
    {header}
    {cell}
    + ); +}; + +export default Table; diff --git a/src/components/Table/styles.module.less b/src/components/Table/styles.module.less new file mode 100644 index 00000000..5bf86040 --- /dev/null +++ b/src/components/Table/styles.module.less @@ -0,0 +1,173 @@ +.table { + border: none; + font-size: 1rem; + border-collapse: separate; + border-spacing: 0; + color: #47506D; + border-bottom: 1px solid #EEF1FD; + border-bottom-left-radius: 32px; + border-bottom-right-radius: 32px; + margin: 0; + + thead th:nth-child(2) div:first-of-type { + border-bottom-left-radius: 16px; + } + + thead th:last-of-type div:first-of-type { + border-bottom-right-radius: 16px; + } + + th { + background-color: #EEF1FD; + color: #04192B; + font-size: 1.25rem; + font-weight: 600; + padding: 24px; + border: none; + } + + tr { + td:first-of-type { + padding-left: 48px; + padding-right: 12px; + } + + td:last-of-type { + padding-left: 12px; + padding-right: 48px; + } + } + + tr:first-of-type { + th:first-of-type { + border-top-left-radius: 32px; + padding-left: 48px; + } + + th:last-of-type { + border-top-right-radius: 32px; + padding-right: 48px; + } + + th:not(:first-of-type) { + text-align: center; + } + } + + tr:last-of-type td:first-of-type { + border-bottom-left-radius: 32px; + } + + tr:last-of-type td:last-of-type { + border-bottom-right-radius: 32px; + } + + td { + background-color: #fff; + border: none; + border-top: 1px dashed #DCE3FB; + padding: 12px; + text-align: center; + + p { + margin: 0; + font-size: 1rem; + line-height: 30px; + } + } + + td:not(:first-child) { + border-left: none; + } + + td:not(:last-child) { + border-right: none; + } + + td:first-of-type { + width: 340px; + padding: 29px 0; + border-left: 1px solid #EEF1FD; + font-weight: 600; + text-align: left; + } + + td:last-of-type { + border-right: 1px solid #EEF1FD; + } + + @media (max-width: 768px) { + table { + border-radius: 32px; + } + + thead { + display: none; + } + + th { + text-align: center; + } + + tr { + display: flex; + flex-direction: column; + border-left: 1px solid #EEF1FD; + border-right: 1px solid #EEF1FD; + } + + tr:first-of-type { + border-top-left-radius: 32px; + border-top-right-radius: 32px; + + td:first-of-type { + border-top: 1px solid #EEF1FD; + border-top-left-radius: 32px; + border-top-right-radius: 32px; + } + } + + td:first-of-type { + width: 100%; + text-align: center; + border-left: none; + background-color: #F6F8FE; + } + + tr td:last-of-type { + border-right: none; + } + + tr:last-of-type td:first-of-type { + border-bottom-left-radius: 0; + } + + tr:last-of-type, + tr:last-of-type td:last-of-type { + border-bottom-left-radius: 32px; + border-bottom-right-radius: 32px; + } + + tr { + td:first-of-type { + padding: 12px; + } + + td:last-of-type { + padding: 12px; + } + } + + strong { + display: block; + margin-bottom: 8px; + font-size: 1rem; + } + } + + @media (min-width: 769px) { + td:not(:first-child) strong { + display: none; + } + } +} \ No newline at end of file diff --git a/src/images/deployment-options-page/deployment-options-meta-image.png b/src/images/deployment-options-page/deployment-options-meta-image.png new file mode 100644 index 00000000..df706a35 Binary files /dev/null and b/src/images/deployment-options-page/deployment-options-meta-image.png differ diff --git a/src/images/deployment-options-page/deployment-options-page-hero-background-image.png b/src/images/deployment-options-page/deployment-options-page-hero-background-image.png new file mode 100644 index 00000000..783da64d Binary files /dev/null and b/src/images/deployment-options-page/deployment-options-page-hero-background-image.png differ diff --git a/src/pages/contact-us.tsx b/src/pages/contact-us.tsx index 8b0c5611..a8213d6a 100644 --- a/src/pages/contact-us.tsx +++ b/src/pages/contact-us.tsx @@ -1,14 +1,16 @@ import * as React from 'react'; -import { SectionOne, SectionTwo, SectionThree } from '../components/ContactUs'; import Layout from '../components/Layout'; import Seo from '../components/seo'; +import FormSection from '../components/ContactUsPage/FormSection'; +import Address from '../components/ContactUsPage/Address'; +import GetEmail from '../components/ContactUsPage/GetEmail'; const ContactUsPage = () => { return ( - - - + +
    + ); }; diff --git a/src/pages/deployment-options/index.tsx b/src/pages/deployment-options/index.tsx new file mode 100644 index 00000000..5099151c --- /dev/null +++ b/src/pages/deployment-options/index.tsx @@ -0,0 +1,47 @@ +import * as React from 'react'; +import { graphql, useStaticQuery } from 'gatsby'; +import Layout from '../../components/Layout'; +import Seo from '../../components/seo'; +import Hero from '../../components/DeploymentOptionsPage/Hero'; +import PublicDeployment from '../../components/DeploymentOptionsPage/PublicDeployment'; +import PrivateDeployment from '../../components/DeploymentOptionsPage/PrivateDeployment'; +import ByocDeployment from '../../components/DeploymentOptionsPage/ByocDeployment'; +import ComparisonTable from '../../components/DeploymentOptionsPage/ComparisonTable'; + +const DeploymentOptions = () => { + return ( + + + + + + + + ); +}; + +export const Head = () => { + const { metaImg } = useStaticQuery(graphql` + query { + metaImg: file( + relativePath: { + eq: "deployment-options-page/deployment-options-meta-image.png" + } + ) { + childImageSharp { + gatsbyImageData(layout: FIXED, width: 536) + } + } + } + `); + + return ( + + ); +}; + +export default DeploymentOptions; diff --git a/src/pages/pricing.tsx b/src/pages/pricing.tsx index f8f90a98..767150a7 100644 --- a/src/pages/pricing.tsx +++ b/src/pages/pricing.tsx @@ -2,20 +2,18 @@ import React from 'react'; import { graphql, useStaticQuery } from 'gatsby'; import Layout from '../components/Layout'; import Seo from '../components/seo'; -import { - SectionOne, - SectionTwo, - SectionThree, - SectionFour, -} from '../components/PricingPage'; +import PricingCalculatorSection from '../components/PricingPage/PricingCalculatorSection'; +import Hero from '../components/PricingPage/Hero'; +import ChooseYourPlan from '../components/PricingPage/ChooseYourPlan'; +import Faq from '../components/PricingPage/Faq'; const PricingPage = () => { return ( - - - - + + + + ); }; diff --git a/src/pages/product.tsx b/src/pages/product.tsx index 3b55d117..f337cfcb 100644 --- a/src/pages/product.tsx +++ b/src/pages/product.tsx @@ -3,21 +3,21 @@ import React from 'react'; import { graphql, useStaticQuery } from 'gatsby'; import Seo from '../components/seo'; -import SectionEight from '../components/Product/SectionEight'; -import SectionEleven from '../components/Product/SectionEleven'; -import SectionFive from '../components/Product/SectionFive'; -import SectionFour from '../components/Product/SectionFour'; -import SectionFourteen from '../components/Product/SectionFourteen'; -import SectionNine from '../components/Product/SectionNine'; -import SectionOne from '../components/Product/SectionOne'; -import SectionSeven from '../components/Product/SectionSeven'; -import SectionSix from '../components/Product/SectionSix'; -import SectionTen from '../components/Product/SectionTen'; -import SectionThirteen from '../components/Product/SectionThirteen'; -import SectionThree from '../components/Product/SectionThree'; -import SectionTwelve from '../components/Product/SectionTwelve'; -import SectionTwo from '../components/Product/SectionTwo'; import Layout from '../components/Layout'; +import Hero from '../components/ProductPage/Hero'; +import HowItWorks from '../components/ProductPage/HowItWorks'; +import KeyFeatures from '../components/ProductPage/KeyFeatures'; +import ConfigureOrCode from '../components/ProductPage/ConfigureOrCode'; +import ModernDataops from '../components/ProductPage/ModernDataops'; +import CreateADataPipelineInMinutes from '../components/ProductPage/CreateADataPipelineInMinutes'; +import TheSameData from '../components/ProductPage/TheSameData'; +import IncreaseProductivity from '../components/ProductPage/IncreaseProductivity'; +import DeliverRealTimeData from '../components/ProductPage/DeliverRealTimeData'; +import Streaming from '../components/ProductPage/Streaming'; +import HowEstuaryFlowCompares from '../components/ProductPage/HowEstuaryFlowCompares'; +import DontMissAThing from '../components/ProductPage/DontMissAThing'; +import SecurityCertificatesSection from '../components/ProductPage/SecurityCertificatesSection'; +import ReadyToStart from '../components/ProductPage/ReadyToStart'; const Product = () => { return ( @@ -27,20 +27,20 @@ const Product = () => { itemScope itemType="http://schema.org/Article" > - - - - - - - - - - - - - - + + + + + + + + + + + + + + ); diff --git a/src/svgs/private-deployments-icon.svg b/src/svgs/private-deployments-icon.svg new file mode 100644 index 00000000..373b3af2 --- /dev/null +++ b/src/svgs/private-deployments-icon.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/svgs/public-deployments-icon.svg b/src/svgs/public-deployments-icon.svg new file mode 100644 index 00000000..3343ba1d --- /dev/null +++ b/src/svgs/public-deployments-icon.svg @@ -0,0 +1,4 @@ + + + +