Make core file, and update some people

This commit is contained in:
Clove 2026-06-18 17:28:30 +01:00
parent 3a7f4238ad
commit 3a905f2182
17 changed files with 154 additions and 168 deletions

View File

@ -109,9 +109,7 @@
</div> </div>
</div> </div>
<script src="/js/cat.js" data-cat="/assets/oneko/classics/classic.png"></script> <script src="/js/core.js" data-cat="/assets/oneko/classics/classic.png"></script>
<script src="/js/nav.js"></script>
<script src="/js/flavors.js"></script>
<script src="/js/terminal.js"></script> <script src="/js/terminal.js"></script>
</body> </body>

View File

Before

Width:  |  Height:  |  Size: 680 KiB

After

Width:  |  Height:  |  Size: 680 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

View File

@ -66,9 +66,7 @@
<div id="friends-root"></div> <div id="friends-root"></div>
</div> </div>
<script src="/js/cat.js" data-cat="/assets/oneko/classics/classic.png"></script> <script src="/js/core.js" data-cat="/assets/oneko/classics/classic.png"></script>
<script src="/js/nav.js"></script>
<script src="/js/flavors.js"></script>
<script src="/js/friends.js"></script> <script src="/js/friends.js"></script>
</body> </body>

View File

@ -272,11 +272,9 @@
</div> </div>
</main> </main>
<script src="/js/cat.js" data-cat="/assets/oneko/classics/classic.png"></script> <script src="/js/core.js" data-cat="/assets/oneko/classics/classic.png"></script>
<script src="/js/nav.js"></script>
<script src="/js/flavors.js"></script>
<script src="/js/dev-info.js"></script> <script src="/js/dev-info.js"></script>
<script src="/js/contrib-heatmap.js"></script> <script src="/js/heatmap.js"></script>
<script>ContribHeatmap.render("#contrib", { theme: "trans" });</script> <script>ContribHeatmap.render("#contrib", { theme: "trans" });</script>
</body> </body>

View File

@ -177,9 +177,7 @@
</section> </section>
</main> </main>
<script src="/js/cat.js" data-cat="/assets/oneko/classics/classic.png"></script> <script src="/js/core.js" data-cat="/assets/oneko/classics/classic.png"></script>
<script src="/js/nav.js"></script>
<script src="/js/flavors.js"></script>
</body> </body>
</html> </html>

View File

@ -64,10 +64,8 @@
<div id="now-playing"></div> <div id="now-playing"></div>
</main> </main>
<script src="/js/cat.js" data-cat="/assets/oneko/classics/classic.png"></script> <script src="/js/core.js" data-cat="/assets/oneko/classics/classic.png"></script>
<script src="/js/nav.js"></script>
<script src="/js/now-playing.js" data-user="1464890289922641993"></script> <script src="/js/now-playing.js" data-user="1464890289922641993"></script>
<script src="/js/flavors.js"></script>
</body> </body>
</html> </html>

View File

@ -101,9 +101,7 @@
</div> </div>
</div> </div>
<script src="/js/cat.js" data-cat="/assets/oneko/classics/classic.png"></script> <script src="/js/core.js" data-cat="/assets/oneko/classics/classic.png"></script>
<script src="/js/nav.js"></script>
<script src="/js/flavors.js"></script>
<script src="/js/guestbook.js" <script src="/js/guestbook.js"
data-api="https://guestbook.doughmination.uk" data-api="https://guestbook.doughmination.uk"
data-turnstile-key="0x4AAAAAAB08ZhSxKn5rAD3d"></script> data-turnstile-key="0x4AAAAAAB08ZhSxKn5rAD3d"></script>

View File

