Skip to content

Commit 6b102a1

Browse files
style: improve view transitions and make them accessible
1 parent f72efc3 commit 6b102a1

File tree

5 files changed

+41
-27
lines changed

5 files changed

+41
-27
lines changed

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@
6060
"svelte-exmarkdown": "^5.0.1",
6161
"svelte-meta-tags": "^4.3.0",
6262
"svelte-sonner": "^1.0.3",
63-
"sveltekit-view-transition": "^0.5.3",
6463
"tailwind-merge": "^3.3.0",
6564
"tailwind-variants": "^1.0.0",
6665
"tailwindcss": "^4.1.7",

pnpm-lock.yaml

Lines changed: 0 additions & 14 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/routes/+layout.svelte

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22
import "../app.css";
33
import { scrollY } from "svelte/reactivity/window";
44
import { dev } from "$app/environment";
5+
import { onNavigate } from "$app/navigation";
56
import { page } from "$app/state";
67
import { ChevronDown, type Icon, Monitor, Moon, Sun, X } from "@lucide/svelte";
78
import { ProgressBar } from "@prgm/sveltekit-progress-bar";
89
import { ModeWatcher, resetMode, setMode } from "mode-watcher";
910
import { MetaTags, deepMerge } from "svelte-meta-tags";
10-
import { setupViewTransition } from "sveltekit-view-transition";
1111
import { news } from "$lib/news/news.json";
1212
import type { Entries } from "$lib/types";
1313
import { cn } from "$lib/utils";
@@ -19,7 +19,18 @@
1919
2020
let { data, children } = $props();
2121
22-
setupViewTransition();
22+
// View Transitions API
23+
// https://svelte.dev/blog/view-transitions
24+
onNavigate(({ complete }) => {
25+
if (!document.startViewTransition) return;
26+
27+
return new Promise(resolve => {
28+
document.startViewTransition(async () => {
29+
resolve();
30+
await complete;
31+
});
32+
});
33+
});
2334
2435
// SEO
2536
let metaTags = $derived(deepMerge(data.baseMetaTags, page.data.pageMetaTags));

src/routes/package/[...package]/+page.svelte

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,8 @@
102102
<div class="flex flex-col">
103103
<div class="my-8">
104104
<h1
105-
class="text-3xl font-semibold text-primary text-shadow-sm md:text-5xl"
106-
style:view-transition-name="title-{viewTransitionName}"
105+
class="text-3xl font-semibold text-primary text-shadow-sm md:text-5xl motion-safe:[view-transition-name:var(--vt-name)]"
106+
style:--vt-name="title-{viewTransitionName}"
107107
>
108108
<!-- eslint-disable-next-line svelte/no-at-html-tags -->
109109
{@html data.currentPackage.pkg.name.replace(/\//g, "/<wbr />")}
@@ -117,9 +117,15 @@
117117
target="_blank"
118118
class="underline-offset-2 group-hover:underline after:ml-0.5 after:inline-block after:font-sans after:text-sm after:content-['↗']"
119119
>
120-
<span style:view-transition-name="owner-{viewTransitionName}">
120+
<span
121+
class="motion-safe:[view-transition-name:var(--vt-name)]"
122+
style:--vt-name="owner-{viewTransitionName}"
123+
>
121124
{data.currentPackage.repoOwner}
122-
</span>/<wbr /><span style:view-transition-name="repo-name-{viewTransitionName}">
125+
</span>/<wbr /><span
126+
class="motion-safe:[view-transition-name:var(--vt-name)]"
127+
style:--vt-name="repo-name-{viewTransitionName}"
128+
>
123129
{data.currentPackage.repoName}
124130
</span>
125131
</a>
@@ -161,7 +167,10 @@
161167
</Collapsible.Root>
162168
</div>
163169
{#if data.currentPackage.pkg.description}
164-
<h3 class="mt-4 italic" style:view-transition-name="desc-{viewTransitionName}">
170+
<h3
171+
class="mt-4 italic motion-safe:[view-transition-name:var(--vt-name)]"
172+
style:--vt-name="desc-{viewTransitionName}"
173+
>
165174
{data.currentPackage.pkg.description}
166175
</h3>
167176
{/if}

src/routes/packages/+page.svelte

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,8 @@
7373
>
7474
<div class="flex flex-col">
7575
<h4
76-
class="font-medium inline-flex flex-col xs:flex-row items-start xs:items-center gap-2"
77-
style:view-transition-name="title-{viewTransitionName}"
76+
class="font-medium inline-flex flex-col xs:flex-row items-start motion-safe:[view-transition-name:var(--vt-name)] xs:items-center gap-2"
77+
style:--vt-name="title-{viewTransitionName}"
7878
>
7979
<span
8080
class={[
@@ -91,16 +91,25 @@
9191
{/if}
9292
</h4>
9393
<span class="text-muted-foreground">
94-
<span style:view-transition-name="desc-{viewTransitionName}">
94+
<span
95+
class="motion-safe:[view-transition-name:var(--vt-name)]"
96+
style:--vt-name="desc-{viewTransitionName}"
97+
>
9598
{pkg.description}
9699
</span>
97100
<span class="font-bold">
98101
{#if pkg.description}
99102
100103
{/if}
101-
<span style:view-transition-name="owner-{viewTransitionName}">
104+
<span
105+
class="motion-safe:[view-transition-name:var(--vt-name)]"
106+
style:--vt-name="owner-{viewTransitionName}"
107+
>
102108
{repoOwner}
103-
</span>/<span style:view-transition-name="repo-name-{viewTransitionName}">
109+
</span>/<span
110+
class="motion-safe:[view-transition-name:var(--vt-name)]"
111+
style:--vt-name="repo-name-{viewTransitionName}"
112+
>
104113
{repoName}
105114
</span>
106115
</span>

0 commit comments

Comments
 (0)