Charts and components
Custom Canvas

Custom Canvas Components

Custom Canvas is a feature that lets your users build their own dashboards inside your product.

The UI components powering Custom Canvas (panels, forms, buttons, cards) are built on Remarkable UI (opens in a new tab). These components are currently fixed - you can't swap them out or modify their behavior - but you can style them to match your brand using CSS variables.

How to Style Custom Canvas

How you apply styles depends on your component library:

Remarkable Pro

Add variables to theme.styles in your theme:

// embeddable.theme.ts
const themeProvider = (clientContext: any, parentTheme: Theme): Theme => {
  return defineTheme(parentTheme, {
    styles: {
      '--em-sem-background': '#f8f9fa',
      '--em-sem-text': '#1a1a2e',
    },
  });
};

For full theming details, see Theming Remarkable Pro and How Styling Works.

Vanilla Components

Add variables to remarkableVars in your theme (requires v1.3.1+):

// embeddable.theme.ts
const theme: ThemePartial = {
  // ... other theme properties ...
  remarkableVars: {
    '--em-background-color-default': '#f8f9fa',
    '--em-foreground-color-default': '#1a1a2e',
  },
};

For setup details, see Theming Vanilla Components.


Common Customizations

Override only what you need. Start with these high-impact variables.

Brand Colors

Set the main background and text colors that define your look:

VariableDescriptionDefault
--em-background-color-defaultMain background color#ffffff
--em-background-color-subtleSecondary/muted backgrounds#f8f9fa
--em-foreground-color-defaultPrimary text color#1a1a2e
--em-primary-btn-background-color-defaultPrimary button backgroundBrand blue

Cards

Chart cards are the containers for each visualization:

VariableDescription
--em-card-border-radius-defaultCorner rounding for cards
--em-card-padding-defaultInner spacing
--em-card-title-color-defaultCard title text color
--em-card-title-font-weightCard title boldness
--em-box-shadow-default-colorCard shadow color
--em-box-shadow-default-blurCard shadow blur radius

Buttons

Style the action buttons throughout the interface:

VariableDescription
--em-primary-btn-background-color-defaultPrimary button fill
--em-primary-btn-background-color-disabledDisabled state fill
--em-secondary-btn-background-color-defaultSecondary button fill
--em-secondary-btn-background-color-hoverSecondary button hover
--em-icon-btn-background-color-defaultIcon button fill
--em-icon-btn-background-color-hoverIcon button hover

Forms & Inputs

Customize dropdowns, text inputs, and form sections:

VariableDescription
--em-form-background-color-defaultForm panel background
--em-form-border-radius-defaultForm panel corners
--em-form-header-font-font-colorForm section header color
--em-text-input-label-color-defaultInput label color
--em-select-menu-label-color-defaultDropdown label color

Typography

Fine-tune font sizes and weights:

VariableDescription
--em-font-size-smSmall text size
--em-font-size-mdMedium text size
--em-font-weight-mediumMedium font weight
--em-line-height-smSmall line height

Full Variable Reference

Below is the complete list of supported CSS variables, organized by category.

Backgrounds & Surfaces

--em-background-color-default
--em-background-color-neutral
--em-background-color-subtle
--em-background-inverted
--em-foreground-color-default
--em-foreground-color-inverted
--em-content-inverted
--em-gray-800
--em-gray-900

Cards

--em-card-border-radius-default
--em-card-padding-default
--em-card-title-color-default
--em-card-title-font-weight
--em-card-title-font-line-height
--em-card-title-padding-default
--em-card-subtitle-color-default
--em-card-subtitle-font-font-family
--em-card-info-font-font-family
--em-card-info-font-size
--em-card-info-font-line-height
--em-card-info-font-title-weight
--em-card-empty-title-font-color-default
--em-card-loader-icon-size-height
--em-card-loader-icon-size-width

Buttons

--em-primary-btn-background-color-default
--em-primary-btn-background-color-disabled
--em-primary-btn-label-color-disabled
--em-primary-btn-label-font-small-size
--em-secondary-btn-background-color-default
--em-secondary-btn-background-color-hover
--em-icon-btn-background-color-default
--em-icon-btn-background-color-hover
--em-icon-btn-border-radius-default
--em-icon-btn-icon-color-default
--em-icon-btn-icon-color-call-to-action
--em-icon-btn-icon-size-height
--em-icon-btn-icon-size-width
--em-icon-btn-size-height
--em-icon-btn-size-width
--em-btn-island-background-color-default

Forms & Inputs

--em-form-background-color-default
--em-form-border-radius-default
--em-form-padding-default
--em-form-padding-small
--em-form-padding-large
--em-form-font-font-size-title
--em-form-font-font-weight
--em-form-font-line-height
--em-form-header-font-font-color
--em-form-header-font-font-family
--em-form-header-font-font-size
--em-form-header-font-font-weight
--em-form-header-font-line-height
--em-form-header-icon-color-default
--em-form-section-font-font-color
--em-form-section-font-font-family
--em-form-section-font-font-size
--em-form-section-font-font-weight
--em-form-section-font-line-height
--em-form-group-background-color-hover
--em-form-group-padding-default
--em-form-group-padding-small
--em-form-group-icon-size-height
--em-form-group-icon-size-width
--em-text-input-label-color-default
--em-text-input-size-min-width
--em-select-menu-label-color-default
--em-select-menu-label-font-size
--em-select-menu-label-font-weight
--em-select-list-item-isolate-background-color-default
--em-select-list-item-isolate-border-radius-default
--em-select-list-item-isolate-label-color-default
--em-select-list-item-isolate-label-font-size
--em-select-list-item-isolate-label-font-weight
--em-select-list-item-isolate-padding-default

Typography

--em-font-size-xs
--em-font-size-sm
--em-font-size-md
--em-font-weight-medium
--em-line-height-sm
--em-line-height-l

Borders & Shadows

--em-border-radius-200
--em-border-radius-400
--em-border-radius-500
--em-border-width-0
--em-border-width-default
--em-box-shadow-default-blur
--em-box-shadow-default-color
--em-box-shadow-default-position-x
--em-box-shadow-default-position-y
--em-box-shadow-default-spread

Spacing

--em-padding-100
--em-padding-200
--em-padding-300
--em-padding-400
--em-padding-800

Empty States

--em-empty-state-background-color-default
--em-empty-state-icon-color-default
--em-empty-state-icon-size-height
--em-empty-state-icon-size-width
--em-empty-state-padding-default

Lightbox & Overlays

--em-lightbox-font-color-default
--em-lightbox-font-font-family
--em-lightbox-font-font-size
--em-lightbox-font-font-weight
--em-lightbox-font-line-height
--em-overlay-z

Status Colors

--em-status-error
--em-status-negative-foreground
--em-switch-thumb-background-color

Tips

  • Override sparingly: Change only what's needed to match your brand. Fewer overrides means easier maintenance.
  • Test both themes: If you support light and dark modes, verify your changes work in both contexts.
  • Check accessibility: Ensure sufficient color contrast between text and backgrounds.