SPB Git

spb/phi-conseil

Public
2.2 KB · 56 lines tsx
1import Image from "next/image";2import { home } from "@/lib/content";3import { Button } from "@/components/ui/Button";4import { GoldenSpiral } from "@/components/graphics/GoldenSpiral";5import { WaveDivider } from "@/components/graphics/WaveDivider";6import { DeskScene } from "@/components/graphics/Placeholders";78export function Hero() {9  const { hero } = home;10  return (11    <section aria-labelledby="hero-title" className="bg-ivory-100 relative isolate overflow-hidden">12      <div className="container-site relative grid items-center gap-10 pt-8 pb-24 md:pt-10 md:pb-32 lg:grid-cols-[minmax(0,1fr)_minmax(0,1fr)] lg:gap-4 lg:pt-4 lg:pb-32">13        <div className="relative z-10 max-w-[36rem] lg:pt-6">14          <h1 id="hero-title" className="text-display">15            {hero.titleLines.map((line, i) => (16              <span key={i} className="block">17                {line}18              </span>19            ))}20          </h1>21          <p className="text-ink-700 mt-6 max-w-[30rem] text-[1.05rem]">{hero.subtitle}</p>22          <div className="mt-8">23            <Button href={hero.cta.href} size="lg">24              {hero.cta.label}25            </Button>26          </div>27        </div>2829        <div className="relative -mx-[var(--container-pad)] lg:mx-0 lg:-mr-[var(--container-pad)]">30          <div className="relative aspect-[16/10] w-full overflow-hidden [mask-image:linear-gradient(to_right,transparent,black_12%,black)] lg:aspect-[1.18]">31            {hero.image.src ? (32              <Image33                src={hero.image.src}34                alt={hero.image.alt}35                fill36                priority37                sizes="(min-width:1024px) 50vw, 100vw"38                className="object-cover"39              />40            ) : (41              <DeskScene className="absolute inset-0 h-full w-full" />42            )}43            <GoldenSpiral44              className="text-gold-500 pointer-events-none absolute -top-[6%] right-[2%] h-[112%] w-auto opacity-90 drop-shadow-[0_0_1px_rgba(255,255,255,0.6)]"45              strokeWidth={0.1}46              flipY47            />48          </div>49        </div>50      </div>5152      <WaveDivider className="absolute inset-x-0 bottom-0 h-20 w-full md:h-28 lg:h-36" />53    </section>54  );55}56
Files · main
Menu

Theme