A button group which provides a default action with one click while revealing related alternatives through a dropdown menu. Best for when users typically want one action but occasionally need variants.
1import { CopyIcon, FileTextIcon } from "@phosphor-icons/react";2import { Icon } from "@ngrok/mantle/icon";3import { SplitButton } from "@ngrok/mantle/split-button";4 5<SplitButton.Root>6 <SplitButton.PrimaryAction icon={<CopyIcon />}>Copy page</SplitButton.PrimaryAction>7 <SplitButton.MenuTrigger label="Open actions menu" />8 <SplitButton.MenuContent>9 <SplitButton.MenuItem>10 <Icon svg={<CopyIcon />} />11 Copy page12 </SplitButton.MenuItem>13 <SplitButton.MenuItem>14 <Icon svg={<FileTextIcon />} />15 View as Markdown16 </SplitButton.MenuItem>17 </SplitButton.MenuContent>18</SplitButton.Root>;Compose the parts of a SplitButton together to build your own:
SplitButton.Root├── SplitButton.PrimaryAction├── SplitButton.MenuTrigger└── SplitButton.MenuContent └── SplitButton.MenuItemWhen you want to render something else as a SplitButton.MenuItem, you can use the asChild prop to compose. This is useful for rendering links as menu items.
1import { DownloadIcon, FileTextIcon } from "@phosphor-icons/react";2import { Icon } from "@ngrok/mantle/icon";3import { SplitButton } from "@ngrok/mantle/split-button";4 5<SplitButton.Root>6 <SplitButton.PrimaryAction icon={<DownloadIcon />}>Download</SplitButton.PrimaryAction>7 <SplitButton.MenuTrigger label="Open download options" />8 <SplitButton.MenuContent>9 <SplitButton.MenuItem>10 <Icon svg={<DownloadIcon />} />11 Download as PDF12 </SplitButton.MenuItem>13 <SplitButton.MenuItem asChild>14 <a href="https://example.com" target="_blank">15 <Icon svg={<FileTextIcon />} />16 Open in new tab17 </a>18 </SplitButton.MenuItem>19 </SplitButton.MenuContent>20</SplitButton.Root>;A button group which provides a default action with one click while revealing related alternatives through a dropdown menu.
All props from div, plus:
The most common action users can trigger with a single click. Renders as a Button with appearance="outlined" and priority="neutral".
All props from Button, except appearance and priority.
The button that opens the split button dropdown menu. Renders as an IconButton with a caret-down icon that rotates when the menu is open.
All props from IconButton, except appearance, size, asChild, and icon (which is redefined as optional below).
The container for the split button dropdown menu content. Appears in a portal with scrolling and animations. Wraps DropdownMenu.Content.
All props from DropdownMenu.Content.
A standard item in the split button dropdown menu that can be selected or activated. Wraps DropdownMenu.Item with gap-2 styling.
All props from DropdownMenu.Item.