{% comment %} FAQ (04-interfaces.md section 4d): the FAQ section wrapper. Structural, consumed via {% include %} (BR-BW-MKT ยง4d structural-include doctrine). Composes _disclosure.html per BR-BW-MKT-004 (a marketing component reuses an existing primitive rather than reimplementing it): this template is only the heading + a stack of disclosures, never a new accordion interaction primitive. The no-JS floor is therefore free by construction (BR-BW-HTMX-001/006): _disclosure.html ships no JavaScript at all. Required context: none. Optional context: heading (str): the section heading. items (list of dicts): {question, answer}. Each renders through {% include "brickwork/components/_disclosure.html" %} with label=question, content=answer. single_open (bool, default False): when set, every disclosure shares a name so only one opens at a time, using _disclosure.html's native
exclusive-group mechanism. An empty (or omitted) items list renders the heading alone (or nothing, if that too is empty). items is list-shaped, so it has no flat-kwarg spelling (#98): a Django template cannot build a list inline, so supply it from context (the view, or a wrapper template's own data). A template-authored page with static questions (the ADR-056 compose-it-yourself shape) instead includes brickwork/components/_disclosure.html directly once per question (its contract is flat strings: label=question, content=answer, plus a shared name for the single-open behaviour); stacking disclosures is all this wrapper does. States: whatever _disclosure.html carries per item (closed/open, and, with single_open=True, exclusive single-open accordion grouping via the native
mechanism); this wrapper itself is static, no state of its own beyond the stack it composes. Accessibility: the section heading is an

; each question/answer pair inherits _disclosure.html's native keyboard and no-JS behaviour unchanged (see that component's own header for the full contract). Covered by axe.spec.mjs against pricing-*.html (its own shipped FAQ section) and against sections-*.html (faq/single-column.html, faq/two-column.html), both themes. Responsive: no breakpoint switch; no width-dependent CSS on any .bw-faq-section* selector. The two-column example variant is a page composition (two _faq.html includes side by side), not a responsive behaviour this component itself provides. {% endcomment %} {% if heading or items %}
{% if heading %}

{{ heading }}

{% endif %} {% if items %}
{% for item in items %} {% if single_open %} {% include "brickwork/components/_disclosure.html" with label=item.question content=item.answer name="bw-faq" %} {% else %} {% include "brickwork/components/_disclosure.html" with label=item.question content=item.answer %} {% endif %} {% endfor %}
{% endif %}
{% endif %}