Set up Vento templates

This commit is contained in:
Leilukin 2025-05-04 20:28:42 +08:00
parent 788f930622
commit fbf8f5df73
104 changed files with 873 additions and 951 deletions

View File

@ -1,5 +1,5 @@
--- ---
layout: global/root layout: layouts/root
title: "404: Page Not Found" title: "404: Page Not Found"
h1: "404: Page Not Found" h1: "404: Page Not Found"
eleventyExcludeFromCollections: true eleventyExcludeFromCollections: true

View File

@ -25,6 +25,9 @@ export default function(eleventyConfig) {
return array.slice(0, maximum); return array.slice(0, maximum);
}); });
// Filter: Collection item count
eleventyConfig.addFilter("itemCount", (array) => array.length() );
// Filter: Thousands separator // Filter: Thousands separator
eleventyConfig.addFilter("thousands", function(num) { eleventyConfig.addFilter("thousands", function(num) {
return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");

View File

@ -1,19 +0,0 @@
{%- css %}{% include "src/assets/css/asummersend.css" %}{%- endcss %}
{% extends "global/baselayout.html" %}
{% block metaTitle %}
<meta property="og:title" content="{{ title + ' | ' if title }}A Summers End — Hong Kong 1986 Shrine">
{% endblock %}
{% block pageTitle %}
{{ title + " | " if title }}A Summers End — Hong Kong 1986 Shrine | {{ sitemeta.siteName | safe }}
{% endblock %}
{% block favicon %}
<link rel="icon" type="image/x-icon" href="/assets/shrines/asummersend/images/favicon.ico">
{% endblock %}
{% block hero %}{% include "asummersend/hero.html" %}{% endblock %}
{% block navbar %}{% include "asummersend/navbar.html" %}{% endblock %}
{% block footer %}{% include "asummersend/footer.html" %}{% endblock %}

View File

@ -1,7 +0,0 @@
---
layout: asummersend/base
---
{% extends "global/content.html" %}
{% block shrineInfo %}{% include "asummersend/shrineinfo.html" %}{% endblock %}

View File

@ -1,6 +0,0 @@
{% extends "global/footer.html" %}
{% block footerContent %}
<p>Made with ♥ by {{ sitemeta.siteAuthor.name }} • Shrine Launched: 16 February 2023</p>
{% endblock %}

View File

@ -1,46 +0,0 @@
{% extends "global/hero.html" %}
{% block heroImg %}
<picture>
<source srcset="/assets/shrines/asummersend/images/asummersend-header-320.avif" media="(orientation: landscape)" />
<img src="/assets/shrines/asummersend/images/asummersend-header.avif" alt="Banner of A Summers End — Hong Kong 1986 Shrine" />
</picture>
{% endblock %}
{% block eventScript %}
const todayEvent = getTodayEvent();
if (todayEvent) {
heroTopBarEl.classList.remove('hidden');
heroTopBarEl.innerHTML = todayEvent;
}
function getTodayEvent() {
const date = new Date();
const month = date.getMonth() + 1;
const day = date.getDate();
const year = date.getFullYear();
const aseReleaseDate = new Date("2020-04-23").getFullYear();
const aseAnniversary = year - aseReleaseDate;
if (month === 2 && day === 16)
return `
Today is Michelle Cheung's birthday. Happy Birthday Michelle!
`;
else if (month === 4 && day === 23)
return `
Today is the ${aseAnniversary}-year anniversary of the release of {% cite "A Summers End — Hong Kong 1986" %}!
`;
else if (month === 8 && day === 9)
return `
Today is Cecelia Cortes' birthday. Happy Birthday Cecelia!
`;
else if (month === 12 && day === 28)
return `
Today is Sam Wong's birthday. Happy Birthday Sam!
`;
else
return null;
}
{% endblock %}

View File

@ -1,11 +0,0 @@
{% extends "global/navbar.html" %}
{% set shrineHomeUrl = "/shrines/asummersend/" %}
{% block navbarLinks %}
{% set navPages = collections.all | eleventyNavigation("A Summers End Shrine") %}
{%- for entry in navPages %}
<li>
<a {% if entry.url == page.url %}aria-current="page"{% endif %} href="{{ entry.url }}">{{ entry.title }}</a>
</li>
{%- endfor %}
{% endblock %}

View File

@ -1,12 +0,0 @@
{% extends "global/shrineinfo.html" %}
{% block shrineAbout %}
<p>Welcome to {{ sitemeta.siteAuthor.name }}'s shrine for {% cite "A Summers End — Hong Kong 1986" %}, an indie visual novel developed by Oracle and Bone. Set in 1980s Hong Kong, it tells of a love story between two women.</p>
{% endblock %}
{% block shrineLinks %}
<li><a href="https://www.asummersend.com/">Official Website</a>
</li>
<li><a href="https://store.steampowered.com/app/1111370/A_Summers_End__Hong_Kong_1986/">Steam</a></li>
<li><a href="https://oracleandbone.itch.io/a-summers-end">itch.io</a></li>
{% endblock %}

View File

@ -1,19 +0,0 @@
{%- css %}{% include "src/assets/css/cassettebeasts.css" %}{%- endcss %}
{% extends "global/baselayout.html" %}
{% block metaTitle %}
<meta property="og:title" content="{{ title + ' | ' if title }}Cassette Beasts Shrine">
{% endblock %}
{% block pageTitle %}
{{ title + " | " if title }}Cassette Beasts Shrine | {{ sitemeta.siteName | safe }}
{% endblock %}
{% block favicon %}
<link rel="icon" type="image/x-icon" href="/assets/shrines/cassettebeasts/images/favicon.ico">
{% endblock %}
{% block hero %}{% include "cassettebeasts/hero.html" %}{% endblock %}
{% block navbar %}{% include "cassettebeasts/navbar.html" %}{% endblock %}
{% block footer %}{% include "cassettebeasts/footer.html" %}{% endblock %}

View File

@ -1,7 +0,0 @@
---
layout: cassettebeasts/base
---
{% extends "global/content.html" %}
{% block shrineInfo %}{% include "cassettebeasts/shrineinfo.html" %}{% endblock %}

View File

@ -1,6 +0,0 @@
{% extends "global/footer.html" %}
{% block footerContent %}
<p>Made with ♥ by {{ sitemeta.siteAuthor.name }} • Shrine Launched: 3 August 2023</p>
{% endblock %}

View File

@ -1,40 +0,0 @@
{% extends "global/hero.html" %}
{% block heroImg %}
<picture>
<source srcset="/assets/shrines/cassettebeasts/images/cassettebeasts-header-320.avif" media="(orientation: landscape)" />
<img src="/assets/shrines/cassettebeasts/images/cassettebeasts-header-640.avif" alt="Banner of Cassette Beasts Shrine" />
</picture>
{% endblock %}
{% block eventScript %}
const todayEvent = getTodayEvent();
if (todayEvent) {
heroTopBarEl.classList.remove('hidden');
heroTopBarEl.innerHTML = todayEvent;
}
function getTodayEvent() {
const date = new Date();
const month = date.getMonth() + 1;
const day = date.getDate();
const year = date.getFullYear();
const cbReleaseDate = new Date("2023-04-26").getFullYear();
const pierReleaseDate = new Date("2023-10-04").getFullYear();
const cbAnniversary = year - cbReleaseDate;
const pierAnniversary = year - pierReleaseDate;
if (month === 4 && day === 26)
return `
Today is the ${cbAnniversary}-year anniversary of the release of {% cite "Cassette Beasts" %}!
`;
else if (month === 10 && day === 4)
return `
Today is the ${pierAnniversary}-year anniversary of the release of <cite>Pier of the Unknown</cite>, the first DLC expansion of {% cite "Cassette Beasts" %}!
`;
else
return null;
}
{% endblock %}

View File

@ -1,11 +0,0 @@
{% extends "global/navbar.html" %}
{% set shrineHomeUrl = "/shrines/cassettebeasts/" %}
{% block navbarLinks %}
{% set navPages = collections.all | eleventyNavigation("Cassette Beasts Shrine") %}
{%- for entry in navPages %}
<li>
<a {% if entry.url == page.url %}aria-current="page"{% endif %} href="{{ entry.url }}">{{ entry.title }}</a>
</li>
{%- endfor %}
{% endblock %}

View File

@ -1,14 +0,0 @@
{% extends "global/shrineinfo.html" %}
{% block shrineAbout %}
<p>Welcome to {{ sitemeta.siteAuthor.name }}'s shrine for {% cite "Cassette Beasts" %}, an indie monster collecting turn-based open-world role-playing video game developed by Bytten Studio and published by Raw Fury.</p>
{% endblock %}
{% block shrineLinks %}
<li><a href="https://www.cassettebeasts.com/">Official Website</a>
</li>
<li><a href="https://wiki.cassettebeasts.com/">Official Wiki</a></li>
<li><a href="https://store.steampowered.com/app/1321440/Cassette_Beasts/">Steam</a></li>
<li><a href="https://bytten-studio.com/">Bytten Studio</a></li>
<li><a href="https://fan.leilukin.com/cassettebeasts/">Cassette Beasts fanlisting</a></li>
{% endblock %}

View File

@ -1,13 +1,13 @@
{% macro myASEPlaylist(intro) %} {{ export function myASEPlaylist(intro) }}
{% imgFigure "/assets/projects/playlists/My-Dear-Summer-Lover-cover.avif", "Cover image of A Summers End fanmix 'My Dear Summer Lover: A Sam x Michelle Fanmix'" %} {{ imgFigure "/assets/projects/playlists/My-Dear-Summer-Lover-cover.avif", "Cover image of A Summers End fanmix 'My Dear Summer Lover: A Sam x Michelle Fanmix'" }}
[Image description: Sam and Michelle from A Summers End almost kisses, with a play symbol and text on the top left corner, and the text "My Dear Summer Lover: A Sam x Michelle Fanmix" in a digital style font in front.] [Image description: Sam and Michelle from A Summers End almost kisses, with a play symbol and text on the top left corner, and the text "My Dear Summer Lover: A Sam x Michelle Fanmix" in a digital style font in front.]
{% endimgFigure %} {{ /imgFigure }}
{{ intro }} [{% cite "A Summers End — Hong Kong 1986" %}](https://www.asummersend.com/home), dedicated to Sam and Michelles love story. {{ intro }} [{{ cite "A Summers End — Hong Kong 1986" }}](https://www.asummersend.com/home), dedicated to Sam and Michelles love story.
This mix contains mostly Cantonese and English songs, with one Mandarin song. Majority of these songs were performed by Hong Kong artists and released in the 80s, because A Summers End took place in Hong Kong and in the 80s. This mix contains mostly Cantonese and English songs, with one Mandarin song. Majority of these songs were performed by Hong Kong artists and released in the 80s, because A Summers End took place in Hong Kong and in the 80s.
I have carefully selected and arranged these tracks, so the lyrics would reflect Sam and Michelles relationship development throughout {% cite "A Summers End" %}. Therefore, the content of this mix could be considered spoilers if you have not played the visual novel. I have carefully selected and arranged these tracks, so the lyrics would reflect Sam and Michelles relationship development throughout {{ cite "A Summers End" }}. Therefore, the content of this mix could be considered spoilers if you have not played the visual novel.
Since Oracle and Bone has cited Anita Mui as a major inspiration for them and this visual novel, I have also included multiple songs performed by Anita Mui in this mix. Because A Summers End is a lesbian story, when I was choosing which songs to include in this mix, I also prioritize songs that were performed by women artists. Since Oracle and Bone has cited Anita Mui as a major inspiration for them and this visual novel, I have also included multiple songs performed by Anita Mui in this mix. Because A Summers End is a lesbian story, when I was choosing which songs to include in this mix, I also prioritize songs that were performed by women artists.
@ -28,4 +28,4 @@ Tracklist:
[Listen on Spotify](https://open.spotify.com/playlist/3SIV7VjSKhspYwugVIQjug){.link-btn} [Listen on Spotify](https://open.spotify.com/playlist/3SIV7VjSKhspYwugVIQjug){.link-btn}
<iframe style="border-radius:12px" src="https://open.spotify.com/embed/playlist/3SIV7VjSKhspYwugVIQjug?utm_source=generator" width="100%" height="380" frameBorder="0" allowfullscreen="" allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture" loading="lazy"></iframe> <iframe style="border-radius:12px" src="https://open.spotify.com/embed/playlist/3SIV7VjSKhspYwugVIQjug?utm_source=generator" width="100%" height="380" frameBorder="0" allowfullscreen="" allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture" loading="lazy"></iframe>
{% endmacro %} {{ /export }}

View File

@ -1,26 +1,26 @@
{%- macro articleList(tag) -%} {{ export function articleList(tag) }}
<ul> <ul>
{%- for article in collections[tag] -%} {{ for article of collections[tag] }}
<li> <li>
<p class="item-list__title"> <p class="item-list__title">
<a href="{{ article.url }}">{{ article.data.articleTitle }}</a> <a href="{{ article.url }}">{{ article.data.articleTitle }}</a>
</p> </p>
<time datetime="{{ article.date }}">{{ article.date | formatDate }}</time> <time datetime="{{ article.date }}">{{ article.date |> formatDate }}</time>
</li> </li>
{%- endfor -%} {{ /for }}
</ul> </ul>
{%- endmacro -%} {{ /export }}
{%- macro modEntry(params) -%} {{ export function modEntry(params) }}
{% headingAnchor 3 %}{{ params.title }}{% endheadingAnchor %} {{ headingAnchor 3 }}{{ params.title }}{{ \/headingAnchor }}
<div class="mod-entry"> <div class="mod-entry">
<img src="/assets/projects/{{ params.bannerFile }}" alt="Banner of {{ params.title }} mod" loading="lazy"> <img src="/assets/projects/{{ params.bannerFile }}" alt="Banner of {{ params.title }} mod" loading="lazy">
<p>{{ params.desc | safe }}</p> <p>{{ params.desc }}</p>
<h4>Download the mod:</h4> <h4>Download the mod:</h4>
<div class="mod-entry__downloads"> <div class="mod-entry__downloads">
{%- for download in params.downloads -%} {{ for download of params.downloads }}
<a class="link-btn" href="{{ download.url }}">{{ download.site }}</a> <a class="link-btn" href="{{ download.url }}">{{ download.site }}</a>
{%- endfor -%} {{ /for }}
</div> </div>
</div> </div>
{%- endmacro -%} {{ /export }}

View File

@ -5,9 +5,9 @@
<img src="/assets/leilukin/Leilukins-Hub-button-200x40.png" alt="Leilukin's Hub website button with 200×40 pixel size" width="200" height="40" loading="lazy"> <img src="/assets/leilukin/Leilukins-Hub-button-200x40.png" alt="Leilukin's Hub website button with 200×40 pixel size" width="200" height="40" loading="lazy">
</div> </div>
{%- css %} {{- css }}
.my-btn { .my-btn {
align-items: center; align-items: center;
margin-top: 1em; margin-top: 1em;
} }
{% endcss %} {{ /css }}

View File

@ -1,63 +1,63 @@
{% set firstLabel %} {{ set firstLabel }}
<svg class="inline-icon" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160zm352-160l-160 160c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L301.3 256 438.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0z"></svg> <svg class="inline-icon" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160zm352-160l-160 160c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L301.3 256 438.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0z"></svg>
Newest{% endset %} Newest{{ /set }}
{% set prevLabel %} {{ set prevLabel }}
<svg class="inline-icon" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z"/></svg> <svg class="inline-icon" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z"/></svg>
Newer{% endset %} Newer{{ /set }}
{% set nextLabel %}Older {{ set nextLabel }}Older
<svg class="inline-icon" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M278.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 73.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z"/></svg> <svg class="inline-icon" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M278.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 73.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z"/></svg>
{% endset %} {{ /set }}
{% set lastLabel %}Oldest {{ set lastLabel }}Oldest
<svg class="inline-icon" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M470.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 256 265.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160zm-352 160l160-160c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L210.7 256 73.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z"/></svg> <svg class="inline-icon" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M470.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 256 265.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160zm-352 160l160-160c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L210.7 256 73.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z"/></svg>
{% endset %} {{ /set }}
<nav aria-labelledby="pagination-title" class="pagination__wrapper"> <nav aria-labelledby="pagination-title" class="pagination__wrapper">
<h2 class="visually-hidden" id="pagination-title">Pagination</h2> <h2 class="visually-hidden" id="pagination-title">Pagination</h2>
<ul class="pagination"> <ul class="pagination">
<li> <li>
{% if pagination.href.first %} {{ if pagination.href.first }}
<a href="{{ pagination.href.first }}"> <a href="{{ pagination.href.first }}">
{{ firstLabel | safe }} {{ firstLabel }}
</a> </a>
{% else %} {{ else }}
{{ firstLabel | safe }} {{ firstLabel }}
{% endif %} {{ /if }}
</li> </li>
<li> <li>
{% if pagination.href.previous %} {{ if pagination.href.previous }}
<a href="{{ pagination.href.previous }}"> <a href="{{ pagination.href.previous }}">
<i class="fa-solid fa-angle-left"></i> <i class="fa-solid fa-angle-left"></i>
{{ prevLabel | safe }} {{ prevLabel }}
</a> </a>
{% else %} {{ else }}
{{ prevLabel | safe }} {{ prevLabel }}
{% endif %} {{ /if }}
</li> </li>
<li> <li>
{% if pagination.href.next %} {{ if pagination.href.next }}
<a href="{{ pagination.href.next }}"> <a href="{{ pagination.href.next }}">
{{ nextLabel | safe }} {{ nextLabel }}
</a> </a>
{% else %} {{ else }}
{{ nextLabel | safe }} {{ nextLabel }}
{% endif %} {{ /if }}
</li> </li>
<li> <li>
{% if pagination.href.last %} {{ if pagination.href.last }}
<a href="{{ pagination.href.last }}"> <a href="{{ pagination.href.last }}">
{{ lastLabel | safe }} {{ lastLabel }}
</a> </a>
{% else %} {{ else }}
{{ lastLabel | safe }} {{ lastLabel }}
{% endif %} {{ /if }}
</li> </li>
</ul> </ul>
</nav> </nav>
{%- css %} {{- css }}
.pagination__wrapper { .pagination__wrapper {
display: grid; display: grid;
place-content: center; place-content: center;
@ -95,4 +95,4 @@ Newer{% endset %}
} }
.pagination li a:focus { outline: none; } .pagination li a:focus { outline: none; }
{% endcss %} {{ /css }}

View File

@ -10,9 +10,9 @@
<p><a href="https://status.cafe/users/leilukin">View my statuses on status.cafe</a></p> <p><a href="https://status.cafe/users/leilukin">View my statuses on status.cafe</a></p>
</div> </div>
{%- css %}#statuscafe-content { margin-bottom: 0.5em; }{% endcss %} {{- css }}#statuscafe-content { margin-bottom: 0.5em; }{{ /css }}
{%- js %} {{- js }}
const statusCafeContent = document.getElementById("statuscafe-content"); const statusCafeContent = document.getElementById("statuscafe-content");
statusCafeContent.innerHTML = ` statusCafeContent.innerHTML = `
<p>Fetching data from status.cafe...</p> <p>Fetching data from status.cafe...</p>
@ -36,4 +36,4 @@ const fetchStatusCafe = async () => {
} }
}; };
fetchStatusCafe(); fetchStatusCafe();
{% endjs %} {{ /js }}

View File

@ -4,7 +4,7 @@
<a href="https://ko-fi.com/A1042UH4"><img src="/assets/buttons/misc/ko-fi.webp" alt="Buy Me a Coffee at ko-fi.com" width="141" height="36" loading="lazy"></a> <a href="https://ko-fi.com/A1042UH4"><img src="/assets/buttons/misc/ko-fi.webp" alt="Buy Me a Coffee at ko-fi.com" width="141" height="36" loading="lazy"></a>
</div> </div>
{%- css %} {{- css }}
.support-me { .support-me {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
@ -12,4 +12,4 @@
align-items: center; align-items: center;
margin-top: 0.7em; margin-top: 0.7em;
} }
{% endcss %} {{ /css }}

View File

@ -1,8 +1,8 @@
{%- css %}.color-bg { padding: 0.125em 0.3em; }{% endcss %} {{- css }}.color-bg { padding: 0.125em 0.3em; }{{ /css }}
{%- macro webCliqueImg(file, width, height, alt="") -%} {{ function webCliqueImg(file, width, height, alt="") -}}
<img src="/assets/cliques/{{ file }}" alt="{{ alt }}" class="inline-img" width="{{ width }}" height="{{ height }}" loading="lazy"> <img src="/assets/cliques/{{ file }}" alt="{{ alt }}" class="inline-img" width="{{ width }}" height="{{ height }}" loading="lazy">
{%- endmacro -%} {{ /function }}
<ul> <ul>
<li> <li>

View File

@ -1,53 +0,0 @@
<!DOCTYPE html>
<html lang="{{ sitemeta.siteLanguage }}" dir="ltr" id="top">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
{# Open Graph Meta #}
{% block metaTitle %}
<meta property="og:title" content="{{ title if title else sitemeta.siteName | safe }}">
{% endblock %}
{% include "global/meta.html" %}
{# Feeds #}
{% include "global/feeds.html" %}
{# Fonts #}
{% include "global/fonts.html" %}
{# CSS #}
{% include "global/css-bundle.html" %}
{% if hasTooltips %}
<link rel="stylesheet" href="/assets/css/tooltips.css">
{% endif %}
<style>{% getBundle "css" %}</style>
{# Favicon #}
{% block favicon %}{% endblock %}
{# Verifications #}
<link rel="me" href="https://dragonscave.space/@Leilukin">
<link rel="me" href="https://github.com/Leilukin">
<link rel="authorization_endpoint" href="https://indieauth.com/auth">
{# JavaScript #}
<script src="{% getBundleFileUrl 'js' %}" defer></script>
{% if toc %}
<script src="{{'/assets/js/details-utils.js'}}" defer></script>
{% endif %}
{% if hasCodeBlock %}
<script src="/assets/js/copycode.js" defer></script>
{% endif %}
{% if hasTooltips %}
<script src="/assets/js/tooltips.js" defer></script>
{% endif %}
<title>
{% block pageTitle %}{{ title + " | " if title }}{{ sitemeta.siteName | safe }}{% endblock %}
</title>
</head>
<body>
<div class="skip-btn"><a href="#content">Skip to content</a></div>
{% block hero %}{% include "global/hero.html" %}{% endblock %}
{% block navbar %}{% include "global/navbar.html" %}{% endblock %}
<main id="content">
{{ content | safe }}
</main>
{% block footer %}{% include "global/footer.html" %}{% endblock %}
</body>
</html>

View File

@ -1,115 +0,0 @@
<header class="main__header">
{% if isArticle or hasBreadcrumbs %}
<nav class="breadcrumbs" aria-labelledby="breadcrumbs-title">
<h2 class="visually-hidden" id="breadcrumbs-title">Breadcrumbs</h2>
{% set breadcrumbNavPages = collections.all | eleventyNavigationBreadcrumb(eleventyNavigation.key or articleTitle or pageTitle or title) %}
{%- for entry in breadcrumbNavPages %}
<a href="{{ entry.url }}">{{ entry.title }}</a>
<span aria-hidden="true"></span>
{%- endfor %}
</nav>
{% endif %}
<h1>{{ articleTitle or pageTitle or title }}</h1>
{% if isArticle %}
<div class="article__info">
<p>
{{ content | wordcount | thousands }} words.
Posted on <time datetime="{{ date }}">{{ date | formatDate }}</time> by {{ sitemeta.siteAuthor.name }}
</p>
{% if updated %}
<p>Last updated on <time datetime="{{ updated }}">{{ updated | formatDate }}</time></p>
{% endif %}
{% if categories %}
<p>Categories:
{% for cat in categories %}
<a href="/categories/{{ cat | slugify }}">{{ cat }}</a>{% if not loop.last %}, {% endif %}
{% endfor %}
</p>
{% endif %}
</div>
{% else %}
{% if desc %}
<p>{{ desc }}</p>
{% endif %}
{% endif %}
</header>
<content-wrapper>
{% if toc %}
{% include "global/toc.html" %}
{% endif %}
{% set contentEl = "article" if isArticle or articleElement else "div" %}
<{{contentEl}} class="content{{' content--divided' if isContentDivided }}">
{{ content | safe }}
{% if tags and tags.includes("posts") %}
{%- if collections.posts.length > 1 %}
<nav class="blog__post--pagination" aria-labelledby="nextprev-title">
<h2 class="visually-hidden" id="nextprev-title">Next and Previous Blog Posts</h2>
{%- set previousPost = collections.posts | getPreviousCollectionItem %}
{%- set nextPost = collections.posts | getNextCollectionItem %}
{%- if nextPost or previousPost %}
<ul class="blog__post--nextprev">
{%- if previousPost %}
<li class="blog__post--prev">
<p>Previous Post:</p>
<a href="{{ previousPost.url }}">{{ previousPost.data.articleTitle }}</a>
</li>
{% endif %}
{%- if nextPost %}
<li class="blog__post--next">
<p>Next Post:</p>
<a href="{{ nextPost.url }}">{{ nextPost.data.articleTitle }}</a>
</li>
{% endif %}
</ul>
{%- endif %}
</nav>
{%- endif %}
{% endif %}
</{{contentEl}}>
{% if
tags and tags.includes("articles")
or tags and tags.includes("posts")
or page.url === "/articles/"
or tags and tags.includes("blog pages")
%}
{% include "main/content-nav.html" %}
{% endif %}
{% block shrineInfo %}{% endblock %}
</content-wrapper>
{%- css %}
.breadcrumbs {
margin-bottom: 0.7em;
display: flex;
gap: 0.5em;
flex-wrap: wrap;
justify-content: center;
}
.blog__post--pagination {
padding-top: 1em;
margin-block-start: 2.5em;
border-top: 0.1em solid var(--clr-title-border);
}
.blog__post--nextprev {
list-style-type: "";
padding: 0;
margin: 0;
display: grid;
gap: 0.7em;
grid-template-columns: repeat(2, 1fr);
grid-template-areas: 'prev next';
}
.blog__post--prev { grid-area: prev; }
.blog__post--next { grid-area: next; }
{% endcss %}

View File

@ -1,29 +0,0 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
{# Open Graph meta #}
<meta property="og:title" content="{% if title %}{{ title }}{% else %}{{ sitemeta.siteName }}{% endif %}">
{% include "global/meta.html" %}
{# Feeds #}
{% include "global/feeds.html" %}
{# Style #}
{% include "global/fonts.html" %}
<link rel="stylesheet" href="/assets/css/misc.css">
<title>{% if title %} {{ title }} | {% endif %} {{ sitemeta.siteName }}</title>
</head>
<body>
<main>
<img src="/assets/leilukin/Leilukins-Hub-website-banner.avif" alt="{{ sitemeta.siteName }} website banner">
<h1>{{ h1 }}</h1>
{{ content | safe }}
</main>
</body>
</html>

View File

@ -0,0 +1,84 @@
---
layout: layouts/content
sectionName: A Summers End — Hong Kong 1986 Shrine
---
{{- css }}{{ include "src/assets/css/asummersend.css" }}{{- /css }}
{{ set favicon }}
<link rel="icon" type="image/x-icon" href="/assets/shrines/asummersend/images/favicon.ico">
{{ /set }}
{{ layout "partials/hero.vto" }}
{{ set heroImg }}
<picture>
<source srcset="/assets/shrines/asummersend/images/asummersend-header-320.avif" media="(orientation: landscape)" />
<img src="/assets/shrines/asummersend/images/asummersend-header.avif" alt="Banner of A Summers End — Hong Kong 1986 Shrine" />
</picture>
{{ /set }}
{{ set eventScript }}
const todayEvent = getTodayEvent();
if (todayEvent) {
heroTopBarEl.classList.remove('hidden');
heroTopBarEl.innerHTML = todayEvent;
}
function getTodayEvent() {
const date = new Date();
const month = date.getMonth() + 1;
const day = date.getDate();
const year = date.getFullYear();
const aseReleaseDate = new Date("2020-04-23").getFullYear();
const aseAnniversary = year - aseReleaseDate;
if (month === 2 && day === 16)
return `
Today is Michelle Cheung's birthday. Happy Birthday Michelle!
`;
else if (month === 4 && day === 23)
return `
Today is the ${aseAnniversary}-year anniversary of the release of {{ cite "A Summers End — Hong Kong 1986" }}!
`;
else if (month === 8 && day === 9)
return `
Today is Cecelia Cortes' birthday. Happy Birthday Cecelia!
`;
else if (month === 12 && day === 28)
return `
Today is Sam Wong's birthday. Happy Birthday Sam!
`;
else
return null;
}
{{ /set }}
{{ /layout }}
{{ layout "partials/navbar.vto" }}
{{ set navbarLinks }}
{{ set navPages = collections.all |> eleventyNavigation("A Summers End Shrine") }}
{{- for entry of navPages }}
<li>
<a {{ if entry.url == page.url }}aria-current="page"{{ /if }} href="{{ entry.url }}">{{ entry.title }}</a>
</li>
{{ /for }}
{{ /set }}
{{ /layout }}
{{ layout "partials/shrineinfo.vto" }}
{{ set shrineAbout }}
<p>Welcome to {{ sitemeta.siteAuthor.name }}'s shrine for {{ cite "A Summers End — Hong Kong 1986" }}, an indie visual novel developed by Oracle and Bone. Set in 1980s Hong Kong, it tells of a love story between two women.</p>
{{ /set }}
{{ set shrineLinks }}
<li><a href="https://www.asummersend.com/">Official Website</a>
</li>
<li><a href="https://store.steampowered.com/app/1111370/A_Summers_End__Hong_Kong_1986/">Steam</a></li>
<li><a href="https://oracleandbone.itch.io/a-summers-end">itch.io</a></li>
{{ /set }}
{{ /layout }}
{{ layout "partials/footer.vto" }}
<p>Made with ♥ by {{ sitemeta.siteAuthor.name }} • Shrine Launched: 16 February 2023</p>
{{ /layout }}

View File

@ -0,0 +1,53 @@
<!DOCTYPE html>
<html lang="{{ sitemeta.siteLanguage }}" dir="ltr" id="top">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- Open Graph Meta -->
<meta property="og:title" content="{{ title ? title : (sectionName || sitemeta.siteName) }}">
{{ include "partials/meta.vto" }}
<!-- Feeds -->
{{ include "partials/feeds.vto" }}
<!-- Fonts -->
{{ include "partials/fonts.vto" }}
<!-- CSS -->
{{ include "partials/css.vto" }}
{{ if hasTooltips }}
<link rel="stylesheet" href="/assets/css/tooltips.css">
{{ /if }}
<style>{{ getBundle "css" }}</style>
<!-- Favicon -->
{{ favicon }}
<!-- Verifications -->
<link rel="me" href="https://dragonscave.space/@Leilukin">
<link rel="me" href="https://github.com/Leilukin">
<link rel="authorization_endpoint" href="https://indieauth.com/auth">
<!-- JavaScript -->
<script src="{{ getBundleFileUrl 'js' }}" defer></script>
{{ if toc }}
<script src="{{'/assets/js/details-utils.js'}}" defer></script>
{{ /if }}
{{ if hasCodeBlock }}
<script src="/assets/js/copycode.js" defer></script>
{{ /if }}
{{ if hasTooltips }}
<script src="/assets/js/tooltips.js" defer></script>
{{ /if }}
<title>
{{- title ? title + " | " : "" -}}
{{- sectionName ? sectionName + " | " : "" -}}
{{- sitemeta.siteName -}}
</title>
</head>
<body>
<div class="skip-btn"><a href="#content">Skip to content</a></div>
{{ include "partials/hero.vto" }}
{{ include "partials/navbar.vto" }}
<main id="content">
{{ content }}
</main>
{{ include "partials/footer.vto" }}
</body>
</html>

View File

@ -0,0 +1,82 @@
---
layout: layouts/content
sectionName: Cassette Beasts Shrine
---
{{- css }}{{ include "src/assets/css/cassettebeasts.css" }}{{- /css }}
{{ set favicon }}
<link rel="icon" type="image/x-icon" href="/assets/shrines/cassettebeasts/images/favicon.ico">
{{ /set }}
{{ layout "partials/hero.vto" }}
{{ set heroImg }}
<picture>
<source srcset="/assets/shrines/cassettebeasts/images/cassettebeasts-header-320.avif" media="(orientation: landscape)" />
<img src="/assets/shrines/cassettebeasts/images/cassettebeasts-header-640.avif" alt="Banner of Cassette Beasts Shrine" />
</picture>
{{ /set }}
{{ set eventScript }}
const todayEvent = getTodayEvent();
if (todayEvent) {
heroTopBarEl.classList.remove('hidden');
heroTopBarEl.innerHTML = todayEvent;
}
function getTodayEvent() {
const date = new Date();
const month = date.getMonth() + 1;
const day = date.getDate();
const year = date.getFullYear();
const cbReleaseDate = new Date("2023-04-26").getFullYear();
const pierReleaseDate = new Date("2023-10-04").getFullYear();
const cbAnniversary = year - cbReleaseDate;
const pierAnniversary = year - pierReleaseDate;
if (month === 4 && day === 26)
return `
Today is the ${cbAnniversary}-year anniversary of the release of {{ cite "Cassette Beasts" }}!
`;
else if (month === 10 && day === 4)
return `
Today is the ${pierAnniversary}-year anniversary of the release of <cite>Pier of the Unknown</cite>, the first DLC expansion of {{ cite "Cassette Beasts" }}!
`;
else
return null;
}
{{ /set }}
{{ /layout }}
{{ layout "partials/navbar.vto" }}
{{ set shrineHomeUrl = "/shrines/cassettebeasts/" }}
{{ set navbarLinks }}
{{ set navPages = collections.all | eleventyNavigation("Cassette Beasts Shrine") }}
{{ for entry of navPages }}
<li>
<a {{ if entry.url == page.url }}aria-current="page"{{ /if }} href="{{ entry.url }}">{{ entry.title }}</a>
</li>
{{ /for }}
{{ /set }}
{{ /layout }}
{{ layout "partials/shrineinfo.vto" }}
{{ set shrineAbout }}
<p>Welcome to {{ sitemeta.siteAuthor.name }}'s shrine for {{ cite "Cassette Beasts" }}, an indie monster collecting turn-based open-world role-playing video game developed by Bytten Studio and published by Raw Fury.</p>
{{ /set }}
{{ set shrineLinks }}
<li><a href="https://www.cassettebeasts.com/">Official Website</a>
</li>
<li><a href="https://wiki.cassettebeasts.com/">Official Wiki</a></li>
<li><a href="https://store.steampowered.com/app/1321440/Cassette_Beasts/">Steam</a></li>
<li><a href="https://bytten-studio.com/">Bytten Studio</a></li>
<li><a href="https://fan.leilukin.com/cassettebeasts/">Cassette Beasts fanlisting</a></li>
{{ /set }}
{{ /layout }}
{{ layout "partials/footer.vto" }}
<p>Made with ♥ by {{ sitemeta.siteAuthor.name }} • Shrine Launched: 3 August 2023</p>
{{ /layout }}

View File

@ -0,0 +1,118 @@
---
layout: layouts/base
---
<header class="main__header">
{{ if isArticle || hasBreadcrumbs }}
<nav class="breadcrumbs" aria-labelledby="breadcrumbs-title">
<h2 class="visually-hidden" id="breadcrumbs-title">Breadcrumbs</h2>
{{ set breadcrumbNavPages = collections.all |> eleventyNavigationBreadcrumb(eleventyNavigation.key || articleTitle || pageTitle || title) }}
{{ for entry of breadcrumbNavPages }}
<a href="{{ entry.url }}">{{ entry.title }}</a>
<span aria-hidden="true">➔</span>
{{ /for }}
</nav>
{{ /if }}
<h1>{{ articleTitle || pageTitle || title }}</h1>
{{ if isArticle }}
<div class="article__info">
<p>
{{ content |> wordcount |> thousands }} words.
Posted on <time datetime="{{ date }}">{{ date |> formatDate }}</time> by {{ sitemeta.siteAuthor.name }}
</p>
{{ if updated }}
<p>Last updated on <time datetime="{{ updated }}">{{ updated |> formatDate }}</time></p>
{{ endif }}
{{ if categories }}
<p>Categories:
{{ for cat of categories }}
<a href="/categories/{{ cat |> slugify }}">{{ cat }}</a>{{ if categories.indexOf(cat) !== categories.length - 1 }}, {{ /if }}
{{ /for }}
</p>
{{ /if }}
</div>
{{ else }}
{{ if desc }}
<p>{{ desc }}</p>
{{ /if }}
{{ /if }}
</header>
<content-wrapper>
{{ if toc }}
{{ include "partials/toc.vto" }}
{{ /if }}
{{ set contentEl = (isArticle || articleElement) ? "article" : "div" }}
<{{contentEl}} class="content{{ isContentDivided ? ' content--divided' : '' }}">
{{ content }}
{{ if tags && tags.includes("posts") }}
{{ if collections.posts.length > 1 }}
<nav class="blog__post--pagination" aria-labelledby="nextprev-title">
<h2 class="visually-hidden" id="nextprev-title">Next and Previous Blog Posts</h2>
{{ set previousPost = collections.posts |> getPreviousCollectionItem }}
{{ set nextPost = collections.posts |> getNextCollectionItem }}
{{ if nextPost || previousPost }}
<ul class="blog__post--nextprev">
{{ if previousPost }}
<li class="blog__post--prev">
<p>Previous Post:</p>
<a href="{{ previousPost.url }}">{{ previousPost.data.articleTitle }}</a>
</li>
{{ /if }}
{{ if nextPost }}
<li class="blog__post--next">
<p>Next Post:</p>
<a href="{{ nextPost.url }}">{{ nextPost.data.articleTitle }}</a>
</li>
{{ endif }}
</ul>
{{ /if }}
</nav>
{{ /if }}
{{ /if }}
</{{contentEl}}>
{{ if
(tags && tags.includes("articles"))
|| (tags && tags.includes("posts"))
|| (page.url === "/articles/")
|| (tags && tags.includes("blog pages"))
}}
{{ include "components/content-nav.vto" }}
{{ /if }}
{{ shrineInfo }}
</content-wrapper>
{{- css }}
.breadcrumbs {
margin-bottom: 0.7em;
display: flex;
gap: 0.5em;
flex-wrap: wrap;
justify-content: center;
}
.blog__post--pagination {
padding-top: 1em;
margin-block-start: 2.5em;
border-top: 0.1em solid var(--clr-title-border);
}
.blog__post--nextprev {
list-style-type: "";
padding: 0;
margin: 0;
display: grid;
gap: 0.7em;
grid-template-columns: repeat(2, 1fr);
grid-template-areas: 'prev next';
}
.blog__post--prev { grid-area: prev; }
.blog__post--next { grid-area: next; }
{{ /css }}

View File

@ -1,13 +1,13 @@
--- ---
layout: main/content.html layout: layouts/content
articleElement: true articleElement: true
isContentDivided: true isContentDivided: true
--- ---
{% set linkGroups = collections["link groups"] %} {{ set linkGroups = collections["link groups"] }}
<section class="content__section"> <section class="content__section">
<h2>Link to My Website</h2> <h2>Link to My Website</h2>
{% include "main/my-button.html" %} {{ include "components/my-button.vto" }}
</section> </section>
<section class="content__section"> <section class="content__section">
@ -17,32 +17,32 @@ isContentDivided: true
<nav aria-labelledby="tabs-title"> <nav aria-labelledby="tabs-title">
<h3 class="visually-hidden" id="tabs-title">Tabs Group</h3> <h3 class="visually-hidden" id="tabs-title">Tabs Group</h3>
<ul class="tabs"> <ul class="tabs">
{% for group in linkGroups %} {{ for group of linkGroups }}
<li><a class="tab__btn" href="#{{ group.data.title | slugify }}">{{ group.data.title }}</a></li> <li><a class="tab__btn" href="#{{ group.data.title |> slugify }}">{{ group.data.title }}</a></li>
{%- endfor %} {{ /for }}
</ul> </ul>
</nav> </nav>
</section> </section>
<article class="tabwrap"> <article class="tabwrap">
{% for group in linkGroups %} {{ for group of linkGroups }}
<section id="{{ group.data.title | slugify }}" class="content__section"> <section id="{{ group.data.title |> slugify }}" class="content__section">
{% headingAnchor 2 %}{{ group.data.title }}{% endheadingAnchor %} {{ headingAnchor 2 }}{{ group.data.title }}{{ /headingAnchor }}
{% if group.data.toc %} {{ if group.data.toc }}
<div class="tabwrap__toc"> <div class="tabwrap__toc">
<h3>Table of Contents</h3> <h3>Table of Contents</h3>
{{ group.content | toc | safe }} {{ group.content |> toc }}
</div> </div>
{% endif %} {{ /if }}
{{ group.content | safe }} {{ group.content }}
{% if group.data.updated %} {{ if group.data.updated }}
<p class="update-info">(This {{ group.data.title }} list was last updated on <time datetime="{{ group.data.updated }}">{{ group.data.updated | formatDate }}</time>)</p> <p class="update-info">(This {{ group.data.title }} list was last updated on <time datetime="{{ group.data.updated }}">{{ group.data.updated |> formatDate }}</time>)</p>
{% endif %} {{ /if }}
<a href="#linktabs" class="tab__btn tab__back">Back to tabs</a> <a href="#linktabs" class="tab__btn tab__back">Back to tabs</a>
</section> </section>
{%- endfor %} {{ /for }}
</article> </article>

View File

@ -1,16 +1,16 @@
{% extends "global/hero.html" %} ---
layout: layouts/base
---
{{ layout "partials/hero.vto" }}
{{ set heroImg }}<img fetchpriority="high" src="/assets/leilukin/Leilukins-Hub-website-banner.avif" alt="Banner of Leilukin's Hub" width="900" height="300">{{ /set }}
{% block heroImg %} {{ set heroDropShadow }}
<img fetchpriority="high" src="/assets/leilukin/Leilukins-Hub-website-banner.avif" alt="Banner of Leilukin's Hub" width="900" height="300">
{% endblock %}
{% set heroDropShadow %}
drop-shadow(0.1rem 0.1rem 0.2rem black) drop-shadow(0.1rem 0.1rem 0.2rem black)
drop-shadow(0.1rem 0.1rem 0.2rem rgba(30, 30, 30, 0.8)) drop-shadow(0.1rem 0.1rem 0.2rem rgba(30, 30, 30, 0.8))
{% endset%} {{ /set }}
{%- css %}.hero img { filter: {{ heroDropShadow }}; }{% endcss %} {{- css }}.hero img { filter: {{ heroDropShadow }}; }{{ /css }}
{% block eventScript %} {{ set eventScript }}
const todayEvent = getTodayEvent(); const todayEvent = getTodayEvent();
if (todayEvent) { if (todayEvent) {
@ -138,4 +138,44 @@ function getTodayEvent() {
else else
return null; return null;
} }
{% endblock %} {{ /set }}
{{ /layout }}
{{ layout "partials/navbar.vto" }}
{{ set navbarLinks }}
{{ set currentUrl = page.url }}
{{ set navPages = collections["navbar links"] |> eleventyNavigation }}
{{ for entry of navPages }}
<li>
<a {{ if entry.url == page.url }}aria-current="page"{{ /if }} href="{{ entry.url }}">{{ entry.title }}</a>
</li>
{{ /for }}
{{ /set }}
{{ /layout }}
{{ layout "partials/footer.vto" }}
<h2 class="visually-hidden">Footer Navigation:</h2>
{{ set currentUrl = page.url }}
<ul class="inline-nav footer__links">
<li>
<a href="{{ sitemeta.feedPath }}"><svg class="inline-icon" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M0 64C0 46.3 14.3 32 32 32c229.8 0 416 186.2 416 416c0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96C14.3 96 0 81.7 0 64zM0 416a64 64 0 1 1 128 0A64 64 0 1 1 0 416zM32 160c159.1 0 288 128.9 288 288c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224c-17.7 0-32-14.3-32-32s14.3-32 32-32z"/></svg>RSS Feed</a>
</li>
<li><a
{{ if currentUrl === "/sitemap/" }}aria-current="page"{{ /if }}
href="/sitemap/
">Site Map</a></li>
{{ for link of collections["footer links"] }}
<li><a
{{ if link.url == page.url }}aria-current="page"{{ /if }}
href="{{ link.url }}"
>{{ link.data.title }}</a></li>
{{ /for }}
{{ for statement of collections.statements }}
<li><a
{{ if statement.url == page.url }}aria-current="page"{{ /if }}
href="{{ statement.url }}"
>{{ statement.data.title }}</a></li>
{{ /for }}
</ul>
<p>Made with ♥ by {{ sitemeta.siteAuthor.name }} since 11 September 2022</p>
{{ /layout }}

View File

@ -0,0 +1,72 @@
---
layout: layouts/content
sectionName: Pokémon Omega Ruby and Alpha Sapphire Shrine
---
{{- css }}{{ include "src/assets/css/pokemonoras.css" }}{{- /css }}
{{ set favicon }}
<link rel="icon" type="image/x-icon" href="/assets/shrines/pokemonoras/images/favicon.ico">
{{ /set }}
{{ layout "partials/hero.vto" }}
{{ set heroImg }}
<picture>
<source srcset="/assets/shrines/pokemonoras/images/pokemonoras-header-320.avif" media="(orientation: landscape)" />
<img src="/assets/shrines/pokemonoras/images/pokemonoras-header-640.avif" alt="Banner of Pokémon Omega Ruby and Alpha Sapphire Shrine" />
</picture>
{{ /set }}
{{ set eventScript }}
const todayEvent = getTodayEvent();
if (todayEvent) {
heroTopBarEl.classList.remove('hidden');
heroTopBarEl.innerHTML = todayEvent;
}
function getTodayEvent() {
const date = new Date();
const month = date.getMonth() + 1;
const day = date.getDate();
const year = date.getFullYear();
const orasReleaseDate = new Date("2014-11-21").getFullYear();
const orasAnniversary = year - orasReleaseDate;
if (month === 11 && day === 21)
return `
Today is the ${orasAnniversary}-year anniversary of the release of <cite>Pokémon Omega Ruby"</cite> and <cite>Alpha Sapphire</cite>!
`;
else
return null;
}
{{ /set }}
{{ /layout }}
{{ layout "partials/navbar.vto" }}
{{ set shrineHomeUrl = "/shrines/pokemonoras/" }}
{{ set navbarLinks }}
{{ set navPages = collections.all |> eleventyNavigation("ORAS Shrine") }}
{{ for entry of navPages }}
<li>
<a {{ if entry.url == page.url }}aria-current="page"{{ /if }} href="{{ entry.url }}">{{ entry.title }}</a>
</li>
{{ /for }}
{{ /set }}
{{ /layout }}
{{ layout "partials/shrineinfo.vto" }}
{{ set shrineAbout }}
<p>Welcome to {{ sitemeta.siteAuthor.name }}'s shrine for {{ cite "Pokémon Omega Ruby and Alpha Sapphire" }}, remakes of the 2002 Game Boy Advance role-playing video games {{ cite "Pokémon Ruby" }} and {{ cite "Pokémon Sapphire" }}. The games are part of the sixth generation of the {{ cite "Pokémon" }} main series of video games, developed by Game Freak and published by The Pokémon Company and Nintendo for the Nintendo 3DS.</p>
{{ /set }}
{{ set shrineLinks }}
<li><a href="https://bulbapedia.bulbagarden.net/wiki/Pok%C3%A9mon_Omega_Ruby_and_Alpha_Sapphire">Bulbapedia</a></li>
<li><a href="https://pkmn.redcrown.net/hoenn/"><cite>Pokémon Ruby</cite>, <cite>Sapphire</cite>, <cite>Omega Ruby</cite> and <cite>Alpha Sapphire</cite> fanlisting</a></li>
{{ /set }}
{{ /layout }}
{{ layout "partials/footer.vto" }}
<p>Made with ♥ by {{ sitemeta.siteAuthor.name }} • Shrine Launched: 21 November 2024</p>
{{ /layout }}

View File

@ -0,0 +1,27 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- Open Graph meta -->
<meta property="og:title" content="{{ title ? title : sitemeta.siteName }}">
{{ include "partials/meta.vto" }}
<!-- Feeds -->
{{ include "partials/feeds.vto" }}
<!-- Style -->
{{ include "partials/fonts.vto" }}
<link rel="stylesheet" href="/assets/css/root.css">
<title>{{ if title }} {{ title }} | {{ /if }} {{ sitemeta.siteName }}</title>
</head>
<body>
<main>
<img src="/assets/leilukin/Leilukins-Hub-website-banner.avif" alt="{{ sitemeta.siteName }} website banner">
<h1>{{ h1 }}</h1>
{{ content }}
</main>
</body>
</html>

View File

@ -0,0 +1,9 @@
---
layout: layout/content
---
{{ content }}
{{ if updated }}
<p class="update-info">(This {{ keyword ? keyword : "page" }} was last updated on <time datetime="{{ updated }}">{{ updated |> formatDate }}</time>)</p>
{{ /if }}

View File

@ -0,0 +1,79 @@
---
layout: layouts/content
sectionName: "Star Wars: Knights of the Old Republic Shrine"
---
{{- css }}{{ include "src/assets/css/starwarskotor.css" }}{{- /css }}
{{ set favicon }}
<link rel="icon" type="image/x-icon" href="/assets/shrines/starwarskotor/images/favicon.ico">
{{ /set }}
{{ layout "partials/hero.vto" }}
{{ set heroImg }}
<picture>
<source srcset="/assets/shrines/starwarskotor/images/swkotor-header-320.avif" media="(orientation: landscape)" />
<img src="/assets/shrines/starwarskotor/images/swkotor-header.avif" alt="anner of Star Wars: Knights of the Old Republic Shrine" />
</picture>
{{ /set }}
{{ set eventScript }}
const todayEvent = getTodayEvent();
if (todayEvent) {
heroTopBarEl.classList.remove('hidden');
heroTopBarEl.innerHTML = todayEvent;
}
function getTodayEvent() {
const date = new Date();
const month = date.getMonth() + 1;
const day = date.getDate();
const year = date.getFullYear();
const kotor1ReleaseDate = new Date("2003-07-15").getFullYear();
const kotor2ReleaseDate = new Date("2004-12-06").getFullYear();
const kotor1Anniversary = year - kotor1ReleaseDate;
const kotor2Anniversary = year - kotor2ReleaseDate;
if (month === 7 && day === 15)
return `
Today is the ${kotor1Anniversary}-year anniversary of the release of <cite>Star Wars: Knihgts of the Old Republic</cite>
`;
else if (month === 12 && day === 6)
return `
Today is the ${kotor2Anniversary}-year anniversary of the release of <cite>Star Wars: Knights of the Old Republic II — The Sith Lords</cite>
`;
else
return null;
}
{{ /set }}
{{ /layout }}
{{ layout "partials/navbar.vto" }}
{{ set shrineHomeUrl = "/shrines/starwarskotor/" }}
{{ set navbarLinks }}
{{ set navPages = collections.all | eleventyNavigation("KotOR Shrine") }}
{{ for entry of navPages }}
<li>
<a {{ if entry.url == page.url }}aria-current="page"{{ /if }} href="{{ entry.url }}">{{ entry.title }}</a>
</li>
{{ /for }}
{{ /set }}
{{ /layout }}
{{ layout "partials/shrineinfo.vto" }}
{{ set shrineAbout }}
<p>Welcome to {{ sitemeta.siteAuthor.name }}'s shrine for {{ cite "Star Wars: Knights of the Old Republic" }}, a series of role-playing video games set in the {{ cite "Star Wars" }} universe, taking place almost 4,000 years before the events of the Skywalker film saga.</p>
{{ /set }}
{{ set shrineLinks }}
<li><a href="https://kotor.neocities.org/">KOTOR Community Portal</a></li>
<li><a href="https://glitterskies.org/kotor/"><cite>Star Wars: KotOR</cite> fanlisting</a></li>
<li><a href="https://glitterskies.org/kotor2/"><cite>Star Wars: KotOR II</cite> fanlisting</a></li>
{{ /set }}
{{ /layout }}
{{ layout "partials/footer.vto" }}
<p>Made with ♥ and the Force by {{ sitemeta.siteAuthor.name }} • Shrine Launched: 17 February 2023</p>
{{ /layout }}

View File

@ -1,16 +0,0 @@
<ul>
{% for content in contentList %}
<li>
<p class="item-list__title">
<a href="{{ content.url }}">
{% if content.data.pageTitle %}{{ content.data.pageTitle | safe }}
{% elif content.data.title %}{{ content.data.title | safe }}
{% else %}
<code>{{ content.url }}</code>
{% endif %}
</a>
</p>
<time datetime="{{ content.date }}">{{ content.date | formatDate }}</time>
</li>
{% endfor %}
</ul>

View File

@ -1,5 +0,0 @@
{% extends "global/baselayout.html" %}
{% block hero %}{% include "main/hero.html" %}{% endblock %}
{% block navbar %}{% include "main/navbar.html" %}{% endblock %}
{% block footer %}{% include "main/footer.html" %}{% endblock %}

View File

@ -1,7 +0,0 @@
{% for log in changelogList | reverse %}
{% headingAnchor 2, log.fileSlug %}
{{ log.date | formatDate }}
{% endheadingAnchor %}
{{ log.content | safe }}
{%- endfor %}

View File

@ -1,5 +0,0 @@
---
layout: main/base
---
{% extends "global/content.html" %}

View File

@ -1,29 +0,0 @@
{% extends "global/footer.html" %}
{% block footerContent %}
<h2 class="visually-hidden">Footer Navigation:</h2>
{% set currentUrl %}{{ page.url }}{% endset %}
<ul class="inline-nav footer__links">
<li>
<a href="{{ sitemeta.feedPath }}"><svg class="inline-icon" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M0 64C0 46.3 14.3 32 32 32c229.8 0 416 186.2 416 416c0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96C14.3 96 0 81.7 0 64zM0 416a64 64 0 1 1 128 0A64 64 0 1 1 0 416zM32 160c159.1 0 288 128.9 288 288c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224c-17.7 0-32-14.3-32-32s14.3-32 32-32z"/></svg>RSS Feed</a>
</li>
<li><a
{% if currentUrl === "/sitemap/" %}aria-current="page"{% endif %}
href="/sitemap/
">Site Map</a></li>
{%- for link in collections["footer links"] -%}
<li><a
{% if link.url == page.url %}aria-current="page"{% endif %}
href="{{ link.url }}"
>{{ link.data.title }}</a></li>
{%- endfor -%}
{%- for statement in collections.statements -%}
<li><a
{% if statement.url == page.url %}aria-current="page"{% endif %}
href="{{ statement.url }}"
>{{ statement.data.title }}</a></li>
{%- endfor -%}
</ul>
<p>Made with ♥ by {{ sitemeta.siteAuthor.name }} since 11 September 2022</p>
{% endblock %}

View File

@ -1,11 +0,0 @@
{% extends "global/navbar.html" %}
{% block navbarLinks %}
{% set currentUrl %}{{ page.url }}{% endset %}
{% set navPages = collections["navbar links"] | eleventyNavigation %}
{%- for entry in navPages %}
<li>
<a {% if entry.url == page.url %}aria-current="page"{% endif %} href="{{ entry.url }}">{{ entry.title }}</a>
</li>
{%- endfor %}
{% endblock %}

View File

@ -1,9 +0,0 @@
---
layout: main/content
---
{{ content | safe }}
{% if updated %}
<p class="update-info">(This {{ keyword if keyword else "page" }} was last updated on <time datetime="{{ updated }}">{{ updated | formatDate }}</time>)</p>
{% endif %}

View File

@ -0,0 +1,16 @@
<ul>
{{ for content of contentList }}
<li>
<p class="item-list__title">
<a href="{{ content.url }}">
{{ if content.data.pageTitle }}{{ content.data.pageTitle }}
{{ else if content.data.title }}{{ content.data.title }}
{{ else }}
<code>{{ content.url }}</code>
{{ /if }}
</a>
</p>
<time datetime="{{ content.date }}">{{ content.date |> formatDate }}</time>
</li>
{{ /for }}
</ul>

View File

@ -0,0 +1,7 @@
{{ for log of changelogList |> toReversed }}
{{ headingAnchor 2, log.fileSlug }}
{{ log.date |> formatDate }}
{{ \/headingAnchor }}
{{ log.content }}
{{ /for }}

View File

@ -1,32 +1,32 @@
--- ---
layout: main/content layout: layouts/content
articleElement: true articleElement: true
--- ---
{% set currentUrl %}{{ page.url }}{% endset %} {{ set currentUrl = page.url }}
<nav class="changelog__nav" aria-labelledby="changelog-nav-title"> <nav class="changelog__nav" aria-labelledby="changelog-nav-title">
<p class="changelog__nav--title" id="changelog-nav-title">Changelog Archive:</p> <p class="changelog__nav--title" id="changelog-nav-title">Changelog Archive:</p>
<ul class="inline-nav changelog__nav--links"> <ul class="inline-nav changelog__nav--links">
<li><a <li><a
{% if currentUrl === "/changelogs/" %}aria-current="page"{% endif %} {{ if currentUrl === "/changelogs/" }}aria-current="page"{{ /if }}
href="/changelogs" href="/changelogs"
>Latest</a></li> >Latest</a></li>
{% set navPages = collections.all | eleventyNavigation("Changelogs") | reverse %} {{ set navPages = collections.all |> eleventyNavigation("Changelogs") |> toReversed }}
{%- for entry in navPages %} {{ for entry of navPages }}
<li><a <li><a
{% if entry.url == page.url %}aria-current="page"{% endif %} {{ if entry.url == page.url }}aria-current="page"{{ /if }}
href="{{ entry.url }}" href="{{ entry.url }}"
>{{ entry.title }}</a></li> >{{ entry.title }}</a></li>
{%- endfor %} {{ /for }}
</ul> </ul>
</nav> </nav>
<p>To get notified of the updates on this website, you can subscribe to its <a href="{{ sitemeta.feedPath }}"><svg class="inline-icon" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M0 64C0 46.3 14.3 32 32 32c229.8 0 416 186.2 416 416c0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96C14.3 96 0 81.7 0 64zM0 416a64 64 0 1 1 128 0A64 64 0 1 1 0 416zM32 160c159.1 0 288 128.9 288 288c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224c-17.7 0-32-14.3-32-32s14.3-32 32-32z"/></svg>RSS feed</a>, which contains new articles, blog posts and website changelogs.</p> <p>To get notified of the updates on this website, you can subscribe to its <a href="{{ sitemeta.feedPath }}"><svg class="inline-icon" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M0 64C0 46.3 14.3 32 32 32c229.8 0 416 186.2 416 416c0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96C14.3 96 0 81.7 0 64zM0 416a64 64 0 1 1 128 0A64 64 0 1 1 0 416zM32 160c159.1 0 288 128.9 288 288c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224c-17.7 0-32-14.3-32-32s14.3-32 32-32z"/></svg>RSS feed</a>, which contains new articles, blog posts and website changelogs.</p>
{{ content | safe }} {{ content }}
{%- css %} {{- css }}
.changelog__nav, .changelog__nav,
.changelog__nav--links { .changelog__nav--links {
display: flex; display: flex;
@ -59,4 +59,4 @@ articleElement: true
gap: 1em; gap: 1em;
} }
} }
{% endcss %} {{ /css }}

View File

@ -2,22 +2,22 @@
<nav class="content__nav sidebar--sticky" aria-labelledby="my-contents-title"> <nav class="content__nav sidebar--sticky" aria-labelledby="my-contents-title">
<h2 class="content__nav--title" id="my-contents-title">My Contents</h2> <h2 class="content__nav--title" id="my-contents-title">My Contents</h2>
<ul class="content__nav--links"> <ul class="content__nav--links">
{% for archive in collections.archive %} {{ for archive of collections.archive }}
<li><a href="{{ archive.url }}">{{ archive.data.title }}</a></li> <li><a href="{{ archive.url }}">{{ archive.data.title }}</a></li>
{% endfor %} {{ /for }}
<li><a href="/articles/">Articles</a></li> <li><a href="/articles/">Articles</a></li>
{% for page in collections["blog pages"] %} {{ for page of collections["blog pages"] }}
<li><a href="{{ page.url }}">{{ page.data.navTitle or page.data.title }}</a></li> <li><a href="{{ page.url }}">{{ page.data.navTitle || page.data.title }}</a></li>
{% endfor %} {{ /for }}
</ul> </ul>
</nav> </nav>
</aside> </aside>
{%- css %} {{- css }}
.content__nav { .content__nav {
padding: 1.2em clamp(1em, 5%, 1.5em); padding: 1.2em clamp(1em, 5%, 1.5em);
background-color: var(--clr-content-bg); background-color: var(--clr-content-bg);
} }
.content__nav--title { font-size: 1.7rem; } .content__nav--title { font-size: 1.7rem; }
{% endcss %} {{ /css }}

View File

@ -1,4 +1,4 @@
{% set cssFiles = [ {{ set cssFiles = [
"global", "global",
"a11y-syntax-highlighting-dark", "a11y-syntax-highlighting-dark",
"general", "general",
@ -7,8 +7,8 @@
"components", "components",
"pridesymbols", "pridesymbols",
"utility" "utility"
] %} ] }}
{%- for file in cssFiles -%} {{ for file of cssFiles }}
<link rel="stylesheet" href="{{'/assets/css/' + file + '.css'}}"> <link rel="stylesheet" href="{{'/assets/css/' + file + '.css'}}">
{%- endfor -%} {{ /for }}

View File

@ -4,11 +4,9 @@
<a rel="nofollow, noindex" href="{{ sitemeta.siteAuthor.emailDecoyUrl }}">Contact me by email</a> (<a href="https://useplaintext.email/">plain text email</a> encouraged) <a rel="nofollow, noindex" href="{{ sitemeta.siteAuthor.emailDecoyUrl }}">Contact me by email</a> (<a href="https://useplaintext.email/">plain text email</a> encouraged)
</p> </p>
{%- block footerContent %} {{ content }}
{{ footerContent }}
{% endblock -%}
{%- if tags and tags.includes("shrine pages") %} {{ if tags && tags.includes("shrine pages") }}
<nav class="footer__shrines" aria-labelledby="backto-title"> <nav class="footer__shrines" aria-labelledby="backto-title">
<p id="backto-title">Back to:</p> <p id="backto-title">Back to:</p>
<ul class="inline-nav footer__links"> <ul class="inline-nav footer__links">
@ -16,18 +14,18 @@
<li><a href="/">{{ sitemeta.siteName }}</a></li> <li><a href="/">{{ sitemeta.siteName }}</a></li>
</ul> </ul>
</nav> </nav>
{%- endif -%} {{ /if }}
<p> <p>
<svg class="inline-icon" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!--!Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M96 64c0-17.7 14.3-32 32-32l320 0 64 0c70.7 0 128 57.3 128 128s-57.3 128-128 128l-32 0c0 53-43 96-96 96l-192 0c-53 0-96-43-96-96L96 64zM480 224l32 0c35.3 0 64-28.7 64-64s-28.7-64-64-64l-32 0 0 128zM32 416l512 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32z"/></svg> <svg class="inline-icon" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!--!Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M96 64c0-17.7 14.3-32 32-32l320 0 64 0c70.7 0 128 57.3 128 128s-57.3 128-128 128l-32 0c0 53-43 96-96 96l-192 0c-53 0-96-43-96-96L96 64zM480 224l32 0c35.3 0 64-28.7 64-64s-28.7-64-64-64l-32 0 0 128zM32 416l512 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32z"/></svg>
<a href="https://ko-fi.com/leilukin">Support me on Ko-Fi</a> <a href="https://ko-fi.com/leilukin">Support me on Ko-Fi</a>
</p> </p>
{%- include "global/h-card.html" -%} {{ include "partials/h-card.vto" }}
{%- include "global/top-btn.html" %} {{ include "partials/top-btn.vto" }}
</footer> </footer>
{%- css %} {{ css }}
:root { --footer-gap: 0.5em; } :root { --footer-gap: 0.5em; }
.footer { .footer {
@ -50,4 +48,4 @@
.footer__links { justify-self: center; } .footer__links { justify-self: center; }
.footer__shrines { align-self: center; } .footer__shrines { align-self: center; }
{% endcss %} {{ /css }}

View File

@ -1,13 +1,11 @@
<header class="hero"> <header class="hero">
<div class="hero__top-bar hidden"></div> <div class="hero__top-bar hidden"></div>
<div class="hero__img"> <div class="hero__img">
{% block heroImg %}
{{ heroImg }} {{ heroImg }}
{% endblock %}
</div> </div>
</header> </header>
{%- css %} {{ css }}
.hero { .hero {
width: 100%; width: 100%;
background-color: var(--clr-hero-bg); background-color: var(--clr-hero-bg);
@ -33,14 +31,12 @@
overflow: hidden; overflow: hidden;
max-height: 16rem; max-height: 16rem;
} }
{% endcss %} {{ /css }}
{%- js %} {{ js }}
const hero = document.querySelector(".hero"); const hero = document.querySelector(".hero");
const heroTopBarEl = document.querySelector(".hero__top-bar"); const heroTopBarEl = document.querySelector(".hero__top-bar");
const headerImgEl = document.querySelector(".hero__img"); const headerImgEl = document.querySelector(".hero__img");
{% block eventScript %}
{{ eventScript }} {{ eventScript }}
{% endblock %} {{ /js }}
{% endjs %}

View File

@ -3,9 +3,9 @@
<meta name="author" content="{{ sitemeta.siteAuthor.name }}"> <meta name="author" content="{{ sitemeta.siteAuthor.name }}">
<meta name="description" content="{{ desc or metadata.desc or sitemeta.siteDescription }}"> <meta name="description" content="{{ desc or metadata.desc or sitemeta.siteDescription }}">
<meta name="fediverse:creator" content="{{ sitemeta.fediverseHandle }}"> <meta name="fediverse:creator" content="{{ sitemeta.fediverseHandle }}">
<meta property="og:site_name" content="{{ sitemeta.siteName | safe }}" /> <meta property="og:site_name" content="{{ sitemeta.siteName }}" />
<meta property="og:type" content="{{ "article" if isArticle or articleElement else "website" }}"> <meta property="og:type" content="{{ "article" if isArticle or articleElement else "website" }}">
<meta property="og:description" content="{{ desc or metadata.desc or sitemeta.siteDescription }}"> <meta property="og:description" content="{{ desc || metadata.desc || sitemeta.siteDescription }}">
<meta property="og:url" content="{{ sitemeta.siteUrl }}{{ page.url }}"> <meta property="og:url" content="{{ sitemeta.siteUrl }}{{ page.url }}">
<meta property="og:locale" content="{{ sitemeta.siteLocale }}"> <meta property="og:locale" content="{{ sitemeta.siteLocale }}">
<meta property="og:image" content="{{ sitemeta.siteUrl }}/assets/leilukin/leilukins-hub-meta-img.png"> <meta property="og:image" content="{{ sitemeta.siteUrl }}/assets/leilukin/leilukins-hub-meta-img.png">

View File

@ -1,29 +1,29 @@
{% set navLinksEl %} {{ set navLinksEl }}
{%- if tags and tags.includes("shrine pages") %} {{ if tags && tags.includes("shrine pages") }}
<li> <li>
<a {% if currentUrl === shrineHomeUrl %}aria-current="page"{% endif %} href="{{ shrineHomeUrl }}">Shrine Home</a> <a {{ if currentUrl === shrineHomeUrl }}aria-current="page"{{ /if }} href="{{ shrineHomeUrl }}">Shrine Home</a>
</li> </li>
{%- endif -%} {{ /if }}
{% block navbarLinks %}{% endblock %} {{ navbarLinks }}
{%- if tags and tags.includes("shrine pages") %} {{ if tags && tags.includes("shrine pages") }}
<li><a href="/shrines/">Shrine Directory</a></li> <li><a href="/shrines/">Shrine Directory</a></li>
<li><a href="/">Main Site</a></li> <li><a href="/">Main Site</a></li>
{%- endif -%} {{ /if }}
{% endset %} {{ /set }}
<nav class="navbar" aria-labelledby="top-level-nav-title"> <nav class="navbar" aria-labelledby="top-level-nav-title">
<h2 class="visually-hidden" id="top-level-nav-title">Top Level</h2> <h2 class="visually-hidden" id="top-level-nav-title">Top Level</h2>
<ul class="navbar__menu navbar__links">{{ navLinksEl | safe }}</ul> <ul class="navbar__menu navbar__links">{{ navLinksEl }}</ul>
<button class="navbar__toggle" popovertarget="nav-menu" aria-label="Toggle navigation menu"> <button class="navbar__toggle" popovertarget="nav-menu" aria-label="Toggle navigation menu">
<svg aria-hidden="true" focusable="false" width="1em" height="1em" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M0 96C0 78.3 14.3 64 32 64l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 128C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 288c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32L32 448c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z"/></svg> <svg aria-hidden="true" focusable="false" width="1em" height="1em" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M0 96C0 78.3 14.3 64 32 64l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 128C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 288c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32L32 448c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z"/></svg>
Navigation Navigation
</button> </button>
</nav> </nav>
<div popover id="nav-menu" class="navbar__popover"> <div popover id="nav-menu" class="navbar__popover">
<ul class="navbar__menu">{{ navLinksEl | safe }}</ul> <ul class="navbar__menu">{{ navLinksEl }}</ul>
</div> </div>
{%- css %} {{ css }}
.navbar { .navbar {
background: var(--clr-navbar-bg); background: var(--clr-navbar-bg);
width: 100%; width: 100%;
@ -102,4 +102,4 @@
.navbar__toggle, .navbar__popover { display: none; } .navbar__toggle, .navbar__popover { display: none; }
.navbar__links { display: flex; } .navbar__links { display: flex; }
} }
{% endcss %} {{ /css }}

View File

@ -1,19 +1,15 @@
<aside class="right-sidebar" aria-label="Right sidebar"> <aside class="right-sidebar" aria-label="Right sidebar">
<div class="shrine__info sidebar--sticky"> <div class="shrine__info sidebar--sticky">
<h2>About</h2> <h2>About</h2>
{% block shrineAbout %}
{{ shrineAbout }} {{ shrineAbout }}
{% endblock %}
<h3>Links</h3> <h3>Links</h3>
<ul> <ul>
{% block shrineLinks %}
{{ shrineLinks }} {{ shrineLinks }}
{% endblock %}
</ul> </ul>
</div> </div>
</aside> </aside>
{%- css %} {{ css }}
.right-sidebar { .right-sidebar {
background-color: var(--clr-content-bg); background-color: var(--clr-content-bg);
font-size: clamp(0.9rem, 0.9rem + 3vw, 1rem); font-size: clamp(0.9rem, 0.9rem + 3vw, 1rem);
@ -36,4 +32,4 @@
} }
.shrine__info ul { margin-top: 0.5em; } .shrine__info ul { margin-top: 0.5em; }
{% endcss %} {{ /css }}

View File

@ -4,12 +4,12 @@
<summary class="toc__heading" id="toc-heading"> <summary class="toc__heading" id="toc-heading">
Table of Contents Table of Contents
</summary> </summary>
{{ content | toc | safe }} {{ content |> toc }}
</details> </details>
</details-utils> </details-utils>
</aside> </aside>
{%- css %} {{- css }}
.toc__wrapper { .toc__wrapper {
max-height: var(--ht-sticky-sidebar); max-height: var(--ht-sticky-sidebar);
overflow-x: auto; overflow-x: auto;
@ -54,4 +54,4 @@
padding: 0; padding: 0;
font-size: 1rem; font-size: 1rem;
} }
{% endcss %} {{ endcss }}

View File

@ -5,7 +5,7 @@
Back to Top Back to Top
</a> </a>
{%- css %} {{- css }}
.top-btn, .top-btn,
.top-btn:hover { .top-btn:hover {
color: var(--clr-top-btn-txt); color: var(--clr-top-btn-txt);
@ -40,4 +40,4 @@
stroke: currentColor; stroke: currentColor;
fill: currentColor; fill: currentColor;
} }
{% endcss %} {{ /css }}

View File

@ -1,19 +0,0 @@
{%- css %}{% include "src/assets/css/pokemonoras.css" %}{%- endcss %}
{% extends "global/baselayout.html" %}
{% block metaTitle %}
<meta property="og:title" content="{{ title + ' | ' if title }}Pokémon Omega Ruby and Alpha Sapphire Shrine">
{% endblock %}
{% block pageTitle %}
{{ title + " | " if title }}Pokémon Omega Ruby and Alpha Sapphire Shrine | {{ sitemeta.siteName | safe }}
{% endblock %}
{% block favicon %}
<link rel="icon" type="image/x-icon" href="/assets/shrines/pokemonoras/images/favicon.ico">
{% endblock %}
{% block hero %}{% include "pokemonoras/hero.html" %}{% endblock %}
{% block navbar %}{% include "pokemonoras/navbar.html" %}{% endblock %}
{% block footer %}{% include "pokemonoras/footer.html" %}{% endblock %}

View File

@ -1,7 +0,0 @@
---
layout: pokemonoras/base
---
{% extends "global/content.html" %}
{% block shrineInfo %}{% include "pokemonoras/shrineinfo.html" %}{% endblock %}

View File

@ -1,6 +0,0 @@
{% extends "global/footer.html" %}
{% block footerContent %}
<p>Made with ♥ by {{ sitemeta.siteAuthor.name }} • Shrine Launched: 21 November 2024</p>
{% endblock %}

View File

@ -1,34 +0,0 @@
{% extends "global/hero.html" %}
{% block heroImg %}
<picture>
<source srcset="/assets/shrines/pokemonoras/images/pokemonoras-header-320.avif" media="(orientation: landscape)" />
<img src="/assets/shrines/pokemonoras/images/pokemonoras-header-640.avif" alt="Banner of Pokémon Omega Ruby and Alpha Sapphire Shrine" />
</picture>
{% endblock %}
{% block eventScript %}
const todayEvent = getTodayEvent();
if (todayEvent) {
heroTopBarEl.classList.remove('hidden');
heroTopBarEl.innerHTML = todayEvent;
}
function getTodayEvent() {
const date = new Date();
const month = date.getMonth() + 1;
const day = date.getDate();
const year = date.getFullYear();
const orasReleaseDate = new Date("2014-11-21").getFullYear();
const orasAnniversary = year - orasReleaseDate;
if (month === 11 && day === 21)
return `
Today is the ${orasAnniversary}-year anniversary of the release of <cite>Pokémon Omega Ruby"</cite> and <cite>Alpha Sapphire</cite>!
`;
else
return null;
}
{% endblock %}

View File

@ -1,11 +0,0 @@
{% extends "global/navbar.html" %}
{% set shrineHomeUrl = "/shrines/pokemonoras/" %}
{% block navbarLinks %}
{% set navPages = collections.all | eleventyNavigation("ORAS Shrine") %}
{%- for entry in navPages %}
<li>
<a {% if entry.url == page.url %}aria-current="page"{% endif %} href="{{ entry.url }}">{{ entry.title }}</a>
</li>
{%- endfor %}
{% endblock %}

View File

@ -1,10 +0,0 @@
{% extends "global/shrineinfo.html" %}
{% block shrineAbout %}
<p>Welcome to {{ sitemeta.siteAuthor.name }}'s shrine for {% cite "Pokémon Omega Ruby and Alpha Sapphire" %}, remakes of the 2002 Game Boy Advance role-playing video games {% cite "Pokémon Ruby" %} and {% cite "Pokémon Sapphire" %}. The games are part of the sixth generation of the {% cite "Pokémon" %} main series of video games, developed by Game Freak and published by The Pokémon Company and Nintendo for the Nintendo 3DS.</p>
{% endblock %}
{% block shrineLinks %}
<li><a href="https://bulbapedia.bulbagarden.net/wiki/Pok%C3%A9mon_Omega_Ruby_and_Alpha_Sapphire">Bulbapedia</a></li>
<li><a href="https://pkmn.redcrown.net/hoenn/"><cite>Pokémon Ruby</cite>, <cite>Sapphire</cite>, <cite>Omega Ruby</cite> and <cite>Alpha Sapphire</cite> fanlisting</a></li>
{% endblock %}

View File

@ -1,19 +0,0 @@
{%- css %}{% include "src/assets/css/starwarskotor.css" %}{%- endcss %}
{% extends "global/baselayout.html" %}
{% block metaTitle %}
<meta property="og:title" content="{{ title + ' | ' if title }}Star Wars: Knights of the Old Republic Shrine">
{% endblock %}
{% block pageTitle %}
{{ title + " | " if title }}Star Wars: Knights of the Old Republic Shrine | {{ sitemeta.siteName | safe }}
{% endblock %}
{% block favicon %}
<link rel="icon" type="image/x-icon" href="/assets/shrines/starwarskotor/images/favicon.ico">
{% endblock %}
{% block hero %}{% include "starwarskotor/hero.html" %}{% endblock %}
{% block navbar %}{% include "starwarskotor/navbar.html" %}{% endblock %}
{% block footer %}{% include "starwarskotor/footer.html" %}{% endblock %}

View File

@ -1,7 +0,0 @@
---
layout: starwarskotor/base
---
{% extends "global/content.html" %}
{% block shrineInfo %}{% include "starwarskotor/shrineinfo.html" %}{% endblock %}

View File

@ -1,6 +0,0 @@
{% extends "global/footer.html" %}
{% block footerContent %}
<p>Made with ♥ and the Force by {{ sitemeta.siteAuthor.name }} • Shrine Launched: 17 February 2023</p>
{% endblock %}

View File

@ -1,40 +0,0 @@
{% extends "global/hero.html" %}
{% block heroImg %}
<picture>
<source srcset="/assets/shrines/starwarskotor/images/swkotor-header-320.avif" media="(orientation: landscape)" />
<img src="/assets/shrines/starwarskotor/images/swkotor-header.avif" alt="anner of Star Wars: Knights of the Old Republic Shrine" />
</picture>
{% endblock %}
{% block eventScript %}
const todayEvent = getTodayEvent();
if (todayEvent) {
heroTopBarEl.classList.remove('hidden');
heroTopBarEl.innerHTML = todayEvent;
}
function getTodayEvent() {
const date = new Date();
const month = date.getMonth() + 1;
const day = date.getDate();
const year = date.getFullYear();
const kotor1ReleaseDate = new Date("2003-07-15").getFullYear();
const kotor2ReleaseDate = new Date("2004-12-06").getFullYear();
const kotor1Anniversary = year - kotor1ReleaseDate;
const kotor2Anniversary = year - kotor2ReleaseDate;
if (month === 7 && day === 15)
return `
Today is the ${kotor1Anniversary}-year anniversary of the release of <cite>Star Wars: Knihgts of the Old Republic</cite>
`;
else if (month === 12 && day === 6)
return `
Today is the ${kotor2Anniversary}-year anniversary of the release of <cite>Star Wars: Knights of the Old Republic II — The Sith Lords</cite>
`;
else
return null;
}
{% endblock %}

View File

@ -1,11 +0,0 @@
{% extends "global/navbar.html" %}
{% set shrineHomeUrl = "/shrines/starwarskotor/" %}
{% block navbarLinks %}
{% set navPages = collections.all | eleventyNavigation("KotOR Shrine") %}
{%- for entry in navPages %}
<li>
<a {% if entry.url == page.url %}aria-current="page"{% endif %} href="{{ entry.url }}">{{ entry.title }}</a>
</li>
{%- endfor %}
{% endblock %}

View File

@ -1,11 +0,0 @@
{% extends "global/shrineinfo.html" %}
{% block shrineAbout %}
<p>Welcome to {{ sitemeta.siteAuthor.name }}'s shrine for {% cite "Star Wars: Knights of the Old Republic" %}, a series of role-playing video games set in the {% cite "Star Wars" %} universe, taking place almost 4,000 years before the events of the Skywalker film saga.</p>
{% endblock %}
{% block shrineLinks %}
<li><a href="https://kotor.neocities.org/">KOTOR Community Portal</a></li>
<li><a href="https://glitterskies.org/kotor/"><cite>Star Wars: KotOR</cite> fanlisting</a></li>
<li><a href="https://glitterskies.org/kotor2/"><cite>Star Wars: KotOR II</cite> fanlisting</a></li>
{% endblock %}

View File

@ -1,5 +1,5 @@
--- ---
layout: main/content layout: layouts/content
tags: navbar links tags: navbar links
metadata: metadata:
title: Home title: Home
@ -9,9 +9,9 @@ eleventyNavigation:
key: Home key: Home
order: 1 order: 1
eleventyComputed: eleventyComputed:
pageTitle: Welcome to {{ sitemeta.siteName | safe }}! pageTitle: Welcome to {{ sitemeta.siteName }}!
metadata: metadata:
desc: Home page of {{ sitemeta.siteName | safe }}. desc: Home page of {{ sitemeta.siteName }}.
--- ---
<section class="content__section"> <section class="content__section">
@ -37,7 +37,7 @@ eleventyComputed:
<section class="content__section"> <section class="content__section">
<h2>Link to My Website</h2> <h2>Link to My Website</h2>
{% include "main/my-button.html" %} {{ include "main/my-button.html" }}
</section> </section>
<section class="content__section"> <section class="content__section">
@ -51,25 +51,25 @@ eleventyComputed:
<section class="content__section"> <section class="content__section">
<h2>What is New?</h2> <h2>What is New?</h2>
<div class="text-box"> <div class="text-box">
{% for log in collections["changelogs"] | reverse | itemLimit(1) %} {{ for log of collections["changelogs"] |> toReversed |> itemLimit(1) }}
<h3>{{ log.data.title }}</h3> <h3>{{ log.data.title }}</h3>
{{ log.content | safe }} {{ log.content }}
{%- endfor %} {{ /for }}
<p><a href="/changelogs">View all site changelogs</a></p> <p><a href="/changelogs">View all site changelogs</a></p>
</div> </div>
<p>You can subscribe to the <a href="{{ sitemeta.feedPath }}"><svg class="inline-icon" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M0 64C0 46.3 14.3 32 32 32c229.8 0 416 186.2 416 416c0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96C14.3 96 0 81.7 0 64zM0 416a64 64 0 1 1 128 0A64 64 0 1 1 0 416zM32 160c159.1 0 288 128.9 288 288c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224c-17.7 0-32-14.3-32-32s14.3-32 32-32z"/></svg>{{ sitemeta.siteName }} RSS feed</a> to get notified of the updates on this website, including new articles, blog posts and website changelogs.</p> <p>You can subscribe to the <a href="{{ sitemeta.feedPath }}"><svg class="inline-icon" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M0 64C0 46.3 14.3 32 32 32c229.8 0 416 186.2 416 416c0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96C14.3 96 0 81.7 0 64zM0 416a64 64 0 1 1 128 0A64 64 0 1 1 0 416zM32 160c159.1 0 288 128.9 288 288c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224c-17.7 0-32-14.3-32-32s14.3-32 32-32z"/></svg>{{ sitemeta.siteName }} RSS feed</a> to get notified of the updates on this website, including new articles, blog posts and website changelogs.</p>
{% include "main/statuscafe.html" %} {{ include "main/statuscafe.html" }}
</section> </section>
<section class="content__section"> <section class="content__section">
<h2>Always Proud</h2> <h2>Always Proud</h2>
<div class="flag-el flag-progress-intersex-lesbian" role="img" aria-label="Custom pride flag which combines the lesbian pride flag and the progress pride flag triangle" style="margin-bottom: 1em;"></div> <div class="flag-el flag-progress-intersex-lesbian" role="img" aria-label="Custom pride flag which combines the lesbian pride flag and the progress pride flag triangle" style="margin-bottom: 1em;"></div>
{%- macro prideButton(file, alt, width=88, height=31) -%} {{- macro prideButton(file, alt, width=88, height=31) -}}
<li data-tooltip> <li data-tooltip>
<img src="/assets/buttons/pride/{{ file }}.png" alt="{{ alt }}" data-tooltip-trigger title="{{ alt }}" width="{{ width }}" height="{{ height }}" loading="lazy" tabindex="0"> <img src="/assets/buttons/pride/{{ file }}.png" alt="{{ alt }}" data-tooltip-trigger title="{{ alt }}" width="{{ width }}" height="{{ height }}" loading="lazy" tabindex="0">
</li> </li>
{%- endmacro -%} {{- endmacro -}}
<ul class="web-graphics"> <ul class="web-graphics">
{{ prideButton("progress", "Progress Flag by Daniel Quasar (2018)") }} {{ prideButton("progress", "Progress Flag by Daniel Quasar (2018)") }}
{{ prideButton("9_stripe", "Nine-Stripe Rainbow Flag by Gilbert Baker (2017)") }} {{ prideButton("9_stripe", "Nine-Stripe Rainbow Flag by Gilbert Baker (2017)") }}
@ -87,7 +87,7 @@ eleventyComputed:
<section class="content__section"> <section class="content__section">
<h2>Web Cliques</h2> <h2>Web Cliques</h2>
{% include "main/webcliques.html" %} {{ include "main/webcliques.html" }}
</section> </section>
<section class="content__section"> <section class="content__section">
@ -210,5 +210,5 @@ eleventyComputed:
<section class="content__section"> <section class="content__section">
<h2>Support Me</h2> <h2>Support Me</h2>
{% include "main/support-me.html" %} {{ include "components/support-me.vto" }}
</section> </section>

View File

@ -4,13 +4,13 @@ date: 2023-01-29
toc: true toc: true
--- ---
{% headingAnchor 3 %}Web Cliques{% endheadingAnchor %} {{ headingAnchor 3 }}Web Cliques{{ \/headingAnchor }}
{% include "main/webcliques.html" %} {{ include "components/webcliques.vto" }}
{% headingAnchor 3 %}Fanlistings{% endheadingAnchor %} {{ headingAnchor 3 }}Fanlistings{{ \/headingAnchor }}
<p>Check out <a href="https://fan.leilukin.com/">Beehive, my fanlisting collective</a> to see all the fanlistings I own, have joined or have applied to join.</p> <p>Check out <a href="https://fan.leilukin.com/">Beehive, my fanlisting collective</a> to see all the fanlistings I own, have joined or have applied to join.</p>
{% headingAnchor 3 %}Webrings{% endheadingAnchor %} {{ headingAnchor 3 }}Webrings{{ \/headingAnchor }}
<ul class="web-graphics"> <ul class="web-graphics">
<li> <li>
<script src="https://astroring.auroradynia.com/ring.js"></script> <script src="https://astroring.auroradynia.com/ring.js"></script>

View File

@ -4,15 +4,15 @@ date: 2023-01-28
toc: true toc: true
--- ---
{%- macro siteButton(url, file, alt, tooltip=alt, width=88, height=31) -%} {{ function siteButton(url, file, alt, tooltip=alt, width=88, height=31) -}}
<li data-tooltip> <li data-tooltip>
<a href="{{ url }}" data-tooltip-trigger title="{{ tooltip }}"> <a href="{{ url }}" data-tooltip-trigger title="{{ tooltip }}">
<img src="/assets/buttons/{{ file }}" alt="{{ alt }}" width="{{ width }}" height="{{ height }}" loading="lazy"> <img src="/assets/buttons/{{ file }}" alt="{{ alt }}" width="{{ width }}" height="{{ height }}" loading="lazy">
</a> </a>
</li> </li>
{%- endmacro -%} {{ /function }}
{% headingAnchor 3 %}Personal Sites I Enjoy{% endheadingAnchor %} {{ headingAnchor 3 }}Personal Sites I Enjoy{{ /headingAnchor }}
<h4 class="visually-hidden">Websites with Buttons</h4> <h4 class="visually-hidden">Websites with Buttons</h4>
<ul class="web-graphics"> <ul class="web-graphics">
@ -57,7 +57,7 @@ toc: true
<li><a href="https://yequari.com/">yequari.com</a></li> <li><a href="https://yequari.com/">yequari.com</a></li>
</ul> </ul>
{% headingAnchor 3 %}Web Directories{% endheadingAnchor %} {{ headingAnchor 3 }}Web Directories{{ endheadingAnchor }}
<h4 class="visually-hidden">Directories with Site Buttons</h4> <h4 class="visually-hidden">Directories with Site Buttons</h4>
<ul class="web-graphics"> <ul class="web-graphics">
{{ siteButton("https://pinkvampyr.leprd.space/accessiblenet/", "directories/accessiblenet.png", "Accessibility Net Directory") }} {{ siteButton("https://pinkvampyr.leprd.space/accessiblenet/", "directories/accessiblenet.png", "Accessibility Net Directory") }}
@ -75,7 +75,7 @@ toc: true
<li><a href="https://personalsit.es/">PersonalSit.es</a></li> <li><a href="https://personalsit.es/">PersonalSit.es</a></li>
</ul> </ul>
{% headingAnchor 3 %}Communities{% endheadingAnchor %} {{ headingAnchor 3 }}Communities{{ endheadingAnchor }}
<ul class="web-graphics"> <ul class="web-graphics">
{{ siteButton("https://32bit.cafe/", "communities/32-bit-cafe.png", "32-Bit Cafe") }} {{ siteButton("https://32bit.cafe/", "communities/32-bit-cafe.png", "32-Bit Cafe") }}
{{ siteButton("https://zine.kalechips.net/index", "communities/saladmagazine.png", "Salad Magazine") }} {{ siteButton("https://zine.kalechips.net/index", "communities/saladmagazine.png", "Salad Magazine") }}

View File

@ -1,5 +1,5 @@
--- ---
layout: asummersend/content layout: layouts/asummersend
pageTitle: A Summers End — Hong Kong 1986 Shrine pageTitle: A Summers End — Hong Kong 1986 Shrine
tags: ["shrine home", "contents"] tags: ["shrine home", "contents"]
categories: ["shrines", "a summer's end"] categories: ["shrines", "a summer's end"]

View File

@ -1,5 +1,5 @@
--- ---
layout: asummersend/content layout: layouts/asummersend
title: Gallery title: Gallery
pageTitle: A Summers End — Hong Kong 1986 Gallery pageTitle: A Summers End — Hong Kong 1986 Gallery
desc: My gallery for A Summers End — Hong Kong 1986. desc: My gallery for A Summers End — Hong Kong 1986.

View File

@ -1,5 +1,5 @@
--- ---
layout: asummersend/content layout: layouts/asummersend
title: Playlists title: Playlists
pageTitle: A Summers End — Hong Kong 1986 Playlists pageTitle: A Summers End — Hong Kong 1986 Playlists
desc: List of A Summers End — Hong Kong 1986 playlists. desc: List of A Summers End — Hong Kong 1986 playlists.

View File

@ -1,5 +1,5 @@
--- ---
layout: asummersend/content layout: layouts/asummersend
title: Trivia title: Trivia
pageTitle: A Summers End — Hong Kong 1986 Trivia pageTitle: A Summers End — Hong Kong 1986 Trivia
desc: A collection of trivia about A Summers End — Hong Kong 1986. desc: A collection of trivia about A Summers End — Hong Kong 1986.

View File

@ -1,5 +1,5 @@
--- ---
layout: cassettebeasts/content layout: layouts/cassettebeasts
pageTitle: Cassette Beasts Shrine pageTitle: Cassette Beasts Shrine
tags: ["shrine home", "contents"] tags: ["shrine home", "contents"]
categories: ["shrines", "cassette beasts"] categories: ["shrines", "cassette beasts"]

View File

@ -1,5 +1,5 @@
--- ---
layout: cassettebeasts/content layout: layouts/cassettebeasts
title: Articles title: Articles
pageTitle: Cassette Beasts Articles pageTitle: Cassette Beasts Articles
desc: List of articles written by me or other people that I recommend for Cassette Beasts. desc: List of articles written by me or other people that I recommend for Cassette Beasts.

View File

@ -1,6 +1,6 @@
export default { export default {
tags: ["contents", "feed items", "cassette beasts articles"], tags: ["contents", "feed items", "cassette beasts articles"],
layout: "cassettebeasts/content", layout: "layouts/cassettebeasts",
isArticle: true, isArticle: true,
eleventyComputed: { eleventyComputed: {
title: (data) => `${data.articleTitle} | Articles`, title: (data) => `${data.articleTitle} | Articles`,

View File

@ -1,5 +1,5 @@
--- ---
layout: cassettebeasts/content layout: layouts/cassettebeasts
title: Facts title: Facts
pageTitle: Cassette Beasts Facts pageTitle: Cassette Beasts Facts
desc: A collection of facts and trivia about Cassette Beasts. desc: A collection of facts and trivia about Cassette Beasts.

View File

@ -1,5 +1,5 @@
--- ---
layout: cassettebeasts/content layout: layouts/cassettebeasts
title: Featured title: Featured
pageTitle: Cassette Beasts Featured Pieces pageTitle: Cassette Beasts Featured Pieces
desc: A collection of reviews, articles and commentary videos from other people about Cassette Beasts. desc: A collection of reviews, articles and commentary videos from other people about Cassette Beasts.

View File

@ -1,5 +1,5 @@
--- ---
layout: cassettebeasts/content layout: layouts/cassettebeasts
title: Game Log title: Game Log
pageTitle: Cassette Beasts Game Log pageTitle: Cassette Beasts Game Log
desc: A catalogue of my Cassette Beasts characters and save profiles. desc: A catalogue of my Cassette Beasts characters and save profiles.

View File

@ -1,5 +1,5 @@
--- ---
layout: cassettebeasts/content layout: layouts/cassettebeasts
title: Resources title: Resources
pageTitle: Cassette Beasts Resources pageTitle: Cassette Beasts Resources
desc: A collection of resources for Cassette Beasts. desc: A collection of resources for Cassette Beasts.

View File

@ -1,5 +1,5 @@
--- ---
layout: pokemonoras/content layout: layouts/pokemonoras
pageTitle: Pokémon Omega Ruby and Alpha Sapphire Shrine pageTitle: Pokémon Omega Ruby and Alpha Sapphire Shrine
tags: ["shrine home", "contents"] tags: ["shrine home", "contents"]
categories: ["shrines", "pokemon", "pokemon oras"] categories: ["shrines", "pokemon", "pokemon oras"]

View File

@ -1,5 +1,5 @@
--- ---
layout: starwarskotor/content layout: layouts/starwarskotor
pageTitle: "Star Wars: Knights of the Old Republic Shrine" pageTitle: "Star Wars: Knights of the Old Republic Shrine"
tags: ["shrine home", "contents"] tags: ["shrine home", "contents"]
categories: ["shrines", "star wars kotor", "star wars kotor 2"] categories: ["shrines", "star wars kotor", "star wars kotor 2"]

View File

@ -1,5 +1,5 @@
--- ---
layout: starwarskotor/content layout: layouts/starwarskotor
title: Articles title: Articles
pageTitle: "Star Wars: Knights of the Old Republic Articles" pageTitle: "Star Wars: Knights of the Old Republic Articles"
desc: "List of articles written by me or other people that I recommend for the Star Wars: Knights of the Old Republic series." desc: "List of articles written by me or other people that I recommend for the Star Wars: Knights of the Old Republic series."

View File

@ -1,6 +1,6 @@
export default { export default {
tags: ["contents", "feed items", "kotor articles"], tags: ["contents", "feed items", "kotor articles"],
layout: "starwarskotor/content", layout: "layouts/starwarskotor",
isArticle: true, isArticle: true,
eleventyComputed: { eleventyComputed: {
title: (data) => `${data.articleTitle} | Articles`, title: (data) => `${data.articleTitle} | Articles`,

View File

@ -1,5 +1,5 @@
--- ---
layout: starwarskotor/content layout: layouts/starwarskotor
title: Guides title: Guides
pageTitle: "Star Wars: Knights of the Old Republic Guides" pageTitle: "Star Wars: Knights of the Old Republic Guides"
desc: "List of guides for the Star Wars: Knights of the Old Republic series I have written or found useful. This page also includes lists of cheats." desc: "List of guides for the Star Wars: Knights of the Old Republic series I have written or found useful. This page also includes lists of cheats."

View File

@ -1,6 +1,6 @@
export default { export default {
tags: ["contents", "feed items", "kotor guides"], tags: ["contents", "feed items", "kotor guides"],
layout: "starwarskotor/content", layout: "layouts/starwarskotor",
isArticle: true, isArticle: true,
eleventyComputed: { eleventyComputed: {
title: (data) => `${data.articleTitle} | Guides`, title: (data) => `${data.articleTitle} | Guides`,

View File

@ -1,5 +1,5 @@
--- ---
layout: starwarskotor/content layout: layouts/starwarskotor
title: Resources title: Resources
pageTitle: "Star Wars: Knights of the Old Republic Resources" pageTitle: "Star Wars: Knights of the Old Republic Resources"
desc: "List of Star Wars: Knights of the Old Republic resources I have created or compiled myself.." desc: "List of Star Wars: Knights of the Old Republic resources I have created or compiled myself.."

View File

@ -1,6 +1,6 @@
export default { export default {
tags: ["contents", "kotor resources"], tags: ["contents", "kotor resources"],
layout: "starwarskotor/content", layout: "layouts/starwarskotor",
hasBreadcrumbs: true, hasBreadcrumbs: true,
articleElement: true, articleElement: true,
eleventyComputed: { eleventyComputed: {

View File

@ -1,5 +1,5 @@
--- ---
layout: starwarskotor/content layout: layouts/starwarskotor
title: Universes title: Universes
pageTitle: "Leilukin's Star Wars: Knights of the Old Republic Universes" pageTitle: "Leilukin's Star Wars: Knights of the Old Republic Universes"
desc: "My universes and headcanons for Star Wars: Knights of the Old Republic series." desc: "My universes and headcanons for Star Wars: Knights of the Old Republic series."

View File

@ -6,5 +6,5 @@ eleventyNavigation:
order: 11 order: 11
--- ---
{% set contentList = collections.contents | reverse %} {{ set contentList = collections.contents |> toReversed }}
{% include "main/archive.html" %} {{ include "layouts/archive.vto" }}

View File

@ -7,11 +7,11 @@ eleventyNavigation:
--- ---
<ul> <ul>
{% for category in collections.categories %} {{ for category of collections.categories }}
{% set categoryUrl %}/categories/{{ category | slugify }}/{% endset %} {{ set categoryUrl }}/categories/{{ category | slugify }}/{{ /set }}
{% set categoryPostCount = collections.contents | filterByCategory(category) | length %} {{ set categoryPostCount = collections.contents | filterByCategory(category) |> itemCount }}
<li><a href="{{ categoryUrl }}">{{ category }}</a> ({{ categoryPostCount }})</li> <li><a href="{{ categoryUrl }}">{{ category }}</a> ({{ categoryPostCount }})</li>
{% endfor %} {{ /for }}
</ul> </ul>
<p>See all contents on this website in the <a href="/archive/">archive</a>.</p> <p>See all contents on this website in the <a href="/archive/">archive</a>.</p>

View File

@ -1,19 +0,0 @@
---
pagination:
data: collections.categories
size: 1
alias: category
permalink: /categories/{{ category | slugify }}/
eleventyExcludeFromCollections: true
eleventyComputed:
title: 'Content Category: "{{ category | safe }}"'
desc: All contents under the "{{ category | safe }}" category on {{ sitemeta.siteName | safe }}.
---
{% set contentCount = collections.contents | filterByCategory(category) | length %}
<h2>{{ contentCount }} Contents Filed Under "{{ category }}"</h2>
{% set contentList = collections.contents | filterByCategory(category) | reverse %}
{% include "main/archive.html" %}
<p>See <a href="/categories/">all content categories</a>.</p>

View File

@ -0,0 +1,19 @@
---
pagination:
data: collections.categories
size: 1
alias: category
permalink: /categories/{{ category |> slugify }}/
eleventyExcludeFromCollections: true
eleventyComputed:
title: 'Content Category: "{{ category }}"'
desc: All contents under the "{{ category }}" category on {{ sitemeta.siteName }}.
---
{{ set contentCount = collections.contents |> filterByCategory(category) |> itemCount }}
<h2>{{ contentCount }} Contents Filed Under "{{ category }}"</h2>
{{ set contentList = collections.contents |> filterByCategory(category) |> toReversed }}
{{ include "layouts/archive.vto" }}
<p>See <a href="/categories/">all content categories</a>.</p>

View File

@ -8,18 +8,18 @@ pagination:
size: 20 size: 20
alias: changelogs alias: changelogs
reverse: true reverse: true
permalink: "/{{ page.fileSlug }}{% if pagination.pageNumber > 0 %}/page/{{ pagination.pageNumber + 1 }}{% endif %}/" permalink: "/{{ page.fileSlug }}{{ if pagination.pageNumber > 0 }}/page/{{ pagination.pageNumber + 1 }}{{ /if }}/"
eleventyNavigation: eleventyNavigation:
key: Changelogs key: Changelogs
order: 9 order: 9
--- ---
<h2>Latest Changelogs</h2> <h2>Latest Changelogs</h2>
{% for log in changelogs %} {{ for log of changelogs }}
<h3 class="date-style"><time datetime="{{ log.date }}">{{ log.date | formatDate }}</time></h3> <h3 class="date-style"><time datetime="{{ log.date }}">{{ log.date |> formatDate }}</time></h3>
{{ log.content | safe }} {{ log.content }}
{%- endfor %} {{ /for }}
{% include "global/pagination-oldnew.html" %} {{ include "components/pagination-oldnew.vto" }}
{%- css %}* + h2, * + h3 { margin-top: 1.5em; }{% endcss %} {{- css }}* + h2, * + h3 { margin-top: 1.5em; }{{ /css }}

View File

@ -4,22 +4,22 @@ eleventyExcludeFromCollections: true
navigationOptions: navigationOptions:
listClass: "sitemap" listClass: "sitemap"
eleventyComputed: eleventyComputed:
desc: Site map of {{ sitemeta.siteName | safe }}. desc: Site map of {{ sitemeta.siteName }}.
--- ---
<p>Navigation for browsing {{ sitemeta.siteName }}.</p> <p>Navigation for browsing {{ sitemeta.siteName }}.</p>
<h2>Subsites</h2> <h2>Subsites</h2>
<ul class="sitemap"> <ul class="sitemap">
{% for site in sitemeta.subsites %} {{ for site of sitemeta.subsites }}
<li><a href="{{ site.siteUrl() }}">{{ site.siteName }}</a></li> <li><a href="{{ site.siteUrl() }}">{{ site.siteName }}</a></li>
{% endfor %} {{ endfor }}
</ul> </ul>
<h2>Main Site</h2> <h2>Main Site</h2>
{{ collections.all | eleventyNavigation | eleventyNavigationToHtml(navigationOptions) | safe }} {{ collections.all |> eleventyNavigation |> eleventyNavigationToHtml(navigationOptions) }}
{%- css %} {{- css }}
main ul { main ul {
display: grid; display: grid;
gap: 0.5rem; gap: 0.5rem;
@ -44,4 +44,4 @@ main ul {
.sitemap ul li::marker { content: "★"; } .sitemap ul li::marker { content: "★"; }
.sitemap ul ul li::marker { content: "♥"; } .sitemap ul ul li::marker { content: "♥"; }
.sitemap ul ul ul li::marker { content: "❣"; } .sitemap ul ul ul li::marker { content: "❣"; }
{% endcss %} {{ /css }}

View File

@ -9,48 +9,48 @@ eleventyNavigation:
order: 8 order: 8
--- ---
{%- macro virtualPet(url, img, alt, tooltip=alt) -%} {{ function virtualPet(url, img, alt, tooltip=alt) -}}
<li data-tooltip> <li data-tooltip>
<a href="{{ url }}" data-tooltip-trigger title="{{ tooltip }}"> <a href="{{ url }}" data-tooltip-trigger title="{{ tooltip }}">
<img src="{{ img }}" alt="{{ alt }}" loading="lazy"> <img src="{{ img }}" alt="{{ alt }}" loading="lazy">
</a> </a>
</li> </li>
{%- endmacro -%} {{ /function }}
{%- macro myPixelArt(file, alt, tooltip=alt) -%} {{ function myPixelArt(file, alt, tooltip=alt) -}}
<li data-tooltip> <li data-tooltip>
<img src="/assets/adoptables/{{ file }}" alt="{{ alt }}" data-tooltip-trigger title="{{ tooltip }}" loading="lazy" tabindex="0"> <img src="/assets/adoptables/{{ file }}" alt="{{ alt }}" data-tooltip-trigger title="{{ tooltip }}" loading="lazy" tabindex="0">
</li> </li>
{%- endmacro -%} {{ /functioin }}
{%- macro adoptable(url, file, alt, tooltip=alt) -%} {{ function adoptable(url, file, alt, tooltip=alt) }}
<li data-tooltip> <li data-tooltip>
<a href="{{ url }}" data-tooltip-trigger title="{{ tooltip }}"> <a href="{{ url }}" data-tooltip-trigger title="{{ tooltip }}">
<img src="/assets/adoptables/{{ file }}" alt="{{ alt }}" loading="lazy"> <img src="/assets/adoptables/{{ file }}" alt="{{ alt }}" loading="lazy">
</a> </a>
</li> </li>
{%- endmacro -%} {{ /function }}
<section class="content__section"> <section class="content__section">
<p>(This page was last updated on <time datetime="{{ updated }}">{{ updated | formatDate }}</time>)</p> <p>(This page was last updated on <time datetime="{{ updated }}">{{ updated | formatDate }}</time>)</p>
</section> </section>
<section class="content__section"> <section class="content__section">
{% headingAnchor 2 %}Virtual Pets{% endheadingAnchor %} {{ headingAnchor 2 }}Virtual Pets{{ \/headingAnchor }}
{% headingAnchor 3 %}TamaNOTchi{% endheadingAnchor %} {{ headingAnchor 3 }}TamaNOTchi{{ \/headingAnchor }}
<p>Feel free to check out my TamaNOTchi virtual pets and feed them!</p> <p>Feel free to check out my TamaNOTchi virtual pets and feed them!</p>
<ul class="web-graphics adoptables"> <ul class="web-graphics adoptables">
{{ virtualPet("https://tamanotchi.world/13150c", "https://tamanotchi.world/i2/13150", "Pix") }} {{ virtualPet("https://tamanotchi.world/13150c", "https://tamanotchi.world/i2/13150", "Pix") }}
{{ virtualPet("https://tamanotchi.world/14391c", "https://tamanotchi.world/i2/14391", "Neko") }} {{ virtualPet("https://tamanotchi.world/14391c", "https://tamanotchi.world/i2/14391", "Neko") }}
</ul> </ul>
{% headingAnchor 3 %}Pixel Cat's End{% endheadingAnchor %} {{ headingAnchor 3 }}Pixel Cat's End{{ \/headingAnchor }}
<p>I play <a href="https://www.pixelcatsend.com/">Pixel Cat's End</a>, so feel free to check out <a href="https://www.pixelcatsend.com/profile&id=24121">my profile and my not-cats</a>! You may send me a friend request too if you also play Pixel Cat's End.</p> <p>I play <a href="https://www.pixelcatsend.com/">Pixel Cat's End</a>, so feel free to check out <a href="https://www.pixelcatsend.com/profile&id=24121">my profile and my not-cats</a>! You may send me a friend request too if you also play Pixel Cat's End.</p>
</section> </section>
<section class="content__section"> <section class="content__section">
{% headingAnchor 2 %}Personal Website Adoptables{% endheadingAnchor %} {{ headingAnchor 2 }}Personal Website Adoptables{{ \/headingAnchor }}
<p>These are adopted from other personal websites.</p> <p>These are adopted from other personal websites.</p>
<ul class="web-graphics adoptables"> <ul class="web-graphics adoptables">
@ -66,27 +66,27 @@ eleventyNavigation:
</section> </section>
<section class="content__section"> <section class="content__section">
{% headingAnchor 2 %}Pixel Cliques{% endheadingAnchor %} {{ headingAnchor 2 }}Pixel Cliques{{ \/headingAnchor }}
{% headingAnchor 3 %}The Apple{% endheadingAnchor %} {{ headingAnchor 3 }}The Apple{{ \/headingAnchor }}
<a href="https://pixelrevival.xyz/apple/"><img src="/assets/adoptables/pixelcliques/theapple.gif" alt="The Apple pixel clique" loading="lazy"></a> <a href="https://pixelrevival.xyz/apple/"><img src="/assets/adoptables/pixelcliques/theapple.gif" alt="The Apple pixel clique" loading="lazy"></a>
{% headingAnchor 3 %}Made by a Girl{% endheadingAnchor %} {{ headingAnchor 3 }}Made by a Girl{{ \/headingAnchor }}
<a href="https://lovesick.cafe/grrrl"><img src="/assets/adoptables/pixelcliques/madebyagirl.png" alt="Made by a Girl pixel clique" loading="lazy"></a> <a href="https://lovesick.cafe/grrrl"><img src="/assets/adoptables/pixelcliques/madebyagirl.png" alt="Made by a Girl pixel clique" loading="lazy"></a>
</section> </section>
<section class="content__section"> <section class="content__section">
{% headingAnchor 2 %}Kitty Friends Pixel Club{% endheadingAnchor %} {{ headingAnchor 2 }}Kitty Friends Pixel Club{{ \/headingAnchor }}
<p>An old pixel club about cats, revived by <a href="https://divergentrays.com/kitty">Divergent Rays</a>.</p> <p>An old pixel club about cats, revived by <a href="https://divergentrays.com/kitty">Divergent Rays</a>.</p>
{% headingAnchor 3 %}My Kitty Friends{% endheadingAnchor %} {{ headingAnchor 3 }}My Kitty Friends{{ \/headingAnchor }}
<ul class="web-graphics adoptables"> <ul class="web-graphics adoptables">
{{ myPixelArt("kittyfriends/leilukin-blackkitty.png", "Leilukin's black kitty friend") }} {{ myPixelArt("kittyfriends/leilukin-blackkitty.png", "Leilukin's black kitty friend") }}
{{ myPixelArt("kittyfriends/leilukin-purplekitty.png", "Leilukin's purple kitty friend") }} {{ myPixelArt("kittyfriends/leilukin-purplekitty.png", "Leilukin's purple kitty friend") }}
</ul> </ul>
<p>Created on 21 July 2024. If you want to adopt any of my kitty friends, please link back to my website and do not hotlink the images.</p> <p>Created on 21 July 2024. If you want to adopt any of my kitty friends, please link back to my website and do not hotlink the images.</p>
{% headingAnchor 3 %}Adopted Kitty Friends{% endheadingAnchor %} {{ headingAnchor 3 }}Adopted Kitty Friends{{ \/headingAnchor }}
<ul class="web-graphics adoptables"> <ul class="web-graphics adoptables">
{{ adoptable("https://artwork.neocities.org/cliques", "kittyfriends/artwork-bat.gif", "artwork's bat kitty") }} {{ adoptable("https://artwork.neocities.org/cliques", "kittyfriends/artwork-bat.gif", "artwork's bat kitty") }}
{{ adoptable("https://artwork.neocities.org/cliques", "kittyfriends/artwork-pumpkin.gif", "artwork's pumpkin kitty") }} {{ adoptable("https://artwork.neocities.org/cliques", "kittyfriends/artwork-pumpkin.gif", "artwork's pumpkin kitty") }}
@ -103,17 +103,17 @@ eleventyNavigation:
</section> </section>
<section class="content__section"> <section class="content__section">
{% headingAnchor 2 %}Pantson Color Club{% endheadingAnchor %} {{ headingAnchor 2 }}Pantson Color Club{{ \/headingAnchor }}
<p>A pixel club created by <a href="https://pantson.xandra.cc/">Alexandra</a>.</p> <p>A pixel club created by <a href="https://pantson.xandra.cc/">Alexandra</a>.</p>
<div class="web-graphics adoptables"><img src="/assets/adoptables/pantson/00-join.gif" alt="Join the Pantson Color Club!"></div> <div class="web-graphics adoptables"><img src="/assets/adoptables/pantson/00-join.gif" alt="Join the Pantson Color Club!"></div>
{% headingAnchor 3 %}My Colour Cards{% endheadingAnchor %} {{ headingAnchor 3 }}My Colour Cards{{ \/headingAnchor }}
<ul class="web-graphics adoptables"> <ul class="web-graphics adoptables">
{{ myPixelArt("pantson/leilukin-grape-juice.png", "Leilukin's GRAPE JUICE, colour number 19-3220 TPX") }} {{ myPixelArt("pantson/leilukin-grape-juice.png", "Leilukin's GRAPE JUICE, colour number 19-3220 TPX") }}
</ul> </ul>
<p>Created on 17 September 2024. If you are a member of the Pantson Color Club and you would like to exchange colour cards with me, feel free to ask on <a href="/guestbook">my guestbook</a>!</p> <p>Created on 17 September 2024. If you are a member of the Pantson Color Club and you would like to exchange colour cards with me, feel free to ask on <a href="/guestbook">my guestbook</a>!</p>
{% headingAnchor 3 %}Exchanged Colour Cards{% endheadingAnchor %} {{ headingAnchor 3 }}Exchanged Colour Cards{{ \/headingAnchor }}
<ul class="web-graphics adoptables"> <ul class="web-graphics adoptables">
{{ adoptable("https://aetherbiome.neocities.org/", "pantson/anna-not-a-brick.png", "Anna's NOT A BRICK, colour number 7580U") }} {{ adoptable("https://aetherbiome.neocities.org/", "pantson/anna-not-a-brick.png", "Anna's NOT A BRICK, colour number 7580U") }}
{{ adoptable("https://aetherbiome.neocities.org/", "pantson/anna-kale.png", "Anna's KALE, colour number 18-0107") }} {{ adoptable("https://aetherbiome.neocities.org/", "pantson/anna-kale.png", "Anna's KALE, colour number 18-0107") }}
@ -135,10 +135,10 @@ eleventyNavigation:
</section> </section>
<section class="content__section"> <section class="content__section">
{% headingAnchor 2 %}Salad Magazine{% endheadingAnchor %} {{ headingAnchor 2 }}Salad Magazine{{ \/headingAnchor }}
<p><a href="https://zine.kalechips.net/index">Salad Magazine</a> is a web-based zine for creative works run by <a href="https://kalechips.net/">Kalechips</a>.</p> <p><a href="https://zine.kalechips.net/index">Salad Magazine</a> is a web-based zine for creative works run by <a href="https://kalechips.net/">Kalechips</a>.</p>
{% headingAnchor 3 %}Ink Snail and Sparkle Snail{% endheadingAnchor %} {{ headingAnchor 3 }}Ink Snail and Sparkle Snail{{ \/headingAnchor }}
<div class="web-graphics adoptables"> <div class="web-graphics adoptables">
<img src="/assets/adoptables/salad-magazine/semper-inksnail-black.png" alt="Black ink snail pixel art by Semper" loading="lazy"> <img src="/assets/adoptables/salad-magazine/semper-inksnail-black.png" alt="Black ink snail pixel art by Semper" loading="lazy">
<img src="/assets/adoptables/salad-magazine/semper-inksnail-sparkle.png" alt="Sparkle snail pixel art by Semper" loading="lazy"> <img src="/assets/adoptables/salad-magazine/semper-inksnail-sparkle.png" alt="Sparkle snail pixel art by Semper" loading="lazy">
@ -147,7 +147,7 @@ eleventyNavigation:
</section> </section>
<section class="content__section"> <section class="content__section">
{% headingAnchor 2 %}32-Bit Cafe Code Jam: Destination Vacation{% endheadingAnchor %} {{ headingAnchor 2 }}32-Bit Cafe Code Jam: Destination Vacation{{ \/headingAnchor }}
<p>Stuff I collected from <a href="https://tilde.32bit.cafe/~ribose/events/destination/map.html">32-Bit Cafe's Community Code Jam #4: Destination Vacation</a> in June 2024, including a passport with stamps from the code jam entries, and extra goodies from some of the participants.</p> <p>Stuff I collected from <a href="https://tilde.32bit.cafe/~ribose/events/destination/map.html">32-Bit Cafe's Community Code Jam #4: Destination Vacation</a> in June 2024, including a passport with stamps from the code jam entries, and extra goodies from some of the participants.</p>
<ul class="web-graphics adoptables"> <ul class="web-graphics adoptables">
<li> <li>

Some files were not shown because too many files have changed in this diff Show More