How It Works
Places chart at playhead as a full-canvas overlay. chart_type is REQUIRED. Provide data in properties.props using the schema for each chart_type:
race-bar-chart: { title?: {value: string}, subtitle?: {value: string}, data: [{label, value, color, delta?}], unitSuffix? } animated-line-graph: { title?, subtitle?, xAxisTitle?, yAxisTitle?, series: [{name, color, data: number[]}], showGlow?, showArea?, showPoints? } stacked-area-timeline: { title?, xAxisTitle?, yAxisTitle?, series: [{name, color, data: number[]}] } radar-comparison: { title?, axes: string[], datasets: [{name, color, values: number[]}] } donut-breakdown: { title?: string, segments: [{label, value, color}], showCenter?, centerLabel?, highlightIndex? } kpi-ticker-strip: { title?: string, metrics: [{label, value, format: "integer"|"decimal-1"|"currency"|"compact"|"percent", unit?, trend: "up"|"down"|"neutral"}], layout?: "strip"|"hero-cards" } scatter-plot: { title?, xAxisTitle?, yAxisTitle?, points: [{label, x, y, color?}], showTrendLine? } waterfall-bridge: { title?, bars: [{label, value, type: "increase"|"decrease"|"total"}], unitSuffix? } treemap-heat-grid: { title?, cells: [{label, value, color?, heatValue?}], unitSuffix?, colorMode?: "value"|"heat" } radial-gauge-cluster: { title?: string, gauges: [{label, value, min, max, unit, zones?: [{end, color}]}], layout?: "single"|"row"|"grid-2x2" } premium-3d-bar-chart: { title?, subtitle?, xAxisTitle?, yAxisTitle?, data: [{label, value, accent?, capColor?}], unitSuffix? }
STYLE PROPS (all chart types): theme (string), backgroundColor (#hex, overrides theme background), palette (vibrant|neon|corporate|warm|cool|monochrome|pastel|earth), accentColor (#hex), fontFamily (Inter|SF Mono|Georgia|Poppins|Oswald|Roboto), showLabels (bool), showValues (bool), showGrid (bool), showLegend (bool), showGlow (bool), showArea (bool), easing (springOut|springElastic|easeOutCubic|easeOutExpo|easeInOutCubic|bounceOut), animDuration (0.5-5, seconds). title fields use {value: string} for most charts; donut-breakdown, kpi-ticker-strip, radial-gauge-cluster use plain string. If template_id is provided, its defaults are used and properties.props overrides selectively.