Action Node
betaA workflow node card whose round action buttons spring out in an arc around its top-end corner on hover or from a More actions trigger.
- Display
- 2 files
- 1 npm package
- Accessibility notes
pnpm dlx @dowel-ui/cli add action-nodenpm packages installed: class-variance-authority.
import { ActionNode } from "@/components/ui/action-node";Default
Gallery
Controlled
Right To Left
<ActionNode>
| Prop | Type | Default |
|---|---|---|
actions (required)The fan's buttons; two to four read best. | ActionNodeAction[] | — |
heading (required)The node's name, e.g. "Node 07". | ReactNode | — |
bounceSpring overshoot, 0–100. | number | 20 |
cornerCard radius in px; the chip's radius derives from it. | number | 20 |
defaultOpen | boolean | false |
description | ReactNode | — |
extraCountShown after the avatars as "+N". | number | 0 |
iconDecorative icon in the chip beside the heading. | ReactNode | — |
onOpenChange | (open: boolean) => void | — |
openWhether the fan is open (controlled). | boolean | — |
peoplePeople shown as overlapping avatars. | ActionNodePerson[] | [] |
peopleLabelNames the avatar list. | string | "People" |
reachArc radius in px, 20–40. | number | 30 |
staggerDelay between buttons, 0–100 (about 0.9ms per step). | number | 55 |
strokeAdds a 1px hairline to the card and the buttons. | boolean | false |
tone | "default" | "inverted" | "default" |
toolbarLabelThe toolbar's accessible name. | string | "Node actions" |
triggerLabelThe trigger's accessible name. | string | "More actions" |
Plus every attribute of <div> except children.
10/10
checks passed
- Tested — passes
- axe assertion — passes
- Keyboard tested — passes
- Storybook examples — passes
- Accessibility documented — passes
- Semantic tokens only — passes
- Motion from tokens — passes
- className merged — passes
- Visible focus — passes
- No fixed widths — passes