LCLiveCharts
Guides

Chrome slots

Replace built-in window / mode / series chrome with your own UI

LiveCharts draws the canvas. The toolbar above it (time windows, line/candle toggle, series chips) is optional chrome.

Use named slots to plug in your own DOM. Omit a slot to keep the default chrome for that piece.

Live previews below use the shared engine (React demos). Copy the Vue snippets for livecharts/vue.

See the difference

Built-in window pills:

Built-in chrome (Liveline-style window pills).

Custom underline tabs (same idea as #windows):

Same chart, custom chrome — underline tabs instead of pills.

Windows

<script setup lang="ts">
import { LiveChart } from "livecharts/vue";
import type { LiveChartPoint } from "livecharts/vue";
import { ref } from "vue";

const data = ref<LiveChartPoint[]>([]);
const value = ref(0);
</script>

<template>
  <LiveChart
    :data="data"
    :value="value"
    :windows="[
      { label: '30s', secs: 30 },
      { label: '2m', secs: 120 },
    ]"
  >
    <template #windows="{ windows, activeSecs, setWindow }">
      <div style="display: flex; gap: 8px">
        <button
          v-for="w in windows"
          :key="w.secs"
          type="button"
          :aria-pressed="w.secs === activeSecs"
          @click="setWindow(w.secs)"
        >
          {{ w.label }}
        </button>
      </div>
    </template>
  </LiveChart>
</template>

setWindow updates the horizon and emits windowChange.

Mode toggle

Custom text segments:

Custom mode toggle — LINE / CANDLE text, not the default icons.

@mode-change is required for both the default toggle and #mode-toggle — otherwise setMode cannot update controlled mode.

<template>
  <LiveChart
    :mode="mode"
    :candles="candles"
    :live-candle="liveCandle"
    :candle-width="60"
    :data="ticks"
    :value="latest"
    @mode-change="mode = $event"
  >
    <template #mode-toggle="{ mode: current, setMode }">
      <select :value="current" @change="setMode(($event.target as HTMLSelectElement).value as 'line' | 'candle')">
        <option value="line">Line</option>
        <option value="candle">Candle</option>
      </select>
    </template>
  </LiveChart>
</template>

Series chips

Outline pills:

Custom series toggle — outline pills you can style with any design system.

<template>
  <LiveChart :series="series" :data="[]" :value="0">
    <template #series-toggle="{ series: items, toggle }">
      <button
        v-for="s in items"
        :key="s.id"
        type="button"
        :style="{ opacity: s.visible ? 1 : 0.4 }"
        @click="toggle(s.id)"
      >
        {{ s.label }}
      </button>
    </template>
  </LiveChart>
</template>

Slot names

SlotScope
#windowswindows, activeSecs, setWindow, theme
#mode-togglemode, setMode, theme
#series-toggleseries, toggle, theme

Types: ChromeWindowsSlotProps, ChromeModeSlotProps, ChromeSeriesSlotProps from livecharts/vue.

On this page