KQ-515 · CANOPY/MENU

Canopy Menu

A mega menu that stays one panel. Hovering or focusing an item unfolds the canopy beneath the bar — scaleY from the top on glide, clipped — and its columns cascade in inside the 600ms budget. Moving to another item morphs the same panel to the new content's measured width and height rather than closing and reopening; Left and Right walk the bar, Tab steps down into the open panel, and Escape closes and hands focus back.

KQ-515 · CANOPY/MENU

Fernworks

Rope, timber, and the software that tracks both

Hover or focus an item in the bar. The panel keeps its identity and resizes to whatever the next item holds.

Panel closed

Install

One command — the source lands in your repo. Or copy it from the Code tab.

$ pnpm dlx shadcn@latest add @kinetiq/canopy-menu

Props

items
{ id: string; label: string; columns: { heading: string; links: { label: string; href: string }[] }[] }[]
default
The bar and the panel behind each item.
openDelay
number
default 80
Hover intent delay in ms before an unopened panel unfolds; moving between items once open is immediate.
label
string
default "Site"
Accessible name for the nav.
onOpenChange
(id: string | null) => void
default
Fires with the open item's id, or null when the panel closes.