# Status Island

A floating pill that reports background work. It stacks what is waiting and opens into a tray of every task.

Tier: Free

## Installation

```bash
npx shadcn add @fetaui/status-island
```

## Usage

```tsx
import { StatusIsland } from '@/components/fetaui/status-island'

export function Example() {
  return <StatusIsland tasks={tasks} onExpire={dismiss} />
}
```

## API

| Prop | Type | Default |
|---|---|---|
| tasks | StatusTask[] | required |
| onExpire | (id) => void |  |
| onClearDone | () => void |  |
| defaultExpanded | boolean | false |
| animated | boolean | true |

## When to use

- For work that finishes on its own: uploads, exports, syncs and sends.
- Keep one at the top or bottom centre of the viewport.

## When not to use

- For one line results: use Toast.
- When someone must decide: use Dialog.

## Accessibility

- Progress is announced politely, and errors assertively.
- The ring is a progressbar with a value.
- Actions are real buttons.

## Motion

- The pill morphs between states on one spring, and content cross fades with a 2 px blur.
- The ring only moves forward. Indeterminate turns every 900 ms and pauses offscreen.
- Done pops its badge, and Error shakes once.
- The tray opens in 260 ms with rows 30 ms apart.
- With reduced motion, width changes at once, the arc pulses in opacity, and Error only shows its ring.
