Overflow menu primitives for grouping secondary assistant message actions in a custom React UI.
Anatomy
import { ActionBarPrimitive, ActionBarMorePrimitive } from "@assistant-ui/react";
const MessageActions = () => (
<ActionBarPrimitive.Root>
<ActionBarPrimitive.Copy />
<ActionBarPrimitive.Reload />
<ActionBarMorePrimitive.Root>
<ActionBarMorePrimitive.Trigger>
<MoreHorizontalIcon />
</ActionBarMorePrimitive.Trigger>
<ActionBarMorePrimitive.Content>
<ActionBarMorePrimitive.Item onSelect={() => console.log("Edit")}>
Edit
</ActionBarMorePrimitive.Item>
<ActionBarMorePrimitive.Item onSelect={() => console.log("Speak")}>
Read aloud
</ActionBarMorePrimitive.Item>
<ActionBarMorePrimitive.Separator />
<ActionBarMorePrimitive.Item onSelect={() => console.log("Feedback")}>
Submit feedback
</ActionBarMorePrimitive.Item>
</ActionBarMorePrimitive.Content>
</ActionBarMorePrimitive.Root>
</ActionBarPrimitive.Root>
);API Reference
Root
ActionBarMorePrimitiveRootPropsdir?: Directionopen?: booleandefaultOpen?: booleanonOpenChange?: (open: boolean) => voidmodal?: boolean
Trigger
This primitive renders a <button> element unless asChild is set.
ActionBarMorePrimitiveTriggerPropsasChild: boolean= falseChange the default rendered element for the one passed as a child, merging their props and behavior.
Read the Composition guide for more details.render?: ReactElement
| Data attribute | Values |
|---|---|
[data-state] | "open" | "closed" |
[data-disabled] | Present when disabled |
Content
This primitive renders a <div> element unless asChild is set.
ActionBarMorePrimitiveContentPropsasChild: boolean= falseChange the default rendered element for the one passed as a child, merging their props and behavior.
Read the Composition guide for more details.side?: SidesideOffset?: numberalign?: AlignalignOffset?: numberarrowPadding?: numberavoidCollisions?: booleancollisionBoundary?: Boundary | Boundary[]collisionPadding?: number | Partial<Record<Side, number>>sticky?: 'partial' | 'always'hideWhenDetached?: booleanupdatePositionStrategy?: 'optimized' | 'always'onCloseAutoFocus?: FocusScopeProps['onUnmountAutoFocus']Event handler called when auto-focusing on close. Can be prevented.
loop?: RovingFocusGroupProps['loop']Whether keyboard navigation should loop around
onEscapeKeyDown?: DismissableLayerProps['onEscapeKeyDown']onPointerDownOutside?: DismissableLayerProps['onPointerDownOutside']onFocusOutside?: DismissableLayerProps['onFocusOutside']onInteractOutside?: DismissableLayerProps['onInteractOutside']forceMount?: trueUsed to force mounting when more control is needed. Useful when controlling animation with React animation libraries.
render?: ReactElementportalProps?: ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Portal>container?: PortalProps['container']Specify a container element to portal the content into.
forceMount?: trueUsed to force mounting when more control is needed. Useful when controlling animation with React animation libraries.
| Data attribute | Values |
|---|---|
[data-state] | "open" | "closed" |
[data-side] | "top" | "right" | "bottom" | "left" |
[data-align] | "start" | "center" | "end" |
Item
This primitive renders a <div> element unless asChild is set.
ActionBarMorePrimitiveItemPropsdisabled?: booleanonSelect?: (event: Event) => voidasChild: boolean= falseChange the default rendered element for the one passed as a child, merging their props and behavior.
Read the Composition guide for more details.textValue?: stringrender?: ReactElement
| Data attribute | Values |
|---|---|
[data-disabled] | Present when disabled |
[data-highlighted] | Present when highlighted |
Separator
This primitive renders a <div> element unless asChild is set.
ActionBarMorePrimitiveSeparatorPropsasChild: boolean= falseChange the default rendered element for the one passed as a child, merging their props and behavior.
Read the Composition guide for more details.render?: ReactElement