# StageShell

The performance surface's one anatomy: header strip / main stage panel + 340px deck column / the console seat. The deck floats below lg, parks while the lens is open; the lens rides the Sheet contract.

Install: `npx candlelight-ds add stage-shell`

Category: shell · Grammar: G1, G7, C2, C4

## Use when

A surface IS the instrument — the show, the rehearsal.

## Don't use when

List+detail editing (SplitShell) or single-panel rooms (RoomShell).

## States

- deck inline (lg+)
- deck floating (<lg)
- deck dismissed (stage takes the room)
- deck parked (lens open — the drawer is the second panel, never a third)
- full-bleed vs framed

## Keyboard

- `Esc (in the lens)` — steps focus → lens → closed (Sheet contract)

## Acceptance tests

- The show-the-deck control lives where the deck's own hide button was — controls never teleport.
- ↑↓ keep walking the list while the lens is up or the deck is parked.

## Files

- components/layouts/StageShell.tsx

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

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