Docs/Componenti
// componente
Features Accordion
Accordion di feature con media affiancato: a sinistra la lista di voci apribili (una sola alla volta, la prima aperta di default), a destra un video o un'immagine che cambia insieme alla voce selezionata. L'apertura è animata sull'altezza reale del contenuto, letta da scrollHeight. Client component.
File
components/FeaturesAccordion.tsx
Uso base
Anche questa sezione usa id="features": se monti anche Features Listicle nella stessa pagina, cambia l'id a una delle due.
app/page.tsx
tsx
import FeaturesAccordion from "@/components/FeaturesAccordion";
<FeaturesAccordion />Personalizzare
- Le voci: l'array
features. Di default quattro: Emails, Payments, Authentication, Style. Il componente è pensato per 2–5 voci, oltre diventa una lista. - Media: ogni voce accetta
type: "video"(conpatheformat) oppuretype: "image"(conpathealt). Se omettitype, il componenteMediarenderizza un div vuoto della stessa misura. - Immagini remote: i path di default puntano a Unsplash e a un CDN esterno. Se usi un altro host, aggiungilo a
images.remotePatternsinnext.config.js— meglio ancora, metti i file inpublic/e usa path locali (fa bene anche alla SEO). - Video: il tag è già
autoPlay muted loop playsInline controls, quindi parte da solo anche su mobile. - Headline: l'
<h2>ha un<span>conbg-neutral text-neutral-contentper evidenziare la coda della frase — nel tema di ZeroToShip è ink su cream.
components/FeaturesAccordion.tsx
tsx
const features = [
{
title: "Emails",
description: "Send transactional emails, setup your DNS...",
type: "video",
path: "/demo/emails.webm",
format: "video/webm",
svg: <svg className="w-6 h-6">{/* ... */}</svg>,
},
];