{#snippet actions()} {/snippet} {#if activationFocus}

{activationFocus === "map" ? i18n.t("activation.focus.map") : i18n.t("activation.focus.sync")}

{#if feeds.length === 0} {/if}
{/if} {#if feeds.some((f) => isFtpFeed(f))} openAdd("url")} onAddCsv={() => openAdd("file")} /> {/if}
{#if loading && feeds.length === 0} {:else if feeds.length > 0 || appliedSearch.trim()} {/if}
{#if feeds.length > 0 || appliedSearch.trim() || loading}
onSearchInput(searchQuery)} />
{/if} {#if loading && feeds.length === 0} {:else if feeds.length === 0 && !appliedSearch.trim()}
{:else if feeds.length === 0}
{:else}
{i18n.t("common.actions")} {#each filtered as feed (feed.id)} {@const id = String(feed.id)} {@const source = feedSourceLabel(feed)} {@const fileBased = isFileFeed(feed)} {@const ftpUnsupported = isFtpFeed(feed)} {@const mapped = feedHasMappings(feed)} {@const mappingCount = feedMappingFieldCount(feed)} {@const productCount = feedProductCount(feed)} {@const lastData = feedLastDataAt(feed)} {@const liveSynced = Boolean( typeof feed.last_synced_at === "string" && feed.last_synced_at.trim() )}
{feed.name ?? id} {#if ftpUnsupported} {i18n.t("feeds.ftpBadge")} {/if} {#if feed.feed_type} {feed.feed_type} {/if}
void goto(`/feeds/${id}/mapping`)} onEditFeed={() => openEdit(feed)} onSync={() => void syncFeed(feed)} onViewHistory={() => void openHistory(feed)} onToggleActive={() => void toggleActive(feed)} onDelete={canAdmin ? () => void deleteFeed(feed) : undefined} />
{/each}
{/if}
{#if error} {/if}
{i18n.t("feeds.tab.url")} {i18n.t("feeds.tab.file")}

{i18n.t("feeds.fileHint")}

{#if formFile}

{formFile.name}

{/if}

{i18n.t("feeds.field.intervalHint")}

{#snippet footer()} {/snippet}
{#if error} {/if}
{#if editing && isFileFeed(editing)}

{feedSourceLabel(editing) || i18n.t("feeds.uploadedCsv")}

{i18n.t("feeds.replaceFileHint")}

{:else}
{/if}
{#if editing && isFileFeed(editing)}

{i18n.t("feeds.csvTypeLocked")}

{/if}

{i18n.t("feeds.field.intervalHint")}

{#snippet footer()} {/snippet}
{#if historyLoading}
{:else if historyJobs.length === 0}

{i18n.t("feeds.historyEmpty")}

{:else}
{i18n.t("common.status")} {i18n.t("common.products")} {i18n.t("feeds.history.started")} {i18n.t("feeds.history.completed")} {#each historyJobs as job (job.id)} {job.status ?? "—"} {#if job.error}

{job.error}

{/if}
{syncJobProductsLabel(job)}
{formatRelativeTime(job.started_at ?? job.created_at)}
{formatDateTime(job.started_at ?? job.created_at)}
{#if job.completed_at}
{formatRelativeTime(job.completed_at)}
{formatDateTime(job.completed_at)}
{:else} — {/if}
{/each}
{/if} {#snippet footer()} {/snippet}