swarm-ui: widen the shell body for the issue report route
mara (#3877): issue report too narrow — the 8-column table was clipped by .shell-body's 60em readable-line-length cap, which is right for the rest of the UI's cards/forms but too tight for a wide table. damocles diagnosed the root cause and scoped the shape (route allowlist + an additive .shell-body-wide modifier, no prop plumbing through App.tsx) before asking for a nod; mara then routed the actual build to me. Implemented that shape as scoped: /issues opts into a 90em cap via WIDE_BODY_ROUTES, every other route keeps 60em untouched. Verified with real headless-chromium screenshots at 1280px: the issue report's full 8-column row (through 'transitively blocks') now fits with no horizontal scroll, and a second screenshot of /agents confirms every other route is unaffected.
This commit is contained in:
parent
a58c7af3bd
commit
e395737a25
2 changed files with 24 additions and 2 deletions
|
|
@ -148,6 +148,15 @@
|
||||||
having shipped something to walk back first. */
|
having shipped something to walk back first. */
|
||||||
animation: shell-page-enter 160ms ease;
|
animation: shell-page-enter 160ms ease;
|
||||||
}
|
}
|
||||||
|
/* Opt-in widening for a route that genuinely needs more than a
|
||||||
|
readable-line-length column (see Shell.tsx's `WIDE_BODY_ROUTES`).
|
||||||
|
Only overrides `max-width` — margin/padding/animation stay
|
||||||
|
`.shell-body`'s, so this reads as "the same body, just wider" rather
|
||||||
|
than a parallel layout to keep in sync. 90em still centers with
|
||||||
|
visible margins on a typical desktop viewport; it isn't full-bleed. */
|
||||||
|
.shell-body-wide {
|
||||||
|
max-width: 90em;
|
||||||
|
}
|
||||||
@keyframes shell-page-enter {
|
@keyframes shell-page-enter {
|
||||||
from {
|
from {
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,16 @@ const NAV_ITEMS: { href: string; label: string; accent: string }[] = [
|
||||||
{ href: '/components', label: 'components', accent: 'var(--blue)' },
|
{ href: '/components', label: 'components', accent: 'var(--blue)' },
|
||||||
];
|
];
|
||||||
|
|
||||||
|
// Routes that opt out of `.shell-body`'s 60em readable-line-length cap
|
||||||
|
// — mara screenshotted the issue report's 8-column table getting
|
||||||
|
// clipped; that width is deliberate for the rest of the UI's cards/
|
||||||
|
// forms, but too narrow for a wide table. `.shell-body-wide` (Shell.css) is a
|
||||||
|
// modifier alongside the base class, not a replacement, so every other
|
||||||
|
// route's layout is untouched — first user of this allowlist, but a
|
||||||
|
// future wide page reaches for the same class rather than inventing
|
||||||
|
// its own cap.
|
||||||
|
const WIDE_BODY_ROUTES = new Set(['/issues']);
|
||||||
|
|
||||||
// Static fallback — matches `index.html`'s `<title>` default, so a page
|
// Static fallback — matches `index.html`'s `<title>` default, so a page
|
||||||
// never flashes something else before the fetch below resolves, and an
|
// never flashes something else before the fetch below resolves, and an
|
||||||
// operator who never set `services.hyperhive.swarm.name` sees the exact
|
// operator who never set `services.hyperhive.swarm.name` sees the exact
|
||||||
|
|
@ -298,8 +308,11 @@ export function Shell({ children }: { children: ComponentChildren }) {
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
{/* Keyed by route so it remounts (and replays its entrance
|
{/* Keyed by route so it remounts (and replays its entrance
|
||||||
animation) on every navigation — see the file-top comment. */}
|
animation) on every navigation — see the file-top comment.
|
||||||
<div class="shell-body" key={location}>
|
`shell-body-wide` is additive (see `WIDE_BODY_ROUTES` above),
|
||||||
|
not a swap — `.shell-body`'s padding/animation rules still
|
||||||
|
apply, only the max-width cap changes. */}
|
||||||
|
<div class={'shell-body' + (WIDE_BODY_ROUTES.has(location) ? ' shell-body-wide' : '')} key={location}>
|
||||||
{children}
|
{children}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue