Luca Perullo
Components

Component

LiveNew

Animated Grid Pattern

ResizeObserver per cols/rows. Pool di N celle, ognuna con animation fade infinita. Refresh casuale ogni duration secondi.

BackgroundPatternClient
Open in ClaudeSorgente

Esempio01

animated-grid-pattern.tsx
001Default · subtle flicker
002Hero · roomier cells
section · 001

Pronto a spedire?

003Dense small · 60 cells lit

Note Solo JS è il calcolo dei cols/rows — l'animazione è pura CSS infinite, quindi nessun overhead per frame.

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 · animated-grid-pattern
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 <AnimatedGridPattern> con celle random che si accendono.
Type:
- Square = { id; pos:[col,row]; delay }
Props:
- width?, height?, numSquares?: number (default 50), maxOpacity?: number (default 0.3), duration?: number (default 4), className?.

Implementazione:
- "use client". useId(), useRef<number> id counter, useState<{w,h}> via ResizeObserver, useState<Square[]>.
- Quando dimensioni cambiano: cols/rows da Math.ceil(size/cell), riempi pool numSquares con pos random, delay random 0..duration.
- setInterval(duration*1000): per ogni square 30% chance di rigenerare.
- @keyframes animated-grid-pattern-fade: 0%/100% opacity 0, 50% opacity var(--agp-max).
- Render <svg> + <rect> animati.

Output: file completo src/components/animated-grid-pattern.tsx.

Uso tipico03

tsx
<AnimatedGridPattern numSquares={50} maxOpacity={0.3} duration={4} />

Dipendenze04

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

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