# components/header.py import gradio as gr from utils.auth import AuthService class Header: def __init__(self): with gr.Row(variant="panel", elem_classes="header-row") as self.container: self.welcome = gr.Markdown() self.progress_display = gr.Markdown("") # New element for progress display self.logout_btn = gr.Button("Log out", scale=0, min_width=90) # ---------------- wiring ---------------- def register_callbacks(self, login_page, dashboard_page, session_state, review_dashboard_page=None): def logout_and_clear_progress_fn(current_session_state): # AuthService.logout returns 5 values for both dashboards logout_outputs = AuthService.logout(current_session_state) # Add an empty string to clear the progress_display return list(logout_outputs) + [""] outputs_for_logout = [ login_page.container, dashboard_page.container, ] if review_dashboard_page: outputs_for_logout.append(review_dashboard_page.container) outputs_for_logout.extend([ self.welcome, login_page.message, self.progress_display, # Cleared on logout ]) self.logout_btn.click( fn=logout_and_clear_progress_fn, inputs=[session_state], outputs=outputs_for_logout, )