feat(cards/new): typing, multiple-choice, audio-front im Erstellungs-UI

- Dropdown um 3 neue Types erweitert
- typing/multiple-choice: front + answer Felder (korrekte field-Namen)
- multiple-choice: optionaler distractor_pool (Fallback für kleine Decks)
- audio-front: audio_ref Text-Input + back Antworttext
- canSave + onSubmit korrekt pro Type
- i18n de + en vollständig

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Till JS 2026-05-10 15:36:17 +02:00
parent 2b36990e43
commit a612ad05d6
3 changed files with 125 additions and 9 deletions

View file

@ -97,6 +97,19 @@ export const de: TranslationNode = {
toast_cloze: '{n} Reviews initialisiert (1 pro Cluster)',
toast_image_occlusion: '{n} Reviews initialisiert (1 pro Maske)',
type_image_occlusion: 'Image-Occlusion (Bild + N Masken)',
type_typing: 'Typing (Texteingabe, Fuzzy-Match)',
type_multiple_choice: 'Multiple-Choice (4 Optionen, KI-Distractors)',
type_audio_front: 'Audio-Front (Hören + Antworten)',
answer_label: 'Antwort (Markdown)',
answer_placeholder: 'Richtige Antwort',
distractor_pool_label: 'Distractor-Pool (optional)',
distractor_pool_placeholder: 'Ein Eintrag pro Zeile — Fallback wenn das Deck zu klein für KI-Distractors ist',
audio_ref_label: 'Audio-Referenz (media_ref)',
audio_ref_placeholder: 'z. B. abc123.mp3',
back_audio_label: 'Antworttext (Markdown)',
toast_typing: 'Typing-Karte angelegt',
toast_multiple_choice: 'Multiple-Choice-Karte angelegt',
toast_audio_front: 'Audio-Front-Karte angelegt',
decks_load_failed: 'Decks konnten nicht geladen werden: {msg}',
},
card_edit: {

View file

@ -94,6 +94,19 @@ export const en: TranslationNode = {
toast_cloze: '{n} reviews initialized (1 per cluster)',
toast_image_occlusion: '{n} reviews initialized (1 per mask)',
type_image_occlusion: 'Image-Occlusion (image + N masks)',
type_typing: 'Typing (text input, fuzzy match)',
type_multiple_choice: 'Multiple-Choice (4 options, AI distractors)',
type_audio_front: 'Audio-Front (listen + answer)',
answer_label: 'Answer (Markdown)',
answer_placeholder: 'Correct answer',
distractor_pool_label: 'Distractor pool (optional)',
distractor_pool_placeholder: 'One entry per line — fallback when the deck is too small for AI distractors',
audio_ref_label: 'Audio reference (media_ref)',
audio_ref_placeholder: 'e.g. abc123.mp3',
back_audio_label: 'Answer text (Markdown)',
toast_typing: 'Typing card created',
toast_multiple_choice: 'Multiple-choice card created',
toast_audio_front: 'Audio-front card created',
decks_load_failed: 'Could not load decks: {msg}',
},
card_edit: {