"""Left sidebar navigation component matching 01_nhs_classic.html design.""" from urllib.parse import quote as url_quote from dash import html def _svg_icon(svg_body): """Wrap an SVG body string into an html.Img using a data URI.""" svg = ( f'{svg_body}' ) return html.Img( src=f"data:image/svg+xml,{url_quote(svg)}", className="sidebar__icon", ) # SVG icon bodies (Feather-style) _ICONS = { "pathway": '', "compare": '', } def make_sidebar(): """Return the fixed left sidebar navigation.""" return html.Nav( className="sidebar", **{"aria-label": "Main navigation"}, children=[ html.Div( className="sidebar__section", children=[ html.Div("Analysis", className="sidebar__label"), _sidebar_item( "Patient Pathways", "pathway", active=True, item_id="nav-patient-pathways", ), _sidebar_item( "Trust Comparison", "compare", active=False, item_id="nav-trust-comparison", ), ], ), html.Div( className="sidebar__footer", children=[ "NHS Norfolk & Waveney ICB", html.Br(), "High Cost Drugs Programme", ], ), ], ) def _sidebar_item(label, icon_key, active=False, item_id=None): """Create a single sidebar navigation item.""" class_name = "sidebar__item" if active: class_name += " sidebar__item--active" props = {"className": class_name} if item_id: props["id"] = item_id props["n_clicks"] = 0 return html.A( **props, children=[ _svg_icon(_ICONS[icon_key]), label, ], )