Prompt · split-text
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.
