Loaders
Loader is the loading indicator, in seven styles chosen with variant: the spinning fan with its label underneath (the default, built on FanFavicon), a circular spinner, text loaders (dots and shimmer) and spinner-with-text layouts (inline, stacked, card). It is a polite live region (role="status"): the spinner, which shows no text, reads its label to screen readers only.
fanspinnerdotsshimmerinlinestackedcardsize is sm, md or lg.
fanspinnerinlinePass icon to use your own mark instead of the built-in fan or ring: an emoji, an image URL or path (including an .svg file or a data: URI), or an element such as an inline <svg>. It is sized to the loader and animated by iconMotion (spin, pulse, bounce or none). dots and shimmer have no mark, so they ignore it.
Props
Loader
variant'fan' | 'spinner' | 'dots' | 'shimmer' | 'inline' | 'stacked' | 'card'Default:'fan'Loader style. fan renders FanFavicon; the others are described above.
size'sm' | 'md' | 'lg'Default:'md'Overall size (fan 32 / 64 / 96 px, ring 16 / 32 / 48 px; the text scales with it).
labelstringDefault:'Loading'Loading text shown by every variant except spinner (which keeps it for screen readers only).
descriptionstringHelper line under the label (card variant only).
iconstring | ReactNodeCustom mark instead of the built-in fan or ring: an emoji, an image URL or path (png, svg, data:…) or an element such as an inline <svg>. Ignored by dots and shimmer.
iconMotion'spin' | 'pulse' | 'bounce' | 'none'Default:'spin'How the custom icon animates.
classNamestringDefault:''Extra classes for the root element.
| Prop | Type | Default | Description |
|---|---|---|---|
variant | 'fan' | 'spinner' | 'dots' | 'shimmer' | 'inline' | 'stacked' | 'card' | 'fan' | Loader style. fan renders FanFavicon; the others are described above. |
size | 'sm' | 'md' | 'lg' | 'md' | Overall size (fan 32 / 64 / 96 px, ring 16 / 32 / 48 px; the text scales with it). |
label | string | 'Loading' | Loading text shown by every variant except spinner (which keeps it for screen readers only). |
description | string | – | Helper line under the label (card variant only). |
icon | string | ReactNode | – | Custom mark instead of the built-in fan or ring: an emoji, an image URL or path (png, svg, data:…) or an element such as an inline <svg>. Ignored by dots and shimmer. |
iconMotion | 'spin' | 'pulse' | 'bounce' | 'none' | 'spin' | How the custom icon animates. |
className | string | '' | Extra classes for the root element. |
FanFavicon
sizenumberDefault:64Size in px.
theme'light' | 'dark'Force a theme instead of following the page.
labelstringAccessible label.
| Prop | Type | Default | Description |
|---|---|---|---|
size | number | 64 | Size in px. |
theme | 'light' | 'dark' | – | Force a theme instead of following the page. |
label | string | – | Accessible label. |
Related hooks and theme:buildFaviconHref