{#if heroThumb}
{:else}
{/if}
{#if activeSlot?.kind === "empty"}

Nothing here yet

{activeSlot.slotIndex === 0 ? "Read a manga to see it here" : "Pin a manga or keep reading to fill this slot"}

{#if activeSlot.slotIndex !== 0} {/if} {:else}
{#if activeSlot?.kind === "continue"} Reading {:else} Pinned {/if} {#each (heroManga?.genre ?? []).slice(0, 3) as g} {/each}

{heroTitle}

{#if heroManga?.author}

{heroManga.author}

{/if} {#if heroEntry}

{heroEntry.chapterName} {#if heroEntry.pageNumber > 1} · p.{heroEntry.pageNumber}{/if} {timeAgo(heroEntry.readAt)}

{/if} {#if heroManga?.description}

{heroManga.description}

{/if}
{#if activeSlot?.kind === "continue"} {:else if heroManga} {/if} {#if activeSlot?.slotIndex !== 0} {#if activeSlot?.kind === "pinned"} {:else} {/if} {/if}
{/if}
{#each resolvedSlots as slot, i} {/each}
{activeIdx + 1}/{TOTAL_SLOTS}
Up Next
{#if activeSlot?.kind === "empty"}

No chapters to show

{:else if loadingHeroChapters} {#each Array(4) as _}
{/each} {:else if heroChapters.length === 0}

No chapters available

{:else} {#each heroChapters as ch (ch.id)} {@const isCurrent = heroEntry?.chapterId === ch.id} {/each} {#if heroManga} {/if} {/if}
Recent Activity {#if recentHistory.length > 0} {/if}
{#if recentHistory.length > 0} {#each recentHistory as entry (entry.chapterId)} {/each} {:else}
{#each Array(5) as _, i}
{/each}
{/if}
Completed {#if completedManga.length > 0} {/if}
{#if completedManga.length > 0}
{ e.preventDefault(); handleRowWheel(e); }}> {#each completedManga as m (m.id)} {/each}
{:else}

Finish a manga to see it here

{/if}
Your Stats
{stats.currentStreakDays}Day streak
{stats.totalChaptersRead}Chapters read
{formatReadTime(stats.totalMinutesRead)}Read time
{stats.totalMangaRead}Series started
{completedIds.length}Completed
{stats.longestStreakDays}dBest streak
{#if pickerOpen} {/if}