open-consul/website/components/consul-on-kubernetes-hero/index.tsx

99 lines
2.6 KiB
TypeScript
Raw Normal View History

[Assembly] Consul on Kubernetes Page (#11047) * Start new page * reset * Consul on Kubernetes - Features List Section (#11078) * Fix conflicts * Start adding and placing content * Add a lot of styling and background image * Looking like design. Before adding more global styles * Work on editing styles * Move imports and switch to flex * Add more styles and bottom left background image * Fix conflicts * Fix styles on mobile * Change images path in public * Updates from code review - Move data and update styles * Convert to tsx and add types * Change button props to get desired styling without using css * Remove margin on mobile * Consul On Kubernetes - Hero (#11089) * Start hero section * Increase max sizes for container * Minor Edits * Use g-grid-container * Edit video styles and test * Rename component * Start moving global styles over * Move hero styles to locl * Remove composes g-hero * Fix flex basis on media * Add display flex to media * Clean up some styles * Consul On Kubernetes - Block List (#11114) * Start block list * Enter data and start styles * Get all images in and update styles * Move data and convert to ts * Add comment in page * Consul On Kubernetes - Side by Side Section (#11122) * Start block list * Enter data and start styles * Get all images in and update styles * Start side by side * Add content and more styles * Some more styles * Add styles for text and titles * Edit styles and clean * Fix spacing between button and text in overview * Delete public folder * Fix images in block on page * remove extra file * Fix classnames import * Use fragment * Consul On Kubernetes - Docs List Component (#11150) * Add docs list component * Add docs list content * Change type declaration * Remove unecessary style * Use fragment * Change icons * Consul On Kubernetes - Card List & Get Started Section (#11168) * Start card list component * Begin adding content * Start wrapper styles * Add more styles for card * Fix style * Edit styles * Use next Link * Add minor formatting * Make entire card a link * Add transition * Change import * Use svg instead of button and make target blank * Move wrapper div to component and add classname prop, use color variable for border * Change min of card in grid * Less pxels for min * Update copy * Consul on Kubernetes Content (#11179) * Add content so far * Add hero content and switch video to embed - needs editing * Add overview and docs links * Use iframe in hero and style * Remove = null on prop * Add learn tutorials content so far * Change learn tutorials content * Change placeholder learn content * Add requested copy updates * Align numbers * Consul on Kubernetes Content & Design Updates (#11217) * Update docs icons * Update learn cards * Update challenges icon * Video poster pending * New image * Add split up background images * Looking pretty good * Fix up background image * Add more styles * Add meta description and new feature images * Revert img change * Fix up images and replace poster * Switch to grid * Move images * Clean up styles * Change hero button text * Update styles for hero video * Update youtube url * Use gray variable * Consul on Kubernetes Metadata (#11219) * Add meta data for sharing * Test * Test 2 * Add meta title * Update share image * CHange name * Test * Test again * Use relative url * Swap urls for hero ctas * Update tutorial card to be uniform * Change overview button text * Resolve conflicts and fix dependencies
2021-10-08 19:50:36 +00:00
import Button from '@hashicorp/react-button'
import ReactPlayer from 'react-player'
import s from './style.module.css'
interface Cta {
url: string
text: string
}
interface ConsulOnKubernetesHeroProps {
title: string
description: string
ctas: Cta[]
video: {
src: string
poster: string
}
}
export default function ConsulOnKubernetesHero({
title,
description,
ctas,
video,
}: ConsulOnKubernetesHeroProps) {
return (
<div className={s.ckHero}>
<div className={s.contentWrapper}>
<div className={s.headline}>
<h1 className={s.title}>{title}</h1>
<p className={s.description}>{description}</p>
<div className={s.buttons}>
{ctas.map(({ text, url }, idx) => (
<Button
key={text}
theme={{
brand: 'consul',
variant: idx === 0 ? 'primary' : 'tertiary-neutral',
background: 'dark',
}}
linkType={idx === 0 ? null : 'inbound'}
url={url}
title={text}
className={s.button}
/>
))}
</div>
</div>
<div className={s.media}>
<img
src={require('./images/bg-top.svg')}
alt="background top"
className={s.bgTop}
/>
<img
src={require('./images/bg-right.svg')}
alt="background right"
className={s.bgRight}
/>
<img
src={require('./images/bg-dots.svg')}
alt="background bottom"
className={s.bgBottom}
/>
<img
src={require('./images/bg-dots.svg')}
alt="background left"
className={s.bgLeft}
/>
<div className={s.video}>
<ReactPlayer
playing
light={video.poster}
url={video.src}
width="100%"
height="100%"
controls
className={s.player}
playIcon={
<svg
aria-label="Play video"
width="72"
height="72"
viewBox="0 0 72 72"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<rect width="72" height="72" rx="36" fill="#F85C94" />
<path d="M56 36L26 53.3205L26 18.6795L56 36Z" fill="white" />
</svg>
}
/>
</div>
</div>
</div>
</div>
)
}