StartFoundationsComponentsContent

Spinner

A spinner shows that something is loading. It is feedback, not a control.

Stable Figma
OverviewUsageAPIAccessibility
<tk-spinner size="24" label="Loading results"></tk-spinner>

Anatomy

Part What it is
tk-spinner the element; decorative, or a role="status" region when it has a label
blades eight blades with a fading trail that steps around the circle
label hidden text from label; the accessible name

Sizes

<tk-spinner></tk-spinner>
<tk-spinner size="20"></tk-spinner>
<tk-spinner size="24"></tk-spinner>
<tk-spinner size="32"></tk-spinner>
size Box Token Use it for
16 (default) 16px icon-size-16 inline, next to 14px text
20 20px icon-size-20 next to 16px text
24 24px icon-size-24 a loading card or list section
32 32px icon-size-32 a loading panel or empty area

There is no size below 16px or above 32px.

Color

The spinner takes the current text color; there is no color prop. On a plain surface it matches body text. For a quieter spinner, set an icon/* color on its container.

<span style="color: var(--icon-secondary)"><tk-spinner size="24" label="Loading comments"></tk-spinner></span>

Keep the color at least 3:1 against the background.

Motion

  • The trail moves one blade at a time, one turn every 0.8s.
  • With reduced motion turned on, a turn takes 2s. The spinner slows down but never stops, so it doesn't look finished.
  • There is no loading prop: show the spinner while loading and remove it when done.