Sound-enhanced menubars and dropdown menus with open, close, and item selection feedback.
Menubars and dropdown menus with audio feedback. Each menu open, item selection, and submenu toggle gets a distinct sound that reinforces the interaction hierarchy.
npx shadcn@latest add SatyamVyas04/sensory-ui/sensory-ui-menubar SatyamVyas04/sensory-ui/sensory-ui-dropdown-menu SatyamVyas04/sensory-ui/sensory-ui-context-menuA traditional desktop-style menubar where each menu plays overlay.open on expand and interaction.tap on item selection.
| Element | Role | Why |
|---|---|---|
| Menu open | overlay.open | Overlay expansion feedback |
| Menu close | overlay.close | Overlay collapse feedback |
| Item click | interaction.tap | Selection confirmation |
| Submenu toggle | overlay.expand / overlay.collapse | Expand/collapse feedback |
"use client";
import {
Menubar,
MenubarContent,
MenubarItem,
MenubarMenu,
MenubarSeparator,
MenubarTrigger,
} from "@/components/ui/sensory-ui/menubar";
export function MenubarBlock() {
return (
<Menubar>
<MenubarMenu>
<MenubarTrigger>File</MenubarTrigger>
<MenubarContent>
<MenubarItem>New Tab</MenubarItem>
<MenubarItem>New Window</MenubarItem>
<MenubarSeparator />
<MenubarItem>Share</MenubarItem>
<MenubarSeparator />
<MenubarItem>Print</MenubarItem>
</MenubarContent>
</MenubarMenu>
<MenubarMenu>
<MenubarTrigger>Edit</MenubarTrigger>
<MenubarContent>
<MenubarItem>Undo</MenubarItem>
<MenubarItem>Redo</MenubarItem>
<MenubarSeparator />
<MenubarItem>Cut</MenubarItem>
<MenubarItem>Copy</MenubarItem>
<MenubarItem>Paste</MenubarItem>
</MenubarContent>
</MenubarMenu>
<MenubarMenu>
<MenubarTrigger>View</MenubarTrigger>
<MenubarContent>
<MenubarItem>Zoom In</MenubarItem>
<MenubarItem>Zoom Out</MenubarItem>
<MenubarSeparator />
<MenubarItem>Fullscreen</MenubarItem>
</MenubarContent>
</MenubarMenu>
</Menubar>
);
}// Use a more prominent sound for destructive actions
<MenubarItem sound="notification.warning">Delete</MenubarItem>
// Silence a specific item
<MenubarItem sound={false}>About</MenubarItem>A button-triggered dropdown with open/close sounds and item tap feedback.
| Element | Role | Why |
|---|---|---|
| Trigger click | overlay.open | Menu expansion |
| Item click | interaction.tap | Selection |
| Menu close | overlay.close | Menu collapse |
"use client";
import { Button } from "@/components/ui/button";
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuSeparator,
DropdownMenuTrigger,
} from "@/components/ui/sensory-ui/dropdown-menu";
import { IconDots } from "@tabler/icons-react";
export function DropdownBlock() {
return (
<DropdownMenu>
<DropdownMenuTrigger asChild>
<Button variant="outline" size="icon">
<IconDots className="size-4" />
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent>
<DropdownMenuItem>Edit</DropdownMenuItem>
<DropdownMenuItem>Duplicate</DropdownMenuItem>
<DropdownMenuSeparator />
<DropdownMenuItem>Archive</DropdownMenuItem>
<DropdownMenuItem className="text-destructive">
Delete
</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
);
}A right-click context menu with overlay sounds.
| Element | Role | Why |
|---|---|---|
| Menu open | overlay.open | Context menu appearance |
| Item click | interaction.tap | Selection |
| Menu close | overlay.close | Menu dismissal |
"use client";
import {
ContextMenu,
ContextMenuContent,
ContextMenuItem,
ContextMenuSeparator,
ContextMenuTrigger,
} from "@/components/ui/sensory-ui/context-menu";
export function ContextMenuBlock() {
return (
<ContextMenu>
<ContextMenuTrigger className="flex h-48 items-center justify-center rounded-md border border-dashed text-sm text-muted-foreground">
Right click here
</ContextMenuTrigger>
<ContextMenuContent>
<ContextMenuItem>Back</ContextMenuItem>
<ContextMenuItem>Forward</ContextMenuItem>
<ContextMenuSeparator />
<ContextMenuItem>Reload</ContextMenuItem>
<ContextMenuItem>View Source</ContextMenuItem>
</ContextMenuContent>
</ContextMenu>
);
}