{# File picker dialog body. Loaded into PvDialog via GET /web/files/picker?accept=…&multi=0|1. Expected variables: rows list of {id, name, mimetype, size, thumbnail_url} accept optional mimetype filter (e.g. "image/*") q current search query multi bool — multi-select mode can_upload bool — operator may upload new files On pick: calls window.PvDialog.close({...}) (single) or window.PvDialog.close([{...}, ...]) (multi). The opener's onResult handler receives the payload and patches the bound field. #}
{# Toolbar — search + upload + accept hint. #}
{% if can_upload %} {% endif %}
{% if accept %}

Accepting: {{ accept }}

{% endif %} {# Grid of tiles. Click selects (single) or toggles (multi). #}
{# Footer — multi: show count + Done; single: auto-close on tile click. #} {% if multi %}
selected
{% endif %}