1. Documentation
  2. Manage Status Page
  3. Themes
ReadmenpmGitHub
  • Introduction
  • Quickstart
  • Configuration
  • Monitors
  • Checks and scheduling
  • Notifications
  • Incidents and maintenance
  • Subscribers
  • Metrics and badges
  • Identity
  • Themes
  • Branding
  • The check run
  • Uptime and history
  • Automatic incidents
  • Notification delivery
  • Public subscriptions
  • React Router
  • Next.js
  • Astro
  • SQLite
  • Cloudflare D1
  • PostgreSQL
  • Schema and migrations
  • Cloudflare
  • Vercel
  • Self-hosting
  • API overview
  • Status endpoints
  • Incident and maintenance endpoints
  • Subscriber endpoints
  • Badges, feeds and metrics
  • Admin endpoints
  • CLI commands

Themes

Choose a status page layout, colour mode and CSS overrides.

Heyo Status ships five layouts. Set theme in heyo-status.config.ts and pass it to <StatusPage />; the generated framework projects already do both. One stylesheet contains all five themes, so changing the theme does not require a different import.

heyo-status.config.ts
theme: "slate",mode: "system",
ThemeLayout
slateDefault grouped cards, uptime bars and latency sparklines.
fernUptime figures per service over a dense history.
onyxGlobal banner, flat service list and incident timeline.
duneService categories with subcomponent status rows.
reedMinimal single column without cards or groups.

Choose slate or dune for grouped services, onyx for a flat list, fern for a history-led page or reed for a quieter layout. The config validates theme names rather than silently choosing another layout.

Colour mode

mode sets the initial preference: "system" (default), "light" or "dark". In system mode the page follows the operating system. A visitor's choice from the built-in header toggle is stored under heyo-status-theme in local storage and takes precedence on later visits.

The generated layouts render statusThemeBootstrapScript(undefined, statusPage.mode) in the document head before paint, preventing a flash of the wrong palette. If integrating manually, include it in your root layout and use suppressHydrationWarning on React's <html> element: the script updates its data-mode attribute before hydration.

Load styles once

root layout
import "@heyo-sh/heyo-status/theme/status.css";

The bundled stylesheet includes the tokens for every theme, scoped to the page's data-theme attribute. Import it once in the root layout; generated projects also import their own styles/status.css for overrides.

styles/status.css
[data-slot="status-page"] {  --status-page-max-width: 56rem;}[data-theme="onyx"] [data-slot="status-header"] {  border-bottom: 1px solid var(--color-border);}

Target data-slot hooks rather than internal Tailwind classes. Check both light and dark mode after changing tokens. To adjust accent colours, use Branding; the semantic up/degraded/down colours remain tied to the status palette.

Next steps

  • Branding
  • Configuration
Identity< PreviousBrandingNext >

Powered by heyo

On this page

Colour modeLoad styles once