Dropdown Menu
A dropdown menu to display actions.
import { Button } from "@/components/ui/button/button";
import {
DropdownMenu,
DropdownMenuItem,
DropdownMenuPopup,
DropdownMenuPortal,
DropdownMenuPositioner,
DropdownMenuSeparator,
DropdownMenuSpacer,
DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu/dropdown-menu";
export default function DropdownMenuDemo() {
return (
<DropdownMenu>
<DropdownMenuTrigger
render={
<Button variant="outline">
<span>Actions</span>
</Button>
}
/>
<DropdownMenuPortal>
<DropdownMenuPositioner sideOffset={8}>
<DropdownMenuPopup render={<ul />}>
<DropdownMenuSpacer />
<DropdownMenuItem render={<li />}>Edit</DropdownMenuItem>
<DropdownMenuItem render={<li />}>Duplicate</DropdownMenuItem>
<DropdownMenuItem render={<li />}>Share</DropdownMenuItem>
<DropdownMenuSeparator />
<DropdownMenuItem render={<li />}>Archive</DropdownMenuItem>
<DropdownMenuItem render={<li />}>Delete</DropdownMenuItem>
<DropdownMenuSpacer />
</DropdownMenuPopup>
</DropdownMenuPositioner>
</DropdownMenuPortal>
</DropdownMenu>
);
}
npx shadcn@latest add @roiui/dropdown-menunpx shadcn@latest add @roiui/dropdown-menu-tailwindanatomy
<DropdownMenu>
<DropdownMenuTrigger />
<DropdownMenuPortal>
<DropdownMenuPositioner>
<DropdownMenuPopup>
<DropdownMenuArrow />
<DropdownMenuItem />
<DropdownMenuSeparator />
<DropdownMenuSubmenuRoot>
<DropdownMenuSubmenuTrigger />
</DropdownMenuSubmenuRoot>
</DropdownMenuPopup>
</DropdownMenuPositioner>
</DropdownMenuPortal>
</DropdownMenu>
import { Button } from "@/components/ui/button/button";
import {
DropdownMenu,
DropdownMenuItem,
DropdownMenuPopup,
DropdownMenuPortal,
DropdownMenuPositioner,
DropdownMenuSeparator,
DropdownMenuSubmenuRoot,
DropdownMenuSubmenuTrigger,
DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu/dropdown-menu";
import styles from "./dropdown-menu-submenu.module.css";
export default function DropdownMenuSubmenu() {
return (
<DropdownMenu>
<DropdownMenuTrigger render={<Button variant="outline">Open Menu</Button>} />
<DropdownMenuPortal>
<DropdownMenuPositioner sideOffset={8}>
<DropdownMenuPopup>
<div className={styles.spacer} />
<DropdownMenuItem>
<span className={styles.menuItemText}>Profile</span>
</DropdownMenuItem>
<DropdownMenuItem>
<span className={styles.menuItemText}>Settings</span>
</DropdownMenuItem>
<DropdownMenuSeparator />
<DropdownMenuSubmenuRoot>
<DropdownMenuSubmenuTrigger>
<span className={styles.menuItemText}>More Options</span>
</DropdownMenuSubmenuTrigger>
<DropdownMenuPortal>
<DropdownMenuPositioner align="start" alignOffset={-4} side="right" sideOffset={-4}>
<DropdownMenuPopup>
<div className={styles.spacer} />
<DropdownMenuItem>
<span className={styles.menuItemText}>Export</span>
</DropdownMenuItem>
<DropdownMenuItem>
<span className={styles.menuItemText}>Import</span>
</DropdownMenuItem>
<DropdownMenuItem>
<span className={styles.menuItemText}>Share</span>
</DropdownMenuItem>
<div className={styles.spacer} />
</DropdownMenuPopup>
</DropdownMenuPositioner>
</DropdownMenuPortal>
</DropdownMenuSubmenuRoot>
<DropdownMenuSeparator />
<DropdownMenuItem>
<span className={styles.menuItemText}>Logout</span>
</DropdownMenuItem>
<div className={styles.spacer} />
</DropdownMenuPopup>
</DropdownMenuPositioner>
</DropdownMenuPortal>
</DropdownMenu>
);
}