Pricing

Spinner changelog

v1.2.3 (2026-10-20)

  • The default loading status name follows LocaleProvider; an explicit aria-label takes priority. External loading descriptions remain caller-owned text.

  • 2026-09-21: Aligned the usage guide, source Prop table, and Site / AI reading entry. Documentation only; component behavior is unchanged.

  • Spinner-Docs.2026-05-25 Archived the historical changelog from the source header. New changes now belong in this document’s changelog; the source header retains only its role, current key architecture, and documentation path.

v1.2.2 (2026-03-06)

Changes

  • SP-Bridge.3 When an external loopMotion.preset is supplied, Spinner explicitly removes that preset before forwarding motion to the root Frame, avoiding double rotation of the root and inner spinner.

v1.2.1 (2026-03-06)

Changes

  • SP-Bridge.1 Looping animation now consumes Frame loopMotion bridge variables for duration, easing, iteration, direction, and playState.

  • SP-Bridge.2 Default speed still derives from variant + speed: circle = 1000ms / speed and spokes/pills = 800ms / speed. Explicit loopMotion.duration takes precedence.

v1.2.0 (2026-02-23)

Improvements

  • SP-Perf.1 The circle variant changed from a radial-gradient mask to an SVG data URI mask to remove jagged edges at small sizes.

  • SP-Perf.2 SVG <circle> strokes provide vector antialiasing for the ring; the SVG engine renders both inner and outer edges.

  • SP-Refactor.1 Moved sizeMap to a module-level constant and changed all English comments to Chinese.

v1.1.1 (2026-02-03)

Fixes

  • SP-Fix.1 Completed explicit Frame CSS behavior and capability-switch parameters and aligned internal variable naming.

3. Sizes

<div class="flex gap-4 items-end">    <Spinner size={16} />    <Spinner size={32} />    <Spinner size={48} /></div>

4. Colors

Set color through CSS classes.

<Spinner class="text-blue-500" /><Spinner variant="spokes" class="text-green-500" />

5. Speed

<Spinner speed={0.5} /> <!-- 0.5x Slow -->

6. Unified looping-motion bridge

Spinner now exposes unified --snowui-frame-loop-motion-* variables through Frame loopMotion; its internal animation-* properties consume them.

<!-- Default: derived from variant + speed --><Spinner variant="circle" speed={1.5} /> <!-- Explicitly override the Frame looping-motion bridge --><Spinner loopMotion={{ duration: 1200, easing: 'linear', iterationCount: 'infinite' }} />