From 207efcc38e35858dca663b40f0eb2874701b4486 Mon Sep 17 00:00:00 2001 From: Alexander Bocken Date: Tue, 17 Feb 2026 18:59:18 +0100 Subject: [PATCH] recipes: view transitions for recipe detail navigation Image morphs between CompactCard thumbnail and hero, title block slides up from bottom, header persists across transitions. Only activates for recipe detail navigations, not between list pages. --- src/lib/components/Header.svelte | 1 + src/lib/components/recipes/CompactCard.svelte | 11 ++++++- .../recipes/TitleImgParallax.svelte | 4 +-- .../[recipeLang=recipeLang]/+layout.svelte | 30 +++++++++++++++++++ .../[name]/+page.svelte | 18 +++++++++-- 5 files changed, 59 insertions(+), 5 deletions(-) diff --git a/src/lib/components/Header.svelte b/src/lib/components/Header.svelte index 696d733..4f2a225 100644 --- a/src/lib/components/Header.svelte +++ b/src/lib/components/Header.svelte @@ -99,6 +99,7 @@ nav{ box-shadow: 0 1em 1rem 0rem rgba(0,0,0,0.4); height: var(--header-h); padding-left: 0.5rem; + view-transition-name: site-header; } .nav-toggle{ display: none; diff --git a/src/lib/components/recipes/CompactCard.svelte b/src/lib/components/recipes/CompactCard.svelte index 07fbd56..95d9da9 100644 --- a/src/lib/components/recipes/CompactCard.svelte +++ b/src/lib/components/recipes/CompactCard.svelte @@ -23,6 +23,11 @@ const img_color = $derived(recipe.images?.[0]?.color || ''); const isInSeason = $derived(icon_override || recipe.season?.includes(current_month)); + + function activateTransitions(event) { + const img = event.currentTarget.querySelector('.img-wrap img'); + if (img) img.style.viewTransitionName = `recipe-${recipe.short_name}-img`; + } -
+ + +
{#if showFavoriteIndicator && isFavorite} ❤️ @@ -167,6 +175,7 @@ src="https://bocken.org/static/rezepte/thumb/{img_name}" alt={img_alt} loading={loading_strat} + data-recipe={recipe.short_name} />
diff --git a/src/lib/components/recipes/TitleImgParallax.svelte b/src/lib/components/recipes/TitleImgParallax.svelte index 909eb06..1d5816b 100644 --- a/src/lib/components/recipes/TitleImgParallax.svelte +++ b/src/lib/components/recipes/TitleImgParallax.svelte @@ -1,7 +1,7 @@