{sectionLabel} {#if filters.section === "archive" && photos.length > 0} {/if}
{#if filters.search} {/if} {#if searchFocused}
Examples
{#each SEARCH_EXAMPLES as ex (ex)} {/each}
{/if}
{#snippet trailing()}
{#each THUMBNAIL_SIZE_PRESETS as size, i (size)} {/each}
{/snippet}
{#snippet preview()} {/snippet} {#snippet grid()}
{ visFirst = f; visLast = l; }, sampleEvery: TILE_SAMPLE, }} >
{#if photosQuery.isPending} {:else if photosQuery.isError}

Failed to load photos: {photosQuery.error instanceof Error ? photosQuery.error.message : "unknown error"}

{:else if photos.length === 0}

{#if filters.section === "archive"} Archive is empty. {:else if filters.section === "review"} Nothing left to review. Photos PhotoPrism's indexer wasn't sure about land here — use Keep to accept them into the timeline or Archive to set them aside. {:else if filters.section === "hidden"} No hidden photos. PhotoPrism auto-hides files it can't index (broken files, very low quality); they only ever show up here. {:else if filters.section === "heap"} This heap has no photos yet. Select some photos and use the bulk bar's "+ Add to heap" button. {:else} No photos. Index a folder via PhotoPrism's reindex command. {/if}

{:else}
{#each rows as row (row.kind === "header" ? `h:${row.key}` : `t:${row.photo.UID}`)} {#if row.kind === "header"}

{row.label} {row.count}

{:else} {@const photo = row.photo} {@const i = row.tileIndex} {@const inWindow = i >= renderFirst && i <= renderLast}
{#if inWindow} {@const sel = selectedIds.has(photo.UID) || focusedUid === photo.UID} onTileClick(e, photo.UID)} onDblclick={(e) => onTileDblclick(e, photo.UID)} onOpenPreview={() => onTileOpenPreview(photo.UID)} /> {/if}
{/if} {/each}
{#if photosQuery.isFetchingNextPage}

Loading more…

{/if} {/if}
{/snippet}
{#if !view.rightSidebarCollapsed} {/if}