import gradio as gr from components import leaderboard_page, challenge_page, faq from components.submission import submission_page from components.registration import registration_page from about import CHALLENGE_NAME PROBLEM_TYPES = ["hypothesis 1", "hypothesis 2", "hypothesis 3"] def gradio_interface() -> gr.Blocks: with gr.Blocks() as demo: gr.Markdown(f"## Welcome to the {CHALLENGE_NAME}!") active_tab = gr.BrowserState(0) with gr.Tabs(elem_classes="tab-buttons") as tabs: challenge_page.get_description(gr=gr) registration_page.get_registration_page(gr=gr, demo=demo) submission_page.get_submission_page(gr=gr, demo=demo) faq.get_faq(gr=gr) leaderboard_page.get_leaderboard(gr=gr) def restore_tab(idx): return gr.Tabs(selected=idx) def save_tab(evt: gr.SelectData): return evt.index tabs.select(fn=save_tab, inputs=None, outputs=[active_tab]) demo.load(fn=restore_tab, inputs=[active_tab], outputs=[tabs]) return demo if __name__ == "__main__": gradio_interface().launch()