feat(sheet): a header slot for headers that have to be interactive - #39
Merged
Conversation
The strip drew title as a plain string, so a panel needing a hover-to-copy subject line or a metadata row that changes shape per entity had to keep a local sheet. Two of mockifyr's did — which is where this feedback came from (#29). header replaces what the strip SHOWS. title stays required and becomes the accessible name: a name cannot be derived from arbitrary nodes, and Radix requires a Title regardless. Both it and description go sr-only rather than being dropped — hiding a thing and omitting it are different, and only one of them keeps the dialog announceable. Baselines moved for the docs card's notes growing to three lines, not for the component: the demo passes no header and its buttons are pixel-identical. Closes #29. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This was referenced Aug 10, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #29 — the last of mockifyr's adoption feedback.
The strip drew
titleas a plain string. A panel needing a hover-to-copy subject line, or a metadata row that changes shape with the entity, could not express that — so two of mockifyr's sheets stayed local. That is the gap this closes.The a11y part is the design
headerreplaces what the strip shows.titlestays required and becomes the accessible name:Dialog.Titleregardless.So both
titleanddescriptiongosr-onlyrather than being dropped. Hiding a thing and omitting it are different, and only one of them leaves the dialog announceable. A test asserts the dialog is still found by its name while the custom header is the only thing drawn.Gates
192 tests (4 on Sheet, 2 new) · coverage 97.67 / 92.43 / 94.59 / 97.67 · docs · pin · typecheck clean.
Visual: the three
overlaysbaselines moved — and I checked rather than assumed why. It is the docs card's notes wrapping to three lines; the Sheet's own rendering is pixel-identical, buttons included. Same sequencing lesson as the shell PR: regenerate baselines after everything that can change what the gallery renders, including prose.