{% comment %}
Upstream drives this from React state: the parent re-renders with new messages
and the provider reacts. A Django transcript grows in the DOM instead, from
htmx, from an event stream, or from a socket handler, so the provider watches
the content element and reacts to whatever put a row there. That is the whole
contract, and it is why none of this asks the page for JavaScript.
The settings arrive as data-* rather than inside the expression: Django escapes
for HTML, the browser decodes the entities back, and Alpine then evaluates the
result as JavaScript — so a value carrying a quote would run.
{% endcomment %}
{{ slot }}