Prompt · warp-background
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 <WarpBackground> hyperspace style.
Props:
- beamCount?: number (default 18), beamLength?: number (% del raggio, default 70).
- beamSize?: number (px, default 2), beamDuration?: number (sec, default 2.4).
- beamColor?: string (default "var(--fg)"), gridColor?: string (default "var(--border)").
- showGrid?: boolean (default true), className?.
Implementazione:
- Server component. Wrapper absolute inset-0 overflow-hidden.
- Floor grid opzionale: div absolute inset-0 con backgroundImage di linear-gradient gridColor 1px e backgroundSize 40x40, opacity 0.18, mask radiale per fade verso i bordi.
- Hub al centro: div absolute left-1/2 top-1/2 h-0 w-0.
- Per ogni i in 0..beamCount-1: span absolute origin-top con rotate(360/beamCount * i deg), w {beamSize}px h {beamLength}%. Inner span con linear-gradient(to top, transparent 0%, beamColor 50%, transparent 100%), animation warp-beam-travel duration linear infinite, delay scalato.
- @keyframes warp-beam-travel: 0% translateY(0) opacity 0, 25% opacity 0.9, 100% translateY(-110%) opacity 0.
Output: file completo src/components/warp-background.tsx.