{watchlist.length} pairs tracked

{#if settings.poe2.leagueName} Tracking {settings.poe2.leagueName} · change is over the last 1h / 24h / 7d. {:else} League not detected yet — check back after the next poll (every hour). {/if}

{#if showAdd}
{#if step === 'base'} Step 1 — pick the base currency {:else} Step 2 — pick what to quote {selectedBase?.name} against {/if}
{#if browsing}

Loading currency list…

{:else if browseError}

{browseError}

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

{query ? 'No matches' : 'No traded currencies found for this league'}

{:else}
{#each filtered as entry (entry.id)} {/each}
{/if}
{/if}
{#each watchlist as entry (entry.id)}
{#if entry.baseIcon}{/if} {entry.baseName} {#if entry.quoteIcon}{/if} {entry.quoteName}
{#if entry.lastError}
{entry.lastError}
{:else if entry.lastRate !== null}
1 {entry.baseName} = {formatPoeValue(entry.lastRate)} {entry.quoteName} 1h {fmtChange(entry.lastChange1h)} · 24h {fmtChange(entry.lastChange24h)} · 7d {fmtChange(entry.lastChange7d)}
1 {entry.quoteName} = {formatPoeValue(1 / entry.lastRate)} {entry.baseName} 1h {fmtChange(invertChangePercent(entry.lastChange1h))} · 24h {fmtChange(invertChangePercent(entry.lastChange24h))} · 7d {fmtChange(invertChangePercent(entry.lastChange7d))}
{:else}
Waiting for first poll…
{/if}
{/each}