from dash import dcc, html import dash_bootstrap_components as dbc from .components.sidebar import SidebarComponent class AppLayout: def __init__(self): self.sidebar = SidebarComponent() def create_layout(self): return dbc.Container( [self._create_header(), self._create_main_content()] + self._create_stores(), fluid=True, ) def _create_header(self): return dbc.Row( [ dbc.Col( [ html.H1("EmbeddingBuddy", className="text-center mb-4"), ], width=12, ) ] ) def _create_main_content(self): return dbc.Row( [self.sidebar.create_layout(), self._create_visualization_area()] ) def _create_visualization_area(self): return dbc.Col( [ dcc.Graph( id="embedding-plot", style={"height": "85vh", "width": "100%"}, config={"responsive": True, "displayModeBar": True}, ) ], width=9, ) def _create_stores(self): return [dcc.Store(id="processed-data"), dcc.Store(id="processed-prompts")]