diff --git a/studio-v2/app/vocabulary/page.tsx b/studio-v2/app/vocabulary/page.tsx index 5bf1e55..eec7366 100644 --- a/studio-v2/app/vocabulary/page.tsx +++ b/studio-v2/app/vocabulary/page.tsx @@ -238,25 +238,47 @@ export default function VocabularyPage() { 💡 {topic.topic} ({topic.word_count}) - { - // Load all words from this topic via Kaikki - setIsSearching(true) - const topicWords: VocabWord[] = [] - for (const w of topic.words) { - const r = await fetch(`${getApiBase()}/api/vocabulary/search?q=${encodeURIComponent(w)}&lang=en&limit=1&source=kaikki`) - if (r.ok) { - const d = await r.json() - if (d.words?.[0]) topicWords.push(d.words[0]) + + { + setIsSearching(true) + const topicWords: VocabWord[] = [] + for (const w of topic.words) { + const r = await fetch(`${getApiBase()}/api/vocabulary/search?q=${encodeURIComponent(w)}&lang=en&limit=1&source=kaikki`) + if (r.ok) { + const d = await r.json() + if (d.words?.[0]) topicWords.push(d.words[0]) + } } - } - setResults(topicWords) - setIsSearching(false) - }} - className={`text-xs px-3 py-1 rounded-lg ${isDark ? 'bg-cyan-500/20 text-cyan-300 hover:bg-cyan-500/30' : 'bg-cyan-100 text-cyan-700 hover:bg-cyan-200'}`} - > - Alle laden - + setResults(topicWords) + setIsSearching(false) + }} + className={`text-xs px-3 py-1 rounded-lg ${isDark ? 'bg-white/10 text-white/60 hover:bg-white/20' : 'bg-slate-100 text-slate-600 hover:bg-slate-200'}`} + > + Anzeigen + + { + setIsSearching(true) + const topicWords: VocabWord[] = [] + for (const w of topic.words) { + const r = await fetch(`${getApiBase()}/api/vocabulary/search?q=${encodeURIComponent(w)}&lang=en&limit=1&source=kaikki`) + if (r.ok) { + const d = await r.json() + if (d.words?.[0] && !selectedWords.find(s => s.id === d.words[0].id)) { + topicWords.push(d.words[0]) + } + } + } + setSelectedWords(prev => [...prev, ...topicWords]) + setResults(topicWords) + setIsSearching(false) + }} + className={`text-xs px-3 py-1 rounded-lg ${isDark ? 'bg-cyan-500/20 text-cyan-300 hover:bg-cyan-500/30' : 'bg-cyan-100 text-cyan-700 hover:bg-cyan-200'}`} + > + Alle zur Unit + + {(topic.display_words || topic.words).slice(0, 15).map((w: string, i: number) => (