Molbap's picture
Molbap HF Staff
push a bunch of updates
e903a32
raw
history blame
2.19 kB
---
interface Props {
username: string;
name?: string;
url?: string;
avatarUrl?: string;
}
const { username, name, url, avatarUrl } = Astro.props as Props;
const profileUrl = url ?? `https://huggingface.co/${encodeURIComponent(username)}`;
const displayName = name ?? username;
const imgSrc = avatarUrl ?? `https://huggingface.co/api/users/${encodeURIComponent(username)}/avatar`;
---
<div class="hf-user">
<div class="hf-user__left">
<img
class="hf-user__avatar"
src={imgSrc}
alt={`${displayName} avatar`}
width="44"
height="44"
loading="lazy"
decoding="async"
referrerpolicy="no-referrer"
/>
<span class="hf-user__text">
<a class="hf-user__name" href={profileUrl} target="_blank" rel="noopener noreferrer">{displayName}</a>
<span class="hf-user__row">
<a class="hf-user__username" href={profileUrl} target="_blank" rel="noopener noreferrer">@{username}</a>
</span>
</span>
</div>
</div>
<style>
.hf-user {
display: inline-flex;
align-items: center;
gap: 10px;
padding: 10px 10px 10px 12px;
border-radius: 12px;
box-shadow: none;
}
.hf-user__left {
display: flex;
align-items: center;
gap: 10px;
text-decoration: none;
color: inherit;
}
.hf-user__avatar {
display: block;
width: 44px;
height: 44px;
border-radius: 50%;
object-fit: cover;
box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.12) inset;
}
.hf-user__text {
display: flex;
flex-direction: column;
line-height: 1.1;
}
.hf-user__row {
display: inline-flex;
align-items: center;
white-space: nowrap;
}
.hf-user__name {
font-size: 14px;
font-weight: 700;
}
.hf-user__username {
font-size: 12px;
color: var(--muted-color);
text-decoration: underline!important;
text-underline-offset: 2px;
text-decoration-thickness: 0.06em;
text-decoration-color: var(--link-underline);
}
.hf-user a {
color: inherit;
text-decoration: none;
border-bottom: none;
}
</style>
<style is:global>
.hf-user-list {
display: flex;
flex-wrap: wrap;
gap: 12px;
}
</style>