From 71a628673d025b5bfa367afdac0914f867679199 Mon Sep 17 00:00:00 2001 From: Admin Date: Thu, 16 Apr 2026 13:00:50 +0500 Subject: [PATCH] =?UTF-8?q?feat(ui):=20homepage=20UX=20polish=20=E2=80=94?= =?UTF-8?q?=20headings,=20placeholders,=20genre=20highlight,=20view-all?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Bump all section headings to text-lg for visual hierarchy - Replace SVG book icon no-cover placeholders with first-letter avatars across Completed, Ready to Listen, Trending, Recommendations, Recently Updated, and From Following shelves - Highlight user's top genre pill in Browse by Genre strip - Add "View all → /catalogue?genre=…" link to Because You Read section Co-Authored-By: Claude Sonnet 4.6 --- ui/src/routes/+page.svelte | 79 +++++++++++++++++++++++--------------- 1 file changed, 49 insertions(+), 30 deletions(-) diff --git a/ui/src/routes/+page.svelte b/ui/src/routes/+page.svelte index 71ff11a..63876e0 100644 --- a/ui/src/routes/+page.svelte +++ b/ui/src/routes/+page.svelte @@ -247,13 +247,16 @@ {#if streak > 0}
- - {streak} - day{streak !== 1 ? 's' : ''} reading + + + + + {streak} day{streak !== 1 ? 's' : ''} {#if data.stats.booksInProgress > 0} - - {data.stats.booksInProgress} {data.stats.booksInProgress === 1 ? 'book' : 'books'} in progress + + {data.stats.booksInProgress} + {data.stats.booksInProgress === 1 ? 'book' : 'books'} in progress {/if}
@@ -263,32 +266,39 @@ {#if shelfBooks.length > 0}
-

{m.home_continue_reading()}

+

{m.home_continue_reading()}

{m.home_view_all()}
{#each shelfBooks as { book, chapter }} -
+
{#if book.cover} {book.title} {:else}
- + {(book.title ?? '?').charAt(0).toUpperCase()}
{/if} {m.home_chapter_badge({ n: String(chapter) })} + + {#if book.total_chapters > 0} + {@const pct = Math.min(100, Math.round((chapter / book.total_chapters) * 100))} +
+
+
+ {/if}

{book.title ?? ''}

+ {#if book.author} +

{book.author}

+ {/if}
{/each} @@ -307,7 +320,7 @@ {#if data.continueCompleted.length > 0}
-

Completed

+

Completed

{#each data.continueCompleted as { book, chapter }} @@ -318,7 +331,7 @@ {book.title} {:else}
- + {(book.title ?? '?').charAt(0).toUpperCase()}
{/if} Done @@ -339,7 +352,7 @@ {#if data.readyToListen.length > 0 && !hidden.has('ready-to-listen')}
-

Ready to Listen

+

Ready to Listen

View all
{#each GENRES as genre} + {@const isTop = data.topGenre && genre.toLowerCase() === data.topGenre.toLowerCase()} + class="shrink-0 px-3.5 py-1.5 rounded-full border text-sm transition-colors whitespace-nowrap {isTop + ? 'border-(--color-brand) bg-(--color-brand)/10 text-(--color-brand) font-semibold' + : 'border-(--color-border) bg-(--color-surface-2) text-(--color-muted) hover:border-(--color-brand)/50 hover:text-(--color-text) hover:bg-(--color-surface-3)'}"> {genre} {/each} @@ -428,7 +444,7 @@ {#if data.trendingBooks.length > 0 && !hidden.has('trending')}
-

Trending Now

+

Trending Now

{m.home_view_all()} +
+ View all + +
{#each data.recommendedBooks as book} @@ -497,7 +516,7 @@ {book.title} {:else}
- + {(book.title ?? '?').charAt(0).toUpperCase()}
{/if}
@@ -524,7 +543,7 @@ {#if dedupedRecent.length > 0 && !hidden.has('recently-updated')}
-

{m.home_recently_updated()}

+

{m.home_recently_updated()}

{m.home_view_all()}