apexcharts-skill 4.1.0 → 4.2.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
@@ -18,7 +18,7 @@ v5 and v6 configs keep working, with two v7.0 changes: `plotOptions.bar.borderRa
18
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
19
  Tier 2 features, `import 'apexcharts/features/<name>'` (script tag `dist/features/<name>.js`): radial-targets (8.5, for `plotOptions.radialBar.targets`), 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.
20
20
  `apexcharts/features/all` is the Tier 1 set and pulls in none of them.
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.
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, except `apexcharts/features/ignite-ui` (8.8), which is in no bundle. Gzipped at 8.0.0: default bundle 263,188 B, full bundle 381,135 B.
22
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; a gauge draws without its targets). Unversioned CDN URLs serve the latest 8.x release; pin a 7.x release to stay on 7.
23
23
 
24
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, radial-targets, waterfall, dumbbell, streamgraph, sunburst, violin and icicle are Tier 2 and free.
@@ -52,7 +52,7 @@ Wrappers handle `destroy()` automatically on unmount, accept reactive props, and
52
52
  15. **`violin`** points use a density profile: `data: [{ x, y: { density: [[value, weight], ...], points?: [num] } }]`.
53
53
  16. **`render()` is idempotent**: a repeated `render()` returns the same promise; still `destroy()` before a new instance on the same element. Since v8.1 `render()` after `destroy()` draws that instance afresh, and `updateOptions` / `updateSeries` on a destroyed chart warn and resolve instead of throwing.
54
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.6.0/apexcharts.min.js` or `https://cdn.jsdelivr.net/npm/apexcharts@8.6.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.
55
+ 18. **A script tag names the exact version shown here**: `https://cdn.jsdelivr.net/npm/apexcharts@8.8.1/dist/apexcharts.min.js` (jsDelivr; cdnjs can lag a release by days, so use it only when the environment allows nothing else, with the newest version it lists). 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.
56
56
 
57
57
  ---
58
58
 
@@ -132,7 +132,7 @@ chart.destroy() // cleanup
132
132
 
133
133
  ```
134
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
135
+ apexcharts/full # Full bundle (v8.0): every chart type and feature; no add-on import needed except ignite-ui
136
136
  apexcharts/core # Bare core (must register types + features manually)
137
137
  apexcharts/line # line, area, scatter, bubble, rangeArea
138
138
  apexcharts/bar # bar, column, rangeBar, funnel, pyramid (aliases)
@@ -189,9 +189,12 @@ apexcharts/features/link # crossfilter / linked views (premium)
189
189
  apexcharts/features/measure # measure / delta ruler (premium)
190
190
  apexcharts/features/history # undo/redo (Rewind, premium)
191
191
  apexcharts/features/context-menu # right-click context menu (premium)
192
+
193
+ # IN NO BUNDLE, not even apexcharts/full (from 8.8.0, free, no licence key)
194
+ apexcharts/features/ignite-ui # follow an Ignite UI theme (--ig-* tokens) on the page
192
195
  ```
193
196
  (Cadence easing and real-time streaming are core: no feature import needed.)
194
- 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.
197
+ 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. Exception: `dist/features/ignite-ui.js` (from 8.8.0) is in no bundle, the full one included, so a full-bundle page adds its tag too (after `apexcharts.js` is the recommended order).
195
198
  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.
196
199
 
197
200
  ---
