feat: style the landing page with the academic theme
Assisted-by: Delta:zai-glm-5.3
This commit is contained in:
3 files changed
+295
-2
No files matched your search
@@ -7,7 +7,7 @@ site generator.
|
||||
## Layout
|
||||
|
||||
- `site/` — website sources: `calepin.toml` + `.typ` pages
|
||||
- `site/themes/yggdrasil/` — local theme extending the bundled `calepin` theme
|
||||
- `site/themes/yggdrasil/` — local theme extending the bundled `calepin` theme (scoped sidebars, academic-styled landing)
|
||||
- `public/` — generated site (gitignored)
|
||||
- `tools/` — pinned `calepin` and `typst` binaries (gitignored, downloaded on demand)
|
||||
- `scripts/` — helper scripts used by the Justfile and CI
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
#set document(title: [Yggdrasil])
|
||||
#metadata((title: "Home", translation_key: "home")) <website-metadata>
|
||||
#metadata((title: "Home", translation_key: "home", layout: "layouts/site-landing.html")) <website-metadata>
|
||||
|
||||
#title()
|
||||
|
||||
|
||||
@@ -0,0 +1,293 @@
|
||||
{% set calepin_theme_storage_key = "calepin-website-theme" %}
|
||||
{% set calepin_theme_param = "theme" %}
|
||||
{% include "partials/site-head.html" %}
|
||||
<style>
|
||||
/*
|
||||
* Academic theme styling, applied to the landing page only.
|
||||
* Copied from the bundled academic theme (css/50_main.css, calepin 0.0.61).
|
||||
*/
|
||||
:root {
|
||||
--calepin-page-width: calc(var(--calepin-content-width) + var(--calepin-margin-gap) + var(--calepin-margin-width));
|
||||
--calepin-margin-width: 16rem;
|
||||
}
|
||||
|
||||
.academic-topbar {
|
||||
transition: transform 180ms ease;
|
||||
will-change: transform;
|
||||
}
|
||||
|
||||
.academic-topbar.is-hidden {
|
||||
transform: translateY(-100%);
|
||||
}
|
||||
|
||||
.academic-document-controls {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
width: min(100% - 2rem, var(--calepin-content-width));
|
||||
margin: 1rem auto 0;
|
||||
}
|
||||
|
||||
.academic-nav {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-evenly;
|
||||
width: min(100% - 2rem, var(--calepin-page-width));
|
||||
margin-inline: auto;
|
||||
}
|
||||
|
||||
.academic-nav .calepin-site-brand {
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
|
||||
.academic-menu {
|
||||
display: contents;
|
||||
}
|
||||
|
||||
.academic-nav .calepin-site-language-picker {
|
||||
width: auto;
|
||||
min-width: 7rem;
|
||||
margin: 0;
|
||||
padding: 0.3rem 1.8rem 0.3rem 0.6rem;
|
||||
font-size: 0.85rem;
|
||||
}
|
||||
|
||||
.academic-page {
|
||||
width: min(100% - 2rem, var(--calepin-content-width));
|
||||
margin-inline: auto;
|
||||
padding-block: 3.2rem 4rem;
|
||||
}
|
||||
|
||||
.academic-main {
|
||||
width: min(100%, var(--calepin-content-width));
|
||||
}
|
||||
|
||||
.academic-page.has-toc {
|
||||
width: min(100% - 2rem, var(--calepin-page-width));
|
||||
}
|
||||
|
||||
/* Academic only positions the shared TOC in its sidenote-style margin. */
|
||||
.academic-page .calepin-website-toc {
|
||||
float: right;
|
||||
clear: right;
|
||||
width: var(--calepin-margin-width);
|
||||
margin: 0.3rem 0 1.5rem var(--calepin-margin-gap);
|
||||
}
|
||||
|
||||
.academic-document-main {
|
||||
width: min(100% - 2rem, var(--calepin-content-width));
|
||||
margin-inline: auto;
|
||||
padding-block: 2.4rem 4rem;
|
||||
}
|
||||
|
||||
body:has(.academic-document-main .calepin-sidenote) .academic-document-main,
|
||||
body:has(.academic-document-main .calepin-sidefigure) .academic-document-main {
|
||||
width: min(100% - 2rem, var(--calepin-page-width));
|
||||
}
|
||||
|
||||
.academic-document-main > :not(.fullwidth):not(.full-width):not(.calepin-figure-grid) {
|
||||
max-width: var(--calepin-content-width);
|
||||
}
|
||||
|
||||
.academic-document-main > .calepin-figure-width {
|
||||
margin-inline: 0 auto !important;
|
||||
max-width: var(--calepin-content-width) !important;
|
||||
}
|
||||
|
||||
.calepin-sidenote,
|
||||
.calepin-sidefigure {
|
||||
display: block;
|
||||
float: right;
|
||||
clear: right;
|
||||
width: var(--calepin-margin-width);
|
||||
color: var(--calepin-color-muted);
|
||||
font-size: 0.84rem;
|
||||
line-height: 1.45;
|
||||
scroll-margin-top: calc(var(--calepin-topbar-height) + 1rem);
|
||||
}
|
||||
|
||||
.calepin-sidenote {
|
||||
margin: 0.25rem calc(-1 * (var(--calepin-margin-width) + var(--calepin-margin-gap))) 1rem var(--calepin-margin-gap);
|
||||
}
|
||||
|
||||
.calepin-sidenote p,
|
||||
.calepin-sidefigure figcaption {
|
||||
margin: 0 0 0.7rem;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
.calepin-sidenote-numbered::before {
|
||||
content: "[" attr(data-sidenote-number) "]";
|
||||
display: inline-block;
|
||||
margin-right: 0.28rem;
|
||||
color: var(--calepin-color-accent);
|
||||
font-size: 0.82em;
|
||||
font-weight: 600;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
/* In-text marker for a numbered sidenote. The number is emitted by the sidenote
|
||||
element; CSS only renders it as a superscript. */
|
||||
[role="doc-noteref"] {
|
||||
color: var(--calepin-color-accent);
|
||||
font-size: 0.75em;
|
||||
font-weight: 600;
|
||||
vertical-align: super;
|
||||
line-height: 0;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* A figure, table, or code output placed in the margin. */
|
||||
.calepin-sidefigure {
|
||||
margin: 0.4rem 0 1rem var(--calepin-margin-gap);
|
||||
}
|
||||
|
||||
.calepin-sidefigure figure,
|
||||
.calepin-sidefigure img,
|
||||
.calepin-sidefigure svg,
|
||||
.calepin-sidefigure table {
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.calepin-sidefigure table {
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
.calepin-site-footer {
|
||||
width: min(100% - 2rem, var(--calepin-page-width));
|
||||
margin: 2.25rem auto 0;
|
||||
padding-top: 1.3rem;
|
||||
border-top: 1px solid var(--calepin-color-border);
|
||||
color: var(--calepin-color-muted);
|
||||
font-size: 0.86rem;
|
||||
}
|
||||
|
||||
.calepin-site-footer-inner {
|
||||
width: min(100%, var(--calepin-page-width));
|
||||
}
|
||||
|
||||
.calepin-site-footer-links {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
list-style-type: none;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: center;
|
||||
gap: 0.6rem 1rem;
|
||||
}
|
||||
|
||||
.calepin-site-footer-links li {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
|
||||
.academic-landing {
|
||||
width: min(100% - 2rem, var(--calepin-page-width));
|
||||
margin-inline: auto;
|
||||
padding-block: 3rem 5rem;
|
||||
}
|
||||
|
||||
.academic-landing .landing-hero {
|
||||
display: grid;
|
||||
align-content: center;
|
||||
justify-items: start;
|
||||
gap: 1rem;
|
||||
max-width: var(--calepin-content-width);
|
||||
min-height: min(52vh, 32rem);
|
||||
border-bottom: 1px solid var(--calepin-color-border);
|
||||
}
|
||||
|
||||
.academic-landing .landing-hero h1,
|
||||
.academic-landing .landing-hero h2 {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
@media (max-width: calc(39rem + 16rem + 2rem + 2rem)) {
|
||||
.calepin-sidenote,
|
||||
.calepin-sidefigure {
|
||||
display: block;
|
||||
float: none;
|
||||
width: auto;
|
||||
margin: 0.75rem 0 1.2rem;
|
||||
padding: 0.8rem 0.9rem;
|
||||
border: 1px solid var(--calepin-color-border);
|
||||
border-radius: var(--calepin-radius-sm);
|
||||
background: var(--calepin-surface-muted);
|
||||
}
|
||||
|
||||
.academic-page .calepin-website-toc {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.academic-page.has-toc {
|
||||
width: min(100% - 2rem, var(--calepin-content-width));
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 48rem) {
|
||||
.academic-nav {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.academic-nav-toggle {
|
||||
display: inline-grid;
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
.academic-menu {
|
||||
position: absolute;
|
||||
inset: calc(var(--calepin-topbar-height) - 0.35rem) 0 auto auto;
|
||||
display: none;
|
||||
width: max-content;
|
||||
max-width: calc(100vw - 2rem);
|
||||
padding: 0.75rem;
|
||||
border: 1px solid var(--calepin-color-border);
|
||||
border-radius: var(--calepin-radius-sm);
|
||||
background: var(--calepin-color-background);
|
||||
box-shadow: var(--calepin-shadow-card);
|
||||
}
|
||||
|
||||
.academic-menu.is-open {
|
||||
display: grid;
|
||||
gap: 0.25rem;
|
||||
justify-items: stretch;
|
||||
}
|
||||
|
||||
.academic-menu a {
|
||||
display: flex;
|
||||
min-height: 2.35rem;
|
||||
padding: 0.25rem 0.2rem;
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
.academic-page,
|
||||
.academic-document-controls,
|
||||
.academic-document-main,
|
||||
.academic-landing {
|
||||
width: min(100% - 1.25rem, var(--calepin-content-width));
|
||||
}
|
||||
|
||||
.academic-page,
|
||||
.academic-document-main,
|
||||
.academic-landing {
|
||||
padding-block: 2rem 3rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.academic-topbar {
|
||||
transition: none;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
{{ doc.body_open }}
|
||||
{% set show_site_sidebar = false %}
|
||||
{% include "partials/site-nav.html" %}
|
||||
<main class="academic-landing calepin-landing calepin-content" data-pagefind-body>
|
||||
{{ doc.body }}
|
||||
</main>
|
||||
{% include "partials/site-footer.html" %}
|
||||
{% include "partials/site-search.html" %}
|
||||
{% include "partials/theme-scripts.html" %}
|
||||
{{ doc.body_close }}
|
||||
Reference in new issue
Block a user