mirror of
https://github.com/alex-s168/website.git
synced 2025-09-09 17:05:07 +02:00
117 lines
3.0 KiB
Typst
117 lines
3.0 KiB
Typst
#import "common.typ": *
|
|
#import "core-page-style.typ": *
|
|
|
|
#let html-href(target, content) = {
|
|
[#context if is-html() {
|
|
html.elem("a", attrs:(href:target), content)
|
|
} else { content }]
|
|
}
|
|
|
|
#let variant-link(content, variant) = {
|
|
[#context if is-html() {
|
|
html.elem("a", attrs:(href:"#",onclick:"gotoVariant(\""+variant+"\");"), content)
|
|
} else { content }]
|
|
}
|
|
|
|
#let simple-page(
|
|
gen-table-of-contents: true,
|
|
gen-index-ref: true,
|
|
min-pdf-link: true,
|
|
html-title,
|
|
content) = {
|
|
|
|
let head = context if is-html() {
|
|
[
|
|
#html.elem("title", html-title)
|
|
]
|
|
} else {[]}
|
|
|
|
core-page-style(html-head: head)[
|
|
#if is-web {
|
|
let off = 3;
|
|
|
|
table(
|
|
stroke: none,
|
|
columns: (25%, 50%, 25%),
|
|
|
|
html-style(class:"sidebar", "", column-fixed(
|
|
[#if gen-table-of-contents { [#table-of-contents()] }],
|
|
|
|
[#if gen-index-ref {[
|
|
#context br()
|
|
#context html-href("index.html")[#html-bold[Website Home]]
|
|
#context br()
|
|
]}],
|
|
[#context if min-pdf-link and is-html() [
|
|
Renderings of this page:
|
|
- #variant-link("minimal PDF (printable)", ".min.pdf")
|
|
// TODO: fix and re-add - #variant-link("less bloated HTML", ".min.html")
|
|
- #variant-link("minimal HTML", ".nano.html")
|
|
]],
|
|
[#if gen-index-ref [
|
|
#html-href("atom.xml")[Atom feed]
|
|
#context br()
|
|
]],
|
|
|
|
[#context if is-html() {
|
|
html.elem("style", "
|
|
@media only screen and (max-width: 1200px) {
|
|
.sidebar {
|
|
display: none !important;
|
|
}
|
|
|
|
.column-fixed {
|
|
width: 0% !important;
|
|
}
|
|
|
|
.body-column {
|
|
left: "+str(off)+"% !important;
|
|
}
|
|
}
|
|
|
|
@media only screen and (max-width: 1800px) {
|
|
.body-column > span {
|
|
width: 75% !important;
|
|
}
|
|
}
|
|
|
|
@media only screen and (max-width: 1200px) {
|
|
.body-column {
|
|
width: "+str(100-off)+"% !important;
|
|
}
|
|
.body-column > span {
|
|
width: 100% !important;
|
|
}
|
|
}
|
|
|
|
.hide { display: inline; background: black; transition: background 0.3s linear; }
|
|
.hide:hover, .hide:focus { background: transparent; }
|
|
")
|
|
}],
|
|
)),
|
|
[
|
|
#html-style(class:"body-column","position: absolute; left: "+str(25+off)+"%; width: "+str(75-off)+"%")[
|
|
#box(width: 50%, content)
|
|
]
|
|
],
|
|
)
|
|
} else {
|
|
content
|
|
}
|
|
|
|
#context if (not is-nano) and is-html() {
|
|
html-script("
|
|
function gotoVariant(variant) {
|
|
window.location.href = window.location.href.replace(/\.\w+.html/g, variant);
|
|
}
|
|
|
|
window.addEventListener('beforeprint', (event) => {
|
|
gotoVariant('.min.pdf');
|
|
});
|
|
")
|
|
|
|
html.elem("script", attrs:("src":"coffee.js","async":""))
|
|
}
|
|
]
|
|
}
|