| """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) | |