# dashboard/callbacks/ui_callbacks.py from dash import Input, Output, State, callback from components.sidebar import Sidebar # 1) Toggle-Callback: Umschalten von collapsed = False ↔ True @callback( Output("sidebar-state", "data"), Input("btn-toggle-sidebar", "n_clicks"), State("sidebar-state", "data"), prevent_initial_call=True ) def toggle_sidebar(n_clicks, state): # Wenn der Button geklickt wurde, invertiere den collapsed-Wert collapsed = state.get("collapsed", False) return {"collapsed": not collapsed} # 2) Render-Callback: Zeichnet die Sidebar neu und setzt die CSS-Klasse @callback( [Output("sidebar", "children"), Output("sidebar", "className")], Input("sidebar-state", "data") ) def render_sidebar(state): collapsed = state.get("collapsed", False) sidebar_class = "sidebar collapsed" if collapsed else "sidebar" # Sidebar() gibt jetzt nur den Inhalt zurück sidebar_content = Sidebar(collapsed=collapsed) return sidebar_content, sidebar_class