Malevich

Primitives/

Dots

Three pulsing dots, inline flow. Reduced-motion aware.

Dots

Three small dots that pulse in sequence — a quieter, more inline-friendly loading indicator than Spinner. CSS-only.

When to use

Variants

Variant Class Use for
Default .dots Ink-regular dots, default size
Accent .dots.-accent Accent-colored, for emphasis
Subtle .dots.-subtle De-emphasized, for muted contexts
Inverse .dots.-inverse On dark / accent surfaces
Large .dots.-l Larger dots and gap

Anatomy

<span class="dots" role="status" aria-label="Loading">
  <span class="dots__item"></span>
  <span class="dots__item"></span>
  <span class="dots__item"></span>
</span>

<!-- Inside running text -->
<p>
  Sending message
  <span class="dots -subtle" role="status" aria-label="Loading">
    <span class="dots__item"></span>
    <span class="dots__item"></span>
    <span class="dots__item"></span>
  </span>
</p>

Tokens used

From semantic tier

Component-tier (defined inline)

Accessibility

Authors set role="status" and aria-label="Loading" on the outer .dots element so assistive technology announces the loading state.

The three .dots__item children are presentational; they do not need ARIA attributes. They render purely as visual rhythm.

The component honors prefers-reduced-motion: reduce by removing the pulse animation and showing the dots at a constant opacity.

Edge cases

Do

Don't