---
## Spinner
Animated loading indicator with multiple animation styles and semantic intents.
**Import:** `import { Spinner } from '@urbicon-ui/blocks';`
### Examples
```svelte
```
```svelte
```
### Variants
- intent: current, danger, neutral, primary, secondary, success, warning (default: primary)
- variant: bars, default, dots, pulse, ring (default: default)
- size: lg, md, sm, xl, xs (default: md)
- speed: fast, normal, slow (default: normal)
### Api
| Prop | Type | Required | Default | Description |
| --- | --- | :---: | --- | --- |
| ...HTMLAttributes | `HTMLAttributes` | no | | HTML attributes (excluding: 'children') |
| ...SpinnerVariants | `VariantProps` | no | | Styling variants from SpinnerVariants |
| children | `Snippet` | no | | Optional content rendered beside the spinner (e.g. loading text). |
| class | `string` | no | | Extra classes merged onto the root element. |
| intent | `SpinnerVariants['intent']` | no | | Semantic color applied via `text-*` token. |
| label | `string` | no | | Accessible label announced by screen readers. Defaults to "Loading...". |
| preset | `string` | no | | Apply a named preset registered via ``. Prefer this over `class` overrides when the requested look falls outside the semantic intent palette — presets keep hover/active/dark-mode logic coherent and make the custom look reusable across the project. |
| size | `SpinnerVariants['size']` | no | | Physical dimensions from `xs` (16 px) to `xl` (40 px). |
| slotClasses | `Partial>` | no | | Per-slot class overrides merged with (or replacing, when `unstyled`) tv() output. Slots: base | svg | svgCircle | svgPath | dots | dot | pulse | pulseCenter | pulseRing | ring | ringElement | bars | bar | content | srOnly |
| speed | `SpinnerVariants['speed']` | no | | Animation speed — controls `--spinner-speed` custom property. |
| unstyled | `boolean` | no | | Strip all default tv() classes. Combine with `slotClasses` for full control. |
| variant | `SpinnerVariants['variant']` | no | | Animation style. `default` is an SVG arc, `dots` bounces three dots, `pulse` radiates a sonar ping, `ring` spins cascading borders, `bars` animates vertical equalizer bars. |
| visible | `boolean` | no | | When false the spinner is removed from the DOM. |
Inherited from:
- SpinnerVariants (external)
- Omit, 'children'> (omit-pattern)