Spinner

Indeterminate loader in three looks; sizes itself off the text it sits beside.

Spinner playground

Inherits the line it sits on
size inherit draws at 1em, so it matches whatever text it sits beside; the named sizes are type tokens. thickness scales with the diameter.

Install Spinner

1. New project? One command installs the package and wires everything - see Installation:

bash
pnpm dlx zyncat-ui init

2. Import the component - it loads its own stylesheet:

tsx
import { Spinner } from '@zyncat/ui/spinner';

Usage

tsx
import { Spinner } from '@zyncat/ui/spinner';
 
<Spinner variant="dots" size="lg" />

Compose Spinner in your application. No Tailwind or external styling library is required; every value resolves from Zyncat UI's token vocabulary.

Spinner props

Spinner

PropTypeDefaultDescription
sizeSpinnerSize'inherit'Diameter. `inherit` tracks the parent's font size at 1em, so a spinner beside a label always matches it; for any other size set `style={{ fontSize }}`.
thicknessSpinnerThickness'regular'Stroke weight, scaled to the diameter so it holds up at every size.
variantSpinnerVariant'arc'Which loader to draw.
labelstring | null'Loading'What assistive tech announces. Pass `null` when something nearby already announces the wait - a button's `aria-busy`, an enclosing `role="status"` - and the spinner turns decorative rather than announcing it twice.
delaybooleanfalseHold invisible for a beat before fading in, so work that finishes quickly never flashes a spinner.
classNamestring—Extra class(es) merged onto the root.
styleCSSProperties—Inline styles merged onto the root.
Set in Geist & Newsreader — animated by the house engineZyncat UI · Rev 0.11 · MIT · Built by Tabsir Ahammed · Source on GitHub