Hello, lamina

· updated

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}\).

\[\begin{aligned} \operatorname{softmax}(z)_i &= \frac{e^{z_i}}{\sum_j e^{z_j}} \\ \mathrm{KL}(p \,\|\, q) &= \sum_x p(x) \log \frac{p(x)}{q(x)} \end{aligned}\]

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.
  1. Footnotes can hold markdown and links. An inline note is written ^[like this].