Sheet peek/expand, theme-aware media stage, and edge-to-edge viewer bars

Long-content bottom sheets (Details' Versions/Activity tabs with many
rows) opened locked to nearly full screen height with no room left to
adjust. showNooSheet now measures its content once against the
available height: anything that fits comfortably still sizes to
content as before, but content tall enough to need scrolling opens at
a native-style draggable peek instead, which the user can drag up to
reveal more of (and drag back down to dismiss).

The media viewer's stage was pinned to black regardless of theme,
which read as jarringly out of place in light mode - it now follows
the app's own `bg`. The floating top/bottom bars stay a fixed dark
panel either way (they need to read over arbitrary photo/video
brightness, not over the stage), but both had their SafeArea nested
the wrong way around: it wrapped the whole panel instead of just its
content, so the panel's background stopped short of the actual screen
edge - most visibly the bottom bar ending above the gesture area
instead of extending behind it. The background now wraps the SafeArea
instead.
This commit is contained in:
2026-09-28 18:16:44 -04:00
parent 8d17ae1f4b
commit c0f702b00e
5 changed files with 310 additions and 81 deletions
+10 -6
View File
@@ -340,12 +340,16 @@ Sidebar items are 38px tall with radius 12, an 18px icon and a 14/500 label. The
Location, Modified, Created, ...). Versions and Activity reuse their own
row/feed treatment. Same on every platform - this sheet has no iOS/Android
split.
- **Media viewer** (the full-screen photo/video viewer): a black stage
regardless of theme, like a native photo/video viewer - not `bg`. A
translucent, blurred top bar (back, filename, meta) and bottom bar float
over the media; this is the one deliberate exception to "no blur" in
product UI, since it's chrome over photo/video content, not over the app's
own surfaces. Back is a plain arrow (`arrow-left`), not the iOS
- **Media viewer** (the full-screen photo/video viewer): the stage is `bg`,
following the app's own theme rather than a fixed black - a black stage
in light mode read as jarringly out of place. A translucent, blurred top
bar (back, filename, meta) and bottom bar float over the media in a fixed
dark panel regardless of theme (it needs to read over arbitrary photo/
video brightness, not over `bg`); this is the one deliberate exception to
"no blur" in product UI, since it's chrome over photo/video content, not
over the app's own surfaces. Both bars' background extends edge-to-edge
behind the status bar/gesture area, with only their content padded clear
of it. Back is a plain arrow (`arrow-left`), not the iOS
chevron+label pushed-screen pattern - platform split still to do. The
bottom bar holds every action in one row (share, favorite, open
externally, download, delete, details) on every platform; don't add a