Configuration

Themes

Choose a visual preset, set accent colors and fonts, and control light and dark mode.

Velu ships with a light and a dark appearance. You control the look with theme, colors, and font in velu.json. Readers switch between light and dark with the theme control in the header.

Visual preset

theme selects the layout chrome. Omit it (or set "velu") for the default Velu look.

{ "theme": "velu" }

Vepa preset

Set "theme": "vepa" for a denser header, sidebar, and table of contents.

{
"theme": "vepa",
"colors": { "primary": "#16A34A", "light": "#07C983" }
}
A Velu docs page using the Vepa theme, with the header, left sidebar, article, and table of contents

For Vepa, colors.primary is the light-mode accent and colors.light is the dark-mode accent. The default font is Inter unless you set font.family.

Thulir preset

Set "theme": "thulir" for a fresh, open layout with Inter typography and a compact previous/next footer.

{
"theme": "thulir",
"colors": {
"primary": "#0D9373",
"light": "#12A481",
"dark": "#46D6AD"
}
}
A Velu docs page using the Thulir theme, with the header, left sidebar, article, and On this page table of contents

For Thulir, colors.primary is the light-mode accent, colors.light is the dark-mode accent, and colors.dark tints the header button. The default font is Inter unless you set font.family. The name means a fresh sprout in Tamil.

Aalam preset

Set "theme": "aalam" for branding, search, and navigation in the left sidebar, with tabs above the article.

{
"theme": "aalam",
"colors": {
"primary": "#C2410C",
"light": "#EA580C",
"dark": "#FB923C"
}
}
A Velu docs page using the Aalam theme, with branding, search, and navigation in the left sidebar and tabs above the article

For Aalam, colors.primary is the light-mode accent, colors.light is the dark-mode accent, and colors.dark tints header buttons. The default font is Inter unless you set font.family. The name means banyan in Tamil.

Nila preset

Set "theme": "nila" for a compact header, grouped sidebar, and a focused reading column.

{
"theme": "nila",
"colors": {
"primary": "#4338CA",
"light": "#6366F1",
"dark": "#A5B4FC"
}
}
A Velu docs page using the Nila theme, with a compact header, grouped sidebar, and focused reading column

For Nila, colors.primary is the light-mode accent, colors.light is the dark-mode accent, and colors.dark tints header buttons. The default font is Inter unless you set font.family. The name means moon in Tamil.

The visual preset is separate from the reader's Light / Dark / System preference.

Light and dark mode

Every site supports both themes. On a reader's first visit, Velu follows their operating system preference.

Dark mode is on by default and always available. There is no config to turn it off or to lock the site to a single theme.

Because the theme persists per browser, the toggle you see while previewing may differ from a first-time visitor's. Clear the velu-theme key or open a private window to see the OS-driven default.

Colors

colors.primary is the accent used across the interface: links, active navigation items, and buttons. It defaults to #dc143c.

{ "colors": { "primary": "#dc143c" } }

Per-theme accents

A single accent can look too dark on a dark background or too light on a light one. Add light and dark to set the accent for each theme; either one falls back to primary when omitted.

{
"colors": {
"primary": "#dc143c",
"light": "#f26b83",
"dark": "#b3102f"
}
}

Here light is used when the reader is in light mode and dark when they're in dark mode.

Font

font.family is any Google Font family name. Velu loads the font automatically and applies it as the body font: you don't add a stylesheet or a script.

{ "font": { "family": "Inter" } }

Use the exact family name as it appears on Google Fonts, for example "Roboto Mono" or "IBM Plex Sans".

Beyond colors and fonts

When colors and font aren't enough, add a .css file to your project. Velu includes it on every page, after its own styles, so your rules win. The same goes for .js files. See Custom scripts for the stable selectors you can target and how scripts are loaded.

See Global settings for the full velu.json reference, including the logo and favicon that sit alongside these theme fields.

Was this page helpful?