2025-09-17 04:00:00 +00:00
|
|
|
<script lang="ts">
|
|
|
|
|
import { getContext, onMount } from 'svelte';
|
|
|
|
|
import { LinkPreview } from 'bits-ui';
|
|
|
|
|
|
|
|
|
|
const i18n = getContext('i18n');
|
|
|
|
|
import { getUserById } from '$lib/apis/users';
|
|
|
|
|
|
|
|
|
|
import UserStatus from './UserStatus.svelte';
|
|
|
|
|
|
|
|
|
|
export let id = null;
|
|
|
|
|
|
|
|
|
|
export let side = 'top';
|
|
|
|
|
export let align = 'start';
|
|
|
|
|
export let sideOffset = 6;
|
|
|
|
|
|
|
|
|
|
let user = null;
|
|
|
|
|
|
|
|
|
|
onMount(async () => {
|
|
|
|
|
if (id) {
|
|
|
|
|
user = await getUserById(localStorage.token, id).catch((error) => {
|
|
|
|
|
console.error('Error fetching user by ID:', error);
|
|
|
|
|
return null;
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
{#if user}
|
|
|
|
|
<LinkPreview.Content
|
2025-11-25 09:38:07 +00:00
|
|
|
class="w-full max-w-[260px] rounded-2xl border border-gray-100 dark:border-gray-800 z-[99999] bg-white dark:bg-gray-850 dark:text-white shadow-lg transition"
|
2025-09-17 04:00:00 +00:00
|
|
|
{side}
|
|
|
|
|
{align}
|
|
|
|
|
{sideOffset}
|
|
|
|
|
>
|
|
|
|
|
<UserStatus {user} />
|
|
|
|
|
</LinkPreview.Content>
|
|
|
|
|
{/if}
|