@@ -286,6 +289,10 @@ On Node, plain `apexcharts` also resolves to the SSR bundle (the `node` export c
286
289
  ❌ `import ApexCharts from 'apexcharts'; new ApexCharts(el, { chart: { type: 'sunburst' }, series }).render()`: `render()` rejects and the console names the missing import
287
290
  ✅ `import ApexCharts from 'apexcharts'; import 'apexcharts/sunburst'` (or `import ApexCharts from 'apexcharts/full'`)
288
291
 
292
+ ### 18. Ignite UI theme on the page without the add-on (from 8.8.0)
293
+ ❌ Loading an Ignite UI stylesheet and expecting charts to follow it: without the add-on the `--ig-*` tokens are ignored silently and `theme.designSystem` does nothing. Also ❌ `theme: { mode: 'light' }` on a page with a dark Ignite UI theme: a pinned mode blocks the dark variant.
294
+ ✅ `import 'apexcharts/features/ignite-ui'` once, before the first render (script tag: `dist/features/ignite-ui.js` after `apexcharts.js`), and leave `theme.mode` unset. No extra licence key. Ranking: explicit options > the chart's CSS variables > `--apx-*` tokens > named theme / explicit palette > `--ig-*` > defaults. `theme: { designSystem: false }` turns it off for one chart; `theme: { tokens: false }` turns off `--apx-*` and Ignite UI together. After swapping the Ignite UI stylesheet, call `chart.refreshTokens()`. New core tokens in 8.8.0: `--apx-font-family`, `--apx-radius-factor`.
295
+
289
296
  ---
290
297
 
291
298
  ## API Methods
@@ -308,6 +315,7 @@ On Node, plain `apexcharts` also resolves to the SSR bundle (the `node` export c
308
315
  | `clearAnnotations()` | Remove all. |
309
316
  | `dataURI()` | Export as image (needs features/exports). |
310
317
  | `exportToCSV()` | Export as CSV (needs features/exports). |
318
+ | `refreshTokens()` | Re-read `--apx-*` tokens (and `--ig-*` with the ignite-ui add-on) after a CSS change that does not render. From 8.8.0 `ApexCharts.exec('<chart.id>', 'refreshTokens')` reaches it too and returns the update Promise (same as `ApexCharts.getChartByID(id).refreshTokens()`). |
311
319
 
312
320
  ### Static Methods
313
321
 
package/README.md CHANGED
@@ -27,7 +27,7 @@ This skill targets **ApexCharts v8** (v5, v6 and v7 configs keep working, apart
27
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, part-of-whole highlight (Highlight filter), radialBar and gauge targets (8.5), raw-sample statistics (Stats), unit-chart shape kit (`apexcharts/unit-shapes`), pictogram glyphs (`apexcharts/pictograms`)
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), radialBar and gauge targets (8.5), raw-sample statistics (Stats), unit-chart shape kit (`apexcharts/unit-shapes`), pictogram glyphs (`apexcharts/pictograms`), and the Ignite UI theming add-on (`apexcharts/features/ignite-ui`, 8.8.0)
31
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
package/SKILL.md CHANGED
@@ -9,14 +9,14 @@ description: >
9
9
  correct data formats, lifecycle, formatters, tree-shaking, SSR, and the feature
10
10
  platform (plugins, canvas renderer, custom series, small multiples, undo/redo,
11
11
  shareable views, themes, crossfilter, annotation authoring, storyboard, streaming,
12
- drilldown, highlight filter, radialBar targets). Knows which chart types and features ship in the
12
+ drilldown, highlight filter, radialBar targets, Ignite UI theming). Knows which chart types and features ship in the
13
13
  default v8 bundle and which need an explicit import or the full bundle. In React /
14
14
  Vue / Angular projects, prefer the framework wrapper packages
15
15
  (`react-apexcharts`, `vue3-apexcharts`, `ng-apexcharts`) over the core API.
16
16
  metadata:
17
17
  author: ApexCharts
18
- version: "4.1.0"
19
- library_version: "8.7.0"
18
+ version: "4.2.0"
19
+ library_version: "8.8.1"
20
20
  category: data-visualization
21
21
  tags: [charts, visualization, javascript, typescript, svg, apexcharts]
22
22
  docs: https://apexcharts.com/docs/
@@ -62,7 +62,7 @@ metadata:
62
62
  >
63
63
  > Waterfall and dumbbell draw through rangeBar and streamgraph through rangeArea, which the default bundle has, so next to it you add only the feature. Storyboard registers Perspectives, so importing both costs no more than Storyboard alone.
64
64
  >
65
- > **The full bundle** (v8.0) loads everything at once: `import ApexCharts from 'apexcharts/full'` in a bundler, `dist/apexcharts.full.min.js` from a script tag. It carries every chart type and feature plus the unit-shapes and pictograms catalogs, and needs no add-on import (premium items stay license-gated). Gzipped at 8.0.0: default bundle 263,188 B, full bundle 381,135 B.
65
+ > **The full bundle** (v8.0) loads everything at once: `import ApexCharts from 'apexcharts/full'` in a bundler, `dist/apexcharts.full.min.js` from a script tag. It carries every chart type and feature plus the unit-shapes and pictograms catalogs, and needs no add-on import except the Ignite UI add-on (`apexcharts/features/ignite-ui`, v8.8), which is in no bundle (premium items stay license-gated). Gzipped at 8.0.0: default bundle 263,188 B, full bundle 381,135 B.
66
66
  >
67
67
  > **Nothing fails silently**: when the import is missing, the console names it. 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; a gauge draws without its targets). Unversioned CDN URLs serve the latest 8.x release; pin a 7.x release to stay on 7, where unit, sunburst, violin, drilldown, waterfall, dumbbell and streamgraph are still in the default bundle. The split began in v7.0, which moved the nine features in the last table row out of a default bundle that had carried every feature. See `references/tree-shaking.md` for the full tier table and `references/feature-platform.md` for each feature's API.
