{% load i18n %} {% comment %} Bulk-actions bar (brickwork#54): the region above a selectable _data_table.html that a consumer's action buttons live in. STRUCTURE ONLY, like the table itself: it holds no business logic and ships no action buttons of its own, since "what can you do to N selected rows" is entirely use-case specific. Extend-consumed, like _card.html: {% include %} cannot fill another template's block, so a caller wanting the actions slot filled writes a small template that EXTENDS this one and fills ``bulk_actions_buttons``: {% extends "brickwork/components/_bulk_actions_bar.html" %} {% block bulk_actions_buttons %} {% bw_button label="Archive" type="submit" name="bulk_action" value="archive" variant="secondary" size="sm" %} {% bw_button label="Delete" type="submit" name="bulk_action" value="delete" variant="danger" size="sm" %} {% endblock %} THE WIRING CONTRACT: this bar and the table it drives share one consumer-owned
No-JS floor (BR-BW-HTMX-001): the bar and its action buttons are ALWAYS rendered (never hidden by default, no ``hidden`` attribute, no ``x-cloak``); a JS-disabled user ticks boxes then presses a bulk action button, exactly like any other HTML form, no live count feedback. The optional ``select_all_href`` link (pointing at the same URL with a "select every matching row" query param your view understands, e.g. "?select_all=1") is the documented no-JS equivalent of the header checkbox's select-all, since a bare checkbox cannot drive other checkboxes without JS. Enhanced (opt-in): wrap the