Skip to content

Theming

The editor's appearance is fully customizable via CSS variables. Pass a theme prop to override any of the 25 available properties.

Basic Usage

vue
<EmailEditor
  :theme="{
    primaryColor: '#7C3AED',
    primaryHover: '#6D28D9',
    borderRadius: '8px',
  }"
/>

All Theme Properties

PropertyCSS VariableDefaultDescription
primaryColor--ee-primary#01A8ABMain accent color
primaryHover--ee-primary-hover#018F91Hover state
primaryActive--ee-primary-active#017375Active/pressed state
borderColor--ee-border#e5e7ebDefault borders
borderColorHover--ee-border-hover#d1d5dbHovered borders
backgroundColor--ee-bg#ffffffPanel backgrounds
backgroundHover--ee-bg-hover#f3f4f6Hovered backgrounds
backgroundActive--ee-bg-active#e5e7ebActive backgrounds
textPrimary--ee-text-primary#1f2937Primary text
textSecondary--ee-text-secondary#6b7280Secondary text
textMuted--ee-text-muted#9ca3afMuted text
canvasBg--ee-canvas-bg#e5e7ebCanvas background
canvasBorder--ee-canvas-border#d1d5dbCanvas border
selectionColor--ee-selection#01A8ABSelected element outline
hoverColor--ee-hover#01A8ABHovered element outline
dropIndicatorColor--ee-drop-indicator#01A8ABDrop zone indicator
sidebarBg--ee-sidebar-bg#ffffffSidebar background
sidebarBorder--ee-sidebar-border#e5e7ebSidebar border
panelHeaderBg--ee-panel-header-bg#f9fafbPanel header background
toolbarBg--ee-toolbar-bg#ffffffToolbar background
toolbarBorder--ee-toolbar-border#e5e7ebToolbar border
successColor--ee-success#10b981Success states
warningColor--ee-warning#f59e0bWarning states
errorColor--ee-error#ef4444Error states
fontFamily--ee-font-familySystem stackUI font
fontSize--ee-font-size13pxUI font size
borderRadius--ee-radius6pxUI border radius

Examples

Dark Theme

vue
<EmailEditor
  :theme="{
    primaryColor: '#818cf8',
    primaryHover: '#6366f1',
    backgroundColor: '#1e1e2e',
    backgroundHover: '#2a2a3e',
    backgroundActive: '#363649',
    borderColor: '#3b3b52',
    textPrimary: '#e4e4ef',
    textSecondary: '#9898b0',
    textMuted: '#6b6b80',
    canvasBg: '#11111b',
    sidebarBg: '#1e1e2e',
    toolbarBg: '#1e1e2e',
    panelHeaderBg: '#2a2a3e',
  }"
/>

Brand Colors

vue
<EmailEditor
  :theme="{
    primaryColor: '#e11d48',
    primaryHover: '#be123c',
    primaryActive: '#9f1239',
    selectionColor: '#e11d48',
    hoverColor: '#e11d48',
    dropIndicatorColor: '#e11d48',
  }"
/>

Rounded UI

vue
<EmailEditor
  :theme="{
    borderRadius: '12px',
    fontFamily: 'Inter, sans-serif',
    fontSize: '14px',
  }"
/>

How It Works

The theme is applied via CSS custom properties on the .ebb-shell root element. All internal components reference these variables instead of hardcoded colors, so changes propagate everywhere instantly.

ts
import { DEFAULT_THEME } from '@lab2view/vue-email-editor'

// Access all default values
console.log(DEFAULT_THEME.primaryColor) // '#01A8AB'

Released under the MIT License.