src/routes/+layout.svelte 1.5 K raw
1
<script lang="ts">
2
import { onNavigate } from "$app/navigation";
3
import "./layout.css";
4
5
let { children } = $props();
6
7
onNavigate((navigation) => {
8
	if (!document.startViewTransition) return;
9
10
	return new Promise((resolve) => {
11
		document.startViewTransition(async () => {
12
			resolve();
13
			await navigation.complete;
14
		});
15
	});
16
});
17
</script>
18
19
<svelte:head>
20
  <link rel="icon" href="/favicon.ico" />
21
  <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
22
  <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
23
  <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
24
  <link rel="manifest" href="/site.webmanifest">
25
  <link rel="alternate" type="application/rss+xml" title="RSS" href="https://steve.photo/rss.xml" />
26
  <meta name="description" content="Photography by Steve" />
27
  <meta property="og:site_name" content="steve.photo" />
28
  <meta property="og:type" content="website" />
29
  <meta property="og:title" content="steve.photo" />
30
  <meta property="og:url" content="https://steve.photo" />
31
  <meta property="og:description" content="Photography by Steve" />
32
  <meta property="og:image" content="https://steve.photo/og.png" />
33
  <meta name="twitter:card" content="summary_large_image" />
34
  <meta name="twitter:title" content="steve.photo" />
35
  <meta name="twitter:description" content="Photography by Steve" />
36
  <meta name="twitter:image" content="https://steve.photo/og.png" />
37
  <link rel="canonical" href="https://steve.photo" />
38
</svelte:head>
39
{@render children()}