68
68
  >
@@ -95,7 +95,7 @@ metadata:
95
95
  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.
96
96
  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.
97
97
  21. **Unknown names fail loudly (v7.9).** An unknown `chart.type` throws when the chart is constructed or updated, and the message names the closest real type (`'column'` is valid, a synonym for `'bar'`; `''` and `null` draw a line chart). An unknown top-level option key is kept but never read. Numeric-string axis bounds such as `yaxis.min: '10'` work, and a bound that cannot be parsed is ignored (the axis scales to the data). Both cases log a console warning, except in `apexcharts.min.js` (the minified script-tag file), which strips it. Since v8.1 the CommonJS builds (the `*.common.js` files `require('apexcharts')` loads) keep their warnings, and every build, `apexcharts.min.js` included, prints the warning that names a missing Tier 2 import.
98
- 22. **A script tag names the exact version shown here**: `https://cdnjs.cloudflare.com/ajax/libs/apexcharts/8.6.0/apexcharts.min.js` or `https://cdn.jsdelivr.net/npm/apexcharts@8.6.0/dist/apexcharts.min.js`. Never write a 3.x or 4.x URL such as `.../apexcharts/3.54.1/...`: those are releases from 2024 and early 2025, and this skill does not describe them. If the environment only accepts an older release, use the newest one it accepts with the same major version as these URLs. See `references/framework-wrappers.md` for add-on files on each CDN.
98
+ 22. **A script tag names the exact version shown here**: `https://cdn.jsdelivr.net/npm/apexcharts@8.8.1/dist/apexcharts.min.js`. jsDelivr serves each release from npm as soon as it is published; cdnjs mirrors releases too but can lag by days, so use it only when the environment allows nothing else, with the newest version it lists. Never write a 3.x or 4.x URL such as `.../apexcharts/3.54.1/...`: those are releases from 2024 and early 2025, and this skill does not describe them. If the environment only accepts an older release, use the newest one it accepts with the same major version as these URLs. See `references/framework-wrappers.md` for add-on files on each CDN.
99
99
 
100
100
  ---
101
101
 
