your personal website on atproto - mirror blento.app
at small-improvements 52 lines 1.3 kB view raw
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 { AtprotoLoginModal } from '@foxui/social'; 12 import { login, signup } from '$lib/atproto'; 13 import type { ActorIdentifier } from '@atcute/lexicons'; 14 15 let { children, data } = $props(); 16 let showThemeToggle = $derived( 17 !/(?:\/card\/[^/]+|\/embed\/type\/[^/]+)$/.test(page.url.pathname) 18 ); 19 20 const errorMessages: Record<string, (params: URLSearchParams) => string> = { 21 handle_not_found: (p) => `Handle ${p.get('handle') ?? ''} not found!` 22 }; 23 24 onMount(() => { 25 initClient({ customDomain: data.customDomain }); 26 }); 27</script> 28 29<Tooltip.Provider delayDuration={300}> 30 {@render children()} 31</Tooltip.Provider> 32 33{#if showThemeToggle} 34 <ThemeToggle class="fixed top-2 left-2 z-10" /> 35{/if} 36 37<Toaster /> 38 39{#if videoPlayer.id} 40 <YoutubeVideoPlayer /> 41{/if} 42 43<AtprotoLoginModal 44 login={async (handle) => { 45 await login(handle as ActorIdentifier); 46 return true; 47 }} 48 signup={async () => { 49 await signup(); 50 return true; 51 }} 52/>