Hello, lamina
This page exercises every feature the framework has. The first paragraph is the description; the # line above is the title; the date is the filename prefix. Nothing else is declared anywhere.
Prose, links, footnotes
Internal links get a hover preview at build time: see the second note or a section of it, its method. Hover either. A footnote11 Footnotes can hold markdown and links. An inline note is written ^[like this]. sits in the margin on a wide screen; narrower, it shows on hover and lists at the bottom. Terms in double brackets resolve against the glossary page: Static site, enhanced progressively. An unknown term like [[nope]] would be flagged at build time and rendered muted.
Prices in prose are safe with math on: $1.5B raised, $2 per seat, range $5-$10.
Heading hierarchy
Third-level headings appear indented in the contents minimap without crowding it with deeper headings.
Tables
GFM pipe tables. Headers sort on click, numbers compare as numbers.
| project | stars | growth | note |
|---|---|---|---|
| alpha | 12.4K | 8% | steady |
| beta | 980 | 31% | new |
| gamma | 1.2M | -2% | plateau |
Raw HTML tables wrapped in <div class="t"> still work exactly as before.
Code
def hello(name: str) -> str:
return f"hello, {name}"
indented code still works too
Mermaid
flowchart LR md[pages/*.md] --> markdown-it-py --> lamina --> out[output/*.html] lamina -. previews, footnotes, ids .-> out
Rendered client-side by mermaid, theme follows the OS setting, source text is the no-JS fallback.
Math
Inline: the loss is \(\mathcal{L} = -\sum_i y_i \log \hat{y}_i\) and the update is \(\theta \leftarrow \theta - \eta \nabla_\theta \mathcal{L}\).
MathJax loads only on pages that contain math.
Embedded animation
A raw HTML block with its own script. Page assets live in a directory named like the page (2026-09-08-hello-lamina/) and are served under /hello-lamina/. The script uses lamina.onVisible to start only when scrolled into view, lamina.reducedMotion to respect the OS setting, and lamina.dark() for colours.
Inline <script> works the same way; a file is just easier to edit.
Details, revision marks, errata
Materials
Folded section (markdown inside works now)
Content with bold and a list:
- one
- two
This paragraph was revised; the margin badge says when.
Struck text: old claim with GFM strikethrough, or <del> as before.
Errata
- 09-08 — nothing yet; this block shows the styling.