Files

81 lines
2.8 KiB
TypeScript
Raw Permalink Normal View History

2026-05-19 16:01:30 +09:00
import Image from 'next/image'
import type { TechStackOverviewSection } from '@repo/content/schemas'
import { OverviewMediaPanel } from '@/components/sections/shared/overview-media-panel'
2026-05-19 19:57:18 +09:00
import { TechStackDiagram } from '@/components/sections/shared/tech-stack-diagram'
import ContentWidth from '@/components/layout/content-width'
2026-05-19 16:01:30 +09:00
type Props = {
data: TechStackOverviewSection
/**
* Where the networking row links to. Page-level concern (the section
* fixture covers the four pillars; the networking row is a shared link
* across pages).
*/
networkingHref: string
/** Where the foundation row links to. Same rationale as `networkingHref`. */
foundationHref: string
}
export default function TechOverviewStack({
data,
networkingHref,
foundationHref,
}: Props) {
return (
<section id="stack">
<div className="bg-brand-off-white px-0 pb-6 md:pb-25">
<ContentWidth>
2026-06-01 20:26:55 +09:00
{data.architecture ? (
<OverviewMediaPanel
className="relative left-1/2 mb-10 w-screen -translate-x-1/2 md:static md:left-auto md:mb-35 md:w-auto md:-translate-x-0 md:-mx-3 min-[1367px]:mb-50!"
eyebrow={data.architecture.eyebrow}
footerLabel={data.pillars[0].title}
title={data.architecture.title}
body={data.architecture.body}
cta={data.architecture.cta}
primaryCtaDefaultVariant="secondary"
image={
<div className="relative h-[317px] w-full overflow-hidden rounded-[24px] md:h-full">
2026-06-01 20:26:55 +09:00
<div className="absolute top-[-53px] left-0 h-[936px] w-full md:top-[-33px]">
<Image
src={data.architecture.image.src}
alt={data.architecture.image.alt}
fill
sizes="702px"
className="object-cover"
2026-05-19 19:57:18 +09:00
/>
2026-05-19 17:57:30 +09:00
</div>
</div>
}
/>
2026-06-01 20:26:55 +09:00
) : null}
2026-05-19 16:01:30 +09:00
<div className="flex flex-col gap-15 min-[1367px]:gap-25">
<div className="grid gap-3 pt-25 md:pt-0 min-[1367px]:grid-cols-2">
2026-06-01 20:26:55 +09:00
{data.title ? (
<h2 className="text-h4-sans min-[1367px]:text-h3-sans text-brand-dark-green">
2026-06-01 20:26:55 +09:00
{data.title}
</h2>
) : null}
{data.eyebrow ? (
<p className="text-mono-s w-[226px] text-brand-dark-green">
{data.eyebrow}
</p>
) : null}
</div>
2026-05-19 16:01:30 +09:00
2026-06-01 20:26:55 +09:00
<TechStackDiagram
data={data}
networkingHref={networkingHref}
foundationHref={foundationHref}
desktopAt1367
2026-06-01 20:26:55 +09:00
/>
</div>
</ContentWidth>
</div>
</section>
)
}