Displays an animated loading indicator.
<Spinner />
This component is based on the span
element and supports common margin props.
Prop | Type | Default |
---|---|---|
size | Responsive<"1" | "2" | "3"> | "2" |
loading | boolean | true |
Use the size
prop to control the size of the spinner.
<Flex align="center" gap="4">
<Spinner size="1" />
<Spinner size="2" />
<Spinner size="3" />
</Flex>
Use the loading
prop to control whether the spinner or its children are displayed. Spinner preserves the dimensions of children when they are hidden and disables interactive elements.
<Flex gap="4">
<Spinner loading={true}>
<Switch defaultChecked />
</Spinner>
<Spinner loading={false}>
<Switch defaultChecked />
</Spinner>
</Flex>
Buttons have their own loading
prop that automatically composes a spinner.
<Button loading>Bookmark</Button>
If you have an icon inside the button, you can use the button’s disabled
state and wrap the icon in a standalone <Spinner>
to achieve a more sophisticated design.
<Button disabled>
<Spinner loading>
<BookmarkIcon />
</Spinner>
Bookmark
</Button>