Skip to content

Spinner ​

Loading indicator (role=status)

"Busy" with no shape to promise and no percentage to show — beside a label, in a table cell, inside a button (BlessButton loading does it). An outline square with one open edge, turning: the plate, spinning. color="current" (default) takes the text colour it sits beside — busy is not a choice, so it stays ink; accent is for a spinner on something the person just chose; under prefers-reduced-motion it turns at half speed rather than stopping, because a stopped loader reads as done.

It announces itself as a status named label ("Loading" by default — say what is loading when you can). When a parent already says it's busy — a button with aria-busy, a region with its own status — pass label="" and the spinner is decorative, so nothing is announced twice; the library's own components do this.

Content that isn't there yet, with a known shape: Skeleton. A region that must stay visible but untouchable: BlockUI. A page-level line: LoadingBar. A number: CircularProgress.

Basic

Usage ​

ts
import { BlessSpinner } from "blessing-ui";

API ​

Props

NameTypeDefaultDescription
size"md" | "sm" | "lg""md"
color"text" | "accent" | "current""current"
labelstring"Loading"screen-reader text (role=status); "" when a parent already announces — then it's decorative

Released under the MIT License. Character names and artwork belong to their owners.