"""Dash application factory with Pages routing."""

import dash
import dash_mantine_components as dmc

from .config import get_settings


def create_app() -> dash.Dash:
    """Create and configure the Dash application."""
    app = dash.Dash(
        __name__,
        use_pages=True,
        suppress_callback_exceptions=True,
        title="Analytics Portfolio",
        external_stylesheets=dmc.styles.ALL,
    )

    app.layout = dmc.MantineProvider(
        dash.page_container,
        theme={
            "primaryColor": "blue",
            "fontFamily": "'Inter', sans-serif",
        },
        forceColorScheme="light",
    )

    return app


def main() -> None:
    """Run the development server."""
    settings = get_settings()
    app = create_app()
    app.run(debug=settings.dash_debug, host="0.0.0.0", port=8050)


if __name__ == "__main__":
    main()
