Skip to content

Action Bar

A floating toolbar that provides actions related to the current selection.

Usage

The <ActionBar> component is a floating toolbar that provides actions related to the current selection. Pass it a message and icon to display a status related to the current selection. Pass in <ActionBarIconButton> and <ActionBarButton> components as children to display the available actions.

import {
ActionBar,
ActionBarIconButton,
ActionBarButton,
} from "stylus-ui/ActionBar";
import { Button } from "stylus-ui/Button";
import { faCheck, faCopy, faShare } from "@fortawesome/pro-regular-svg-icons";
import { useState } from "react";
export default () => {
const [isOpen, setIsOpen] = useState(false);
return (
<>
<Button
onClick={() => setIsOpen(true)}
disabled={isOpen}
variant="secondary"
>
{!isOpen ? "Open Action Bar" : "Action Bar is open"}
</Button>
<ActionBar
open={isOpen}
onOpenChange={setIsOpen}
message="3 items selected"
icon={faCheck}
>
<ActionBarIconButton tooltip="Copy" icon={faCopy} />
<ActionBarIconButton tooltip="Share" icon={faShare} />
<ActionBarButton onClick={() => setIsOpen(false)}>
Cancel
</ActionBarButton>
</ActionBar>
</>
);
};

Actions only

To display only actions, omit the message and icon props from <ActionBar>.

import {
ActionBar,
ActionBarIconButton,
ActionBarButton,
} from "stylus-ui/ActionBar";
import { Button } from "stylus-ui/Button";
import { faCopy, faShare } from "@fortawesome/pro-regular-svg-icons";
import { useState } from "react";
export default () => {
const [isOpen, setIsOpen] = useState(false);
return (
<>
<Button
onClick={() => setIsOpen(true)}
disabled={isOpen}
variant="secondary"
>
{!isOpen ? "Open Action Bar" : "Action Bar is open"}
</Button>
<ActionBar open={isOpen} onOpenChange={setIsOpen}>
<ActionBarIconButton tooltip="Copy" icon={faCopy} />
<ActionBarIconButton tooltip="Share" icon={faShare} />
<ActionBarButton onClick={() => setIsOpen(false)}>
Reject
</ActionBarButton>
<ActionBarButton onClick={() => setIsOpen(false)} variant="primary">
Approve
</ActionBarButton>
</ActionBar>
</>
);
};

Position

By default, the <ActionBar> will be positioned at the bottom of the screen. You can change this by setting the side prop to top.

import { ActionBar, ActionBarButton } from "stylus-ui/ActionBar";
import { Button } from "stylus-ui/Button";
import { useState } from "react";
export default () => {
const [isOpen, setIsOpen] = useState(false);
return (
<>
<Button
onClick={() => setIsOpen(true)}
disabled={isOpen}
variant="secondary"
>
{!isOpen ? "Open Action Bar" : "Action Bar is open"}
</Button>
<ActionBar
open={isOpen}
onOpenChange={setIsOpen}
message="Top action bar"
side="top"
>
<ActionBarButton onClick={() => setIsOpen(false)}>
Close
</ActionBarButton>
</ActionBar>
</>
);
};

API Reference

ActionBar

Inherits properties from Popover.

Prop
Type
Default
children ReactNode
className string
icon IconDefinition
iconClassName string
message string
side "bottom""top" "bottom"

ActionBarIconButton

Displays an icon button with a tooltip.

Inherits all properties (onClick, disabled, etc.) from Button.

Prop
Type
Default
icon Required IconProp
tooltip Required string

ActionBarButton

Displays a text button with an optional tooltip.

Inherits all properties (onClick, disabled, etc.) from Button.

Prop
Type
Default
children Required ReactNode
tooltip string