"""Web interface for Acorn demos. Run with hot reload: gradio examples/app.py Run normally: python examples/app.py """ import gradio as gr from demo.registry import DEMO_MODULES from demo.pages import build_home_page, build_demo_page from demo.theme import acorn_theme _CUSTOM_CSS = """ .logo-right { margin-left: auto; } footer { display: none !important; } .custom-footer { text-align: left; padding: 16px 0; color: #666; font-size: 13px; } .custom-footer a { color: #333; text-decoration: underline; } """ def build_app() -> gr.Blocks: interface = gr.Blocks(title="Acorn Demos", css=_CUSTOM_CSS) with interface: # --- Main Page (Root /) --- build_home_page() # --- Individual Demo Pages --- for demo_key, config in DEMO_MODULES.items(): with interface.route(config["title"], f"/{demo_key}"): build_demo_page(demo_key) return interface app = build_app() # module-level for `gradio examples/app.py` hot-reload if __name__ == "__main__": app.launch(show_error=True, theme=acorn_theme)