From 358edb9a12c54ed346a982380d4e00df537d603a Mon Sep 17 00:00:00 2001 From: Marcel Raddatz Date: Fri, 10 Apr 2026 11:23:05 +0200 Subject: [PATCH] fix(planner): improve DesktopDayTile visual polish - Add dark gradient scrim on card front so recipe name is always readable over images and protein/cuisine gradients - Style card-back actions as proper buttons (border, padding, border-radius) instead of unstyled browser defaults - Add meta chips for cookTimeMin and effort - Scope Entfernen inside isPlanner guard alongside Gericht tauschen Co-Authored-By: Claude Sonnet 4.6 --- .../src/lib/planner/DesktopDayTile.svelte | 119 +++++++++++++----- 1 file changed, 91 insertions(+), 28 deletions(-) diff --git a/frontend/src/lib/planner/DesktopDayTile.svelte b/frontend/src/lib/planner/DesktopDayTile.svelte index 4e2e369..d198f78 100644 --- a/frontend/src/lib/planner/DesktopDayTile.svelte +++ b/frontend/src/lib/planner/DesktopDayTile.svelte @@ -102,51 +102,59 @@ class="card-front" style="background: {gradientBackground}; background-size: cover; background-position: center;" > -

- {slot.recipe.name} -

+
+

+ {slot.recipe.name} +

+
- {#if slot.recipe.cookTimeMin} - {slot.recipe.cookTimeMin} min + {#if slot.recipe.cookTimeMin || slot.recipe.effort} +
+ {#if slot.recipe.cookTimeMin} + {slot.recipe.cookTimeMin} min + {/if} + {#if slot.recipe.effort} + {slot.recipe.effort} + {/if} +
{/if} - {#if slot.recipe.effort} - {slot.recipe.effort} - {/if} - -
- e.stopPropagation()}>Koch-Modus - e.stopPropagation()}>Rezept ansehen +
+ e.stopPropagation()}>Koch-Modus + e.stopPropagation()}>Rezept ansehen
{#if isPlanner} - - {/if} +
+ - {#if isPlanner && slot.id} - + {#if slot.id} + + {/if} +
{/if}
@@ -195,6 +203,61 @@ padding: 10px; overflow-y: auto; } + .card-front-scrim { + position: absolute; + bottom: 0; + left: 0; + right: 0; + padding: 20px 8px 8px; + background: linear-gradient(to bottom, transparent 0%, rgba(0, 0, 0, 0.55) 100%); + border-radius: 0 0 10px 10px; + } + .btn-close { + background: none; + border: none; + cursor: pointer; + font-size: 18px; + line-height: 1; + color: var(--color-text-muted); + padding: 2px 6px; + float: right; + margin: -4px -4px 4px 4px; + } + .btn-close:hover { + color: var(--color-text); + } + .meta-chip { + font-size: 11px; + padding: 2px 7px; + border-radius: 99px; + background: var(--color-surface); + border: 1px solid var(--color-border); + color: var(--color-text-muted); + } + .btn-action { + display: block; + width: 100%; + padding: 6px 10px; + border-radius: 6px; + border: 1px solid var(--color-border); + background: var(--color-surface); + color: var(--color-text); + font-size: 12px; + text-align: center; + text-decoration: none; + cursor: pointer; + box-sizing: border-box; + } + .btn-action:hover { + background: var(--color-border); + } + .btn-danger { + color: var(--color-destructive, #dc2626); + border-color: var(--color-destructive, #dc2626); + } + .btn-danger:hover { + background: color-mix(in srgb, var(--color-destructive, #dc2626) 10%, transparent); + } @media (prefers-reduced-motion: reduce) { .card { transition: none;