{#snippet filterFormContent()}
Status
Genres (all must match)
{#each allGenres as g (g.id)} {@const on = selectedGenres.some((x) => x.id === g.id)} {/each}
Tags (all must match) {#if selectedTags.length > 0}
{#each selectedTags as t (t.id)} removeTag(t)} removeLabel={`Remove tag ${t.name}`} testid={`tag-filter-chip-${t.name}`} /> {/each}
{/if}
{#if activeFilterCount > 0} {/if} {/snippet}

Mangas

Page search
{#if activeFilterCount > 0}
{#if statusFilter} {/if} {#each selectedGenres as g (g.id)} toggleGenre(g)} removeLabel={`Remove genre ${g.name}`} testid={`active-filter-genre-${g.name}`} /> {/each} {#each selectedTags as t (t.id)} removeTag(t)} removeLabel={`Remove tag ${t.name}`} testid={`active-filter-tag-${t.name}`} /> {/each}
{/if} {#if filtersOpen && !isMobileViewport}
{@render filterFormContent()}
{/if}
Direction
(filtersOpen = false)} testid="filter-sheet" > {@render filterFormContent()} (sortSheetOpen = false)} testid="sort-sheet" >

Sort by

{#each Object.entries(SORT_FIELD_LABELS) as [value, label] (value)} {/each}
{#snippet footer()} {/snippet}
{#if loading}

Loading…

{:else if error} {:else if mangas.length === 0}

No mangas yet. Upload one.

{:else} {#if total !== null}

Showing {rangeStart}–{rangeEnd} of {total}

{/if} {/if}