apexcharts-skill 3.1.0 → 4.0.1

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,26 +1,29 @@
1
1
  # ApexCharts.js — AI Coding Rules
2
2
 
3
- You are working with ApexCharts.js (v7), a JavaScript charting library.
3
+ You are working with ApexCharts.js (v8), 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
- 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.
8
+ v5 and v6 configs keep working, with two v7.0 changes: `plotOptions.bar.borderRadiusWhenStacked` was dropped in v7.0 and is a working option again since v7.4 (`'all'`, the default, rounds both stack ends; `'last'` rounds only the far end), so do not delete it from a config; and `dataLabels.animate.enabled` now defaults to true on bar/column.
9
9
 
10
- ## !! v7.0: the default bundle no longer ships every feature
10
+ ## !! v8.0: the default bundle does not carry every chart type or feature
11
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.
12
+ `import ApexCharts from 'apexcharts'` (script tag `dist/apexcharts.min.js`) registers line, area, scatter, bubble, rangeArea, bar (and `column`), rangeBar, candlestick, boxPlot, histogram, funnel, pyramid, pie, donut, polarArea, radialBar, gauge, radar, heatmap and treemap, plus the Tier 1 features (exports, legend, toolbar, annotations, keyboard, morph, stats, facet, weave, marks). Everything else is Tier 2: in the package, not in the default bundle, reachable through its own import next to it. This is the most common v7 -> v8 failure (and v6 -> v7 for the nine 7.0 features).
13
13
 
14
14
  import ApexCharts from 'apexcharts'
15
- import 'apexcharts/features/trellis' // required even here
15
+ import 'apexcharts/sunburst' // a Tier 2 chart type
16
+ import 'apexcharts/features/drilldown' // a Tier 2 feature
16
17
 
17
- Tier 2: trellis, storyboard, perspectives, ink, renderer-canvas, link, measure, history, context-menu, plus the `raincloud` chart type.
18
+ Tier 2 chart types, `import 'apexcharts/<type>'` (script tag `dist/<type>.js`): `unit` (also for `waffle`), `sunburst` and `violin` (all three since 8.0), `icicle` (7.6), and `raincloud` (`apexcharts/raincloud` brings violin plus the raincloud feature; script tags `dist/violin.js`, then `dist/features/raincloud.js`).
19
+ Tier 2 features, `import 'apexcharts/features/<name>'` (script tag `dist/features/<name>.js`): drilldown, waterfall, dumbbell, streamgraph (since 8.0), highlight-filter (7.9), trellis, storyboard, perspectives, ink, renderer-canvas, link, measure, history, context-menu (since 7.0). Waterfall, dumbbell and streamgraph are chart types whose renderer is in the default bundle, so next to it add only the feature.
18
20
  `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).
21
+ Full bundle (v8.0): `import ApexCharts from 'apexcharts/full'` (script tag `dist/apexcharts.full.min.js`) carries every chart type and feature and needs no add-on import. Gzipped at 8.0.0: default bundle 263,188 B, full bundle 381,135 B.
22
+ A missing import is named in the console: a Tier 2 chart type makes `render()` reject; a waterfall, dumbbell or streamgraph draws an empty plot; a Tier 2 feature degrades where it can (a trellis renders as one chart; renderer: 'canvas' falls back to SVG). Unversioned CDN URLs serve 8.0; pin `apexcharts@7` to stay on 7.
20
23
 
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.
24
+ Premium (watermarked until an entitled premium/enterprise license): trellis, storyboard, link, ink, measure, context-menu, perspectives, history, highlight-filter, and the unit/waffle and raincloud chart types. Premium and Tier 2 are separate axes: since 8.0 every premium item is Tier 2, but renderer-canvas, drilldown, waterfall, dumbbell, streamgraph, sunburst, violin and icicle are Tier 2 and free.
22
25
 
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.
26
+ On by default: coherent add/remove data-transition animations (they respect prefers-reduced-motion), and one-finger kinetic pan (`chart.pan.inertia`). Since v7.8, `dataLabels.avoidOverlap` nudges overlapping data labels apart (`false` to disable). Pinch-zoom and two-finger pan follow `chart.zoom.pinch: 'auto'`: on only where the toolbar reset button is present.
24
27
 
25
28
  ## Framework wrapper detection — check `package.json` first
26
29
 
@@ -38,15 +41,18 @@ Wrappers handle `destroy()` automatically on unmount, accept reactive props, and
38
41
  4. **`yaxis` must be an array** when using multiple y-axes. Each entry needs `seriesName`.
39
42
  5. **`tooltip.shared` and `tooltip.intersect` are mutually exclusive.**
40
43
  6. **Use `null` (not `undefined`)** for missing data points.
41
- 7. **`chart.stacked: true`** only works with `bar` and `area` chart types.
44
+ 7. **`chart.stacked: true`** stacks `bar`, `area` and `line` series. In a mixed chart only the bar series stack unless `chart.stackOnlyBar: false`. `waterfall`, `dumbbell` and `streamgraph` force it off.
42
45
  8. **Responsive breakpoints** must be in ascending order.
43
46
  9. **For mixed/combo charts**, set `type` on each series object.
44
- 10. **RadialBar values must be 0–100** (percentages).
47
+ 10. **RadialBar values sit on the `plotOptions.radialBar.min` to `max` domain** (default 0 to 100, so percentages by default). Set `min` / `max` to plot raw values; a value outside the domain is clamped.
45
48
  11. **Color hex values must include `#`** (e.g., `'#FF5733'`).
