this repo has no description
1<script lang="ts"> 2 import { getCurrentPath } from './lib/router.svelte' 3 import { initAuth, getAuthState } from './lib/auth.svelte' 4 import { initI18n, _ } from './lib/i18n' 5 import { isLoading as i18nLoading } from 'svelte-i18n' 6 import Login from './routes/Login.svelte' 7 import Register from './routes/Register.svelte' 8 import RegisterPasskey from './routes/RegisterPasskey.svelte' 9 import Verify from './routes/Verify.svelte' 10 import ResetPassword from './routes/ResetPassword.svelte' 11 import RecoverPasskey from './routes/RecoverPasskey.svelte' 12 import RequestPasskeyRecovery from './routes/RequestPasskeyRecovery.svelte' 13 import Dashboard from './routes/Dashboard.svelte' 14 import AppPasswords from './routes/AppPasswords.svelte' 15 import InviteCodes from './routes/InviteCodes.svelte' 16 import Settings from './routes/Settings.svelte' 17 import Sessions from './routes/Sessions.svelte' 18 import Comms from './routes/Comms.svelte' 19 import RepoExplorer from './routes/RepoExplorer.svelte' 20 import Admin from './routes/Admin.svelte' 21 import OAuthConsent from './routes/OAuthConsent.svelte' 22 import OAuthLogin from './routes/OAuthLogin.svelte' 23 import OAuthAccounts from './routes/OAuthAccounts.svelte' 24 import OAuth2FA from './routes/OAuth2FA.svelte' 25 import OAuthTotp from './routes/OAuthTotp.svelte' 26 import OAuthPasskey from './routes/OAuthPasskey.svelte' 27 import OAuthError from './routes/OAuthError.svelte' 28 import Security from './routes/Security.svelte' 29 import TrustedDevices from './routes/TrustedDevices.svelte' 30 import Home from './routes/Home.svelte' 31 32 initI18n() 33 34 const auth = getAuthState() 35 36 $effect(() => { 37 initAuth() 38 }) 39 40 function getComponent(path: string) { 41 switch (path) { 42 case '/login': 43 return Login 44 case '/register': 45 return Register 46 case '/register-passkey': 47 return RegisterPasskey 48 case '/verify': 49 return Verify 50 case '/reset-password': 51 return ResetPassword 52 case '/recover-passkey': 53 return RecoverPasskey 54 case '/request-passkey-recovery': 55 return RequestPasskeyRecovery 56 case '/dashboard': 57 return Dashboard 58 case '/app-passwords': 59 return AppPasswords 60 case '/invite-codes': 61 return InviteCodes 62 case '/settings': 63 return Settings 64 case '/sessions': 65 return Sessions 66 case '/comms': 67 return Comms 68 case '/repo': 69 return RepoExplorer 70 case '/admin': 71 return Admin 72 case '/oauth/consent': 73 return OAuthConsent 74 case '/oauth/login': 75 return OAuthLogin 76 case '/oauth/accounts': 77 return OAuthAccounts 78 case '/oauth/2fa': 79 return OAuth2FA 80 case '/oauth/totp': 81 return OAuthTotp 82 case '/oauth/passkey': 83 return OAuthPasskey 84 case '/oauth/error': 85 return OAuthError 86 case '/security': 87 return Security 88 case '/trusted-devices': 89 return TrustedDevices 90 default: 91 return Home 92 } 93 } 94 95 let currentPath = $derived(getCurrentPath()) 96 let CurrentComponent = $derived(getComponent(currentPath)) 97</script> 98 99<main> 100 {#if auth.loading || $i18nLoading} 101 <div class="loading"> 102 <p>Loading...</p> 103 </div> 104 {:else} 105 <CurrentComponent /> 106 {/if} 107</main> 108 109<style> 110 main { 111 min-height: 100vh; 112 } 113 114 .loading { 115 display: flex; 116 align-items: center; 117 justify-content: center; 118 min-height: 100vh; 119 color: var(--text-secondary); 120 } 121</style>