@@ -191,7 +191,7 @@ A branch may omit its own `y` and be the sum of its children *(fixed in v7.6 for
191
191
  # Default bundle (the standard chart types plus the Tier 1 features; see the box at the top)
192
192
  import ApexCharts from 'apexcharts'
193
193
 
194
- # Full bundle (v8.0): every chart type and feature, plus the unit-shapes and pictograms catalogs. No add-on needed.
194
+ # Full bundle (v8.0): every chart type and feature, plus the unit-shapes and pictograms catalogs. No add-on needed, except ignite-ui (in no bundle).
195
195
  import ApexCharts from 'apexcharts/full'
196
196
 
197
197
  # Bare core (no chart types, no optional features — must register manually)
@@ -254,6 +254,7 @@ import 'apexcharts/features/dumbbell' # (v7.1) dumbbell chart type (Tier
254
254
  import 'apexcharts/features/streamgraph' # (v7.1) streamgraph chart type (Tier 2 since v8)
255
255
  import 'apexcharts/features/highlight-filter' # (v7.9) Part-of-whole highlight, highlightFilter (premium)
256
256
  import 'apexcharts/features/radial-targets' # (v8.5) plotOptions.radialBar.targets on radialBar / gauge (free)
257
+ import 'apexcharts/features/ignite-ui' # (v8.8) Follow an Ignite UI theme on the page (no extra licence key). In NO bundle, not even full
257
258
  import 'apexcharts/features/trellis' # (v7.0) Small multiples (premium)
258
259
  import 'apexcharts/features/storyboard' # Scrollytelling (premium; registers perspectives)
259
260
  import 'apexcharts/features/perspectives' # Shareable view state (premium)
@@ -643,6 +644,25 @@ await chart.appendData([{ data: [newPoint] }])
643
644
  await chart.updateOptions({ title: { text: 'New Title' } })
644
645
  ```
645
646
 
647
+ ### Pitfall 17: Ignite UI theme on the page, but the chart ignores it *(from apexcharts 8.8.0)*
648
+
649
+ Ignite UI theming is an opt-in add-on. Without it the page's `--ig-*` tokens are ignored, with no error and no warning, and `theme.designSystem` does nothing. It is in no bundle, `apexcharts/full` included.
650
+
651
+ ❌ **WRONG**: Ignite UI stylesheet loaded, no add-on, and a pinned mode:
652
+ ```js
653
+ import ApexCharts from 'apexcharts'
654
+ new ApexCharts(el, { theme: { mode: 'light' }, series }).render() // stays light under a dark Ignite UI theme
655
+ ```
656
+
657
+ ✅ **CORRECT**: import the add-on once, before the first render, and leave `theme.mode` unset so the theme's dark variant (`--ig-theme-variant`) can pick the mode:
658
+ ```js
659
+ import ApexCharts from 'apexcharts'
660
+ import 'apexcharts/features/ignite-ui' // no extra licence key
661
+ new ApexCharts(el, { series }).render()
662
+ ```
663
+
664
+ Script tags: `dist/features/ignite-ui.js` after `dist/apexcharts.js`. A chart rendered before the add-on loaded picks it up on its next update, resize or `chart.refreshTokens()`. Anything you set outranks the theme (see "Ignite UI add-on" in `references/feature-platform.md`).
665
+
646
666
  ---
647
667
 
648
668
  ## 7. API Methods Quick Reference
@@ -687,7 +707,7 @@ await chart.updateOptions({ title: { text: 'New Title' } })
687
707
  | `chart.history.undo() / redo() / jump(id) / transaction(fn)` | history | Undo/redo over the command journal. |
688
708
  | `chart.perspectives.capture() / toURL() / apply(token)` | perspectives | Serialize / restore the exact view. |
689
709
  | `chart.getActiveRenderer()` | renderer-canvas | Returns `'svg' \| 'canvas'` currently in use. |
690
- | `chart.refreshTokens()` | facet | Re-read `--apx-*` CSS custom properties. |
710
+ | `chart.refreshTokens()` | facet | Re-read `--apx-*` CSS custom properties (and, with the `ignite-ui` add-on, the page's `--ig-*` tokens). Call it after a stylesheet swap that does not trigger a render, such as an Ignite UI light/dark switch. |
691
711
  | `chart.startMeasure() / stopMeasure() / clearMeasures()` | measure | Drive the measure ruler from code. |
692
712
  | `chart.storyboard.bind({ beats }) / goTo() / unbind()` | storyboard | Scroll-driven choreography. |
693
713
  | `chart.drillDown(id) / drillUp() / drillToRoot()` | drilldown | Navigate the drill-down hierarchy. |
@@ -792,6 +812,7 @@ Every feature below is off by default in config terms. The **Tier** column is ab
792
812
  | **Weave** (plugins) | 1 | `apexcharts/features/weave` | Publish reusable chart plugins against a stable `ApexCharts.registerPlugin({ name, setup })` API; activate per chart with `plugins: [{ name }]`. Contract is at **v7** (v8.1): `info`/`categories`/`markDerived` (v2), `reserve` (v3), `pointer` (v4), `claim`/`drawn`/`declare`/`can` (v6), `highlight()` (v7), and the capabilities `observations` and `scale-orientation` (8.0.1) and `radial-scales` (8.5). Declare the **lowest** `apiVersion` you can run on and feature-detect the rest: a host older than the version you declare skips your plugin outright. |
793
813
  | **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`. |
794
814
  | **Facet** (themes/tokens) | 1 | `apexcharts/features/facet` | `theme: { follow: 'os', name }`, `--apx-*` CSS custom props, `ApexCharts.registerTheme`. |
815
+ | **Ignite UI theming** | add-on | `apexcharts/features/ignite-ui` | *(from 8.8.0, no extra licence key, not a premium feature)* Charts follow an Ignite UI theme on the page: series colours, text, grid, tooltips, menus, font, and light or dark from `--ig-theme-variant` when `theme.mode` is unset. In no bundle, `full` included; script tag `dist/features/ignite-ui.js` after `apexcharts.js`. Ranks below everything you set; `theme: { designSystem: false }` turns it off per chart. |
795
816
  | **Morph** | 1 | `apexcharts/features/morph` | Animated transitions between chart types. |
796
817
  | **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. |
797
818
  | **Cadence** (easing) | core | none | `chart.animations.easing` accepts a named curve, cubic-bezier array, or function; `ApexCharts.registerEasing`. |
@@ -823,7 +844,7 @@ For detailed chart-family-specific options, data format variants, and full worki
823
844
  | Pie, Donut, Polar Area, Radial Bar, Gauge, Sunburst, Unit, Waffle, Pictograms | `references/circular-charts.md` |
824
845
  | Heatmap (incl. cell shapes), Treemap, Icicle | `references/grid-charts.md` |
825
846
  | Radar | `references/radar-charts.md` |
826
- | Feature platform (small multiples, plugins, canvas, undo/redo, themes, crossfilter, storyboard, ...) | `references/feature-platform.md` |
847
+ | Feature platform (small multiples, plugins, canvas, undo/redo, themes, `--apx-*` tokens, Ignite UI theming, crossfilter, storyboard, ...) | `references/feature-platform.md` |
827
848
  | Bundle tiers, Tree-shaking, Bundle optimization | `references/tree-shaking.md` |
828
849
  | Server-side rendering, Hydration | `references/ssr.md` |
829
850
  | React, Vue, Angular integration | `references/framework-wrappers.md` |
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "apexcharts-skill",
3
- "version": "4.1.0",
4
- "description": "AI coding skill for ApexCharts.js — structured reference docs that help AI assistants (Claude, Cursor, Copilot, etc.) generate correct ApexCharts code.",
3
+ "version": "4.2.0",
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",
7
7
  "ai",
@@ -10,7 +10,7 @@ Whether you need an import depends on the feature's or chart type's **tier**. Th
10
10
  - **Tier 2 is not in the default bundle.** Each item needs its own import next to it (or its script tag), or the full bundle:
11
11
  - features, `import 'apexcharts/features/<name>'` (script tag `dist/features/<name>.js`): `trellis`, `storyboard`, `perspectives`, `ink`, `renderer-canvas`, `link`, `measure`, `history`, `context-menu`, `highlight-filter` *(7.9)*, since 8.0 `drilldown`, `waterfall`, `dumbbell` and `streamgraph` (those three are chart types whose renderers, rangeBar and rangeArea, are in the default bundle, so next to it you add only the feature), and `radial-targets` *(8.5)*;
12
12
  - chart types: `unit` / `waffle` (`apexcharts/unit`, `dist/unit.js`), `sunburst`, `violin`, `icicle` (`apexcharts/<type>`, `dist/<type>.js`) and `raincloud` (`apexcharts/raincloud`; script tags `dist/violin.js`, then `dist/features/raincloud.js`).
13
- - **The full bundle**, `import ApexCharts from 'apexcharts/full'` (script tag `dist/apexcharts.full.min.js`, new in 8.0), has every chart type and feature and needs no add-on import. Premium items still watermark there.
13
+ - **The full bundle**, `import ApexCharts from 'apexcharts/full'` (script tag `dist/apexcharts.full.min.js`, new in 8.0), has every chart type and feature and needs no add-on import. The one exception is the Ignite UI add-on (`apexcharts/features/ignite-ui`, 8.8), which is in no bundle. Premium items still watermark there.
14
14
 
15
15
  ```js
16
16
  import ApexCharts from 'apexcharts'
@@ -314,7 +314,7 @@ if (h) { h.update([{ series: 'Revenue', values: [8, 4, 20] }]); h.release() }
314
314
 
315
315
  Declared in the shipped `apexcharts.d.ts`: `ApexPluginAPI` (the `setup(api)` facade), `ApexPluginSeries`, `ApexPluginScales`, `ApexPluginLayer`, `ApexPluginHook`, `ApexPluginPayload`, for the v6 additions `ApexPluginChartInfo` (`api.info`), `ApexPluginPointerEvent` (the `pointer` payload), `ApexPluginClaim` (`{ release(), update(entries) }`) and `ApexDrawnItem` (a `drawn()` row), and, added in 8.x, `ApexPluginHighlight` and `ApexPluginHighlightEntry` (`highlight()`), `ApexRadialScales` (`radialScales`) and `ApexDashPattern` (dash values).
316
316
 
317
- ### Typing gap (still present at 8.7.0)
317
+ ### Typing gap (still present at 8.8.1)
318
318
 
319
319
  `api.categories` and `data[].raw` are real at runtime (both shipped in v2) but are **not declared** in the shipped `apexcharts.d.ts`: `ApexPluginAPI` has no `categories` member and `ApexPluginSeries` is typed as `{ name?, hidden, color?, points, observations }`, without `raw`. TypeScript rejects both. Cast the facade where you need them, and do not read the absence as "removed".
320
320
 
@@ -466,6 +466,43 @@ const options = {
466
466
 
467
467
  **Built-in palettes and the mode (8.7).** `theme.palette` (`'palette1'` to `'palette10'`) that you name, in the options, `window.Apex` or an `updateOptions` payload, is kept in either mode. Left unset, the palette follows the mode: `'palette4'` in dark mode, `'palette1'` otherwise. Before 8.7 a named `'palette1'` in dark mode (or `'palette4'` in light) was swapped for the mode's default.
468
468
 
469
+ **Font and corner tokens (from 8.8.0).** `--apx-font-family` sets the chart font and `--apx-radius-factor` scales the fixed corner radii (unset or `1` keeps today's radii). Both are core tokens like the others: no add-on needed. A token font that is still loading is read again once it has loaded, and the labels re-lay out.
470
+
471
+ ### Ignite UI add-on (from 8.8.0)
472
+
473
+ `import 'apexcharts/features/ignite-ui'`: an opt-in add-on that needs **no extra licence key** and is not a premium feature. It is in **no** bundle, `apexcharts/full` included, because it changes how a page's charts look; only a page that asks for it gets it.
474
+
475
+ With it loaded and an Ignite UI theme on the page, charts follow the theme's `--ig-*` tokens: series colours from its colour families, text, gridlines and overlay colours, tooltips and menus, the font, and (when `theme.mode` is unset) light or dark from `--ig-theme-variant`. Without it the `--ig-*` tokens are ignored, with no error, and `theme.designSystem` does nothing; the `--apx-*` tokens work either way.
476
+
477
+ ```js
478
+ // bundler: once per app, before the first render
479
+ import ApexCharts from 'apexcharts'
480
+ import 'apexcharts/features/ignite-ui'
481
+
482
+ new ApexCharts(el, {
483
+ // leave theme.mode unset so a dark Ignite UI theme can turn the chart dark
484
+ theme: {
485
+ designSystem: true, // default; false turns the Ignite UI layer off for this chart
486
+ tokens: true, // default; false turns off the --apx-* tokens AND the Ignite UI layer
487
+ },
488
+ series,
489
+ }).render()
490
+ ```
491
+
492
+ ```html
493
+ <!-- script tags: the add-on after the core -->
494
+ <script src=".../dist/apexcharts.js"></script>
495
+ <script src=".../dist/features/ignite-ui.js"></script>
496
+ ```
497
+
498
+ **Ranking**, highest first: explicit options > the chart's own CSS variables > `--apx-*` tokens > a named theme (`theme.name`) or an explicit `theme.palette` > the Ignite UI `--ig-*` tokens > built-in defaults. `colorBlindMode` and `monochrome` keep their own colours.
499
+
500
+ - **Load order.** Import it before the first render. A chart rendered earlier picks it up on its next update, resize or `chart.refreshTokens()`.
501
+ - **Stylesheet swap.** A light/dark switch that replaces the Ignite UI stylesheet does not trigger a render: call `await chart.refreshTokens()` once the new sheet has loaded (`link.onload`).
502
+ - **Fonts.** The chart takes `--ig-font-family` (below `--apx-font-family`); a web font that is still loading is read again once it has loaded, so make sure the page actually loads the font face.
503
+ - **`chart.injectStyleSheet: false`.** In the light DOM, link `dist/apexcharts-ignite-ui.css` after `dist/apexcharts.css`.
504
+ - **Other products.** The add-on registers the Ignite UI adapter shared by the Apex family, so ApexTree (2.3.0 or later), ApexSankey (1.14.0) and ApexGantt (3.21.0) on the page follow the theme too (from a script tag, only once `apexcharts.js` has loaded). Each of them also ships its own add-on (`apextree/ignite-ui`, `apexsankey/ignite-ui`, `apexgantt/ignite-ui`) for a page without this one. ApexMaps takes its own add-on, `apexmaps/ignite-ui` (1.3.0). Apex Grid's add-on, `apex-grid/ignite-ui`, exists only in the 4.0 beta on the npm `next` tag (`npm install apex-grid@next`, 4.0.0-beta.2 at the time of writing): a plain `npm install apex-grid` gets 3.6.0, which has no Ignite UI support.
505
+
469
506
  ---
470
507
 
471
508
  ## Cadence: pluggable easing
@@ -24,6 +24,7 @@ The wrappers' standard components load the default ApexCharts bundle, which sinc
24
24
  | `raincloud` | `import 'apexcharts/raincloud'` |
25
25
  | `waterfall`, `dumbbell`, `streamgraph`, drilldown or another Tier 2 feature | `import 'apexcharts/features/<name>'` (`highlightFilter` is `features/highlight-filter`, `plotOptions.radialBar.targets` is `features/radial-targets`) |
26
26
  | Everything | `import 'apexcharts/full'`, which reuses the default bundle the wrapper already loads |
27
+ | An Ignite UI theme on the page *(from 8.8.0)* | `import 'apexcharts/features/ignite-ui'` (no extra licence key; in no bundle, `full` included). Leave `theme.mode` unset so the theme's dark variant can apply; after swapping the Ignite UI stylesheet call `ApexCharts.exec('<chart.id>', 'refreshTokens')` (from 8.8.0; returns the update Promise, same as `ApexCharts.getChartByID('<chart.id>').refreshTokens()`) |
27
28
 
28
29
  ```jsx
29
30
  import Chart from 'react-apexcharts'
@@ -242,7 +243,7 @@ updateChart() {
242
243
  <div id="chart"></div>
243
244
 
244
245
  <!-- CDN, pinned to a release -->
245
- <script src="https://cdnjs.cloudflare.com/ajax/libs/apexcharts/8.6.0/apexcharts.min.js"></script>
246
+ <script src="https://cdn.jsdelivr.net/npm/apexcharts@8.8.1/dist/apexcharts.min.js"></script>
246
247
 
247
248
  <script>
248
249
  const options = {
@@ -260,18 +261,16 @@ updateChart() {
260
261
 
261
262
  ```html
262
263
  <!-- default bundle -->
263
- <script src="https://cdnjs.cloudflare.com/ajax/libs/apexcharts/8.6.0/apexcharts.min.js"></script>
264
+ <script src="https://cdn.jsdelivr.net/npm/apexcharts@8.8.1/dist/apexcharts.min.js"></script>
264
265
  <!-- one add-on next to it: an opt-in chart type -->
265
- <script src="https://cdnjs.cloudflare.com/ajax/libs/apexcharts/8.6.0/sunburst.js"></script>
266
+ <script src="https://cdn.jsdelivr.net/npm/apexcharts@8.8.1/dist/sunburst.js"></script>
266
267
 
267
- <!-- or the full bundle: every chart type and feature, no add-ons -->
268
- <script src="https://cdnjs.cloudflare.com/ajax/libs/apexcharts/8.6.0/apexcharts.full.min.js"></script>
269
-
270
- <!-- the same files on jsDelivr keep the dist/ folder in the path -->
271
- <script src="https://cdn.jsdelivr.net/npm/apexcharts@8.6.0/dist/apexcharts.min.js"></script>
272
- <script src="https://cdn.jsdelivr.net/npm/apexcharts@8.6.0/dist/sunburst.js"></script>
268
+ <!-- or the full bundle: every chart type and feature, no add-ons (except ignite-ui, which is in no bundle) -->
269
+ <script src="https://cdn.jsdelivr.net/npm/apexcharts@8.8.1/dist/apexcharts.full.min.js"></script>
273
270
  ```
274
271
 
272
+ jsDelivr serves each release from npm as soon as it is published, and keeps the `dist/` folder in the path. cdnjs mirrors the same files without `dist/` (`https://cdnjs.cloudflare.com/ajax/libs/apexcharts/<version>/apexcharts.min.js`) but can lag a release by days: use it only when the environment allows nothing else, with the newest version it lists.
273
+
275
274
  **Always write an exact version**, as above, never a major channel (`apexcharts@<major>`) or the unversioned URL: sandboxes that host generated pages (artifacts, previews) commonly reject a URL without an exact version, and an exact pin keeps a page working when the next major changes what the default bundle holds. **Never write a 3.x or 4.x URL** (`.../apexcharts/3.54.1/...`): those are releases from 2024 and early 2025, and this skill does not describe them. If an environment only accepts an older release, use the newest one it accepts with the same major version as the URLs above, since this skill applies to that whole major. To stay on an older major, pin a release from it. The other add-ons are `unit.js`, `violin.js`, `icicle.js` and `features/<name>.js` beside `apexcharts.min.js`, and may load before or after the main script.
276
275
 
277
276
  ---
@@ -52,7 +52,7 @@ ApexCharts supports five import strategies with different bundle sizes:
52
52
  | Strategy | Import | Includes |
53
53
  |---|---|---|
54
54
  | Default bundle | `import ApexCharts from 'apexcharts'` | line, area, scatter, bubble, rangeArea, bar, column, rangeBar, candlestick, boxPlot, pie, donut, polarArea, radialBar, radar, heatmap, treemap (plus the funnel, pyramid, histogram and gauge aliases), and the **Tier 1** features. **Not** the Tier 2 chart types or features *(v8.0)*. |
55
- | Full bundle *(v8.0)* | `import ApexCharts from 'apexcharts/full'` / `dist/apexcharts.full.min.js` | Every chart type and every feature, Tier 2 included, plus the unit-shapes and pictograms catalogs. Premium items stay licence-gated. |
55
+ | Full bundle *(v8.0)* | `import ApexCharts from 'apexcharts/full'` / `dist/apexcharts.full.min.js` | Every chart type and every feature, Tier 2 included, plus the unit-shapes and pictograms catalogs. Not the Ignite UI add-on *(8.8)*, which is in no bundle. Premium items stay licence-gated. |
56
56
  | Per-type entry | `import ApexCharts from 'apexcharts/line'` | Specific chart family + core, plus any feature the type needs (no legend, toolbar, exports or other optional features) |
57
57
  | Bare core | `import ApexCharts from 'apexcharts/core'` | Core class only — must manually register everything |
58
58
  | Lean core, no bundler *(v7.0)* | `<script src=".../dist/apexcharts.core.js">` | Script-tag equivalent of bare core, assembled from separate tags. See below. |
@@ -123,7 +123,7 @@ import 'apexcharts/bar' // side-effect: registers bar types onto the same clas
123
123
  Two questions decide whether you need a `features/*` import:
124
124
 
125
125
  1. **Which entry point did you start from?** `apexcharts/core` and the per-type entries carry no optional features (a per-type entry brings only the feature its own type needs), so every feature you want needs its import.
126
- 2. **Which tier is the feature?** Tier 1 is in the default `apexcharts` bundle. **Tier 2 is not**, so it needs its import there too. Only the full bundle (`apexcharts/full`, *v8.0*) has every feature.
126
+ 2. **Which tier is the feature?** Tier 1 is in the default `apexcharts` bundle. **Tier 2 is not**, so it needs its import there too. Only the full bundle (`apexcharts/full`, *v8.0*) has every Tier 2 feature; the Ignite UI add-on is in no bundle.
127
127
 
128
128
  ### Tier 1: in the default `apexcharts` bundle
129
129
 
@@ -170,6 +170,8 @@ Required whatever entry point you used, the default `apexcharts` bundle included
170
170
 
171
171
  Storyboard registers Perspectives, so importing both costs no more than Storyboard alone.
172
172
 
173
+ **In no bundle at all: the Ignite UI add-on *(from 8.8.0)*.** `import 'apexcharts/features/ignite-ui'` (script tag `dist/features/ignite-ui.js`, after `apexcharts.js`) makes charts follow an Ignite UI theme on the page. Unlike the Tier 2 features it is not in `apexcharts/full` either, since it changes how the page's charts look: only a page that imports it gets it. No extra licence key, 3.6 KB gzip (at 8.8.1). Without it the page's `--ig-*` tokens are ignored silently (no warning) and `theme.designSystem` does nothing. See "Ignite UI add-on" in `feature-platform.md`.
174
+
173
175
  **`apexcharts/features/all` does not include Tier 2**, by design: upstream has a tier-budget test that fails the build if a Tier 2 feature reappears in it.
174
176
 
175
177
  **Nothing fails silently on Tier 2.** Each module warns in the console when its configuration is present but the module is not, and the warning names the ESM import, the script-tag file and `apexcharts.full.min.js`. Where the chart can still draw something sensible it does and says what it did instead: a trellis renders as a single chart, `renderer: 'canvas'` falls back to SVG, a radialBar or gauge draws its dial without `plotOptions.radialBar.targets`.
@@ -190,7 +192,7 @@ Tree-shaking only ever helped people with a build step. A page using a `<script>
190
192
 
191
193
  The opt-in chart types have their own files rather than `features/*` ones: `dist/unit.js`, `dist/sunburst.js`, `dist/violin.js` and `dist/icicle.js`, and a raincloud page loads `dist/violin.js` then `dist/features/raincloud.js`. On `apexcharts.core.js`, violin (and so raincloud) also needs `dist/bar.js`.
192
194
 
193
- Every Tier 2 feature has a `dist/features/<name>.js` artifact for this channel too, and a default-bundle page still needs it. Add-on tags may load before or after the ApexCharts script *(v8.0)*. `dist/apexcharts.full.min.js` needs none of them.
195
+ Every Tier 2 feature has a `dist/features/<name>.js` artifact for this channel too, and a default-bundle page still needs it. Add-on tags may load before or after the ApexCharts script *(v8.0)*. `dist/apexcharts.full.min.js` needs none of them. The exception is `dist/features/ignite-ui.js` *(from 8.8.0)*: it is in no bundle, `full` included, so add its tag to a full-bundle page too if that page should follow an Ignite UI theme. Like the other add-ons it may load before or after the ApexCharts script; after `apexcharts.js` is the recommended order.
194
196
 
195
197
  ```html
196
198
  <script src=".../dist/apexcharts.js"></script>