Luca Perullo
Components

Component

LiveNew

Dock

Context con pointer position. Ogni DockIcon calcola distanza al cursore e lerp tra iconSize e iconMagnification.

NavigationmacOSClient
Open in ClaudeSorgente

Esempio01

dock.tsx
001Default · 4 icons
002App launcher · 6 icons
003Vertical · side rail

Note Direction "vertical" allinea le icon in colonna, perfetto per side-bar mobile-first. Press utility integrata.

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 · dock
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 <Dock> + <DockIcon> macOS-style con magnification per prossimità.
Type:
- DockContextValue = { iconSize; iconMagnification; iconDistance; pointer; direction }
Props Dock:
- children: ReactNode.
- iconSize?: number (default 40), iconMagnification?: number (default 60), iconDistance?: number (default 140).
- direction?: "horizontal"|"vertical" (default horizontal), className?.

Implementazione:
- "use client". createContext<DockContextValue>. Dock useRef + listener pointermove/pointerleave per pointer state.
- Container: bg-bg-alt/80 backdrop-blur border border-border rounded-2xl px-3 py-2 flex items-end gap-2.
- DockIcon: button "use client" press + transition w/h. Legge ctx, calcola distanza centro al pointer, lerp size.

Output: file completo src/components/dock.tsx con Dock e DockIcon esportati.

Uso tipico03

tsx
<Dock iconMagnification={60} iconDistance={140}>
  <DockIcon><Globe className="size-5"/></DockIcon>
</Dock>

Dipendenze04

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

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