gallery.badmanners.xyz/src/components/UserComponent.astro

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>
)
}