{% extends "base.html" %} {% from "_macros.html" import status_pill %} {% from "_partials/empty_state.html" import empty_state %} {% block title %}My Holds — {{ library_name() }}{% endblock %} {% block content %}

My Holds

{% if error %}

{{ error }}

{% endif %} {% if pay_at_pickup_warning %}

⚠ You have {{ outstanding_cents | currency }} in outstanding fines. You can place holds, but checkout will be blocked at pickup until fines are paid.

{% endif %} {% if not holds %} {{ empty_state("No active holds", "Reserve items from the catalog and they will appear here.", cta_href="/ui/catalog", cta_label="Browse catalog") }} {% else %} {% for hold in holds %} {% endfor %}
TitleStatusQueueExpiresAction
{{ hold.work.title }} {{ status_pill(hold.status) }} {% if hold.suspended_until %}
Suspended until {{ hold.suspended_until.isoformat() }} {% if hold.suspended_reason %}
{{ hold.suspended_reason }}{% endif %} {% endif %}
{% set pos = queue_positions.get(hold.id) %} {% if pos %} #{{ pos }} {% else %}—{% endif %} {{ hold.expires_at.strftime("%Y-%m-%d") if hold.expires_at else "—" }} {% if hold.status == "waiting" and not hold.suspended_until %}
{% elif hold.status == "waiting" and hold.suspended_until %}
{% endif %}
{% endif %} {% endblock %}