Balloon Callout
Open Source
NewControlled or uncontrolled BOM balloon and target linkage with one shared interaction state.
API and behavior
Compound exports, owned slots, interaction law, and family hook routing.
- Required props
BalloonLinkGroup.linkIdBalloonCallout.item- Optional props
defaultActiveleaderBalloonLinkedTarget.asChild- Controlled props
activeonActiveChange- Companion exports
BalloonLinkGroupBalloonCalloutBalloonLinkedTarget- Owned data-slot contract
balloon-link-groupballoon-calloutballoon-callout-glyphballoon-callout-leaderballoon-linked-target
Motif route
MOTIF_REGISTRY.balloon-callout → apparatusTarget('balloon-callout')
Keyboard
Focus entering either linked node activates the pair; focus leaving the group clears it.
Accessibility
The callout and target share stable aria-controls/aria-describedby ids and one interaction state.
Family hooks
Draft consumes outline promotion, leader-line, target, and fixed press hooks.
inactive linkagecontrolled active linkagelong target contentInstallation
npx shadcn@latest add @substrateui/balloon-callout --yesUpgrading a project that installed base before F1? Refresh the shared hooks first:
npx shadcn@latest add @substrateui/base --yes --overwritenpm Dependencies
npm install class-variance-authorityTags
draftballoonbomlinkage