Set up Vento templates
This commit is contained in:
parent
788f930622
commit
fbf8f5df73
@ -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
|
@ -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, ",");
|
||||||
|
@ -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 Summer’s End — Hong Kong 1986 Shrine">
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block pageTitle %}
|
|
||||||
{{ title + " | " if title }}A Summer’s 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 %}
|
|
@ -1,7 +0,0 @@
|
|||||||
---
|
|
||||||
layout: asummersend/base
|
|
||||||
---
|
|
||||||
|
|
||||||
{% extends "global/content.html" %}
|
|
||||||
|
|
||||||
{% block shrineInfo %}{% include "asummersend/shrineinfo.html" %}{% endblock %}
|
|
@ -1,6 +0,0 @@
|
|||||||
{% extends "global/footer.html" %}
|
|
||||||
|
|
||||||
{% block footerContent %}
|
|
||||||
<p>Made with ♥ by {{ sitemeta.siteAuthor.name }} • Shrine Launched: 16 February 2023</p>
|
|
||||||
{% endblock %}
|
|
||||||
|
|
@ -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 Summer’s 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 Summer’s 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 %}
|
|
@ -1,11 +0,0 @@
|
|||||||
{% extends "global/navbar.html" %}
|
|
||||||
{% set shrineHomeUrl = "/shrines/asummersend/" %}
|
|
||||||
|
|
||||||
{% block navbarLinks %}
|
|
||||||
{% set navPages = collections.all | eleventyNavigation("A Summer’s 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 %}
|
|
@ -1,12 +0,0 @@
|
|||||||
{% extends "global/shrineinfo.html" %}
|
|
||||||
|
|
||||||
{% block shrineAbout %}
|
|
||||||
<p>Welcome to {{ sitemeta.siteAuthor.name }}'s shrine for {% cite "A Summer’s 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 %}
|
|
@ -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 %}
|
|
@ -1,7 +0,0 @@
|
|||||||
---
|
|
||||||
layout: cassettebeasts/base
|
|
||||||
---
|
|
||||||
|
|
||||||
{% extends "global/content.html" %}
|
|
||||||
|
|
||||||
{% block shrineInfo %}{% include "cassettebeasts/shrineinfo.html" %}{% endblock %}
|
|
@ -1,6 +0,0 @@
|
|||||||
{% extends "global/footer.html" %}
|
|
||||||
|
|
||||||
{% block footerContent %}
|
|
||||||
<p>Made with ♥ by {{ sitemeta.siteAuthor.name }} • Shrine Launched: 3 August 2023</p>
|
|
||||||
{% endblock %}
|
|
||||||
|
|
@ -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 %}
|
|
@ -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 %}
|
|
@ -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 %}
|
|
@ -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 Summer’s 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 Summer’s End fanmix 'My Dear Summer Lover: A Sam x Michelle Fanmix'" }}
|
||||||
[Image description: Sam and Michelle from A Summer’s 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 Summer’s 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 Summer’s End — Hong Kong 1986" %}](https://www.asummersend.com/home), dedicated to Sam and Michelle’s love story.
|
{{ intro }} [{{ cite "A Summer’s End — Hong Kong 1986" }}](https://www.asummersend.com/home), dedicated to Sam and Michelle’s 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 Summer’s 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 Summer’s 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 Michelle’s relationship development throughout {% cite "A Summer’s 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 Michelle’s relationship development throughout {{ cite "A Summer’s 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 Summer’s 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 Summer’s 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 }}
|
@ -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 }}
|
@ -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 }}
|
@ -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 }}
|
@ -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 }}
|
@ -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 }}
|
@ -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>
|
@ -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>
|
|
@ -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 %}
|
|
@ -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>
|
|
84
src/_includes/layouts/asummersend.vto
Normal file
84
src/_includes/layouts/asummersend.vto
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
---
|
||||||
|
layout: layouts/content
|
||||||
|
sectionName: A Summer’s 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 Summer’s 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 Summer’s 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 Summer’s 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 Summer’s 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 }}
|
53
src/_includes/layouts/base.vto
Normal file
53
src/_includes/layouts/base.vto
Normal 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>
|
82
src/_includes/layouts/cassettebeasts.vto
Normal file
82
src/_includes/layouts/cassettebeasts.vto
Normal 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 }}
|
118
src/_includes/layouts/content.vto
Normal file
118
src/_includes/layouts/content.vto
Normal 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 }}
|
@ -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>
|
@ -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 }}
|
72
src/_includes/layouts/pokemonoras.vto
Normal file
72
src/_includes/layouts/pokemonoras.vto
Normal 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 }}
|
27
src/_includes/layouts/root.vto
Normal file
27
src/_includes/layouts/root.vto
Normal 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>
|
9
src/_includes/layouts/slashpage.vto
Normal file
9
src/_includes/layouts/slashpage.vto
Normal 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 }}
|
79
src/_includes/layouts/starwarskotor.vto
Normal file
79
src/_includes/layouts/starwarskotor.vto
Normal 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 }}
|
@ -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>
|
|
@ -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 %}
|
|
@ -1,7 +0,0 @@
|
|||||||
{% for log in changelogList | reverse %}
|
|
||||||
{% headingAnchor 2, log.fileSlug %}
|
|
||||||
{{ log.date | formatDate }}
|
|
||||||
{% endheadingAnchor %}
|
|
||||||
|
|
||||||
{{ log.content | safe }}
|
|
||||||
{%- endfor %}
|
|
@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
layout: main/base
|
|
||||||
---
|
|
||||||
|
|
||||||
{% extends "global/content.html" %}
|
|
@ -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 %}
|
|
||||||
|
|
@ -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 %}
|
|
@ -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 %}
|
|
16
src/_includes/partials/archive.vto
Normal file
16
src/_includes/partials/archive.vto
Normal 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>
|
7
src/_includes/partials/changelogs-list.vto
Normal file
7
src/_includes/partials/changelogs-list.vto
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{{ for log of changelogList |> toReversed }}
|
||||||
|
{{ headingAnchor 2, log.fileSlug }}
|
||||||
|
{{ log.date |> formatDate }}
|
||||||
|
{{ \/headingAnchor }}
|
||||||
|
|
||||||
|
{{ log.content }}
|
||||||
|
{{ /for }}
|
@ -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 }}
|
@ -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 }}
|
@ -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 }}
|
@ -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 }}
|
@ -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 %}
|
|
@ -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">
|
@ -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 }}
|
@ -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 }}
|
@ -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 }}
|
@ -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 }}
|
@ -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 %}
|
|
@ -1,7 +0,0 @@
|
|||||||
---
|
|
||||||
layout: pokemonoras/base
|
|
||||||
---
|
|
||||||
|
|
||||||
{% extends "global/content.html" %}
|
|
||||||
|
|
||||||
{% block shrineInfo %}{% include "pokemonoras/shrineinfo.html" %}{% endblock %}
|
|
@ -1,6 +0,0 @@
|
|||||||
{% extends "global/footer.html" %}
|
|
||||||
|
|
||||||
{% block footerContent %}
|
|
||||||
<p>Made with ♥ by {{ sitemeta.siteAuthor.name }} • Shrine Launched: 21 November 2024</p>
|
|
||||||
{% endblock %}
|
|
||||||
|
|
@ -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 %}
|
|
@ -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 %}
|
|
@ -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 %}
|
|
@ -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 %}
|
|
@ -1,7 +0,0 @@
|
|||||||
---
|
|
||||||
layout: starwarskotor/base
|
|
||||||
---
|
|
||||||
|
|
||||||
{% extends "global/content.html" %}
|
|
||||||
|
|
||||||
{% block shrineInfo %}{% include "starwarskotor/shrineinfo.html" %}{% endblock %}
|
|
@ -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 %}
|
|
||||||
|
|
@ -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 %}
|
|
@ -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 %}
|
|
@ -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 %}
|
|
@ -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>
|
@ -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>
|
@ -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") }}
|
@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
layout: asummersend/content
|
layout: layouts/asummersend
|
||||||
pageTitle: A Summer’s End — Hong Kong 1986 Shrine
|
pageTitle: A Summer’s 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"]
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
layout: asummersend/content
|
layout: layouts/asummersend
|
||||||
title: Gallery
|
title: Gallery
|
||||||
pageTitle: A Summer’s End — Hong Kong 1986 Gallery
|
pageTitle: A Summer’s End — Hong Kong 1986 Gallery
|
||||||
desc: My gallery for A Summer’s End — Hong Kong 1986.
|
desc: My gallery for A Summer’s End — Hong Kong 1986.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
layout: asummersend/content
|
layout: layouts/asummersend
|
||||||
title: Playlists
|
title: Playlists
|
||||||
pageTitle: A Summer’s End — Hong Kong 1986 Playlists
|
pageTitle: A Summer’s End — Hong Kong 1986 Playlists
|
||||||
desc: List of A Summer’s End — Hong Kong 1986 playlists.
|
desc: List of A Summer’s End — Hong Kong 1986 playlists.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
layout: asummersend/content
|
layout: layouts/asummersend
|
||||||
title: Trivia
|
title: Trivia
|
||||||
pageTitle: A Summer’s End — Hong Kong 1986 Trivia
|
pageTitle: A Summer’s End — Hong Kong 1986 Trivia
|
||||||
desc: A collection of trivia about A Summer’s End — Hong Kong 1986.
|
desc: A collection of trivia about A Summer’s End — Hong Kong 1986.
|
||||||
|
@ -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"]
|
||||||
|
@ -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.
|
||||||
|
@ -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`,
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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"]
|
||||||
|
@ -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"]
|
||||||
|
@ -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."
|
||||||
|
@ -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`,
|
||||||
|
@ -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."
|
||||||
|
@ -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`,
|
||||||
|
@ -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.."
|
||||||
|
@ -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: {
|
||||||
|
@ -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."
|
||||||
|
@ -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" }}
|
@ -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>
|
@ -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>
|
|
19
src/slashes/archive/category.vto
Normal file
19
src/slashes/archive/category.vto
Normal 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>
|
@ -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 }}
|
@ -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 }}
|
@ -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
Loading…
x
Reference in New Issue
Block a user