diff --git a/docs/architecture/03-modal-system.md b/docs/architecture/03-modal-system.md index 8f3d4a2..cfdbf0f 100644 --- a/docs/architecture/03-modal-system.md +++ b/docs/architecture/03-modal-system.md @@ -421,6 +421,13 @@ open, wraps `Tab`/`Shift+Tab` within the modal, and restores focus on close. The optional `initialSelector` picks _which_ child takes focus (e.g. Cancel for a destructive confirm); it falls back to the first focusable child. +The trap wraps Tab **only within the shell element**: content portaled to +`
` (a `SelectControl` panel or other disclosure popover opened from inside +a modal) is outside both the trap's DOM subtree and its keydown listener. Such +popovers must therefore handle Tab themselves — close and refocus their trigger +(the native-select convention) — so focus can't strand outside the dialog while +it is open. + ```ts // src/app/hooks/useFocusTrap.ts import { useRef, useEffect } from 'react'; diff --git a/docs/architecture/05-rendering-theming-preview.md b/docs/architecture/05-rendering-theming-preview.md index 2979ca5..757e41b 100644 --- a/docs/architecture/05-rendering-theming-preview.md +++ b/docs/architecture/05-rendering-theming-preview.md @@ -471,6 +471,10 @@ the existing view is re-measured via a `ResizeObserver`-driven event — see §8 - **Don't** put reference resolution or fit-mode logic in the renderer — it is pure core logic and must be unit-testable without a DOM. - **Don't** mutate the input spec anywhere in the pipeline. +- **Fit modes overwrite the spec's own sizing** (Width replaces `width` _and + deletes_ `height`, etc.), so a surface that lets the user set an explicit + width/height must pass `fitMode: 'default'` while either is set and reserve the + container fit for auto sizing — the Chart Builder preview does exactly this. --- diff --git a/docs/architecture/10-interaction-and-feedback.md b/docs/architecture/10-interaction-and-feedback.md index e77e49d..f390ca3 100644 --- a/docs/architecture/10-interaction-and-feedback.md +++ b/docs/architecture/10-interaction-and-feedback.md @@ -418,6 +418,34 @@ _(Consulted via /council → NN/g #4 consistency, #6 recognition-over-recall, #8 WAI-ARIA APG disclosure + menu-and-menubar; Carbon popover/overflow-menu/text-toolbar. This bullet is the contract.)_ +**Resolved — value pickers are the SelectControl disclosure, not native `