{#- The swap target of the EAB list: the table and its pager, so a page step
replaces exactly this and nothing else -- `accounts/_table.html`'s shape.
`oob` is set only by `_created.html`, which returns this table alongside the
new credential so the list refreshes without a reload. The attribute has to
sit on this element rather than on a wrapper, because htmx matches an
out-of-band swap by the id of the element carrying it. That response always
renders the *first* page, which is where `Eab::search`'s newest-first
ordering puts a credential minted a moment ago. -#}
<div id="eab-table" {% if oob %}hx-swap-oob="true"{% endif %}>
<div class="panel table-scroll">
<table>
<thead>
<tr>
<th>Key ID</th>
<th>Label</th>
<th>Profile</th>
<th>Status</th>
<th>Created</th>
</tr>
</thead>
<tbody>
{% for eab in page.items %}
<tr>
<td class="id-cell"><a href="/ui/eab/{{ eab.kid }}" title="{{ eab.kid }}"><code>{{ eab.kid }}</code></a></td>
<td>
{%- if eab.label -%}
{{ eab.label }}
{%- else -%}
<span class="muted">—</span>
{%- endif -%}
</td>
<td>
{%- if eab.profile -%}
<code>{{ eab.profile }}</code>
{%- else -%}
<span class="muted">every profile</span>
{%- endif -%}
</td>
<td><span class="badge {{ eab.status }}">{{ eab.status }}</span></td>
<td class="small"><time datetime="{{ eab.createdAt }}">{{ eab.createdAt }}</time><br><span class="muted">{{ eab.createdAt | ago }}</span></td>
</tr>
{% else %}
<tr><td class="empty" colspan="5">No EAB credential has been minted.</td></tr>
{% endfor %}
</tbody>
</table>
</div>
{% include "partials/_pager.html" %}
</div>