Theme studio

Design a theme, preview it live, then export it. Saved in this browser.

Quick picks #10b981
Generated scale
50100200300400500600700800900
Some text is below AA

Spinner

  • Stable
  • WCAG 2.2 evidence
  • RTL

Small loading indicator. Presentational: renders in React Server Components. Animation runs only when the user has not asked for reduced motion (WCAG 2.3.3); the static glyph still conveys the state, and the accessible name (label) carries it for assistive technology (WCAG 4.1.3).

import { Spinner } from "@nexera-ui/react";
Loading example…
2
examples
4
props
3
live controls
1
platform
5
WCAG criteria
1
block uses it

Try every prop. Copy the code.

Change the props and the code updates. Check light and dark, LTR and RTL, and phone width.

Loading…
tone
size
label
Generated code
import { Spinner } from "@nexera-ui/react";

<Spinner />

Examples 1

The same examples as Storybook, rendered live. Open Code to copy one.

Matrix

Every Type, Tone and Size. on-color is shown on a brand fill.

Loading example…

Props 4

Press "Try it" on a card to load that prop into the playground.

4 props shown

typeNexera
"ring" | "dots" | "spokes"

Shape of the indicator.

Default ring
toneNexera
"brand" | "neutral" | "on-color"

Colour set. Use on-color on a brand or dark fill.

Default brand
sizeNexera
"xs" | "sm" | "md" | "lg" | "xl"

Size: 12, 16, 24, 40 or 56 px.

Default xs
labelNexera
string

Accessible name, for example "Loading payroll". When set, the spinner is a polite status region whose text is announced; when omitted it is decorative (aria-hidden), for use inside a control that announces its own state.

Default –

* Required. React Aria props shown are the ones most apps use; the component accepts the rest of its React Aria props too.

Accessible by default.

Built on React Aria, and covered by the WCAG 2.2 evidence generated on every build.

WCAG 2.2 evidence

4 direct · 1 supporting
  • 1.1.1Non-text ContentLevel A · tested directly
  • 1.3.1Info and RelationshipsLevel A · tested directly
  • 2.3.3Animation from InteractionsLevel AAA · supporting test
  • 4.1.2Name, Role, ValueLevel A · tested directly
  • 4.1.3Status MessagesLevel AA · tested directly

Fits any width.

Nexera components respond to the space they are given. Drag the corner of the frame, or pick a width.

0 px · drag the corner

Styling hooks

Pass className to add Tailwind classes (merged last). State is exposed as data attributes, so you can style it with variants like data-pressed:.

Usage
<Spinner className="shadow-sm" />

Used in blocks

Related components