Hero - oversized marquee
hero-marquee.tsx
componentskill: emil-design-engheromarketingtypographic
Brief
The prompt that produced this. Re-run it to generate more in the same taste.
- Aesthetic
- oversized marquee - display type at the edge of the viewport, tight tracking, one line of color, everything else structural
- Reference
- https://jakubpelak.com/
- Intent
- a portfolio hero that reads as a statement rather than a pitch - the name is the graphic, the copy is a footnote
- Guardrails
- always type larger than feels comfortable, one accent line, left-aligned baseline gridnever centered layouts, gradient text, hero illustrations
Install
pnpm dlx shadcn@latest add http://localhost:3040/r/hero-marquee.json
Source
Meta block and library type import stripped - this is what pastes cleanly elsewhere.
import { ArrowUpRight } from 'lucide-react'
import { Button } from '@/components/ui/button'
export default function HeroMarquee() {
return (
<section className="flex min-h-[100dvh] flex-col justify-between bg-background px-6 py-10 sm:px-12">
<div className="flex items-start justify-between font-mono text-[11px] uppercase tracking-[0.18em] text-muted-foreground">
<span>Available for work</span>
<span className="text-right">
Paris
<br />
UTC+1
</span>
</div>
<div>
<h1 className="font-semibold text-[clamp(3rem,13vw,11rem)] leading-[0.82] tracking-[-0.04em]">
Design
<br />
<span className="text-muted-foreground">that ships.</span>
</h1>
<div className="mt-10 flex flex-col gap-8 border-t pt-6 md:flex-row md:items-end md:justify-between">
<p className="max-w-md text-balance text-muted-foreground text-sm leading-relaxed">
Interface work for teams who would rather show something than describe it. Ten years of
shipping, mostly in public.
</p>
<Button size="lg" className="w-fit gap-2">
See the work
<ArrowUpRight className="size-4" />
</Button>
</div>
</div>
</section>
)
}