Menu Demo

PreviousNext

Demo showing a menu.

Docs
animate-uiui

Preview

Loading preview…
registry/demo/components/base/menu/index.tsx
import { Button } from '@/components/ui/button';
import {
  Menu,
  MenuTrigger,
  MenuPanel,
  MenuGroup,
  MenuGroupLabel,
  MenuItem,
  MenuSeparator,
  MenuShortcut,
  MenuSubmenu,
  MenuSubmenuTrigger,
  MenuSubmenuPanel,
} from '@/components/animate-ui/components/base/menu';

interface BaseMenuDemoProps {
  side?: 'top' | 'bottom' | 'left' | 'right' | 'inline-start' | 'inline-end';
  sideOffset?: number;
  align?: 'start' | 'center' | 'end';
  alignOffset?: number;
}

export function BaseMenuDemo({
  side,
  sideOffset,
  align,
  alignOffset,
}: BaseMenuDemoProps) {
  return (
    <Menu>
      <MenuTrigger render={<Button variant="outline">Open</Button>} />
      <MenuPanel
        className="w-56"
        align={align}
        alignOffset={alignOffset}
        side={side}
        sideOffset={sideOffset}
      >
        <MenuGroup>
          <MenuGroupLabel>My Account</MenuGroupLabel>
          <MenuItem>
            Profile
            <MenuShortcut>⇧⌘P</MenuShortcut>
          </MenuItem>
          <MenuItem>
            Billing
            <MenuShortcut>⌘B</MenuShortcut>
          </MenuItem>
          <MenuItem>
            Settings
            <MenuShortcut>⌘S</MenuShortcut>
          </MenuItem>
          <MenuItem>
            Keyboard shortcuts
            <MenuShortcut>⌘K</MenuShortcut>
          </MenuItem>
        </MenuGroup>
        <MenuSeparator />
        <MenuGroup>
          <MenuItem>Team</MenuItem>
          <MenuSubmenu>
            <MenuSubmenuTrigger>Invite users</MenuSubmenuTrigger>
            <MenuSubmenuPanel>
              <MenuItem>Email</MenuItem>
              <MenuItem>Message</MenuItem>
              <MenuSeparator />
              <MenuItem>More...</MenuItem>
            </MenuSubmenuPanel>
          </MenuSubmenu>
          <MenuItem>
            New Team
            <MenuShortcut>⌘+T</MenuShortcut>
          </MenuItem>
        </MenuGroup>
        <MenuSeparator />
        <MenuItem>GitHub</MenuItem>
        <MenuItem>Support</MenuItem>
        <MenuItem disabled>API</MenuItem>
        <MenuSeparator />
        <MenuItem variant="destructive">
          Log out
          <MenuShortcut>⇧⌘Q</MenuShortcut>
        </MenuItem>
      </MenuPanel>
    </Menu>
  );
}

Installation

npx shadcn@latest add @animate-ui/demo-components-base-menu

Usage

import { DemoComponentsBaseMenu } from "@/components/ui/demo-components-base-menu"
<DemoComponentsBaseMenu />