{# Admin chrome shell. The rail lives in `_admin_nav.html`; this file owns the layout shell (fixed rail + content column), the zero-JS mobile toggle, the conditional breadcrumb bar, and the flash / notice slots. #} {% block title %}bragi admin{% endblock %} {# notices_css_url is injected by _inject_admin_notices (admin.py) only when the admin_notices blueprint is registered. When the plugin is disabled the variable is None and the link is omitted. #} {% if notices_css_url %} {% endif %} {% block head_extra %}{% endblock %} {# Zero-JS mobile toggle: the checkbox precedes the rail so the `#nav-toggle:checked ~ .admin-rail` selector can slide it in. The hamburger label floats over content (mobile only). #} {% include "admin/_admin_nav.html" %}
{# Breadcrumbs: conditional, suppressed when the chain is empty. #} {% if breadcrumbs %} {% endif %}
{% with messages = get_flashed_messages(with_categories=true) %} {% for category, msg in messages %}
{{ msg }}
{% endfor %} {% endwith %} {# Sticky notice rail: shown on per-site pages (g.current_site is set) when action_required or status notices are active. The `ignore missing` guard keeps the page renderable when the admin_notices plugin is disabled and the template is absent. #} {% if g.current_site %} {% include "admin/_notice_rail.html" ignore missing %} {% endif %} {% block content %}{% endblock %}
{# htmx, CDN-hosted for v1. Self-hosted bundle (and a Subresource Integrity hash) is a follow-up; the admin is gated behind auth so the surface is the operator's own browser, not the public. #}