{#- chirp-ui: Nav tree component Hierarchical navigation for docs sidebar, admin nav, settings tree. Data-in: items = [{title, href?, children?, active?, open?, badge?, muted?}]. Default branch_mode="disclosure" uses native
for expand/collapse. branch_mode="linked" renders branch parents as direct links and only renders children when open=true, for server-controlled section trees. Item hint="..." renders a reusable tooltip wrapper around that item's trigger. Named slot: header (version selector, search, etc.). Usage: from "chirpui/nav_tree.html" import nav_tree call nav_tree(items=items, show_icons=false) slot header: version selector, search end -#} {% from "chirpui/tooltip.html" import tooltip %} {% def nav_tree_item_content(item, show_icons=false) %} {% if show_icons and item.get("icon") %} {{ item.icon | icon }} {% end %} {{ item.title | default("") }} {% if item.get("badge") is not none %} {{ item.get("badge") }} {% end %} {% end %} {% def nav_tree_link_anchor(item, show_icons=false, leaf=false) %} {% set active_class = " chirpui-nav-tree__link--active" if item.get("active") else "" %} {% set leaf_class = " chirpui-nav-tree__link--leaf" if leaf else "" %} {{ nav_tree_item_content(item, show_icons) }} {% end %} {% def nav_tree_link(item, show_icons=false, leaf=false, block_hint=true) %} {% if item.get("hint") %} {% call tooltip(item.hint, position=item.get("hint_position") or "right", block=block_hint, cls="chirpui-nav-tree__hint") %} {{ nav_tree_link_anchor(item, show_icons, leaf) }} {% end %} {% else %} {{ nav_tree_link_anchor(item, show_icons, leaf) }} {% end %} {% end %} {% def nav_tree_text_span(item, show_icons=false, leaf=false) %} {% set leaf_class = " chirpui-nav-tree__text--leaf" if leaf else "" %} {{ nav_tree_item_content(item, show_icons) }} {% end %} {% def nav_tree_text(item, show_icons=false, leaf=false, block_hint=true) %} {% if item.get("hint") %} {% call tooltip(item.hint, position=item.get("hint_position") or "right", block=block_hint, cls="chirpui-nav-tree__hint") %} {{ nav_tree_text_span(item, show_icons, leaf) }} {% end %} {% else %} {{ nav_tree_text_span(item, show_icons, leaf) }} {% end %} {% end %} {% def nav_tree(items, show_icons=false, branch_mode="disclosure", cls="") %} {% end %} {% def nav_tree_items(items, show_icons, branch_mode="disclosure") %} {% end %}