Menu

A dropdown menu built on the Base UI `Menu` compound component. Supports items, sub-menus, checkbox items, radio groups, groups, separators, and keyboard shortcuts.

A dropdown menu built on the Base UI Menu compound component. Supports items, sub-menus, checkbox items, radio groups, groups, separators, and keyboard shortcuts.

tsx
import { Button } from "@celestia-project/ui/primitive/button"import {  Menu,  MenuCheckboxItem,  MenuGroup,  MenuGroupLabel,  MenuItem,  MenuPopup,  MenuPortal,  MenuPositioner,  MenuRadioGroup,  MenuRadioItem,  MenuSeparator,  MenuShortcut,  MenuSub,  MenuSubTrigger,  MenuTrigger,} from "@celestia-project/ui/composite/menu"
<Menu>  <MenuTrigger render={<Button variant="outline" />}>Open Menu</MenuTrigger>  <MenuPortal>    <MenuPositioner sideOffset={8} align="start">      <MenuPopup>        <MenuGroup>          <MenuGroupLabel>Actions</MenuGroupLabel>          <MenuItem>            New Tab            <MenuShortcut>⌘T</MenuShortcut>          </MenuItem>          <MenuSub>            <MenuSubTrigger>Share</MenuSubTrigger>            <MenuPortal>              <MenuPositioner sideOffset={4}>                <MenuPopup>                  <MenuItem>Copy Link</MenuItem>                </MenuPopup>              </MenuPositioner>            </MenuPortal>          </MenuSub>        </MenuGroup>        <MenuSeparator />        <MenuCheckboxItem checked={checked} onCheckedChange={setChecked}>          Status Bar        </MenuCheckboxItem>        <MenuRadioGroup value={panel} onValueChange={setPanel}>          <MenuRadioItem value="top">Panel Top</MenuRadioItem>        </MenuRadioGroup>        <MenuSeparator />        <MenuItem variant="destructive">Delete</MenuItem>      </MenuPopup>    </MenuPositioner>  </MenuPortal></Menu>
ComponentPurpose
MenuRoot — manages open/close state
MenuTriggerToggle button (use render to customize the element)
MenuPortalRenders the popup into a portal
MenuPositionerPositions the popup (sideOffset, align, side)
MenuPopupThe visible menu container
MenuItemAn action item (variant="destructive", inset)
MenuCheckboxItemToggleable item (checked, onCheckedChange)
MenuRadioGroup / MenuRadioItemSingle-select group (value, onValueChange)
MenuSub / MenuSubTriggerNested sub-menu
MenuGroup / MenuGroupLabelGrouping with a label
MenuSeparatorVisual divider
MenuShortcutKeyboard hint aligned to the right