feat(studio): sticky accordion group headers (stack top and bottom)#2128
feat(studio): sticky accordion group headers (stack top and bottom)#2128vanceingalls wants to merge 1 commit into
Conversation
|
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
This stack of pull requests is managed by Graphite. Learn more about stacking. |
miga-heygen
left a comment
There was a problem hiding this comment.
Reviewed as part of the 15-PR edit-panel redesign stack. Full stack review posted on #2120. No blockers on this PR. — Miga
miguel-heygen
left a comment
There was a problem hiding this comment.
Final current-head pass: 9232cc8. Reviewed the stack boundaries and current diff against the flat-inspector contracts; required checks have no failures/pending checks and no unresolved review threads remain. No new drift found; residual notes are non-blocking.
miguel-heygen
left a comment
There was a problem hiding this comment.
Superseding earlier approval: the latest max-review pass found confirmed correctness issues in this flat-inspector stack (identity/selector-index state, hide-all write races, timing inference, slider pointer/keyboard/reset semantics, and duplicate React keys). Hold merge and require fixes plus re-review on the current stack head.

What
Ninth PR in the flat inspector stack (see #2120 for the foundation and full stack list). Group headers in the flat accordion — collapsed groups, the currently-open group's own header, and pinned-group headers — now stick to the top/bottom edge of the scroll container while scrolling, macOS Finder-style: headers above the current scroll position stack at the top, headers below stack at the bottom.
Stack: #2120 → ... → #2127 → #2128 (this).
Why
Requested after live manual testing — scrolling a long open group's content (Grade, with 14+ rows) scrolled its own header out of view along with everything else, losing the ability to see which group you're in or collapse/unpin it without scrolling back up.
How
Pure CSS, no new component logic:
position: stickywith bothtop: 0andbottom: 0set on each header naturally sticks to whichever edge is being approached (top scrolling down, bottom scrolling up), and multiple sibling headers with the same styling stack against the edge in DOM order automatically — the same mechanism behind Finder/iOS Settings section headers.FlatGroupbuttons, the openFlatGroup's header div, andPinnedGroupRow's header div all gainedsticky top-0 bottom-0 z-10 bg-panel-bg.-mx-4 px-4bleed so their opaque background spans the full row width instead of stopping at the parent's padding edge — the collapsed-button case didn't need this since it's already a direct, full-width child of the scroll container.overflowproperty that would break the sticky positioning.Test plan
oxlint/oxfmt/fallowclean.