35 lines
889 B
Text
35 lines
889 B
Text
---
|
|
import { type CollectionEntry } from "astro:content";
|
|
import { type Lang } from "../content/config";
|
|
|
|
type Props = {
|
|
lang: Lang;
|
|
user: CollectionEntry<"users">;
|
|
};
|
|
|
|
const { user, lang } = Astro.props;
|
|
const username = user.data.nameLang[lang] || user.data.name;
|
|
let link: string | null = null;
|
|
if (user.data.preferredLink) {
|
|
if (user.data.preferredLink in user.data.links) {
|
|
const preferredLink = user.data.links[user.data.preferredLink] as string | [string, string];
|
|
if (typeof preferredLink === "string") {
|
|
link = preferredLink;
|
|
} else {
|
|
link = preferredLink[0];
|
|
}
|
|
} else {
|
|
throw new Error(`No preferredLink "${user.data.preferredLink}" for user ${user.id}`);
|
|
}
|
|
}
|
|
---
|
|
|
|
{
|
|
user.data.preferredLink == null ? (
|
|
<span>{username}</span>
|
|
) : (
|
|
<a href={link} class="text-link underline" target="_blank">
|
|
{username}
|
|
</a>
|
|
)
|
|
}
|