parent
41b8f9f519
commit
505e314a31
33 changed files with 412 additions and 399 deletions
|
@ -1,5 +1,6 @@
|
||||||
<!-- The Disqus lazy loading. -->
|
<!-- The Disqus lazy loading. -->
|
||||||
<div id="disqus_thread" class="pt-2 pb-2">
|
|
||||||
|
<div id="disqus_thread" class="mb-5">
|
||||||
<p class="text-center text-muted small">Comments powered by <a href="https://disqus.com/">Disqus</a>.</p>
|
<p class="text-center text-muted small">Comments powered by <a href="https://disqus.com/">Disqus</a>.</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -3,12 +3,13 @@
|
||||||
See: ${JS_ROOT}/utils/locale-dateime.js
|
See: ${JS_ROOT}/utils/locale-dateime.js
|
||||||
-->
|
-->
|
||||||
|
|
||||||
{% assign wrap_elem = include.wrap | default: 'em' %}
|
|
||||||
{% assign df_strftime = site.data.locales[include.lang].df.post.strftime | default: '%d/%m/%Y' %}
|
{% assign df_strftime = site.data.locales[include.lang].df.post.strftime | default: '%d/%m/%Y' %}
|
||||||
{% assign df_dayjs = site.data.locales[include.lang].df.post.dayjs | default: 'DD/MM/YYYY' %}
|
{% assign df_dayjs = site.data.locales[include.lang].df.post.dayjs | default: 'DD/MM/YYYY' %}
|
||||||
|
|
||||||
<{{ wrap_elem }}
|
<time
|
||||||
class="{% if include.class %}{{ include.class }}{% endif %}"
|
{% if include.class %}
|
||||||
|
class="{{ include.class }}"
|
||||||
|
{% endif %}
|
||||||
data-ts="{{ include.date | date: '%s' }}"
|
data-ts="{{ include.date | date: '%s' }}"
|
||||||
data-df="{{ df_dayjs }}"
|
data-df="{{ df_dayjs }}"
|
||||||
{% if include.tooltip %}
|
{% if include.tooltip %}
|
||||||
|
@ -16,4 +17,4 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
>
|
>
|
||||||
{{ include.date | date: df_strftime }}
|
{{ include.date | date: df_strftime }}
|
||||||
</{{ wrap_elem }}>
|
</time>
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<!-- The Footer -->
|
<!-- The Footer -->
|
||||||
|
|
||||||
<footer
|
<footer
|
||||||
|
aria-label="Site Info"
|
||||||
class="
|
class="
|
||||||
d-flex flex-column justify-content-center text-muted
|
d-flex flex-column justify-content-center text-muted
|
||||||
flex-lg-row justify-content-lg-between align-items-lg-center pb-lg-3
|
flex-lg-row justify-content-lg-between align-items-lg-center pb-lg-3
|
||||||
|
@ -8,7 +9,7 @@
|
||||||
>
|
>
|
||||||
<p>
|
<p>
|
||||||
{{ '©' }}
|
{{ '©' }}
|
||||||
{{ 'now' | date: '%Y' }}
|
<time>{{ 'now' | date: '%Y' }}</time>
|
||||||
<a href="{{ site.social.links[0] }}">{{ site.social.name }}</a>.
|
<a href="{{ site.social.links[0] }}">{{ site.social.name }}</a>.
|
||||||
{% if site.data.locales[include.lang].copyright.brief %}
|
{% if site.data.locales[include.lang].copyright.brief %}
|
||||||
<span
|
<span
|
||||||
|
|
24
_includes/notification.html
Normal file
24
_includes/notification.html
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
<aside
|
||||||
|
id="notification"
|
||||||
|
class="toast"
|
||||||
|
role="alert"
|
||||||
|
aria-live="assertive"
|
||||||
|
aria-atomic="true"
|
||||||
|
data-bs-animation="true"
|
||||||
|
data-bs-autohide="false"
|
||||||
|
>
|
||||||
|
<div class="toast-header">
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
class="btn-close ms-auto"
|
||||||
|
data-bs-dismiss="toast"
|
||||||
|
aria-label="Close"
|
||||||
|
></button>
|
||||||
|
</div>
|
||||||
|
<div class="toast-body text-center pt-0">
|
||||||
|
<p class="px-2 mb-3">{{ site.data.locales[include.lang].notification.update_found }}</p>
|
||||||
|
<button type="button" class="btn btn-primary" aria-label="Update">
|
||||||
|
{{ site.data.locales[include.lang].notification.update }}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</aside>
|
|
@ -1,19 +1,19 @@
|
||||||
<!-- Navigation buttons at the bottom of the post. -->
|
<!-- Navigation buttons at the bottom of the post. -->
|
||||||
|
|
||||||
<div class="post-navigation d-flex justify-content-between">
|
<nav class="post-navigation d-flex justify-content-between" aria-label="Post Navigation">
|
||||||
|
{% assign previous = site.data.locales[include.lang].post.button.previous %}
|
||||||
|
{% assign next = site.data.locales[include.lang].post.button.next %}
|
||||||
|
|
||||||
{% if page.previous.url %}
|
{% if page.previous.url %}
|
||||||
<a
|
<a
|
||||||
href="{{ site.baseurl }}{{ page.previous.url }}"
|
href="{{ site.baseurl }}{{ page.previous.url }}"
|
||||||
class="btn btn-outline-primary"
|
class="btn btn-outline-primary"
|
||||||
prompt="{{ site.data.locales[include.lang].post.button.previous }}"
|
aria-label="{{ previous }}"
|
||||||
>
|
>
|
||||||
<p>{{ page.previous.title }}</p>
|
<p>{{ page.previous.title }}</p>
|
||||||
</a>
|
</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<div
|
<div class="btn btn-outline-primary disabled" aria-label="{{ previous }}">
|
||||||
class="btn btn-outline-primary disabled"
|
|
||||||
prompt="{{ site.data.locales[include.lang].post.button.previous }}"
|
|
||||||
>
|
|
||||||
<p>-</p>
|
<p>-</p>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -22,16 +22,13 @@
|
||||||
<a
|
<a
|
||||||
href="{{ site.baseurl }}{{page.next.url}}"
|
href="{{ site.baseurl }}{{page.next.url}}"
|
||||||
class="btn btn-outline-primary"
|
class="btn btn-outline-primary"
|
||||||
prompt="{{ site.data.locales[include.lang].post.button.next }}"
|
aria-label="{{ next }}"
|
||||||
>
|
>
|
||||||
<p>{{ page.next.title }}</p>
|
<p>{{ page.next.title }}</p>
|
||||||
</a>
|
</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<div
|
<div class="btn btn-outline-primary disabled" aria-label="{{ next }}">
|
||||||
class="btn btn-outline-primary disabled"
|
|
||||||
prompt="{{ site.data.locales[include.lang].post.button.next }}"
|
|
||||||
>
|
|
||||||
<p>-</p>
|
<p>-</p>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</nav>
|
||||||
|
|
|
@ -69,17 +69,17 @@
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
{% if relate_posts.size > 0 %}
|
{% if relate_posts.size > 0 %}
|
||||||
<div id="related-posts" class="mb-2 mb-sm-4">
|
<aside id="related-posts" aria-labelledby="related-label">
|
||||||
<h3 class="pt-2 mb-4" data-toc-skip>
|
<h3 class="mb-4" id="related-label">
|
||||||
{{ site.data.locales[include.lang].post.relate_posts }}
|
{{- site.data.locales[include.lang].post.relate_posts -}}
|
||||||
</h3>
|
</h3>
|
||||||
<div class="row row-cols-1 row-cols-md-2 row-cols-xl-3 g-4 mb-4">
|
<nav class="row row-cols-1 row-cols-md-2 row-cols-xl-3 g-4 mb-4">
|
||||||
{% for post in relate_posts %}
|
{% for post in relate_posts %}
|
||||||
<div class="col">
|
<article class="col">
|
||||||
<a href="{{ post.url | relative_url }}" class="card post-preview h-100">
|
<a href="{{ post.url | relative_url }}" class="post-preview card h-100">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
{% include datetime.html date=post.date class="small" lang=include.lang %}
|
{% include datetime.html date=post.date class="small" lang=include.lang %}
|
||||||
<h4 class="pt-0 my-2" data-toc-skip>{{ post.title }}</h4>
|
<h4 class="pt-0 my-2">{{ post.title }}</h4>
|
||||||
<div class="text-muted small">
|
<div class="text-muted small">
|
||||||
<p>
|
<p>
|
||||||
{% include no-linenos.html content=post.content %}
|
{% include no-linenos.html content=post.content %}
|
||||||
|
@ -88,10 +88,9 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</article>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</nav>
|
||||||
<!-- .card-deck -->
|
</aside>
|
||||||
</div>
|
|
||||||
<!-- #related-posts -->
|
<!-- #related-posts -->
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -4,14 +4,16 @@
|
||||||
-->
|
-->
|
||||||
|
|
||||||
{% capture result_elem %}
|
{% capture result_elem %}
|
||||||
<div class="px-1 px-sm-2 px-lg-4 px-xl-0">
|
<article class="px-1 px-sm-2 px-lg-4 px-xl-0">
|
||||||
<a href="{url}">{title}</a>
|
<header>
|
||||||
<div class="post-meta d-flex flex-column flex-sm-row text-muted mt-1 mb-1">
|
<h2><a href="{url}">{title}</a></h2>
|
||||||
{categories}
|
<div class="post-meta d-flex flex-column flex-sm-row text-muted mt-1 mb-1">
|
||||||
{tags}
|
{categories}
|
||||||
</div>
|
{tags}
|
||||||
<p>{snippet}</p>
|
</div>
|
||||||
</div>
|
</header>
|
||||||
|
<p>{snippet}</p>
|
||||||
|
</article>
|
||||||
{% endcapture %}
|
{% endcapture %}
|
||||||
|
|
||||||
{% capture not_found %}<p class="mt-5">{{ site.data.locales[include.lang].search.no_results }}</p>{% endcapture %}
|
{% capture not_found %}<p class="mt-5">{{ site.data.locales[include.lang].search.no_results }}</p>{% endcapture %}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<!-- The Search results -->
|
<!-- The Search results -->
|
||||||
|
|
||||||
<div id="search-result-wrapper" class="d-flex justify-content-center unloaded">
|
<div id="search-result-wrapper" class="d-flex justify-content-center unloaded">
|
||||||
<div class="col-11 post-content">
|
<div class="col-11 content">
|
||||||
<div id="search-hints">
|
<div id="search-hints">
|
||||||
{% include_cached trending-tags.html %}
|
{% include_cached trending-tags.html %}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<!-- The Side Bar -->
|
<!-- The Side Bar -->
|
||||||
|
|
||||||
<div id="sidebar" class="d-flex flex-column align-items-end">
|
<aside aria-label="Sidebar" id="sidebar" class="d-flex flex-column align-items-end">
|
||||||
<div class="profile-wrapper">
|
<header class="profile-wrapper">
|
||||||
<a href="{{ '/' | relative_url }}" id="avatar" class="rounded-circle">
|
<a href="{{ '/' | relative_url }}" id="avatar" class="rounded-circle">
|
||||||
{% if site.avatar != empty and site.avatar %}
|
{% if site.avatar != empty and site.avatar %}
|
||||||
{% capture avatar_url %}
|
{% capture avatar_url %}
|
||||||
|
@ -17,39 +17,40 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<div class="site-title">
|
<h1 class="site-title">
|
||||||
<a href="{{ '/' | relative_url }}">{{ site.title }}</a>
|
<a href="{{ '/' | relative_url }}">{{ site.title }}</a>
|
||||||
</div>
|
</h1>
|
||||||
<div class="site-subtitle fst-italic">{{ site.tagline }}</div>
|
<p class="site-subtitle fst-italic mb-0">{{ site.tagline }}</p>
|
||||||
</div>
|
</header>
|
||||||
<!-- .profile-wrapper -->
|
<!-- .profile-wrapper -->
|
||||||
|
|
||||||
<ul class="nav flex-column flex-grow-1 w-100 ps-0">
|
<nav class="flex-column flex-grow-1 w-100 ps-0">
|
||||||
<!-- home -->
|
<ul class="nav">
|
||||||
<li class="nav-item{% if page.layout == 'home' %}{{ " active" }}{% endif %}">
|
<!-- home -->
|
||||||
<a href="{{ '/' | relative_url }}" class="nav-link">
|
<li class="nav-item{% if page.layout == 'home' %}{{ " active" }}{% endif %}">
|
||||||
<i class="fa-fw fas fa-home"></i>
|
<a href="{{ '/' | relative_url }}" class="nav-link">
|
||||||
<span>{{ site.data.locales[include.lang].tabs.home | upcase }}</span>
|
<i class="fa-fw fas fa-home"></i>
|
||||||
</a>
|
<span>{{ site.data.locales[include.lang].tabs.home | upcase }}</span>
|
||||||
</li>
|
|
||||||
<!-- the real tabs -->
|
|
||||||
{% for tab in site.tabs %}
|
|
||||||
<li class="nav-item{% if tab.url == page.url %}{{ " active" }}{% endif %}">
|
|
||||||
<a href="{{ tab.url | relative_url }}" class="nav-link">
|
|
||||||
<i class="fa-fw {{ tab.icon }}"></i>
|
|
||||||
{% capture tab_name %}{{ tab.url | split: '/' }}{% endcapture %}
|
|
||||||
|
|
||||||
<span>{{ site.data.locales[include.lang].tabs.[tab_name] | default: tab.title | upcase }}</span>
|
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<!-- .nav-item -->
|
<!-- the real tabs -->
|
||||||
{% endfor %}
|
{% for tab in site.tabs %}
|
||||||
</ul>
|
<li class="nav-item{% if tab.url == page.url %}{{ " active" }}{% endif %}">
|
||||||
<!-- ul.nav.flex-column -->
|
<a href="{{ tab.url | relative_url }}" class="nav-link">
|
||||||
|
<i class="fa-fw {{ tab.icon }}"></i>
|
||||||
|
{% capture tab_name %}{{ tab.url | split: '/' }}{% endcapture %}
|
||||||
|
|
||||||
|
<span>{{ site.data.locales[include.lang].tabs.[tab_name] | default: tab.title | upcase }}</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<!-- .nav-item -->
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
|
||||||
<div class="sidebar-bottom d-flex flex-wrap align-items-center w-100">
|
<div class="sidebar-bottom d-flex flex-wrap align-items-center w-100">
|
||||||
{% unless site.theme_mode %}
|
{% unless site.theme_mode %}
|
||||||
<button class="mode-toggle btn" aria-label="Switch Mode">
|
<button type="button" class="mode-toggle btn" aria-label="Switch Mode">
|
||||||
<i class="fas fa-adjust"></i>
|
<i class="fas fa-adjust"></i>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
@ -58,47 +59,49 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endunless %}
|
{% endunless %}
|
||||||
|
|
||||||
{% for entry in site.data.contact %}
|
<address class="d-flex mb-0">
|
||||||
{% case entry.type %}
|
{% for entry in site.data.contact %}
|
||||||
{% when 'github', 'twitter' %}
|
{% case entry.type %}
|
||||||
{%- capture url -%}
|
{% when 'github', 'twitter' %}
|
||||||
|
{%- capture url -%}
|
||||||
https://{{ entry.type }}.com/{{ site[entry.type].username }}
|
https://{{ entry.type }}.com/{{ site[entry.type].username }}
|
||||||
{%- endcapture -%}
|
{%- endcapture -%}
|
||||||
{% when 'email' %}
|
{% when 'email' %}
|
||||||
{% assign email = site.social.email | split: '@' %}
|
{% assign email = site.social.email | split: '@' %}
|
||||||
{%- capture url -%}
|
{%- capture url -%}
|
||||||
javascript:location.href = 'mailto:' + ['{{ email[0] }}','{{ email[1] }}'].join('@')
|
javascript:location.href = 'mailto:' + ['{{ email[0] }}','{{ email[1] }}'].join('@')
|
||||||
{%- endcapture -%}
|
{%- endcapture -%}
|
||||||
{% when 'rss' %}
|
{% when 'rss' %}
|
||||||
{% assign url = '/feed.xml' | relative_url %}
|
{% assign url = '/feed.xml' | relative_url %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{% assign url = entry.url %}
|
{% assign url = entry.url %}
|
||||||
{% endcase %}
|
{% endcase %}
|
||||||
|
|
||||||
{% if url %}
|
{% if url %}
|
||||||
<a
|
<a
|
||||||
href="{{ url }}"
|
href="{{ url }}"
|
||||||
aria-label="{{ entry.type }}"
|
aria-label="{{ entry.type }}"
|
||||||
{% assign link_types = '' %}
|
{% assign link_types = '' %}
|
||||||
|
|
||||||
{% unless entry.noblank %}
|
{% unless entry.noblank %}
|
||||||
target="_blank"
|
target="_blank"
|
||||||
{% assign link_types = 'noopener noreferrer' %}
|
{% assign link_types = 'noopener noreferrer' %}
|
||||||
{% endunless %}
|
{% endunless %}
|
||||||
|
|
||||||
{% if entry.type == 'mastodon' %}
|
{% if entry.type == 'mastodon' %}
|
||||||
{% assign link_types = link_types | append: ' me' | strip %}
|
{% assign link_types = link_types | append: ' me' | strip %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% unless link_types == empty %}
|
{% unless link_types == empty %}
|
||||||
rel="{{ link_types }}"
|
rel="{{ link_types }}"
|
||||||
{% endunless %}
|
{% endunless %}
|
||||||
>
|
>
|
||||||
<i class="{{ entry.icon }}"></i>
|
<i class="{{ entry.icon }}"></i>
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
</address>
|
||||||
</div>
|
</div>
|
||||||
<!-- .sidebar-bottom -->
|
<!-- .sidebar-bottom -->
|
||||||
</div>
|
</aside>
|
||||||
<!-- #sidebar -->
|
<!-- #sidebar -->
|
||||||
|
|
|
@ -6,8 +6,8 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if enable_toc %}
|
{% if enable_toc %}
|
||||||
<div id="toc-wrapper" class="ps-0 pe-4 mb-5">
|
<section id="toc-wrapper" class="ps-0 pe-4 mb-5">
|
||||||
<div class="panel-heading ps-3 pt-2 mb-2">{{- site.data.locales[include.lang].panel.toc -}}</div>
|
<h2 class="panel-heading ps-3 pt-2 mb-2">{{- site.data.locales[include.lang].panel.toc -}}</h2>
|
||||||
<nav id="toc"></nav>
|
<nav id="toc"></nav>
|
||||||
</div>
|
</section>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
<!-- The Top Bar -->
|
<!-- The Top Bar -->
|
||||||
|
|
||||||
<div id="topbar-wrapper">
|
<header id="topbar-wrapper" aria-label="Top Bar">
|
||||||
<div
|
<div
|
||||||
id="topbar"
|
id="topbar"
|
||||||
class="container d-flex align-items-center justify-content-between h-100"
|
class="d-flex align-items-center justify-content-between px-lg-3 h-100"
|
||||||
>
|
>
|
||||||
<span id="breadcrumb">
|
<nav id="breadcrumb" aria-label="Breadcrumb">
|
||||||
{% assign paths = page.url | split: '/' %}
|
{% assign paths = page.url | split: '/' %}
|
||||||
|
|
||||||
{% if paths.size == 0 or page.layout == 'home' %}
|
{% if paths.size == 0 or page.layout == 'home' %}
|
||||||
|
@ -37,10 +37,12 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</span>
|
</nav>
|
||||||
<!-- endof #breadcrumb -->
|
<!-- endof #breadcrumb -->
|
||||||
|
|
||||||
<i id="sidebar-trigger" class="fas fa-bars fa-fw"></i>
|
<button type="button" id="sidebar-trigger" class="btn btn-link">
|
||||||
|
<i class="fas fa-bars fa-fw"></i>
|
||||||
|
</button>
|
||||||
|
|
||||||
<div id="topbar-title">
|
<div id="topbar-title">
|
||||||
{% if page.layout == 'home' %}
|
{% if page.layout == 'home' %}
|
||||||
|
@ -53,8 +55,11 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<i id="search-trigger" class="fas fa-search fa-fw"></i>
|
<button type="button" id="search-trigger" class="btn btn-link">
|
||||||
<span id="search-wrapper" class="align-items-center">
|
<i class="fas fa-search fa-fw"></i>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<search class="align-items-center ms-3 ms-lg-0">
|
||||||
<i class="fas fa-search fa-fw"></i>
|
<i class="fas fa-search fa-fw"></i>
|
||||||
<input
|
<input
|
||||||
class="form-control"
|
class="form-control"
|
||||||
|
@ -64,7 +69,9 @@
|
||||||
autocomplete="off"
|
autocomplete="off"
|
||||||
placeholder="{{ site.data.locales[include.lang].search.hint | capitalize }}..."
|
placeholder="{{ site.data.locales[include.lang].search.hint | capitalize }}..."
|
||||||
>
|
>
|
||||||
</span>
|
</search>
|
||||||
<span id="search-cancel">{{ site.data.locales[include.lang].search.cancel }}</span>
|
<button type="button" class="btn btn-link text-decoration-none" id="search-cancel">
|
||||||
|
{{- site.data.locales[include.lang].search.cancel -}}
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</header>
|
||||||
|
|
|
@ -34,13 +34,13 @@
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
{% if trending_tags.size > 0 %}
|
{% if trending_tags.size > 0 %}
|
||||||
<div id="access-tags">
|
<section>
|
||||||
<div class="panel-heading">{{- site.data.locales[include.lang].panel.trending_tags -}}</div>
|
<h2 class="panel-heading">{{- site.data.locales[include.lang].panel.trending_tags -}}</h2>
|
||||||
<div class="d-flex flex-wrap mt-3 mb-1 me-3">
|
<div class="d-flex flex-wrap mt-3 mb-1 me-3">
|
||||||
{% for tag_name in trending_tags %}
|
{% for tag_name in trending_tags %}
|
||||||
{% assign url = tag_name | slugify | url_encode | prepend: '/tags/' | append: '/' %}
|
{% assign url = tag_name | slugify | url_encode | prepend: '/tags/' | append: '/' %}
|
||||||
<a class="post-tag btn btn-outline-primary" href="{{ url | relative_url }}">{{ tag_name }}</a>
|
<a class="post-tag btn btn-outline-primary" href="{{ url | relative_url }}">{{ tag_name }}</a>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</section>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -22,9 +22,9 @@
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
{% if update_list.size > 0 %}
|
{% if update_list.size > 0 %}
|
||||||
<div id="access-lastmod" class="post">
|
<section id="access-lastmod">
|
||||||
<div class="panel-heading">{{- site.data.locales[include.lang].panel.lastmod -}}</div>
|
<h2 class="panel-heading">{{- site.data.locales[include.lang].panel.lastmod -}}</h2>
|
||||||
<ul class="post-content list-unstyled ps-0 pb-1 ms-1 mt-2">
|
<ul class="content list-unstyled ps-0 pb-1 ms-1 mt-2">
|
||||||
{% for item in update_list %}
|
{% for item in update_list %}
|
||||||
{% assign index = item | split: '::' | last | plus: 0 %}
|
{% assign index = item | split: '::' | last | plus: 0 %}
|
||||||
{% assign post = site.posts[index] %}
|
{% assign post = site.posts[index] %}
|
||||||
|
@ -34,6 +34,6 @@
|
||||||
</li>
|
</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</section>
|
||||||
<!-- #access-lastmod -->
|
<!-- #access-lastmod -->
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -7,7 +7,7 @@ function stopShimmer($node) {
|
||||||
}
|
}
|
||||||
|
|
||||||
export function imgLazy() {
|
export function imgLazy() {
|
||||||
const $images = $('#core-wrapper img[data-src]');
|
const $images = $('main img[data-src]');
|
||||||
|
|
||||||
if ($images.length <= 0) {
|
if ($images.length <= 0) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -4,9 +4,9 @@
|
||||||
const $btnSbTrigger = $('#sidebar-trigger');
|
const $btnSbTrigger = $('#sidebar-trigger');
|
||||||
const $btnSearchTrigger = $('#search-trigger');
|
const $btnSearchTrigger = $('#search-trigger');
|
||||||
const $btnCancel = $('#search-cancel');
|
const $btnCancel = $('#search-cancel');
|
||||||
const $content = $('#main>.row');
|
const $content = $('#main-wrapper>.container>.row');
|
||||||
const $topbarTitle = $('#topbar-title');
|
const $topbarTitle = $('#topbar-title');
|
||||||
const $searchWrapper = $('#search-wrapper');
|
const $search = $('search');
|
||||||
const $resultWrapper = $('#search-result-wrapper');
|
const $resultWrapper = $('#search-result-wrapper');
|
||||||
const $results = $('#search-results');
|
const $results = $('#search-results');
|
||||||
const $input = $('#search-input');
|
const $input = $('#search-input');
|
||||||
|
@ -39,13 +39,13 @@ class MobileSearchBar {
|
||||||
$btnSbTrigger.addClass(C_UNLOADED);
|
$btnSbTrigger.addClass(C_UNLOADED);
|
||||||
$topbarTitle.addClass(C_UNLOADED);
|
$topbarTitle.addClass(C_UNLOADED);
|
||||||
$btnSearchTrigger.addClass(C_UNLOADED);
|
$btnSearchTrigger.addClass(C_UNLOADED);
|
||||||
$searchWrapper.addClass(C_FLEX);
|
$search.addClass(C_FLEX);
|
||||||
$btnCancel.addClass(C_LOADED);
|
$btnCancel.addClass(C_LOADED);
|
||||||
}
|
}
|
||||||
|
|
||||||
static off() {
|
static off() {
|
||||||
$btnCancel.removeClass(C_LOADED);
|
$btnCancel.removeClass(C_LOADED);
|
||||||
$searchWrapper.removeClass(C_FLEX);
|
$search.removeClass(C_FLEX);
|
||||||
$btnSbTrigger.removeClass(C_UNLOADED);
|
$btnSbTrigger.removeClass(C_UNLOADED);
|
||||||
$topbarTitle.removeClass(C_UNLOADED);
|
$topbarTitle.removeClass(C_UNLOADED);
|
||||||
$btnSearchTrigger.removeClass(C_UNLOADED);
|
$btnSearchTrigger.removeClass(C_UNLOADED);
|
||||||
|
@ -55,7 +55,7 @@ class MobileSearchBar {
|
||||||
class ResultSwitch {
|
class ResultSwitch {
|
||||||
static on() {
|
static on() {
|
||||||
if (!ScrollBlocker.resultVisible) {
|
if (!ScrollBlocker.resultVisible) {
|
||||||
// the block method must be called before $(#main) unloaded.
|
// the block method must be called before $(#main-wrapper>.container) unloaded.
|
||||||
ScrollBlocker.on();
|
ScrollBlocker.on();
|
||||||
$resultWrapper.removeClass(C_UNLOADED);
|
$resultWrapper.removeClass(C_UNLOADED);
|
||||||
$content.addClass(C_UNLOADED);
|
$content.addClass(C_UNLOADED);
|
||||||
|
@ -72,7 +72,7 @@ class ResultSwitch {
|
||||||
$resultWrapper.addClass(C_UNLOADED);
|
$resultWrapper.addClass(C_UNLOADED);
|
||||||
$content.removeClass(C_UNLOADED);
|
$content.removeClass(C_UNLOADED);
|
||||||
|
|
||||||
// now the release method must be called after $(#main) display
|
// now the release method must be called after $(#main-wrapper>.container) display
|
||||||
ScrollBlocker.off();
|
ScrollBlocker.off();
|
||||||
|
|
||||||
$input.val('');
|
$input.val('');
|
||||||
|
@ -98,11 +98,11 @@ export function displaySearch() {
|
||||||
});
|
});
|
||||||
|
|
||||||
$input.on('focus', function () {
|
$input.on('focus', function () {
|
||||||
$searchWrapper.addClass(C_FOCUS);
|
$search.addClass(C_FOCUS);
|
||||||
});
|
});
|
||||||
|
|
||||||
$input.on('focusout', function () {
|
$input.on('focusout', function () {
|
||||||
$searchWrapper.removeClass(C_FOCUS);
|
$search.removeClass(C_FOCUS);
|
||||||
});
|
});
|
||||||
|
|
||||||
$input.on('input', () => {
|
$input.on('input', () => {
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
export function toc() {
|
export function toc() {
|
||||||
if (document.querySelector('#core-wrapper h2')) {
|
if (document.querySelector('main h2')) {
|
||||||
// see: https://github.com/tscanlin/tocbot#usage
|
// see: https://github.com/tscanlin/tocbot#usage
|
||||||
tocbot.init({
|
tocbot.init({
|
||||||
tocSelector: '#toc',
|
tocSelector: '#toc',
|
||||||
contentSelector: '.post-content',
|
contentSelector: '.content',
|
||||||
ignoreSelector: '[data-toc-skip]',
|
ignoreSelector: '[data-toc-skip]',
|
||||||
headingSelector: 'h2, h3, h4',
|
headingSelector: 'h2, h3, h4',
|
||||||
orderedList: false,
|
orderedList: false,
|
||||||
|
|
|
@ -9,28 +9,27 @@ layout: page
|
||||||
{% assign df_dayjs_m = site.data.locales[lang].df.archives.dayjs | default: '/ MM' %}
|
{% assign df_dayjs_m = site.data.locales[lang].df.archives.dayjs | default: '/ MM' %}
|
||||||
|
|
||||||
<div id="archives" class="pl-xl-3">
|
<div id="archives" class="pl-xl-3">
|
||||||
|
{% for post in site.posts %}
|
||||||
|
{% assign cur_year = post.date | date: '%Y' %}
|
||||||
|
|
||||||
{% for post in site.posts %}
|
{% if cur_year != last_year %}
|
||||||
{% capture cur_year %}{{ post.date | date: "%Y" }}{% endcapture %}
|
{% unless forloop.first %}</ul>{% endunless %}
|
||||||
|
|
||||||
{% if cur_year != last_year %}
|
<time class="year lead d-block">{{ cur_year }}</time>
|
||||||
{% unless forloop.first %}</ul>{% endunless %}
|
{{ '<ul class="list-unstyled">' }}
|
||||||
<div class="year lead">{{ cur_year }}</div>
|
|
||||||
<ul class="list-unstyled">
|
|
||||||
{% assign last_year = cur_year %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<li>
|
{% assign last_year = cur_year %}
|
||||||
{% assign ts = post.date | date: '%s' %}
|
{% endif %}
|
||||||
<span class="date day" data-ts="{{ ts }}" data-df="DD">{{ post.date | date: "%d" }}</span>
|
|
||||||
<span class="date month small text-muted ms-1" data-ts="{{ ts }}" data-df="{{ df_dayjs_m }}">
|
|
||||||
{{ post.date | date: df_strftime_m }}
|
|
||||||
</span>
|
|
||||||
<a href="{{ post.url | relative_url }}">{{ post.title }}</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
{% if forloop.last %}</ul>{% endif %}
|
<li>
|
||||||
|
{% assign ts = post.date | date: '%s' %}
|
||||||
{% endfor %}
|
<span class="date day" data-ts="{{ ts }}" data-df="DD">{{ post.date | date: '%d' }}</span>
|
||||||
|
<span class="date month small text-muted ms-1" data-ts="{{ ts }}" data-df="{{ df_dayjs_m }}">
|
||||||
|
{{ post.date | date: df_strftime_m }}
|
||||||
|
</span>
|
||||||
|
<a href="{{ post.url | relative_url }}">{{ post.title }}</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
{% if forloop.last %}</ul>{% endif %}
|
||||||
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -12,12 +12,12 @@ layout: page
|
||||||
<span class="lead text-muted ps-2">{{ page.posts | size }}</span>
|
<span class="lead text-muted ps-2">{{ page.posts | size }}</span>
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
<ul class="post-content ps-0">
|
<ul class="content ps-0">
|
||||||
{% for post in page.posts %}
|
{% for post in page.posts %}
|
||||||
<li class="d-flex justify-content-between px-md-3">
|
<li class="d-flex justify-content-between px-md-3">
|
||||||
<a href="{{ post.url | relative_url }}">{{ post.title }}</a>
|
<a href="{{ post.url | relative_url }}">{{ post.title }}</a>
|
||||||
<span class="dash flex-grow-1"></span>
|
<span class="dash flex-grow-1"></span>
|
||||||
{% include datetime.html date=post.date wrap='span' class='text-muted small' lang=lang %}
|
{% include datetime.html date=post.date class='text-muted small text-nowrap' lang=lang %}
|
||||||
</li>
|
</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
@ -15,6 +15,10 @@ layout: compress
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endcapture %}
|
{% endcapture %}
|
||||||
|
|
||||||
|
{% if layout.tail_includes %}
|
||||||
|
{% assign has_tail = true %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
<!-- `site.alt_lang` can specify a language different from the UI -->
|
<!-- `site.alt_lang` can specify a language different from the UI -->
|
||||||
<html lang="{{ site.alt_lang | default: site.lang }}" {{ prefer_mode }}>
|
<html lang="{{ site.alt_lang | default: site.lang }}" {{ prefer_mode }}>
|
||||||
{% include head.html %}
|
{% include head.html %}
|
||||||
|
@ -23,46 +27,63 @@ layout: compress
|
||||||
{% include sidebar.html lang=lang %}
|
{% include sidebar.html lang=lang %}
|
||||||
|
|
||||||
<div id="main-wrapper" class="d-flex justify-content-center">
|
<div id="main-wrapper" class="d-flex justify-content-center">
|
||||||
<div id="main" class="container px-xxl-5">
|
<div class="container px-xxl-5">
|
||||||
{% include topbar.html lang=lang %}
|
{% include topbar.html lang=lang %}
|
||||||
{{ content }}
|
|
||||||
|
<div class="row">
|
||||||
|
<main
|
||||||
|
aria-label="Main Content"
|
||||||
|
class="col-12 col-lg-11 col-xl-9 px-md-4{% unless has_tail %} pb-5{% endunless %}"
|
||||||
|
>
|
||||||
|
{{ content }}
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<!-- panel -->
|
||||||
|
<aside aria-label="Panel" id="panel-wrapper" class="col-xl-3 ps-2 text-muted">
|
||||||
|
<div class="access">
|
||||||
|
{% include_cached update-list.html lang=lang %}
|
||||||
|
{% include_cached trending-tags.html lang=lang %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% for _include in layout.panel_includes %}
|
||||||
|
{% assign _include_path = _include | append: '.html' %}
|
||||||
|
{% include {{ _include_path }} lang=lang %}
|
||||||
|
{% endfor %}
|
||||||
|
</aside>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<!-- tail -->
|
||||||
|
<div id="tail-wrapper" class="col-12 col-lg-11 col-xl-9 px-md-4">
|
||||||
|
{% if has_tail %}
|
||||||
|
{% for _include in layout.tail_includes %}
|
||||||
|
{% assign _include_path = _include | append: '.html' %}
|
||||||
|
{% include {{ _include_path }} lang=lang %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% include_cached footer.html lang=lang %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
{% include_cached search-results.html lang=lang %}
|
{% include_cached search-results.html lang=lang %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<aside aria-label="Scroll to Top">
|
||||||
|
<button id="back-to-top" type="button" class="btn btn-lg btn-box-shadow">
|
||||||
|
<i class="fas fa-angle-up"></i>
|
||||||
|
</button>
|
||||||
|
</aside>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="mask"></div>
|
<div id="mask"></div>
|
||||||
|
|
||||||
<button id="back-to-top" aria-label="back-to-top" class="btn btn-lg btn-box-shadow">
|
|
||||||
<i class="fas fa-angle-up"></i>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
{% if site.pwa.enabled %}
|
{% if site.pwa.enabled %}
|
||||||
<div
|
{% include_cached notification.html lang=lang %}
|
||||||
id="notification"
|
|
||||||
class="toast"
|
|
||||||
role="alert"
|
|
||||||
aria-live="assertive"
|
|
||||||
aria-atomic="true"
|
|
||||||
data-bs-animation="true"
|
|
||||||
data-bs-autohide="false"
|
|
||||||
>
|
|
||||||
<div class="toast-header">
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
class="btn-close ms-auto"
|
|
||||||
data-bs-dismiss="toast"
|
|
||||||
aria-label="Close"
|
|
||||||
></button>
|
|
||||||
</div>
|
|
||||||
<div class="toast-body text-center pt-0">
|
|
||||||
<p class="px-2 mb-3">{{ site.data.locales[lang].notification.update_found }}</p>
|
|
||||||
<button type="button" class="btn btn-primary" aria-label="Update">
|
|
||||||
{{ site.data.locales[lang].notification.update }}
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
<!-- JavaScripts -->
|
||||||
|
|
||||||
{% include js-selector.html %}
|
{% include js-selector.html %}
|
||||||
|
|
||||||
{% if page.mermaid %}
|
{% if page.mermaid %}
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
layout: page
|
layout: default
|
||||||
refactor: true
|
|
||||||
---
|
---
|
||||||
|
|
||||||
{% include lang.html %}
|
{% include lang.html %}
|
||||||
|
@ -40,10 +39,10 @@ refactor: true
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<div id="post-list" class="pe-xl-2">
|
{% capture content %}
|
||||||
{% for post in posts %}
|
{% for post in posts %}
|
||||||
<a href="{{ post.url | relative_url }}" class="card-wrapper">
|
<article class="card-wrapper">
|
||||||
<div class="card post-preview flex-md-row-reverse">
|
<a href="{{ post.url | relative_url }}" class="card post-preview flex-md-row-reverse">
|
||||||
{% if post.image %}
|
{% if post.image %}
|
||||||
{% if post.image.lqip %}
|
{% if post.image.lqip %}
|
||||||
{% capture lqip %}lqip="{{ post.image.lqip }}"{% endcapture %}
|
{% capture lqip %}lqip="{{ post.image.lqip }}"{% endcapture %}
|
||||||
|
@ -60,11 +59,9 @@ refactor: true
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<div class="card-body d-flex flex-column">
|
<div class="card-body d-flex flex-column">
|
||||||
<h1 class="card-title my-2 mt-md-0">
|
<h1 class="card-title my-2 mt-md-0">{{ post.title }}</h1>
|
||||||
{{ post.title }}
|
|
||||||
</h1>
|
|
||||||
|
|
||||||
<div class="card-text post-content mt-0 mb-2">
|
<div class="card-text content mt-0 mb-2">
|
||||||
<p>
|
<p>
|
||||||
{% include no-linenos.html content=post.content %}
|
{% include no-linenos.html content=post.content %}
|
||||||
{{ content | markdownify | strip_html | truncate: 200 | escape }}
|
{{ content | markdownify | strip_html | truncate: 200 | escape }}
|
||||||
|
@ -99,9 +96,13 @@ refactor: true
|
||||||
<!-- .post-meta -->
|
<!-- .post-meta -->
|
||||||
</div>
|
</div>
|
||||||
<!-- .card-body -->
|
<!-- .card-body -->
|
||||||
</div>
|
</a>
|
||||||
</a>
|
</article>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
{% endcapture %}
|
||||||
|
|
||||||
|
<div id="post-list" class="flex-grow-1 pe-xl-2">
|
||||||
|
{% include refactor-content.html content=content lang=lang %}
|
||||||
</div>
|
</div>
|
||||||
<!-- #post-list -->
|
<!-- #post-list -->
|
||||||
|
|
||||||
|
|
|
@ -2,69 +2,25 @@
|
||||||
layout: default
|
layout: default
|
||||||
---
|
---
|
||||||
|
|
||||||
{% include lang.html %}
|
{% capture _content %}
|
||||||
{% include origin-type.html %}
|
{% if layout.refactor or page.layout == 'page' %}
|
||||||
|
{% include refactor-content.html content=content lang=lang %}
|
||||||
|
{% else %}
|
||||||
|
{{ content }}
|
||||||
|
{% endif %}
|
||||||
|
{% endcapture %}
|
||||||
|
|
||||||
{% if layout.tail_includes %}
|
<article class="px-1">
|
||||||
{% assign has_tail = true %}
|
{% if page.layout == 'page' or page.collection == 'tabs' %}
|
||||||
{% endif %}
|
{% assign tab_key = page.title | downcase %}
|
||||||
|
{% assign title = site.data.locales[lang].tabs[tab_key] | default: page.title %}
|
||||||
<div class="row">
|
<h1 class="dynamic-title">
|
||||||
<!-- core -->
|
{{ title }}
|
||||||
<div id="core-wrapper" class="col-12 col-lg-11 col-xl-9 px-md-4">
|
</h1>
|
||||||
{% capture padding %}
|
<div class="content">
|
||||||
{% unless page.layout == 'home' %}px-1{% endunless %}
|
{{ _content }}
|
||||||
{% endcapture %}
|
|
||||||
|
|
||||||
<div class="post {{ padding | strip }} {% unless has_tail %} flex-grow-1 mb-5{% endunless %}">
|
|
||||||
{% capture _content %}
|
|
||||||
{% if layout.refactor or page.layout == 'page' %}
|
|
||||||
{% include refactor-content.html content=content lang=lang %}
|
|
||||||
{% else %}
|
|
||||||
{{ content }}
|
|
||||||
{% endif %}
|
|
||||||
{% endcapture %}
|
|
||||||
|
|
||||||
{% if page.layout == 'page' or page.collection == 'tabs' %}
|
|
||||||
{% assign tab_key = page.title | downcase %}
|
|
||||||
{% assign title = site.data.locales[lang].tabs[tab_key] | default: page.title %}
|
|
||||||
<h1 class="dynamic-title">
|
|
||||||
{{ title }}
|
|
||||||
</h1>
|
|
||||||
<div class="post-content">
|
|
||||||
{{ _content }}
|
|
||||||
</div>
|
|
||||||
{% else %}
|
|
||||||
{{ _content }}
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
{% else %}
|
||||||
<!-- #core-wrapper -->
|
{{ _content }}
|
||||||
|
{% endif %}
|
||||||
<!-- panel -->
|
</article>
|
||||||
<div id="panel-wrapper" class="col-xl-3 ps-2 text-muted">
|
|
||||||
<div class="access">
|
|
||||||
{% include_cached update-list.html lang=lang %}
|
|
||||||
{% include_cached trending-tags.html lang=lang %}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{% for _include in layout.panel_includes %}
|
|
||||||
{% assign _include_path = _include | append: '.html' %}
|
|
||||||
{% include {{ _include_path }} lang=lang %}
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<!-- tail -->
|
|
||||||
<div id="tail-wrapper" class="col-12 col-lg-11 col-xl-9 px-md-4{% if has_tail%} mt-5{% endif %}">
|
|
||||||
{% if has_tail %}
|
|
||||||
{% for _include in layout.tail_includes %}
|
|
||||||
{% assign _include_path = _include | append: '.html' %}
|
|
||||||
{% include {{ _include_path }} lang=lang %}
|
|
||||||
{% endfor %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% include_cached footer.html lang=lang %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
|
@ -11,9 +11,10 @@ tail_includes:
|
||||||
|
|
||||||
{% include lang.html %}
|
{% include lang.html %}
|
||||||
|
|
||||||
<h1 data-toc-skip>{{ page.title }}</h1>
|
<header>
|
||||||
|
<h1 data-toc-skip>{{ page.title }}</h1>
|
||||||
|
|
||||||
<div class="post-meta text-muted">
|
<div class="post-meta text-muted">
|
||||||
<!-- published date -->
|
<!-- published date -->
|
||||||
<span>
|
<span>
|
||||||
{{ site.data.locales[lang].post.posted }}
|
{{ site.data.locales[lang].post.posted }}
|
||||||
|
@ -22,99 +23,101 @@ tail_includes:
|
||||||
|
|
||||||
<!-- lastmod date -->
|
<!-- lastmod date -->
|
||||||
{% if page.last_modified_at and page.last_modified_at != page.date %}
|
{% if page.last_modified_at and page.last_modified_at != page.date %}
|
||||||
<span>
|
<span>
|
||||||
{{ site.data.locales[lang].post.updated }}
|
{{ site.data.locales[lang].post.updated }}
|
||||||
{% include datetime.html date=page.last_modified_at tooltip=true lang=lang %}
|
{% include datetime.html date=page.last_modified_at tooltip=true lang=lang %}
|
||||||
</span>
|
</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if page.image %}
|
{% if page.image %}
|
||||||
{% capture src %}src="{{ page.image.path | default: page.image }}"{% endcapture %}
|
{% capture src %}src="{{ page.image.path | default: page.image }}"{% endcapture %}
|
||||||
{% capture class %}class="preview-img{% if page.image.no_bg %}{{ ' no-bg' }}{% endif %}"{% endcapture %}
|
{% capture class %}class="preview-img{% if page.image.no_bg %}{{ ' no-bg' }}{% endif %}"{% endcapture %}
|
||||||
{% capture alt %}alt="{{ page.image.alt | xml_escape | default: "Preview Image" }}"{% endcapture %}
|
{% capture alt %}alt="{{ page.image.alt | xml_escape | default: "Preview Image" }}"{% endcapture %}
|
||||||
|
|
||||||
{% capture lqip %}
|
{% capture lqip %}
|
||||||
{% if page.image.lqip %}
|
{% if page.image.lqip %}
|
||||||
lqip="{{ page.image.lqip }}"
|
lqip="{{ page.image.lqip }}"
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endcapture %}
|
{% endcapture %}
|
||||||
|
|
||||||
<div class="mt-3 mb-3">
|
<div class="mt-3 mb-3">
|
||||||
<img {{ src }} {{ class }} {{ alt }} w="1200" h="630" {{ lqip | strip }}>
|
<img {{ src }} {{ class }} {{ alt }} w="1200" h="630" {{ lqip | strip }}>
|
||||||
{%- if page.image.alt -%}
|
{%- if page.image.alt -%}
|
||||||
<figcaption class="text-center pt-2 pb-2">{{ page.image.alt }}</figcaption>
|
<figcaption class="text-center pt-2 pb-2">{{ page.image.alt }}</figcaption>
|
||||||
{%- endif -%}
|
{%- endif -%}
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<div class="d-flex justify-content-between">
|
<div class="d-flex justify-content-between">
|
||||||
<!-- author(s) -->
|
<!-- author(s) -->
|
||||||
<span>
|
<span>
|
||||||
{% if page.author %}
|
{% if page.author %}
|
||||||
{% assign authors = page.author %}
|
{% assign authors = page.author %}
|
||||||
{% elsif page.authors %}
|
{% elsif page.authors %}
|
||||||
{% assign authors = page.authors %}
|
{% assign authors = page.authors %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{{ site.data.locales[lang].post.written_by }}
|
{{ site.data.locales[lang].post.written_by }}
|
||||||
|
|
||||||
<em>
|
<em>
|
||||||
{% if authors %}
|
{% if authors %}
|
||||||
{% for author in authors %}
|
{% for author in authors %}
|
||||||
<a href="{{ site.data.authors[author].url }}">{{ site.data.authors[author].name }}</a>
|
<a href="{{ site.data.authors[author].url }}">{{ site.data.authors[author].name }}</a>
|
||||||
{% unless forloop.last %}</em>, <em>{% endunless %}
|
{% unless forloop.last %}{{ '</em>, <em>' }}{% endunless %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% else %}
|
{% else %}
|
||||||
<a href="{{ site.social.links[0] }}">{{ site.social.name }}</a>
|
<a href="{{ site.social.links[0] }}">{{ site.social.name }}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</em>
|
</em>
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<div>
|
|
||||||
<!-- read time -->
|
<!-- read time -->
|
||||||
{% include read-time.html content=content prompt=true lang=lang %}
|
{% include read-time.html content=content prompt=true lang=lang %}
|
||||||
</div>
|
</div>
|
||||||
|
<!-- .d-flex -->
|
||||||
|
</div>
|
||||||
|
<!-- .post-meta -->
|
||||||
|
</header>
|
||||||
|
|
||||||
</div> <!-- .d-flex -->
|
<div class="content">
|
||||||
|
|
||||||
</div> <!-- .post-meta -->
|
|
||||||
|
|
||||||
<div class="post-content">
|
|
||||||
{{ content }}
|
{{ content }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="post-tail-wrapper text-muted">
|
<div class="post-tail-wrapper text-muted">
|
||||||
|
|
||||||
<!-- categories -->
|
<!-- categories -->
|
||||||
{% if page.categories.size > 0 %}
|
{% if page.categories.size > 0 %}
|
||||||
<div class="post-meta mb-3">
|
<div class="post-meta mb-3">
|
||||||
<i class="far fa-folder-open fa-fw me-1"></i>
|
<i class="far fa-folder-open fa-fw me-1"></i>
|
||||||
{% for category in page.categories %}
|
{% for category in page.categories %}
|
||||||
<a href='{{ site.baseurl }}/categories/{{ category | slugify | url_encode }}/'>{{ category }}</a>
|
<a href="{{ site.baseurl }}/categories/{{ category | slugify | url_encode }}/">{{ category }}</a>
|
||||||
{%- unless forloop.last -%}, {%- endunless -%}
|
{%- unless forloop.last -%},{%- endunless -%}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<!-- tags -->
|
<!-- tags -->
|
||||||
{% if page.tags.size > 0 %}
|
{% if page.tags.size > 0 %}
|
||||||
<div class="post-tags">
|
<div class="post-tags">
|
||||||
<i class="fa fa-tags fa-fw me-1"></i>
|
<i class="fa fa-tags fa-fw me-1"></i>
|
||||||
{% for tag in page.tags %}
|
{% for tag in page.tags %}
|
||||||
<a href="{{ site.baseurl }}/tags/{{ tag | slugify | url_encode }}/"
|
<a
|
||||||
class="post-tag no-text-decoration" >
|
href="{{ site.baseurl }}/tags/{{ tag | slugify | url_encode }}/"
|
||||||
{{- tag -}}
|
class="post-tag no-text-decoration"
|
||||||
</a>
|
>
|
||||||
|
{{- tag -}}
|
||||||
|
</a>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<div class="post-tail-bottom
|
<div
|
||||||
d-flex justify-content-between align-items-center mt-3 pt-5 pb-2">
|
class="
|
||||||
|
post-tail-bottom
|
||||||
|
d-flex justify-content-between align-items-center mt-5 pb-2
|
||||||
|
"
|
||||||
|
>
|
||||||
<div class="license-wrapper">
|
<div class="license-wrapper">
|
||||||
|
|
||||||
{% if site.data.locales[lang].copyright.license.template %}
|
{% if site.data.locales[lang].copyright.license.template %}
|
||||||
|
|
||||||
{% capture _replacement %}
|
{% capture _replacement %}
|
||||||
<a href="{{ site.data.locales[lang].copyright.license.link }}">
|
<a href="{{ site.data.locales[lang].copyright.license.link }}">
|
||||||
{{ site.data.locales[lang].copyright.license.name }}
|
{{ site.data.locales[lang].copyright.license.name }}
|
||||||
|
@ -122,12 +125,11 @@ tail_includes:
|
||||||
{% endcapture %}
|
{% endcapture %}
|
||||||
|
|
||||||
{{ site.data.locales[lang].copyright.license.template | replace: ':LICENSE_NAME', _replacement }}
|
{{ site.data.locales[lang].copyright.license.template | replace: ':LICENSE_NAME', _replacement }}
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% include post-sharing.html lang=lang %}
|
{% include post-sharing.html lang=lang %}
|
||||||
|
</div>
|
||||||
</div><!-- .post-tail-bottom -->
|
<!-- .post-tail-bottom -->
|
||||||
|
</div>
|
||||||
</div><!-- div.post-tail-wrapper -->
|
<!-- div.post-tail-wrapper -->
|
||||||
|
|
|
@ -11,12 +11,12 @@ layout: page
|
||||||
{{ page.title }}
|
{{ page.title }}
|
||||||
<span class="lead text-muted ps-2">{{ page.posts | size }}</span>
|
<span class="lead text-muted ps-2">{{ page.posts | size }}</span>
|
||||||
</h1>
|
</h1>
|
||||||
<ul class="post-content ps-0">
|
<ul class="content ps-0">
|
||||||
{% for post in page.posts %}
|
{% for post in page.posts %}
|
||||||
<li class="d-flex justify-content-between px-md-3">
|
<li class="d-flex justify-content-between px-md-3">
|
||||||
<a href="{{ post.url | relative_url }}">{{ post.title }}</a>
|
<a href="{{ post.url | relative_url }}">{{ post.title }}</a>
|
||||||
<span class="dash flex-grow-1"></span>
|
<span class="dash flex-grow-1"></span>
|
||||||
{% include datetime.html date=post.date wrap='span' class='text-muted small' lang=lang %}
|
{% include datetime.html date=post.date class='text-muted small text-nowrap' lang=lang %}
|
||||||
</li>
|
</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
@ -216,7 +216,7 @@ i {
|
||||||
position: sticky;
|
position: sticky;
|
||||||
}
|
}
|
||||||
|
|
||||||
> div {
|
> section {
|
||||||
padding-left: 1rem;
|
padding-left: 1rem;
|
||||||
border-left: 1px solid var(--main-border-color);
|
border-left: 1px solid var(--main-border-color);
|
||||||
|
|
||||||
|
@ -225,7 +225,7 @@ i {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content {
|
.content {
|
||||||
font-size: 0.9rem;
|
font-size: 0.9rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -233,6 +233,9 @@ i {
|
||||||
#panel-wrapper {
|
#panel-wrapper {
|
||||||
/* the headings */
|
/* the headings */
|
||||||
.panel-heading {
|
.panel-heading {
|
||||||
|
font-family: inherit;
|
||||||
|
line-height: inherit;
|
||||||
|
|
||||||
@include label(inherit);
|
@include label(inherit);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -367,7 +370,10 @@ i {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.post {
|
main {
|
||||||
|
line-height: 1.75;
|
||||||
|
min-height: calc(100vh - $topbar-height - $footer-height);
|
||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
margin-top: 2rem;
|
margin-top: 2rem;
|
||||||
margin-bottom: 1.5rem;
|
margin-bottom: 1.5rem;
|
||||||
|
@ -381,6 +387,14 @@ i {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.categories,
|
||||||
|
#tags,
|
||||||
|
#archives {
|
||||||
|
a:not(:hover) {
|
||||||
|
@extend %no-bottom-border;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-meta {
|
.post-meta {
|
||||||
|
@ -397,7 +411,7 @@ i {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content {
|
.content {
|
||||||
font-size: 1.08rem;
|
font-size: 1.08rem;
|
||||||
margin-top: 2rem;
|
margin-top: 2rem;
|
||||||
overflow-wrap: break-word;
|
overflow-wrap: break-word;
|
||||||
|
@ -479,7 +493,7 @@ i {
|
||||||
::marker {
|
::marker {
|
||||||
color: var(--text-muted-color);
|
color: var(--text-muted-color);
|
||||||
}
|
}
|
||||||
} /* .post-content */
|
} /* .content */
|
||||||
|
|
||||||
.tag:hover {
|
.tag:hover {
|
||||||
@extend %tag-hover;
|
@extend %tag-hover;
|
||||||
|
@ -738,6 +752,7 @@ $btn-mb: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.site-title {
|
.site-title {
|
||||||
|
font-family: inherit;
|
||||||
font-weight: 900;
|
font-weight: 900;
|
||||||
font-size: 1.75rem;
|
font-size: 1.75rem;
|
||||||
line-height: 1.2;
|
line-height: 1.2;
|
||||||
|
@ -894,7 +909,7 @@ $btn-mb: 0.5rem;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
|
|
||||||
.post-content {
|
.content {
|
||||||
margin-top: 2rem;
|
margin-top: 2rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -907,8 +922,7 @@ $btn-mb: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
#topbar {
|
#topbar {
|
||||||
/* icons */
|
button i {
|
||||||
i {
|
|
||||||
color: #999999;
|
color: #999999;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -937,11 +951,11 @@ $btn-mb: 0.5rem;
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#search-wrapper {
|
search {
|
||||||
display: flex;
|
display: flex;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
border-radius: 1rem;
|
border-radius: 1rem;
|
||||||
border: 1px solid var(--search-wrapper-border-color);
|
border: 1px solid var(--search-border-color);
|
||||||
background: var(--main-bg);
|
background: var(--main-bg);
|
||||||
padding: 0 0.5rem;
|
padding: 0 0.5rem;
|
||||||
|
|
||||||
|
@ -955,7 +969,6 @@ $btn-mb: 0.5rem;
|
||||||
/* 'Cancel' link */
|
/* 'Cancel' link */
|
||||||
#search-cancel {
|
#search-cancel {
|
||||||
color: var(--link-color);
|
color: var(--link-color);
|
||||||
margin-left: 0.75rem;
|
|
||||||
display: none;
|
display: none;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
|
|
||||||
|
@ -1035,7 +1048,7 @@ $btn-mb: 0.5rem;
|
||||||
line-height: 2.5rem;
|
line-height: 2.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
> div {
|
> article {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
||||||
&:not(:last-child) {
|
&:not(:last-child) {
|
||||||
|
@ -1073,19 +1086,6 @@ $btn-mb: 0.5rem;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
#core-wrapper {
|
|
||||||
line-height: 1.75;
|
|
||||||
min-height: calc(100vh - $topbar-height - $footer-height);
|
|
||||||
|
|
||||||
.categories,
|
|
||||||
#tags,
|
|
||||||
#archives {
|
|
||||||
a:not(:hover) {
|
|
||||||
@extend %no-bottom-border;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#mask {
|
#mask {
|
||||||
display: none;
|
display: none;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
|
@ -1108,7 +1108,7 @@ $btn-mb: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
#topbar-wrapper.row,
|
#topbar-wrapper.row,
|
||||||
#main > .row,
|
#main-wrapper > .container > .row,
|
||||||
#search-result-wrapper > .row {
|
#search-result-wrapper > .row {
|
||||||
@include ml-mr(0);
|
@include ml-mr(0);
|
||||||
}
|
}
|
||||||
|
@ -1204,10 +1204,8 @@ $btn-mb: 0.5rem;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@media all and (max-width: 576px) {
|
@media all and (max-width: 576px) {
|
||||||
#core-wrapper {
|
main {
|
||||||
min-height: calc(100vh - $topbar-height - $footer-height-large);
|
.content {
|
||||||
|
|
||||||
.post-content {
|
|
||||||
> blockquote[class^='prompt-'] {
|
> blockquote[class^='prompt-'] {
|
||||||
@include ml-mr(-1rem);
|
@include ml-mr(-1rem);
|
||||||
|
|
||||||
|
@ -1232,7 +1230,7 @@ $btn-mb: 0.5rem;
|
||||||
@extend %full-width;
|
@extend %full-width;
|
||||||
}
|
}
|
||||||
|
|
||||||
#main {
|
#main-wrapper > .container {
|
||||||
@extend %full-width;
|
@extend %full-width;
|
||||||
@include pl-pr(0);
|
@include pl-pr(0);
|
||||||
}
|
}
|
||||||
|
@ -1250,6 +1248,10 @@ $btn-mb: 0.5rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
main {
|
||||||
|
min-height: calc(100vh - $topbar-height - $footer-height-large);
|
||||||
|
}
|
||||||
|
|
||||||
footer {
|
footer {
|
||||||
@include slide;
|
@include slide;
|
||||||
|
|
||||||
|
@ -1283,7 +1285,7 @@ $btn-mb: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
#topbar,
|
#topbar,
|
||||||
#main {
|
#main-wrapper > .container {
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1292,7 +1294,7 @@ $btn-mb: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
#breadcrumb,
|
#breadcrumb,
|
||||||
#search-wrapper {
|
search {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1302,7 +1304,7 @@ $btn-mb: 0.5rem;
|
||||||
left: 0;
|
left: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#core-wrapper,
|
main,
|
||||||
#panel-wrapper {
|
#panel-wrapper {
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
}
|
}
|
||||||
|
@ -1313,7 +1315,7 @@ $btn-mb: 0.5rem;
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
#search-result-wrapper .post-content {
|
#search-result-wrapper .content {
|
||||||
letter-spacing: 0;
|
letter-spacing: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1324,7 +1326,7 @@ $btn-mb: 0.5rem;
|
||||||
h1.dynamic-title {
|
h1.dynamic-title {
|
||||||
display: none;
|
display: none;
|
||||||
|
|
||||||
~ .post-content {
|
~ .content {
|
||||||
margin-top: 2.5rem;
|
margin-top: 2.5rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1351,7 +1353,7 @@ $btn-mb: 0.5rem;
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#search-wrapper {
|
search {
|
||||||
max-width: $search-max-width;
|
max-width: $search-max-width;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1360,13 +1362,13 @@ $btn-mb: 0.5rem;
|
||||||
justify-content: start !important;
|
justify-content: start !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post {
|
main {
|
||||||
h1 {
|
h1 {
|
||||||
margin-top: 3rem;
|
margin-top: 3rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
div.post-content .table-wrapper > table {
|
div.content .table-wrapper > table {
|
||||||
min-width: 70%;
|
min-width: 70%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1383,7 +1385,7 @@ $btn-mb: 0.5rem;
|
||||||
|
|
||||||
/* Pad horizontal */
|
/* Pad horizontal */
|
||||||
@media all and (min-width: 992px) and (max-width: 1199px) {
|
@media all and (min-width: 992px) and (max-width: 1199px) {
|
||||||
#main .col-lg-11 {
|
#main-wrapper > .container .col-lg-11 {
|
||||||
flex: 0 0 96%;
|
flex: 0 0 96%;
|
||||||
max-width: 96%;
|
max-width: 96%;
|
||||||
}
|
}
|
||||||
|
@ -1410,7 +1412,7 @@ $btn-mb: 0.5rem;
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#main > div.row {
|
#main-wrapper > .container > div.row {
|
||||||
justify-content: center !important;
|
justify-content: center !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1418,7 +1420,7 @@ $btn-mb: 0.5rem;
|
||||||
/* --- desktop mode, both sidebar and panel are visible --- */
|
/* --- desktop mode, both sidebar and panel are visible --- */
|
||||||
|
|
||||||
@media all and (min-width: 1200px) {
|
@media all and (min-width: 1200px) {
|
||||||
#search-wrapper {
|
search {
|
||||||
margin-right: 4rem;
|
margin-right: 4rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1426,8 +1428,8 @@ $btn-mb: 0.5rem;
|
||||||
transition: all 0.3s ease-in-out;
|
transition: all 0.3s ease-in-out;
|
||||||
}
|
}
|
||||||
|
|
||||||
#search-results > div {
|
#search-results > article {
|
||||||
width: 46%;
|
width: 45%;
|
||||||
|
|
||||||
&:nth-child(odd) {
|
&:nth-child(odd) {
|
||||||
margin-right: 1.5rem;
|
margin-right: 1.5rem;
|
||||||
|
@ -1443,7 +1445,7 @@ $btn-mb: 0.5rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content {
|
.content {
|
||||||
font-size: 1.03rem;
|
font-size: 1.03rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1465,19 +1467,19 @@ $btn-mb: 0.5rem;
|
||||||
left: $sidebar-width-large;
|
left: $sidebar-width-large;
|
||||||
}
|
}
|
||||||
|
|
||||||
#search-wrapper {
|
search {
|
||||||
margin-right: calc(
|
margin-right: calc(
|
||||||
#{$main-content-max-width} * 0.25 - #{$search-max-width} - 0.75rem
|
#{$main-content-max-width} * 0.25 - #{$search-max-width} - 0.75rem
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#main {
|
#main-wrapper > .container {
|
||||||
max-width: $main-content-max-width;
|
max-width: $main-content-max-width;
|
||||||
padding-left: 1.75rem !important;
|
padding-left: 1.75rem !important;
|
||||||
padding-right: 1.75rem !important;
|
padding-right: 1.75rem !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
#core-wrapper,
|
main.col-12,
|
||||||
#tail-wrapper {
|
#tail-wrapper {
|
||||||
padding-right: 4.5rem !important;
|
padding-right: 4.5rem !important;
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
%section {
|
%section {
|
||||||
#core-wrapper & {
|
main & {
|
||||||
margin-top: 2.5rem;
|
margin-top: 2.5rem;
|
||||||
margin-bottom: 1.25rem;
|
margin-bottom: 1.25rem;
|
||||||
|
|
||||||
|
|
|
@ -149,7 +149,7 @@ div[class^='language-'] {
|
||||||
|
|
||||||
box-shadow: var(--language-border-color) 0 0 0 1px;
|
box-shadow: var(--language-border-color) 0 0 0 1px;
|
||||||
|
|
||||||
.post-content > & {
|
.content > & {
|
||||||
@include ml-mr(-1rem);
|
@include ml-mr(-1rem);
|
||||||
|
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
|
@ -258,7 +258,7 @@ div {
|
||||||
|
|
||||||
@media all and (min-width: 576px) {
|
@media all and (min-width: 576px) {
|
||||||
div[class^='language-'] {
|
div[class^='language-'] {
|
||||||
.post-content > & {
|
.content > & {
|
||||||
@include ml-mr(0);
|
@include ml-mr(0);
|
||||||
|
|
||||||
border-radius: $base-radius;
|
border-radius: $base-radius;
|
||||||
|
|
|
@ -10,7 +10,7 @@ $sidebar-width-large: 300px !default; /* screen width: >= 1650px */
|
||||||
/* other framework sizes */
|
/* other framework sizes */
|
||||||
|
|
||||||
$topbar-height: 3rem !default;
|
$topbar-height: 3rem !default;
|
||||||
$search-max-width: 210px !default;
|
$search-max-width: 200px !default;
|
||||||
$footer-height: 5rem !default;
|
$footer-height: 5rem !default;
|
||||||
$footer-height-large: 6rem !default; /* screen width: < 850px */
|
$footer-height-large: 6rem !default; /* screen width: < 850px */
|
||||||
$main-content-max-width: 1250px !default;
|
$main-content-max-width: 1250px !default;
|
||||||
|
|
|
@ -48,7 +48,7 @@
|
||||||
/* Topbar */
|
/* Topbar */
|
||||||
--topbar-bg: rgb(27, 27, 30, 0.64);
|
--topbar-bg: rgb(27, 27, 30, 0.64);
|
||||||
--topbar-text-color: var(--text-color);
|
--topbar-text-color: var(--text-color);
|
||||||
--search-wrapper-border-color: rgb(55, 55, 55);
|
--search-border-color: rgb(55, 55, 55);
|
||||||
--search-icon-color: rgb(100, 102, 105);
|
--search-icon-color: rgb(100, 102, 105);
|
||||||
--input-focus-border-color: rgb(112, 114, 115);
|
--input-focus-border-color: rgb(112, 114, 115);
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,7 @@
|
||||||
/* Topbar */
|
/* Topbar */
|
||||||
--topbar-bg: rgb(255, 255, 255, 0.7);
|
--topbar-bg: rgb(255, 255, 255, 0.7);
|
||||||
--topbar-text-color: rgb(78, 78, 78);
|
--topbar-text-color: rgb(78, 78, 78);
|
||||||
--search-wrapper-border-color: rgb(240, 240, 240);
|
--search-border-color: rgb(240, 240, 240);
|
||||||
--search-icon-color: #c2c6cc;
|
--search-icon-color: #c2c6cc;
|
||||||
--input-focus-border-color: #b8b8b8;
|
--input-focus-border-color: #b8b8b8;
|
||||||
|
|
||||||
|
|
|
@ -32,11 +32,6 @@
|
||||||
|
|
||||||
font-size: 1.1rem;
|
font-size: 1.1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* post's date */
|
|
||||||
> span:last-child {
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
#post-list {
|
#post-list {
|
||||||
margin-top: 2rem;
|
margin-top: 2rem;
|
||||||
|
|
||||||
a.card-wrapper {
|
.card-wrapper {
|
||||||
display: block;
|
display: block;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
|
@ -51,7 +51,7 @@
|
||||||
color: var(--text-muted-color) !important;
|
color: var(--text-muted-color) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-text.post-content {
|
.card-text.content {
|
||||||
@extend %muted;
|
@extend %muted;
|
||||||
|
|
||||||
p {
|
p {
|
||||||
|
|
|
@ -47,13 +47,16 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
h1 + .post-meta {
|
h1 + .post-meta {
|
||||||
span + span::before {
|
> span + span::before {
|
||||||
@include dot;
|
@include dot;
|
||||||
}
|
}
|
||||||
|
|
||||||
em {
|
em,
|
||||||
|
time {
|
||||||
color: var(--text-color);
|
color: var(--text-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
em {
|
||||||
a {
|
a {
|
||||||
color: inherit;
|
color: inherit;
|
||||||
}
|
}
|
||||||
|
@ -165,9 +168,6 @@ h1 + .post-meta {
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-navigation {
|
.post-navigation {
|
||||||
padding-top: 3rem;
|
|
||||||
padding-bottom: 4rem;
|
|
||||||
|
|
||||||
.btn {
|
.btn {
|
||||||
@extend %btn-post-nav;
|
@extend %btn-post-nav;
|
||||||
|
|
||||||
|
@ -198,7 +198,7 @@ h1 + .post-meta {
|
||||||
color: var(--text-muted-color);
|
color: var(--text-muted-color);
|
||||||
font-size: 0.65rem;
|
font-size: 0.65rem;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
content: attr(prompt);
|
content: attr(aria-label);
|
||||||
}
|
}
|
||||||
|
|
||||||
&:first-child {
|
&:first-child {
|
||||||
|
@ -326,7 +326,7 @@ h1 + .post-meta {
|
||||||
@include label(1.1rem, 600);
|
@include label(1.1rem, 600);
|
||||||
}
|
}
|
||||||
|
|
||||||
em {
|
time {
|
||||||
@extend %normal-font-style;
|
@extend %normal-font-style;
|
||||||
|
|
||||||
color: var(--text-muted-color);
|
color: var(--text-muted-color);
|
||||||
|
@ -353,8 +353,12 @@ h1 + .post-meta {
|
||||||
#tail-wrapper {
|
#tail-wrapper {
|
||||||
min-height: 2rem;
|
min-height: 2rem;
|
||||||
|
|
||||||
> div:last-of-type {
|
> *:not(:last-child) {
|
||||||
margin-bottom: 2rem;
|
margin-top: 3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
> *:nth-last-child(2) {
|
||||||
|
margin-bottom: 3rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* stylelint-disable-next-line selector-id-pattern */
|
/* stylelint-disable-next-line selector-id-pattern */
|
||||||
|
@ -391,7 +395,7 @@ h1 + .post-meta {
|
||||||
}
|
}
|
||||||
|
|
||||||
@media all and (max-width: 768px) {
|
@media all and (max-width: 768px) {
|
||||||
.post-content > p > img {
|
.content > p > img {
|
||||||
max-width: calc(100% + 1rem);
|
max-width: calc(100% + 1rem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,4 @@ redirect_from:
|
||||||
|
|
||||||
{% include lang.html %}
|
{% include lang.html %}
|
||||||
|
|
||||||
<div class="lead">
|
<p class="lead">{{ site.data.locales[lang].not_found.statment }}</p>
|
||||||
<p>{{ site.data.locales[lang].not_found.statment }}</p>
|
|
||||||
</div>
|
|
||||||
|
|
Loading…
Reference in a new issue