a new start
This commit is contained in:
8
_includes/components/about.html
Normal file
8
_includes/components/about.html
Normal file
@@ -0,0 +1,8 @@
|
||||
{% assign author = site.data.authors[include.author] | default:site.data.authors.first[1] | default:site.author %}
|
||||
|
||||
{% if author.about %}
|
||||
<aside class="about related mt4 mb4" role="complementary">
|
||||
{% assign about_heading = site.data.strings.about | default:"About" %}
|
||||
{% include components/author.html author=author heading=about_heading heading_tag='h2' %}
|
||||
</aside>
|
||||
{% endif %}
|
||||
24
_includes/components/author.html
Normal file
24
_includes/components/author.html
Normal file
@@ -0,0 +1,24 @@
|
||||
{% assign plugins = site.plugins | default:site.gems %}
|
||||
|
||||
<div class="author mt4">
|
||||
{% assign author = include.author %}
|
||||
|
||||
{% if author.picture %}
|
||||
{% include_cached components/hy-img.html class="avatar" img=author.picture alt=author.name width="120" height="120" %}
|
||||
{% elsif plugins contains 'jekyll-avatar' %}
|
||||
{% assign avatar = author.social.github | default:author.github.username | default:author.github %}
|
||||
{% include components/avatar-tag.html user=avatar %}
|
||||
{% endif %}
|
||||
|
||||
{% assign heading_tag = include.heading_tag | default:'h2' %}
|
||||
{% assign heading_id = include.heading_id %}
|
||||
<{{ heading_tag }} {% if heading_id %}id="{{ heading_id }}"{% endif %} class="page-title hr-bottom">
|
||||
{{ include.heading | default:author.name }}
|
||||
</{{ heading_tag }}>
|
||||
|
||||
{{ author.about | markdownify }}
|
||||
|
||||
<div class="sidebar-social">
|
||||
{% include components/social.html author=author %}
|
||||
</div>
|
||||
</div>
|
||||
4
_includes/components/avatar-tag.html
Normal file
4
_includes/components/avatar-tag.html
Normal file
@@ -0,0 +1,4 @@
|
||||
{% comment %}<!--
|
||||
Including `avatar` in a partial prevents a parse error when `jekyll-avatar` is not included.
|
||||
-->{% endcomment %}
|
||||
{% avatar user=include.user size=128 %}
|
||||
7
_includes/components/dark-mode.html
Normal file
7
_includes/components/dark-mode.html
Normal file
@@ -0,0 +1,7 @@
|
||||
{% if site.pivoine.dark_mode.dynamic %}
|
||||
<script>
|
||||
window._sunrise = {{ site.pivoine.dark_mode.sunrise | default:"6" }};
|
||||
window._sunset = {{ site.pivoine.dark_mode.sunset | default:"18" }};
|
||||
{% include scripts/dark-mode.min.js %}
|
||||
</script>
|
||||
{% endif %}
|
||||
6
_includes/components/dingbat.html
Normal file
6
_includes/components/dingbat.html
Normal file
@@ -0,0 +1,6 @@
|
||||
{% if site.clap_button %}
|
||||
<clap-button class="mb6" {% if include.hidden == true %}hidden{% endif %}></clap-button>
|
||||
{% if include.hidden == true %}<hr class="dingbat related mb6" />{% endif %}
|
||||
{% else %}
|
||||
<hr class="dingbat related mb6" />
|
||||
{% endif %}
|
||||
29
_includes/components/hy-img.html
Normal file
29
_includes/components/hy-img.html
Normal file
@@ -0,0 +1,29 @@
|
||||
{% assign sources = '' %}
|
||||
{% if include.img.src or include.img.path %}
|
||||
{% assign srcset = null %}
|
||||
|
||||
{% if include.img.srcset %}
|
||||
{% capture srcset %}{% for hash in include.img.srcset %}{% assign tmp = hash[1] %}{% include_cached smart-url url=tmp %} {{ hash[0] }}{% unless forloop.last %},{% endunless %}{% endfor %}{% endcapture %}
|
||||
{% endif %}
|
||||
|
||||
{% assign src = include.img.src | default:include.img.path %}
|
||||
{% capture sources %}
|
||||
src="{% include_cached smart-url url=src %}"
|
||||
{% if srcset %}srcset="{{ srcset | strip }}"{% endif %}
|
||||
{% if include.sizes %}sizes="{{ include.sizes | replace:' ', '' }}"{% endif %}
|
||||
{% endcapture %}
|
||||
{% else %}
|
||||
{% capture sources %}
|
||||
src="{% include_cached smart-url url=include.img %}"
|
||||
{% endcapture %}
|
||||
{% endif %}
|
||||
|
||||
<img
|
||||
{{ sources }}
|
||||
{% if include.alt %}alt="{{ include.alt }}"{% endif %}
|
||||
{% if include.class %}class="{{ include.class }}"{% endif %}
|
||||
{% if include.property %}property="{{ include.property }}"{% endif %}
|
||||
{% if include.width %}width="{{ include.width }}"{% endif %}
|
||||
{% if include.height %}height="{{ include.height }}"{% endif %}
|
||||
{% if include.width and include.height %}loading="lazy"{% endif %}
|
||||
/>
|
||||
3
_includes/components/iframe.html
Normal file
3
_includes/components/iframe.html
Normal file
@@ -0,0 +1,3 @@
|
||||
{% assign src = include.iframe.src | default:include.iframe.path %}
|
||||
|
||||
<iframe src="{% include_cached smart-url url=src %}" width="100%" frameborder="no" scrolling="no" allowfullscreen="true" style="width: 100%; aspect-ratio: calc(16/9);"></iframe>
|
||||
12
_includes/components/link.html
Normal file
12
_includes/components/link.html
Normal file
@@ -0,0 +1,12 @@
|
||||
{% if include.href.size > 0 %}
|
||||
<a
|
||||
class="{{ include.class }} {{ include.a_class }}"
|
||||
href="{{ include.href }}"
|
||||
{% if include.rel %}rel="{{ include.rel }}"{% endif %}
|
||||
{% if include.property %}property="{{ include.property }}"{% endif %}
|
||||
>
|
||||
{{- include.title -}}
|
||||
</a>
|
||||
{% else %}
|
||||
<span class="{{ include.class }} {{ include.span_class }}">{{ include.title }}</span>
|
||||
{% endif %}
|
||||
14
_includes/components/message.html
Normal file
14
_includes/components/message.html
Normal file
@@ -0,0 +1,14 @@
|
||||
{% assign alt = include.alt %}
|
||||
{% unless alt %}{% capture alt %}<div class="hr pb0"></div>{% endcapture %}{% endunless %}
|
||||
|
||||
{% if include.text.size > 0 %}
|
||||
{% unless include.hide %}
|
||||
<p class="{{ include.class | default:'note-sm' }}" {% if include.property %}property="{{ include.property }}"{% endif %}>
|
||||
{{ include.text | markdownify | replace:"<p>","" | replace:"</p>","" }}
|
||||
</p>
|
||||
{% else %}
|
||||
{{ alt }}
|
||||
{% endunless %}
|
||||
{% else %}
|
||||
{{ alt }}
|
||||
{% endif %}
|
||||
15
_includes/components/pagination.html
Normal file
15
_includes/components/pagination.html
Normal file
@@ -0,0 +1,15 @@
|
||||
<h2 class="sr-only">{{ site.data.strings.pagination | default:"Pagination" }}</h2>
|
||||
<nav class="pagination heading clearfix" role="navigation">
|
||||
<ul>
|
||||
<li class="pagination-item older" >
|
||||
{% assign next_title = site.data.strings.older | default:"Older" %}
|
||||
{% assign next_href = paginator.next_page_path | relative_url %}
|
||||
{% include components/link.html rel="next" title=next_title href=next_href %}
|
||||
</li>
|
||||
<li class="pagination-item newer" >
|
||||
{% assign prev_title = site.data.strings.newer | default:"Newer" %}
|
||||
{% assign prev_href = paginator.previous_page_path | relative_url %}
|
||||
{% include components/link.html rel="prev" title=prev_title href=prev_href %}
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
7
_includes/components/post-list-item.html
Normal file
7
_includes/components/post-list-item.html
Normal file
@@ -0,0 +1,7 @@
|
||||
{% assign post = include.post %}
|
||||
{% assign format = include.format | default:site.data.strings.date_formats.related_post | default:"%d %b %Y" %}
|
||||
|
||||
<li class="h4">
|
||||
<a href="{{ post.url | relative_url }}" class="flip-title"><span>{{ post.title }}</span></a>
|
||||
<time class="faded fine" datetime="{{ post.date | date_to_xmlschema }}">{{ post.date | date:format }}</time>
|
||||
</li>
|
||||
102
_includes/components/post.html
Normal file
102
_includes/components/post.html
Normal file
@@ -0,0 +1,102 @@
|
||||
{% assign post = include.post %} {% assign no_link_title = include.no_link_title %} {% assign no_excerpt =
|
||||
include.no_excerpt %} {% assign hide_image = include.hide_image %} {% assign hide_description = include.hide_description
|
||||
%} {% assign show_gallery = include.show_gallery %} {% assign show_video = include.show_video %} {% assign show_iframe =
|
||||
include.show_iframe %} {% assign hide_dates = include.hide_dates | default:site.pivoine.hide_dates %} {% assign
|
||||
hide_posted_in = include.hide_posted_in %}
|
||||
|
||||
<article id="post{{ post.id | replace:'/','-' }}" class="page post mb6" role="article">
|
||||
<header>
|
||||
<h1 class="post-title flip-project-title">
|
||||
{% unless no_link_title %}<a href="{{ post.url | relative_url }}" class="flip-title"
|
||||
>{% endunless %} {{ post.title }} {% unless no_link_title %}</a
|
||||
>{% endunless %}
|
||||
</h1>
|
||||
|
||||
{%- unless hide_posted_in -%}
|
||||
<div class="post-date">
|
||||
{% capture foobar %} {%- unless hide_dates -%} {%- assign post_format = site.data.strings.date_formats.post |
|
||||
default:"%d %b %Y" -%}
|
||||
<time datetime="{{ post.date | date_to_xmlschema }}">{{ post.date | date:post_format }}</time>
|
||||
{%- else -%} {{- site.data.strings.posted | default:"Posted" -}} {%- endunless -%} {{ ' ' }} {%- assign
|
||||
category_start = site.data.strings.category_start | default:"in " -%} {%- assign category_separator =
|
||||
site.data.strings.category_separator | default:" / " -%} {%- include components/tag-list.html tags=post.categories
|
||||
meta=site.featured_categories start_with=category_start separator=category_separator -%} {{ ' ' }} {%- assign
|
||||
tag_start = site.data.strings.tag_start | default:"on " -%} {%- assign tag_separator =
|
||||
site.data.strings.tag_separator | default:", " -%} {%- include components/tag-list.html tags=post.tags
|
||||
meta=site.featured_tags start_with=tag_start separator=tag_separator -%} {% endcapture %}
|
||||
<span class="ellipsis mr1"> {{ foobar }} </span>
|
||||
{% unless hide_dates or site.pivoine.hide_last_modified or post.hide_last_modified %} {% if post.last_modified_at
|
||||
%} {% assign d1 = post.date | date:"%Y-%m-%d" %} {% assign d2 = post.last_modified_at | date:"%Y-%m-%d" %} {% if
|
||||
d1 != d2 %} {% assign label = site.data.strings.last_modified_at | default:"Last modified at" %} {% assign
|
||||
last_modified_at_format = site.data.strings.date_formats.last_modified_at | default:"%Y-%m-%d" %}
|
||||
<span
|
||||
class="ellipsis"
|
||||
data-tippy-content="{{ label }}{{ site.data.strings.colon }} {{ post.last_modified_at | date:post_format }}"
|
||||
>
|
||||
<span class="sr-only">{{ label }}{{ site.data.strings.colon }}</span>
|
||||
<span class="{{ site.data.strings.last_modified_icon | default:'icon-history' }}"></span>
|
||||
<time datetime="{{ post.last_modified_at | date_to_xmlschema }}"
|
||||
>{{ post.last_modified_at | date:last_modified_at_format }}</time
|
||||
>
|
||||
</span>
|
||||
{% endif %} {% endif %} {% endunless %}
|
||||
</div>
|
||||
{%- endunless -%} {% assign alt = false %} {% unless hide_image %}{% if post.image %} {% unless no_link_title %}<a
|
||||
href="{{ post.url | relative_url }}"
|
||||
class="no-hover no-print-link {% unless post.hide_image %}flip-project{% endunless %}"
|
||||
tabindex="-1"
|
||||
>{% endunless %}
|
||||
<div class="img-wrapper lead aspect-ratio flip-project-img {% unless no_link_title %}sixteen-nine{% endunless %}">
|
||||
<div>
|
||||
{% if show_video %} {% include_cached components/video.html video=post.video poster=post.image %} {% elsif
|
||||
show_iframe %} {% include_cached components/iframe.html iframe=post.iframe %} {% else %} {% include_cached
|
||||
components/hy-img.html img=post.image alt=post.title %} {% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% unless no_link_title %}</a
|
||||
>{% endunless %} {% assign alt = '' %} {% endif %}{% endunless %} {% include components/message.html
|
||||
text=post.description hide=hide_description alt=alt %}
|
||||
</header>
|
||||
|
||||
{% if no_excerpt %} {% if post.gallery %}
|
||||
<div class="gallery-wrapper lead">
|
||||
{% for image in post.gallery %}
|
||||
<a class="gallery-item" href="{{ image | relative_url }}" data-fslightbox target="_blank">
|
||||
{% if post.video_gallery %} {% assign i = image | replace: "mp4", "webp" %} {% include_cached
|
||||
components/hy-img.html img=i alt=post.title %} {% else %} {% include_cached components/hy-img.html img=image
|
||||
alt=post.title %} {% endif %}
|
||||
</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %} {% if post.sound %} {% assign sounds = site.data.sounds | where: 'slug', page.sound %}
|
||||
<div class="sound-wrapper" data-featured="{{ sounds.first | jsonify | escape }}">
|
||||
<table class="stretch-table dl-table">
|
||||
<tbody>
|
||||
{% for track in sounds.first.tracks %}
|
||||
<tr>
|
||||
<td style="text-align: left">
|
||||
<a class="sound-item" href="/assets/sounds/{{ page.sound }}/{{ track }}" target="_blank">
|
||||
{{ sounds.first.artist }} - {{ track | replace: ".mp3", "" }}
|
||||
</a>
|
||||
</td>
|
||||
<td style="text-align: right">
|
||||
<a download href="/assets/sounds/{{ page.sound }}/{{ track }}" target="_blank">
|
||||
{{ site.data.strings.download }}
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{% endif %} {{ post.content }} {% else %} {% capture post_title %}<a
|
||||
class="heading flip-title"
|
||||
href="{{ post.url | relative_url }}"
|
||||
>{{ post.title }}</a
|
||||
>{% endcapture %} {% assign text = site.data.strings.continue_reading | default:"Continue reading
|
||||
<!--post_title-->" %}
|
||||
<footer>
|
||||
<p class="read-more">{{ text | replace:"<!--post_title-->", post_title }}</p>
|
||||
</footer>
|
||||
{% endif %}
|
||||
</article>
|
||||
35
_includes/components/related-posts.html
Normal file
35
_includes/components/related-posts.html
Normal file
@@ -0,0 +1,35 @@
|
||||
{% assign post = page %}
|
||||
|
||||
{% if page.related_posts %}
|
||||
{% if major >= 4 and minor >= 1 %}
|
||||
{% assign related_posts = site.posts | where_exp:"post", "page.related_posts contains post.path or page.related_posts contains post.url" %}
|
||||
{% else %}
|
||||
{% assign related_posts_1 = site.posts | where_exp:"post", "page.related_posts contains post.path" %}
|
||||
{% assign related_posts_2 = site.posts | where_exp:"post", "page.related_posts contains post.url" %}
|
||||
{% assign related_posts = related_posts_1 | concat:related_posts_2 %}
|
||||
{% endif %}
|
||||
{% elsif site.pivoine.use_lsi or site.use_lsi %}
|
||||
{% assign related_posts = site.related_posts %}
|
||||
{% elsif post.categories.first %}
|
||||
{% assign related_posts = site.categories[post.categories.first] | where_exp:"post", "post.url != page.url" %}
|
||||
{% elsif post.tags.first %}
|
||||
{% assign related_posts = site.tags[post.tags.first] | where_exp:"post", "post.url != page.url" %}
|
||||
{% else %}
|
||||
{% assign related_posts = site.related_posts %}
|
||||
{% endif %}
|
||||
|
||||
{% if related_posts.size > 0 %}
|
||||
<aside class="related mb4" role="complementary">
|
||||
<h2 class="hr-bottom">{{ site.data.strings.related_posts | default:"Related Posts" }}</h2>
|
||||
|
||||
<ul class="related-posts">
|
||||
{% for post in related_posts limit:3 %}
|
||||
{% if post %}
|
||||
{% include_cached components/post-list-item.html post=post %}
|
||||
{% else %}
|
||||
<li>Post with path <code>{{ post_path }}</code> not found.</li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</aside>
|
||||
{% endif %}
|
||||
40
_includes/components/social-list-item.html
Normal file
40
_includes/components/social-list-item.html
Normal file
@@ -0,0 +1,40 @@
|
||||
{% assign platform = include.platform | downcase %}
|
||||
{% assign username = include.username %}
|
||||
|
||||
{% if username.size > 0 %}
|
||||
{% assign = data_social = site.data.social[platform] | default:site.data_social[platform] %}
|
||||
|
||||
{% assign name = data_social.name | default:include.platform %}
|
||||
{% assign icon = data_social.icon | default:'icon-link' %}
|
||||
{% assign app = data_social.append %}
|
||||
{% assign prep = data_social.prepend %}
|
||||
|
||||
{% unless data_social %}
|
||||
{% if platform == "email" %}
|
||||
{% assign name = "Email" %}
|
||||
{% assign icon = "icon-mail" %}
|
||||
{% assign prep = "mailto:" %}
|
||||
{% elsif platform == "twitter" %}
|
||||
{% assign name = "Twitter" %}
|
||||
{% assign icon = "icon-twitter" %}
|
||||
{% assign prep = "https://twitter.com/" %}
|
||||
{% elsif platform == "github" %}
|
||||
{% assign name = "GitHub" %}
|
||||
{% assign icon = "icon-github" %}
|
||||
{% assign prep = "https://github.com/" %}
|
||||
{% endif %}
|
||||
{% endunless %}
|
||||
|
||||
{% if username contains "//" or username contains "mailto:" %}
|
||||
{% assign url = username %}
|
||||
{% else %}
|
||||
{% assign url = username | prepend:prep | append:app %}
|
||||
{% endif %}
|
||||
|
||||
<li>
|
||||
<a href="{{ url }}" title="{{ name }}" class="no-mark-external">
|
||||
<span class="{{ icon }}"></span>
|
||||
<span class="sr-only">{{ name }}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
23
_includes/components/social.html
Normal file
23
_includes/components/social.html
Normal file
@@ -0,0 +1,23 @@
|
||||
<span class="sr-only">{{ site.data.strings.social | default:"Social" }}{{ site.data.strings.colon }}</span>
|
||||
<ul>
|
||||
{% if include.author.social %}
|
||||
{% for link in include.author.social %}
|
||||
{% include components/social-list-item.html platform=link.first username=link.last %}
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
{% assign twitter_username = author.twitter.username | default: author.twitter | default:site.twitter.username | default:site.twitter | default:site.twitter_username %}
|
||||
{% if twitter_username %}
|
||||
{% include components/social-list-item.html platform="twitter" username=twitter_username %}
|
||||
{% endif %}
|
||||
|
||||
{% assign github_username = author.github.username | default: author.github | default:site.github.username | default:site.github | default:site.github_username %}
|
||||
{% if github_username %}
|
||||
{% include components/social-list-item.html platform="github" username=github_username %}
|
||||
{% endif %}
|
||||
|
||||
{% assign email = author.email | default: site.email %}
|
||||
{% if email %}
|
||||
{% include components/social-list-item.html platform="email" username=email %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</ul>
|
||||
30
_includes/components/tag-list.html
Normal file
30
_includes/components/tag-list.html
Normal file
@@ -0,0 +1,30 @@
|
||||
{%- assign tags = include.tags -%}
|
||||
{%- assign meta = include.meta -%}
|
||||
{%- assign start_with = include.start_with -%}
|
||||
{%- assign separator = include.separator -%}
|
||||
{%- assign end_with = include.end_with -%}
|
||||
|
||||
{%- assign content = '' -%}
|
||||
|
||||
{%- if tags.size > 0 -%}
|
||||
{%- assign content = start_with -%}
|
||||
{%- for tag_slug in tags -%}
|
||||
{%- capture iter_separator -%}{% if forloop.last %}{{ end_with }}{% else %}{{ separator }}{% endif %}{%- endcapture -%}
|
||||
|
||||
{%- if major >= 4 and minor >= 1 %}
|
||||
{%- assign tag = meta | find: "slug", tag_slug -%}
|
||||
{%- else -%}
|
||||
{%- assign tag = meta | where: "slug", tag_slug | first -%}
|
||||
{%- endif -%}
|
||||
|
||||
{%- if tag -%}
|
||||
{%- capture content_temp -%}{{ content }}<a href="{{ tag.url | relative_url }}" class="flip-title">{{ tag.title }}</a>{{ iter_separator }}{%- endcapture -%}
|
||||
{%- else -%}
|
||||
{%- capture content_temp -%}{{ content }}<span>{{ tag_slug | capitalize }}</span>{{ iter_separator }}{%- endcapture -%}
|
||||
{%- endif -%}
|
||||
|
||||
{%- assign content = content_temp -%}
|
||||
{%- endfor -%}
|
||||
{%- endif -%}
|
||||
|
||||
{{- content -}}
|
||||
31
_includes/components/video.html
Normal file
31
_includes/components/video.html
Normal file
@@ -0,0 +1,31 @@
|
||||
{% assign src = include.video.src | include.video.path | default:include.video %}
|
||||
{% assign poster = include.video.poster | default:include.poster %}
|
||||
|
||||
<media-controller>
|
||||
<video
|
||||
slot="media"
|
||||
src="{% include_cached smart-url url=src %}"
|
||||
{% if poster %}poster="{% include_cached smart-url url=poster %}"{% endif %}
|
||||
{% if include.video.class %}class="{{ include.video.class }}"{% endif %}
|
||||
{% if include.video.property %}property="{{ include.video.property }}"{% endif %}
|
||||
{% if include.video.width %}width="{{ include.video.width }}"{% endif %}
|
||||
{% if include.video.height %}height="{{ include.video.height }}"{% endif %}
|
||||
{% if include.video.width and include.video.height %}loading="lazy"{% endif %}
|
||||
{% if include.video.autoplay %}autoplay{% endif %}
|
||||
{% if include.video.loop %}loop{% endif %}
|
||||
{% if include.video.muted %}muted{% endif %}
|
||||
{% if include.video.preload %}preload="{{ include.video.preload }}"{% endif %}
|
||||
{% if include.video.crossorigin %}crossorigin="{{ include.video.crossorigin }}"{% endif %}
|
||||
></video>
|
||||
<media-loading-indicator slot="centered-chrome" noautohide></media-loading-indicator>
|
||||
<media-control-bar>
|
||||
<media-play-button></media-play-button>
|
||||
<media-mute-button></media-mute-button>
|
||||
<media-volume-range></media-volume-range>
|
||||
<media-time-display></media-time-display>
|
||||
<media-time-range></media-time-range>
|
||||
<media-duration-display></media-duration-display>
|
||||
<media-playback-rate-button></media-playback-rate-button>
|
||||
<media-fullscreen-button></media-fullscreen-button>
|
||||
</media-control-bar>
|
||||
</media-controller>
|
||||
Reference in New Issue
Block a user