From 18a94b92664e6029634c80970ed6bf72bd09fdae Mon Sep 17 00:00:00 2001 From: Till JS Date: Fri, 3 Apr 2026 13:36:40 +0200 Subject: [PATCH] feat(manacore/web): clickable cross-module links with overlay stacking Clicking a linked item in a DetailView opens the target app's DetailView as a stacked overlay on top of the current one. Supports: - Cross-app navigation (e.g. click linked event from todo detail) - Back button to return to previous overlay - Correct app color + title in overlay header - Overlay stack with goBack() popping the top frame - Added paramKey to EntityDescriptor for correct ID mapping Co-Authored-By: Claude Opus 4.6 (1M context) --- .../lib/components/links/LinkedItems.svelte | 24 ++- .../lib/components/workbench/AppPage.svelte | 143 ++++++++++++++---- .../apps/web/src/lib/entities/types.ts | 3 + .../web/src/lib/modules/calendar/entity.ts | 1 + .../modules/calendar/views/DetailView.svelte | 2 +- .../web/src/lib/modules/contacts/entity.ts | 1 + .../modules/contacts/views/DetailView.svelte | 5 +- .../apps/web/src/lib/modules/todo/entity.ts | 1 + .../lib/modules/todo/views/DetailView.svelte | 2 +- 9 files changed, 143 insertions(+), 39 deletions(-) diff --git a/apps/manacore/apps/web/src/lib/components/links/LinkedItems.svelte b/apps/manacore/apps/web/src/lib/components/links/LinkedItems.svelte index 6c594615d..aa4fd2835 100644 --- a/apps/manacore/apps/web/src/lib/components/links/LinkedItems.svelte +++ b/apps/manacore/apps/web/src/lib/components/links/LinkedItems.svelte @@ -1,6 +1,6 @@ {#if links.length > 0} @@ -28,7 +36,7 @@ {#each links as link (link.id)} {@const appEntry = getAppEntry(link.targetApp)} {@const color = link.cachedTarget?.color ?? appEntry?.color ?? '#6B7280'} - + {/each} @@ -69,17 +77,19 @@ border-radius: 0.375rem; background: rgba(0, 0, 0, 0.02); border: 1px solid rgba(0, 0, 0, 0.04); + cursor: pointer; + text-align: left; transition: background 0.15s; } .link-item:hover { - background: rgba(0, 0, 0, 0.04); + background: rgba(0, 0, 0, 0.05); } :global(.dark) .link-item { background: rgba(255, 255, 255, 0.02); border-color: rgba(255, 255, 255, 0.04); } :global(.dark) .link-item:hover { - background: rgba(255, 255, 255, 0.05); + background: rgba(255, 255, 255, 0.06); } .link-dot { width: 8px; diff --git a/apps/manacore/apps/web/src/lib/components/workbench/AppPage.svelte b/apps/manacore/apps/web/src/lib/components/workbench/AppPage.svelte index e9a380a48..32b60c5ab 100644 --- a/apps/manacore/apps/web/src/lib/components/workbench/AppPage.svelte +++ b/apps/manacore/apps/web/src/lib/components/workbench/AppPage.svelte @@ -4,7 +4,7 @@ that floats slightly larger than the panel underneath. -->