Component Demo
All six reusable components with representative use cases for every IELTS Listening question type
Component → Question-type Coverage
| Component | Covers question types |
|---|---|
| KnowledgeCard | All chapters — knowledge points section |
| StrategyStep | All chapters — strategy section |
| AudioScriptPlayer | All chapters — practice audio |
| PracticeForm | Form / Note / Table / Sentence / Summary / Flowchart / Short-answer completion (Ch 01–05, 12–13) |
| MultipleChoiceQuestion | Single-answer MCQ (Ch 06) · Multiple-answer MCQ (Ch 07) |
| MatchingQuestion | Matching opinions (Ch 08) · Matching categories (Ch 09) · Map / Diagram labeling letters (Ch 10–11) |
1 · KnowledgeCard
Props: title: string, body: string
2 · StrategyStep
Props: step: number, title: string, detail: string
3 · AudioScriptPlayer
Props: lines: AudioLine[], speakers: Record<string, SpeakerConfig>, title?: string, apiEndpoint?: string
Demo — Visitor Registration
■ Officer (male) · ■ Maria (female)In the real test you hear this once. Play first and attempt the exercise, then read the script to verify.
4 · PracticeForm
Props: title: string, subtitle?: string, rows: FormRow[]
FormRow: num, label, pre?, post?, answer, alternates?, display
Covers: Form · Note · Table · Sentence · Summary · Flowchart · Short-answer completion. Use pre / post to add surrounding printed text. The alternates array accepts British/American spelling variants.
Table-completion variant — pre and post carry column context:
5 · MultipleChoiceQuestion
Props: questionNumber, questionText, options: MCQOption[], correctAnswer: string | string[], selectCount?: number
5a — Single-answer MCQ (Ch 06 style)
5b — Multiple-answer MCQ, choose 2 (Ch 07 style)
6 · MatchingQuestion
Props: title, instruction?, items: MatchItem[], categories: MatchCategory[], correctAnswers: Record<string, string>
6a — Matching opinions (Ch 08 style)
6b — Matching categories (Ch 09 style)
6c — Map / diagram label matching (Ch 10–11 style)
In a real chapter, an SVG or image of the map appears above this component; the labels below correspond to numbered positions on the diagram.