L'etichetta di sezione che apre ogni blocco: titolo serif-friendly + indice numerico mono allineato in apice. Server component, prop opzionale per rendere l'elemento h2 o p.
Sei un senior frontend engineer. Stai lavorando su un sito Next.js 16 + React 19 + Tailwind v4 in italiano, look chanhdai-inspired: colonna stretta 672px, Geist Sans + Geist Mono, hairline 1px, divisori a stripe diagonale, palette zinc.
Token CSS disponibili: --bg, --bg-alt, --fg, --fg-muted, --fg-soft, --border, --border-strong, --accent. Usa SEMPRE queste variabili tramite le utility tailwind generate (bg-bg, text-fg-muted, border-border, ecc.). Helper "cn" da "@/lib/utils". Niente librerie UI extra: solo lucide-react e tailwind-merge.
Genera un componente <SectionLabel> che apra le sezioni del sito.
Props:
- index?: number — mostrato come <sup> mono paddato a 2 cifre (01, 02…), tracking lieve.
- children: ReactNode — titolo della sezione.
- asHeading?: boolean (default true) — se true rende un <h2> grande (text-2xl sm:text-3xl, font-semibold tracking-tight). Se false rende un <p> piccolo come caption mono.
- className?: string, id?: string (per anchor link).
Constraints: server component, scroll-mt-20 sull'elemento per ancore stabili, indice in font-mono color text-fg-muted, taglia 11px, ml-1 align-super.
Output: file completo .tsx pronto da incollare in src/components/section-label.tsx.
Uso tipico03
tsx
<SectionLabel index={1}>About</SectionLabel>
Dipendenze04
npm
tailwind-merge
clsx
Interno
@/lib/utils#cn
Ti è servito? Dimmelo, oppure proponi il prossimo componente.