From 0ae1767649195eea1b3edfd07c1ef194f9e32d33 Mon Sep 17 00:00:00 2001 From: Marcel Raddatz Date: Fri, 10 Apr 2026 12:29:58 +0200 Subject: [PATCH] feat(planner): align tile design with spec MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Front face: - Full dual gradient overlay (dark top 32% → transparent → dark bottom 55%) - Day abbreviation + date number pill at top of each tile - Recipe name 13px/weight-300 with text-shadow - Meta line (cookTimeMin · effort) below name - Glassmorphism tag pills (protein + cuisine only) - State rings via box-shadow (yellow for today, green for selected) - Dimming (opacity 0.42) on non-selected filled tiles Back face: - Koch-Modus as green primary button - Entfernen as red outline (transparent bg) - All buttons 11px / weight 500 EmptyDayTile: add day header + spec-aligned suggestion list layout Page: remove external column header (now rendered inside each tile) Co-Authored-By: Claude Sonnet 4.6 --- .../src/lib/planner/DesktopDayTile.svelte | 255 ++++++++++++++---- .../src/lib/planner/DesktopDayTile.test.ts | 2 +- frontend/src/lib/planner/EmptyDayTile.svelte | 51 ++-- .../src/routes/(app)/planner/+page.svelte | 20 +- 4 files changed, 235 insertions(+), 93 deletions(-) diff --git a/frontend/src/lib/planner/DesktopDayTile.svelte b/frontend/src/lib/planner/DesktopDayTile.svelte index 44d8377..0a09a86 100644 --- a/frontend/src/lib/planner/DesktopDayTile.svelte +++ b/frontend/src/lib/planner/DesktopDayTile.svelte @@ -1,5 +1,6 @@
+ +
+ {dayAbbr} + {dateNum} +
+ + {#if isPlanner} - +
+ +
{/if} {#if topSuggestion} -

- {topSuggestion.recipe.name} -

- - {#if reasoningTags.length > 0} -
+
+
Vorschlag
+
+ {topSuggestion.recipe.name} {#each reasoningTags as tag (tag.id)} {tag.label} {/each}
- {/if} +
{/if}
diff --git a/frontend/src/routes/(app)/planner/+page.svelte b/frontend/src/routes/(app)/planner/+page.svelte index a75bd86..7ed61cd 100644 --- a/frontend/src/routes/(app)/planner/+page.svelte +++ b/frontend/src/routes/(app)/planner/+page.svelte @@ -477,26 +477,9 @@ {#each days as day (day)} {@const slot = slotMap[day] ?? { id: null, slotDate: day, recipe: null }} {@const isTodayDay = day === today} - {@const dateNum = day.slice(-2).replace(/^0/, '')} - {@const dayAbbr = formatDayAbbr(day, 'narrow')} {@const isThisTileActive = drawerSlotId === day} -
- -
-

- {dayAbbr} -

-
- {dateNum} -
-
- - -
+
handleTileRemove(slot)} onaddrecipe={() => handleEmptyTileAdd(day)} /> -
{/each}