Spinner
Availability: Spinner is a workspace-only draft. The npm artifacts for
@proto.ui/prototypes-brutalist@0.2.0and@proto.ui/prototypes-brutalist@0.3.0-alpha.1do not export./spinner. The ecosystem release train V-PROTO-UI-0010 remainsdraft; a package in npm does not establish train activation or immutable snapshot evidence. Lifecycle: P-BRUTALIST-SPINNER remainsdraft; this page describes the in-repository implementation, not an active protocol guarantee.
Brutalist Spinner is a direct styled-only visual indicator: a 2px currentColor circular ring with one open arc, no fill or soft shadow. It rotates linearly once per 1000ms only when reduced motion is not requested; prefers-reduced-motion: reduce removes the animation and retains the open edge as a non-color orientation cue.
Spinner is passive, contentless, excluded from the accessibility tree (aria-hidden, roleless, non-focusable), and owns no loading, busy, progress, completion, announcement, or live-region semantics.
size provides sm, md, and lg (16 / 24 / 32 CSS pixels), defaults to md, and restores that default after prop removal.
Compose it inline inside a parent Button or beside authored loading text in a parent-owned status or busy region: operation state, accessible text, placement, alignment, delay, replacement, and focus continuity stay parent-owned; Spinner does not create those semantics.