Skip to content

Theme Customization ​

ChartSpire supports built-in themes and custom themes via themeCustom. Themes control the ChartSpire UI (sidebar, panels, popovers). For chart-level styling (candles, grid, axes), see Custom Styles. Themes switch in real time without recreating the chart.

Configuration ​

typescript
new ChartSpire({
  theme: 'Dark Theme',
  themeCustom: [],
  themesEnabled: true,
  // ...
})
OptionTypeDefaultDescription
themestring—Initial theme (built-in English key, or custom name / displayName)
themeCustomCustomTheme[]—Custom themes to register at init
themesEnabledbooleantrueShow theme selector in bottom bar

Built-in Themes ​

'Light Theme 1', 'Light Theme 2', 'Midnight Theme', 'Dark Theme', 'Dark Gray Theme', 'Blue Theme', 'Red Theme', 'Green Theme', 'Yellow Theme', 'Pink Theme'

typescript
// Set on init
new ChartSpire({ theme: 'Dark Theme' })

// Or change at runtime
chart.setTheme('Light Theme 1')

Custom Themes ​

Register custom themes via themeCustom at initialization. Users can select them in the theme dropdown when themesEnabled is true, but cannot create or edit themes in the UI.

typescript
import { ChartSpire, type CustomTheme } from '@chartspire/ui'

const customThemes: CustomTheme[] = [{
  name: 'corporate-blue',
  displayName: 'Corporate Blue',
  colors: {
    primaryColor: '#0066CC',
    selectedColor: 'rgba(0, 102, 204, 0.15)',
    hoverBackgroundColor: 'rgba(0, 102, 204, 0.1)',
    backgroundColor: '#F8F9FA',
    popoverBackgroundColor: '#FFFFFF',
    textColor: '#212529',
    textSecondColor: '#6C757D',
    borderColor: '#DEE2E6'
  }
}]

new ChartSpire({
  themeCustom: customThemes,
  theme: 'corporate-blue', // CustomTheme.name (also accepts displayName)
})

// Runtime — accepts name or displayName; stores CustomTheme.name
chart.setTheme('corporate-blue')
chart.setTheme('Corporate Blue')

CustomTheme Interface ​

typescript
interface CustomTheme {
  name: string
  displayName: string
  colors: ThemeColors
}

interface ThemeColors {
  primaryColor: string
  selectedColor: string
  hoverBackgroundColor: string
  backgroundColor: string
  popoverBackgroundColor: string
  textColor: string
  textSecondColor: string
  borderColor: string
}
  • name — Stable id used for data-theme and getTheme() / setTheme() storage.
  • displayName — Label in the theme dropdown. Must not match a built-in theme name.
  • Constructor theme and setTheme accept either name or displayName for custom themes; the stored value is always name.