A dropdown menu with a gooey SVG filter effect that morphs a trigger pill into the panel using spring physics and CSS shape interpolation.
Dependencies
Interaction Type
Hover trigger for micro-clicks; click to toggle the gooey menu with tactile click audio. Hover items to navigate.
Props
Options you can pass to customize this component.
triggerText label for the trigger button.
itemsArray of menu items with label and optional onClick.
widthWidth of the dropdown in pixels (default: 240).
alignHorizontal alignment of the trigger button.
gapVertical gap between trigger and panel (default: 18).
itemHeightHeight of each menu item (default: 40).
buttonRadiusBorder radius of the trigger button (default: 12).
panelRadiusBorder radius of the expanded panel (default: 20).
fillBackground fill color for the goo blob.
gooStrengthStrength of the SVG goo blur filter (default: 8).
springSpring configuration for the open/close animation.
classNameExtra classes merged onto the root container.
Installation
How to use
import { GooDropdown } from "@/components/ui/goo-dropdown"
export function Demo() {
return (
<GooDropdown
trigger="Share"
items={[
{ label: "Copy link", onClick: () => {} },
{ label: "Share on X", onClick: () => {} },
{ label: "Embed", onClick: () => {} },
]}
/>
)
}Source Code
Click the code icon in the top-right corner to view the source code.
Credits
Inspired by aave.com/design
Keep in mind
All components here are original implementations, built from scratch with no copied code, assets, or content. We study UI/UX patterns we admire and craft our own versions, often with added features. If your work inspired something here and isn't credited, or a credit is incomplete, please open an issue - we'll fix it promptly.
License & Usage
// No code loaded.