
Gooey Dropdown Menu
A capsule trigger drips a menu out of its underside. Arrow keys, live shortcuts, and a clear Delete row come built in.
A liquid FAB whose child actions stretch out of the trigger like molten metal.
Gooey Navigation Menu is a React and Tailwind CSS floating action button with a speed dial menu, in Next.js or any React app, where child actions stretch out of the trigger like molten metal. Items fan along an arc set by radius, arc, and direction, and a blur filter on a small wrapper bridges them while only transform and opacity animate. Each petal is a labelled button that runs its action and closes the menu, and reduced motion skips the springs. The wrapper reserves a square the size of the open menu, so leave room around the trigger.
Run the following command
pnpm dlx wensity@latest add gooey-navigation-menu
npx wensity@latest add gooey-navigation-menu
yarn dlx wensity@latest add gooey-navigation-menu
bunx wensity@latest add gooey-navigation-menu
Import GooeyNavigationMenu from @/components/wensity/gooey-navigation-menu and render it anywhere in your React or Next.js app. The source lands in your own repo, so every prop, class and animation below is yours to edit.
"use client";import { GooeyNavigationMenu } from "@/components/wensity/gooey-navigation-menu";import { IconShare, IconHeart, IconBookmark, IconMessageCircle } from "@tabler/icons-react";const items = [{ id: "share", label: "Share", icon: <IconShare /> },{ id: "like", label: "Like", icon: <IconHeart /> },{ id: "save", label: "Save", icon: <IconBookmark /> },{ id: "reply", label: "Reply", icon: <IconMessageCircle /> },];export function GooeyNavigationMenuDemo() {return (// Blobs default to the theme foreground — white on dark, near-black on// light. Recolor with blobClassName / iconClassName:// blobClassName="bg-chili-500" iconClassName="text-white"<GooeyNavigationMenu direction="up" arc={170} radius={92} items={items} />);}
| Prop | Type | Default | Description |
|---|---|---|---|
items | GooeyMenuItem[] | - | Child items that pop out of the FAB. 3–6 looks best. |
radius | number | 96 | Distance in pixels the children travel from the trigger center. |
arc | number | 180 | Arc in degrees the children fan across. 90 is a quarter, 180 a half. |
direction | "up" | "down" | "left" | "right" | "up" | Direction the arc opens toward. |
size | number | 60 | Diameter of the trigger button in pixels. |
childSize | number | 44 | Diameter of each child button in pixels. |
defaultOpen | boolean | false | Render with the menu already fanned open. Uncontrolled. |
blobClassName | string | "bg-[var(--foreground)]" | Classes for the trigger and petal blobs. Defaults to the theme foreground — white on dark, near-black on light. Pass any background utility to recolor, e.g. bg-chili-500. |
iconClassName | string | "text-[var(--background)]" | Classes for the glyphs riding on the blobs. Defaults to the theme background, i.e. whatever the blobs are not. |
className | string | - | Classes for the wrapper that reserves the menu's square stage. |

A capsule trigger drips a menu out of its underside. Arrow keys, live shortcuts, and a clear Delete row come built in.

A search circle stretches into a field, and results drip out below it. Ask Claude, ChatGPT, or Google in one keystroke.

A dock of icons in a solid pill. The active capsule stretches to the item you pick and flips its icon and label inside.

Drag the thumb and the filled track stretches with it, then the thumb contracts into a circle when you let go.
Featured in React navbar components.