e.preventDefault()}
ondrop={onDrop}
onclick={() => fileInput?.click()}
role="button"
tabindex="0"
onkeydown={(e) => {
if (e.key === 'Enter' || e.key === ' ') {
e.preventDefault();
fileInput?.click();
}
}}
>
{t('import.dropzone')}
{t('import.dropzone_hint')}
{t('import.preview_found')}
{fileName}:
- {tn('import.preview_decks', parsed.decks.length)}
-
{tn('import.preview_cards', parsed.cards.length)}
{#if parsed.cards.length > 0}
{t('import.preview_breakdown', {
basic: typeBreakdown.basic,
basic_reverse: typeBreakdown.basicReverse,
cloze: typeBreakdown.cloze,
})}
{/if}
{#if parsed.mediaByFilename.size > 0}
-
{t('import.preview_media', { n: parsed.mediaByFilename.size })}
{/if}
{#if parsed.skipped > 0}
- {t('import.preview_skipped', { n: parsed.skipped })}
{/if}
{#if parsed.warnings.length > 0}
{t('import.preview_warnings', { n: parsed.warnings.length })}
{#each parsed.warnings.slice(0, 10) as w (w)}- {w}
{/each}
{/if}
{#if progress.stage === 'media'}
{t('import.stage_media', { current: progress.current, total: progress.total })}
{:else if progress.stage === 'decks'}
{t('import.stage_decks', { current: progress.current, total: progress.total })}
{:else if progress.stage === 'cards'}
{t('import.stage_cards', { current: progress.current, total: progress.total })}
{:else}
{t('import.stage_done')}
{/if}
{result.decksCreated === 1
? t('import.done_summary_one', { cards: result.cardsCreated })
: t('import.done_summary', { cards: result.cardsCreated, decks: result.decksCreated })}
{#if result.cardsSkippedDuplicate > 0}
{t('import.done_dupes', { n: result.cardsSkippedDuplicate })}
{/if}
{#if result.mediaUploaded > 0 || result.mediaFailed > 0}
{t('import.done_media', {
uploaded: result.mediaUploaded,
failed: result.mediaFailed,
})}
{/if}
{#if result.failed > 0}
{t('import.done_failures', { n: result.failed })}
{#each result.failures.slice(0, 20) as msg (msg)}- {msg}
{/each}
{/if}
{t('import.error_label', { msg: error ?? '?' })}