Luca Perullo
Components

Component

LiveNew

Split Text

react-bits #2. Transform translateY su ogni token mascherato da overflow-clip — l'effetto "wipe in" classico delle hero sotto il fold. Direzione configurabile (up/down/left/right). Pure CSS.

TextAnimationHeroClient
Open in ClaudeSorgente

Esempio01

split-text.tsx

Note Wrapping span overflow-hidden + figlio translateY(0.6em) → translate(0). Va dato un line-height almeno 1.05 sul Tag esterno: in caso contrario i discendenti delle lettere (g, p, y) vengono tagliati.

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 · split-text
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 <SplitText> per il classico reveal teatrale per-carattere.
Props identiche a <BlurText> più:
- direction?: "up" | "down" | "left" | "right" (default "up").

Implementazione:
- "use client", IntersectionObserver con threshold 0.25.
- Tokenizza preservando spazi.
- Ogni token: outer <span inline-block overflow-hidden align-bottom>, inner <span inline-block> con transition transform + opacity.
- Hidden: outer ha overflow-hidden, inner translate (Y o X di 0.6em a seconda di direction), opacity 0.
- Shown: inner translate(0,0), opacity 1.
- transitionDelay = i * stagger.
- prefers-reduced-motion → setState(true) immediato.
- line-height del Tag wrapper esterno minimo 1.05 per non tagliare i discendenti.

Output: file completo src/components/split-text.tsx.

Uso tipico03

tsx
<SplitText text="Build memorable web." as="h1" split="char" direction="up" />

Dipendenze04

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

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