# Skeleton

A flat fill breathing opacity (1 → 0.55, 1.8s) — no shimmer wash. Spinners are banned outside buttons.

Install: `npx candlelight-ds add skeleton`

Category: primitive · Grammar: G5

## Use when

A pane is fetching content with a known rough shape.

## Don't use when

An action button is pending — use its disabled state.

## States

- breathing
- static under reduced motion

## Keyboard

- (none — pointer/semantic only)

## Acceptance tests

- The breathe loop dies under prefers-reduced-motion.
- SkeletonRows carries role=status aria-label for screen readers.

## Files

- components/ui/Skeleton.tsx

npm dependencies: @candlelight-ds/tokens, clsx, tailwind-merge

Rendered twin: https://candlelight-docs.vercel.app/components/skeleton · Full spec: https://candlelight-docs.vercel.app/spec.md
