{% 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="three-way" permanent="true"/>
  </li>
  <li class="wy-breadcrumbs-aside">
    {%- if display_gh_links %}
      {% set gh_blob_url = pagename | gh_link_get_blob_url %}
      {% if gh_blob_url %}
        <a href="{{ gh_blob_url }}" class="fa fa-github"> {{ _('Open on GitHub') }}</a>
      {% endif %}
      {%- set git_last_updated, sha1 = pagename | git_info | default((None, None), true) %}
      {%- if sha1 %}
        <a href="{{ pagename | gh_link_get_open_issue_url(sha1) }}" class="fa fa-bug">
          {{ _('Report an issue with this page')}}
        </a>
      {% endif %}
    {% endif %}
  </li>
{%- endblock %}
