Issue #392: Component inventory — document existing primitives before v4.0 sprawl
Labels: dx, design-system Milestone: v3.7.0 — v4 Foundations
Body
v3.4–v3.5 added `.swh-empty-state`, `.swh-toast`, `.swh-badge`, `.swh-bubble`, `.swh-panel-group` ad-hoc. v4.0 needs modal, drawer (quick-reply), virtualized list, command bar, saved-view tabs. Without a manifest, each v4.0 issue will reinvent its own primitives and the indigo refresh (#355) will fight inconsistent class names.
Goal
Land `docs/internal/component-inventory.md` listing every shared CSS/JS primitive with:
- Class name(s)
- Tokens consumed (e.g. `–swh-shadow-md`, `–swh-color-focus`)
- A11y notes (role, aria, focus behavior)
- Example markup
- File location (`swh-shared.css` vs `swh-admin.css`)
Components to document (existing)
- `.swh-empty-state` (+ icon, title, desc, optional CTA)
- `.swh-toast` (success/error/info)
- `.swh-badge` (+ `.swh-badge-{slug}`)
- `.swh-bubble` (+ note, user, tech variants)
- `.swh-panel-group` (+ label)
- `.swh-skeleton` shimmer
- `.swh-helpdesk-wrapper` (+ `data-swh-theme`)
- `.swh-skip-link` (once v3.6 #341 lands)
- `.swh-danger-zone`
- `.swh-ticket-card-list`
Components to flag as needed for v4.0 (gaps)
- `.swh-modal`
- `.swh-drawer` (quick-reply)
- `.swh-virtual-list` (inbox)
- `.swh-command-bar` (Ctrl/Cmd+K palette)
- `.swh-tabs` (saved views)
Acceptance
- `docs/internal/component-inventory.md` lists all current components
- Each entry: class names, tokens, a11y notes, example, file
- v4.0 gap section lists components not yet built but planned
- Linked from `docs/internal/release_v4.x.x_roadmap.md`