- {revealed ? t('card_new.preview_label') : t('study_session.reveal')} -
- {#if isImageOcclusion && imageOcclusionData} --
diff --git a/apps/web/src/lib/components/CardSurface.svelte b/apps/web/src/lib/components/CardSurface.svelte
new file mode 100644
index 0000000..9c9ed56
--- /dev/null
+++ b/apps/web/src/lib/components/CardSurface.svelte
@@ -0,0 +1,187 @@
+
+
+{#if as === 'a' || href}
+
+ {#if colorAccent}
+
+ {/if}
+ {#if children}{@render children()}{/if}
+
+{:else if as === 'button'}
+
+{:else}
+
+ + {tn('decks.card_count_more', hiddenCount)} +
+ {/if} +{deck.description}
+ {/if} +{t('decks.loading')}
+{t('decks.loading')}
{:else if error} -{t('decks.error', { msg: error })}
+{t('decks.error', { msg: error })}
{:else if decks.length === 0} -{t('decks.empty')}
- {t('decks.empty_cta')} → +{t('decks.empty')}
+ {t('decks.empty_cta')} →- {deck.description} -
- {/if} -{t('decks.loading')}
+{t('decks.loading')}
{:else if error} -{t('decks.error', { msg: error })}
+{t('decks.error', { msg: error })}
{:else if deck} - ← {t('nav.decks')} @@ -80,21 +81,21 @@{deck.description}
+{deck.description}
{/if} -- {#if !loading && !isDone} - {queueIndex + 1} / {queue.length} - {/if} -
+{t('study_session.loading')}
+{t('study_session.loading')}
{:else if queue.length === 0} -{t('study.none_due')} 🎉
- - {t('card_edit.back')} - +{t('study.none_due')}
+ {t('card_edit.back')} +- {t('study_session.stats', { reviewed: stats.reviewed, again: stats.again })} -
- +{t('study_session.stats', { reviewed: stats.reviewed, again: stats.again })}
+ +