import { WyrdSpinner } from "@wyrd-company/react";
<WyrdSpinner size="md" />import 'package:wyrd_flutter/wyrd_flutter.dart';
WyrdSpinner(
size: 'md',
) feedback — wyrd.component.spinner
Indeterminate loading indicator with a localized default status announcement.
Install @wyrd-company/react or the Flutter package and use it directly —
your DESIGN.md does the styling.
$schema: https://thewyrdingway.dev/schemas/component-contract.schema.ymlcontractVersion: 0.1.0identity: name: Spinner tag: wyrd-spinner package: wyrd.component.spinner title: Spinner summary: Indeterminate loading indicator with a localized default status announcement.relationships: related-to: - quality-parity-and-gatesclassification: category: feedback composition: leaf interactive: falsetarget-strategy: react: required flutter: requiredsurface: properties: - name: size type: kind: enum values: - sm - md - lg required: false default: md reflects: true serializable: true summary: Visual spinner size. - name: label type: kind: string required: false serializable: true summary: Accessible status text; when omitted the component-owned localized loading message is used. slots: [] events: [] states: - name: default source: platform summary: Medium indeterminate spinner. parts: - name: root summary: Status root. - name: indicator summary: Visual rotating indicator. tokens: color: color.primary size: sm: spacing.md md: spacing.lg lg: spacing.xlmessages: - key: spinner.loading description: Accessible status announced by an unlabeled spinner.obligations: accessibility: role: status name: Label property provides the accessible name; when omitted the component-owned localized loading message provides it. keyboard: [] semantics: - Exposes status semantics with label-or-message text. - The visual indicator is hidden from the accessibility tree. behavior: model: stateless interactions: [] hostEffects: [] conditions: - rtl - reduced-motion - cvd-deuteranopia - density-compact sdui: status: serializable serializableProperties: - size - label serializableSlots: [] eventBindings: [] notes: Spinner serializes its visual size and optional accessible label.examples: - name: default state: default properties: size: md slots: {} - name: small state: default properties: size: sm slots: {} - name: labeled state: default properties: size: lg label: Syncing slots: {}
Generated from the contract's examples block.
Previews are the published @wyrd-company/react component, themed by the
brand's role tokens — flip the site's light/dark toggle and they follow.
import { WyrdSpinner } from "@wyrd-company/react";
<WyrdSpinner size="md" />import 'package:wyrd_flutter/wyrd_flutter.dart';
WyrdSpinner(
size: 'md',
) import { WyrdSpinner } from "@wyrd-company/react";
<WyrdSpinner size="sm" />import 'package:wyrd_flutter/wyrd_flutter.dart';
WyrdSpinner(
size: 'sm',
) import { WyrdSpinner } from "@wyrd-company/react";
<WyrdSpinner size="lg" label="Syncing" />import 'package:wyrd_flutter/wyrd_flutter.dart';
WyrdSpinner(
size: 'lg',
label: 'Syncing',
) | Name | Type | Default | Summary |
|---|---|---|---|
size | sm | md | lg | md | Visual spinner size. |
label | string | undefined | Accessible status text; when omitted the component-owned localized loading message is used. |
The contract's token bindings. Open the shared contextual sidebar from any example; primary swatches reflect the color you pick there. Error swatches show the active preset's values; editing any knob switches to custom and resets error to TWW · Ink.
| Binding | Token | |
|---|---|---|
color | color.primary | |
size.sm | spacing.md | |
size.md | spacing.lg | |
size.lg | spacing.xl |
| State | Source | Summary |
|---|---|---|
default | platform | Medium indeterminate spinner. |
From the contract's accessibility obligations. Role status; Label property provides the accessible name; when omitted the component-owned localized loading message provides it.
Status: serializable. Spinner serializes its visual size and optional accessible label.
| Serializable | Members |
|---|---|
| Properties | size, label |
| Slots | — |
| Events | — |