← All @molecule/* packages · App templates
@molecule/app-charts-chartjsProvider bond · charts · App (browser) · v1.0.1 · Apache-2.0
Chart.js provider for @molecule/app-charts — renders real line/bar/pie/doughnut/area/scatter/bubble/radar/polar charts (the built-in default draws placeholders only)
npm install @molecule/app-charts-chartjsnpm · Source on GitHub · Implements @molecule/app-charts
@molecule/app-charts-chartjs is a provider bond on the app (browser) side: it implements the charts core interface (@molecule/app-charts) with a concrete vendor or library behind it.
Your code calls the core; you wire this provider once at startup. Swapping vendors later is one line in that wiring, not a rewrite.
import { setProvider, createLineChart } from '@molecule/app-charts'
import { provider } from '@molecule/app-charts-chartjs'
setProvider(provider) // wire ONCE at app startup, before any create*Chart call
// In a component (React ref + effect), destroy on cleanup:
const chart = createLineChart(canvasEl, {
labels: ['Jan', 'Feb', 'Mar'],
datasets: [{ label: 'Revenue', data: [12, 19, 8] }],
})
// …later: chart.destroy()Works with: @molecule/app-charts
Auto-generated, AI-first package reference for the molecule.dev ecosystem. It is written to be read by coding agents as much as by people, and is generated from this package's source — edit
src/index.tsJSDoc, not this file.
@molecule/app-charts-chartjs — a Chart.js-backed provider for the
@molecule/app-charts charting interface. Bond it once at startup and every
createLineChart / createBarChart / … call renders a REAL chart (the
built-in default provider only paints a "no provider bonded" placeholder).
import { setProvider, createLineChart } from '@molecule/app-charts'
import { provider } from '@molecule/app-charts-chartjs'
setProvider(provider) // wire ONCE at app startup, before any create*Chart call
// In a component (React ref + effect), destroy on cleanup:
const chart = createLineChart(canvasEl, {
labels: ['Jan', 'Feb', 'Mar'],
datasets: [{ label: 'Revenue', data: [12, 19, 8] }],
})
// …later: chart.destroy()
provider
npm install @molecule/app-charts-chartjs @molecule/app-charts chart.js
createProvider()Creates a Chart.js-backed ChartProvider.
function createProvider(): ChartProvider
Returns: A ChartProvider that renders real charts via Chart.js.
providerThe default Chart.js chart provider, ready to bond with setProvider(provider).
const provider: ChartProvider
Implements @molecule/app-charts interface.
Setup function to register this provider with the core interface:
import { setProvider } from '@molecule/app-charts'
import { provider } from '@molecule/app-charts-chartjs'
export function setupChartsChartjs(): void {
setProvider(provider)
}
Peer dependencies:
@molecule/app-charts ^1.0.1@molecule/app-chartschart.jsRenders line/bar/pie/doughnut/area/scatter/bubble/radar/polar natively. area
is a line chart with fill: true; polar maps to Chart.js polarArea. The
remaining molecule chart types (heatmap/treemap/funnel/gauge/candlestick) are
NOT in base Chart.js — createChart throws an actionable error for them (add a
Chart.js plugin, or use a different provider) rather than mis-rendering.
ALWAYS destroy() the returned ChartInstance on unmount — Chart.js attaches
canvas + resize listeners, so a chart left undestroyed leaks and re-creating on
the same canvas throws "Canvas is already in use".
BROWSER-ONLY: it draws to a <canvas> and pulls in Chart.js (DOM). Import +
wire it from app/client code, never server code.
Integration checklist — drive the real UI (live preview, no mocks), adapt each item to this app's actual screens/flows, and check every box off one by one. A box you can't check is an integration bug to fix — not a skip: