Spaces:
Running
Running
| --- | |
| 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; | |
| 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> | |