Prompt · pulsating-button
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 <PulsatingButton>: CTA con doppio ring pulsante.
Props:
- children: ReactNode.
- pulseColor?: string (default "var(--accent)").
- duration?: string (default "1.6s").
- className?: string + ...rest.
Implementazione:
- Server component, classe press, rounded-full, min-h-[44px], px-6, bg-accent text-accent-fg.
- Due span absolute inset-0 -z-10 rounded-full bg pulseColor con keyframe pulsating-button-ring (scale 1→1.6, opacity 0.55→0) duration var(--ease-out) infinite.
- Secondo span: animationDelay calc(${duration} / -2) per sfasarli.
Output: file completo src/components/pulsating-button.tsx.