a11y: promote .app-view to the page-level <main> landmark#394
Open
m5x5 wants to merge 3 commits into
Open
Conversation
The shell's outer `#MainContent` wrapper was a <main>, but each pane also rendered its own <main> (profile-pane, mainPage) or inherited one from solid-ui's tab widget body. That produced multiple <main> landmarks per page, which is invalid per HTML semantics and triggers accessibility warnings. Promote `.app-view` to <main id="MainContent"> so there is exactly one page-level landmark, encompassing the outline view and global dashboard but excluding the application sidebar nav and menu overlay. The skip-link target `#MainContent` is preserved. Paired with: - SolidOS/solid-ui: demote tab-widget body from <main> to <div> - SolidOS/profile-pane: drop inner <main> from ProfileView/EditProfileView Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This was referenced May 11, 2026
When the id `MainContent` was moved from the outer wrapper to
`.app-view`, the existing rule `#MainContent { display: flex }`
started applying to the new element, whose children are
`#OutlineView` and `#GlobalDashboard`. Both became row-direction
flex items and `#GlobalDashboard` collapsed to ~36px wide, so
clicking sidebar items ("Your profile" etc.) rendered the pane
content into an invisible column.
Remove `display: flex` from the `#MainContent` rule (the outer
wrapper was the only thing that needed to be a flex container),
add `min-width: 0` so it still cooperates as a flex child of
`.app-shell`, and update the stale `.app-view` comment.
Also strip the redundant `role="main"` from
`static/browse-test.html` to match `browse.html`.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.
Summary
#MainContentwrapper was a<main>, while several panes also rendered their own<main>(profile-pane, solid-ui's tab widget, mainPage). Pages ended up with two or more<main>landmarks, which is invalid per the HTML spec and triggers a11y warnings..app-viewelement to<main id="MainContent" class="app-view">, leaving the outer wrapper as a plain<div>. There's now exactly one page-level landmark, scoped to the outline view and global dashboard but excluding the sidebar nav and menu overlay. Same change applied tostatic/browse.html.#MainContentis preserved.Addresses SolidOS/profile-pane#310.
Coordinated PRs
<main>to<div><main>from ProfileView and EditProfileViewLand this one first so the per-pane landmarks can drop their
<main>without temporarily leaving pages with zero landmarks.