Theming

Imprensa UI is built with Areia and Tailwind CSS v4. The starter keeps styling mostly in utility classes and theme tokens, so you can rebrand without rewriting components.

Theme tokens

Set tokens in src/app.css. The most common change is the primary color:

* {
  --areia-primary: #7c3aed;
}

Areia components, links, focus rings, and active navigation states use these tokens automatically.

Light, dark, and system mode

The starter includes a theme toggle with three modes:

  • Light — force light colors
  • Dark — force dark colors
  • System — follow prefers-color-scheme

The choice is saved in localStorage as imprensa:theme. The runtime applies the theme before rendering to avoid a flash of the wrong color scheme.

Logo and brand name

Replace public/logo.svg with your logo. The default LogoButton from imprensa/components renders /logo.svg beside the text “Imprensa”.

For a product site, create your own logo button or top bar in src/lib/components/ and use it from the landing page or layout.

Fonts

The starter imports Geist in src/main.ts:

import "@fontsource-variable/geist";
import "@fontsource-variable/geist-mono";

To use another font, replace those imports and update the Areia font tokens:

* {
  --areia-font-sans: "Inter", system-ui, sans-serif;
  --areia-font-mono: "JetBrains Mono", ui-monospace, monospace;
}

Code themes

Configure Shiki in vite.config.ts:

imprensa({
  shiki: {
    themes: { light: "night-owl-light", dark: "houston" },
  },
});

Use any Shiki bundled theme. Keep contrast high in both light and dark mode.

Styling guidance

Prefer small local components and theme tokens over global overrides. If a style should affect all docs pages, put it in src/app.css; if it belongs to one UI section, keep it next to that component.