Skip to main content

Spinner

Usage

Definition

Spinners are a visual element used by `Interstitials` to indicate a pending state. Typically this is used when first rendering a component which relies on fetching data from an outside source.

Common Characteristcs

A spinner is a visual element used to indicate a pending state. Typically this is used when first rendering a component which relies on fetching data from an external source.

Usage Guidelines

  • Spinner should be used when an interface is not immediately available.
  • Spinners provide a visual indication that something is happening.
  • Typically, a Spinner will be displayed until data becomes available or when an error is encountered.
  • The Interstitial component provides a best-practice implementation of this pattern and is recommended when using the Interstate library in you app.
<SandboxDemo>
<Message isOpen={true} color="info" title="Before using Spinner">
<p>
We recommend using{" "}
<a href="docs/components/interstitial">Interstitial</a> for
a consistent implementation when orchestrating loading/suspense states. The{" "}
Spinner component is offered only as an escape hatch where an interstitial
won't suffice.
</p>
</Message>
</SandboxDemo>
<StopLightList
green={[
"Use to display a loading state.",
"Represent that data has been requested and is pending.",
"Render components immediately with a spinner instead of waiting for data",
'Transition to a "success" or "error" state afterward.',
]}
red={[
"Avoid using Spinner when transitioning between pages or views.",
"Avoid using to present invalid or incomplete states.",
"Avoid using to represent a lack of data.",
]}
/>

Code

Default Spinner

<div className="p-3 bg-white text-center">
<Spinner />
</div>

Spinner Color

Set the color of a spinner - accepts Bootstrap utility classes or CSS Hex colors as a string. This does not support named CSS colors or rgb(a) values.

<div className="bg-white text-center">
<div className="row p-3">
<div className="col-3">
<h5>primary</h5>
<Spinner color="primary" />
</div>
<div className="col-3">
<h5>secondary</h5>
<Spinner color="secondary" />
</div>
<div className="col-3">
<h5>success</h5>
<Spinner color="success" />
</div>
<div className="col-3">
<h5>danger</h5>
<Spinner color="danger" />
</div>
</div>
<div className="row p-3">
<div className="col-3">
<h5>info</h5>
<Spinner color="info" />
</div>
<div className="col-3">
<h5>warning</h5>
<Spinner color="warning" />
</div>
<div className="col-3">
<h5>#ff0000</h5>
<Spinner color="#ff0000" />
</div>
<div className="col-3">
<h5>#00ff00</h5>
<Spinner color="#00ff00" />
</div>
</div>
</div>

Color Options

We recommend using Bootstrap utility classes for consistent colors before resorting to CSS Hex colors. The default theme for Interstate includes the following color mappings:

Bootstrap Color NameHex
primary#ffc20e
secondary#005ba8
success#0d8240
danger#c33a00
info#2c90cc
warning#eb9114

Spinner Sizes

You can adjust the dimensions of a spinner using the size prop. It accepts any valid CSS Dimension but we recommend using Bootstrap utility names where possible (sm, lg, xl etc.).

<>
<div className="row p-3 bg-white text-center">
<div className="col-3">
<h5>xs - 15px</h5>
<Spinner size="xs" />
</div>
<div className="col-3">
<h5>sm - 19px</h5>
<Spinner size="sm" />
</div>
<div className="col-3">
<h5>md - 25px</h5>
<Spinner size="md" />
</div>
<div className="col-3">
<h5>lg - 33px</h5>
<Spinner size="lg" />
</div>
</div>
<div className="row p-3 bg-white text-center">
<div className="col-3">
<h5>xl - 47px</h5>
<Spinner size="xl" />
</div>
<div className="col-3">
<h5>xxl - 47px</h5>
<Spinner size="xxl" />
</div>
<div className="col-3">
<h5>Custom Size (string)</h5>
<Spinner size="73px" />
</div>
<div className="col-3">
<h5>Custom Size (number)</h5>
<Spinner size={97} />
</div>
</div>
</>

Size Options

Note: In order to consistently center the spinner, numerical size arguments must be an odd number. Even values will be rendered 1px smaller than indicated in order to calculate the center correctly.

SizeRendered Height
xs15px
sm19px
md25px
lg33px
xl47px
xxl47px
"74px"73px
2019px

Spinner Props

NameTypeDefaultDescription
sizestring,number (odd only)mdSize of spinner*
colorstring#000000Fill color of spinner