Luca Perullo
Components

Component

LiveNew

Word Rotate

useState + useEffect setInterval. Pure CSS keyframe per l'enter, niente exit (sostituzione diretta).

TextRotateClient
Open in ClaudeSorgente

Esempio01

word-rotate.tsx
001Default · 3 words
Sono uno sviluppatore
002Hero · profession statement

Costruisco interfacce

Niente template, niente kit. Tutto su misura.

003Faster · 4 words at 1.4s
Disponibile per contratti

Note Wrapper inline-block con overflow-hidden per evitare reflow durante l'enter. Min duration 800ms per evitare flicker.

Prompt LLM02

Incolla in Claude o ChatGPT per generare la tua variante. Include il contesto del brand, i token e i vincoli del progetto.

Prompt · word-rotate
Open in Claude
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 <WordRotate> per ciclare parole.
Props:
- words: string[].
- duration?: number (ms per parola, default 2500).
- className?: string.

Implementazione:
- "use client". useState<number> index. useEffect: setInterval che fa setIndex(i => (i+1) % words.length).
- Wrapper inline-block overflow-hidden align-baseline.
- Span chiave key={index} con animation word-rotate-in 380ms var(--ease-out) both. Keyframe da 0% (translateY 0.6em, opacity 0, blur 2px) a 100% normale.

Output: file completo src/components/word-rotate.tsx.

Uso tipico03

tsx
<WordRotate words={["a", "b", "c"]} duration={2500} />

Dipendenze04

npm
  • tailwind-merge
  • clsx
Interno
  • @/lib/utils#cn

Ti è servito? Dimmelo, oppure proponi il prossimo componente.