From b415567dfa1b158d76bdc126cc3bc9b69d821009 Mon Sep 17 00:00:00 2001 From: Till JS Date: Thu, 2 Apr 2026 23:52:40 +0200 Subject: [PATCH] refactor(ui): unified bottom-stack container for PillNav, QuickInput, TagStrip MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace 4 independent position:fixed elements with one flex container that stacks them naturally from bottom to top. Elements push each other automatically — no more hardcoded offsets or z-index conflicts. Stack order (bottom → top): 1. PillNavigation (collapsible) 2. TagStrip (togglable) 3. QuickInputBar + toggle button row Shared-UI changes: - PillNavigation: add positioning='fixed'|'static' prop - QuickInputBar: add positioning='fixed'|'static' prop - TagStrip: add positioning='fixed'|'static' prop - All default to 'fixed' for backward compatibility Layout changes: - Wrap all bottom elements in .bottom-stack (position:fixed, flex-column) - Remove hardcoded bottomOffset calculations - Toggle button is now inline next to QuickInputBar (not separately positioned) Co-Authored-By: Claude Opus 4.6 (1M context) --- .../apps/web/src/routes/(app)/+layout.svelte | 204 ++++++++++-------- .../src/navigation/PillNavigation.svelte | 10 + .../shared-ui/src/navigation/TagStrip.svelte | 15 +- .../shared-ui/src/quick-input/InputBar.svelte | 10 + 4 files changed, 154 insertions(+), 85 deletions(-) diff --git a/apps/manacore/apps/web/src/routes/(app)/+layout.svelte b/apps/manacore/apps/web/src/routes/(app)/+layout.svelte index cc7dddc63..259f5aea0 100644 --- a/apps/manacore/apps/web/src/routes/(app)/+layout.svelte +++ b/apps/manacore/apps/web/src/routes/(app)/+layout.svelte @@ -375,89 +375,93 @@ {/if}
- - + +
+ +
+ + +
- - + + {#if isTagStripVisible} + ({ + id: t.id, + name: t.name, + color: t.color || '#3b82f6', + }))} + selectedIds={[]} + onToggle={() => {}} + onClear={() => {}} + onTagDrop={tagDropHandler ?? undefined} + managementHref="/tags" + loading={allTags.loading} + positioning="static" + /> + {/if} - - - - - {#if isTagStripVisible} - ({ - id: t.id, - name: t.name, - color: t.color || '#3b82f6', - }))} - selectedIds={[]} - onToggle={() => {}} - onClear={() => {}} - onTagDrop={tagDropHandler ?? undefined} - managementHref="/tags" - loading={allTags.loading} + + - {/if} +
@@ -499,12 +503,44 @@