add language learner project
Some checks failed
Test and deploy staging / staging (push) Has been cancelled
Some checks failed
Test and deploy staging / staging (push) Has been cancelled
Dutch and Korean (explained in English) and English (explained in Dutch) from A1 to C1, with a Hangul level for Korean. Lessons with notes, words and sentences generate multiple-choice, typing, sentence building, cloze, listening and matching exercises. Endless challenges: a seeded daily challenge, sprint, survival, mixed practice, level tests, spaced-repetition reviews and generated drills (numbers, clock times, de/het, plurals, Dutch and Korean conjugation, particles, Hangul reading, irregular verbs). Progress is stored in localStorage with export/import. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
22
src/lib/language-learner/ui/Speak.svelte
Normal file
22
src/lib/language-learner/ui/Speak.svelte
Normal file
@@ -0,0 +1,22 @@
|
||||
<script lang="ts">
|
||||
import Volume2 from 'lucide-svelte/icons/volume-2';
|
||||
import { speak } from '../speech';
|
||||
|
||||
let {
|
||||
text,
|
||||
voice,
|
||||
size = 18,
|
||||
label = 'Listen'
|
||||
}: { text: string; voice: string; size?: number; label?: string } = $props();
|
||||
</script>
|
||||
|
||||
<button
|
||||
type="button"
|
||||
class="ll-speak"
|
||||
aria-label={label}
|
||||
title={label}
|
||||
onclick={(event) => {
|
||||
event.stopPropagation();
|
||||
speak(text, voice);
|
||||
}}><Volume2 {size} aria-hidden="true" /></button
|
||||
>
|
||||
Reference in New Issue
Block a user