2024-08-12 11:00:25 +02:00
|
|
|
<script lang="ts">
|
|
|
|
|
import * as Avatar from '$lib/components/ui/avatar';
|
|
|
|
|
import * as DropdownMenu from '$lib/components/ui/dropdown-menu';
|
|
|
|
|
import WebAuthnService from '$lib/services/webauthn-service';
|
|
|
|
|
import userStore from '$lib/stores/user-store';
|
|
|
|
|
import { LucideLogOut, LucideUser } from 'lucide-svelte';
|
|
|
|
|
|
|
|
|
|
const webauthnService = new WebAuthnService();
|
|
|
|
|
|
2024-08-13 20:51:10 +02:00
|
|
|
async function logout() {
|
|
|
|
|
await webauthnService.logout();
|
2024-08-12 11:00:25 +02:00
|
|
|
window.location.reload();
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<DropdownMenu.Root>
|
|
|
|
|
<DropdownMenu.Trigger
|
2024-10-02 10:02:28 +02:00
|
|
|
><Avatar.Root class="h-9 w-9">
|
2025-02-19 14:28:45 +01:00
|
|
|
<Avatar.Image src="/api/users/me/profile-picture.png" />
|
2024-08-12 11:00:25 +02:00
|
|
|
</Avatar.Root></DropdownMenu.Trigger
|
|
|
|
|
>
|
2024-09-03 22:24:29 +02:00
|
|
|
<DropdownMenu.Content class="min-w-40" align="start">
|
2024-08-12 11:00:25 +02:00
|
|
|
<DropdownMenu.Label class="font-normal">
|
|
|
|
|
<div class="flex flex-col space-y-1">
|
|
|
|
|
<p class="text-sm font-medium leading-none">
|
|
|
|
|
{$userStore?.firstName}
|
|
|
|
|
{$userStore?.lastName}
|
|
|
|
|
</p>
|
2025-02-19 14:28:45 +01:00
|
|
|
<p class="text-muted-foreground text-xs leading-none">{$userStore?.email}</p>
|
2024-08-12 11:00:25 +02:00
|
|
|
</div>
|
|
|
|
|
</DropdownMenu.Label>
|
|
|
|
|
<DropdownMenu.Separator />
|
|
|
|
|
<DropdownMenu.Group>
|
|
|
|
|
<DropdownMenu.Item href="/settings/account"
|
|
|
|
|
><LucideUser class="mr-2 h-4 w-4" /> My Account</DropdownMenu.Item
|
|
|
|
|
>
|
|
|
|
|
<DropdownMenu.Item on:click={logout}
|
|
|
|
|
><LucideLogOut class="mr-2 h-4 w-4" /> Logout</DropdownMenu.Item
|
|
|
|
|
>
|
|
|
|
|
</DropdownMenu.Group>
|
|
|
|
|
</DropdownMenu.Content>
|
|
|
|
|
</DropdownMenu.Root>
|