{#- chirp-ui: Message actions Per-message toolbar for a chat/agent turn. Composes action_bar. Content-aware copy reads data-copy-text (chirpuiCopy has no strip selector). Destructive delete confirms by default; Shift-click bypasses the dialog. Usage: {% from "chirpui/message_actions.html" import message_actions %} {% call message_actions(is_last=true, copy_text=raw_markdown, can_delete=true, delete_url="/m/42", delete_target="#m-42") %} {{ action_bar_item(icon="up", label="Good answer") }} {{ action_bar_item(icon="refresh", label="Regenerate") }} {% end %} -#} {% from "chirpui/action_bar.html" import action_bar, action_bar_item %} {% from "chirpui/confirm.html" import confirm_dialog %} {% def message_actions(is_last=false, can_delete=false, copy_text="", delete_url=none, delete_target=none, confirm_id="chirpui-msg-del", cls="") %}
{% call action_bar() %} {% slot %}{% end %} {% if can_delete %} {% end %} {% end %}
{% if can_delete and delete_url %} {{ confirm_dialog(confirm_id, title="Delete message?", message="This cannot be undone.", confirm_label="Delete", variant="danger", confirm_url=delete_url, confirm_method="DELETE", hx_target=delete_target, hx_swap="outerHTML") }} {% end %}
{% end %}