Repository navigation
docs(records): LayoutPanel publishes its applied inset; Lightbox's gaps for 0, announcements and Tab are closed - #10819
Conversation
…key, in-viewer announcements and Tab containment hold LayoutPanel now publishes the padding it applies on every edge, so FR3 drops its gap, its verification row names the publication tests, and container-padding drops its known conformance gap. Lightbox wraps Tab inside the open viewer, resets the zoom on 0, and announces inside the viewer, so those Current-state entries go. LayoutPanel FR4's divider ownership is unchanged.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
AI review status for this pull request.
|
|
/approve-spec b7a10ba |
PR Analysis Report🔎 Preview ·
|
There was a problem hiding this comment.
Changes requested. The LayoutPanel and Lightbox removals match main, and the spec approval covers the proposed text, but the container-padding edits leave the records contradicting each other:
- The new Region publisher row in
docs/architecture/container-padding.md(line 122, and step 3 at lines 107-108) says every region publishes its applied padding on every edge, butcomponent:LayoutContentFR2 keeps the content-width alignment gutter applied and unpublished, so the row needs that exception. - INV2 (lines 307-308) and INV4 (lines 316-317) of the same record still say automatic Layout-region edges are not guaranteed to republish their applied padding, so drop or restate them.
docs/families/layout-regions.mdFR3 and FR4 anddocs/specs/components/Layout/Layout.spec.md(lines 202-203) still describe the LayoutPanel publication gap, and FR3 points to the section this pull request deletes, so amend them here.- The INV4 verification row (line 450) now fails on a mismatched republished edge but names
Layout.test.tsxandLayoutSlots.test.tsx, which never read a published value, so namenestedPadding.test.tsxand the region audit specs instead, or drop the clause.
A new commit invalidates the current approval, so after pushing, an engineering owner needs to comment /approve-spec <full head SHA> on the new head.
[Automated review]
…ining parity disclaimers Container-padding's step 3 and Region publisher row keep LayoutContent's content-width gutter as applied but unpublished (LayoutContent FR2). INV2 and INV4 now state that automatic Layout-region edges republish their applied padding. layout-regions FR3, FR4 and its FR3 row, and Layout's ownership line, no longer describe the LayoutPanel gap. The INV4 evidence row names nestedPadding.test.tsx and the region audit specs for published values.
|
/approve-spec dab2cea |
There was a problem hiding this comment.
Approved pending CI: the five records now match main. LayoutPanel publishes the inset it applies on every edge, LayoutContent's content-width gutter stays the one inset that is applied but not published, and the three Lightbox gaps (Tab containment, the 0 key, announcements outside the viewer) are closed in code and tests.
CI has not run the heavy suites on this head: the required build, test and docsite-test checks report "Heavy CI deferred", so they run in the pre-merge run of all jobs; typecheck and lint pass.
Optional wording, already in the open suggestions: add the gutter exception to INV4 (container-padding.md line 318) and to family:layout-regions FR3 (lines 122-123), drop "automatic-variable parity" from the FR4 row's missing evidence (line 246), and let LayoutPanel.spec.md line 49 read "a publication mismatch".
[Automated review]
| wrapper. Each region republishes the geometry it applies to full-bleed | ||
| descendants (`architecture:container-padding` INV2). |
There was a problem hiding this comment.
Optional: read alone, this says every region republishes all the padding it applies, but a content-width LayoutContent applies a gutter it does not publish (component:LayoutContent FR2). FR4 below and architecture:container-padding INV2 carry that exception; adding it here keeps FR3 self-contained, for example: "Each region republishes the geometry it applies to full-bleed descendants, except LayoutContent's content-width gutter (architecture:container-padding INV2)."
| another region. Slot presence and each region's explicit padding select the | ||
| applied edge styles. Exact descendant-variable parity for automatic outer | ||
| edges is not guaranteed by this invariant. | ||
| applied edge styles, and each region republishes the edge it applies (INV2). |
There was a problem hiding this comment.
Optional: read alone, INV4 now covers LayoutContent's content-width gutter too, which INV2 excludes. For example: "…and each region republishes the edge it applies, except LayoutContent's content-width gutter (INV2)."
| | FR1 | Section/Layout/Toolbar render and slot tests | Caller content renders inside the current region structure; Toolbar exposes its current lanes | Tests do not independently prove that product semantics remain caller-owned | | ||
| | FR2 | Logical-property source review plus Layout area-context tests | Start/end slots are identified logically and source selects logical divider/padding properties | No real-browser LTR/RTL geometry matrix covers every region | | ||
| | FR3 | `Layout.test.tsx` and `childrenAsContent.test.tsx`; `nestedPadding.test.tsx` and the region audit specs for published geometry | Slot presence/context and content precedence are pinned; omitted slots do not render area providers | These tests do not assert computed outer/inner inset; `nestedPadding.test.tsx` and the region audit specs check each region's published values | | ||
| | FR4 | Section padding class-set tests and Layout region source | Section's explicit edge overrides move matching variables; region source has automatic, explicit, and zero-padding branches | Layout tests mostly assert acceptance/rendering, not computed padding or automatic-variable parity | |
There was a problem hiding this comment.
Optional: FR4 now says an automatic Layout edge republishes the padding it applies, but this row still lists "automatic-variable parity" as missing evidence and names only Section tests and region source. The FR3 row above names the tests that check it (nestedPadding.test.tsx and the region audit specs); naming them here and dropping "automatic-variable parity" from the gap keeps FR4's evidence accurate.
Reader impact
Three records still described gaps that #10774 and #10775 closed, so a reader would expect a LayoutPanel full-bleed child to miss the panel's edge, and a Lightbox that lets Tab leave, ignores
0, and announces outside the open viewer. None of that holds onmainnow.Change
component:LayoutPanel: FR3 no longer carries the implementation gap, and states that a full-bleed child lines up with the panel's outer edge. The "Published inset differs from applied padding" Current-state entry goes, and so does "records the gap" in the ownership line. The FR3/ORD2 verification row now namesnestedPadding.test.tsx(the LayoutPanel publication tests) and the audit spec's inset and full-bleed receipts, which are also added toverified_by. FR4 and its divider-ownership entry are unchanged.architecture:container-padding: the "Known conformance gap" section goes. The descendant-geometry step and the Region publisher row say each region republishes the padding it applies, except LayoutContent's content-width gutter, which is applied but not published (component:LayoutContentFR2). INV2 and INV4 state the same instead of disclaiming automatic-edge parity, and the INV4 evidence row namesnestedPadding.test.tsxand the region audit specs for published values.family:layout-regions: FR3 and FR4, and the FR3 verification row, no longer describe the LayoutPanel gap.component:Layout: the ownership line no longer mentions "the publication gap LayoutPanel records".component:Lightbox: the Current-state entries for Tab containment (FR4), the0zoom reset (AR3), and announcements outside the open viewer (AR4) go.Evidence (checked on
main)LayoutPanel.tsxpublishes each edge's applied inset ([Component Audit] LayoutPanel: full-bleed children reach the panel's outer edge #10774).nestedPadding.test.tsxasserts the published inset on every edge, with and without a header and footer, and with a zero Layout padding.Lightbox.tsxcallsuseFocusRegionContainmenton the viewer (fix(Dialog, AlertDialog, CommandPalette, BottomSheet, Lightbox): Tab wraps inside the open modal through the shared focus-region module #8883).LightboxKeyboard.a11y.browser.spec.tshas "Tab and Shift+Tab wrap inside an open gallery" and "… inside an open single image, zoomed or not".0and announcements:Lightbox.tsxhandles0without Ctrl, Cmd or Alt, and announces throughannounceInModalon the viewer ([Component Audit] Lightbox: screen readers hear the open viewer, and 0 resets the zoom #10775).LightboxKeyboard.a11y.browser.spec.tshas "+ zooms and is announced inside the viewer, and 0 returns to the fitted size".pnpm check:knowledge: aligned.Scope
Writing rubric results
main, checked in source and tests above: pass.