46
- 12. **Tree-shaking**: `apexcharts/core` requires separate chart-type + feature imports.
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`.
48
- 14. **`violin`** points use a density profile: `data: [{ x, y: { density: [[value, weight], ...], points?: [num] } }]`.
49
- 15. **`render()` is idempotent**: a repeated `render()` returns the same promise; still `destroy()` before a new instance on the same element.
49
+ 12. **The default `apexcharts` bundle is not everything (v8).** Next to it, import `apexcharts/unit` (also for `waffle`), `apexcharts/sunburst`, `apexcharts/violin`, `apexcharts/icicle` or `apexcharts/raincloud` before writing that chart type, and `apexcharts/features/<name>` before a `waterfall`, `dumbbell` or `streamgraph` chart or any Tier 2 feature. `import ApexCharts from 'apexcharts/full'` (script tag `dist/apexcharts.full.min.js`) is the one entry that needs none of these.
50
+ 13. **Tree-shaking**: `apexcharts/core` requires separate chart-type + feature imports. On it, `violin` and `raincloud` also need `apexcharts/bar`, and a raw-sample boxPlot or violin needs `apexcharts/features/stats`.
51
+ 14. **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`.
52
+ 15. **`violin`** points use a density profile: `data: [{ x, y: { density: [[value, weight], ...], points?: [num] } }]`.
53
+ 16. **`render()` is idempotent**: a repeated `render()` returns the same promise; still `destroy()` before a new instance on the same element.
54
+ 17. **Unknown `chart.type` throws (v7.9)** and the message names the closest type. `'column'` is a synonym for `'bar'`; `''` and `null` draw a line chart.
55
+ 18. **A script tag names the exact version shown here**: `https://cdnjs.cloudflare.com/ajax/libs/apexcharts/8.1.0/apexcharts.min.js` or `https://cdn.jsdelivr.net/npm/apexcharts@8.1.0/dist/apexcharts.min.js`. Never write a 3.x or 4.x URL (`.../apexcharts/3.54.1/...`): those are releases from 2024 and early 2025. If the environment only accepts an older release, use the newest one it accepts with the same major version as these URLs.
50
56
 
51
57
  ---
52
58
 
@@ -58,23 +64,23 @@ Wrappers handle `destroy()` automatically on unmount, accept reactive props, and
58
64
  |---|---|---|---|
59
65
  | Line | `'line'` | `[{ name, data: [num\|null] }]` or `[{ name, data: [{ x, y }] }]` | `[{ data: [30, 40, null, 50] }]` |
