rustio-admin 0.30.0

Django Admin, but for Rust. A small, focused admin framework.
Documentation
{# RustIO Console — command rail. Dark in both themes. Collapsed
 # icon-only by default; the toggle expands it to icon+label. Nav is
 # driven by the framework's real registry: Home, the registered
 # models, then Auth + Developer sections by role. #}
<nav class="rio-rail rio-rail--open" aria-label="Primary" id="rail">
  <div class="rio-rail-head">
    <span class="rio-rail-mark">
      <svg viewBox="0 0 100 100" fill="none" width="28" height="28" aria-hidden="true"><circle cx="50" cy="50" r="40" stroke="#EDEEF1" stroke-width="7" stroke-linecap="round"/><circle cx="50" cy="50" r="15" fill="#3FCBB2"/></svg>
    </span>
    <span class="rio-rail-word">{{ app_name }}</span>
    <button class="rio-rail-toggle" id="railToggle" type="button" aria-label="Expand sidebar" aria-expanded="false">
      <svg viewBox="0 0 24 24" width="17" height="17" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
    </button>
  </div>

  <a class="rio-rail-btn" data-label="Home" href="/admin"{% if nav_active == "home" %} aria-current="page"{% endif %} aria-label="Home">
    {{ icon("home") }}<span class="rio-rail-label">Home</span>
  </a>

  {% if entries %}
  <div class="rio-rail-sep" aria-hidden="true"></div>
  <div class="rio-rail-caption">Models</div>
  {% for entry in entries %}
  <a class="rio-rail-btn" data-label="{{ entry.display_name }}" href="/admin/{{ entry.admin_name }}"{% if nav_active == entry.admin_name %} aria-current="page"{% endif %} aria-label="{{ entry.display_name }}">
    {{ icon("table") }}<span class="rio-rail-label">{{ entry.display_name }}</span>
  </a>
  {% endfor %}
  {% endif %}

  {% if identity and identity.is_admin %}
  <div class="rio-rail-sep" aria-hidden="true"></div>
  <div class="rio-rail-caption">Access</div>
  <a class="rio-rail-btn" data-label="Users" href="/admin/users"{% if nav_active == "users" %} aria-current="page"{% endif %} aria-label="Users">{{ icon("users") }}<span class="rio-rail-label">Users</span></a>
  <a class="rio-rail-btn" data-label="Groups" href="/admin/groups"{% if nav_active == "groups" %} aria-current="page"{% endif %} aria-label="Groups">{{ icon("users-2") }}<span class="rio-rail-label">Groups</span></a>
  <a class="rio-rail-btn" data-label="History" href="/admin/history"{% if nav_active == "history" %} aria-current="page"{% endif %} aria-label="History">{{ icon("clock") }}<span class="rio-rail-label">History</span></a>
  {% endif %}

  {% if identity and identity.is_developer %}
  <div class="rio-rail-sep" aria-hidden="true"></div>
  <div class="rio-rail-caption">Developer</div>
  <a class="rio-rail-btn" data-label="Database" href="/admin/db"{% if nav_active == "db" %} aria-current="page"{% endif %} aria-label="Database">{{ icon("database") }}<span class="rio-rail-label">Database</span></a>
  {% endif %}

  <div class="rio-rail-spacer"></div>
</nav>