your personal website on atproto - mirror
blento.app
1<script lang="ts">
2 import '../app.css';
3
4 import { Tooltip } from 'bits-ui';
5 import { ThemeToggle, Toaster, toast } from '@foxui/core';
6 import { onMount } from 'svelte';
7 import { initClient } from '$lib/atproto';
8 import YoutubeVideoPlayer, { videoPlayer } from '$lib/components/YoutubeVideoPlayer.svelte';
9 import { page } from '$app/state';
10 import { goto } from '$app/navigation';
11 import LoginModal from '$lib/atproto/UI/LoginModal.svelte';
12
13 let { children, data } = $props();
14 let showThemeToggle = $derived(
15 !/(?:\/card\/[^/]+|\/embed\/type\/[^/]+)$/.test(page.url.pathname)
16 );
17
18 const errorMessages: Record<string, (params: URLSearchParams) => string> = {
19 handle_not_found: (p) => `Handle ${p.get('handle') ?? ''} not found!`
20 };
21
22 onMount(() => {
23 initClient({ customDomain: data.customDomain });
24 });
25</script>
26
27<Tooltip.Provider delayDuration={300}>
28 {@render children()}
29</Tooltip.Provider>
30
31{#if showThemeToggle}
32 <ThemeToggle class="fixed top-2 left-2 z-10" />
33{/if}
34
35<Toaster />
36
37{#if videoPlayer.id}
38 <YoutubeVideoPlayer />
39{/if}
40
41<LoginModal />