Luca Perullo
Components

Component

LiveNew

Magic Card

useRef + pointermove imposta CSS vars --mx/--my. Spotlight via radial-gradient at var(--mx) var(--my). Solo fine pointer.

EffectHoverClient
Open in ClaudeSorgente

Esempio01

magic-card.tsx
001Default · spotlight follows cursor

Passa il cursore sopra per vedere lo spotlight.

Su touch device la card è statica.

002Card grid · 2 columns

Strategia

Identifichiamo cosa va spedito e cosa no.

Esecuzione

Ship in due settimane, no eccezioni.

003Custom color · warmer spotlight

Spotlight ambra anziché accento blu.

Note L'opacity peak viene applicata via @media (hover: hover) and (pointer: fine), per non rimanere visibile su mobile.

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 · magic-card
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 <MagicCard> spotlight follower.
Props:
- children: ReactNode.
- gradientSize?: number (default 200).
- gradientColor?: string (default "var(--accent)").
- gradientOpacity?: number (default 0.18).
- gradientFrom?, gradientTo?, className?.

Implementazione:
- "use client". useRef<HTMLDivElement>, onPointerMove imposta --mx/--my via setProperty (coordinate locali da getBoundingClientRect).
- onPointerLeave: --mx/--my = -9999px.
- Span overlay con radial-gradient(${size}px circle at var(--mx) var(--my), var(--mc-inner)).
- @media (hover: hover) and (pointer: fine) → .magic-card-glow opacity var(--mc-opacity).

Output: file completo src/components/magic-card.tsx.

Uso tipico03

tsx
<MagicCard gradientSize={200} gradientColor="var(--accent)">...</MagicCard>

Dipendenze04

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

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