Skip to content

FloatingBar

FloatingBar

<FloatingBar visible={selected.length > 0} aria-label="Bulk actions">
<div>
<Text size="sm">{selected.length} selected</Text>
<Button tone="danger" variant="ghost" size="sm">Delete</Button>
<Button variant="solid" size="sm">Export</Button>
</div>
</FloatingBar>

Install: @helixui/core

import { FloatingBar } from '@helixui/core'

status: stable · since: 0.1.0

Tags: floating, bulk-actions, selection, toolbar

Anatomy

┌── floating bar ──┐
│ 3 selected ✕ Delete Move ▾ │
└─────────────────┘

Layout

  • displayfixed
  • widthcontent
  • heightcontent
  • intrinsicSizecentered horizontally, near bottom of viewport
  • stackablefalse
  • fullBleedfalse

Visual

A pill-shaped surface with strong shadow (shadow.lg) that floats over the page content. Shows a leading status (e.g. “3 selected”), a divider, then trailing actions.

Props

NameTypeDefaultDescription
placement'bottom' | 'top'bottomEdge to anchor to.
visiblebooleantrueShow/hide with animation. Use to reveal on selection.

Slots

  • children — a single pill-shaped wrapper that contains the actions

Tokens used

color.bg.surface.default, color.border.default, color.text.primary, radius.full, space.2, space.3, space.4, font.family.sans, font.size.sm, shadow.lg

Accessibility

Role: toolbar

Notes

  • Provide an aria-label on the bar describing the available actions (“Bulk actions on N items”).
  • The bar is aria-hidden when not visible, removing it from the tab order.

Composes with

ComponentRelationNote
TablesiblingCommon over a Table during multi-select.
ListsiblingOr over a List with selectable rows.
Buttonsibling
IconButtonsibling

Prompt examples

These are the AI prompt → JSX mappings used by the helixui prompt DSL and integrations like Cursor / Claude Code.

bulk row actions

“floating bar showing 3 selected with Delete and Move”

<FloatingBar visible={count > 0} status={`${count} selected`}>
<Button onPress={remove}>Delete</Button>
<Button onPress={move}>Move</Button>
</FloatingBar>