

<Preview name="BasicSpinnerExample" />

## Overview [#overview]

The **Spinner** component provides a visual indicator for loading states and asynchronous operations.

## Usage [#usage]

```tsx
import { Spinner } from "@tilt-legal/cubitt-components/primitives";
```

```tsx
<Spinner />
```

## Examples [#examples]

### Sizes [#sizes]

The Spinner comes in five size variants: `xs`, `sm`, `md` (default), `lg`, and `xl`.

<Tabs items="['Preview', 'Code']">
  <Tab value="Preview">
    <Preview name="SpinnerSizesExample" />
  </Tab>

  <Tab value="Code">
    ```tsx
    import { Spinner } from "@tilt-legal/cubitt-components/primitives";

    <div className="flex items-center gap-6">
      <Spinner size="xs" />
      <Spinner size="sm" />
      <Spinner size="md" />
      <Spinner size="lg" />
      <Spinner size="xl" />
    </div>;
    ```
  </Tab>
</Tabs>

### Inline [#inline]

Display a spinner inline with text.

<Tabs items="['Preview', 'Code']">
  <Tab value="Preview">
    <Preview name="SpinnerInlineExample" />
  </Tab>

  <Tab value="Code">
    ```tsx
    import { Spinner } from "@tilt-legal/cubitt-components/primitives";

    <p className="text-sm text-muted-foreground">
      Please wait while we process your request{" "}
      <Spinner size="xs" className="inline-block align-middle" />
    </p>;
    ```
  </Tab>
</Tabs>

## API Reference [#api-reference]

### Spinner [#spinner]

Extends all props from `LoaderAnimatedIcon`.

| Prop        | Type                                   | Description                              |
| ----------- | -------------------------------------- | ---------------------------------------- |
| `size`      | `"xs" \| "sm" \| "md" \| "lg" \| "xl"` | Size of the spinner. Defaults to `"md"`. |
| `className` | `string`                               | Additional CSS classes for styling.      |
