mirror of
https://github.com/hashicorp/vault.git
synced 2025-12-02 08:01:44 +01:00
* homepage setup * [Homepage] `<IoHomeHero />` component (#13160) * init <Hero /> component * adds loading animation * updates variable naming * makes index optional * Update hero-pattern.svg * prefix with IoHome * updates usage * [Homepage] `<IoHomePreFooter />` component (#13182) * adds <IoHomePreFooter /> * adds interfaces * [Homepage] `<IoHomeHero />` component (#13160) * init <Hero /> component * adds loading animation * updates variable naming * makes index optional * Update hero-pattern.svg * prefix with IoHome * updates usage * adds <IoHomePreFooter /> * adds interfaces * adds key * [Homepage] `<IoHomeCallToAction />` component (#13164) * adding brand to cta * cleanup homepage * [Homepage] `<IoHomeVideo />` component (#13161) * init <Video /> component * adjusts sizing and border radius * responsive styling * fix hover svg gitter * adjust play icon sizing * include temp thumbnail * dialog implementation * conditionally display person and show helpers * rename component * updates dialog naming * add homepage styling * simplify background color * page level styling * [Homepage] `<IoHomeCaseStudies />` (#13190) * adds <IoHomeCaseStudies /> * adds interface * animate gradient * update min-heights * Homepage `<IoHomeCard />` component (#13151) * init <Card /> component * fixes heading color * adds product logos and hover styles * update naming * simplifies inset spacing * use ternary and add key * removes repo link * removes need for camelCase package * adds keys * adds in practice cards * adds in practice background * use case cards * update min col sizing * adds feature component (#13203) * fixes card hover bug * [Homepage] connect homepage to dato content (#13227) * connect homepage to dato * Check for internal link * fix return types * adds youtube video * hook up meta tags and chunk cards * removes chunking * fix ts return * fix prop naming * fix return type * mobile sizing adjustments * [Homepage] Usecase pages (#13240) * init usecase page * updates use case call to action * card container component * themeing * convert to using strictly props * responsive spacing * reworking sections component * adds callout and hero patterns * adds priority * makes feature link optional * [Homepage] connect use case template to dato (#13295) * Start connecting to dato * Fix spacing when no video is present * Remove log * adds images * hook up cards * pass eyebrow and products * Delete index.tsx * Use card container on homepage * use react video player * [Homepage] fix mobile video (#13309) * Removing attributes * update url * spacing adjustments * Allow previewing draft content (#13312) * fix heading width * fix feature max width * adjust in practice padding * increase icon sizing * adjust icon alignment * update eyebrow * update hero pattern * update usecase hero pattern * add hover scale * [Homepage] populate use case dropdown from use case pages (#13325) * create standard layout * removes unused subnav data * removes static use case pages * removes use cases style * bump subnav and use hashicorp vault logo * fixes use cases paths * removes hashistack menu * removes subnav top border * conditionally render video callout avatar * hook up data and conditionals * update components to work with other products * extract in practice section for reuse * use Products type * fix type error * rework cta logic * removes type * updates accent method * fix button prop * refactor customer case study * refactor case studies component * cleanup margin * refactor data props * Spacing updates and introduce intro component * adds intro interface * Delete style.css * fix intro description color * add revalidate code to homepage * bump subnav * make stats optional * adjust border radius based on customer story * cleanup temp files * redirect /home to homepage * reorder resources * fix: move heading and description * fix: logo alignment * fix: section background color * feat: optional tutorial and docs links * fix: removes case studies background * formatting * feat: sort use cases in nav * fix: card overflow (#13429) * fix: adjust overflow method * fix: padding on desktop * fix: scroll padding-right on mobile * remove debugger * increase last item width * card container overflow method (#13434) * use flex * formatting * add comment
136 lines
3.0 KiB
TypeScript
136 lines
3.0 KiB
TypeScript
import * as React from 'react'
|
|
import { Products } from '@hashicorp/platform-product-meta'
|
|
import Button from '@hashicorp/react-button'
|
|
import classNames from 'classnames'
|
|
import s from './style.module.css'
|
|
|
|
interface IoHomeHeroProps {
|
|
pattern: string
|
|
brand: Products | 'neutral'
|
|
heading: string
|
|
description: string
|
|
ctas: Array<{
|
|
title: string
|
|
link: string
|
|
}>
|
|
cards: Array<IoHomeHeroCardProps>
|
|
}
|
|
|
|
export default function IoHomeHero({
|
|
pattern,
|
|
brand,
|
|
heading,
|
|
description,
|
|
ctas,
|
|
cards,
|
|
}: IoHomeHeroProps) {
|
|
const [loaded, setLoaded] = React.useState(false)
|
|
|
|
React.useEffect(() => {
|
|
setTimeout(() => {
|
|
setLoaded(true)
|
|
}, 250)
|
|
}, [])
|
|
|
|
return (
|
|
<header
|
|
className={classNames(s.hero, loaded && s.loaded)}
|
|
style={
|
|
{
|
|
'--pattern': `url(${pattern})`,
|
|
} as React.CSSProperties
|
|
}
|
|
>
|
|
<span className={s.pattern} />
|
|
<div className={s.container}>
|
|
<div className={s.content}>
|
|
<h1 className={s.heading}>{heading}</h1>
|
|
<p className={s.description}>{description}</p>
|
|
{ctas && (
|
|
<div className={s.ctas}>
|
|
{ctas.map((cta, index) => {
|
|
return (
|
|
<Button
|
|
key={index}
|
|
title={cta.title}
|
|
url={cta.link}
|
|
linkType="inbound"
|
|
theme={{
|
|
brand: 'neutral',
|
|
variant: 'tertiary',
|
|
background: 'light',
|
|
}}
|
|
/>
|
|
)
|
|
})}
|
|
</div>
|
|
)}
|
|
</div>
|
|
{cards && (
|
|
<div className={s.cards}>
|
|
{cards.map((card, index) => {
|
|
return (
|
|
<IoHomeHeroCard
|
|
key={index}
|
|
index={index}
|
|
heading={card.heading}
|
|
description={card.description}
|
|
cta={{
|
|
brand: index === 0 ? 'neutral' : brand,
|
|
title: card.cta.title,
|
|
link: card.cta.link,
|
|
}}
|
|
subText={card.subText}
|
|
/>
|
|
)
|
|
})}
|
|
</div>
|
|
)}
|
|
</div>
|
|
</header>
|
|
)
|
|
}
|
|
|
|
interface IoHomeHeroCardProps {
|
|
index?: number
|
|
heading: string
|
|
description: string
|
|
cta: {
|
|
title: string
|
|
link: string
|
|
brand?: 'neutral' | Products
|
|
}
|
|
subText: string
|
|
}
|
|
|
|
function IoHomeHeroCard({
|
|
index,
|
|
heading,
|
|
description,
|
|
cta,
|
|
subText,
|
|
}: IoHomeHeroCardProps): React.ReactElement {
|
|
return (
|
|
<article
|
|
className={s.card}
|
|
style={
|
|
{
|
|
'--index': index,
|
|
} as React.CSSProperties
|
|
}
|
|
>
|
|
<h2 className={s.cardHeading}>{heading}</h2>
|
|
<p className={s.cardDescription}>{description}</p>
|
|
<Button
|
|
title={cta.title}
|
|
url={cta.link}
|
|
theme={{
|
|
variant: 'primary',
|
|
brand: cta.brand,
|
|
}}
|
|
/>
|
|
<p className={s.cardSubText}>{subText}</p>
|
|
</article>
|
|
)
|
|
}
|