{% extends "brickwork/shell/base.html" %} {% load i18n brickwork_icons %} {% comment %} The app shell: sidebar + topbar + workspace (SHL-001/006/011). Named blocks are the versioned public contract (BR-BW-TPL-001). A consuming page extends this and fills {% block content %} (plus any topbar/nav/header blocks it needs). No-JS floor: the mobile drawer is a native
/ disclosure (SHL-015/016), so the shell is fully navigable with zero JS. A consumer that loads Alpine may progressively enhance it via a template override (BR-BW-TPL-002), never a required layer. Sidebar collapse (0.13.0, SHL-003/004, brickwork#58): `{% block sidebar_toggle %}` now ships a default labelled {% endblock %}
{% block sidebar_switcher %}{% endblock %}
{# --- Main column: topbar + optional subnav/breadcrumbs + workspace --- #}
{# Mobile nav trigger: native
drawer, works with no JS (SHL-015/016). #}
{% comment %} Default visible affordance (icvoss/django-brickwork#520): an empty block left a working 44x44 hit target with nothing painted. Match the marketing toggle's package-owned icon default; consumers still override this block when they need a different glyph. {% endcomment %} {% block mobile_nav_trigger %}{% bw_icon "menu" size="md" decorative=True %}{% endblock %}
{% block topbar %}
{% block topbar_notifications %}{% endblock %}
{% endblock %}
{% block subnav_region %}
{% block subnav %}{% endblock %}
{% endblock %} {% block breadcrumbs_region %} {% endblock %}
{% block page_header_region %}
{% block page_header %}{% endblock %}
{% block page_actions %}{% endblock %}
{% endblock %}
{% block content %}{% endblock %}
{% block footer_region %} {% endblock %}
{% endblock %}