About
A Menu displays a list of actions or options that a user can choose. There is no native element to implement a menu in HTML that is widely supported. MenuTrigger and Menu help achieve accessible menu components that can be styled as needed.
Built with React and Tailwind. Copy the prompt and paste it into Claude Code, Cursor or Lovable: your agent adds Menu [react-aria-components] to your project and fits it to your theme.
Code
How Menu [react-aria-components] is used: the demo's code. The component's own source comes with a free account.
Usage.tsx
import { Button } from "@/components/ui/button"
import {
Menu,
MenuItem,
MenuPopover,
MenuTrigger,
} from "@/components/ui/menu"
export function MenuDemo() {
return (
<MenuTrigger>
<Button aria-label="Menu" size="icon" variant="outline">
☰
</Button>
<MenuPopover>
<Menu>
<MenuItem onAction={() => alert("open")}>Open</MenuItem>
<MenuItem onAction={() => alert("rename")}>Rename…</MenuItem>
<MenuItem onAction={() => alert("duplicate")}>Duplicate</MenuItem>
<MenuItem onAction={() => alert("share")}>Share…</MenuItem>
<MenuItem onAction={() => alert("delete")}>Delete…</MenuItem>
</Menu>
</MenuPopover>
</MenuTrigger>
)
}
![Menu [react-aria-components] preview](https://cdn.21st.dev/cdn-cgi/image/fit=scale-down,width=1080,quality=75,format=webp/https://cdn.21st.dev/user_jolbol1/menu/978/preview.png)
![Tag Group [react-aria-components]](https://cdn.21st.dev/cdn-cgi/image/fit=scale-down,width=640,quality=75,format=webp/https://cdn.21st.dev/user_jolbol1/tag-group/891/preview.png)
![Date Range Picker [react-aria-components]](https://cdn.21st.dev/cdn-cgi/image/fit=scale-down,width=640,quality=75,format=webp/https://cdn.21st.dev/user_jolbol1/date-range-picker/default/preview.png)
![Grid List [react-aria-components]](https://cdn.21st.dev/cdn-cgi/image/fit=scale-down,width=640,quality=75,format=webp/https://cdn.21st.dev/user_jolbol1/grid-list/default/preview.png)
![Switch [react-aria-components]](https://cdn.21st.dev/cdn-cgi/image/fit=scale-down,width=640,quality=75,format=webp/https://cdn.21st.dev/user_jolbol1/switch/1023/preview.png)
![Select [react-aria-components]](https://cdn.21st.dev/cdn-cgi/image/fit=scale-down,width=640,quality=75,format=webp/https://cdn.21st.dev/user_jolbol1/select/864/preview.png)
![Range Calendar [react-aria-components]](https://cdn.21st.dev/cdn-cgi/image/fit=scale-down,width=640,quality=75,format=webp/https://cdn.21st.dev/user_jolbol1/range-calendar/default/preview.png)

![Slider [react-aria-components]](https://cdn.21st.dev/cdn-cgi/image/fit=scale-down,width=640,quality=75,format=webp/https://cdn.21st.dev/user_jolbol1/slider/827/preview.png)







