From 46c03e6a5b53074bb43fec895a9bd6e547c1e2c1 Mon Sep 17 00:00:00 2001 From: Till JS Date: Wed, 22 Apr 2026 15:55:56 +0200 Subject: [PATCH] =?UTF-8?q?feat(articles):=20reader=20UI=20polish=20?= =?UTF-8?q?=E2=80=94=20full-bleed=20+=20unified=20floating=20toolbar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reader page is now a proper distraction-free reading surface instead of a padded card inside the (app) layout. Layout: - .detail-shell breaks out of the (app) layout's padded + max-width container via the 100vw + negative-margin-X trick, and additionally cancels the vertical padding (
+ inner py-2) plus the bottom-chrome reservation. The reader theme therefore paints edge-to-edge including behind the PillNav. No more island-in-a-sea look. - Initial theme (light/sepia/dark) mirrors the global Mana theme at mount time by checking document.documentElement.classList.dark — so opening an article from a dark-mode app no longer flashes a white reader. User can still override per-article via the swatches. Toolbar unification: - Old two-bar layout (top: back + typography, bottom: actions) fused into one floating pill-bar at the bottom. Three groups divided by vertical rules: nav | typography | actions. flex-wrap handles narrow screens gracefully. - position: fixed + bottom: calc(--bottom-chrome-height + 1rem) so the bar floats above Mana's PillNav without overlap. The CSS var comes from
's style attribute and cascades even into fixed descendants. - backdrop-filter: blur(10px) + theme-specific semi-transparent background so the bar feels aerial, not docked. - Custom CSS tooltips on every button (data-tip attribute + ::after pseudo). Replaces the native `title` attribute which has a ~1s delay and inherits OS chrome. Tooltip bubble colors adapt to the active reader theme. aria-label stays for screen-readers. - Active-state swatches get an outline-ring instead of a background- swap so the chip color stays visible as a theme-preview. Spacing: - meta-bar margin-top: 1.5rem → 4rem — clearer separation between the viewport edge and the article title. - ReaderView padding-bottom: 4rem → 14rem — last paragraph no longer visually attaches to the floating bar when scrolled to the end; there's a proper "you've reached the end" gap. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../articles/components/ReaderView.svelte | 6 +- .../modules/articles/views/DetailView.svelte | 533 +++++++++++------- 2 files changed, 341 insertions(+), 198 deletions(-) diff --git a/apps/mana/apps/web/src/lib/modules/articles/components/ReaderView.svelte b/apps/mana/apps/web/src/lib/modules/articles/components/ReaderView.svelte index 7737a0649..4dac64edd 100644 --- a/apps/mana/apps/web/src/lib/modules/articles/components/ReaderView.svelte +++ b/apps/mana/apps/web/src/lib/modules/articles/components/ReaderView.svelte @@ -96,7 +96,11 @@