@ -66,9 +66,7 @@
<div id="visitor-counter" role="status" aria-label="Visitor count"></div> <div id="visitor-counter" role="status" aria-label="Visitor count"></div>
<script src="/js/cat.js" data-cat="/assets/oneko/classics/classic.png"></script> <script src="/js/core.js" data-cat="/assets/oneko/classics/classic.png"></script>
<script src="/js/nav.js"></script>
<script src="/js/flavors.js"></script>
<script src="/js/terminal.js"></script> <script src="/js/terminal.js"></script>
<script src="/js/fronting.js"></script> <script src="/js/fronting.js"></script>
<!-- lanyard.cafe keyring (webring) — styled to match the site in css/main.css (#lc-embed) --> <!-- lanyard.cafe keyring (webring) — styled to match the site in css/main.css (#lc-embed) -->

View File

@ -1,3 +1,143 @@
// Ari was here uwu
// Professional boob lover
// girls kissing,,,
console.log(`
`);
// mmmmmmmmmmmmmmmmm girls kissing,,,,,
document.querySelectorAll("[data-href]").forEach((el) => {
el.style.cursor = "pointer";
if (!el.hasAttribute("role")) el.setAttribute("role", "link");
if (!el.hasAttribute("tabindex")) el.setAttribute("tabindex", "0");
const go = () => {
const url = el.dataset.href;
if (!url) return;
location.href = url;
};
el.addEventListener("click", go);
el.addEventListener("keydown", (e) => {
if (e.key === "Enter" || e.key === " ") {
e.preventDefault();
go();
}
});
});
/* ========================== flavors.js ========================= */
(function flavors() {
// Metadata only — colors are defined in the per-flavor CSS files.
const FLAVORS = {
mocha: { label: "Mocha", dot: "#f5c2e7" },
macchiato: { label: "Macchiato", dot: "#f5bde6" },
frappe: { label: "Frappé", dot: "#f4b8e4" },
latte: { label: "Latte", dot: "#ea76cb" },
};
const ORDER = ["mocha", "macchiato", "frappe", "latte"];
const root = document.documentElement;
const ls = window.localStorage;
function apply(name) {
const f = FLAVORS[name] || FLAVORS.mocha;
root.setAttribute("data-flavor", name); // CSS does the rest
const meta = document.querySelector('meta[name="theme-color"]');
if (meta) meta.setAttribute("content", f.dot);
}
let current = ls.getItem("ctpFlavor");
if (!ORDER.includes(current)) current = "mocha";
apply(current); // the <head> snippet already set this to avoid a flash
// ---- top-right corner icon button ----
const bar = document.createElement("div");
bar.className = "beta-bar";
bar.innerHTML = `
<button class="beta-btn" id="flavor-btn" type="button">
<img class="beta-icon" alt="">
</button>`;
// Group the single-item widgets (now-playing + theme toggle) into one
// top bar. On mobile they sit side by side; on desktop both stay
// position:fixed, so this wrapper is zero-size and invisible.
let topbar = document.querySelector(".topbar");
if (!topbar) {
topbar = document.createElement("div");
topbar.className = "topbar";
document.body.insertBefore(topbar, document.body.firstChild);
const np = document.getElementById("now-playing");
// Don't hijack the presence card when it's the centerpiece of the
// dedicated /discord page (it lives inside .presence-stage there).
if (np && !np.closest(".presence-stage")) topbar.appendChild(np);
}
topbar.appendChild(bar);
const btn = bar.querySelector("#flavor-btn");
const icon = bar.querySelector(".beta-icon");
function paintBtn() {
const f = FLAVORS[current];
icon.src = `/assets/theme/${current}.png`; // e.g. /assets/theme/mocha.png
icon.alt = f.label;
btn.title = `Theme: ${f.label} (click to cycle)`;
}
paintBtn();
btn.addEventListener("click", () => {
current = ORDER[(ORDER.indexOf(current) + 1) % ORDER.length];
ls.setItem("ctpFlavor", current);
apply(current);
paintBtn();
});
// ---- cat collection button (sits next to the theme button) ----
const catBtn = document.createElement("button");
catBtn.className = "beta-btn";
catBtn.id = "cat-btn";
catBtn.type = "button";
catBtn.title = "Cat collection";
catBtn.setAttribute("aria-label", "Open cat collection");
catBtn.innerHTML = `<span class="beta-cat-icon" aria-hidden="true"></span>`;
bar.appendChild(catBtn);
catBtn.addEventListener("click", () => {
if (typeof window.toggleCatPicker === "function") window.toggleCatPicker();
});
})();
/* ===================== cat.js (oneko.js) ======================= */
// oneko.js: https://github.com/adryd325/oneko.js // oneko.js: https://github.com/adryd325/oneko.js
(function oneko() { (function oneko() {

View File

@ -1,78 +0,0 @@
(function flavors() {
// Metadata only — colors are defined in the per-flavor CSS files.
const FLAVORS = {
mocha: { label: "Mocha", dot: "#f5c2e7" },
macchiato: { label: "Macchiato", dot: "#f5bde6" },
frappe: { label: "Frappé", dot: "#f4b8e4" },
latte: { label: "Latte", dot: "#ea76cb" },
};
const ORDER = ["mocha", "macchiato", "frappe", "latte"];
const root = document.documentElement;
const ls = window.localStorage;
function apply(name) {
const f = FLAVORS[name] || FLAVORS.mocha;
root.setAttribute("data-flavor", name); // CSS does the rest
const meta = document.querySelector('meta[name="theme-color"]');
if (meta) meta.setAttribute("content", f.dot);
}
let current = ls.getItem("ctpFlavor");
if (!ORDER.includes(current)) current = "mocha";
apply(current); // the <head> snippet already set this to avoid a flash
// ---- top-right corner icon button ----
const bar = document.createElement("div");
bar.className = "beta-bar";
bar.innerHTML = `
<button class="beta-btn" id="flavor-btn" type="button">
<img class="beta-icon" alt="">
</button>`;
// Group the single-item widgets (now-playing + theme toggle) into one
// top bar. On mobile they sit side by side; on desktop both stay
// position:fixed, so this wrapper is zero-size and invisible.
let topbar = document.querySelector(".topbar");
if (!topbar) {
topbar = document.createElement("div");
topbar.className = "topbar";
document.body.insertBefore(topbar, document.body.firstChild);
const np = document.getElementById("now-playing");
// Don't hijack the presence card when it's the centerpiece of the
// dedicated /discord page (it lives inside .presence-stage there).
if (np && !np.closest(".presence-stage")) topbar.appendChild(np);
}
topbar.appendChild(bar);
const btn = bar.querySelector("#flavor-btn");
const icon = bar.querySelector(".beta-icon");
function paintBtn() {
const f = FLAVORS[current];
icon.src = `/assets/theme/${current}.png`; // e.g. /assets/theme/mocha.png
icon.alt = f.label;
btn.title = `Theme: ${f.label} (click to cycle)`;
}
paintBtn();
btn.addEventListener("click", () => {
current = ORDER[(ORDER.indexOf(current) + 1) % ORDER.length];
ls.setItem("ctpFlavor", current);
apply(current);
paintBtn();
});
// ---- cat collection button (sits next to the theme button) ----
const catBtn = document.createElement("button");
catBtn.className = "beta-btn";
catBtn.id = "cat-btn";
catBtn.type = "button";
catBtn.title = "Cat collection";
catBtn.setAttribute("aria-label", "Open cat collection");
catBtn.innerHTML = `<span class="beta-cat-icon" aria-hidden="true"></span>`;
bar.appendChild(catBtn);
catBtn.addEventListener("click", () => {
if (typeof window.toggleCatPicker === "function") window.toggleCatPicker();
});
})();

View File

@ -20,6 +20,7 @@
{ {
title: "Friends", title: "Friends",
members: [ members: [
{ name: "Aureal", img: "/assets/friends/aureal.gif", tier: "friend", discordId: "1498977251134279900", link: "https://aureal.dev/" },
{ name: "Fin", img: "/assets/friends/fin.png", tier: "friend", discordId: "867818211574808607", link: null }, { name: "Fin", img: "/assets/friends/fin.png", tier: "friend", discordId: "867818211574808607", link: null },
{ name: "Meme", img: "/assets/friends/meme.png", tier: "friend", discordId: "812998699667161098", link: null }, { name: "Meme", img: "/assets/friends/meme.png", tier: "friend", discordId: "812998699667161098", link: null },
{ name: "N", img: "/assets/friends/n.png", tier: "friend", discordId: "639399972407869450", link: null }, { name: "N", img: "/assets/friends/n.png", tier: "friend", discordId: "639399972407869450", link: null },
@ -31,7 +32,7 @@
title: "Other Peeps", title: "Other Peeps",
subtitle: "You can request to be added here!", subtitle: "You can request to be added here!",
members: [ members: [
{ name: "Aureal", img: "/assets/known-people/aureal.gif", tier: "known", discordId: "1498977251134279900", link: "https://aureal.dev/" }, { name: "pokemon", img: "/assets/known-people/pokemon.png", tier: "known", discordId: "784443338627612673", link: "https://devmatei.com/" },
{ name: "Sy", img: "/assets/known-people/sy.png", tier: "known", discordId: "1354212422839308469", link: "https://synapsexen.xyz/"} { name: "Sy", img: "/assets/known-people/sy.png", tier: "known", discordId: "1354212422839308469", link: "https://synapsexen.xyz/"}
] ]
}, },

View File

@ -135,7 +135,7 @@
const root = typeof target === "string" ? document.querySelector(target) : target; const root = typeof target === "string" ? document.querySelector(target) : target;
if (!root) { if (!root) {
console.warn("[contrib-heatmap] target not found:", target); console.warn("[heatmap] target not found:", target);
return Promise.resolve(null); return Promise.resolve(null);
} }
@ -250,7 +250,7 @@
.catch(err => { .catch(err => {
if (err.name === "AbortError") return null; // superseded by a newer render if (err.name === "AbortError") return null; // superseded by a newer render
if (countEl) countEl.textContent = "Couldn't load contributions."; if (countEl) countEl.textContent = "Couldn't load contributions.";
console.error("[contrib-heatmap]", err); console.error("[heatmap]", err);
return null; return null;
}); });
} }

View File

@ -1,42 +1,3 @@
// Ari was here uwu
// Professional boob lover
// girls kissing,,,
console.log(`
`);
// mmmmmmmmmmmmmmmmm girls kissing,,,,,
(function music() { (function music() {
"use strict"; "use strict";

View File

@ -1,22 +0,0 @@
// Navigate via data-href so the destination URL never shows in the
// browser status bar on hover. Pairs with the CSS View Transitions
// (@view-transition) for a smooth cross-fade between pages.
document.querySelectorAll("[data-href]").forEach((el) => {
el.style.cursor = "pointer";
if (!el.hasAttribute("role")) el.setAttribute("role", "link");
if (!el.hasAttribute("tabindex")) el.setAttribute("tabindex", "0");
const go = () => {
const url = el.dataset.href;
if (!url) return;
location.href = url;
};
el.addEventListener("click", go);
el.addEventListener("keydown", (e) => {
if (e.key === "Enter" || e.key === " ") {
e.preventDefault();
go();
}
});
});

View File

@ -121,7 +121,7 @@
out += "\n\nTip: type a social's name (try 'socials') to open it."; out += "\n\nTip: type a social's name (try 'socials') to open it.";
return { text: out }; return { text: out };
}, },
ls() {return this.help()}, ls() { return COMMANDS.help(); },
code() { code() {
window.open("https://git.gay/doughmination/c.stupid.cat", "_blank"); window.open("https://git.gay/doughmination/c.stupid.cat", "_blank");
return { text: "Opening site source code..." } return { text: "Opening site source code..." }

View File

@ -78,10 +78,8 @@
</main> </main>
<script src="/js/cat.js" data-cat="/assets/oneko/classics/classic.png"></script> <script src="/js/core.js" data-cat="/assets/oneko/classics/classic.png"></script>
<script src="/js/nav.js"></script>
<script src="/js/music.js"></script> <script src="/js/music.js"></script>
<script src="/js/flavors.js"></script>
</body> </body>
</html> </html>