Improve listing UI

This commit is contained in:
dtonon 2026-06-03 21:13:37 +01:00
parent 2dc823d055
commit 2b1a6257de
2 changed files with 38 additions and 15 deletions

View file

@ -27,7 +27,7 @@
<img src={a.picture} alt="" class={cls} />
{:else}
<span
class="{cls} flex items-center justify-center rounded-full bg-neutral-200 dark:bg-neutral-700 text-[10px] font-semibold text-neutral-500 dark:text-neutral-400"
class="{cls} flex items-center justify-center rounded-full bg-neutral-200 text-[10px] font-semibold text-neutral-500 dark:bg-neutral-700 dark:text-neutral-400"
>
{a.name[0].toUpperCase()}
</span>
@ -36,12 +36,18 @@
<a
href="/thread/{thread.id}"
class="flex items-center gap-3 border-b border-neutral-100 dark:border-neutral-800 py-4 hover:bg-neutral-50 dark:hover:bg-neutral-800 sm:gap-6"
class="group flex items-center gap-3 border-b border-neutral-100 py-4 hover:bg-linear-to-r hover:from-transparent hover:via-neutral-100 hover:to-transparent sm:gap-6 dark:border-neutral-800 dark:hover:bg-linear-to-r dark:hover:from-transparent dark:hover:via-neutral-800 dark:hover:to-transparent"
>
<!-- Col 1: title + byline -->
<div class="min-w-0 flex-1">
<div class="mb-1.5 text-lg leading-5 text-neutral-900 dark:text-neutral-100">{thread.title}</div>
<div class="flex items-center gap-1.5 text-sm text-neutral-500 dark:text-neutral-400">
<div
class="group-hover:text-brand mb-1.5 text-lg leading-5 text-neutral-900 dark:text-neutral-100"
>
{thread.title}
</div>
<div
class="flex items-center gap-1.5 text-sm text-neutral-500 dark:text-neutral-400"
>
<span>by</span>
{@render avatar(thread.author, "h-5 w-5 rounded-full object-cover")}
{#if thread.repliers.length > 0}
@ -73,8 +79,11 @@
<!-- Col 3: replies | activity -->
<div class="flex shrink-0 items-center gap-4 sm:gap-6">
<div class="flex flex-col items-center gap-0.5">
<span class="text-neutral-800 dark:text-neutral-200">{thread.replyCount}</span>
<span class="text-sm text-neutral-400 dark:text-neutral-500">replies</span>
<span class="text-neutral-800 dark:text-neutral-200"
>{thread.replyCount}</span
>
<span class="text-sm text-neutral-400 dark:text-neutral-500">replies</span
>
</div>
<div class="flex flex-col items-center gap-0.5">
@ -83,9 +92,13 @@
thread.lastActiveAuthor,
"h-5 w-5 rounded-full object-cover",
)}
<span class="text-neutral-800 dark:text-neutral-200">{thread.lastActivity}</span>
<span class="text-neutral-800 dark:text-neutral-200"
>{thread.lastActivity}</span
>
</div>
<span class="text-sm text-neutral-400 dark:text-neutral-500">activity</span>
<span class="text-sm text-neutral-400 dark:text-neutral-500"
>activity</span
>
</div>
</div>
</a>

View file

@ -42,7 +42,7 @@
<img src={a.picture} alt="" class="h-5 w-5 rounded-full object-cover" />
{:else}
<span
class="flex h-5 w-5 items-center justify-center rounded-full bg-neutral-200 dark:bg-neutral-700 text-[10px] font-semibold text-neutral-500 dark:text-neutral-400"
class="flex h-5 w-5 items-center justify-center rounded-full bg-neutral-200 text-[10px] font-semibold text-neutral-500 dark:bg-neutral-700 dark:text-neutral-400"
aria-hidden="true"
>
{a.name[0].toUpperCase()}
@ -79,17 +79,23 @@
{@const last = act ? authorOf(act.latestPubkey) : null}
<a
href="/room/{room.id}"
class="group flex items-start justify-between gap-4 py-5"
class="group flex items-start justify-between gap-4 py-5 hover:bg-linear-to-r hover:from-transparent hover:via-neutral-100 hover:to-transparent dark:hover:bg-linear-to-r dark:hover:from-transparent dark:hover:via-neutral-800 dark:hover:to-transparent"
>
<div class="min-w-0">
<h2 class="group-hover:text-brand text-2xl text-neutral-800 dark:text-neutral-200">
<h2
class="group-hover:text-brand text-2xl text-neutral-800 dark:text-neutral-200"
>
{room.name}
</h2>
{#if room.about}
<p class="mt-1 leading-5 text-neutral-600 dark:text-neutral-400">{room.about}</p>
<p class="mt-1 leading-5 text-neutral-600 dark:text-neutral-400">
{room.about}
</p>
{/if}
{#if admin}
<div class="mt-2 flex items-center gap-2 text-sm text-neutral-500 dark:text-neutral-400">
<div
class="mt-2 flex items-center gap-2 text-sm text-neutral-500 dark:text-neutral-400"
>
<span>Admin</span>
{@render pic(admin)}
</div>
@ -99,9 +105,13 @@
<div class="flex shrink-0 flex-col items-center gap-0.5">
<div class="flex items-center gap-1">
{@render pic(last)}
<span class="text-neutral-800 dark:text-neutral-200">{relativeTime(act.latestAt)}</span>
<span class="text-neutral-800 dark:text-neutral-200"
>{relativeTime(act.latestAt)}</span
>
</div>
<span class="text-sm text-neutral-400 dark:text-neutral-500">activity</span>
<span class="text-sm text-neutral-400 dark:text-neutral-500"
>activity</span
>
</div>
{/if}
</a>