Appearance
Appearance & Theming
Four options control how the editor looks in your product: theme restyles the interface, light switches the base color scheme, colors defines the swatches offered in color pickers, and title names the editor window. Together they cover the typical white-label setup. A fifth, defaultTemplateSettings, styles the page rather than the editor around it.
theme
The theme object (object, optional) sets the editor's main color scheme so the UI can match your brand:
typescript
{
theme: {
preset: "light",
canvasColor: "#f5f5f5",
borderRadius: { small: "4px", large: "12px" },
font: {
family: "Inter",
url: "https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap"
},
colors: {
primary: "#007bff",
secondary: "#6c757d",
success: "#28a745"
}
}
}The recognized properties:
preset("light"|"dark"): base color scheme. Setting"light"also enables light mode, equivalent tolight: true, and overrideslight: false. The reverse does not hold:preset: "dark"does not switch light mode off whenlight: trueis set.canvasColor(string): color of the area around the page canvas, the most common white-label tweak.borderRadius(object): corner rounding of UI elements,{ small?: string, large?: string }, e.g.{ small: "4px", large: "12px" }.font(object): UI font,{ family?: string, url?: string }. Whenurlis set, the stylesheet is loaded automatically.colors(object): named color tokens applied as CSS variables. Includesprimary,primary-light,primary-dark,secondary,error,success,active, and a numeric grey ramp (900down to10), among others.
Without a theme, the editor uses the dark preset (or light, if light: true is set).
TIP
Unknown keys in the theme object are silently ignored rather than reported as errors. If a theme change has no visible effect, double-check the property names against the list above.
light
The light option (boolean, default false) switches the editor from its default dark mode to a light color scheme:
typescript
{
light: true
}theme.preset and light are two entry points to the same switch: theme.preset: "light" also enables light mode and wins over light: false. Note that theme.preset: "dark" does not override light: true; only the light preset takes precedence.
colors
The colors option (string[], optional) defines a custom color palette for the editor's color pickers:
typescript
{
colors: [
"#007bff",
"#28a745",
"#dc3545",
"#f8f9fa"
]
}The values appear as preset swatches both in the block style pickers and in the inline text-editing toolbar, which keeps users on approved brand colors while they style pages. Without the option, no preset swatches are shown and colors are picked freely.
title
The title option (string, optional) sets the name shown in the editor's window bar:
typescript
{
title: "My Brand Landing Page Editor",
windowBar: ["fullscreen", "close"]
}The window bar has to be enabled for the title to appear: set windowBar (e.g. ["close"]) or renameTemplate: true. Setting title alone produces no visible change.
The title can be changed at runtime with LPE.setTemplateName(name), which is useful in white-label or multi-tenant setups where the name follows the loaded template.
defaultTemplateSettings
Everything above restyles the editor. The defaultTemplateSettings object (object, optional) restyles the page a user starts from: the typography, colors, and element defaults a blank template begins with, so new pages arrive on brand instead of on Topol's generic defaults.
typescript
{
defaultTemplateSettings: {
"template-color": "#fafafa",
body: { "font-family": "Inter, sans-serif", "font-size": "16px", color: "#111111" },
h1: { "font-size": "40px", "font-weight": "bold" },
a: { color: "#007bff" },
button: {
attributes: { "background-color": "#007bff", "border-radius": "8px" },
hover: { "background-color": "#0056b3" }
}
}
}The object mirrors the editor's Settings panel and accepts these groups:
- Page-level:
template-color(the page background),body, and the text tagsh1,h2,h3,a,ul,ol,li. - Per-element defaults:
section,column,row,navbar,navbarMenu,navbarMenuItem,navbarHamburgerContainer,button,divider,form,image,social,spacer,text, andvideo. Each takes anattributesobject plus optionalmdAttributes,smAttributes, andxsAttributesfor the tablet, mobile-landscape, and mobile breakpoints.buttonadditionally takeshover.
Every field is optional and merges over the built-in defaults, so you can set a single heading size without restating the rest. Values that don't match the expected shape are dropped silently rather than reported, so verify a change took effect in the editor rather than assuming it did.
WARNING
defaultTemplateSettings only shapes the blank starting template. It is applied before any template you pass to load(), and a loaded page keeps the styles stored in its own JSON. Passing the option later through updateOptions() changes what a new page looks like, not the page currently open.
