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

Themes

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

Choose a layout with theme in heyo-status.config.ts. The generated projects pass it to <StatusPage /> for you. All five layouts share one stylesheet, so switching themes doesn't mean changing imports.

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.

Start with slate for grouped services. Use dune for subcomponents, onyx for a flat list, fern when history is the focus, or reed for a simpler page. An unknown theme name fails config validation.

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.

To avoid a flash of the wrong palette, generated layouts run statusThemeBootstrapScript(undefined, statusPage.mode) in the document head before paint. In a manual integration, add it to your root layout. For React, also set suppressHydrationWarning on <html>: the script changes data-mode 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
Branding< PreviousMonitorsNext >

Powered by heyo

On this page

Colour modeLoad styles once