DropdownMenu

Trigger-activated dropdown with items, groups, separators, shortcuts, checkbox items, radio groups, and nested submenus. Built on @radix-ui/react-dropdown-menu.

Usage

tsx
import { DropdownMenu } from 'fxui-core';

<DropdownMenu>
  <DropdownMenu.Trigger asChild>
    <Button>Options</Button>
  </DropdownMenu.Trigger>
  <DropdownMenu.Content>
    <DropdownMenu.Item icon="✏️" shortcut="⌘E">Edit</DropdownMenu.Item>
    <DropdownMenu.Item icon="📋">Duplicate</DropdownMenu.Item>
    <DropdownMenu.Separator />
    <DropdownMenu.Item icon="🗑️" destructive>Delete</DropdownMenu.Item>
  </DropdownMenu.Content>
</DropdownMenu>

With Groups and Labels

tsx
<DropdownMenu.Content>
  <DropdownMenu.Label>My Account</DropdownMenu.Label>
  <DropdownMenu.Item icon="👤">Profile</DropdownMenu.Item>
  <DropdownMenu.Item icon="⚙️">Settings</DropdownMenu.Item>
  <DropdownMenu.Separator />
  <DropdownMenu.Item icon="🚪" destructive>Log out</DropdownMenu.Item>
</DropdownMenu.Content>

Checkbox Items

tsx
const [grid, setGrid] = React.useState(true);

<DropdownMenu.CheckboxItem checked={grid} onCheckedChange={setGrid}>
  Show Grid
</DropdownMenu.CheckboxItem>

Radio Group

tsx
const [theme, setTheme] = React.useState('system');

<DropdownMenu.RadioGroup value={theme} onValueChange={setTheme}>
  <DropdownMenu.RadioItem value="light">Light</DropdownMenu.RadioItem>
  <DropdownMenu.RadioItem value="dark">Dark</DropdownMenu.RadioItem>
  <DropdownMenu.RadioItem value="system">System</DropdownMenu.RadioItem>
</DropdownMenu.RadioGroup>

Submenu

tsx
<DropdownMenu.Sub>
  <DropdownMenu.SubTrigger>Open recent</DropdownMenu.SubTrigger>
  <DropdownMenu.SubContent>
    <DropdownMenu.Item>index.tsx</DropdownMenu.Item>
    <DropdownMenu.Item>package.json</DropdownMenu.Item>
  </DropdownMenu.SubContent>
</DropdownMenu.Sub>

Item Props

| Prop | Type | Default | |------|------|---------| | icon | React.ReactNode | — | | shortcut | string | — | | destructive | boolean | false | | disabled | boolean | false |