glacier-web-cli 0.5.0

Command-line tool for creating and running Glacier applications.
{# page is 1-based; url is each link's href before the page number ("?status=open&page="), so filters and sort are kept. #}
{% props page: i64, pages: i64, url: String = "?page=" %}
{%- let near = |n: i64| n == 1 || n == pages || (n - page).abs() <= 1 || (n == 2 && page == 4) || (n == pages - 1 && page == pages - 3) %}
{%- let shown: Vec<i64> = (1..=pages).filter(|n| near(*n)).collect() %}
{%- if pages > 1 %}
<nav class="ui-pagination" aria-label="Pagination">
  <ul>
    {%- if page > 1 %}
    <li><a class="ui-page-link" href="{{ url }}{{ page - 1 }}" rel="prev"><svg class="ui-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m15 18-6-6 6-6"/></svg>Previous</a></li>
    {%- end %}
    {%- for (i, n) in shown.iter().enumerate() %}
    {%- if i > 0 && *n - shown[i - 1] > 1 %}
    <li><span class="ui-page-ellipsis" aria-hidden="true"><svg class="ui-icon" viewBox="0 0 24 24" aria-hidden="true"><circle cx="12" cy="12" r="1"/><circle cx="19" cy="12" r="1"/><circle cx="5" cy="12" r="1"/></svg></span></li>
    {%- end %}
    <li><a class="ui-page-link" href="{{ url }}{{ n }}"{% if *n == page %} aria-current="page"{% end %}>{{ n }}</a></li>
    {%- end %}
    {%- if page < pages %}
    <li><a class="ui-page-link" href="{{ url }}{{ page + 1 }}" rel="next">Next<svg class="ui-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m9 18 6-6-6-6"/></svg></a></li>
    {%- end %}
  </ul>
</nav>
{%- end %}