apexcharts-skill 2.2.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.cursorrules CHANGED
@@ -1,11 +1,26 @@
1
1
  # ApexCharts.js — AI Coding Rules
2
2
 
3
- You are working with ApexCharts.js (v6), a JavaScript charting library.
3
+ You are working with ApexCharts.js (v7), a JavaScript charting library.
4
4
  Documentation: https://apexcharts.com/docs/
5
5
  NPM: apexcharts
6
6
  GitHub: https://github.com/apexcharts/apexcharts.js
7
7
 
8
- v6 is backward compatible: existing v5 configs keep working. New chart types (violin, funnel, pyramid, gauge) and the feature platform (plugins, canvas renderer, custom series, undo/redo, shareable views, themes, crossfilter, annotation authoring, storyboard, streaming, drilldown) are opt-in and tree-shakeable. Two behaviors changed on by default (both respect prefers-reduced-motion): coherent add/remove data-transition animations, and mobile pinch-zoom / two-finger pan.
8
+ v5 and v6 configs keep working in v7, with two exceptions: `plotOptions.bar.borderRadiusWhenStacked` was REMOVED (corner ownership now follows the stack's outer edge), and `dataLabels.animate.enabled` now defaults to true on bar/column.
9
+
10
+ ## !! v7.0: the default bundle no longer ships every feature
11
+
12
+ Nine features are Tier 2: in the package, in NO bundle, reachable only through an explicit import. This applies to `import ApexCharts from 'apexcharts'` too, not just tree-shaken builds, and it is the most common v6 -> v7 failure.
13
+
14
+ import ApexCharts from 'apexcharts'
15
+ import 'apexcharts/features/trellis' // required even here
16
+
17
+ Tier 2: trellis, storyboard, perspectives, ink, renderer-canvas, link, measure, history, context-menu, plus the `raincloud` chart type.
18
+ `apexcharts/features/all` is the Tier 1 set and pulls in none of them.
19
+ Each Tier 2 module warns in the console when its config is present but the module is not, and degrades where it can (a trellis renders as one chart; renderer: 'canvas' falls back to SVG).
20
+
21
+ Premium (watermarked until an entitled premium/enterprise license): trellis, storyboard, link, ink, measure, context-menu, perspectives, history, and the unit/waffle and raincloud chart types. Premium and Tier 2 are independent: renderer-canvas is Tier 2 and free; unit/waffle is premium and Tier 1.
22
+
23
+ Two behaviors are on by default (both respect prefers-reduced-motion): coherent add/remove data-transition animations, and mobile pinch-zoom / two-finger pan.
9
24
 
10
25
  ## Framework wrapper detection — check `package.json` first
11
26
 
@@ -29,9 +44,9 @@ Wrappers handle `destroy()` automatically on unmount, accept reactive props, and
29
44
  10. **RadialBar values must be 0–100** (percentages).
30
45
  11. **Color hex values must include `#`** (e.g., `'#FF5733'`).
31
46
  12. **Tree-shaking**: `apexcharts/core` requires separate chart-type + feature imports.
32
- 13. **v6 aliases**: `funnel`/`pyramid` render through bar, `gauge` through radialBar. Use them as `chart.type` directly (no `plotOptions.bar.isFunnel`); covered by `apexcharts/bar` and `apexcharts/radialBar`.
47
+ 13. **Aliases**: `funnel`/`pyramid` render through bar, `gauge` through radialBar. Use them as `chart.type` directly (no `plotOptions.bar.isFunnel`); covered by `apexcharts/bar` and `apexcharts/radialBar`.
33
48
  14. **`violin`** points use a density profile: `data: [{ x, y: { density: [[value, weight], ...], points?: [num] } }]`.
34
- 15. **`render()` is idempotent (v6)**: a repeated `render()` returns the same promise; still `destroy()` before a new instance on the same element.
49
+ 15. **`render()` is idempotent**: a repeated `render()` returns the same promise; still `destroy()` before a new instance on the same element.
35
50
 
36
51
  ---
37
52
 
@@ -56,6 +71,10 @@ Wrappers handle `destroy()` automatically on unmount, accept reactive props, and
56
71
  | Radar | `'radar'` | `[{ name, data: [num] }]` + `xaxis.categories` | `[{ data: [80, 50, 30] }]` |
57
72
  | Funnel *(v6)* | `'funnel'` | `[{ name, data: [num] }]` + `xaxis.categories`; order largest→smallest | `[{ data: [1380, 990, 548, 200] }]` |
58
73
  | Pyramid *(v6)* | `'pyramid'` | Same as funnel; order smallest→largest | `[{ data: [200, 548, 990, 1380] }]` |
74
+ | Waterfall *(v7.1)* | `'waterfall'` | `[{ name, data: [{ x, y }] }]` where y is the signed DELTA; a running-total row carries `isSubtotal` or `isTotal` and NO y | `[{ data: [{ x: 'Rev', y: 8786 }, { x: 'Cost', y: -2786 }, { x: 'Gross', isSubtotal: true }] }]` |
75
+ | Dumbbell *(v7.1)* | `'dumbbell'` | ONE SERIES PER MEASURE sharing x categories; not [low, high] pairs | `[{ name: '2020', data: [{ x: 'BE', y: 92 }] }, { name: '2025', data: [{ x: 'BE', y: 118 }] }]` |
76
+ | Streamgraph *(v7.1)* | `'streamgraph'` | Same as area; do NOT set chart.stacked (the chart owns baseline + order) | `[{ name: 'Drama', data: [{ x: '2024-01-01', y: 32 }] }]` |
77
+ | Raincloud *(v7.1, premium, TIER 2)* | `'raincloud'` | `[{ name, data: [{ x, points: [num] }] }]`: raw sample; configured via `plotOptions.violin` | `[{ data: [{ x: 'Control', points: [3.1, 4.7, 2.9] }] }]` |
59
78
 
60
79
  ### Non-Axis Charts (flat number array — NOT object format)
61
80
 
@@ -94,43 +113,62 @@ chart.destroy() // cleanup
94
113
  ## Import Paths
95
114
 
96
115
  ```
97
- apexcharts # Full bundle (all types + features)
116
+ apexcharts # Default bundle: every type except raincloud + the Tier 1 features
98
117
  apexcharts/core # Bare core (must register types + features manually)
99
118
  apexcharts/line # line, area, scatter, bubble, rangeArea
100
- apexcharts/bar # bar, column, rangeBar, funnel, pyramid (v6 aliases)
119
+ apexcharts/bar # bar, column, rangeBar, funnel, pyramid (aliases)
120
+ apexcharts/waterfall # waterfall (v7.1) = bar + features/waterfall
121
+ apexcharts/dumbbell # dumbbell (v7.1) = bar + features/dumbbell
122
+ apexcharts/streamgraph # streamgraph (v7.1) = rangeArea + features/streamgraph
101
123
  apexcharts/candlestick # candlestick, boxPlot
102
- apexcharts/violin # violin (v6)
124
+ apexcharts/violin # violin
125
+ apexcharts/raincloud # raincloud (v7.1, premium, TIER 2) = violin + features/raincloud
126
+ apexcharts/histogram # histogram (v6.9) = bar + features/stats
103
127
  apexcharts/pie # pie, donut, polarArea
104
- apexcharts/radialBar # radialBar, gauge (v6 alias)
128
+ apexcharts/radialBar # radialBar, gauge (alias)
105
129
  apexcharts/radar # radar
106
130
  apexcharts/heatmap # heatmap
107
131
  apexcharts/treemap # treemap
132
+ apexcharts/sunburst # sunburst (v6.7)
133
+ apexcharts/unit # unit, waffle (v6.6, premium)
134
+ apexcharts/unit-shapes # unit-chart shape kit (v6.10), named exports
135
+ apexcharts/pictograms # pictogram glyphs (v7.0), named exports
108
136
  apexcharts/ssr # Server-side rendering (Node.js)
109
137
  apexcharts/client # Explicit browser import
110
138
 
111
- # Optional features (side-effect imports)
139
+ # TIER 1 features: already in the default `apexcharts` bundle.
140
+ # Import only if you started from /core or a per-type entry.
112
141
  apexcharts/features/exports # dataURI(), exportToCSV()
113
142
  apexcharts/features/legend # Legend component
114
143
  apexcharts/features/toolbar # Zoom, pan, download
115
144
  apexcharts/features/annotations # X/Y/point annotations
116
145
  apexcharts/features/keyboard # Keyboard navigation
117
- # v6 feature platform (all opt-in):
146
+ apexcharts/features/stats # histogram binning, raw-sample summaries, rowSeries()
118
147
  apexcharts/features/morph # animated chart-type morphs
119
148
  apexcharts/features/drilldown # hierarchical drill-down
120
- apexcharts/features/history # undo/redo (Rewind)
121
- apexcharts/features/perspectives # shareable view state
122
- apexcharts/features/storyboard # scrollytelling
123
149
  apexcharts/features/facet # design tokens + OS themes
124
150
  apexcharts/features/weave # plugin platform
125
- apexcharts/features/renderer-canvas # hybrid SVG + canvas renderer (Strata)
126
151
  apexcharts/features/marks # custom series types (registerSeriesType)
127
- apexcharts/features/link # crossfilter / linked views
128
- apexcharts/features/ink # on-chart annotation authoring
129
- apexcharts/features/measure # measure / delta ruler
130
- apexcharts/features/context-menu # right-click context menu
131
- apexcharts/features/all # All features
152
+ apexcharts/features/waterfall # (v7.1) waterfall type
153
+ apexcharts/features/dumbbell # (v7.1) dumbbell type
154
+ apexcharts/features/streamgraph # (v7.1) streamgraph type
155
+ apexcharts/features/all # Tier 1 only: NOT a shortcut past Tier 2
156
+
157
+ # TIER 2 features: in NO bundle. Required whatever entry point you used.
158
+ apexcharts/features/trellis # (v7.0) small multiples (premium)
159
+ apexcharts/features/storyboard # scrollytelling (premium; registers perspectives)
160
+ apexcharts/features/perspectives # shareable view state (premium)
161
+ apexcharts/features/ink # on-chart annotation authoring (premium)
162
+ apexcharts/features/renderer-canvas # hybrid SVG + canvas renderer (Strata)
163
+ apexcharts/features/link # crossfilter / linked views (premium)
164
+ apexcharts/features/measure # measure / delta ruler (premium)
165
+ apexcharts/features/history # undo/redo (Rewind, premium)
166
+ apexcharts/features/context-menu # right-click context menu (premium)
167
+ apexcharts/features/raincloud # (v7.1) raincloud type (premium)
132
168
  ```
133
169
  (Cadence easing and real-time streaming are core: no feature import needed.)
170
+ Script tags: every Tier 2 module has a `dist/features/<name>.js`, and a full-bundle page still needs it.
171
+ Lean core channel (v7.0): `dist/apexcharts.core.js` + `dist/line.js` + `dist/features/legend.js`, 136,921 B gzipped vs 252,005 for the full bundle.
134
172
 
135
173
  ---
136
174
 
package/README.md CHANGED
@@ -11,20 +11,24 @@ AI coding skill for building [ApexCharts.js](https://apexcharts.com/) charts and
11
11
  > | **ApexTree** — hierarchy / org charts | `apextree` | [`apextree-skill`](https://github.com/apexcharts/apextree-skill) |
12
12
  > | **ApexSankey** — flow / Sankey | `apexsankey` | [`apexsankey-skill`](https://github.com/apexcharts/apexsankey-skill) |
13
13
  > | **Apex Grid** — data grid | `apex-grid` | [`apexgrid-skill`](https://github.com/apexcharts/apexgrid-skill) |
14
+ | **ApexStock**: financial / OHLC | `apexstock` | [`apexstock-skill`](https://github.com/apexcharts/apexstock-skill) |
15
+ | **ApexMaps**: maps / geo | `apexmaps` | [`apexmaps-skill`](https://github.com/apexcharts/apexmaps-skill) |
14
16
 
15
17
  ## What This Does
16
18
 
17
19
  AI models frequently generate incorrect ApexCharts code — wrong series data formats, missing `render()` calls, broken formatter signatures, etc. This skill provides structured reference files that help AI assistants generate correct ApexCharts code on the first try.
18
20
 
19
- This skill targets **ApexCharts v6** (backward compatible with v5 configs).
21
+ This skill targets **ApexCharts v7** (v5 and v6 configs keep working, apart from two v7.0 breaking changes the skill documents).
22
+
23
+ > **The v7.0 change to know about:** the default bundle no longer ships every feature. Nine features (trellis, storyboard, perspectives, ink, canvas renderer, link, measure, history, context menu) plus the `raincloud` chart type now need an explicit `import 'apexcharts/features/<name>'` **even on the full bundle**. This is the most common v6 → v7 upgrade failure, so the skill leads with it.
20
24
 
21
25
  ### Coverage
22
26
 
23
- - **24 chart types**: line, area, bar, pie, donut, radialBar, scatter, bubble, heatmap, candlestick, boxPlot, violin, histogram, radar, polarArea, rangeBar, rangeArea, treemap, funnel, pyramid, gauge, sunburst, unit, waffle
27
+ - **28 chart types**: line, area, bar, pie, donut, radialBar, scatter, bubble, heatmap, candlestick, boxPlot, violin, histogram, radar, polarArea, rangeBar, rangeArea, treemap, funnel, pyramid, gauge, sunburst, unit, waffle, waterfall, dumbbell, streamgraph, raincloud
24
28
  - **Correct data formats** for every chart type
25
29
  - **Common pitfalls** with wrong/correct code examples
26
- - **v6 feature platform**: plugins (Weave), canvas renderer (Strata), custom series (Marks), undo/redo (Rewind), shareable views (Perspectives), themes (Facet), easing (Cadence), crossfilter (Link), annotation authoring (Ink), measure ruler, context menu, storyboard, streaming, drilldown, raw-sample statistics (Stats), unit-chart shape kit (`apexcharts/unit-shapes`)
27
- - **Tree-shaking** and bundle optimization patterns
30
+ - **Feature platform**: small multiples (Trellis), plugins (Weave), canvas renderer (Strata), custom series (Marks), undo/redo (Rewind), shareable views (Perspectives), themes (Facet), easing (Cadence), crossfilter (Link), annotation authoring (Ink), measure ruler, context menu, storyboard, streaming, drilldown, raw-sample statistics (Stats), unit-chart shape kit (`apexcharts/unit-shapes`), pictogram glyphs (`apexcharts/pictograms`)
31
+ - **Bundle tiers** (which features are in the default v7 bundle and which are not), tree-shaking, and the lean-core script-tag channel
28
32
  - **SSR** (server-side rendering) and hydration
29
33
  - **Framework integration**: React, Vue 3, Angular
30
34
 
@@ -78,14 +82,14 @@ const barCharts = await readFile(referencePath('bar-charts.md'), 'utf8');
78
82
  ├── SKILL.md # Main entry point — read this first
79
83
  ├── .cursorrules # Self-contained version for Cursor/Windsurf
80
84
  ├── references/
81
- │ ├── cartesian-charts.md # line, area, scatter, bubble, rangeArea
82
- │ ├── bar-charts.md # bar, column, rangeBar, timeline/Gantt, funnel, pyramid
83
- │ ├── financial-charts.md # candlestick, boxPlot, violin, histogram
84
- │ ├── circular-charts.md # pie, donut, polarArea, radialBar, gauge, sunburst, unit, waffle
85
+ │ ├── cartesian-charts.md # line, area, scatter, bubble, rangeArea, streamgraph
86
+ │ ├── bar-charts.md # bar, column, rangeBar, timeline/Gantt, funnel, pyramid, waterfall, dumbbell
87
+ │ ├── financial-charts.md # candlestick, boxPlot, violin, histogram, raincloud
88
+ │ ├── circular-charts.md # pie, donut, polarArea, radialBar, gauge, sunburst, unit, waffle, pictograms
85
89
  │ ├── grid-charts.md # heatmap, treemap
86
90
  │ ├── radar-charts.md # radar
87
- │ ├── v6-features.md # v6 feature platform (plugins, canvas, undo/redo, themes, ...)
88
- │ ├── tree-shaking.md # bundle optimization
91
+ │ ├── feature-platform.md # feature platform + bundle tiers (trellis, plugins, canvas, undo/redo, ...)
92
+ │ ├── tree-shaking.md # bundle tiers and optimization
89
93
  │ ├── ssr.md # server-side rendering
90
94
  │ └── framework-wrappers.md # React, Vue, Angular
91
95
  └── install/
package/SKILL.md CHANGED
@@ -1,20 +1,22 @@
1
1
  ---
2
2
  name: apexcharts
3
3
  description: >
4
- AI skill for building ApexCharts.js charts and data visualizations (targets v6).
4
+ AI skill for building ApexCharts.js charts and data visualizations (targets v7).
5
5
  Use when the user asks to create, configure, or troubleshoot any chart using ApexCharts
6
6
  (line, area, bar, pie, donut, radialBar, scatter, bubble, heatmap, candlestick, boxPlot,
7
7
  violin, histogram, radar, polarArea, rangeBar, rangeArea, treemap, funnel, pyramid, gauge,
8
- sunburst, unit, waffle). Covers
9
- correct data formats, lifecycle, formatters, tree-shaking, SSR, and the v6 feature
10
- platform (plugins, canvas renderer, custom series, undo/redo, shareable views, themes,
11
- crossfilter, annotation authoring, storyboard, streaming, drilldown). In React /
8
+ sunburst, unit, waffle, waterfall, dumbbell, streamgraph, raincloud). Covers
9
+ correct data formats, lifecycle, formatters, tree-shaking, SSR, and the feature
10
+ platform (plugins, canvas renderer, custom series, small multiples, undo/redo,
11
+ shareable views, themes, crossfilter, annotation authoring, storyboard, streaming,
12
+ drilldown). Knows which features ship in the default v7 bundle and which are an
13
+ explicit import. In React /
12
14
  Vue / Angular projects, prefer the framework wrapper packages
13
15
  (`react-apexcharts`, `vue3-apexcharts`, `ng-apexcharts`) over the core API.
14
16
  metadata:
15
17
  author: ApexCharts
16
- version: "2.2.0"
17
- library_version: "6.10.0"
18
+ version: "3.0.0"
19
+ library_version: "7.1.0"
18
20
  category: data-visualization
19
21
  tags: [charts, visualization, javascript, typescript, svg, apexcharts]
20
22
  docs: https://apexcharts.com/docs/
@@ -31,9 +33,40 @@ metadata:
31
33
  >
32
34
  > Wrappers handle `destroy()` automatically on unmount, accept reactive props, and forward events as idiomatic framework events. Use the core API directly only when no framework is detected, or when the user explicitly asks for vanilla. See `references/framework-wrappers.md`.
33
35
 
34
- > **Targets ApexCharts v6.** v6 is backward compatible: existing v5 configs keep working unchanged. Everything new (the plugin platform, canvas renderer, custom series, undo/redo, shareable views, themes, crossfilter, annotation authoring, storyboard, streaming, drilldown) is opt-in and tree-shakeable. Two behaviors changed *on by default* (both respect `prefers-reduced-motion`): (1) data updates that add/remove points now animate coherently, and (2) mobile pinch-zoom / two-finger pan gestures are enabled. See `references/v6-features.md` for the full v6 surface.
36
+ > **Targets ApexCharts v7.** Read the next box before writing any feature code: v7's headline change is that the default bundle no longer contains every feature.
35
37
  >
36
- > **Premium features and licensing (6.5.0+).** Seven of the v6 features are premium: `storyboard`, `link` (crossfilter / linked views), `ink` (annotation authoring), `measure`, `context-menu`, `perspectives` (shareable views), and `history` (undo/redo). The `unit` / `waffle` chart type is also premium (6.6.0+). These still function fully, but render an `APEXCHARTS` trial watermark until an entitled license is set via `ApexCharts.setLicense(key)` (static) or per-chart `chart.license`. As of 6.7.0 they require a `premium` or `enterprise` plan; a `pro` key or the free tier keeps the watermark. Every other chart type and free module is never gated. See the Licensing section in `references/v6-features.md`.
38
+ > **⚠️ v7.0 breaking change: nine features left the default bundle.** In v6, `import ApexCharts from 'apexcharts'` gave you every feature. In v7 it does not. These nine are **Tier 2**: present in the package, absent from the default bundle, and reachable only through an explicit import.
39
+ >
40
+ > ```js
41
+ > import ApexCharts from 'apexcharts'
42
+ > import 'apexcharts/features/trellis' // ESM
43
+ > ```
44
+ > ```html
45
+ > <script src=".../dist/apexcharts.js"></script>
46
+ > <script src=".../dist/features/trellis.js"></script> <!-- script tag -->
47
+ > ```
48
+ >
49
+ > | Tier 2 feature | Import | gzip |
50
+ > |---|---|---|
51
+ > | Trellis (small multiples) | `apexcharts/features/trellis` | 25.7 KB |
52
+ > | Storyboard (scrollytelling) | `apexcharts/features/storyboard` | 8.0 KB |
53
+ > | Perspectives (shareable views) | `apexcharts/features/perspectives` | 6.7 KB |
54
+ > | Ink (annotation authoring) | `apexcharts/features/ink` | 6.2 KB |
55
+ > | Canvas renderer (Strata) | `apexcharts/features/renderer-canvas` | 6.0 KB |
56
+ > | Linked views & crossfilter | `apexcharts/features/link` | 5.3 KB |
57
+ > | Measure ruler | `apexcharts/features/measure` | 4.6 KB |
58
+ > | Rewind (undo / redo) | `apexcharts/features/history` | 3.2 KB |
59
+ > | Context menu | `apexcharts/features/context-menu` | 2.3 KB |
60
+ >
61
+ > The `raincloud` chart type (7.1) is Tier 2 on the same terms: `import 'apexcharts/raincloud'`. Storyboard registers Perspectives, so importing both costs no more than Storyboard alone. **Nothing fails silently**: each warns in the console when its config is present but the module is not, and degrades where it can (a trellis renders as one chart; `renderer: 'canvas'` falls back to SVG). Default bundle: 291,654 B gzipped in 6.10, 252,005 B in 7.0, 264,326 B in 7.1.
62
+ >
63
+ > Everything else stays in the default bundle: **all chart types except raincloud**, axes, tooltips, legend, toolbar, exports, annotations, keyboard navigation, stats, morph, drilldown, themes (Facet), plugins (Weave) and custom series (Marks). See `references/tree-shaking.md` for the full tier table and `references/feature-platform.md` for each feature's API.
64
+ >
65
+ > **Other v7.0 breaking changes.** (1) `plotOptions.bar.borderRadiusWhenStacked` is **removed**; corner ownership now follows the stack's outer edge automatically. An unknown option is ignored, so leaving it in a config is harmless but does nothing. (2) `dataLabels.animate.enabled` now defaults to `true` (bar/column only): labels ride to their new position on a data update instead of snapping. Set `dataLabels: { animate: { enabled: false } }` for the old behavior. Everything else from v5 and v6 keeps working unchanged.
66
+ >
67
+ > **Behaviors that are on by default** (both respect `prefers-reduced-motion`): data updates that add/remove points animate coherently, and mobile pinch-zoom / two-finger pan gestures are enabled.
68
+ >
69
+ > **Premium features and licensing.** Eight features are premium: `trellis` (small multiples, 7.0), `storyboard`, `link` (crossfilter / linked views), `ink` (annotation authoring), `measure`, `context-menu`, `perspectives` (shareable views), and `history` (undo/redo). Two chart types are premium: `unit` / `waffle`, and `raincloud` (7.1). These still function fully, but render an `APEXCHARTS` trial watermark until an entitled license is set via `ApexCharts.setLicense(key)` (static) or per-chart `chart.license`. They require a `premium` or `enterprise` plan; a `pro` key or the free tier keeps the watermark. Every other chart type and free module is never gated. Note that premium and Tier 2 are independent axes: `waterfall`, `dumbbell` and `streamgraph` are free *and* in the default bundle, while `trellis` is both premium *and* an explicit import. See the Licensing section in `references/feature-platform.md`.
37
70
 
38
71
  ## 1. Critical Rules
39
72
 
@@ -48,11 +81,15 @@ metadata:
48
81
  9. **For mixed/combo charts**, set `type` on each individual series object, not just on `chart.type`.
49
82
  10. **RadialBar values must be 0–100** (they represent percentages).
50
83
  11. **Color hex values must include the `#` prefix** (e.g., `'#FF5733'`, not `'FF5733'`).
51
- 12. **Tree-shaking**: importing `apexcharts/core` gives you a bare class — you must also import chart-type entries and feature entries separately.
52
- 13. **v6 first-class aliases**: `funnel` and `pyramid` render through the bar engine; `gauge` renders through radialBar. Use them as `chart.type` directly (no `plotOptions.bar.isFunnel` needed). They are covered by the `apexcharts/bar` and `apexcharts/radialBar` tree-shaking entries respectively.
53
- 14. **`violin` (v6, statistical)** uses a per-point density profile: `data: [{ x, y: { density: [[value, weight], ...], points?: [number] } }]`, not a plain number. Since v6.9 a datum may instead supply only raw observations (`points: [number]`, no `y`) and the library derives the density via KDE (needs `apexcharts/features/stats` when tree-shaking).
54
- 15. **`render()` is idempotent (v6)**: calling `render()` twice on the same instance returns the same promise instead of building a duplicate chart. You still must `destroy()` before creating a *new* instance on the same element.
55
- 16. **`histogram` (v6.9)** series carry **raw observations** (one number per event), not pre-aggregated counts; the chart chooses bin edges and counts them. Binning ships behind the stats feature: use the `apexcharts/histogram` entry, or `import 'apexcharts/features/stats'` alongside `apexcharts/bar` (the full `apexcharts` bundle already includes it).
84
+ 12. **Nine features are NOT in the v7 default bundle.** Before writing config for `trellis`, `storyboard`, `perspectives`, `ink`, `renderer: 'canvas'`, `link`, `measure`, `history` or the context menu, add its `apexcharts/features/*` import. Same for the `raincloud` chart type. Full-bundle users need this too, not just tree-shakers. See the box above.
85
+ 13. **Tree-shaking**: importing `apexcharts/core` gives you a bare class, and you must also import chart-type entries and feature entries separately.
86
+ 14. **First-class aliases**: `funnel` and `pyramid` render through the bar engine; `gauge` renders through radialBar. Use them as `chart.type` directly (no `plotOptions.bar.isFunnel` needed). They are covered by the `apexcharts/bar` and `apexcharts/radialBar` tree-shaking entries respectively.
87
+ 15. **`violin` (statistical)** uses a per-point density profile: `data: [{ x, y: { density: [[value, weight], ...], points?: [number] } }]`, not a plain number. Since v6.9 a datum may instead supply only raw observations (`points: [number]`, no `y`) and the library derives the density via KDE (needs `apexcharts/features/stats` when tree-shaking).
88
+ 16. **`render()` is idempotent**: calling `render()` twice on the same instance returns the same promise instead of building a duplicate chart. You still must `destroy()` before creating a *new* instance on the same element.
89
+ 17. **`histogram` (v6.9)** series carry **raw observations** (one number per event), not pre-aggregated counts; the chart chooses bin edges and counts them. Binning ships behind the stats feature: use the `apexcharts/histogram` entry, or `import 'apexcharts/features/stats'` alongside `apexcharts/bar` (the full `apexcharts` bundle already includes it).
90
+ 18. **`waterfall` (v7.1) accumulates for you.** The series carries the **deltas**, not the running total. A row that should show the running total carries `isSubtotal` or `isTotal` and **no `y`**; the library measures it. Do not pre-compute cumulative values.
91
+ 19. **`dumbbell` (v7.1) takes one series per measure**, each with the same `x` categories: `[{ name: '2020', data: [{ x, y }] }, { name: '2025', data: [{ x, y }] }]`. Do **not** zip the values into `y: [low, high]` pairs; that is the older `plotOptions.bar.isDumbbell` range-bar form, which still works but is a different chart.
92
+ 20. **`raincloud` (v7.1) takes the raw sample**, one datum per category: `data: [{ x, points: [number] }]`. It is a premium Tier 2 type, so it needs `import 'apexcharts/raincloud'` on top of the default bundle.
56
93
 
57
94
  ---
58
95
 
@@ -80,6 +117,10 @@ This is the most critical reference. Using the wrong data format is the #1 cause
80
117
  | Radar | `'radar'` | `[{ name, data: [number] }]` + `xaxis: { categories: [...] }` | `series: [{ name: 'Skill', data: [80, 50, 30, 40, 100] }]` |
81
118
  | Funnel *(v6)* | `'funnel'` | `[{ name, data: [number] }]` + `xaxis: { categories: [...] }`. Order values **largest→smallest**. | `series: [{ data: [1380, 990, 548, 200] }]` |
82
119
  | Pyramid *(v6)* | `'pyramid'` | Same as funnel; order values **smallest→largest** (wide base at bottom). | `series: [{ data: [200, 548, 990, 1380] }]` |
120
+ | Waterfall *(v7.1)* | `'waterfall'` | `[{ name, data: [{ x, y }] }]` where **`y` is the signed delta**, not a running total. A running-total row carries `isSubtotal` (sum since the last cut) or `isTotal` (sum from zero) and **omits `y`**. | `series: [{ data: [{ x: 'Revenue', y: 8786 }, { x: 'Costs', y: -2786 }, { x: 'Gross', isSubtotal: true }] }]` |
121
+ | Dumbbell *(v7.1)* | `'dumbbell'` | **One series per measure**, sharing x categories: `[{ name, data: [{ x, y }] }, ...]`. Not `[low, high]` pairs. | `series: [{ name: '2020', data: [{ x: 'Backend', y: 92 }] }, { name: '2025', data: [{ x: 'Backend', y: 118 }] }]` |
122
+ | Streamgraph *(v7.1)* | `'streamgraph'` | Same as area: `[{ name, data: [{ x, y }] }]`. Stacking, baseline and band order are the chart's job, so do **not** set `chart.stacked`. | `series: [{ name: 'Drama', data: [{ x: '2024-01-01', y: 32 }] }]` |
123
+ | Raincloud *(v7.1, premium, Tier 2)* | `'raincloud'` | `[{ name, data: [{ x, points: [number] }] }]`: the **raw sample** per category; the density, box and rain are derived. Needs `import 'apexcharts/raincloud'`. | `series: [{ name: 'Weight gain', data: [{ x: 'Control', points: [3.1, 4.7, 2.9] }] }]` |
83
124
 
84
125
  ### Non-Axis Charts (pie, donut, radialBar, polarArea, gauge, unit, waffle)
85
126
 
@@ -124,7 +165,7 @@ Configure the centre hole, corner rounding, and inter-arc gap through `plotOptio
124
165
  ## 3. Package / Module Map
125
166
 
126
167
  ```
127
- # Full bundle (all chart types + all features)
168
+ # Default bundle (every chart type except raincloud, plus the Tier 1 features)
128
169
  import ApexCharts from 'apexcharts'
129
170
 
130
171
  # Bare core (no chart types, no optional features — must register manually)
@@ -139,53 +180,68 @@ import ApexCharts from 'apexcharts/rangeArea' # same as /line
139
180
  import ApexCharts from 'apexcharts/bar' # bar, column, rangeBar
140
181
  import ApexCharts from 'apexcharts/column' # same as /bar
141
182
  import ApexCharts from 'apexcharts/rangeBar' # same as /bar
183
+ import ApexCharts from 'apexcharts/waterfall' # waterfall (v7.1): bar engine + the waterfall feature
184
+ import ApexCharts from 'apexcharts/dumbbell' # dumbbell (v7.1): bar engine + the dumbbell feature
185
+ import ApexCharts from 'apexcharts/streamgraph' # streamgraph (v7.1): rangeArea engine + the streamgraph feature
142
186
  import ApexCharts from 'apexcharts/candlestick' # candlestick, boxPlot
143
187
  import ApexCharts from 'apexcharts/boxPlot' # same as /candlestick
144
- import ApexCharts from 'apexcharts/violin' # violin (v6)
188
+ import ApexCharts from 'apexcharts/violin' # violin
189
+ import ApexCharts from 'apexcharts/raincloud' # raincloud (v7.1, premium): violin engine + the raincloud feature
145
190
  import ApexCharts from 'apexcharts/histogram' # histogram (v6.9): bar engine + the stats feature
146
191
  import ApexCharts from 'apexcharts/pie' # pie, donut, polarArea
147
192
  import ApexCharts from 'apexcharts/donut' # same as /pie
148
193
  import ApexCharts from 'apexcharts/polarArea' # same as /pie
149
- import ApexCharts from 'apexcharts/radialBar' # radialBar + gauge (v6)
194
+ import ApexCharts from 'apexcharts/radialBar' # radialBar + gauge
150
195
  import ApexCharts from 'apexcharts/radar' # radar only
151
196
  import ApexCharts from 'apexcharts/heatmap' # heatmap only
152
197
  import ApexCharts from 'apexcharts/treemap' # treemap only
153
198
  import ApexCharts from 'apexcharts/sunburst' # sunburst (v6.7, hierarchical)
154
199
  import ApexCharts from 'apexcharts/unit' # unit + waffle (v6.6, premium)
155
- # funnel + pyramid (v6) render through the bar engine; use apexcharts/bar
200
+ # funnel + pyramid render through the bar engine; use apexcharts/bar
156
201
 
157
202
  # Unit-chart shape kit (v6.10): named exports, tree-shaken per shape (~4 KB gzipped each)
158
203
  import { heart, outlined, glyphs, preview } from 'apexcharts/unit-shapes'
159
204
 
160
- # Optional features (side-effect imports — just import, no default export needed)
205
+ # Pictogram glyphs (v7.0): one drawn mark per unit, independent of the layout
206
+ import { person, registerMarks } from 'apexcharts/pictograms'
207
+
208
+ # TIER 1 features: already in the default `apexcharts` bundle.
209
+ # Import these only when you started from /core or a per-type entry.
161
210
  import 'apexcharts/features/exports' # PNG/SVG/CSV export methods
162
211
  import 'apexcharts/features/legend' # Interactive legend component
163
212
  import 'apexcharts/features/toolbar' # Toolbar (zoom, pan, download buttons)
164
213
  import 'apexcharts/features/annotations' # X/Y/point/text/image annotations
165
214
  import 'apexcharts/features/keyboard' # Keyboard navigation (accessibility)
166
215
  import 'apexcharts/features/stats' # Statistics (v6.9): histogram binning, boxPlot/violin raw samples, rowSeries()
167
- # v6 feature platform (all opt-in, all tree-shakeable)
168
216
  import 'apexcharts/features/morph' # Animated chart-type morphs
169
217
  import 'apexcharts/features/drilldown' # Hierarchical drill-down
170
- import 'apexcharts/features/history' # Undo/redo (Rewind)
171
- import 'apexcharts/features/perspectives' # Shareable view state
172
- import 'apexcharts/features/storyboard' # Scrollytelling (includes perspectives)
173
218
  import 'apexcharts/features/facet' # Design tokens + OS-aware themes
174
219
  import 'apexcharts/features/weave' # Public plugin platform
175
- import 'apexcharts/features/renderer-canvas' # Hybrid SVG + canvas renderer (Strata)
176
220
  import 'apexcharts/features/marks' # Custom series types (registerSeriesType)
177
- import 'apexcharts/features/link' # Crossfilter / linked views
178
- import 'apexcharts/features/ink' # On-chart annotation authoring
179
- import 'apexcharts/features/measure' # Measure / delta ruler
180
- import 'apexcharts/features/context-menu' # Right-click / long-press context menu
181
- import 'apexcharts/features/all' # All features at once
221
+ import 'apexcharts/features/waterfall' # (v7.1) waterfall chart type
222
+ import 'apexcharts/features/dumbbell' # (v7.1) dumbbell chart type
223
+ import 'apexcharts/features/streamgraph' # (v7.1) streamgraph chart type
224
+
225
+ # TIER 2 features: NOT in the default bundle. Required even on the full bundle.
226
+ import 'apexcharts/features/trellis' # (v7.0) Small multiples (premium)
227
+ import 'apexcharts/features/storyboard' # Scrollytelling (premium; registers perspectives)
228
+ import 'apexcharts/features/perspectives' # Shareable view state (premium)
229
+ import 'apexcharts/features/ink' # On-chart annotation authoring (premium)
230
+ import 'apexcharts/features/renderer-canvas' # Hybrid SVG + canvas renderer (Strata)
231
+ import 'apexcharts/features/link' # Crossfilter / linked views (premium)
232
+ import 'apexcharts/features/measure' # Measure / delta ruler (premium)
233
+ import 'apexcharts/features/history' # Undo/redo (Rewind, premium)
234
+ import 'apexcharts/features/context-menu' # Right-click / long-press context menu (premium)
235
+ import 'apexcharts/features/raincloud' # (v7.1) raincloud chart type (premium)
236
+
237
+ import 'apexcharts/features/all' # Tier 1 only. Does NOT pull in Tier 2.
182
238
 
183
239
  # SSR (server-side rendering)
184
240
  import ApexCharts from 'apexcharts/ssr' # Node.js: renderToString, renderToHTML
185
241
  import ApexCharts from 'apexcharts/client' # Browser: explicit client import for hydration
186
242
  ```
187
243
 
188
- **Note:** When using `apexcharts` (full bundle), all chart types and features are included automatically. Tree-shaking entries (`/core`, `/line`, etc.) are for reducing bundle size.
244
+ **Note (v7):** `apexcharts` gives you every chart type except `raincloud`, plus the Tier 1 features. The nine Tier 2 features and `raincloud` need their own import **whatever entry point you started from**. `apexcharts/features/all` is the Tier 1 set, so it is not a shortcut past this. Tree-shaking entries (`/core`, `/line`, etc.) are for reducing bundle size below the default.
189
245
 
190
246
  **Note (v6.9):** ApexCharts is no longer dependency-free: it depends on `apex-commons` at runtime. npm resolves it automatically and the browser (script-tag) bundles inline it, so no action is needed; it only matters for tooling that assumed zero dependencies.
191
247
 
@@ -463,7 +519,9 @@ Also: do NOT use `xaxis.categories` when your data already has `{ x, y }` format
463
519
  { responsive: [{ breakpoint: 480, options: {...} }, { breakpoint: 1024, options: {...} }] }
464
520
  ```
465
521
 
466
- ### Pitfall 14: Tree-shaking — missing feature imports
522
+ ### Pitfall 14: Missing feature imports
523
+
524
+ Two distinct versions of this. **(a) Per-type entries carry no features:**
467
525
 
468
526
  ❌ **WRONG** — toolbar/legend/annotations silently missing:
469
527
  ```js
@@ -479,6 +537,22 @@ import 'apexcharts/features/toolbar'
479
537
  import 'apexcharts/features/annotations'
480
538
  ```
481
539
 
540
+ **(b) *(v7)* The full bundle no longer carries the nine Tier 2 features.** This one catches people who never tree-shook anything, and it is the most common v6 → v7 upgrade failure.
541
+
542
+ ❌ **WRONG**: the config is right, the module is absent, so the chart renders as one plain chart and logs a warning:
543
+ ```js
544
+ import ApexCharts from 'apexcharts'
545
+ new ApexCharts(el, { chart: { type: 'line' }, series, trellis: { by: 'region' } })
546
+ ```
547
+
548
+ ✅ **CORRECT**:
549
+ ```js
550
+ import ApexCharts from 'apexcharts'
551
+ import 'apexcharts/features/trellis'
552
+ ```
553
+
554
+ Same for `storyboard`, `perspectives`, `ink`, `renderer: 'canvas'`, `link`, `measure`, `history`, `contextMenu`, and the `raincloud` chart type. Check the console: each one names both import routes when its config is present without it.
555
+
482
556
  ### Pitfall 15: SSR — wrong import path
483
557
 
484
558
  ❌ **WRONG** — using browser bundle in Node.js:
@@ -552,10 +626,12 @@ await chart.updateOptions({ title: { text: 'New Title' } })
552
626
  | `addEventListener(name, handler)` | Subscribe to chart event. |
553
627
  | `removeEventListener(name, handler)` | Unsubscribe from chart event. |
554
628
 
555
- ### v6 Instance Methods (require the matching feature import)
629
+ ### Feature Instance Methods (require the matching feature import)
556
630
 
557
631
  | Method | Feature | Description |
558
632
  |---|---|---|
633
+ | `chart.getPanels() / getPanel(key)` | trellis | *(v7.0)* The grid's panels, and one panel's own ApexCharts instance by facet key. Empty / `null` on a chart that is not a trellis host. |
634
+ | `chart.promotePanel(key) / restorePanels()` | trellis | *(v7.0)* Expand one panel to the grid's full width, and go back. |
559
635
  | `chart.history.undo() / redo() / jump(id) / transaction(fn)` | history | Undo/redo over the command journal. |
560
636
  | `chart.perspectives.capture() / toURL() / apply(token)` | perspectives | Serialize / restore the exact view. |
561
637
  | `chart.getActiveRenderer()` | renderer-canvas | Returns `'svg' \| 'canvas'` currently in use. |
@@ -582,6 +658,8 @@ await chart.updateOptions({ title: { text: 'New Title' } })
582
658
  | `ApexCharts.registerUnitLayout(name, fn) / unregisterUnitLayout(name)` | *(v6.9)* Register a named unit-chart layout, referenceable via `plotOptions.unit.positions: '<name>'` with `layout: 'custom'`. |
583
659
  | `ApexCharts.crossfilter({ id, records }) / getCrossfilter(id)` | *(v6, Link)* Create / fetch a crossfilter engine. |
584
660
  | `ApexCharts.perspectives.fromURL(href)` | *(v6)* Decode a perspective token from a URL. |
661
+ | `ApexCharts.trellis(el, options)` | *(v7.0, Trellis)* Imperative entry point: creates a trellis host (options must carry `trellis.by`). Throws if the trellis feature is not imported. |
662
+ | `registerMarks(defs) / definePictogram(meta)` from `apexcharts/pictograms` | *(v7.0)* Register glyphs so `plotOptions.unit.pictogram.mark: 'person'` resolves. |
585
663
 
586
664
  ### SSR Static Methods (available with `apexcharts/ssr`)
587
665
 
@@ -645,27 +723,31 @@ await chart.updateOptions({ title: { text: 'New Title' } })
645
723
 
646
724
  ---
647
725
 
648
- ## 9. v6 Feature Platform (opt-in, tree-shakeable)
726
+ ## 9. Feature Platform
649
727
 
650
- All of the following are new in v6, off by default, and each ships as a `apexcharts/features/*` entry. Full config shapes, APIs, and examples are in `references/v6-features.md`. Quick map:
728
+ Every feature below is off by default in config terms. The **Tier** column is about the *bundle*: Tier 1 is already in `import ApexCharts from 'apexcharts'` and needs a `features/*` import only if you started from `/core` or a per-type entry; **Tier 2 needs its import no matter which entry point you used**. Full config shapes, APIs, and examples are in `references/feature-platform.md`.
651
729
 
652
- | Feature | Opt-in | One-liner |
653
- |---|---|---|
654
- | **Weave** (plugins) | `apexcharts/features/weave` | Publish reusable chart plugins against a stable `ApexCharts.registerPlugin({ name, setup })` API; activate per chart with `plugins: [{ name }]`. |
655
- | **Strata** (canvas) | `apexcharts/features/renderer-canvas` | `chart: { renderer: 'auto', rendererThreshold }` paints the dense series layer to canvas while axes/tooltips/exports stay SVG. |
656
- | **Marks** (custom series) | `apexcharts/features/marks` | `ApexCharts.registerSeriesType(name, { renderItem })` for first-class custom marks (lollipop, dumbbell, bullet). Baseline is `scales.y(0)`, **not** `api.zeroY`. |
657
- | **Rewind** (undo/redo) | `apexcharts/features/history` | `chart: { history: { enabled: true } }`, then `chart.history.undo()/redo()/jump()/transaction()`. |
658
- | **Perspectives** (view state) | `apexcharts/features/perspectives` | `chart.perspectives.capture()/toURL()/apply()` to serialize and restore the exact view. |
659
- | **Facet** (themes/tokens) | `apexcharts/features/facet` | `theme: { follow: 'os', name }`, `--apx-*` CSS custom props, `ApexCharts.registerTheme`. |
660
- | **Cadence** (easing) | core | `chart.animations.easing` accepts a named curve, cubic-bezier array, or function; `ApexCharts.registerEasing`. |
661
- | **Link** (crossfilter) | `apexcharts/features/link` | `chart: { group, link: { enabled, mode } }` for highlight linking; `ApexCharts.crossfilter({ id, records })` for a filter engine. |
662
- | **Ink** (annotation authoring) | `apexcharts/features/ink` | `chart: { ink: { enabled: true } }` makes annotations draggable/resizable with a floating editor. |
663
- | **Measure** (ruler) | `apexcharts/features/measure` | `chart: { measure: { enabled, mode } }`; hold a key and drag to read change/percent/slope. v6.1 adds a toolbar tool (`toolbar.tools.measure`, `toolbar.autoSelected: 'measure'`). |
664
- | **Context menu** | `apexcharts/features/context-menu` | `chart: { contextMenu: { enabled, items } }` for point-specific right-click actions. |
665
- | **Storyboard** (scrollytelling) | `apexcharts/features/storyboard` | `chart.storyboard.bind({ beats })` pairs prose sections with saved views. |
666
- | **Streaming** | core | `chart: { streaming: { enabled, maxPoints } }` for constant-velocity rolling-window scroll. |
667
- | **Drilldown** | `apexcharts/features/drilldown` | `drilldown: { enabled, series }` + a `drilldown` id on data points; `chart.drillDown()/drillUp()`. v6.9 adds line/area support, async levels (`onDrillDown` may return a Promise), a loading overlay, and the `drillDownError` event. |
668
- | **Stats** | `apexcharts/features/stats` | *(v6.9)* Statistics behind histogram binning, boxPlot/violin raw-sample summaries (R type 7 quartiles, KDE), and `chart.rowSeries()`. The `apexcharts/histogram` entry includes it. |
730
+ | Feature | Tier | Import | One-liner |
731
+ |---|---|---|---|
732
+ | **Weave** (plugins) | 1 | `apexcharts/features/weave` | Publish reusable chart plugins against a stable `ApexCharts.registerPlugin({ name, setup })` API; activate per chart with `plugins: [{ name }]`. |
733
+ | **Marks** (custom series) | 1 | `apexcharts/features/marks` | `ApexCharts.registerSeriesType(name, { renderItem })` for first-class custom marks (lollipop, bullet). Baseline is `scales.y(0)`, **not** `api.zeroY`. |
734
+ | **Facet** (themes/tokens) | 1 | `apexcharts/features/facet` | `theme: { follow: 'os', name }`, `--apx-*` CSS custom props, `ApexCharts.registerTheme`. |
735
+ | **Drilldown** | 1 | `apexcharts/features/drilldown` | `drilldown: { enabled, series }` + a `drilldown` id on data points; `chart.drillDown()/drillUp()`. v6.9 adds line/area support, async levels (`onDrillDown` may return a Promise), a loading overlay, and the `drillDownError` event. |
736
+ | **Morph** | 1 | `apexcharts/features/morph` | Animated transitions between chart types. |
737
+ | **Stats** | 1 | `apexcharts/features/stats` | *(v6.9)* Statistics behind histogram binning, boxPlot/violin raw-sample summaries (R type 7 quartiles, KDE), and `chart.rowSeries()`. The `apexcharts/histogram` entry includes it. |
738
+ | **Cadence** (easing) | core | none | `chart.animations.easing` accepts a named curve, cubic-bezier array, or function; `ApexCharts.registerEasing`. |
739
+ | **Streaming** | core | none | `chart: { streaming: { enabled, maxPoints } }` for constant-velocity rolling-window scroll. |
740
+ | **Print layout** | core | none | *(v7.1)* `chart: { print: { enabled, width } }`. The paper box cannot be measured from JS (`clientWidth` and `matchMedia` both report the screen during `beforeprint`), so the chart is re-laid out at a known width for the sheet and restored after. **On by default** at `width: 700` (suits A4 / Letter portrait); a chart already narrower is left alone. `print: false` restores the pre-7.1 behavior. |
741
+ | **Marker batching** | core | none | *(v7.0)* `markers: { largeDatasetThreshold: n }`. Above `n` points, a series' markers are drawn as one path per marker size instead of one element per point. **Opt-in, default `0` (off)**, because merged marker paths are not pixel-identical: overlapping markers lose their individual outlines and dense clusters read flatter. Also covers the markers `showNullDataPoints` adds, which is what makes a null-heavy series slow even at `size: 0`. |
742
+ | **Trellis** (small multiples) | **2** | `apexcharts/features/trellis` | *(v7.0, premium)* `trellis: { by: 'region', minPanelWidth }` splits the series into a grid of real charts sharing one scale, legend, toolbar and crosshair. Also `row` × `column` for 2-D grids. |
743
+ | **Strata** (canvas) | **2** | `apexcharts/features/renderer-canvas` | `chart: { renderer: 'auto', rendererThreshold }` paints the dense series layer to canvas while axes/tooltips/exports stay SVG. Falls back to SVG if the module is missing. |
744
+ | **Rewind** (undo/redo) | **2** | `apexcharts/features/history` | *(premium)* `chart: { history: { enabled: true } }`, then `chart.history.undo()/redo()/jump()/transaction()`. |
745
+ | **Perspectives** (view state) | **2** | `apexcharts/features/perspectives` | *(premium)* `chart.perspectives.capture()/toURL()/apply()` to serialize and restore the exact view. |
746
+ | **Link** (crossfilter) | **2** | `apexcharts/features/link` | *(premium)* `chart: { group, link: { enabled, mode } }` for highlight linking; `ApexCharts.crossfilter({ id, records })` for a filter engine. |
747
+ | **Ink** (annotation authoring) | **2** | `apexcharts/features/ink` | *(premium)* `chart: { ink: { enabled: true } }` makes annotations draggable/resizable with a floating editor. |
748
+ | **Measure** (ruler) | **2** | `apexcharts/features/measure` | *(premium)* `chart: { measure: { enabled, mode } }`; hold a key and drag to read change/percent/slope. v6.1 adds a toolbar tool (`toolbar.tools.measure`, `toolbar.autoSelected: 'measure'`). |
749
+ | **Context menu** | **2** | `apexcharts/features/context-menu` | *(premium)* `chart: { contextMenu: { enabled, items } }` for point-specific right-click actions. |
750
+ | **Storyboard** (scrollytelling) | **2** | `apexcharts/features/storyboard` | *(premium)* `chart.storyboard.bind({ beats })` pairs prose sections with saved views. Registers Perspectives too. |
669
751
 
670
752
  ## 10. Reference Routing Table
671
753
 
@@ -673,13 +755,13 @@ For detailed chart-family-specific options, data format variants, and full worki
673
755
 
674
756
  | Topic | Reference File |
675
757
  |---|---|
676
- | Line, Area, Scatter, Bubble, Range Area | `references/cartesian-charts.md` |
677
- | Bar, Column, Range Bar, Timeline/Gantt, Funnel, Pyramid | `references/bar-charts.md` |
678
- | Candlestick, Box Plot, Violin, Histogram | `references/financial-charts.md` |
679
- | Pie, Donut, Polar Area, Radial Bar, Gauge, Sunburst, Unit, Waffle | `references/circular-charts.md` |
758
+ | Line, Area, Scatter, Bubble, Range Area, Streamgraph | `references/cartesian-charts.md` |
759
+ | Bar, Column, Range Bar, Timeline/Gantt, Funnel, Pyramid, Waterfall, Dumbbell | `references/bar-charts.md` |
760
+ | Candlestick, Box Plot, Violin, Histogram, Raincloud | `references/financial-charts.md` |
761
+ | Pie, Donut, Polar Area, Radial Bar, Gauge, Sunburst, Unit, Waffle, Pictograms | `references/circular-charts.md` |
680
762
  | Heatmap, Treemap | `references/grid-charts.md` |
681
763
  | Radar | `references/radar-charts.md` |
682
- | v6 feature platform (plugins, canvas, undo/redo, themes, crossfilter, storyboard, ...) | `references/v6-features.md` |
683
- | Tree-shaking, Bundle optimization | `references/tree-shaking.md` |
764
+ | Feature platform (small multiples, plugins, canvas, undo/redo, themes, crossfilter, storyboard, ...) | `references/feature-platform.md` |
765
+ | Bundle tiers, Tree-shaking, Bundle optimization | `references/tree-shaking.md` |
684
766
  | Server-side rendering, Hydration | `references/ssr.md` |
685
767
  | React, Vue, Angular integration | `references/framework-wrappers.md` |
package/index.js CHANGED
@@ -20,13 +20,13 @@ export const referenceFiles = [
20
20
  'bar-charts.md',
21
21
  'cartesian-charts.md',
22
22
  'circular-charts.md',
23
+ 'feature-platform.md',
23
24
  'financial-charts.md',
24
25
  'framework-wrappers.md',
25
26
  'grid-charts.md',
26
27
  'radar-charts.md',
27
28
  'ssr.md',
28
29
  'tree-shaking.md',
29
- 'v6-features.md',
30
30
  ];
31
31
 
32
32
  /** Resolve a reference file by its filename. Throws if not in the known list. */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "apexcharts-skill",
3
- "version": "2.2.0",
3
+ "version": "3.0.0",
4
4
  "description": "AI coding skill for ApexCharts.js — structured reference docs that help AI assistants (Claude, Cursor, Copilot, etc.) generate correct ApexCharts code.",
5
5
  "keywords": [
6
6
  "apexcharts",