{% extends layout %} {% import "macros.html" as m %} {% block content %}

Collections

A duplicate name is refused rather than merged: a collection is a deliberate object, and handing back an existing one under the same name joins two sets somebody kept apart.

{% if panels.collections.ok %} {% if panels.collections.data.collections %} {% else %}{{ m.empty('No collections yet.') }}{% endif %} {% else %}{{ m.failed(panels.collections) }}{% endif %}

Tags

Applying a tag that already exists is the normal case, so creating one is idempotent. Names are normalized to NFKC, so two keyboards produce one tag.

{% if panels.tags.ok %} {% if panels.tags.data.tags %} {% else %}{{ m.empty('No tags yet.') }}{% endif %} {% else %}{{ m.failed(panels.tags) }}{% endif %}
{% endblock %}