@szhsin/react-menu
Version:
React component for building accessible menu, dropdown, submenu, context menu, and more
67 lines (50 loc) • 2.05 kB
Markdown
# React-Menu
> An accessible, keyboard-friendly React menu library
**[Live examples and docs](https://szhsin.github.io/react-menu/)**
[](https://www.npmjs.com/package/@szhsin/react-menu)
[](https://www.npmjs.com/package/@szhsin/react-menu)
[](https://bundlephobia.com/package/@szhsin/react-menu)
[](https://snyk.io/test/github/szhsin/react-menu)
## Features
- [Lightweight](https://bundlephobia.com/package/@szhsin/react-menu), unstyled React menu components
- Unlimited submenu nesting
- Supports dropdown, hover, and context menus
- Radio and checkbox menu items
- Flexible positioning options
- Full keyboard interaction support
- Compatible with React 18+ concurrent rendering
- Supports server-side rendering
- Implements [WAI-ARIA menu](https://www.w3.org/WAI/ARIA/apg/patterns/menu/) pattern
## Install
with npm
```bash
npm install @szhsin/react-menu
```
or with Yarn
```bash
yarn add @szhsin/react-menu
```
## Usage
```jsx
import { Menu, MenuItem, MenuButton, SubMenu } from '@szhsin/react-menu';
export default function App() {
return (
<Menu menuButton={<MenuButton>Open menu</MenuButton>}>
<MenuItem>New File</MenuItem>
<MenuItem>Save</MenuItem>
<SubMenu label="Edit">
<MenuItem>Cut</MenuItem>
<MenuItem>Copy</MenuItem>
<MenuItem>Paste</MenuItem>
</SubMenu>
<MenuItem>Print...</MenuItem>
</Menu>
);
}
```
**[Edit on CodeSandbox](https://codesandbox.io/s/react-menu-starter-3ez3c)**<br><br>
**[Visit more examples and docs](https://szhsin.github.io/react-menu/)**<br><br>
**[FAQs](docs/FAQs.md)**<br><br>
Still on an old version? Please checkout our [migration guides](docs/migration/index.md).
## License
[MIT](https://github.com/szhsin/react-menu/blob/master/LICENSE) Licensed.