import gradio as gr from utils.helpers import load_content, check_spelling, check_translation, get_random_exercise, check_reading_answer def advanced_component(): content = load_content() with gr.Column() as advanced: # Vocabulary Section with gr.Tab("Vocabulary"): gr.Markdown("### Advanced Vocabulary") word_display = gr.Textbox(label="Afrikaans Word") translation_hidden = gr.Textbox(visible=False) sentence_display = gr.Textbox(label="Example Sentence") user_translation = gr.Textbox(label="Your Translation") check_btn = gr.Button("Check") result = gr.Textbox(label="Result") next_btn = gr.Button("Next Word") def get_vocab(): exercise = get_random_exercise("vocabulary", "advanced") return exercise["word"], exercise["translation"], exercise["sentence"] def check_vocab(user_input, correct): return "Correct! ✓" if check_translation(user_input, correct) else "Try again" next_btn.click(fn=get_vocab, outputs=[word_display, translation_hidden, sentence_display]) check_btn.click(fn=check_vocab, inputs=[user_translation, translation_hidden], outputs=[result]) # Grammar Section with gr.Tab("Grammar"): gr.Markdown("### Advanced Grammar") for rule in content["grammar"]["advanced"]: with gr.Accordion(rule["rule"], open=False): gr.Markdown(rule["explanation"]) # Reading Section with gr.Tab("Reading"): gr.Markdown("### Advanced Reading") for text in content["reading"]["advanced"]: with gr.Accordion(text["title"], open=False): gr.Markdown(text["text"]) for i, question in enumerate(text["questions"]): gr.Markdown(f"**Question {i+1}:** {question}") answer = gr.Textbox(label="Your Answer") result = gr.Textbox(label="Result") check_btn = gr.Button(f"Check Answer {i+1}") check_btn.click( fn=lambda ans, idx=i, txt=text: "Correct! ✓" if check_reading_answer(ans, idx, txt) else "Try again", inputs=[answer], outputs=[result] ) return advanced