Full walk of drawer (modal slide-in, parallel to dialog):
- Morfo: validated. 6 events (present/save/cancel/dismiss/dismiss-
outside/after-fail). Focus policy with trap/return/restore. 9 parts
(Provider/Trigger/Content/Overlay/Handle + Header/Footer/Title/
Description/Close).
- `texts.label` added with catalog entry. Drawer was already wired in
the langs barrel.
- README `## Baseline` section added (drawer DOES have an air baseline
at `glm-5:src/uix/air/components/drawer`, plus the soma additions
for drag/snap points). `## Gaps` with dispositions:
shouldScaleBackground (descartar — shell-level concern), free-resize
without snap points (diferir), Handle ARIA slider role (implementar
— accessibility gap for snap points), pulse-to-peek (diferir),
nested visual stacking (implementar — same gap as dialog),
AlertDrawer variant (descartar — compose AlertDialog inside).
Audit: PASS 10 → 11.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
| Variantes | Terra modal-ish | `overlay`, `inline`, `persistent` |
| Exit cause | No | `data-last-action` y eventos causales |
## Gaps
| Gap | Disposición | Detalle |
| --- | --- | --- |
| `shouldScaleBackground` (vaul) | **descartar** | Es un efecto sobre el shell de aplicación, no sobre el drawer aislado. Si se añade, debe vivir en una capa de layout/DOM con ownership claro. |
| Drag-to-resize sin snap points | **diferir** | Soma soporta `dragToDismiss` y snap points; falta la API de free resize sin discretización. Sin caso urgente. |
| `Handle` con ARIA role completo | **implementar** | Hoy es un visual hint. Falta `role="slider"` con `aria-valuenow`/`min`/`max` cuando hay snap points, para que screen readers anuncien la posición. |
| Pulse-to-peek (drawer asoma y oculta) | **diferir** | Patrón móvil para discovery. Sin caso de uso confirmado. |
| Stacking visual de drawers anidados | **implementar** | Soma emite `data-depth` + `data-nested`; falta la receta CSS canónica para inset/blur por depth. Mismo gap que dialog. |
| Backdrop blur progresivo según snap point | **diferir** | Visual fancy, requiere coordinar la receta con la posición actual del drawer. Sin demanda. |
| `Drawer.AlertDrawer` variant destructiva | **descartar** | Si se necesita confirmar una acción crítica desde un drawer, el consumer monta `<AlertDialog>` dentro. Una variante separada duplicaría intent management. |
## Referencias
- Air anterior: `glm-5:src/uix/air/components/drawer`.