GitHub

Theming#

Kiln ships a fresh, responsive default theme as a package resource: light/dark colour schemes, a sidebar nav, an on-page table of contents, and search. You can tweak it with options, or replace any part with your own templates.

Tweaking the default theme#

theme: .default(
    palette: .autoLightDark(primary: .black, accent: .blue),
    logo: "assets/logo.svg",
    favicon: "assets/logo.svg",
    fonts: .init(text: "Inter", code: "JetBrains Mono"),
    features: [.backToTop, .searchHighlight]
)
Option Purpose
palette Palette with primary/accent Colors and a default mode (.auto/.light/.dark).
logo Header logo (content-relative path).
favicon Site favicon.
fonts Fonts(text:code:) for body and code text.
features Opt-in extras: .searchSuggest, .searchHighlight, .navigationTabs, .backToTop.

Color has presets (.black, .blue, .indigo, …) or accepts any CSS string via Color("#2f6feb").

Bringing your own templates#

To customise the markup, point Kiln at a directory of your own Leaf templates and assets:

theme: .custom(directory: "Theme")

Templates resolve from your directory first and fall back to the bundled theme, so you only override what you need. The theme is split into small partials:

Theme/
├── templates/
│   ├── base.leaf            # overall page shell (<head>, header, layout, scripts)
│   ├── page.leaf            # a standard documentation page
│   ├── home.leaf            # the home page
│   ├── 404.leaf             # the error page
│   └── partials/
│       ├── header.leaf
│       ├── footer.leaf
│       ├── nav-tree.leaf
│       ├── toc.leaf
│       ├── search.leaf
│       ├── language-switcher.leaf
│       └── social-icons.leaf
├── css/
└── js/

Template context#

Templates receive a context with site, page, nav, language, languages, and searchIndexURL. The rendered page body is injected with #unsafeHTML(page.content).

Per-page templates

A page can opt into a different template via the template front-matter key (see Markdown) — handy for a landing page or a differently laid-out reference.

Extra CSS / JS#

For small additions you don’t need a full custom theme — just add stylesheets or scripts (content-relative paths):

extraCSS: ["assets/custom.css"],
extraJavaScript: ["assets/custom.js"]
Edit this page