60
66
  | Area | `'area'` | Same as line | `[{ data: [10, 20, 30] }]` |
61
- | Bar/Column | `'bar'` | Same as line. `plotOptions.bar.horizontal: false` for columns. | `[{ data: [44, 55, 41] }]` |
67
+ | Bar/Column | `'bar'` (or `'column'`, a synonym since v7.9) | Same as line. `plotOptions.bar.horizontal: false` for columns. | `[{ data: [44, 55, 41] }]` |
62
68
  | Scatter | `'scatter'` | `[{ name, data: [{ x, y }] }]` | `[{ data: [{ x: 1, y: 5 }] }]` |
63
69
  | Bubble | `'bubble'` | `[{ name, data: [{ x, y, z }] }]` — z required | `[{ data: [{ x: 1, y: 30, z: 10 }] }]` |
64
70
  | Range Area | `'rangeArea'` | `[{ data: [{ x, y: [low, high] }] }]` | `[{ data: [{ x: 'Jan', y: [5, 15] }] }]` |
65
71
  | Range Bar | `'rangeBar'` | `[{ data: [{ x, y: [start, end] }] }]` | `[{ data: [{ x: 'Task', y: [1, 5] }] }]` |
66
72
  | Candlestick | `'candlestick'` | `[{ data: [{ x, y: [O,H,L,C] }] }]` — 4 values | `[{ data: [{ x: new Date(), y: [51,56,48,53] }] }]` |
67
73
  | Box Plot | `'boxPlot'` | `[{ data: [{ x, y: [min,Q1,med,Q3,max] }] }]` — 5 values | `[{ data: [{ x: 'A', y: [10,20,30,40,50] }] }]` |
68
- | Violin *(v6)* | `'violin'` | `[{ name, data: [{ x, y: { density: [[value,weight],...], points?: [num] } }] }]` | `[{ data: [{ x: 'A', y: { density: [[20,0.1],[30,0.2]], points: [21,29] } }] }]` |
74
+ | Violin *(v6, Tier 2 since v8)* | `'violin'` | `[{ name, data: [{ x, y: { density: [[value,weight],...], points?: [num] } }] }]`. Needs `import 'apexcharts/violin'` | `[{ data: [{ x: 'A', y: { density: [[20,0.1],[30,0.2]], points: [21,29] } }] }]` |
69
75
  | Heatmap | `'heatmap'` | `[{ name, data: [{ x, y: number }] }]` — y is intensity | `[{ name: 'Mon', data: [{ x: '10am', y: 45 }] }]` |
70
76
  | Treemap | `'treemap'` | `[{ data: [{ x, y: number }] }]` — y is area value | `[{ data: [{ x: 'Item', y: 100 }] }]` |
71
77
  | Radar | `'radar'` | `[{ name, data: [num] }]` + `xaxis.categories` | `[{ data: [80, 50, 30] }]` |
72
78
  | Funnel *(v6)* | `'funnel'` | `[{ name, data: [num] }]` + `xaxis.categories`; order largest→smallest | `[{ data: [1380, 990, 548, 200] }]` |
