navigation
Hover Expand Navigation
A destination row where the engaged item opens enough room for its context while neighbours yield space.
- navigation
- hover
- context
Live preview
Quick usage
import { HoverExpandNavigation } from "@pinky-ui/experiences";
<HoverExpandNavigation items={items} />Presets
Default
The restrained Pinky production default.
Default behaviour
Quiet
A flatter or lower-intensity treatment for dense pages.
disabled={true}
Install
Add @pinky-ui/experiences as a dependency, or use the CLI to copy this component's source directly into your project — no dependency to manage, fully editable.
npm install @pinky-ui/experiencespnpm add @pinky-ui/experiencesyarn add @pinky-ui/experiencesnpx pinky-ui add hover-expand-navigationPrefer to run the whole repository locally instead?
git clone https://github.com/florash/Pinky-UI.git
cd Pinky-UI
npm install
npm run devProps
| Prop | Type | Default | Description |
|---|---|---|---|
| items | NavigationLink[] | — | Destinations with short optional descriptions. |
| className | string | — | Styles the outer composition without changing its behaviour. |
| disabled | boolean | false | Uses the static, readable composition. |
Accessibility
- Destinations remain native links with a clear current state.
- Focus engages the same contextual expansion as pointer hover; touch keeps the selected item open.
Performance
- Only the small navigation row participates in layout animation.
- No pointer listener runs outside the navigation surface.
Reduced motion
The item description remains available without layout interpolation; selection and focus stay visible.
When to use
- Short editorial or portfolio navigation where context helps scanning
When not to use
- Large information architectures or dense utility menus
Skill
Purpose
HoverExpandNavigation gives a short destination row enough room to explain the item currently under attention. The active item grows and its neighbours yield space, so context arrives as part of the navigation rather than in a detached tooltip.
Interaction anatomy
- Engaged item: pointer hover, keyboard focus or selection expands one destination.
- Context: a short description appears inside the same link surface.
- Neighbour response: the row reflows rather than covering adjacent links.
- Touch: selection keeps the chosen item open without requiring hover.
Live example
Use the live navigation preview to move across destinations or focus them with Tab. The same link remains the destination in every state.
Usage
import { HoverExpandNavigation } from "@pinky-ui/experiences";
<HoverExpandNavigation
items={[
{ id: "work", label: "Work", href: "/work", description: "Selected projects" },
{ id: "notes", label: "Notes", href: "/notes", description: "Writing and process" },
]}
/>;Tune
- Keep the row to a small set of peer destinations.
- Keep descriptions to one or two lines so expansion remains intentional.
- Use a calm surface and let the layout shift carry the emphasis.
Accessibility
Use real links, retain aria-current for the selected destination, and make focus visible around the complete link surface. Focus must engage the same context as pointer attention.
Reduced motion
Remove flex interpolation and show the engaged description immediately. The selected state and text remain available without motion.