a new start

This commit is contained in:
2025-10-25 12:39:30 +02:00
commit c97cadef78
726 changed files with 454051 additions and 0 deletions

View 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 %}

View 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>

View 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 %}

View 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 %}

View 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 %}

View 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 %}
/>

View 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>

View 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 %}

View 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 %}

View 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>

View 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>

View 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>

View 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 %}

View 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 %}

View 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>

View 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 -}}

View 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>