Luca Perullo
Components

Component

LiveNew

Shiny Button

::before (span absolute) con linear-gradient diagonale, translateX -100% → 150% on hover. Gated a hover:hover and pointer:fine.

ButtonHoverCSS
Open in ClaudeSorgente

Esempio01

shiny-button.tsx
001Default · hover to sweep
002Card CTA · paired with description

Esperimenti settimanali

Apri un browser side-channel, prova un componente nuovo e copia il prompt nel tuo flusso.

003Toolbar · multiple buttons

Note Niente JS, niente state. Lo sweep è gated a fine pointer per non rimanere appiccicato sui touch device.

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 · shiny-button
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 <ShinyButton>: bottone solid con sweep diagonale on hover.
Props:
- children: ReactNode.
- className?: string + ...rest button props.

Implementazione:
- Server component (no "use client"). Classe press, min-h-[44px], rounded-md, bg-fg text-bg, border border-border-strong.
- Span ::before (assoluto) -left-[60%] w-[60%] inset-y-0 con linear-gradient(115deg, transparent 0%, rgba(255,255,255,0.4) 50%, transparent 100%).
- @media (hover: hover) and (pointer: fine) → on hover translateX(150%), transition 1200ms var(--ease-in-out).

Output: file completo src/components/shiny-button.tsx.

Uso tipico03

tsx
<ShinyButton>Vedi Demo</ShinyButton>

Dipendenze04

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

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