Floating Actions

A floating bar for surfacing contextual actions, typically shown when items are selected.
1<FloatingActions variant="inline" aria-label="Selection actions">
2 <Chip
3 variant="outline"
4 size="large"
5 color="accent"
6 leadingIcon={<CheckCircledIcon />}
7 isDismissible
8 >
9 2 selected
10 </Chip>
11 <FloatingActions.Separator />
12 <Button variant="outline" color="neutral" size="small">
13 Move to
14 </Button>
15 <Button variant="outline" color="neutral" size="small">

Anatomy

Import and assemble the component along with other primitives. FloatingActions provides the container (built on top of Separator for the divider); everything inside is freely composable.

1import { FloatingActions, Chip, Button } from '@raystack/apsara'
2
3<FloatingActions aria-label="Selection actions">
4 <Chip isDismissible>2 selected</Chip>
5 <FloatingActions.Separator />
6 <Button>Move to</Button>
7 <Button>Actions</Button>
8</FloatingActions>

API Reference

Root

The container. Renders as a role="toolbar" element by default and pins itself to the viewport (variant="floating").

Prop

Type

Separator

A vertical divider sized to the bar's content.

Prop

Type

Variants

Floating

The default. Renders with position: fixed and is anchored to the viewport via side and align. Use this when the bar should follow the user as the page scrolls (bulk-selection toolbars, contextual action trays).

1<FloatingActions side="bottom" align="center" aria-label="Selection actions">
2 <Chip
3 variant="outline"
4 size="large"
5 color="accent"
6 leadingIcon={<CheckCircledIcon />}
7 isDismissible
8 >
9 2 selected
10 </Chip>
11 <FloatingActions.Separator />
12 <Button variant="outline" color="neutral" size="small">
13 Move to
14 </Button>
15 <Button variant="outline" color="neutral" size="small">

Inline

Opt out of viewport positioning when you want the bar to flow with surrounding content (e.g. inside a card, table cell, or storybook frame).

1<FloatingActions variant="inline" aria-label="Selection actions">
2 <Chip
3 variant="outline"
4 size="large"
5 color="accent"
6 leadingIcon={<CheckCircledIcon />}
7 isDismissible
8 >
9 2 selected
10 </Chip>
11 <FloatingActions.Separator />
12 <Button variant="outline" color="neutral" size="small">
13 Move to
14 </Button>
15 <Button variant="outline" color="neutral" size="small">

Examples

Bulk actions

Pair a dismissible Chip with action buttons to build a selection toolbar.

1<FloatingActions variant="inline" aria-label="Bulk actions">
2 <Chip
3 variant="outline"
4 size="large"
5 color="accent"
6 leadingIcon={<CheckCircledIcon />}
7 isDismissible
8 >
9 5 selected
10 </Chip>
11 <FloatingActions.Separator />
12 <Button variant="outline" color="neutral" size="small">
13 Archive
14 </Button>
15 <Button variant="outline" color="neutral" size="small">

Icon-only actions

Use IconButton inside the bar for compact toolbars.

1<FloatingActions variant="inline" aria-label="Row actions">
2 <IconButton aria-label="Edit" variant="text" color="neutral" size="small">
3 <Pencil2Icon />
4 </IconButton>
5 <IconButton aria-label="Upload" variant="text" color="neutral" size="small">
6 <UploadIcon />
7 </IconButton>
8 <FloatingActions.Separator />
9 <IconButton
10 aria-label="More info"
11 variant="text"
12 color="neutral"
13 size="small"
14 >
15 <InfoCircledIcon />

Accessibility

  • The root uses role="toolbar" so it is announced as a group of interactive controls. Override the role prop when a different grouping is more appropriate.
  • The separator renders with role="separator" and aria-orientation="vertical" via the Base UI primitive, communicating structural grouping between action clusters.
  • Provide an aria-label on the root when the toolbar's purpose is not obvious from its contents (e.g. aria-label="Selection actions").