tapcn
Components

Menubar

A horizontal menu bar with multiple dropdown menus.

Menubar

A horizontal menu bar component that contains multiple dropdown menus, commonly used for application-level navigation. Built on @rn-primitives/menubar.

Installation

npx @tapcn/cli add menubar

Or using shadcn directly:

npx shadcn@latest add https://tapcn.vercel.app/r/menubar.json

This will also install the icon and text components.

Usage

import {
  Menubar,
  MenubarContent,
  MenubarItem,
  MenubarMenu,
  MenubarSeparator,
  MenubarTrigger,
} from '~/components/ui/menubar';
import { Text } from '~/components/ui/text';

export function Example() {
  return (
    <Menubar>
      <MenubarMenu>
        <MenubarTrigger>
          <Text>File</Text>
        </MenubarTrigger>
        <MenubarContent>
          <MenubarItem>
            <Text>New Tab</Text>
          </MenubarItem>
          <MenubarItem>
            <Text>New Window</Text>
          </MenubarItem>
          <MenubarSeparator />
          <MenubarItem>
            <Text>Print</Text>
          </MenubarItem>
        </MenubarContent>
      </MenubarMenu>
      <MenubarMenu>
        <MenubarTrigger>
          <Text>Edit</Text>
        </MenubarTrigger>
        <MenubarContent>
          <MenubarItem>
            <Text>Undo</Text>
          </MenubarItem>
          <MenubarItem>
            <Text>Redo</Text>
          </MenubarItem>
          <MenubarSeparator />
          <MenubarItem>
            <Text>Cut</Text>
          </MenubarItem>
          <MenubarItem>
            <Text>Copy</Text>
          </MenubarItem>
          <MenubarItem>
            <Text>Paste</Text>
          </MenubarItem>
        </MenubarContent>
      </MenubarMenu>
    </Menubar>
  );
}

With sub-menus and shortcuts

import {
  Menubar,
  MenubarContent,
  MenubarItem,
  MenubarMenu,
  MenubarSeparator,
  MenubarShortcut,
  MenubarSub,
  MenubarSubContent,
  MenubarSubTrigger,
  MenubarTrigger,
} from '~/components/ui/menubar';
import { Text } from '~/components/ui/text';

export function FullMenubar() {
  return (
    <Menubar>
      <MenubarMenu>
        <MenubarTrigger>
          <Text>File</Text>
        </MenubarTrigger>
        <MenubarContent>
          <MenubarItem>
            <Text>New Tab</Text>
            <MenubarShortcut>
              <Text>Ctrl+T</Text>
            </MenubarShortcut>
          </MenubarItem>
          <MenubarSub>
            <MenubarSubTrigger>
              <Text>Share</Text>
            </MenubarSubTrigger>
            <MenubarSubContent>
              <MenubarItem>
                <Text>Email link</Text>
              </MenubarItem>
              <MenubarItem>
                <Text>Messages</Text>
              </MenubarItem>
            </MenubarSubContent>
          </MenubarSub>
          <MenubarSeparator />
          <MenubarItem>
            <Text>Exit</Text>
          </MenubarItem>
        </MenubarContent>
      </MenubarMenu>
    </Menubar>
  );
}

Sub-Components

ComponentDescription
MenubarRoot horizontal bar container
MenubarMenuWraps a single menu and its trigger
MenubarTriggerButton that opens the menu
MenubarContentThe dropdown content container
MenubarItemA single menu item
MenubarCheckboxItemA checkable menu item
MenubarRadioGroupGroups radio menu items
MenubarRadioItemA radio-selectable menu item
MenubarSubWrapper for a sub-menu
MenubarSubTriggerTrigger that opens the sub-menu
MenubarSubContentContent of the sub-menu
MenubarSeparatorVisual separator between items
MenubarLabelNon-interactive label
MenubarShortcutKeyboard shortcut hint

Dependencies

  • icon -- for check and chevron icons
  • text -- for TextClassContext
  • @rn-primitives/menubar -- underlying primitive
  • lucide-react-native -- icon library

On this page