Skip to content
RefineUI

Spinner

Loading indicator spinner for async actions.

Overview

Machine-readable contract from Component Spec.

component: spinnerexport: Spinnerversion: 1tokens.visual: spinnerattributes: data-refineui=spinner

Anatomy

Partdata-refineui
rootspinner

Variants

AxisValues
sizexs, sm, md, lg, xl, xxl

Accessibility

SlotElementRole
spinnerdivstatus

Layout

PropertyValue
directionlogical
rtltrue

Variant

Select a recipe variant — preview and Recipe → Tokens update together.

Recipe → Tokens

Slot bindings for variant="default" — declared in Spinner/style → tokens.

SlotVariantPropertyTraceSemanticLight → foundationDark → foundationRecipe class
ringtrackspinner.trackbackgroundBrandSubtleprimaryLightGrayneutral800border-refineui-alias-background-brand-subtle
ringindicatorspinner.indicatorbackgroundBrandprimaryBlackprimaryGrayborder-t-refineui-alias-background-brand
labelforegroundspinner.labelforegroundPrimaryprimaryBlackneutralWhitetext-refineui-alias-foreground-primary

Component token trace

All paths in token-trace-v2.json prefixed with spinner.

TraceSemanticLight foundationDark foundationLightDark
spinner.indicatorbackgroundBrandprimaryBlackprimaryGray#212121#D4D4D4
spinner.labelforegroundPrimaryprimaryBlackneutralWhite#212121#FFFFFF
spinner.trackbackgroundBrandSubtleprimaryLightGrayneutral800#E6E6E6#2A2A2A
npm install @refineui/react @refineui/tokens
import { Spinner } from "@refineui/react";
<Spinner size="md" />
<Spinner size="lg" label="Loading..." labelPosition="right" />
PropDefaultTypeDescription
size"xs" | "sm" | "md" | "lg" | "xl" | "xxl"Spinner size tier.
labelReactNodeOptional label text or element.
labelPosition"left" | "right" | "top" | "bottom"Position of the label relative to spinner.