e.key === 'Enter' && applyFilters()}
class="w-full rounded-md border border-input bg-background py-2 pl-9 pr-3 text-sm text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring"
/>
applyFilters()}>
{statusOptions.find((o) => o.value === statusFilter)?.label || 'All statuses'}
{#each statusOptions as option}
{/each}
{#if data.filters.search || data.filters.status}
{/if}
{#if data.reports.length === 0}
No reports found
There are no bug reports matching your current filters.
{#if data.filters.search || data.filters.status}
{:else}
{/if}
{:else}
ID
Hostname
User
Reporter
Status
Files
Created
{#each data.reports as report (report.id)}
goto(`/reports/${report.id}`)}
>
#{report.id}
{report.hostname || '—'}
{report.os_user || '—'}
{report.name}
{report.email}
{statusLabels[report.status]}
{#if report.file_count > 0}
{report.file_count}
{:else}
—
{/if}
{formatDate(report.created_at)}
{/each}
{/if}
{#if data.pagination.totalPages > 1}
Showing {(data.pagination.page - 1) * data.pagination.pageSize + 1} to {Math.min(
data.pagination.page * data.pagination.pageSize,
data.pagination.total
)} of {data.pagination.total} reports
{#each Array.from({ length: data.pagination.totalPages }, (_, i) => i + 1) as p}
{#if p === 1 || p === data.pagination.totalPages || (p >= data.pagination.page - 1 && p <= data.pagination.page + 1)}
{:else if p === data.pagination.page - 2 || p === data.pagination.page + 2}
...
{/if}
{/each}
{/if}