add authors note and links to my email and source code
Nightly build & deploy / build-and-deploy (push) Successful in 9m42s
Nightly build & deploy / build-and-deploy (push) Successful in 9m42s
This commit is contained in:
+40
-10
@@ -109,14 +109,21 @@ function buildLayout(store: Store, config: Config): HTMLElement {
|
||||
|
||||
const footer = el("footer", "footer");
|
||||
footer.append(
|
||||
footerLine(
|
||||
"Estimates spread each plan evenly across on-campus days. Informational only, not official balances."
|
||||
footerLine(
|
||||
"Found a problem? Like the project? Hate it? Email me at ",
|
||||
createLink("mailto:jslivka@lockeshor.com", "jslivka@lockeshor.com"),
|
||||
". Also, check out the source code on ",
|
||||
createLink(
|
||||
"https://gitea.lockeshor.com/lockeshor/cmu-meal-estimator",
|
||||
"My Gitea"
|
||||
),
|
||||
footerLine(
|
||||
"Not affiliated with, endorsed by, or officially connected to Carnegie Mellon University or CMU Dining. An independent student tool.",
|
||||
"footer-disclaimer"
|
||||
)
|
||||
);
|
||||
"."
|
||||
),
|
||||
footerLine(
|
||||
"Not affiliated with, endorsed by, or officially connected to Carnegie Mellon University or CMU Dining. An independent student tool.",
|
||||
"footer-disclaimer"
|
||||
)
|
||||
);
|
||||
|
||||
wrap.append(header, grid, footer);
|
||||
return wrap;
|
||||
@@ -528,9 +535,32 @@ function field(label: string): HTMLElement {
|
||||
return f;
|
||||
}
|
||||
|
||||
function footerLine(text: string, extraClass = ""): HTMLElement {
|
||||
const p = el("p", `footer-line${extraClass ? ` ${extraClass}` : ""}`);
|
||||
p.textContent = text;
|
||||
function createLink(href: string, text: string): HTMLAnchorElement {
|
||||
const a = document.createElement("a");
|
||||
a.className = "tartan";
|
||||
a.href = href;
|
||||
a.textContent = text;
|
||||
return a;
|
||||
}
|
||||
|
||||
// Accepts text strings or DOM Nodes, with optional class name logic
|
||||
function footerLine(...args: (Node | string)[]): HTMLParagraphElement {
|
||||
let className = "";
|
||||
const children: (Node | string)[] = [...args];
|
||||
|
||||
// If the last argument is a class identifier (e.g., "footer-disclaimer")
|
||||
const lastArg = children[children.length - 1];
|
||||
if (
|
||||
children.length > 1 &&
|
||||
typeof lastArg === "string" &&
|
||||
lastArg.startsWith("footer-")
|
||||
) {
|
||||
className = children.pop() as string;
|
||||
}
|
||||
|
||||
const p = document.createElement("p");
|
||||
if (className) p.className = className;
|
||||
p.append(...children);
|
||||
return p;
|
||||
}
|
||||
|
||||
|
||||
+5
-1
@@ -64,10 +64,14 @@ body {
|
||||
letter-spacing: -0.02em;
|
||||
}
|
||||
|
||||
.title .tartan {
|
||||
.tartan {
|
||||
color: var(--tartan);
|
||||
}
|
||||
|
||||
.tartan:hover {
|
||||
color: var(--tartan-soft);
|
||||
}
|
||||
|
||||
.subtitle {
|
||||
margin: 0;
|
||||
color: var(--text-dim);
|
||||
|
||||
Reference in New Issue
Block a user