{% extends "!breadcrumbs.html" %}
{% block breadcrumbs %}
  <!-- {{ docs_title }} -->
  {# parameterize default name "Docs" in breadcrumb via docs_title in conf.py #}
  {% if not docs_title %}
  {% set docs_title = "Docs" %}
  {% endif %}

  <li><a href="{{ pathto(master_doc) }}">{{ docs_title }}</a> &raquo;</li>
  {% for doc in parents %}
     <li><a href="{{ doc.link|e }}">{{ doc.title }}</a> &raquo;</li>
  {% endfor %}
  <li>{{ title }}</li>

{% endblock %}
{%- block breadcrumbs_aside %}
  <li class="wy-breadcrumbs-aside">
    <dark-mode-toggle id="dark-mode-toggle" appearance="toggle" permanent="true"/>
  </li>
  <li class="wy-breadcrumbs-aside">
    {%- if display_vcs_link %}
      {% set vcs_url = pagename | vcs_link_get_url %}
      {% if vcs_url %}
        <a href="{{ vcs_url }}" class="fa fa-github"> {{ _('Open on GitHub') }}</a>
      {% endif %}
    {% endif %}
  </li>
{%- endblock %}
