Major Chords
ActionBarMore
Overflow dropdown menu for the message action bar with export markdown and custom actions.
Overview
ActionBarMore renders a "..." trigger button that opens a dropdown with additional actions like exporting as markdown. It wraps ActionBarMorePrimitive from assistant-ui.
Demo
When to use
- Add overflow actions to message action bars
- Provide "Export as Markdown" functionality
- Add custom per-message actions (share, report, etc.)
Features
- Built-in export: Includes "Export as Markdown" action out of the box
- Custom actions: Add any number of custom actions with labels, icons, and handlers
- Dropdown positioning: Configurable side and alignment
- Interaction lock: Prevents the action bar from auto-hiding while the dropdown is open
Props
| Prop | Type | Default | Description |
|---|---|---|---|
actions | ActionBarMoreAction[] | ["export-markdown"] | Actions to render |
className | string | — | Trigger button class |
menuClassName | string | — | Dropdown container class |
itemClassName | string | — | Menu item class |
iconClassName | string | — | Icon class |
side | "top" | "right" | "bottom" | "left" | "bottom" | Dropdown position |
align | "start" | "center" | "end" | "start" | Dropdown alignment |
triggerIcon | ReactNode | — | Custom trigger icon |
renderTrigger | () => ReactNode | — | Custom trigger renderer |
Basic Usage
import { ActionBarMore } from "@assistant-ui/chords";
// Inside an ActionBarPrimitive.Root
<ActionBarPrimitive.Root>
<CopyButton />
<ActionBarMore />
</ActionBarPrimitive.Root>With Custom Actions
<ActionBarMore
actions={[
"export-markdown",
{
label: "Share",
icon: <ShareIcon className="size-4" />,
onClick: () => handleShare(),
},
]}
/>Underlying Primitives
ActionBarMore wraps:
ActionBarMorePrimitive.Root— Radix DropdownMenu with action bar interaction lockingActionBarMorePrimitive.Trigger— The "..." buttonActionBarMorePrimitive.Content— Dropdown container with portalActionBarMorePrimitive.Item— Each menu itemActionBarPrimitive.ExportMarkdown— Built-in export action
Must be rendered inside a message context (MessagePrimitive.Root). Best used inside ActionBarPrimitive.Root for proper auto-hide interaction locking.