73
79
  | 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] }] }]` |
80
+ | Waterfall *(v7.1, Tier 2 since v8)* | `'waterfall'` | `[{ name, data: [{ x, y }] }]` where y is the signed DELTA; a running-total row carries `isSubtotal` or `isTotal` and NO y. Needs `import 'apexcharts/features/waterfall'` | `[{ data: [{ x: 'Rev', y: 8786 }, { x: 'Cost', y: -2786 }, { x: 'Gross', isSubtotal: true }] }]` |
81
+ | Dumbbell *(v7.1, Tier 2 since v8)* | `'dumbbell'` | ONE SERIES PER MEASURE sharing x categories; not [low, high] pairs. Needs `import 'apexcharts/features/dumbbell'` | `[{ name: '2020', data: [{ x: 'BE', y: 92 }] }, { name: '2025', data: [{ x: 'BE', y: 118 }] }]` |
82
+ | Streamgraph *(v7.1, Tier 2 since v8)* | `'streamgraph'` | Same as area; do NOT set chart.stacked (the chart owns baseline + order). Needs `import 'apexcharts/features/streamgraph'` | `[{ name: 'Drama', data: [{ x: '2024-01-01', y: 32 }] }]` |
83
+ | Raincloud *(v7.1, premium, TIER 2)* | `'raincloud'` | `[{ name, data: [{ x, points: [num] }] }]`: raw sample; configured via `plotOptions.violin`. Needs `import 'apexcharts/raincloud'` | `[{ data: [{ x: 'Control', points: [3.1, 4.7, 2.9] }] }]` |
78
84
 
79
85
  ### Non-Axis Charts (flat number array — NOT object format)
80
86
 
@@ -82,11 +88,23 @@ Wrappers handle `destroy()` automatically on unmount, accept reactive props, and
82
88
  // Pie, Donut, Polar Area
83
89
  { chart: { type: 'pie' }, series: [44, 55, 13], labels: ['A', 'B', 'C'] }
84
90
 
85
- // Radial Bar (values 0–100)
91
+ // Radial Bar (values on the plotOptions.radialBar min/max domain, default 0 to 100)
86
92
  { chart: { type: 'radialBar' }, series: [76, 67, 61], labels: ['X', 'Y', 'Z'] }
87
93
 
88
94
  // Gauge (v6): single value; domain via plotOptions.radialBar.min/max
89
95
  { chart: { type: 'gauge' }, series: [72], labels: ['Progress'] }
96
+
97
+ // Unit / Waffle (v6.6, premium, Tier 2 since v8): needs import 'apexcharts/unit'
98
+ { chart: { type: 'waffle' }, series: [44, 55, 13], labels: ['A', 'B', 'C'] }
99
+ ```
100
+
101
+ ### Hierarchical Charts (sunburst, icicle)
102
+
103
+ One `[{ data: [...] }]` series whose data are `{ x, y, children }` nodes nested to any depth. Both are Tier 2: `import 'apexcharts/sunburst'` (v6.7, Tier 2 since v8) or `import 'apexcharts/icicle'` (v7.6) next to `apexcharts`.
104
+
105
+ ```js
106
+ { chart: { type: 'sunburst' }, // or 'icicle' (same tree, bands along one axis)
107
+ series: [{ data: [{ x: 'Mobile', y: 55, children: [{ x: 'iOS', y: 30 }, { x: 'Android', y: 23 }] }] }] }
90
108
  ```
91
109
 
92
110
  ---
@@ -113,7 +131,8 @@ chart.destroy() // cleanup
113
131
  ## Import Paths
114
132
 
