mirror of
https://github.com/runbear-io/beardrive.git
synced 2026-08-25 08:08:08 +02:00
Every route invented its own content column: widths ran 560px to unbounded (704 / 760 / 860 / 936 / 560), half of them uncentered because they set max-width with no auto margins, and markdown pages carried the constraint on #content itself so the 40px gutter came out of the reading measure — .md text ran 624px against the folder listing's 704px directly beside it in the tree. Now there is exactly one primitive: - #content owns scrolling and the page gutter, never a width. - <Page width="read|app|wide"> (shell.tsx) owns width and centering, one per view, driven by CSS tokens --page-read/-app/-wide (704/880/1200). read = prose + listings, app = structured views, wide = data-dense. - .markdown goes back to being typography only; the column around it is .page.read, which also retires the #content.markdown min-width hack. - Views declare no layout: .guide/.insights/.history/.admin/.dirlist/ .markdown lost their max-widths, Browser picks the width per route. - Short centered states (empty, loading, not-found, no-preview, onboard) shared one --hero-top instead of 8/12/15/22vh apiece. Insights moves to wide — its treemap and coverage matrix were cramped at 760. Everything else lines up: app pages at 880, read pages at 704, same edges on every route. e2e/layout.spec.ts locks it in: one .page per route, widths resolve to the tokens, same-width routes share edges, #content never constrains width, and no view re-declares a column inside .page. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>