Skip to content
Uxelith
Sign in
Prov1.0.0Navigation

Fluid Menu

A pill that grows into a menu like a phone's island: the surface stretches to fit the links, they come into focus one by one, and a highlight glides between them. A keyboard-ready disclosure.

Installs with Uxelith ProHow
Licence
Pro
Packages
3
Updated
18 Oct 2026
Live

Installation

Usage

example.tsx
import { FluidMenu } from "@/components/fluid-menu"

export function SiteMenu() {
  return (
    <FluidMenu
      items={[
        { label: "Work", href: "/work", description: "Selected projects" },
        { label: "About", href: "/about" },
        { label: "Contact", href: "/contact" },
      ]}
    />
  )
}

Props

PropTypeDefaultDescription
items{ label, href, description?, icon? }[]—The links.
brandReactNode—Shown at the start of the pill, e.g. your logo.
labelstring"Menu"The pill's text while closed.
footerReactNode—Under the links, e.g. a call to action.
placement"top" | "bottom""top"Grow down from the top, or up from the bottom.
open / defaultOpenboolean— / falseControlled or initial state.
onOpenChange(open: boolean) => void—Called when it opens or closes.
navLabelstring"Main"Accessible name of the navigation.

Accessibility

  • A disclosure: the pill is a button with aria-expanded and aria-controls; the links are a labelled <nav> list.
  • Opening moves focus to the first link; ↑/↓ move between links.
  • Escape closes and returns focus to the pill; clicking away or tabbing out closes too.
  • Opens and closes in place under prefers-reduced-motion.

Changelog

  1. v1.0.0Latest

    First release.

More in Navigation

All 6 in Navigation
  • NavigationFree

    Accordion

    Questions that spring open to their answers — reversible mid-way — with a hover highlight that glides between titles and a plus that folds into a minus (or a chevron). Single or multiple open, two looks.

  • NavigationFree

    Animated Tabs

    Tabs with an indicator that springs to the selected tab, a hover highlight that follows the pointer, and panels that slide in from the side you're heading to while the height eases to fit. Pill or underline.

  • NavigationPro

    Command Palette

    A ⌘K command menu with ranked fuzzy search and match highlighting. Give it a trigger and the search button grows into the palette and shrinks back on close. Inline or in a dialog.