From 15ab24bda86b410680b96067fdc7b07250136b44 Mon Sep 17 00:00:00 2001 From: Till JS Date: Tue, 28 Apr 2026 15:36:52 +0200 Subject: [PATCH] feat(feedback): heart-half als globales Feedback-Icon + inline-Form in der Workbench MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Drei Probleme adressiert: 1. **Icon-Vereinheitlichung**: alle Feedback-Affordances tragen jetzt das phosphor `heart-half`-Icon (statt vorher Lightbulb/Mix). Geändert in PillNav-Usermenü, ModuleShell-Header (FeedbackHook), Phosphor-Icon- Map. Eine Stelle, ein Icon — Wiedererkennung steigt. 2. **Inline statt Modal in Workbench-Cards**: AppPage.svelte rendert das Feedback-Formular jetzt im selben Slot wie die Hilfe-Seite — Klick auf das Heart-Half-Icon togglet den Inline-Panel statt einen Modal-Backdrop über die ganze Workbench zu legen. Hilfe und Feedback sind mutually-exclusive (eines geht zu, sobald das andere aufgeht). 3. **Form-Body extrahiert**: FeedbackForm.svelte enthält jetzt das Formular ohne jegliches Chrome. FeedbackQuickModal nutzt es im Modal- Mode (Standalone-Routen, PillNav), AppPage im Inline-Mode. Eine Quelle, beide Surfaces bleiben in sync. ModuleShell schluckt zusätzlich `onFeedback`/`feedbackOpen`-Props: wenn gesetzt, ruft die FeedbackHook-Komponente onClick statt das eigene Modal zu öffnen — der Host (AppPage) übernimmt das Rendering. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../components/feedback/FeedbackForm.svelte | 344 ++++++++++++++++++ .../components/feedback/FeedbackHook.svelte | 41 ++- .../feedback/FeedbackQuickModal.svelte | 338 +---------------- .../lib/components/shell/ModuleShell.svelte | 12 +- .../lib/components/workbench/AppPage.svelte | 31 +- .../src/navigation/PillNavigation.svelte | 8 +- .../src/navigation/UserMenuPanel.svelte | 4 +- .../src/navigation/phosphor-icon-map.ts | 4 +- 8 files changed, 441 insertions(+), 341 deletions(-) create mode 100644 apps/mana/apps/web/src/lib/components/feedback/FeedbackForm.svelte diff --git a/apps/mana/apps/web/src/lib/components/feedback/FeedbackForm.svelte b/apps/mana/apps/web/src/lib/components/feedback/FeedbackForm.svelte new file mode 100644 index 000000000..2ce4c6d82 --- /dev/null +++ b/apps/mana/apps/web/src/lib/components/feedback/FeedbackForm.svelte @@ -0,0 +1,344 @@ + + + +{#if submittedDisplayName} +
+

+ Dein Feedback ist eingegangen — sichtbar als {submittedDisplayName}. +

+
+ +5 + Mana Credits +
+ {#if isPublic} +

Es taucht in der Community-Page auf, sobald wir es freigeben.

+ {:else} +

Es bleibt privat und ist nur für dich + Admins sichtbar.

+ {/if} + {#if onCancel} + + {/if} +
+{:else} +
+ {#if moduleContext} +
Modul: {moduleContext}
+ {/if} + + + + + + + + {#if error} + + {/if} + +
+ {#if onCancel} + + {/if} + +
+
+{/if} + + diff --git a/apps/mana/apps/web/src/lib/components/feedback/FeedbackHook.svelte b/apps/mana/apps/web/src/lib/components/feedback/FeedbackHook.svelte index 6215cc77c..85d89ee4c 100644 --- a/apps/mana/apps/web/src/lib/components/feedback/FeedbackHook.svelte +++ b/apps/mana/apps/web/src/lib/components/feedback/FeedbackHook.svelte @@ -3,29 +3,46 @@ pre-filled with the calling module's id. Drops into ModuleShell's window-actions row by default; can be placed anywhere by callers. - ModuleShell auto-injects this in its header (right next to the - window-controls). Modules opt out via `hideFeedback={true}`. + Two render modes: + - Standalone (`onClick` not provided): renders the heart-half button + + opens its own FeedbackQuickModal. Used outside the workbench + (e.g. /todo direct route, settings pages). + - Hosted (`onClick` provided): just the icon button — the host owns + the open-state and renders feedback inline (workbench AppPage). + + ModuleShell auto-injects the standalone variant in its header. The + workbench's AppPage suppresses that and wires its own onFeedback to + flip into the inline feedback panel (like the Hilfe panel). --> @@ -33,14 +50,17 @@ - (open = false)} /> + {#if !onClick} + (open = false)} /> + {/if} {/if} diff --git a/apps/mana/apps/web/src/lib/components/feedback/FeedbackQuickModal.svelte b/apps/mana/apps/web/src/lib/components/feedback/FeedbackQuickModal.svelte index 8c5b6cf1e..e2483b6c2 100644 --- a/apps/mana/apps/web/src/lib/components/feedback/FeedbackQuickModal.svelte +++ b/apps/mana/apps/web/src/lib/components/feedback/FeedbackQuickModal.svelte @@ -1,76 +1,28 @@