aboutsummaryrefslogblamecommitdiff
path: root/templates/page.html
blob: eeba7f1d61bfbaf1b2321aa593d48c60de6d9709 (plain) (tree)




















                                                                                                                   

                                                                                                                              


























































































































































































                                                                                                                                                                                                                                                    
{% extends 'base.html' %}

{% block title %}
{{ config.title }} | {{ page.title }}
{% endblock %}

{% block content %}
  <section class="section">
    <div class="mx-auto max-w-7xl">
      <div class="grid grid-cols-5 gap-x-12">
        <div class="{% if page.extra.toc %}col-span-4{% else %}col-span-full{% endif %}">
          <article class="box my-12">
            <div class="flex flex-col bg-gray-50">
              <div class="flex flex-col border-l-4 border-garage-orange py-2 pl-4 relative">
                <h1 class="title leading-10 text-3xl text-garage-orange font-semibold">
                  {{ page.title }}
                </h1>
                {% if page.description %}
                  <p class="subtitle my-2 text-gray-600 italic text-sm">{{ page.description }}</p>
                {% endif %}
                <a id="back-to-blog-posts" class="absolute top-0 -left-12" href="/blog" title="Back to blog posts">
                  <div class="w-10 overflow-hidden inline-block group">
                    <div class="h-16 bg-garage-gray group-hover:bg-garage-orange transform -rotate-45 origin-top-right"></div>
                  </div>
                </a>
              </div>
              <div class="w-full text-garage-gray text-sm grid grid-cols-2 bg-gradient-to-r from-gray-100 to-transparent p-3 border-l-4 border-gray-300">
                <div class="flex items-center justify-start">
                  {{ macros::page_publish_metadata(page=page) }}
                </div>
                <div class="flex items-center justify-end">
                  {{ macros::page_content_metadata(page=page) }}
                </div>
                <div>
                  {% if page.taxonomies.categories %}
                  {{ macros::render_categories(categories=page.taxonomies.categories) }}
                  {% endif %}
                </div>
                <div>
                  {% if page.taxonomies.tags %}
                  {{ macros::render_tags(tags=page.taxonomies.tags) }}
                  {% endif %}
                </div>
              </div>
            </div>
            <div class="page-content max-w-4xl text-justify mt-12">
              {{ page.content | safe }}
            </div>
          </article>
        </div>
        {% if page.extra.toc %}
        <div class="col-span-1 my-12 is-hidden-mobile bg-gradient-to-b from-yellow-100 to-transparent rounded shadow-inner">
          <aside class="menu" style="position:sticky;top:0">
            <p class="bg-yellow-200 uppercase text-xs font-light p-1 text-center text-gray-600">Contents</p>
            <ul class="menu-list p-2 text-gray-800">
              {% for h1 in page.toc %}
              <li class="flex flex-col h-full">
                <a id="link-{{h1.id}}" class="toc text-sm text-gray-600 bg-transparent hover:text-orange-600 font-semibold {% if loop.first %}is-active{% endif %}"
                  href="{{ h1.permalink | safe }}">
                  {{ h1.title }}
                </a>
                {% if h1.children %}
                <ul>
                  {% for h2 in h1.children %}
                  <li class="hover:text-orange-600 border-l border-orange-400">
                    <a id="link-{{h2.id}}" class="toc pl-2 text-xs" href="{{ h2.permalink | safe }}">
                      {{ h2.title }}
                    </a>
                  </li>
                  {% endfor %}
                </ul>
                {% endif %}
              </li>
              {% endfor %}
            </ul>
          </aside>
        </div>
        {% endif %}
      </div>
    </div>
  </section>
{% endblock %}

