@@ -278,130 +278,127 @@ function onBeforeToggleHoverCard(event) {
278278 </section >
279279 </article >
280280
281- <Transition name =" pop" >
282- <article
283- ref =" panelRef"
284- id =" contributor-hovercard"
285- popover =" hint"
286- :aria-label =" activeContributor?.name || activeContributor?.login"
287- class =" contributor-hovercard"
288- @beforetoggle =" onBeforeToggleHoverCard"
281+ <article
282+ id =" contributor-hovercard"
283+ popover =" hint"
284+ :aria-label =" activeContributor?.name || activeContributor?.login"
285+ class =" contributor-hovercard"
286+ @beforetoggle =" onBeforeToggleHoverCard"
287+ >
288+ <div
289+ v-if =" activeContributor"
290+ class =" flex flex-col gap-y-3 w-64 rounded-xl border border-border-subtle bg-bg-elevated p-4 shadow-2xl text-start"
289291 >
290- <div
291- v-if =" activeContributor"
292- class =" flex flex-col gap-y-3 w-64 rounded-xl border border-border-subtle bg-bg-elevated p-4 shadow-2xl text-start"
293- >
294- <div class =" flex flex-col gap-2 min-w-0" >
295- <span class =" w-full font-sans font-bold text-fg leading-tight truncate block" >
296- {{ activeContributor.name || activeContributor.login }}
297- </span >
298- <div
299- v-if =" roleLabels[activeContributor.role]"
300- class =" font-mono text-3xs uppercase tracking-wider text-accent font-bold"
301- >
302- {{ roleLabels[activeContributor.role] }}
303- </div >
304- <p
305- v-if =" activeContributor.bio"
306- class =" font-sans text-xs text-fg-subtle line-clamp-3 leading-relaxed"
307- >
308- "{{ activeContributor.bio }}"
309- </p >
310- <div
311- v-if =" activeContributor.companyHTML"
312- class =" flex items-center gap-1 font-sans text-2xs text-fg-muted min-w-0"
313- >
314- <div class =" i-lucide:building-2 size-3 shrink-0 text-accent/80" aria-hidden =" true" />
315- <div
316- class =" leading-relaxed break-words min-w-0 [& _a]:(text-accent no-underline hover:underline)"
317- v-html =" activeContributor.companyHTML"
318- />
319- </div >
292+ <div class =" flex flex-col gap-2 min-w-0" >
293+ <span class =" w-full font-sans font-bold text-fg leading-tight truncate block" >
294+ {{ activeContributor.name || activeContributor.login }}
295+ </span >
296+ <div
297+ v-if =" roleLabels[activeContributor.role]"
298+ class =" font-mono text-3xs uppercase tracking-wider text-accent font-bold"
299+ >
300+ {{ roleLabels[activeContributor.role] }}
301+ </div >
302+ <p
303+ v-if =" activeContributor.bio"
304+ class =" font-sans text-xs text-fg-subtle line-clamp-3 leading-relaxed"
305+ >
306+ "{{ activeContributor.bio }}"
307+ </p >
308+ <div
309+ v-if =" activeContributor.companyHTML"
310+ class =" flex items-center gap-1 font-sans text-2xs text-fg-muted min-w-0"
311+ >
312+ <div class =" i-lucide:building-2 size-3 shrink-0 text-accent/80" aria-hidden =" true" />
320313 <div
321- v-else-if =" activeContributor.company"
322- class =" flex items-center gap-1 font-sans text-2xs text-fg-muted min-w-0"
323- >
324- <div class =" i-lucide:building-2 size-3 shrink-0 text-accent/80" aria-hidden =" true" />
325- <span >{{ activeContributor.company }}</span >
326- </div >
314+ class =" leading-relaxed break-words min-w-0 [& _a]:(text-accent no-underline hover:underline)"
315+ v-html =" activeContributor.companyHTML"
316+ />
327317 </div >
328-
329- <div class =" flex flex-col gap-2 text-3xs text-fg-subtle font-sans" >
330- <div v-if =" activeContributor.location" class =" flex items-center gap-1" >
331- <div class =" i-lucide:map-pin size-3 shrink-0" aria-hidden =" true" />
332- <span class =" truncate" >{{ activeContributor.location }}</span >
333- </div >
334- <a
335- v-if =" activeContributor.websiteUrl"
336- :href =" activeContributor.websiteUrl"
337- target =" _blank"
338- rel =" noopener noreferrer"
339- class =" flex items-center gap-1 hover:text-accent transition-colors"
340- >
341- <div class =" i-lucide:link size-3 shrink-0" aria-hidden =" true" />
342- <span class =" truncate" >{{
343- activeContributor.websiteUrl.replace(/^https?:\/\//, '')
344- }}</span >
345- </a >
346- <a
347- v-if =" activeContributor.twitterUsername"
348- :href =" `https://x.com/${activeContributor.twitterUsername}`"
349- target =" _blank"
350- rel =" noopener noreferrer"
351- class =" flex items-center gap-1 hover:text-accent transition-colors"
352- >
353- <div class =" i-simple-icons:x size-2.5 shrink-0" aria-hidden =" true" />
354- <span >@{{ activeContributor.twitterUsername }}</span >
355- </a >
356- <a
357- v-if =" activeContributor.blueskyHandle"
358- :href =" `https://bsky.app/profile/${activeContributor.blueskyHandle}`"
359- target =" _blank"
360- rel =" noopener noreferrer"
361- class =" flex items-center gap-1 hover:text-accent transition-colors"
362- >
363- <div class =" i-simple-icons:bluesky size-2.5 shrink-0" aria-hidden =" true" />
364- <span >@{{ activeContributor.blueskyHandle }}</span >
365- </a >
366- <a
367- v-if =" activeContributor.mastodonUrl"
368- :href =" activeContributor.mastodonUrl"
369- target =" _blank"
370- rel =" noopener noreferrer"
371- class =" flex items-center gap-1 hover:text-accent transition-colors"
372- >
373- <div class =" i-simple-icons:mastodon size-2.5 shrink-0" aria-hidden =" true" />
374- <span class =" truncate" >{{
375- activeContributor.mastodonUrl.replace(/^https?:\/\//, '').replace(/\/@?/, '@')
376- }}</span >
377- </a >
318+ <div
319+ v-else-if =" activeContributor.company"
320+ class =" flex items-center gap-1 font-sans text-2xs text-fg-muted min-w-0"
321+ >
322+ <div class =" i-lucide:building-2 size-3 shrink-0 text-accent/80" aria-hidden =" true" />
323+ <span >{{ activeContributor.company }}</span >
378324 </div >
325+ </div >
379326
380- <div class =" flex items-center justify-between border-t border-border-subtle pt-3" >
381- <a
382- :href =" activeContributor.html_url"
383- target =" _blank"
384- rel =" noopener noreferrer"
385- class =" text-3xs text-fg-subtle font-mono hover:text-accent"
386- >
387- @{{ activeContributor.login }}
388- </a >
389-
390- <a
391- v-if =" activeContributor.sponsors_url"
392- :href =" activeContributor.sponsors_url"
393- :aria-label =" $t('about.team.sponsor_aria', { name: activeContributor.login })"
394- target =" _blank"
395- rel =" noopener noreferrer"
396- class =" flex items-center gap-1 rounded border border-purple-700/30 bg-purple-700/5 text-purple-700 dark:border-purple-300/30 dark:bg-purple-300/5 dark:text-purple-300 px-2 py-0.5 text-4xs font-bold uppercase tracking-wider transition-colors hover:bg-purple-700/15 dark:hover:bg-purple-300/15"
397- >
398- <span class =" i-lucide:heart size-3" aria-hidden =" true" />
399- <span >{{ $t('about.team.sponsor') }}</span >
400- </a >
327+ <div class =" flex flex-col gap-2 text-3xs text-fg-subtle font-sans" >
328+ <div v-if =" activeContributor.location" class =" flex items-center gap-1" >
329+ <div class =" i-lucide:map-pin size-3 shrink-0" aria-hidden =" true" />
330+ <span class =" truncate" >{{ activeContributor.location }}</span >
401331 </div >
332+ <a
333+ v-if =" activeContributor.websiteUrl"
334+ :href =" activeContributor.websiteUrl"
335+ target =" _blank"
336+ rel =" noopener noreferrer"
337+ class =" flex items-center gap-1 hover:text-accent transition-colors"
338+ >
339+ <div class =" i-lucide:link size-3 shrink-0" aria-hidden =" true" />
340+ <span class =" truncate" >{{
341+ activeContributor.websiteUrl.replace(/^https?:\/\//, '')
342+ }}</span >
343+ </a >
344+ <a
345+ v-if =" activeContributor.twitterUsername"
346+ :href =" `https://x.com/${activeContributor.twitterUsername}`"
347+ target =" _blank"
348+ rel =" noopener noreferrer"
349+ class =" flex items-center gap-1 hover:text-accent transition-colors"
350+ >
351+ <div class =" i-simple-icons:x size-2.5 shrink-0" aria-hidden =" true" />
352+ <span >@{{ activeContributor.twitterUsername }}</span >
353+ </a >
354+ <a
355+ v-if =" activeContributor.blueskyHandle"
356+ :href =" `https://bsky.app/profile/${activeContributor.blueskyHandle}`"
357+ target =" _blank"
358+ rel =" noopener noreferrer"
359+ class =" flex items-center gap-1 hover:text-accent transition-colors"
360+ >
361+ <div class =" i-simple-icons:bluesky size-2.5 shrink-0" aria-hidden =" true" />
362+ <span >@{{ activeContributor.blueskyHandle }}</span >
363+ </a >
364+ <a
365+ v-if =" activeContributor.mastodonUrl"
366+ :href =" activeContributor.mastodonUrl"
367+ target =" _blank"
368+ rel =" noopener noreferrer"
369+ class =" flex items-center gap-1 hover:text-accent transition-colors"
370+ >
371+ <div class =" i-simple-icons:mastodon size-2.5 shrink-0" aria-hidden =" true" />
372+ <span class =" truncate" >{{
373+ activeContributor.mastodonUrl.replace(/^https?:\/\//, '').replace(/\/@?/, '@')
374+ }}</span >
375+ </a >
376+ </div >
377+
378+ <div class =" flex items-center justify-between border-t border-border-subtle pt-3" >
379+ <a
380+ :href =" activeContributor.html_url"
381+ target =" _blank"
382+ rel =" noopener noreferrer"
383+ class =" text-3xs text-fg-subtle font-mono hover:text-accent"
384+ >
385+ @{{ activeContributor.login }}
386+ </a >
387+
388+ <a
389+ v-if =" activeContributor.sponsors_url"
390+ :href =" activeContributor.sponsors_url"
391+ :aria-label =" $t('about.team.sponsor_aria', { name: activeContributor.login })"
392+ target =" _blank"
393+ rel =" noopener noreferrer"
394+ class =" flex items-center gap-1 rounded border border-purple-700/30 bg-purple-700/5 text-purple-700 dark:border-purple-300/30 dark:bg-purple-300/5 dark:text-purple-300 px-2 py-0.5 text-4xs font-bold uppercase tracking-wider transition-colors hover:bg-purple-700/15 dark:hover:bg-purple-300/15"
395+ >
396+ <span class =" i-lucide:heart size-3" aria-hidden =" true" />
397+ <span >{{ $t('about.team.sponsor') }}</span >
398+ </a >
402399 </div >
403- </article >
404- </Transition >
400+ </div >
401+ </article >
405402 </main >
406403</template >
407404
0 commit comments