Skip to main content

API Reference

User-facing contract for @keisen-charts/react and @keisen-charts/vue. Prefer the TypeScript types in packages/*/src when in doubt.

Install

bun add @keisen-charts/react # or @keisen-charts/vue
# peer: react@^18 || ^19 / vue@^3.5
# runtime dep @keisen-charts/core is installed with the package

KeisenChart props

Shared data / appearance props (React props and Vue props):

PropTypeDescription
dataKlineBar[]Controlled static K-line series
getDataGetDataFnOn-demand history fetch
onSubscribeOnSubscribeFnLive subscription; may return unsubscribe
resolutionResolutionDefault "1"
symbolstringInstrument id
themeThemeInputPreset id, full definition, or token overrides
modeThemeMode"light" | "dark" (store default "dark")
upDownUpDownScheme"green-up" | "red-up" (store default "green-up")
timezoneKlineTimezone"local" | "UTC" | IANA string (default "local")
localestringLocale id, e.g. "zh-CN" (default "zh-CN")
priceFormatPriceFormatMain-chart price labels (default { type: "price" })
showDataPanelbooleanCrosshair info panel, default true

Layout:

ReactVue
header?: ReactNodeslot header
children?: ReactNodeslot default

Controlled callbacks (React → Vue)

React propVue emitPayload
onResolutionChangeresolution-changeResolution
onThemeChangetheme-changeThemeInput
onModeChangemode-changeThemeMode
onUpDownChangeup-down-changeUpDownScheme
onTimezoneChangetimezone-changeKlineTimezone
onLocaleChangelocale-changestring
onPointerMovepointer-moveChartPointerInfo | null
onPointerDownpointer-downChartPointerInfo
onPointerUppointer-upChartPointerInfo
onClickclickChartPointerInfo

React exposes change / pointer handlers as props. Vue exposes the same surface as emits (no on* props).

Hooks / Composables

NamePurpose
useKlineDataRead / mutate current ChartDataState (data, appendBars, replaceKline, prependBars, …)
useKlineResolutionRead/write resolution
useKlineThemetheme / mode / upDown / resolved colors
useKlineTimezoneTimezone
useKlineLocalelocale + messages

Must be called inside the KeisenChart subtree (e.g. header). Vue returns Ref / ComputedRef where React returns plain values.

Types cheat sheet

type KlineBar = { t: number; o: number; h: number; l: number; c: number; v: number }

type Resolution = `${number}` | "1D" | "1W" | "1M"

type GetDataFn = (params: {
resolution: Resolution
symbol?: string
countBack?: number
from?: number
to?: number
}) => Promise<KlineBar[]>

type OnSubscribeFn = (
params: { resolution: Resolution; symbol?: string },
emit: {
bar: (bar: KlineBar) => void
append: (bar: KlineBar) => void
updateLast: (bar: KlineBar) => void
replace: (bars: KlineBar[]) => void
},
) => void | (() => void)

type ThemeMode = "light" | "dark"
type UpDownScheme = "green-up" | "red-up"
type ThemeInput = string | ThemeDefinition | Partial<ThemeTokens>
type KlineTimezone = "local" | "UTC" | (string & {})

type PriceFormatter = (value: number, ctx: PriceFormatContext) => string
type PriceFormat =
| {
type: "price"
minMove?: number
precision?: number
compactTiny?: boolean
useGrouping?: boolean
}
| { type: "custom"; minMove?: number; formatter: PriceFormatter }

type ChartPointerInfo = {
chartId: string
x: number
y: number
timestamp: number
value: number
barIndex: number
pointerType?: string
}

Extension points

  • registerTheme / registerLocale
  • registerIndicator / createIndicatorChart
  • createPriceFormatter / formatCompactTiny / formatPrice
  • @keisen-charts/react/toolkit / @keisen-charts/vue/toolkit: useKlineIndicator, useDrawOverlay (see guides for settings / toolbar UI)