1
Fork 0
mirror of https://github.com/RGBCube/Site synced 2025-07-31 13:07:46 +00:00

site: footers

This commit is contained in:
RGBCube 2025-06-05 04:23:04 +03:00
parent 20d8fd6830
commit 031900c8c2
Signed by: RGBCube
SSH key fingerprint: SHA256:CzqbPcfwt+GxFYNnFVCqoN5Itn4YFrshg1TrnACpA5M
5 changed files with 73 additions and 5 deletions

56
site.ts
View file

@ -89,7 +89,7 @@ site.process([".html"], (pages) => {
let counter = 1; let counter = 1;
while (document.getElementById(textUnique)) { while (document.getElementById(textUnique)) {
counter++; counter += 1;
textUnique = `${textNormalized}-${counter}`; textUnique = `${textNormalized}-${counter}`;
} }
@ -101,6 +101,60 @@ site.process([".html"], (pages) => {
header.parentNode!.insertBefore(link, header); header.parentNode!.insertBefore(link, header);
link.appendChild(header); link.appendChild(header);
}); });
const footnotes = document.querySelector("#footnotes");
if (footnotes) {
let counter = 0;
document.querySelectorAll("p").forEach((paragraph) => {
const matches = paragraph.innerHTML.match(/\[\^([^\]]*)\]/g);
if (!matches) return;
let newHTML = paragraph.innerHTML;
matches.forEach((match) => {
const footnoteText = match.slice(2, -1);
let number;
let addFooter;
if (footnoteText.match(/^[1-9]+$/g)) {
number = parseInt(footnoteText);
addFooter = false;
} else {
counter += 1;
number = counter;
addFooter = true;
}
const anchorId = `ref:${counter}`;
const footnoteId = `fn:${counter}`;
const link =
`<sup><a id="${anchorId}" href="#${footnoteId}">^${number}</a></sup>`;
newHTML = newHTML.replace(match, link);
if (addFooter) {
const hr = document.createElement("hr");
hr.classList.add("my-1.5");
const li = document.createElement("li");
li.id = footnoteId;
li.innerHTML =
`${footnoteText}<sub><a href="#${anchorId}">..?</a></sub>`;
footnotes.appendChild(hr);
footnotes.appendChild(li);
}
});
paragraph.innerHTML = newHTML;
});
if (counter === 0) {
footnotes.remove();
}
}
}); });
}); });

View file

@ -31,6 +31,8 @@ layout: default.vto
{{> const padding = 4 }} {{> const padding = 4 }}
<div class="text-content text-xl p-{{ padding }} pt-{{ padding + 13.5 }}"> <div class="text-content text-xl p-{{ padding }} pt-{{ padding + 13.5 }}">
{{ content }} {{ content }}
<ol id="footnotes"></ol>
</div> </div>
<footer class="flex justify-center text-sm wrap-anywhere mt-auto p-1.5 pb-2 border-t-4 border-x-4"> <footer class="flex justify-center text-sm wrap-anywhere mt-auto p-1.5 pb-2 border-t-4 border-x-4">

View file

@ -246,15 +246,27 @@ html, body {
dark:bg-[#111]; dark:bg-[#111];
} }
ol {
& li {
counter-increment: item;
}
& li::before {
@apply pr-1;
content: "[" counter(item) "]";
}
}
li { li {
@apply relative pl-4; @apply relative pl-4;
&::before { ul &::before {
@apply content-[""] absolute left-0 size-2 top-1/2 -translate-y-1/3 @apply content-[""] absolute left-0 size-2 top-1/2 -translate-y-1/3
rotate-45 border-t-2 border-r-2 border-black dark:border-white; rotate-45 border-t-2 border-r-2 border-black dark:border-white;
} }
&:hover { ul &:hover {
&::before { &::before {
@apply size-4 -translate-x-2/3 border-[red] dark:border-[yellow]; @apply size-4 -translate-x-2/3 border-[red] dark:border-[yellow];
} }

View file

@ -171,7 +171,7 @@ Blog Articles
} }
let { y: yCopy } = strip; let { y: yCopy } = strip;
for (let i = 0; i < 20; i++) { for (let i = 0; i < 20; i += 1) {
switch (true) { switch (true) {
case i < 1: context.fillStyle = "#cefbe4"; break; case i < 1: context.fillStyle = "#cefbe4"; break;
case i < 2: context.fillStyle = "#81ec72"; break; case i < 2: context.fillStyle = "#81ec72"; break;

View file

@ -7,7 +7,7 @@ draft: true
# Test # Test
I randomly test CSS styles here. That means nothing to see. I randomly test CSS styles here. That means nothing to see.[^footer nr 1][^11]
| pid | ppid | name | status | cpu | mem | virtual | | pid | ppid | name | status | cpu | mem | virtual |
| ----- | ----- | -------------------------------------------------------------------------------------------------------------------------- | -------- | ------------------ | -------- | -------- | | ----- | ----- | -------------------------------------------------------------------------------------------------------------------------- | -------- | ------------------ | -------- | -------- |