@mks2508/mks-ui
Components

Menu

Animated context menu component with Animate UI spring transitions.

Menu

An animated context menu component built on Animate UI primitives with spring-based enter/exit transitions.

Import

import { Menu, MenuTrigger, MenuPortal, MenuPositioner, MenuPopup, MenuArrow, MenuItem, MenuGroup, MenuGroupLabel, MenuSeparator, MenuCheckboxItem, MenuRadioGroup, MenuRadioItem } from '@mks2508/mks-ui/react';

Basic Usage

<Menu>
  <MenuTrigger>
    <Button variant="outline">Actions</Button>
  </MenuTrigger>
  <MenuPortal>
    <MenuPositioner sideOffset={4}>
      <MenuPopup>
        <MenuItem>Edit</MenuItem>
        <MenuItem>Duplicate</MenuItem>
        <MenuSeparator />
        <MenuItem>Archive</MenuItem>
        <MenuItem variant="destructive">Delete</MenuItem>
      </MenuPopup>
    </MenuPositioner>
  </MenuPortal>
</Menu>

With Groups and Labels

<MenuPopup>
  <MenuGroup>
    <MenuGroupLabel>Edit Actions</MenuGroupLabel>
    <MenuItem>Cut</MenuItem>
    <MenuItem>Copy</MenuItem>
    <MenuItem>Paste</MenuItem>
  </MenuGroup>
  <MenuSeparator />
  <MenuGroup>
    <MenuGroupLabel>File Actions</MenuGroupLabel>
    <MenuItem>Save</MenuItem>
    <MenuItem>Rename</MenuItem>
  </MenuGroup>
</MenuPopup>

With Checkbox Items

<MenuPopup>
  <MenuCheckboxItem checked>Show Toolbar</MenuCheckboxItem>
  <MenuCheckboxItem>Show Sidebar</MenuCheckboxItem>
</MenuPopup>

API Reference

ComponentKey PropsDescription
Menuopen, onOpenChangeRoot provider
MenuTriggerasChildTrigger element
MenuPortalPortal with AnimatePresence
MenuPositionerside, align, sideOffsetPositioning wrapper
MenuPopupslotsAnimated content panel
MenuArrowslotsArrow indicator
MenuItemdisabled, variantMenu item
MenuGroupItem group wrapper
MenuGroupLabelGroup label
MenuSeparatorVisual divider
MenuCheckboxItemchecked, onCheckedChangeCheckbox item
MenuRadioGroupvalue, onValueChangeRadio group
MenuRadioItemvalueRadio item