MuseMVP

MuseMVP Base: Next.js for Node and Cloudflare. MuseMVP Flare: an AI SaaS template that runs entirely on Cloudflare. Authentication, billing and administration included.

Product
  • Home
  • Pricing
  • Templates
Resources
  • Docs
  • Blog
  • Changelog
Legal
  • Privacy
  • Terms
  • Community
Open-Launch Top 1 Daily WinnerOpen-Launch Top 1 Daily WinnerVerified DR - Verified Domain Rating for musemvp.comVerified DR - Verified Domain Rating for musemvp.comMuseMVP - Featured on Startup FameMuseMVP - Featured on Startup FameFazier badgeFazier badgeLiftOff award badgeLiftOff award badge

© 2026 MuseMVP. All rights reserved.

MuseMVP
  • Pricing
  • Docs
  • Blog
  • Changelog
Buy All in One
MuseMVP Docs
MuseMVP Docs
OverviewTech StackQuick Start
Project Structure
EmailObject Storage
Theme Modes and TokensApp Layout CustomizationLanding Templates
Internationalization
SEOAnalytics
Customization

Theme Modes and Tokens

Configure light/dark/system mode, token variables, and theme switch behavior in the current MuseMVP implementation.

This guide focuses on the current theme implementation in MuseMVP: mode switching (light / dark / system) plus CSS token customization.

Capability Overview

CapabilityCurrent behavior
Theme modesControlled by config.ui.enabledThemes
Default modeControlled by config.ui.defaultTheme
Theme provider@wrksz/themes/next, mounted in src/modules/html-document/Document.tsx
Token sourcesrc/app/globals.css and src/app/styles/theme.css
UI switcherColorThemeSwitcherNoCustomTheme (@wrksz/themes/client) used in app layouts

Scope

The current system is a stable "mode switch + token variables" setup. It does not include a built-in multi-brand preset library.

Quick Configuration

Set allowed modes

Update enabledThemes and defaultTheme in packages/config.

// packages/config
ui: {
  enabledThemes: ["light", "dark", "system"],
  defaultTheme: "dark",
}

Update core tokens

Update shared and dark-mode tokens in src/app/globals.css.

/* src/app/globals.css */
:root {
  --background: oklch(...);
  --foreground: oklch(...);
  --primary: oklch(...);
}

.dark {
  --background: oklch(...);
  --foreground: oklch(...);
  --primary: oklch(...);
}

Add product-specific tokens when needed

Place additional design tokens in src/app/styles/theme.css (for example --success, --highlight) and consume them in components.

Mode Option Reference

ModeMeaning
lightAlways uses light palette
darkAlways uses dark palette
systemFollows OS/browser color-scheme preference

Common Pitfalls

Import order matters

src/app/main.css imports theme.css first and globals.css second. If the same variable exists in both files, globals.css wins.

Default mode must be enabled

Keep defaultTheme included in enabledThemes. Example: if defaultTheme is dark, enabledThemes should still include dark.

Landing visual tokens

Default landing look is warm terracotta primary on a warm gray canvas, not a hard-edged theme.

TokenDefaultWhere
--radius0.875remsrc/app/globals.css (:root and .dark). @theme inline keeps the +4px radius ladder.
--primaryterracotta / clay orange (oklch(0.55 0.14 42) in light)src/app/globals.css
Shadowssoft multi-layer, not blur: 3px hard edgessrc/app/globals.css
.landing-gridfaint 72px grid with a radial masksrc/app/main.css

Style-only rounded-none on landing cards is gone. Signed-in settings headers and panels (SettingsShell, SettingsPanelItem) use rounded-xl to match the shell. Keep rounded-none on control seams such as data-table, calendar, input-group, and toggle-group.

Related Docs

  • App Layout Customization - Customize dashboard/admin layout style
  • Application Configuration - Full packages/config options
  • Internationalization - Theme label i18n mapping

API Visualization

An admin-oriented API discovery solution based on OpenAPI aggregation and Scalar UI.

App Layout Customization

Customize the signed-in SaaS shell under src/modules/layout, and replace the /app home body.

On this page

Capability OverviewQuick ConfigurationSet allowed modesUpdate core tokensAdd product-specific tokens when neededMode Option ReferenceCommon PitfallsLanding visual tokensRelated Docs

One payment. Tax included.

All in One

Base, Flare and every UI template, plus new ones.

$129

Buy All in One