{% block pagination %}
  {% if page.earlier or page.later or page.lighter or page.heavier %}
    <section class="w-full">
      <div class="container py-20">
        <div class="mx-auto max-w-4xl">
          <div class="column is-8">
            <nav class="flex space-x-8 items-center justify-center">
              {% if page.later %}
              <div>
                <a class="flex items-center space-x-1 hover:text-garage-orange font-semibold text-gray-800" href="{{ page.later.permalink }}">
                  <span class="icon mr-2">
                    <svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 16l-4-4m0 0l4-4m-4 4h18"></path></svg>
                  </span>
                  <span>{{ page.later.title }}</span>
                </a>
              </div>
              {% endif %} {% if page.earlier %}
              <div>
                <a class="flex items-center space-x-1 hover:text-garage-orange font-semibold text-gray-800" href="{{ page.earlier.permalink }}">
                  {{ page.earlier.title }}<span class="icon ml-2">
                    <svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 8l4 4m0 0l-4 4m4-4H3"></path></svg>
                  </span>
                </a>
              </div>
              {% endif %} {% if page.heavier %}
              <div>
                <a class="flex items-center space-x-1 hover:text-garage-orange font-semibold text-gray-800" href="{{ page.heavier.permalink }}">
                  <span class="icon mr-2">
                    <svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 16l-4-4m0 0l4-4m-4 4h18"></path></svg>
                  </span>
                  <span>{{ page.heavier.title }}</span>
                </a>
              </div>
              {% endif %} {% if page.lighter %}
              <div>
                <a class="flex items-center space-x-1 hover:text-garage-orange font-semibold text-gray-800" href="{{ page.lighter.permalink }}">
                  {{ page.lighter.title }}<span class="icon ml-2">
                    <svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 8l4 4m0 0l-4 4m4-4H3"></path></svg>
                  </span>
                </a>
              </div>
              {% endif %}
            </nav>
          </div>
        </div>
      </div>
    </section>
  {% endif %}
{% endblock %}

{% block comment %}
  {% if page.extra.comments and config.extra.commenting.disqus %}
    <section class="section">
      <div class="container">
        <div class="columns is-centered">
          <div class="column is-6">
            <div id="disqus_thread"></div>
          </div>
        </div>
      </div>
    </section>
  {% endif %}
{% endblock %}

{% block custom_js %}
{% if page.extra.toc %}
<script type="text/javascript">
  const menuBarHeight = document.querySelector("nav.navbar").clientHeight;
  const tocItems = document.querySelectorAll(".toc");
  const navSections = new Array(tocItems.length);

  tocItems.forEach((el, i) => {
    let id = el.getAttribute("id").substring(5);
    navSections[i] = document.getElementById(id);
  })

  function isVisible(tocIndex) {
    const current = navSections[tocIndex];
    const next = tocIndex < tocItems.length - 1 ? navSections[tocIndex + 1]
      : document.querySelectorAll("section.section").item(1);

    const c = current.getBoundingClientRect();
    const n = next.getBoundingClientRect();
    const h = (window.innerHeight || document.documentElement.clientHeight);

    return (c.top <= h) && (n.top - menuBarHeight >= 0);
  }

  function activateIfVisible() {
    for (b = true, i = 0; i < tocItems.length; i++) {
      if (b && isVisible(i)) {
        tocItems[i].classList.add('is-active');
        b = false;
      } else
        tocItems[i].classList.remove('is-active');
    }
  }

  var isTicking = null;
  window.addEventListener('scroll', () => {
    if (!isTicking) {
      window.requestAnimationFrame(() => {
        activateIfVisible();
        isTicking = false;
      });
      isTicking = true;
    }
  }, false);
</script>
{% endif %}

{% if page.extra.comments and config.extra.commenting.disqus %}
<script>
  var disqus_config = function () {
    this.page.url = "{{config.base_url | safe}}";
    this.page.identifier = "{{ current_path | safe}}";
  };

  (function () {
    var d = document, s = d.createElement('script');
    s.src = 'https://{{ config.extra.commenting.disqus | safe}}.disqus.com/embed.js';
    s.setAttribute('data-timestamp', +new Date());
    (d.head || d.body).appendChild(s);
  })();
</script>
{% endif %}
{% endblock %}