Expandable Action Bar

A toolbar that shows just icons until hovered or focused, then widens into labeled buttons with badges and shortcut hints, while a shared highlight follows the current item.

Preview

Expandable Action Bar preview width

Install

Add it with the shadcn CLI, or copy the source manually.

$ bunx --bun shadcn add @karaui/expandable-action-bar
@karaui not found? Add it to components.json
{
  "registries": {
    "@karaui": "https://karaui.kamisama-v0.my.id/r/{name}.json"
  }
}

@karaui is in shadcn's public registry directory, so the latest CLI needs no setup. On an older CLI, merge this into the existing file once and every @karaui/… install resolves.

API Reference

items
ExpandableActionBarItem[]
—
expanded?
boolean
—
defaultExpanded?
boolean
false
onExpandedChange?
((expanded: boolean) => void)
—
activeId?
string
—
onAction?
((item: ExpandableActionBarItem) => void)
—
size?
"sm" | "md"
md
expandOnHover?
boolean

Expand when a pointer that hovers rests on the bar. Default true. It also governs the touch equivalent: with no hover to reveal the labels, the first tap expands the bar and runs no action, and the second one acts. Set false to make every tap and click act immediately.

true
expandOnFocus?
boolean
true
collapseDelay?
number
90
className?
string
—
classNames?
ExpandableActionBarClassNames
—
renderItem?
((item: ExpandableActionBarItem, state: { expanded: boolean; active: boolean; }) => ReactNode)
—

Keep in mind

Some components on this site are inspired by or recreated from existing work across the web. I'm not here to take credit; just to learn, experiment, and sometimes push things a bit further. If something looks familiar and I forgot to mention you, reach out and I'll fix that right away.

Updated