115
133
  ```
116
- apexcharts # Default bundle: every type except raincloud + the Tier 1 features
134
+ apexcharts # Default bundle: the standard types (see the box above) + the Tier 1 features
135
+ apexcharts/full # Full bundle (v8.0): every chart type and feature; no add-on import needed
117
136
  apexcharts/core # Bare core (must register types + features manually)
118
137
  apexcharts/line # line, area, scatter, bubble, rangeArea
119
138
  apexcharts/bar # bar, column, rangeBar, funnel, pyramid (aliases)
@@ -121,20 +140,24 @@ apexcharts/waterfall # waterfall (v7.1) = bar + features/waterfall
121
140
  apexcharts/dumbbell # dumbbell (v7.1) = bar + features/dumbbell
122
141
  apexcharts/streamgraph # streamgraph (v7.1) = rangeArea + features/streamgraph
123
142
  apexcharts/candlestick # candlestick, boxPlot
124
- apexcharts/violin # violin
125
- apexcharts/raincloud # raincloud (v7.1, premium, TIER 2) = violin + features/raincloud
126
143
  apexcharts/histogram # histogram (v6.9) = bar + features/stats
127
144
  apexcharts/pie # pie, donut, polarArea
128
145
  apexcharts/radialBar # radialBar, gauge (alias)
129
146
  apexcharts/radar # radar
130
147
  apexcharts/heatmap # heatmap
131
148
  apexcharts/treemap # treemap
132
- apexcharts/sunburst # sunburst (v6.7)
133
- apexcharts/unit # unit, waffle (v6.6, premium)
149
+
150
+ # TIER 2 chart types: NOT in the default bundle. Import next to `apexcharts` (or use /full).
151
+ apexcharts/unit # unit, waffle (v6.6, premium; Tier 2 since v8)
152
+ apexcharts/sunburst # sunburst (v6.7; Tier 2 since v8)
153
+ apexcharts/violin # violin (Tier 2 since v8); on /core also import apexcharts/bar
154
+ apexcharts/icicle # icicle (v7.6)
155
+ apexcharts/raincloud # raincloud (v7.1, premium) = violin + features/raincloud; on /core also import apexcharts/bar
156
+
134
157
  apexcharts/unit-shapes # unit-chart shape kit (v6.10), named exports
135
158
  apexcharts/pictograms # pictogram glyphs (v7.0), named exports
136
- apexcharts/ssr # Server-side rendering (Node.js)
137
- apexcharts/client # Explicit browser import
159
+ apexcharts/ssr # Server-side rendering (Node.js); also the only entry with hydrate() (browser-safe)
160
+ apexcharts/client # Explicit browser import; no hydrate()
138
161
 
139
162
  # TIER 1 features: already in the default `apexcharts` bundle.
140
163
  # Import only if you started from /core or a per-type entry.
@@ -145,16 +168,17 @@ apexcharts/features/annotations # X/Y/point annotations
145
168
  apexcharts/features/keyboard # Keyboard navigation
146
169
  apexcharts/features/stats # histogram binning, raw-sample summaries, rowSeries()
147
170
  apexcharts/features/morph # animated chart-type morphs
148
- apexcharts/features/drilldown # hierarchical drill-down
149
171
  apexcharts/features/facet # design tokens + OS themes
150
172
  apexcharts/features/weave # plugin platform
151
173
  apexcharts/features/marks # custom series types (registerSeriesType)
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
174
  apexcharts/features/all # Tier 1 only: NOT a shortcut past Tier 2
156
175
 
157
- # TIER 2 features: in NO bundle. Required whatever entry point you used.
176
+ # TIER 2 features: NOT in the default bundle (all are in apexcharts/full).
177
+ apexcharts/features/drilldown # hierarchical drill-down (Tier 2 since v8)
178
+ apexcharts/features/waterfall # (v7.1) waterfall type (Tier 2 since v8)
179
+ apexcharts/features/dumbbell # (v7.1) dumbbell type (Tier 2 since v8)
180
+ apexcharts/features/streamgraph # (v7.1) streamgraph type (Tier 2 since v8)
181
+ apexcharts/features/highlight-filter # (v7.9) part-of-whole highlight, highlightFilter (premium)
158
182
  apexcharts/features/trellis # (v7.0) small multiples (premium)
159
183
  apexcharts/features/storyboard # scrollytelling (premium; registers perspectives)
160
184
  apexcharts/features/perspectives # shareable view state (premium)
@@ -164,11 +188,10 @@ apexcharts/features/link # crossfilter / linked views (premium)
164
188
  apexcharts/features/measure # measure / delta ruler (premium)
165
189
  apexcharts/features/history # undo/redo (Rewind, premium)
166
190
  apexcharts/features/context-menu # right-click context menu (premium)
167
- apexcharts/features/raincloud # (v7.1) raincloud type (premium)
168
191
  ```
