theming/types#
THEME_ID_PATTERN#
Ids must be safe to embed in a [data-theme='…'] attribute selector.
RegisteredTheme#
Extends#
Properties#
base#
Drives fallback, color-scheme, MUI mode and nativeTheme.themeSource.
Inherited from#
css?#
Raw CSS escape hatch. Sanitized and scoped — see sanitizeCss.ts.
Inherited from#
cssInStylesheet#
True when the CSS already lives in index.css and must not be emitted.
density?#
Inherited from#
description?#
Inherited from#
editorTheme?#
ace?#
monaco?#
Inherited from#
id#
Inherited from#
muiPalette?#
Inherited from#
name#
Inherited from#
owner?#
Plugin id, for unregisterByOwner and for grouping in settings.
plotlyTemplate?#
Inherited from#
ThemeDefinition.plotlyTemplate
preview?#
Inherited from#
sanitizedCss?#
Sanitized output of css, ready to inject.
shape?#
Inherited from#
source#
tokens#
SPARSE — only the tokens that differ from the base built-in. The rest are
inherited through the cascade via [data-theme-base='…']. Requiring all
~140 tokens is why nobody would ever write a theme.
Inherited from#
typography?#
Inherited from#
warnings#
ThemeDefinition#
Extended by#
Properties#
base#
Drives fallback, color-scheme, MUI mode and nativeTheme.themeSource.
css?#
Raw CSS escape hatch. Sanitized and scoped — see sanitizeCss.ts.
density?#
description?#
editorTheme?#
ace?#
monaco?#
id#
muiPalette?#
name#
plotlyTemplate?#
preview?#
shape?#
tokens#
SPARSE — only the tokens that differ from the base built-in. The rest are
inherited through the cascade via [data-theme-base='…']. Requiring all
~140 tokens is why nobody would ever write a theme.
typography?#
ThemeDensity#
Properties#
scale?#
Clamped to [0.85, 1.25]. Multiplies the chrome height tokens.
ThemeMuiPalette#
Properties#
background?#
__type?#
paper?#
primary?#
secondary?#
success?#
ThemePreview#
Swatch used by the onboarding schematic and the settings theme list.
Properties#
accent#
card#
chrome#
divider#
muted#
sunken#
text#
ThemeShape#
Properties#
borderWidth?#
radiusLg?#
radiusMd?#
radiusPill?#
radiusSm?#
shadow1?#
shadow2?#
shadow3?#
ThemeTypography#
Properties#
fontMono?#
fontScale?#
Clamped to [0.9, 1.15].
fontUi?#
Family list. Must resolve to shipped or system fonts — no @font-face.
fontWeightUi?#
Clamped to [300, 600].
ThemeWarning#
Properties#
kind#
message#
subject#
Token name, CSS property, or selector the warning refers to.
ThemeBase#
The theme model shared by built-in themes and plugin-provided skins.
Built-ins and plugin themes are described by the SAME type and flow through
the same registry, resolver, MUI builder and settings UI. The only difference
is cssInStylesheet: a built-in's CSS already lives in styles/index.css
(so it is applied by the CSS parser before the first frame, which is what
keeps cold start flash-free), while a plugin theme is compiled to a