{# Documentation navigation. The tree still comes from Bengal's NavTree context, but the emitted chrome uses Chirp UI sidebar primitives instead of a bespoke docs-nav class system. #} {% from 'chirpui/sidebar.html' import sidebar %} {% from 'chirpui/workspace_primitives.html' import filter_rail %} {% def catalog_mark(title, href, index) %} {% let key = ((title ?? '') ~ ' ' ~ (href ?? '')) | lower %} {% if 'component' in key %} {{ icon('cube', size=18) }} {% elif 'release' in key %} {{ icon('rocket', size=18) }} {% elif 'api' in key or 'reference' in key %} {{ icon('code', size=18) }} {% elif 'blog' in key or 'forum' in key %} {{ icon('newspaper', size=18) }} {% elif 'doc' in key or 'guide' in key %} {{ icon('book-open', size=18) }} {% elif 'tutorial' in key %} {{ icon('graduation-cap', size=18) }} {% elif 'track' in key %} {{ icon('map', size=18) }} {% elif 'resume' in key %} {{ icon('briefcase', size=18) }} {% elif 'author' in key %} {{ icon('users', size=18) }} {% elif 'changelog' in key %} {{ icon('git-commit', size=18) }} {% else %} {{ index }} {% end %} {% end %} {% def nav_type_icon(kind, branch=false) %} {% if branch %} {{ icon('folder', size=14) }} {% elif kind == 'api' %} {{ icon('file-code', size=14) }} {% else %} {{ icon('article', size=14) }} {% end %} {% end %} {% def nav_node(item, depth=0) %} {% let item_title = item?.title ?? 'Untitled' %} {% let item_href = item?.href ?? '' %} {% let item_children = item?.children ?? [] %} {% let is_current = item?.is_current ?? false %} {% let is_branch_active = is_current or (item?.is_in_trail ?? false) or (item?.is_expanded ?? false) %} {% let has_children = item_children | length > 0 %} {% let item_key = (item_title ~ ' ' ~ item_href) | lower %} {% let item_kind = 'component' if 'component' in item_key else ('release' if 'release' in item_key else ('api' if ('api' in item_key or 'reference' in item_key) else ('pattern' if 'pattern' in item_key else ('guide' if ('guide' in item_key or 'doc' in item_key or 'start' in item_key or 'install' in item_key or 'theme' in item_key) else 'page')))) %} {% if has_children %} {% if depth > 0 %} {# Disclosure section — explicit header row, NOT native
. The folder icon is a real {% if item_href %} {{ item_title }} {% else %} {{ item_title }} {% end %} {% else %}
{% if item_href %} {{ item_title }} {% else %} {{ item_title }} {% end %}
{% end %} {% else %} {% if item_href %} {{ item_title }} {% else %} {{ item_title }} {% end %} {% end %} {% end %} {% let is_autodoc = is_autodoc_page(page) if is_autodoc_page is defined else false %} {% let page_section = page?._section %} {% let root_section = page_section?.root ?? none %} {% let current_path = page?.href ?? page?._path ?? '' %} {% let catalog_items = get_nav_tree(page) ?? [] %}
{% if catalog_items | length > 0 %}
{% call filter_rail(label='Documentation catalog', cls='chirp-theme-doc-catalog-rail') %}
{% for item in catalog_items %} {% let item_title = item?.title ?? 'Untitled' %} {% let item_href = item?.href ?? '#' %} {% let item_children = item?.children ?? [] %} {% let is_active = (item?.is_current ?? false) or (item?.is_in_trail ?? false) or (item?.is_expanded ?? false) %} {{ item_title }} {% end %}
{% with config.search.ui as ui %} {% if ui.modal ?? false %} {% else %} Search {% end %} {% end %}
{% with theme_menu_id='theme-menu-rail' %}{% include 'partials/theme-controls.html' %}{% end %}
{% end %}
{% end %}
{% call sidebar(cls='chirp-theme-docs-nav', current_path=current_path, aria_label='Documentation sections') %} {% slot header %} {% unless is_autodoc %} {% include 'partials/version-selector.html' %} {% end %} {% end %} {% if root_section %} {% let nav_context = get_nav_context(page, root_section=root_section) %} {% with nav_context?.root as root_item %} {{ nav_node(root_item, 0) }} {% end %} {% else %} {% for item in catalog_items %} {{ nav_node(item, 0) }} {% end %} {% end %} {% end %}