169
192
  (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.
193
+ Script tags: a default-bundle page adds `dist/<type>.js` for a Tier 2 chart type and `dist/features/<name>.js` for a Tier 2 feature (raincloud: `dist/violin.js`, then `dist/features/raincloud.js`). Add-on tags may load before or after the ApexCharts script. `dist/apexcharts.full.min.js` already contains them all.
194
+ Lean core channel (v7.0): `dist/apexcharts.core.js` plus per-type files such as `dist/line.js` and feature files such as `dist/features/legend.js`, for a page that needs less than the default bundle.
172
195
 
173
196
  ---
174
197
 
@@ -179,7 +202,7 @@ Lean core channel (v7.0): `dist/apexcharts.core.js` + `dist/line.js` + `dist/fea
179
202
  | `xaxis.labels.formatter` | `(value, timestamp?, opts?) => string` |
180
203
  | `yaxis.labels.formatter` | `(value, opts?) => string` |
181
204
  | `tooltip.x.formatter` | `(value, opts?) => string` |
182
- | `tooltip.y.formatter` | `(value, opts?) => string` |
205
+ | `tooltip.y.formatter` | `(value: number \| null, opts?) => string`; `value` is `null` at a gap, so guard: `val == null ? 'n/a' : val.toFixed(2)` |
183
206
  | `tooltip.y.title.formatter` | `(seriesName, opts?) => string` |
184
207
  | `dataLabels.formatter` | `(value, opts?) => string \| number` |
185
208
  | `legend.formatter` | `(legendName, opts?) => string` |
@@ -220,15 +243,15 @@ Lean core channel (v7.0): `dist/apexcharts.core.js` + `dist/line.js` + `dist/fea
220
243
 
221
244
  ### 8. Stacking on unsupported types
222
245
  ❌ `chart: { type: 'scatter', stacked: true }`
223
- ✅ `chart: { type: 'bar', stacked: true }` (or area)
246
+ ✅ `chart: { type: 'bar', stacked: true }` (or area, or line)
224
247
 
225
248
  ### 9. Mixed chart without per-series type
226
249
  ❌ `series: [{ name: 'A', data: [...] }, { name: 'B', data: [...] }]` — all same type
227
250
  ✅ `series: [{ name: 'A', type: 'column', data: [...] }, { name: 'B', type: 'line', data: [...] }]`
228
251
 
229
- ### 10. RadialBar > 100
230
- ❌ `series: [340, 520]`
231
- ✅ `series: [76, 67]` (percentages 0–100)
252
+ ### 10. RadialBar values outside the min/max domain
253
+ ❌ `series: [340, 520]` on the default 0 to 100 domain (each arc is clamped to full)
254
+ ✅ `series: [76, 67]` (percentages), or keep the raw values and set `plotOptions: { radialBar: { min: 0, max: 600 } }`
232
255
 
233
256
  ### 11. Colors without #
234
257
  ❌ `colors: ['FF5733']`
@@ -239,8 +262,9 @@ Lean core channel (v7.0): `dist/apexcharts.core.js` + `dist/line.js` + `dist/fea
239
262
  ✅ `import ApexCharts from 'apexcharts/line'; import 'apexcharts/features/legend'`
240
263
 
241
264
  ### 13. SSR with wrong import
242
- ❌ Server: `import ApexCharts from 'apexcharts'; ApexCharts.renderToString(opts)` — method missing
243
- ✅ Server: `import ApexCharts from 'apexcharts/ssr'; await ApexCharts.renderToString(opts)`
265
+ ❌ Client: `import ApexCharts from 'apexcharts/client'; ApexCharts.hydrateAll()`: in a browser, `apexcharts`, `apexcharts/client` and `apexcharts/full` have no `hydrate()` / `hydrateAll()`
266
+ ✅ Server: `import ApexCharts from 'apexcharts/ssr'; await ApexCharts.renderToString(opts)`. Client: `import ApexCharts from 'apexcharts/ssr'; ApexCharts.hydrateAll()` (the SSR entry is browser-safe)
267
+ On Node, plain `apexcharts` also resolves to the SSR bundle (the `node` export condition); import `apexcharts/ssr` anyway, so a bundler that resolves the `browser` condition while targeting Node keeps `renderToString`.
244
268
 
245
269
  ### 14. updateOptions just to change data
246
270
  ❌ `chart.updateOptions({ series: [{ data: newData }] })`
@@ -254,6 +278,10 @@ Lean core channel (v7.0): `dist/apexcharts.core.js` + `dist/line.js` + `dist/fea
254
278
  ❌ `xaxis: { categories: ['A','B'] }, series: [{ data: [{ x: 'A', y: 10 }] }]` — categories ignored
255
279
  ✅ Either use categories + simple array, OR use {x,y} without categories
256
280
 
281
+ ### 17. Tier 2 chart type or feature on the default bundle (v8)
282
+ ❌ `import ApexCharts from 'apexcharts'; new ApexCharts(el, { chart: { type: 'sunburst' }, series }).render()`: `render()` rejects and the console names the missing import
283
+ ✅ `import ApexCharts from 'apexcharts'; import 'apexcharts/sunburst'` (or `import ApexCharts from 'apexcharts/full'`)
284
+
257
285
  ---
258
286
 
259
287
  ## API Methods
package/README.md CHANGED
@@ -11,24 +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
+ > | **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) |
16
16
 
