Skip to content

Commit

Permalink
Create deployment options page (#543)
Browse files Browse the repository at this point in the history
* Add section one

* Add title and meta description of the page

* Update the hero image alt text

* Add the three deployment option sections

* Replace the selectedTab prop name with deploymentOption names for a better semantic

* Add some tweaks

* Make the headings dynamic

* Replace the names of the section components to more semantic ones

* Add comparison table section

* Make deployment option sections responsible for mobile screen width

* Make hero section responsible for mobile screen width

* Replace the hero image with HTML+CSS

* Add missing icons to the hero image

* Fix the section component names from the home, product, and pricing pages

* Add deployment options menu item below product link button and refactor part of the menu code

* Create a container component and add it to deployment options page

* Fix DeploymentOption typing

---------

Co-authored-by: Breno <[email protected]>
  • Loading branch information
Brenosalv and Breno authored Oct 25, 2024
1 parent edef63f commit f531fd0
Show file tree
Hide file tree
Showing 104 changed files with 1,387 additions and 619 deletions.
1 change: 1 addition & 0 deletions gatsby-config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -238,6 +238,7 @@ const cfg: GatsbyConfig = {
`500`,
`600`,
`700`,
`900`,
],
},
],
Expand Down
4 changes: 4 additions & 0 deletions shared.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { features } from './src/components/DeploymentOptionsPage/shared';

export const webinarsUrl =
'https://try.estuary.dev/webinar-estuary101-ondemand';

Expand Down Expand Up @@ -144,3 +146,5 @@ export interface Vendor {
};
};
}

export type DeploymentOption = keyof typeof features;
5 changes: 0 additions & 5 deletions src/components/ContactUs/index.tsx

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import {
address,
} from './styles.module.less';

const SectionTwo = () => {
const Address = () => {
const {
streetAddress,
addressLocality,
Expand Down Expand Up @@ -39,4 +39,4 @@ const SectionTwo = () => {
);
};

export default SectionTwo;
export default Address;
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {
redirectLink,
} from './styles.module.less';

const SectionOne = () => {
const FormSection = () => {
return (
<section className={section}>
<ContactUsForm titleHeadingLevel="h1" />
Expand All @@ -26,4 +26,4 @@ const SectionOne = () => {
);
};

export default SectionOne;
export default FormSection;
Original file line number Diff line number Diff line change
Expand Up @@ -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 (
<section className={defaultWrapperDark}>
<div className={container}>
Expand All @@ -21,4 +21,4 @@ const SectionThree = () => {
);
};

export default SectionThree;
export default GetEmail;
21 changes: 21 additions & 0 deletions src/components/Container/index.tsx
Original file line number Diff line number Diff line change
@@ -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 (
<div
className={clsx(container, className, isVertical ? vertical : null)}
>
{children}
</div>
);
};

export default Container;
39 changes: 39 additions & 0 deletions src/components/Container/styles.module.less
Original file line number Diff line number Diff line change
@@ -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%;
}
}
Original file line number Diff line number Diff line change
@@ -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 (
<div className={wrapper}>
<h3>{title}</h3>
<TitleHeadingLevel>{title}</TitleHeadingLevel>
<p>{description}</p>
<h4>Key Features:</h4>
<KeyFeaturesTitleHeadingLevel>
Key Features:
</KeyFeaturesTitleHeadingLevel>
<ul>
{keyFeatures.map((keyFeature, index) => (
<KeyFeature key={index} title={keyFeature} />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
@@ -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,
Expand All @@ -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 (
<>
<div className={container}>
<div className={solidBorderBox}>
<div className={dashedBorderBox}>
<CloudProviderIcon width={iconSize} />
Expand All @@ -53,7 +54,7 @@ const DeploymentOptionDiagram = ({
<ControlPlaneIcon width={iconSize} />
<span>Control Plane</span>
</div>
{selectedTab === '1' ? (
{deploymentOption === 'public' ? (
<div className={horizontalWrapper}>
<div
className={clsx(
Expand Down Expand Up @@ -81,12 +82,12 @@ const DeploymentOptionDiagram = ({
<div className={dashedBorderBox}>
<CustomerCloudIcon width={iconSize} />
<span>
{selectedTab === '1'
{deploymentOption === 'public'
? 'Customer Cloud'
: 'Customer Cloud & Region'}
</span>
<div className={horizontalWrapper}>
{selectedTab === '2' ? (
{deploymentOption === 'private' ? (
<div
className={clsx(
solidBorderBox,
Expand Down Expand Up @@ -117,13 +118,15 @@ const DeploymentOptionDiagram = ({
<VpcIcon width={iconSize} />
<span
className={
selectedTab === '2' ? vpcMarginBottom : null
deploymentOption === 'private'
? vpcMarginBottom
: null
}
>
Customer VPC
</span>
<div className={horizontalWrapper}>
{selectedTab === '3' ? (
{deploymentOption === 'byoc' ? (
<div className={dashedBorderBox}>
<PrivateDataPlaneIcon
width={iconSize}
Expand All @@ -148,23 +151,18 @@ const DeploymentOptionDiagram = ({
</div>
</div>
</div>
{['1', '3'].includes(selectedTab) ? (
<div
className={clsx(
middleTag,
selectedTab === '3'
? metadataOnlyLighterBlueTag
: null
)}
>
{['public', 'byoc'].includes(deploymentOption) ? (
<div className={middleTag}>
<div className={clsx(tagArrow, tagArrowLeft)} />
<span>
{selectedTab === '1' ? 'Internet' : 'metadata only'}
{deploymentOption === 'public'
? 'Internet'
: 'metadata only'}
</span>
<div className={clsx(tagArrow, tagArrowRight)} />
</div>
) : null}
{selectedTab === '2' ? (
{deploymentOption === 'private' ? (
<>
<div
className={clsx(
Expand All @@ -191,7 +189,7 @@ const DeploymentOptionDiagram = ({
</>
) : null}
</div>
</>
</div>
);
};

Expand Down
Loading

0 comments on commit f531fd0

Please sign in to comment.