Luca Perullo
Components

Component

LiveNew

Spotlight Card

Mouse-tracked CSS variables (--mx, --my) aggiornate su pointermove. Due overlay: spotlight tinto + bordo che si illumina. Niente re-render React per frame, gradient via radial-gradient + color-mix oklch.

CardHoverPremiumClient
Open in ClaudeSorgente

Esempio01

spotlight-card.tsx

Hover

Spotlight follows your cursor.

Tint magenta

Radius + intensity custom.

Note Aggiorna CSS vars via setProperty in pointermove → zero re-render React. color può essere qualsiasi formato CSS valido per color-mix. Su touch (no hover) la card resta neutra (--mx/--my a -9999px).

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 · spotlight-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 <SpotlightCard> con radial-gradient mouse-tracked.
Props:
- children: ReactNode.
- radius?: number px (default 320).
- color?: string (default "var(--accent)").
- intensity?: number 0–1 (default 0.18).
- className?: string.

Implementazione:
- "use client", useRef sulla card.
- onPointerMove: leggi getBoundingClientRect, setProperty("--mx") + "--my" relativi al rect.
- onPointerLeave: setProperty a -9999px.
- Wrapper: relative overflow-hidden rounded-[10px] border bg-bg-alt.
- Overlay 1 (spotlight): pointer-events-none, opacity 0 → 100 su group-hover, background radial-gradient(radius circle at var(--mx) var(--my), color-mix(in oklch, color intensity*100%, transparent), transparent 60%).
- Overlay 2 (border glow): mask trick — radial-gradient più ampio, mask con padding-box xor per creare un anello bordo.
- Children dentro <div className="relative">.

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

Uso tipico03

tsx
<SpotlightCard radius={320} color="var(--accent)" intensity={0.18}>...</SpotlightCard>

Dipendenze04

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

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