17
17
  ## What This Does
18
18
 
19
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.
20
20
 
21
- This skill targets **ApexCharts v7** (v5 and v6 configs keep working, apart from two v7.0 breaking changes the skill documents).
21
+ This skill targets **ApexCharts v8** (v5, v6 and v7 configs keep working, apart from the breaking changes the skill documents).
22
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.
23
+ > **The v8.0 change to know about:** the default bundle no longer carries `unit`/`waffle`, `sunburst`, `violin`, drilldown, waterfall, dumbbell or streamgraph. Import them next to `apexcharts` (`import 'apexcharts/sunburst'`, `import 'apexcharts/features/waterfall'`), or load `apexcharts/full`, which has every chart type and feature. `icicle`, `raincloud`, the highlight filter and the nine v7.0 features (trellis, storyboard, perspectives, ink, canvas renderer, link, measure, history, context menu) were already separate imports. This is the most common v7 to v8 upgrade failure, so the skill leads with it.
24
24
 
25
25
  ### Coverage
26
26
 
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
27
+ - **30 `chart.type` values**: line, area, bar (with its `column` synonym), pie, donut, radialBar, scatter, bubble, heatmap, candlestick, boxPlot, violin, histogram, radar, polarArea, rangeBar, rangeArea, treemap, funnel, pyramid, gauge, sunburst, icicle, unit, waffle, waterfall, dumbbell, streamgraph, raincloud
28
28
  - **Correct data formats** for every chart type
29
29
  - **Common pitfalls** with wrong/correct code examples
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
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, part-of-whole highlight (Highlight filter), raw-sample statistics (Stats), unit-chart shape kit (`apexcharts/unit-shapes`), pictogram glyphs (`apexcharts/pictograms`)
31
+ - **Bundle contents** (which chart types and features the default v8 bundle carries, which are opt-in imports, and the `apexcharts/full` bundle), tree-shaking, and the lean-core script-tag channel
32
32
  - **SSR** (server-side rendering) and hydration
33
33
  - **Framework integration**: React, Vue 3, Angular
34
34
 
@@ -86,7 +86,7 @@ const barCharts = await readFile(referencePath('bar-charts.md'), 'utf8');
86
86
  │ ├── bar-charts.md # bar, column, rangeBar, timeline/Gantt, funnel, pyramid, waterfall, dumbbell
87
87
  │ ├── financial-charts.md # candlestick, boxPlot, violin, histogram, raincloud
88
88
  │ ├── circular-charts.md # pie, donut, polarArea, radialBar, gauge, sunburst, unit, waffle, pictograms
89
- │ ├── grid-charts.md # heatmap, treemap
89
+ │ ├── grid-charts.md # heatmap, treemap, icicle
90
90
  │ ├── radar-charts.md # radar
91
91
  │ ├── feature-platform.md # feature platform + bundle tiers (trellis, plugins, canvas, undo/redo, ...)
92
92
  │ ├── tree-shaking.md # bundle tiers and optimization