EmailTheming extension
TheEmailTheming extension from @react-email/editor/plugins adds theme-aware styling
to the editor and provides a SerializerPlugin for theme-aware HTML export.
EditorThemeInput
default:"'basic'"
The active theme. Accepts a built-in preset (
'basic' or 'minimal') or a ThemeConfig
object for custom themes.Types
EditorTheme
EditorThemeInput
The widened theme type accepted by thetheme prop and EmailTheming.configure():
ThemeableComponent
The subset ofKnownThemeComponents that can be customized via ThemeComponentStyles:
ThemeComponentStyles
CSS-in-JS styles keyed by themeable component name:ThemeConfig
A custom theme configuration object:EditorTheme
The built-in theme to inherit from. If omitted, uses
'minimal' reset styles as a base.ThemeComponentStyles
required
CSS-in-JS styles keyed by component name. Values are merged on top of the base theme.
KnownThemeComponents
All component keys that a theme can style:KnownCssProperties
CSS properties that can be customized per theme component: Layout:align, width, height, padding, paddingTop, paddingRight,
paddingBottom, paddingLeft, margin, marginTop, marginRight, marginBottom,
marginLeft
Appearance: backgroundColor, color, borderRadius, borderWidth, borderColor,
borderStyle
Typography: fontSize, fontWeight, lineHeight, textDecoration, fontFamily,
letterSpacing
CssJs
A mapping of theme component keys to CSS properties:PanelGroup
Represents a group of configurable theme properties for a component:PanelInputProperty
An individual configurable CSS property within a panel:Theme helpers
createTheme
Creates a custom theme from scratch (usesminimal reset as base):
ThemeComponentStyles
required
CSS-in-JS styles keyed by component name.
ThemeConfig object.
extendTheme
Extends a built-in theme with style overrides:EditorTheme
required
The built-in theme to extend (
'basic' or 'minimal').ThemeComponentStyles
required
CSS-in-JS styles to merge on top of the base theme.
ThemeConfig object.
Utility functions
getMergedCssJs
Merges the base theme styles with custom panel overrides:EditorTheme
required
The active theme to use as a base.
PanelGroup[]
Custom style overrides from the theme panel UI.
getResolvedNodeStyles
Resolves the final CSS styles for a specific node based on theme and document depth:JSONContent
required
The TipTap node to resolve styles for.
number
required
The node’s depth in the document tree. Affects styles for nested elements (e.g., nested lists).
CssJs
required
The merged theme styles from
getMergedCssJs.