

<Preview name="ShimmerDefaultExample" />

## Overview [#overview]

`Shimmer` renders animated text for temporary chat states such as thinking, searching, or streaming.

## Usage [#usage]

```tsx
import { Shimmer } from "@tilt-legal/cubitt-components/chat-elements";
```

## Examples [#examples]

### Default [#default]

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

  <Tab value="Code">
    ```tsx
    <Shimmer>Reviewing sources and preparing a response...</Shimmer>
    ```
  </Tab>
</Tabs>

### Heading [#heading]

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

  <Tab value="Code">
    ```tsx
    <Shimmer as="h3" className="font-medium text-lg">
      Checking citations
    </Shimmer>
    ```
  </Tab>
</Tabs>

## API Reference [#api-reference]

### Shimmer [#shimmer]

Animated text shimmer for transient chat states.

| Prop        | Type                          | Default | Description                                             |
| ----------- | ----------------------------- | ------- | ------------------------------------------------------- |
| `children`  | `string`                      | -       | Text to render with the shimmer effect. Required.       |
| `as`        | `keyof JSX.IntrinsicElements` | `"p"`   | Intrinsic element used for the text node.               |
| `duration`  | `number`                      | `2`     | Duration in seconds for one shimmer animation cycle.    |
| `spread`    | `number`                      | `2`     | Multiplier used to size the moving shimmer highlight.   |
| `className` | `string`                      | -       | Additional CSS classes for the rendered text component. |

When users prefer reduced motion, `Shimmer` renders static `text-fg-2` text and disables the infinite shimmer animation.
