2025-06-07 13:31:36 +02:00
|
|
|
<script lang="ts">
|
2025-06-07 14:37:50 +02:00
|
|
|
import { Popover } from "flowbite-svelte"
|
2025-06-07 13:31:36 +02:00
|
|
|
import { fade } from "svelte/transition"
|
|
|
|
|
import { OsmConnection } from "../../Logic/Osm/OsmConnection"
|
2025-08-01 03:07:37 +02:00
|
|
|
import { onDestroy } from "svelte"
|
2025-06-07 13:31:36 +02:00
|
|
|
|
|
|
|
|
let open = false
|
|
|
|
|
export let state: { osmConnection: OsmConnection }
|
|
|
|
|
let userdetails = state.osmConnection.userDetails
|
2025-08-01 03:07:37 +02:00
|
|
|
let username = userdetails.mapD((ud) => ud.name, onDestroy)
|
2025-06-25 16:55:55 +02:00
|
|
|
username.addCallbackAndRunD((ud) => {
|
2025-06-07 13:31:36 +02:00
|
|
|
if (ud) {
|
|
|
|
|
open = true
|
|
|
|
|
window.setTimeout(() => {
|
2025-07-10 18:26:31 +02:00
|
|
|
open = false
|
2025-06-25 16:55:55 +02:00
|
|
|
}, 3000)
|
2025-06-07 13:31:36 +02:00
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
</script>
|
|
|
|
|
|
2025-06-18 21:40:01 +02:00
|
|
|
<Popover
|
2025-06-25 16:55:55 +02:00
|
|
|
class="mt-4 hidden sm:block"
|
2025-06-18 21:40:01 +02:00
|
|
|
defaultClass="py-2 px-3 w-fit "
|
|
|
|
|
trigger="null"
|
|
|
|
|
placement="bottom"
|
|
|
|
|
transition={(e) => fade(e, { duration: 150 })}
|
|
|
|
|
bind:open
|
|
|
|
|
>
|
2025-06-25 16:55:55 +02:00
|
|
|
{#if $username !== undefined}
|
2025-06-07 13:31:36 +02:00
|
|
|
<div style="width: max-content" class="flex items-center">
|
|
|
|
|
{#if $userdetails.img}
|
2025-07-31 20:24:36 +02:00
|
|
|
<img src={$userdetails.img} alt="avatar" class="mr-4 h-10 w-10 rounded-full" />
|
2025-06-07 13:31:36 +02:00
|
|
|
{/if}
|
|
|
|
|
<div>
|
|
|
|
|
<div>Welcome back</div>
|
|
|
|
|
<div class="normal-background" style="width: max-content">
|
2025-06-25 16:55:55 +02:00
|
|
|
<b>{$username}</b>
|
2025-06-07 13:31:36 +02:00
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
{/if}
|
|
|
|
|
</Popover>
|