` covering the chart container.
-
-This replaces the previous `canvasClip` / `canvasClipDeps` callbacks (and skipped HTML entirely) with a single declarative value. The `clip` snippet is still accepted for advanced/custom SVG content.
-
-`RectClipPath`, `CircleClipPath`, and `GeoClipPath` are rewritten on top of this — they each compute a path string (d3-geo-path already emits one natively) and pass it through. All three now support `` layers in addition to `
` and ``.
-
-Note: `clip-path: path()` requires Chrome 88+, Safari 13.1+, Firefox 118+.
diff --git a/.changeset/clippath-invert.md b/.changeset/clippath-invert.md
deleted file mode 100644
index 4f9646697..000000000
--- a/.changeset/clippath-invert.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': minor
----
-
-feat(ClipPath, RectClipPath, CircleClipPath, GeoClipPath): Add `invert` prop to render content *outside* the clip shape (cutouts/masks) across SVG, Canvas, and HTML layers
diff --git a/.changeset/component-tree.md b/.changeset/component-tree.md
deleted file mode 100644
index f66ebd7da..000000000
--- a/.changeset/component-tree.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-'layerchart': minor
----
-
-feat: Unified component tree for Canvas rendering with proper Group transform scoping. Fixes #662
-
-- New `registerComponentNode({ name, kind, canvasRender })` API replaces both `registerCanvasComponent` and the `InsideCompositeMark` boolean context with a single unified component tree.
-- Canvas rendering now walks the tree recursively with proper `save()`/`restore()` scoping, fixing Group transforms (translate, opacity) leaking to sibling components instead of only affecting children.
-- Composite marks (Area, Threshold, Hull, Labels, Grid) register as `'composite-mark'` nodes, automatically preventing child marks from registering with the chart without manual `_skipRegistration` props.
-- Removed `retainState` and `name` from `ComponentRender` type — Group's transform scoping is handled by tree position, and component names live on the tree node.
diff --git a/.changeset/connector-orientation-step-curves.md b/.changeset/connector-orientation-step-curves.md
deleted file mode 100644
index fde92ec78..000000000
--- a/.changeset/connector-orientation-step-curves.md
+++ /dev/null
@@ -1,8 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Connector, Link): Orient d3 step curves by `orientation`
-
-- Added `orientation?: 'horizontal' | 'vertical'` prop to `Connector` (defaults to `'horizontal'`). `Link` forwards its own orientation so step curves step along the natural flow direction.
-- `curveStep`, `curveStepBefore`, and `curveStepAfter` now step along `y` in vertical orientation instead of always stepping along `x`.
diff --git a/.changeset/connector-swoop-type.md b/.changeset/connector-swoop-type.md
deleted file mode 100644
index 7c50e58fd..000000000
--- a/.changeset/connector-swoop-type.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-'layerchart': minor
----
-
-feat(Connector): Add `'swoop'` connector type
-
-New `'swoop'` connector type draws a circular arc between source and target, equivalent to ObservablePlot's Arrow `bend` option. Configured via a new `bend` prop (degrees, default `22.5`) — positive bends right (clockwise from source to target), negative bends left, `0` draws a straight line. Works in both cartesian and radial modes; `Link` forwards it automatically.
diff --git a/.changeset/context-bind-state-rename.md b/.changeset/context-bind-state-rename.md
deleted file mode 100644
index 4a472013f..000000000
--- a/.changeset/context-bind-state-rename.md
+++ /dev/null
@@ -1,18 +0,0 @@
----
-'layerchart': major
----
-
-breaking(BrushContext|TransformContext): Rename `bind:brushContext` / `bind:transformContext` to `bind:state`
-
-Both `BrushContext` and `TransformContext` now use `bind:state` instead of their previous named bindings. Additionally, properties on `ChartState` have been renamed:
-
-- `chartContext.brushContext` → `chartContext.brushState`
-- `chartContext.transformContext` → `chartContext.transformState`
-
-```diff
--
-+
-
--
-+
-```
diff --git a/.changeset/cozy-moments-work.md b/.changeset/cozy-moments-work.md
deleted file mode 100644
index ea1aab111..000000000
--- a/.changeset/cozy-moments-work.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Highlight|TooltipContext): Support xInterval / yInterval
diff --git a/.changeset/crazy-ads-appear.md b/.changeset/crazy-ads-appear.md
deleted file mode 100644
index 2b29de706..000000000
--- a/.changeset/crazy-ads-appear.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(TooltipContext): Fix `band` mode regression when both x/y are scaleBand (ex. punchcard chart)
diff --git a/.changeset/crazy-friends-talk.md b/.changeset/crazy-friends-talk.md
deleted file mode 100644
index 86d37d715..000000000
--- a/.changeset/crazy-friends-talk.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-'layerchart': minor
----
-
-- Made `ForceSimulation` generic over its nodes and links, i.e. `ForceSimulation.`
-- Exposed `links` via `children` snippet of `ForceSimulation`.
diff --git a/.changeset/cruel-cameras-begin.md b/.changeset/cruel-cameras-begin.md
deleted file mode 100644
index 5b14ebd06..000000000
--- a/.changeset/cruel-cameras-begin.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-breaking(Treemap): Remove `selected` prop
diff --git a/.changeset/cruel-rats-taste.md b/.changeset/cruel-rats-taste.md
deleted file mode 100644
index 076131b31..000000000
--- a/.changeset/cruel-rats-taste.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-feat(Spline): Add `value` to `startContent` and `endContent` snippets to easily access the `x` and `y` data values
diff --git a/.changeset/curly-lies-write.md b/.changeset/curly-lies-write.md
deleted file mode 100644
index 4c9009fbe..000000000
--- a/.changeset/curly-lies-write.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Canvas): Only apply text/font properties to canvas to improve performance
diff --git a/.changeset/curly-papers-follow.md b/.changeset/curly-papers-follow.md
deleted file mode 100644
index d4bad742a..000000000
--- a/.changeset/curly-papers-follow.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(AnnotationRange|TooltipContext|Highlight): Fix using interval scales with reversed data (ex. xReverse)
diff --git a/.changeset/cute-donkeys-greet.md b/.changeset/cute-donkeys-greet.md
deleted file mode 100644
index 68b3ba32a..000000000
--- a/.changeset/cute-donkeys-greet.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(SimplifiedCharts): Properly handle `legend` prop as object when determining bottom padding
diff --git a/.changeset/cyan-cougars-occur.md b/.changeset/cyan-cougars-occur.md
deleted file mode 100644
index cc2bfe564..000000000
--- a/.changeset/cyan-cougars-occur.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Axis): Fix display of axis labels
diff --git a/.changeset/dark-pandas-start.md b/.changeset/dark-pandas-start.md
deleted file mode 100644
index 1e6cec44b..000000000
--- a/.changeset/dark-pandas-start.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': minor
----
-
-Decoupled `ForceSimulation` from `ChartContext`, by taking nodes and links via `data` prop.
diff --git a/.changeset/dasharray-prop.md b/.changeset/dasharray-prop.md
deleted file mode 100644
index 5fb288a0e..000000000
--- a/.changeset/dasharray-prop.md
+++ /dev/null
@@ -1,11 +0,0 @@
----
-'layerchart': minor
----
-
-feat(Line, Rect, Circle, Text): Multi-layer compatible `dashArray` and inline color props
-
-- Added a typed `dashArray` prop to `Line`, `Rect`, and `Circle`. Accepts a number, array, or SVG-style string and maps to `stroke-dasharray` (SVG), `setLineDash` (Canvas), and either `repeating-linear-gradient` (HTML lines) or `border-style: dashed` (HTML borders). Previously dashed styling was SVG-only when applied via CSS class or attribute.
-- `Text` and `Line` HTML branches now honor the `fill`/`stroke` props as inline `color`/`background`, so prop-based colors work across all three layers (not just SVG/Canvas).
-- `Grid.x`/`Grid.y` and `Axis.grid` now accept `stroke`, `strokeWidth`, `opacity`, and `dashArray` in their object form, matching the props forwarded to the underlying line.
-- `Rule` already forwarded arbitrary Line props via spread; `dashArray` now works there unchanged.
-- Exports `parseDashArray` and `dashArrayToGradient` helpers from `path` utils.
diff --git a/.changeset/deep-signs-listen.md b/.changeset/deep-signs-listen.md
deleted file mode 100644
index 516facbb0..000000000
--- a/.changeset/deep-signs-listen.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Text): Apply `fill: currentColor` to support more straightforward way of changing color (ex. `class="text-red-500"` or `style="color:red"`)
diff --git a/.changeset/default-chart-padding.md b/.changeset/default-chart-padding.md
deleted file mode 100644
index 9df6fe0b5..000000000
--- a/.changeset/default-chart-padding.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-'layerchart': patch
----
-
-fix: Default chart padding now applied when using ChartChildren layout (marks snippet)
-
-When `` is used with `marks`/`grid`/`axis` snippets (no explicit `children` snippet), default padding is now applied to match the axes that ChartChildren renders by default. When `children` is provided directly (e.g. Treemap, Pack), no default padding is applied since the user controls layout. This can still be overridden with explicit `axis` or `padding` props.
diff --git a/.changeset/dirty-kings-send.md b/.changeset/dirty-kings-send.md
deleted file mode 100644
index e05461c25..000000000
--- a/.changeset/dirty-kings-send.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-feat: Support passing `FormatConfig` (ex. `{ type: '...', options: { ... } }`) anywhere `FormatType` is supported to simplify custom formatting (ex. `variant`)
diff --git a/.changeset/domain-extent-original-to-data.md b/.changeset/domain-extent-original-to-data.md
deleted file mode 100644
index ca76ca8a3..000000000
--- a/.changeset/domain-extent-original-to-data.md
+++ /dev/null
@@ -1,12 +0,0 @@
----
-'layerchart': major
----
-
-breaking(TransformContext): Rename `domainExtent: 'original'` to `domainExtent: 'data'`
-
-The `'original'` value for `domainExtent` has been renamed to `'data'` to better describe that it constrains pan/zoom to the data's domain bounds:
-
-```diff
--
-+
-```
diff --git a/.changeset/download-chart-utils.md b/.changeset/download-chart-utils.md
deleted file mode 100644
index efc81d1d2..000000000
--- a/.changeset/download-chart-utils.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': minor
----
-
-feat: add `downloadImage`, `downloadSvg`, `getChartImageBlob`, and `getChartSvgString` utilities to export charts as PNG/JPEG/WebP images or SVG files
diff --git a/.changeset/early-bats-wait.md b/.changeset/early-bats-wait.md
deleted file mode 100644
index 66160a810..000000000
--- a/.changeset/early-bats-wait.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Tooltip): Apply inverse transform for quadtree lookup when zoomed/panned
diff --git a/.changeset/early-peaches-accept.md b/.changeset/early-peaches-accept.md
deleted file mode 100644
index 08fd61a41..000000000
--- a/.changeset/early-peaches-accept.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Treemap): Add `maintainAspectRatio` (default: false) to opt into tiling function adjustment (primarily for zoom)
diff --git a/.changeset/easy-candies-wait.md b/.changeset/easy-candies-wait.md
deleted file mode 100644
index cedf5a0c4..000000000
--- a/.changeset/easy-candies-wait.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(ForceSimulation): Restore performance to at/near Svelte 4 performance (issue #451)
diff --git a/.changeset/eight-shirts-cover.md b/.changeset/eight-shirts-cover.md
deleted file mode 100644
index 3d5ee8795..000000000
--- a/.changeset/eight-shirts-cover.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-breaking(Legend): Rename `classes.swatches` to `classes.item`
diff --git a/.changeset/eighty-foxes-notice.md b/.changeset/eighty-foxes-notice.md
deleted file mode 100644
index e044d746c..000000000
--- a/.changeset/eighty-foxes-notice.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': minor
----
-
-feat: Add Image component. Resolves #628
diff --git a/.changeset/eighty-islands-jam.md b/.changeset/eighty-islands-jam.md
deleted file mode 100644
index 4ba875d87..000000000
--- a/.changeset/eighty-islands-jam.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix: Improve memory leak caused by detached DOM increase when using Canvas rendering due to sometimes still rendering Svg components (ex. `` vs ``) (#490)
diff --git a/.changeset/eleven-corners-float.md b/.changeset/eleven-corners-float.md
deleted file mode 100644
index f299720bc..000000000
--- a/.changeset/eleven-corners-float.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Highlight): Properly handle area highlights with y-axis time scales
diff --git a/.changeset/eleven-crabs-switch.md b/.changeset/eleven-crabs-switch.md
deleted file mode 100644
index 463b9c74e..000000000
--- a/.changeset/eleven-crabs-switch.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Group): Default `opacity` to `undefined` instead of `1` to allow overriding via class (ex. `opacity-20`)
diff --git a/.changeset/eleven-trains-make.md b/.changeset/eleven-trains-make.md
deleted file mode 100644
index 9b870746c..000000000
--- a/.changeset/eleven-trains-make.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-feat: Support passing `PeriodTypeCode` strings for simplified date formatting and reduce imports. Example: `format={PeriodType.Day}` is now `format="day"`. Also supported with config object for passing additional options (ex. `format={{ type: 'day', options: { variant: 'long' } }}`). Supported for all `format` props include Axis, Labels, Legend and Tooltip.
diff --git a/.changeset/empty-bats-stop.md b/.changeset/empty-bats-stop.md
deleted file mode 100644
index d430b42ae..000000000
--- a/.changeset/empty-bats-stop.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Legend): Improve / simplify responsive use cases with additional default classes (center, shrink, truncate)
diff --git a/.changeset/empty-buses-flash.md b/.changeset/empty-buses-flash.md
deleted file mode 100644
index f1820437d..000000000
--- a/.changeset/empty-buses-flash.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-docs: Add examples for standalone, daisyUI v5, shadcn-svelte v1, Skeleton v3, and Svelte UX v2 (next) (including light/dark theming)
diff --git a/.changeset/every-sheep-rush.md b/.changeset/every-sheep-rush.md
deleted file mode 100644
index 605d85ae3..000000000
--- a/.changeset/every-sheep-rush.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-Update dependencies
diff --git a/.changeset/evil-bags-dance.md b/.changeset/evil-bags-dance.md
deleted file mode 100644
index 9f170d31d..000000000
--- a/.changeset/evil-bags-dance.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(autoScale): Ignore `null` domain values, fixing some brush examples
diff --git a/.changeset/evil-flowers-float.md b/.changeset/evil-flowers-float.md
deleted file mode 100644
index 424829661..000000000
--- a/.changeset/evil-flowers-float.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': minor
----
-
-feat(Pattern): Canvas support
diff --git a/.changeset/evil-hoops-return.md b/.changeset/evil-hoops-return.md
deleted file mode 100644
index eb0bff64f..000000000
--- a/.changeset/evil-hoops-return.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-breaking(Axis): Rename `x="left|right"` and `y="top|bottom"` props with `$` prefix (ex. ``)
diff --git a/.changeset/fair-phones-wink.md b/.changeset/fair-phones-wink.md
deleted file mode 100644
index 9092c22e9..000000000
--- a/.changeset/fair-phones-wink.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-refactor: Rename simplified charts `renderContext` prop to `layer`
diff --git a/.changeset/fast-insects-deny.md b/.changeset/fast-insects-deny.md
deleted file mode 100644
index 146f3f252..000000000
--- a/.changeset/fast-insects-deny.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-feat(LineChart): Support `orientation="vertical"`. Resolves #640
diff --git a/.changeset/fast-primitives-perf.md b/.changeset/fast-primitives-perf.md
deleted file mode 100644
index d7e89796f..000000000
--- a/.changeset/fast-primitives-perf.md
+++ /dev/null
@@ -1,12 +0,0 @@
----
-'layerchart': patch
----
-
-perf: Optimize primitive component instantiation (~3-5x faster for Rect, Circle, Ellipse, Line, Text, Path, Group)
-
-- `createMotion`: Fast-path passthrough when no `motion` prop is provided, avoiding `$state`/`$effect` overhead per axis
-- `createDataMotionMap`: Short-circuit when `motion` is `undefined`, skipping `parseMotionProp` overhead
-- `createKey`: Only create fill/stroke key trackers in canvas layer (skipped for SVG/HTML)
-- `registerComponent`: Skip `registerMark` for empty `MarkInfo` (pixel-mode marks)
-- All primitives: Skip `$effect` for data motion tracking when no motion is configured
-- Rect/Image: Avoid per-axis `parseMotionProp` calls when `motion` is `undefined`
diff --git a/.changeset/fiery-lamps-tickle.md b/.changeset/fiery-lamps-tickle.md
deleted file mode 100644
index 7292d94a6..000000000
--- a/.changeset/fiery-lamps-tickle.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': minor
----
-
-feat(SeriesState): Support passing `selected` as part of series declaration (Ex. ` `)
diff --git a/.changeset/five-stamps-drum.md b/.changeset/five-stamps-drum.md
deleted file mode 100644
index d1cbb91cf..000000000
--- a/.changeset/five-stamps-drum.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-feat(Marker): Add `square` and `square-stroke` types
diff --git a/.changeset/fix-annotation-range-bounds.md b/.changeset/fix-annotation-range-bounds.md
deleted file mode 100644
index 30397158a..000000000
--- a/.changeset/fix-annotation-range-bounds.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(AnnotationRange): Don't extend past chart bounds when `x` is omitted on band scales, and treat `null` on either side of `x`/`y` as "extend to chart edge".
diff --git a/.changeset/fix-arclabel-canvas-rotation.md b/.changeset/fix-arclabel-canvas-rotation.md
deleted file mode 100644
index c38214a09..000000000
--- a/.changeset/fix-arclabel-canvas-rotation.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-'layerchart': patch
----
-
-fix(ArcLabel): Support rotation in Canvas mode
-
-Changed `centroid-rotated` and `centroid-radial` placements to pass `rotate` prop instead of SVG `transform` string to `Text`, enabling rotation in Canvas rendering.
diff --git a/.changeset/fix-area-all-zero.md b/.changeset/fix-area-all-zero.md
deleted file mode 100644
index c6ad2b9d7..000000000
--- a/.changeset/fix-area-all-zero.md
+++ /dev/null
@@ -1,8 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Area): Handle degenerate domains (e.g. all-zero data) and unify y0/y1 baseline logic
-
-- Guard against degenerate scale domains where min === max (e.g. `[0, 0]`), which caused `yScale()` to return `NaN` and break area path rendering
-- Unify Area y0/y1 path computation to consistently use accessors through the scale, removing duplicate fallback logic
diff --git a/.changeset/fix-barchart-diverging-edge-rounding.md b/.changeset/fix-barchart-diverging-edge-rounding.md
deleted file mode 100644
index 068fcf76b..000000000
--- a/.changeset/fix-barchart-diverging-edge-rounding.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(BarChart): automatically round the outer edge of each direction in `stackDiverging` layout
diff --git a/.changeset/fix-canvas-currentcolor.md b/.changeset/fix-canvas-currentcolor.md
deleted file mode 100644
index 235d43837..000000000
--- a/.changeset/fix-canvas-currentcolor.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(canvas): Resolve `currentColor` for `fill`/`stroke` (and other style props)
diff --git a/.changeset/fix-canvas-pattern-rendering.md b/.changeset/fix-canvas-pattern-rendering.md
deleted file mode 100644
index 3dc499d50..000000000
--- a/.changeset/fix-canvas-pattern-rendering.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Pattern): fix alignment and sharply render on high-DPI displays when using Canvas layers
diff --git a/.changeset/fix-chart-image-export-sizing.md b/.changeset/fix-chart-image-export-sizing.md
deleted file mode 100644
index ca9b6192b..000000000
--- a/.changeset/fix-chart-image-export-sizing.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(downloadImage / getChartImageBlob): Fix image download (container sizing and text clipping)
diff --git a/.changeset/fix-class-attribute-ts-cast.md b/.changeset/fix-class-attribute-ts-cast.md
deleted file mode 100644
index 0504fbe66..000000000
--- a/.changeset/fix-class-attribute-ts-cast.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix: Remove TypeScript `as` casts from `class={...}` attributes in `Path` and `GeoPoint` to fix unocss compat.
diff --git a/.changeset/fix-debug-printscale.md b/.changeset/fix-debug-printscale.md
deleted file mode 100644
index d9fa9cca3..000000000
--- a/.changeset/fix-debug-printscale.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-"layerchart": patch
----
-
-fix: guard against undefined accessor in printScale
-
-When activeGetters includes z or r scales that are not configured, the accessor is undefined, causing acc.toString() to throw. Added null check.
diff --git a/.changeset/fix-geo-mark-domain.md b/.changeset/fix-geo-mark-domain.md
deleted file mode 100644
index 5c40cec7f..000000000
--- a/.changeset/fix-geo-mark-domain.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix: Skip mark x/y/data from domain/series calculation when geo projection is active
diff --git a/.changeset/fix-geopath-canvas-tooltip.md b/.changeset/fix-geopath-canvas-tooltip.md
deleted file mode 100644
index 3d2a4dd74..000000000
--- a/.changeset/fix-geopath-canvas-tooltip.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(GeoPath): Fix canvas tooltip by conditionally passing onclick to Path, preventing non-interactive overlays from capturing hit canvas events
diff --git a/.changeset/fix-geopath-undefined-handlers.md b/.changeset/fix-geopath-undefined-handlers.md
deleted file mode 100644
index 60c164a51..000000000
--- a/.changeset/fix-geopath-undefined-handlers.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(GeoPath): Avoid passing `undefined` event handlers to underlying `Path`, preventing a Svelte error while preserving canvas hit-testing for non-interactive paths
diff --git a/.changeset/fix-implicit-series-domain.md b/.changeset/fix-implicit-series-domain.md
deleted file mode 100644
index f43131e51..000000000
--- a/.changeset/fix-implicit-series-domain.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(ChartState): Don't create spurious implicit series when mark accessor matches chart's own axis accessor, fixing domain corruption for heatmap/Cell charts
diff --git a/.changeset/fix-pattern-canvas.md b/.changeset/fix-pattern-canvas.md
deleted file mode 100644
index 7f570770f..000000000
--- a/.changeset/fix-pattern-canvas.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Pattern): Restore canvas layer support by registering as a `group` node so snippet children (e.g. ``) render correctly
diff --git a/.changeset/fix-pie-arc-xrange.md b/.changeset/fix-pie-arc-xrange.md
deleted file mode 100644
index bb9f012f8..000000000
--- a/.changeset/fix-pie-arc-xrange.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix: Pie and Arc components now correctly use Chart's `xRange` prop for angle degrees instead of the computed viewport pixel range, and compute radius from chart dimensions instead of scale range
diff --git a/.changeset/fix-scale-band-invert.md b/.changeset/fix-scale-band-invert.md
deleted file mode 100644
index b653c666d..000000000
--- a/.changeset/fix-scale-band-invert.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(scaleBandInvert): Account for range offset in band scale inversion. Previously assumed range started at 0, causing incorrect pixel-to-category mapping when the scale range was transformed.
diff --git a/.changeset/fix-series-state-effect-root.md b/.changeset/fix-series-state-effect-root.md
deleted file mode 100644
index 74f51974a..000000000
--- a/.changeset/fix-series-state-effect-root.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-'layerchart': patch
----
-
-fix(SeriesState): Avoid `derived_inert` crash when chart unmounts under a ``
-
-The `selectedKeys` sync effect was wrapped in `$effect.root`, creating an isolated scope that survived chart unmount. When the parent chart was destroyed (e.g. an example reloading inside the docs `` after an async `$derived` re-evaluated), the `#series` derived became inert while the orphaned effect kept reading it — producing `Reading a derived belonging to a now-destroyed effect may result in stale values` warnings followed by `TypeError: e.some is not a function`. The effect now lives in the constructor, scoped to the component that instantiated `SeriesState`, so it is torn down with the chart.
diff --git a/.changeset/fix-spline-canvas-class-opacity.md b/.changeset/fix-spline-canvas-class-opacity.md
deleted file mode 100644
index 7b2f4fbf6..000000000
--- a/.changeset/fix-spline-canvas-class-opacity.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Spline): Allow CSS class `opacity` to fade lines on the Canvas layer. `Spline` was always passing `opacity={1}` to the underlying `Path` when no series fade was active, which became `constantStyles.opacity = 1` in the canvas renderer and shadowed the value resolved from a user's `class` (e.g. `class="opacity-20"`). Now skip passing `opacity` when the computed series fade is the no-fade default, so the class can take effect — matching SVG behavior where CSS class rules override the presentation attribute.
diff --git a/.changeset/fix-spline-series-props-opacity.md b/.changeset/fix-spline-series-props-opacity.md
deleted file mode 100644
index b70da065b..000000000
--- a/.changeset/fix-spline-series-props-opacity.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Spline): Restore `series.props.opacity` (and other style props) precedence over the computed series fade opacity. Regression introduced by per-segment styling refactor where the explicit `opacity` was spread after `series.props`, clobbering per-series opacity values (e.g. `series={[{ props: { opacity: 0.1 } }, ...]}`).
diff --git a/.changeset/fix-text-negative-string-position.md b/.changeset/fix-text-negative-string-position.md
deleted file mode 100644
index d18b1e036..000000000
--- a/.changeset/fix-text-negative-string-position.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix: Allow negative string values (e.g. `y="-6"`) in `Text` position props to be treated as pixel values instead of data property names
diff --git a/.changeset/fix-transform-projection-reactivity.md b/.changeset/fix-transform-projection-reactivity.md
deleted file mode 100644
index 46013dba1..000000000
--- a/.changeset/fix-transform-projection-reactivity.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(TransformContext): Reactively sync `processTranslate` and `disablePointer` to TransformState when props change. Fixes inverted globe dragging when dynamically switching between flat and globe projections.
diff --git a/.changeset/fix-tween-on-mount.md b/.changeset/fix-tween-on-mount.md
deleted file mode 100644
index 631e956d9..000000000
--- a/.changeset/fix-tween-on-mount.md
+++ /dev/null
@@ -1,11 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Arc, RectClipPath, ChartClipPath): Restore on-mount tween animations
-
-Two related regressions introduced in the layer-component split (#848) prevented `motion` + `initial*` props from animating on mount.
-
-**`Arc`** — `motion`, `value`, `initialValue` and the rest of Arc's geometry props (`domain`, `range`, `startAngle`, `endAngle`, `innerRadius`, `outerRadius`, `cornerRadius`, `padAngle`, `track*`, `offset`) were not destructured in `Arc.base.svelte`, so they leaked through `{...restProps}` onto the inner ``. The forwarded `motion` made `Path` *also* tween the path-string on top of the end-angle tween that `ArcState` already drives, producing visibly wrong arcs (NaN coordinates, runaway radii). They are now extracted and passed explicitly to `ArcState`.
-
-**`RectClipPath` / `ChartClipPath`** — `motion`, `initialX`, `initialY`, `initialWidth`, `initialHeight` were declared on the type but never consumed: the path was a plain `$derived` of the static `x`/`y`/`width`/`height` props, so passing `` rendered the final width on mount with no animation. Each dimension now flows through its own `createMotion` (using the corresponding `initial*` value as the animation start), and the path is built from the animated values.
diff --git a/.changeset/fix-x1-y1-domain-filter-without-series.md b/.changeset/fix-x1-y1-domain-filter-without-series.md
deleted file mode 100644
index ee74dec0f..000000000
--- a/.changeset/fix-x1-y1-domain-filter-without-series.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(ChartState): Don't filter explicit `x1Domain`/`y1Domain` by visible series when no series are configured. Restores grouped layout for composable `` usage (e.g. `` with `x1`/`x1Domain`/`x1Range`) where the visible-series filter previously emptied the secondary band scale domain, collapsing all bars to a single category position.
diff --git a/.changeset/flat-arcs-heal.md b/.changeset/flat-arcs-heal.md
deleted file mode 100644
index e46196197..000000000
--- a/.changeset/flat-arcs-heal.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix: `flattenPathData` now handles relative arc commands, fixing rounded bars starting below the baseline during mount animation
diff --git a/.changeset/flat-cases-enter.md b/.changeset/flat-cases-enter.md
deleted file mode 100644
index 6f4f9633c..000000000
--- a/.changeset/flat-cases-enter.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-refactor: Move contexts to separate `$lib/contexts` module
diff --git a/.changeset/four-lizards-win.md b/.changeset/four-lizards-win.md
deleted file mode 100644
index 1cf12426b..000000000
--- a/.changeset/four-lizards-win.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-feat(Layer): Allow `type` to be optional, fallbacking back to `settings.layer` type
diff --git a/.changeset/four-taxes-beam.md b/.changeset/four-taxes-beam.md
deleted file mode 100644
index cf4a1af96..000000000
--- a/.changeset/four-taxes-beam.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Calendar): Pass `cellSize` to children snippet (useful when responsive)
diff --git a/.changeset/free-teeth-live.md b/.changeset/free-teeth-live.md
deleted file mode 100644
index 72f6b9a3c..000000000
--- a/.changeset/free-teeth-live.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Axis): Correctly place multiline parts based on placement
diff --git a/.changeset/fruity-pillows-agree.md b/.changeset/fruity-pillows-agree.md
deleted file mode 100644
index 301a63461..000000000
--- a/.changeset/fruity-pillows-agree.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Axis): Key using tick value instead string representation to support millisecond precision
diff --git a/.changeset/fruity-pumas-stick.md b/.changeset/fruity-pumas-stick.md
deleted file mode 100644
index f630f45de..000000000
--- a/.changeset/fruity-pumas-stick.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Rect): Support rounded (rx/ry) in Canvas layers (fixes #481)
diff --git a/.changeset/full-pens-cheat.md b/.changeset/full-pens-cheat.md
deleted file mode 100644
index 5b530b4e9..000000000
--- a/.changeset/full-pens-cheat.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Axis): Filter distinct tick values (useful when manually injecting extra values)
diff --git a/.changeset/full-times-guess.md b/.changeset/full-times-guess.md
deleted file mode 100644
index 513e967a7..000000000
--- a/.changeset/full-times-guess.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-feat: Support global settings (layer type, debug, etc)
diff --git a/.changeset/funny-otters-kick.md b/.changeset/funny-otters-kick.md
deleted file mode 100644
index b86a03647..000000000
--- a/.changeset/funny-otters-kick.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-feat(TooltipContext): Support `band` mode with time scale (similar to band scale)
diff --git a/.changeset/funny-wasps-heal.md b/.changeset/funny-wasps-heal.md
deleted file mode 100644
index 21134b30f..000000000
--- a/.changeset/funny-wasps-heal.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Axis): Add time duration aware tick value/format support
diff --git a/.changeset/geo-context-rename.md b/.changeset/geo-context-rename.md
deleted file mode 100644
index 1b2f39b34..000000000
--- a/.changeset/geo-context-rename.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-'layerchart': major
----
-
-breaking(GeoContext): Rename `GeoContext` component to `GeoProjection`
-
-The `GeoContext` component has been renamed to `GeoProjection` to better describe its purpose. Update your imports and template usage:
-
-```diff
-- import { GeoContext } from 'layerchart'
-+ import { GeoProjection } from 'layerchart'
-```
-
-```diff
--
-+
-```
diff --git a/.changeset/geo-default-translate-center.md b/.changeset/geo-default-translate-center.md
deleted file mode 100644
index da0db4c2d..000000000
--- a/.changeset/geo-default-translate-center.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix: Default geo projection `translate` to container center when `translate` and `fitGeojson` are not specified, instead of using d3-geo's fixed default (`[480, 250]`)
diff --git a/.changeset/geo-legend-component.md b/.changeset/geo-legend-component.md
deleted file mode 100644
index 6294b2114..000000000
--- a/.changeset/geo-legend-component.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-'layerchart': minor
----
-
-feat(GeoLegend): New scale-bar legend showing real-world distance for the current `Chart` projection
-
-`GeoLegend` reads the active geo projection from the chart context and renders a labeled scale bar with tick subdivisions. By default it picks a "nice" round distance that covers ~25% of the chart width, but `distance` can be passed for an explicit value. Supports `units="km" | "mi"`, configurable `ticks`, `tickFormat`, `title`, and the standard `placement` props. Inspired by Harry Stevens' [d3-geo-scale-bar](https://observablehq.com/@harrystevens/introducing-d3-geo-scale-bar).
diff --git a/.changeset/geo-relative-scale-translate-extent.md b/.changeset/geo-relative-scale-translate-extent.md
deleted file mode 100644
index 6994be59f..000000000
--- a/.changeset/geo-relative-scale-translate-extent.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': minor
----
-
-feat(Chart): In projection mode, `scaleExtent` and `translateExtent` are now interpreted as relative values (like d3-zoom). `scaleExtent: [0.5, 8]` means 0.5x to 8x of the fitted projection scale. `translateExtent` is offset from the initial fitted position in pixels.
diff --git a/.changeset/geolegend-reference-scale.md b/.changeset/geolegend-reference-scale.md
deleted file mode 100644
index 7dae661b7..000000000
--- a/.changeset/geolegend-reference-scale.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-'layerchart': minor
----
-
-feat: Support pre-projected topologies in `GeoLegend` via `referenceScale`
-
-Add a `referenceScale` prop to `GeoLegend` for charts that render pre-projected data with `geoIdentity` (e.g. `us-atlas`'s `counties-albers-10m` / `states-albers-10m`, pre-projected with `geoAlbersUsa().scale(1300)`). When provided, pixels-per-distance is derived from the chart's fit scale and the supplied base scale, bypassing the `projection.invert` + `geoDistance` path which only works for real lon/lat projections. The `GeoPath` bubble-map example now renders a correct scale bar.
diff --git a/.changeset/giant-donuts-yell.md b/.changeset/giant-donuts-yell.md
deleted file mode 100644
index 70f5ca405..000000000
--- a/.changeset/giant-donuts-yell.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': minor
----
-
-feat(BarChart): Radial support (vertical and horizontal) (issue #469)
diff --git a/.changeset/globe-scroll-zoom.md b/.changeset/globe-scroll-zoom.md
deleted file mode 100644
index 3d8fc0290..000000000
--- a/.changeset/globe-scroll-zoom.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Chart): Enable scroll zoom for globe projections by including `scale: true` in default `transformApply` for globes.
diff --git a/.changeset/good-glasses-design.md b/.changeset/good-glasses-design.md
deleted file mode 100644
index d19b1b3ca..000000000
--- a/.changeset/good-glasses-design.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-Removed lodash-es dependency
diff --git a/.changeset/green-hotels-strive.md b/.changeset/green-hotels-strive.md
deleted file mode 100644
index 29a16086b..000000000
--- a/.changeset/green-hotels-strive.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Area|Highlight): Properly handling diveraging stack layouts for negative values (line, highlight point)
diff --git a/.changeset/green-mirrors-retire.md b/.changeset/green-mirrors-retire.md
deleted file mode 100644
index 534f0cdd5..000000000
--- a/.changeset/green-mirrors-retire.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': minor
----
-
-feat(Arc/Text): Arc path labels with inner/outer/middle placement and smart flipping (issue #7)
diff --git a/.changeset/green-poems-drop.md b/.changeset/green-poems-drop.md
deleted file mode 100644
index b175555ba..000000000
--- a/.changeset/green-poems-drop.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Bar): Fix browser lockup when switching between group and stack layouts
diff --git a/.changeset/grumpy-ties-mix.md b/.changeset/grumpy-ties-mix.md
deleted file mode 100644
index 3ab91e3a4..000000000
--- a/.changeset/grumpy-ties-mix.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(AreaChart|LineChart|DefaultTooltip): Handle per-series data with different length
diff --git a/.changeset/happy-bats-eat.md b/.changeset/happy-bats-eat.md
deleted file mode 100644
index 0be3a510e..000000000
--- a/.changeset/happy-bats-eat.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Calendar): Respect `start` instead of always start of year
diff --git a/.changeset/heavy-signs-kick.md b/.changeset/heavy-signs-kick.md
deleted file mode 100644
index ca1922f39..000000000
--- a/.changeset/heavy-signs-kick.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-feat(Highlight): Support passing `opacity`
diff --git a/.changeset/honest-hoops-peel.md b/.changeset/honest-hoops-peel.md
deleted file mode 100644
index a1ef67816..000000000
--- a/.changeset/honest-hoops-peel.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(LineChart): Change default tooltip mode from `bisect-x` to `quadtree-x` (works with catagorical data and does not require data to be sorted)
diff --git a/.changeset/hot-dots-stick.md b/.changeset/hot-dots-stick.md
deleted file mode 100644
index e1b9dbd87..000000000
--- a/.changeset/hot-dots-stick.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-feat(Circle|Rect): Support passing children snippet for Html layers
diff --git a/.changeset/hot-pigs-push.md b/.changeset/hot-pigs-push.md
deleted file mode 100644
index a9b288c4c..000000000
--- a/.changeset/hot-pigs-push.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(SimplifiedChart): Still add selected legend item opacity when item classes are also applied
diff --git a/.changeset/html-background-origin.md b/.changeset/html-background-origin.md
deleted file mode 100644
index 3b8a80c2a..000000000
--- a/.changeset/html-background-origin.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Rect): On the `` layer, set `background-origin: border-box` so fills/patterns start at the outer edge — previously the CSS `background` shorthand reset origin to `padding-box`, shifting patterns inward by `border-width` when a stroke was applied.
diff --git a/.changeset/html-box-sizing.md b/.changeset/html-box-sizing.md
deleted file mode 100644
index a9151bacd..000000000
--- a/.changeset/html-box-sizing.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Rect, Circle, Ellipse): Apply `box-sizing: border-box` on the `` layer so the visual extent equals `width`×`height` (or `r * 2`, `rx * 2`×`ry * 2`) — the border is drawn within that extent instead of added to it, matching SVG bounds.
diff --git a/.changeset/html-circle-ellipse-pattern-fills.md b/.changeset/html-circle-ellipse-pattern-fills.md
deleted file mode 100644
index 6919539b4..000000000
--- a/.changeset/html-circle-ellipse-pattern-fills.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': minor
----
-
-feat(Circle, Ellipse): Support pattern/gradient `fill` values on the `` layer by switching from `background-color` to the `background` shorthand (with `background-origin: border-box` to keep patterns aligned under the border). Accepts values produced by `` / `` in HTML mode.
diff --git a/.changeset/html-default-border-width.md b/.changeset/html-default-border-width.md
deleted file mode 100644
index 866886c9c..000000000
--- a/.changeset/html-default-border-width.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Rect, Circle, Ellipse): On the `` layer, default `border-width` to `1px` when `stroke` is set without an explicit `strokeWidth`, matching SVG's implicit `stroke-width: 1`. Also ensures Circle/Ellipse `border-width` gets the required `px` unit.
diff --git a/.changeset/huge-boats-fix.md b/.changeset/huge-boats-fix.md
deleted file mode 100644
index b9c90cb80..000000000
--- a/.changeset/huge-boats-fix.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-docs: Document each component's context support (svg, canvas, html) with interactive toggle
diff --git a/.changeset/huge-lions-do.md b/.changeset/huge-lions-do.md
deleted file mode 100644
index 71ac16388..000000000
--- a/.changeset/huge-lions-do.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': major
----
-
-feat: New docs site
diff --git a/.changeset/huge-regions-live.md b/.changeset/huge-regions-live.md
deleted file mode 100644
index b77d54599..000000000
--- a/.changeset/huge-regions-live.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-feat(Legend): Add `selected` prop to fade out unselected items (if passed and non-empty)
diff --git a/.changeset/huge-rocks-sip.md b/.changeset/huge-rocks-sip.md
deleted file mode 100644
index 919cb606a..000000000
--- a/.changeset/huge-rocks-sip.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-docs: Add non-radial BarChart duration example and improve radial example
diff --git a/.changeset/hull-style-props.md b/.changeset/hull-style-props.md
deleted file mode 100644
index 7a459c67a..000000000
--- a/.changeset/hull-style-props.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': minor
----
-
-feat(Hull): Add CommonStyleProps (fill, fillOpacity, stroke, strokeOpacity, strokeWidth, opacity) for Canvas layer compatibility
diff --git a/.changeset/icy-llamas-jump.md b/.changeset/icy-llamas-jump.md
deleted file mode 100644
index 939058469..000000000
--- a/.changeset/icy-llamas-jump.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-feat(Chart): Support passing explicit `width` and `height` instead of requiring parent dimensions
diff --git a/.changeset/image-pointer-events-default.md b/.changeset/image-pointer-events-default.md
deleted file mode 100644
index da4cf7adc..000000000
--- a/.changeset/image-pointer-events-default.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Image): Stop disabling pointer events by default
diff --git a/.changeset/khaki-pugs-hammer.md b/.changeset/khaki-pugs-hammer.md
deleted file mode 100644
index 948dc5c34..000000000
--- a/.changeset/khaki-pugs-hammer.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(force-simulation): Fixed a bug that would sometimes keep a simulation running, when its inputs change, even if `alpha < alphaMin`
diff --git a/.changeset/kind-melons-invent.md b/.changeset/kind-melons-invent.md
deleted file mode 100644
index 8315b7895..000000000
--- a/.changeset/kind-melons-invent.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Bar): Fix bar rounding direction when using xReverse/yReverse with interval scales
diff --git a/.changeset/kind-shirts-sniff.md b/.changeset/kind-shirts-sniff.md
deleted file mode 100644
index 7c94ec6de..000000000
--- a/.changeset/kind-shirts-sniff.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-feat: Add `applyLanes()` array util to support densely packing timelines
diff --git a/.changeset/labels-center-placement.md b/.changeset/labels-center-placement.md
deleted file mode 100644
index 89298166f..000000000
--- a/.changeset/labels-center-placement.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-'layerchart': minor
----
-
-feat(Labels): Add `middle` placement and change `center` to center within the bar body
-
-`placement="center"` now positions the label at the center of the bar body (between the value edge and the baseline). The previous `center` behavior (label aligned to the value edge with a middle anchor) is now available as the new `placement="middle"`.
diff --git a/.changeset/large-spiders-stay.md b/.changeset/large-spiders-stay.md
deleted file mode 100644
index 3be5f9b84..000000000
--- a/.changeset/large-spiders-stay.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': minor
----
-
-feat(Rule): Support using as data-driven mark (ex. candlestick, lollipop) by default (`` using Chart accessors) or passing explicit `x`/`y` accessors (ex. ` `). Resolves #64
diff --git a/.changeset/late-glasses-itch.md b/.changeset/late-glasses-itch.md
deleted file mode 100644
index 899395fb8..000000000
--- a/.changeset/late-glasses-itch.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-feat(TooltipContext): Add `touchEvents` to control touch event behavior. Defaults to `pan-y` to allow vertical scrolling but horizontal scrubbing.
diff --git a/.changeset/layer-context-rename.md b/.changeset/layer-context-rename.md
deleted file mode 100644
index 3b2f7f6a4..000000000
--- a/.changeset/layer-context-rename.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-'layerchart': major
----
-
-breaking: Rename render context APIs to layer context
-
-- `getRenderContext()` → `getLayerContext()`
-- `setRenderContext()` → `setLayerContext()`
-- `supportedContexts` prop → `layers` prop on components
-- Internal `layout/` directory moved to `layers/` (affects deep imports)
-
-```diff
-- import { getRenderContext } from 'layerchart'
-+ import { getLayerContext } from 'layerchart'
-```
diff --git a/.changeset/lazy-load-opt-in-features.md b/.changeset/lazy-load-opt-in-features.md
deleted file mode 100644
index cf63c1c7c..000000000
--- a/.changeset/lazy-load-opt-in-features.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-'layerchart': patch
----
-
-perf: Lazy-load opt-in features in `core` path
-
-5 components/dependencies that previously sat in every `` user's sync graph are now dynamically imported only when the corresponding feature is used:
-
-- `BrushContext` in `Chart` — only loads when `` is set (default `undefined`)
-- `DefaultTooltip` in `ChartChildren` — only loads when `tooltipContext` is set and no custom `tooltip` snippet is provided
-- `d3-quadtree` in `TooltipContext` — only loads when `mode` is `'quadtree'`, `'quadtree-x'`, or `'quadtree-y'`
-- `Spline` in `Grid` — only loads when rendering radial linear grid lines (`` with `radialY="linear"`)
-- `Bar` in `Highlight` — only loads when `` is set (default `false`)
-
-Result: **~10 KB gz off `core`** (115.6 → 105.25 KB) and comparable savings on every cartesian/geo/graph/hierarchy scenario, with no impact on rendered output for users who already opt into these features.
-
-Also switches internal `@layerstack/svelte-actions` imports from the barrel (`@layerstack/svelte-actions`) to sub-paths (`@layerstack/svelte-actions/styles`, `@layerstack/svelte-actions/portal`). No production bundle effect — bundlers already tree-shake the unused `popover.js` — but it stops the Svelte REPL/CDN from eagerly fetching `@floating-ui/dom` (popover's transitive dep) when consumers load `layerchart` from a CDN.
diff --git a/.changeset/legal-parrots-beam.md b/.changeset/legal-parrots-beam.md
deleted file mode 100644
index 9e6df5056..000000000
--- a/.changeset/legal-parrots-beam.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-feat(Voronoi): Support passing `r` to define a max radius (clip path)
diff --git a/.changeset/legend-tooltip-indicator.md b/.changeset/legend-tooltip-indicator.md
deleted file mode 100644
index 5983dfc09..000000000
--- a/.changeset/legend-tooltip-indicator.md
+++ /dev/null
@@ -1,11 +0,0 @@
----
-'layerchart': minor
----
-
-feat(Legend, CircleLegend): Show an indicator of the current tooltip value on the legend
-
-`Legend` (ramp variant) now draws a small upward-pointing arrow below the color ramp at the position of the currently hovered value, and `CircleLegend` draws a 50%-opacity filled circle at the corresponding radius. Both auto-read the hovered data from `ctx.tooltip.data` and pipe it through the chart's color (`ctx.c`) / radius (`ctx.r`) accessors, so wiring is automatic for charts that configure `c` / `r` / `cScale` / `rScale` via `Chart` props.
-
-A new `value` prop on both components allows explicitly setting the indicator value (overriding the auto-detection), useful when the tooltip data shape doesn't match the chart's accessor.
-
-For `scaleThreshold` / `scaleQuantize` / `scaleQuantile` scales, the `Legend` indicator centers on the matching bucket swatch.
diff --git a/.changeset/lemon-bats-change.md b/.changeset/lemon-bats-change.md
deleted file mode 100644
index 88f901c66..000000000
--- a/.changeset/lemon-bats-change.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': minor
----
-
-feat(ForceSimulation): Added `onNodesChange` callback to `ForceSimulation`
diff --git a/.changeset/little-flowers-drop.md b/.changeset/little-flowers-drop.md
deleted file mode 100644
index 3c249fb30..000000000
--- a/.changeset/little-flowers-drop.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': minor
----
-
-feat(Blur): Add Canvas support
diff --git a/.changeset/loud-lies-film.md b/.changeset/loud-lies-film.md
deleted file mode 100644
index ca568813f..000000000
--- a/.changeset/loud-lies-film.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-feat(Axis): Use `format` to filter ticks (integer and date/time). Helpful to keep ticks above a threshold for wide charts or short durations.
diff --git a/.changeset/loud-paws-allow.md b/.changeset/loud-paws-allow.md
deleted file mode 100644
index c0e401590..000000000
--- a/.changeset/loud-paws-allow.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(GeoPath): Improve performance by only using custom geoCurvePath when `curve` overridden
diff --git a/.changeset/lovely-loops-ring.md b/.changeset/lovely-loops-ring.md
deleted file mode 100644
index 51f6c3320..000000000
--- a/.changeset/lovely-loops-ring.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Highlight): Fix display of lines for first values (`0` coord). Fixes #568
diff --git a/.changeset/lucky-cats-stand.md b/.changeset/lucky-cats-stand.md
deleted file mode 100644
index 132a1c9e9..000000000
--- a/.changeset/lucky-cats-stand.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-'layerchart': minor
----
-
-feat: Add data mode to primitive components (Circle, Ellipse, Group, Line, Polygon, Rect, Text)
-
-Primitives now accept string or function accessors for positional props (e.g. `x="date"`, `y={d => d.value}`) to automatically resolve values through chart scales and iterate over data. Components also accept an optional `data` prop to override chart context data.
-
-Color properties (`fill`, `stroke`) can also be data-driven, resolving per-item through the chart's color scale (`cScale`). String values are disambiguated: data property names resolve through `cScale`, while literal CSS colors pass through unchanged.
diff --git a/.changeset/lucky-pianos-count.md b/.changeset/lucky-pianos-count.md
deleted file mode 100644
index d84e3c5f7..000000000
--- a/.changeset/lucky-pianos-count.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Tooltip): Use standard CSS classes (non-tailwind) for root element to simplify some usage (including shadcn-svelte)
diff --git a/.changeset/lucky-worlds-share.md b/.changeset/lucky-worlds-share.md
deleted file mode 100644
index b56618e54..000000000
--- a/.changeset/lucky-worlds-share.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Points|Labels): Correctly position when using array accessors (duration charts, etc). Fixes #633
diff --git a/.changeset/major-rats-raise.md b/.changeset/major-rats-raise.md
deleted file mode 100644
index 9477c2435..000000000
--- a/.changeset/major-rats-raise.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix: Workaround Svelte 5.52+ regression (Parse failure: Expected '{', got '(')
diff --git a/.changeset/mark-registration.md b/.changeset/mark-registration.md
deleted file mode 100644
index f6d225e30..000000000
--- a/.changeset/mark-registration.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-'layerchart': minor
----
-
-feat: Mark registration for automatic domain calculation, accessor aggregation, and implicit series
-
-- Marks (Spline, Area, Points, Bars) now register their data, accessors, and colors with the Chart via `registerMark()`.
-- Chart automatically aggregates y/x accessors from marks, removing the need to pass `y={['apples', 'oranges']}` when each mark specifies its own `y`. Works for both horizontal (`valueAxis='y'`) and vertical (`valueAxis='x'`) charts.
-- Per-mark `data` props are included in the chart's domain calculation automatically.
-- Implicit series are generated from mark registrations when no explicit `series` prop is provided, enabling tooltip and legend support without requiring series definitions.
diff --git a/.changeset/mean-flies-play.md b/.changeset/mean-flies-play.md
deleted file mode 100644
index 0179d960b..000000000
--- a/.changeset/mean-flies-play.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Points): Update `point.x` / `point.y` based on `ctx.radial` to simplify children snippet usage
diff --git a/.changeset/mean-loops-peel.md b/.changeset/mean-loops-peel.md
deleted file mode 100644
index 0b9be2e2c..000000000
--- a/.changeset/mean-loops-peel.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-feat(SeriesState): Add `isHighlighted(seriesKey)` to easy check if series is hightlight (or should be faded)
diff --git a/.changeset/merge-connector-into-link.md b/.changeset/merge-connector-into-link.md
deleted file mode 100644
index d3fbf255e..000000000
--- a/.changeset/merge-connector-into-link.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-'layerchart': major
----
-
-breaking: Merge `Connector` into `Link`, remove `Connector` component
-
-`Link` now supports both **pixel mode** (`x1`/`y1`/`x2`/`y2` props) and **data mode** (`data` + `source`/`target`/`x`/`y` accessors), mirroring the pattern used by primitives like `Circle`, `Text`, and `Rect`.
-
-**Migration:**
-
-- ` ` → ` `
-- ` ` → ` ` (or ` `)
-
-All Connector props (`type`, `curve`, `sweep`, `radius`, `bend`, `orientation`, `radial`, markers, motion) are available directly on `Link`. The `explicitCoords` prop and `Connector` export are removed.
diff --git a/.changeset/metal-flowers-sneeze.md b/.changeset/metal-flowers-sneeze.md
deleted file mode 100644
index 05e7b99cd..000000000
--- a/.changeset/metal-flowers-sneeze.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(TooltipContext): correct `bisect-band` hit detection by accounting for chart padding
diff --git a/.changeset/mighty-weeks-try.md b/.changeset/mighty-weeks-try.md
deleted file mode 100644
index a328ec3c3..000000000
--- a/.changeset/mighty-weeks-try.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-feat(Axis): Support multiline ticks for time intervals
diff --git a/.changeset/modern-nails-kiss.md b/.changeset/modern-nails-kiss.md
deleted file mode 100644
index e218d5071..000000000
--- a/.changeset/modern-nails-kiss.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Treemap): Fix reactivity of props (tile, padding, etc)
diff --git a/.changeset/neat-vapors-shift.md b/.changeset/neat-vapors-shift.md
deleted file mode 100644
index 2cdc22114..000000000
--- a/.changeset/neat-vapors-shift.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-feat(Raster, Contour): support bounded geo raster overlays with projected interpolation
diff --git a/.changeset/new-pans-serve.md b/.changeset/new-pans-serve.md
deleted file mode 100644
index 6e7ca28b0..000000000
--- a/.changeset/new-pans-serve.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': minor
----
-
-feat: Add inertia (momentum) support for transform drag gestures
diff --git a/.changeset/new-turtles-clean.md b/.changeset/new-turtles-clean.md
deleted file mode 100644
index b470884ce..000000000
--- a/.changeset/new-turtles-clean.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-feat(BarChart): Support time scale with `xInterval` / `yInterval` props
diff --git a/.changeset/nice-regions-ask.md b/.changeset/nice-regions-ask.md
deleted file mode 100644
index 20bab16e6..000000000
--- a/.changeset/nice-regions-ask.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(ClipPath): Support canvas layers. Resolves #660
diff --git a/.changeset/nine-badgers-teach.md b/.changeset/nine-badgers-teach.md
deleted file mode 100644
index 82e551bc9..000000000
--- a/.changeset/nine-badgers-teach.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(TooltipList): Align label to top (start) instead of center by default
diff --git a/.changeset/nine-carrots-grin.md b/.changeset/nine-carrots-grin.md
deleted file mode 100644
index 2e23d4b92..000000000
--- a/.changeset/nine-carrots-grin.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Bar): Clamp radius to width/height to not cause artifacts with small values (including `0`) when rounding a single edge. Fixes #383
diff --git a/.changeset/nine-pens-design.md b/.changeset/nine-pens-design.md
deleted file mode 100644
index b37e68316..000000000
--- a/.changeset/nine-pens-design.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-feat: Add Polygon primitive
diff --git a/.changeset/ninety-ghosts-taste.md b/.changeset/ninety-ghosts-taste.md
deleted file mode 100644
index a9770cbda..000000000
--- a/.changeset/ninety-ghosts-taste.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-breaking(Blur): Remove children snippet props (not needed and easier to support canvas in the future)
diff --git a/.changeset/ninety-melons-tickle.md b/.changeset/ninety-melons-tickle.md
deleted file mode 100644
index 17d82cb3c..000000000
--- a/.changeset/ninety-melons-tickle.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': minor
----
-
-feat: Add Cell mark. Resolves #627.
diff --git a/.changeset/odd-pears-float.md b/.changeset/odd-pears-float.md
deleted file mode 100644
index cbeb7ea96..000000000
--- a/.changeset/odd-pears-float.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': minor
----
-
-feat: New ArcChart component
diff --git a/.changeset/old-lions-hide.md b/.changeset/old-lions-hide.md
deleted file mode 100644
index 16224e791..000000000
--- a/.changeset/old-lions-hide.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Axis): Fix memory leak and improve performance when tick values are `Date` instances
diff --git a/.changeset/open-bushes-run.md b/.changeset/open-bushes-run.md
deleted file mode 100644
index 68503d128..000000000
--- a/.changeset/open-bushes-run.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(BarChart): Improve handling time scale for value axis (ex. xScale for horizontal orientation)
diff --git a/.changeset/open-houses-vanish.md b/.changeset/open-houses-vanish.md
deleted file mode 100644
index 607767ff0..000000000
--- a/.changeset/open-houses-vanish.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Calendar): Support showing month labels without path via `monthLabel` prop (true by default)
diff --git a/.changeset/orientation-to-valueaxis.md b/.changeset/orientation-to-valueaxis.md
deleted file mode 100644
index 70c59ca93..000000000
--- a/.changeset/orientation-to-valueaxis.md
+++ /dev/null
@@ -1,21 +0,0 @@
----
-'layerchart': major
----
-
-breaking(Chart): Remove `isVertical` from ChartState, add `valueAxis` prop to `Chart`
-
-`ChartState.isVertical` has been removed in favor of `ChartState.valueAxis` (`'x'` | `'y'`), which explicitly defines which axis represents the value (dependent variable).
-
-Simplified charts (`BarChart`, `LineChart`, `AreaChart`, `ScatterChart`) still accept the `orientation` prop as before — each chart maps it to the correct `valueAxis` internally. The `` component itself now uses `valueAxis` directly, since `orientation` is ambiguous at that level (a "vertical" BarChart has `valueAxis="y"` while a "vertical" LineChart has `valueAxis="x"`).
-
-When accessing chart state:
-```diff
-- if (chartContext.isVertical) { ... }
-+ if (chartContext.valueAxis === 'y') { ... }
-```
-
-When using `` directly (not simplified charts):
-```diff
--
-+
-```
diff --git a/.changeset/path-lazy-feature-allocation.md b/.changeset/path-lazy-feature-allocation.md
deleted file mode 100644
index e90076e9c..000000000
--- a/.changeset/path-lazy-feature-allocation.md
+++ /dev/null
@@ -1,25 +0,0 @@
----
-'layerchart': patch
----
-
-perf: Reduce per-tick reactive overhead in `Path` / `Link` (force-simulation graphs)
-
-In mark-heavy scenes (force simulations with hundreds of links flowing through `Link → Path`) several reactive structures unconditionally subscribed every `` template updater to props that don't change on a tick, causing per-frame work to scale with the number of props × the number of marks. Each fix below is independent; together they take the lattice (n=20, 760 links) example from ~5–6 fps to ~9 fps during simulation.
-
-**`PathState.tweenedPathData` now reads only `pathData`, not all Path props.**
-Pre-fix, the getter resolved `pathData` via `getProps()`, a function that constructs an object literal of every reactive Path prop. Each read of `tweenedPathData` (i.e. each per-tick `` update) therefore subscribed the updater to every Path prop and re-read all of them. `PathState` now takes a dedicated `getPathData` getter alongside `getProps`, and the hot-path tween / DOM read only touches `pathData`. `Path.svg.svelte` and `Path.canvas.svelte` pass them as separate getters.
-
-**`Link.base.svelte` passes a stable `getPathData` function rather than `motionPath.current` directly.**
-Reading `motionPath.current` from `Link.base.svelte`'s template subscribed the entire `` block to every tick, forcing the parent's prop spread (`{...restProps}`) and `cls(...)` evaluation to re-run on every change. Passing a stable function reference moves the per-tick read inside ``'s own template, keeping `Link.base.svelte` stable. Requires the new `pathData?: string | (() => string)` form on `Path`.
-
-**`Path.svg.svelte` allocates `draw`-related state lazily.**
-
-- `endPoint = createControlledMotion(..., { type: 'none' })` was created for every `Path`, even when no `draw` transition was configured. Now only created when `draw` is set.
-- The `$effect` that tracked `tweenedPathData` for `startContent` / `endContent` positioning ran on every `Path`, even when neither prop was provided. Now only registered when at least one is set.
-- `drawKey` is only ever set when `draw` is configured, so the `{#key c.drawKey}` block is a no-op for paths without a draw transition. The block stays unconditional — splitting it behind `{#if draw}` showed no measurable benefit over leaving the inert subscription in place.
-
-**`Path.svg.svelte` extracts styling props out of `...rest`.**
-`pathData`, `class`, `fill` / `fillOpacity` / `stroke` / `strokeOpacity` / `strokeWidth` / `opacity` and `motion` are now destructured out of `$props()` rather than left in `...rest`, so the `` element's `{...rest}` spread doesn't re-evaluate every frame when those props change (`pathData` changes on every force-sim tick; `class` is typically a fresh `cls(...)` string per parent render).
-
-**`Link.base.svelte` drops a redundant prop spread.**
-Removed `{...extractLayerProps(restProps, 'lc-link')}` before `{...restProps}` — the call's only contribution (`class`) was being immediately overridden by the explicit `class={cls('lc-link', …)}` that follows, making the spread pure overhead.
diff --git a/.changeset/pattern-html-layer.md b/.changeset/pattern-html-layer.md
deleted file mode 100644
index c655ac640..000000000
--- a/.changeset/pattern-html-layer.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': minor
----
-
-feat(Pattern): Support `` layer by producing CSS `repeating-linear-gradient` (lines) and `radial-gradient` (circles) values usable as a `background`/`fill`. Gradient-valued `background` (e.g. ``) is also supported.
diff --git a/.changeset/per-layer-primitive-variants.md b/.changeset/per-layer-primitive-variants.md
deleted file mode 100644
index efb828b08..000000000
--- a/.changeset/per-layer-primitive-variants.md
+++ /dev/null
@@ -1,97 +0,0 @@
----
-'layerchart': minor
----
-
-feat: Per-layer variants for primitives, compound marks, and high-level charts (`layerchart/svg`, `layerchart/canvas`, `layerchart/html`)
-
-Layer-agnostic components auto-detect the surrounding ``, ``, or `` layer and bundle every render path. The new sub-path exports expose layer-specific variants so consumers committed to a single rendering layer can opt into a smaller bundle.
-
-```ts
-// Default: agnostic, dispatches at runtime — works in any layer
-import { Rect, Circle, Text, Path, LineChart } from 'layerchart';
-
-// SVG-only — skips canvas + html branches
-import { Rect, Circle, Text, Path, LineChart } from 'layerchart/svg';
-
-// Canvas-only
-import { Rect, Circle, Text, LineChart } from 'layerchart/canvas';
-
-// HTML-only — drops canvas + svg overhead (some primitives are ~95% smaller)
-import { Rect, Circle, Text, Pattern, LinearGradient } from 'layerchart/html';
-```
-
-Each agnostic component (e.g. `Rect.svelte`) now dispatches to the corresponding per-layer variant under the hood (`Rect.svg.svelte`, `Rect.canvas.svelte`, `Rect.html.svelte`) — no breaking change for existing consumers.
-
-### What's split
-
-**Primitives (13)** — the basic graphics building blocks
-`Circle`, `Text`, `Rect`, `Line`, `Path`, `Ellipse`, `Polygon`, `Group`, `Image`, `ClipPath`, `Pattern`, `LinearGradient`, `RadialGradient`
-
-**Compound marks (~30)** — chart axes, marks, annotations, and chart-relative shapes
-`Axis`, `Grid`, `Rule`, `Highlight`, `Layer`, `ChartChildren`, `ChartClipPath`, `CircleClipPath`, `Bars`, `Bar`, `Spline`, `Area`, `Pie`, `Arc`, `ArcLabel`, `Points`, `Cell`, `Frame`, `Threshold`, `Trail`, `Vector`, `Link`, `Labels`, `AnnotationLine`, `AnnotationPoint`, `AnnotationRange`, `Hull`, `Density`, `Voronoi`, `Contour`, `Raster`, `Violin`, `BoxPlot`, `Calendar`, `Month`
-
-**Geo components (`layerchart/geo`)**
-`GeoPath`, `GeoSpline`, `GeoPoint`, `GeoCircle`, `GeoTile`, `TileImage`, `Graticule`, `GeoClipPath`, `GeoEdgeFade`
-
-**Graph components (`layerchart/graph`)**
-`Ribbon`
-
-**High-level chart wrappers** — pre-composed charts with built-in tooltips, highlights, and series handling
-`LineChart`, `AreaChart`, `BarChart`, `ScatterChart`, `PieChart`, `ArcChart`
-
-The geo, graph, hierarchy, and force sub-paths also re-export every layer-agnostic helper they previously included, so a single `from 'layerchart/svg'` import covers a typical SVG chart end-to-end without falling back to `'layerchart'`.
-
-### Standout per-layer wins (gz, vs agnostic baseline)
-
-**Primitives where the per-layer rendering is dramatically simpler:**
-- `Pattern` html: 14.81 → 0.92 KB (-94%) — HTML implementation is just CSS-string generation
-- `LinearGradient` html: 14.38 → 0.53 KB (-96%)
-- `Image` canvas: 14.95 → 3.73 KB (-75%)
-- `Text` svg/html: 29.13 → ~16 KB (-45%)
-- `Circle` / `Rect` / `Ellipse` / `Line` / `Path`: ~22–27% smaller per-layer
-
-**Compound marks:** typically 8–15% gz savings per-layer; outliers like `Highlight` (-30% canvas) and `Cell` (-22% svg) are larger because their HTML/canvas vs. SVG paths diverge significantly.
-
-**High-level charts:** ~5–12% gz savings (~5–11 KB) when imported from `layerchart/svg` or `layerchart/canvas`. A single-layer LineChart drops from 89.6 KB → 79.0 KB gz on the SVG path.
-
-For a consumer who migrates all imports to a single layer, cumulative savings across primitives and compound marks are 60–80 KB gz.
-
-### Bundle reductions on the default `` path
-
-In addition to opt-in per-layer variants, this release also makes a few previously-eager features lazy:
-
-- **``** is now dynamically imported when `` is set — saves ~2.8 KB gz on every chart that doesn't pan/zoom.
-- **``** was already lazy; nothing changes there.
-
-### `` for non-cartesian charts (new)
-
-A new `` component is exported alongside `` from each layer sub-path (`layerchart`, `layerchart/svg`, `layerchart/canvas`, `layerchart/html`). It provides the chart context, sizing, brush, transform, and tooltip plumbing — but skips `` and the `Layer` / `Axis` / `Grid` / `Rule` / `Highlight` / `ChartClipPath` import chain it pulls in.
-
-Use it for geo maps, custom layouts, or any chart that renders its own primitives directly via the `children` snippet:
-
-```svelte
-
-
-
- {#snippet children({ context })}
-
-
-
-
-
- {/snippet}
-
-```
-
-Measured savings (bundle scenarios):
-- `base` (``) → `core` (``): 83.42 → 50.93 KB gz (**−39%**)
-- `geo` (`` + `GeoPath`/`GeoPoint`) → `core-geo` (`` + `GeoProjection` + `GeoPath`): 87.23 → 54.67 KB gz (**−37%**)
-- `base-svg` (per-layer) → `core-svg` (per-layer): 77.37 → 50.88 KB gz (**−34%**)
-
-### Behavior
-
-Identical to the agnostic versions: visual output, props, types, and bindable refs all match. The dispatcher pattern adds ~0.2 KB per primitive to `core` for users on the agnostic API (transitive cost from `Highlight` / `Axis` / `Chart`) — a worthwhile tradeoff for the opt-in per-layer savings.
-
-See the updated ["Bundle Size" guide](https://layerchart.com/docs/guides/bundle-size) for the full table, tradeoffs, and when to opt into per-layer imports.
diff --git a/.changeset/piechart-arcchart-labels-prop.md b/.changeset/piechart-arcchart-labels-prop.md
deleted file mode 100644
index faac9ea0a..000000000
--- a/.changeset/piechart-arcchart-labels-prop.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-'layerchart': minor
----
-
-feat(PieChart/ArcChart): Add top-level `labels` prop
-
-`PieChart` and `ArcChart` now accept a `labels` prop that renders text labels on each arc without requiring a custom `arc` snippet. Pass `true` to enable defaults (centroid placement, default value accessor), or an object to configure any `ArcLabel` props — placement, offset, value accessor, callout line lengths, leader line style, text class, etc.
-
-```svelte
-
-```
diff --git a/.changeset/pink-flies-worry.md b/.changeset/pink-flies-worry.md
deleted file mode 100644
index 2d6e97a4c..000000000
--- a/.changeset/pink-flies-worry.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Calendar|MonthPath): Support canvas by using `Spline` instead of `path`
diff --git a/.changeset/pink-hornets-rest.md b/.changeset/pink-hornets-rest.md
deleted file mode 100644
index b5bbcd94c..000000000
--- a/.changeset/pink-hornets-rest.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-refactor: Replace `date-fns` usage with existing `d3-time` to reduce bundle size
diff --git a/.changeset/pink-showers-hunt.md b/.changeset/pink-showers-hunt.md
deleted file mode 100644
index 694666ef6..000000000
--- a/.changeset/pink-showers-hunt.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': major
----
-
-Tailwind 4 support
diff --git a/.changeset/plain-rings-itch.md b/.changeset/plain-rings-itch.md
deleted file mode 100644
index df28d97fd..000000000
--- a/.changeset/plain-rings-itch.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-feat: Add Month component
diff --git a/.changeset/polite-parts-learn.md b/.changeset/polite-parts-learn.md
deleted file mode 100644
index 3a5b58f51..000000000
--- a/.changeset/polite-parts-learn.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix: Support `opacity` prop/style when Canvas rendered for all primatives
diff --git a/.changeset/poor-clocks-occur.md b/.changeset/poor-clocks-occur.md
deleted file mode 100644
index c3da59bfd..000000000
--- a/.changeset/poor-clocks-occur.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-feat(LinearGradient): Support Html context
diff --git a/.changeset/pre.json b/.changeset/pre.json
deleted file mode 100644
index 39055c88a..000000000
--- a/.changeset/pre.json
+++ /dev/null
@@ -1,322 +0,0 @@
-{
- "mode": "exit",
- "tag": "next",
- "initialVersions": {
- "layerchart": "1.0.7",
- "daisyui-5": "0.0.1",
- "shadcn-svelte-1": "0.0.1",
- "skeleton-3": "0.0.1",
- "standalone": "0.0.1",
- "svelteux-2": "0.0.1",
- "docs": "0.0.1",
- "skeleton4": "0.0.1",
- "@layerchart/bundle-analyzer": "0.0.0"
- },
- "changesets": [
- "add-boxplot-component",
- "add-dodge-component",
- "add-geoclippath-component",
- "add-georaster-component",
- "add-pattern-rects",
- "add-smart-label-placement",
- "add-stats-utils",
- "add-text-segments",
- "add-trail-component",
- "add-violin-component",
- "add-waffle-component",
- "afraid-jobs-say",
- "all-papers-unite",
- "annotation-line-sloped",
- "annotation-point-link-callouts",
- "arclabel-component",
- "arctext-centered-default",
- "arctext-inner-padding",
- "area-y0-baseline-default",
- "axis-grid-stroke-fill-props",
- "band-scale-transform-brush",
- "band-tick-spacing-default",
- "band-tick-spacing",
- "bar-html-layer-support",
- "beige-bears-joke",
- "beige-doodles-shout",
- "beige-trams-check",
- "better-eagles-scream",
- "better-pets-divide",
- "big-boxes-shout",
- "blue-doodles-chew",
- "blue-rules-feel",
- "brave-spies-give",
- "breezy-breads-pump",
- "breezy-donuts-sniff",
- "breezy-oranges-drive",
- "bright-bubbles-zoom",
- "bright-stars-float",
- "brown-terms-tie",
- "brush-api-refactor",
- "brush-selection-constraints",
- "bumpy-breads-rhyme",
- "calm-jars-mix",
- "canvas-group-opacity",
- "chart-data-precedence",
- "chart-disable-text-selection",
- "chart-props-no-spread",
- "chart-resolve-domain-series-metadata",
- "chatty-flies-bet",
- "chatty-shirts-rule",
- "chilly-games-hide",
- "chubby-ties-play",
- "circle-legend-component",
- "clean-nights-jog",
- "clear-ghosts-arrive",
- "clear-moose-rush",
- "clear-pears-tickle",
- "clear-points-care",
- "clip-path-unified",
- "clippath-invert",
- "component-tree",
- "connector-orientation-step-curves",
- "connector-swoop-type",
- "context-bind-state-rename",
- "cozy-moments-work",
- "crazy-ads-appear",
- "crazy-friends-talk",
- "cruel-cameras-begin",
- "cruel-rats-taste",
- "curly-lies-write",
- "curly-papers-follow",
- "cute-donkeys-greet",
- "cyan-cougars-occur",
- "dark-pandas-start",
- "dasharray-prop",
- "deep-signs-listen",
- "default-chart-padding",
- "dirty-kings-send",
- "domain-extent-original-to-data",
- "download-chart-utils",
- "early-bats-wait",
- "early-peaches-accept",
- "easy-candies-wait",
- "eight-shirts-cover",
- "eighty-foxes-notice",
- "eighty-islands-jam",
- "eleven-corners-float",
- "eleven-crabs-switch",
- "eleven-trains-make",
- "empty-bats-stop",
- "empty-buses-flash",
- "every-sheep-rush",
- "evil-bags-dance",
- "evil-flowers-float",
- "evil-hoops-return",
- "fair-phones-wink",
- "fast-insects-deny",
- "fast-primitives-perf",
- "fiery-lamps-tickle",
- "five-stamps-drum",
- "fix-annotation-range-bounds",
- "fix-arclabel-canvas-rotation",
- "fix-area-all-zero",
- "fix-barchart-diverging-edge-rounding",
- "fix-canvas-currentcolor",
- "fix-canvas-pattern-rendering",
- "fix-chart-image-export-sizing",
- "fix-class-attribute-ts-cast",
- "fix-debug-printscale",
- "fix-geo-mark-domain",
- "fix-geopath-canvas-tooltip",
- "fix-geopath-undefined-handlers",
- "fix-implicit-series-domain",
- "fix-pattern-canvas",
- "fix-pie-arc-xrange",
- "fix-scale-band-invert",
- "fix-series-state-effect-root",
- "fix-spline-canvas-class-opacity",
- "fix-spline-series-props-opacity",
- "fix-text-negative-string-position",
- "fix-transform-projection-reactivity",
- "fix-tween-on-mount",
- "fix-x1-y1-domain-filter-without-series",
- "flat-arcs-heal",
- "flat-cases-enter",
- "four-lizards-win",
- "four-taxes-beam",
- "free-teeth-live",
- "fruity-pillows-agree",
- "fruity-pumas-stick",
- "full-pens-cheat",
- "full-times-guess",
- "funny-otters-kick",
- "funny-wasps-heal",
- "geo-context-rename",
- "geo-default-translate-center",
- "geo-legend-component",
- "geo-relative-scale-translate-extent",
- "geolegend-reference-scale",
- "giant-donuts-yell",
- "globe-scroll-zoom",
- "good-glasses-design",
- "green-hotels-strive",
- "green-mirrors-retire",
- "green-poems-drop",
- "grumpy-ties-mix",
- "happy-bats-eat",
- "heavy-signs-kick",
- "honest-hoops-peel",
- "hot-dots-stick",
- "hot-pigs-push",
- "html-background-origin",
- "html-box-sizing",
- "html-circle-ellipse-pattern-fills",
- "html-default-border-width",
- "huge-boats-fix",
- "huge-lions-do",
- "huge-regions-live",
- "huge-rocks-sip",
- "hull-style-props",
- "icy-llamas-jump",
- "image-pointer-events-default",
- "khaki-pugs-hammer",
- "kind-melons-invent",
- "kind-shirts-sniff",
- "labels-center-placement",
- "large-spiders-stay",
- "late-glasses-itch",
- "layer-context-rename",
- "lazy-load-opt-in-features",
- "legal-parrots-beam",
- "legend-tooltip-indicator",
- "lemon-bats-change",
- "little-flowers-drop",
- "loud-lies-film",
- "loud-paws-allow",
- "lovely-loops-ring",
- "lucky-cats-stand",
- "lucky-pianos-count",
- "lucky-worlds-share",
- "major-rats-raise",
- "mark-registration",
- "mean-flies-play",
- "mean-loops-peel",
- "merge-connector-into-link",
- "metal-flowers-sneeze",
- "mighty-weeks-try",
- "modern-nails-kiss",
- "neat-vapors-shift",
- "new-pans-serve",
- "new-turtles-clean",
- "nice-regions-ask",
- "nine-badgers-teach",
- "nine-carrots-grin",
- "nine-pens-design",
- "ninety-ghosts-taste",
- "ninety-melons-tickle",
- "odd-pears-float",
- "old-lions-hide",
- "open-bushes-run",
- "open-houses-vanish",
- "orientation-to-valueaxis",
- "path-lazy-feature-allocation",
- "pattern-html-layer",
- "per-layer-primitive-variants",
- "piechart-arcchart-labels-prop",
- "pink-flies-worry",
- "pink-hornets-rest",
- "pink-showers-hunt",
- "plain-rings-itch",
- "polite-parts-learn",
- "poor-clocks-occur",
- "pretty-roses-invent",
- "primitives-inherit-chart-accessors",
- "proud-camels-cut",
- "proud-llamas-fold",
- "proud-melons-warn",
- "public-queens-invite",
- "puny-clocks-admire",
- "puny-shoes-kiss",
- "purple-beers-smile",
- "purple-things-count",
- "quiet-insects-share",
- "quiet-mangos-kneel",
- "quiet-rabbits-listen",
- "radial-tree-link",
- "rare-hats-happen",
- "rare-olives-change",
- "ready-pumas-sink",
- "real-badgers-say",
- "rect-data-corners-playground",
- "rect-per-corner-corners",
- "red-monkeys-sleep",
- "remove-context-getters",
- "rename-scroll-mode",
- "rich-keys-take",
- "ripe-numbers-speak",
- "sad-chairs-stand",
- "scroll-activation-key",
- "server-chart-rendering",
- "shaggy-dryers-make",
- "shaky-animals-wave",
- "shaky-dots-go",
- "shaky-ends-bake",
- "sharp-rockets-jam",
- "shiny-mails-hug",
- "silver-baboons-smile",
- "silver-mugs-leave",
- "skip-empty-markinfo-effect",
- "slow-hounds-hide",
- "slow-streets-look",
- "small-moles-jog",
- "smart-dots-rule",
- "smart-paths-jog",
- "smooth-bars-grow",
- "smooth-domains-zoom",
- "social-masks-teach",
- "soft-pens-invite",
- "solid-badgers-tan",
- "some-frogs-camp",
- "sour-hounds-repeat",
- "sparkly-beds-dress",
- "sparkly-mice-peel",
- "spicy-gifts-float",
- "spicy-seals-kiss",
- "spline-motion-support",
- "spline-per-segment-styling",
- "spline-reactive-motion",
- "spotty-plums-invite",
- "spotty-rules-taste",
- "subpath-exports",
- "swift-gifts-flow",
- "tall-mice-tap",
- "tall-poems-take",
- "tame-lamps-report",
- "tangy-lies-strive",
- "tasty-states-raise",
- "text-fontsize-prop",
- "text-format-tween",
- "thick-months-join",
- "thirty-glasses-pick",
- "three-cities-chew",
- "tooltip-fade-duration",
- "tooltip-item-highlight-fade",
- "tooltip-portal",
- "tooltip-xy-accessor-overrides",
- "tricky-nights-mix",
- "tricky-pears-help",
- "true-waves-roll",
- "twelve-frogs-agree",
- "twenty-bushes-hope",
- "twenty-teeth-stand",
- "violet-gifts-fail",
- "violet-horses-walk",
- "warm-colors-glow",
- "warm-labels-shine",
- "warm-mammals-deny",
- "warm-women-glow",
- "weak-donuts-tan",
- "wet-cups-act",
- "whole-women-listen",
- "wide-berries-invite",
- "wide-pillows-march",
- "wide-wasps-enjoy",
- "witty-clocks-divide"
- ]
-}
diff --git a/.changeset/pretty-roses-invent.md b/.changeset/pretty-roses-invent.md
deleted file mode 100644
index f3b004092..000000000
--- a/.changeset/pretty-roses-invent.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': minor
----
-
-breaking(Chart): Rename `tooltip` prop to `tooltipContext` to better describe purpose and fix conflict with new `tooltip` snippet
diff --git a/.changeset/primitives-inherit-chart-accessors.md b/.changeset/primitives-inherit-chart-accessors.md
deleted file mode 100644
index 2015af9a9..000000000
--- a/.changeset/primitives-inherit-chart-accessors.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-'layerchart': minor
----
-
-feat(Circle, Text): Inherit chart accessors by default in data mode
-
-`` and `` now fall back to the chart's `x`/`y`/`r` accessors (via `xGet`/`yGet`/`rGet`) when the corresponding position prop is omitted — matching how `` and the new `` work. This lets the chart be the single source of truth for `x`/`y`/`r` and removes the boilerplate of repeating those props on every primitive:
-
-```svelte
-
-
-
-
-
-
-
-
-
-```
-
-`Circle` and `Text` also now enter data mode when `data` is explicitly passed (in addition to the existing trigger when `cx`/`cy`/`x`/`y` are data-driven), so the implicit-accessor pattern works without needing to pass redundant string accessors just to trigger iteration.
-
-Behavior is unchanged whenever any position prop is set explicitly — the hardcoded defaults (0/0/1) only apply when neither prop nor chart-level config is present. All existing usages in the docs pass explicit position props, so this is purely additive.
diff --git a/.changeset/proud-camels-cut.md b/.changeset/proud-camels-cut.md
deleted file mode 100644
index 5419a536c..000000000
--- a/.changeset/proud-camels-cut.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(ArcChart): Do not pass y accessor to use linear scale fallback
diff --git a/.changeset/proud-llamas-fold.md b/.changeset/proud-llamas-fold.md
deleted file mode 100644
index 567e9e834..000000000
--- a/.changeset/proud-llamas-fold.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-feat(ForceSimulation): Refined `onstart`/`ontick`/`onend` events of `ForceSimulation`
diff --git a/.changeset/proud-melons-warn.md b/.changeset/proud-melons-warn.md
deleted file mode 100644
index 1ba9c2912..000000000
--- a/.changeset/proud-melons-warn.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': minor
----
-
-breaking(Points): Remove `` prop. Use `` with x/y accessor instead
diff --git a/.changeset/public-queens-invite.md b/.changeset/public-queens-invite.md
deleted file mode 100644
index 169a1d362..000000000
--- a/.changeset/public-queens-invite.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-refactor: Update `@layerstack/svelte-state` and replace remaining `@layerstack/svelte-stores` usage (media query) (mostly docs related except Canvas)
diff --git a/.changeset/puny-clocks-admire.md b/.changeset/puny-clocks-admire.md
deleted file mode 100644
index b6849ce31..000000000
--- a/.changeset/puny-clocks-admire.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-feat(Axis): Support responsive tick counts via `tickSpacing` prop
diff --git a/.changeset/puny-shoes-kiss.md b/.changeset/puny-shoes-kiss.md
deleted file mode 100644
index 26d49cde0..000000000
--- a/.changeset/puny-shoes-kiss.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Primatives): Apply default classes when using Canvas context (like Svg). Resolves #544
diff --git a/.changeset/purple-beers-smile.md b/.changeset/purple-beers-smile.md
deleted file mode 100644
index 842569bb8..000000000
--- a/.changeset/purple-beers-smile.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': minor
----
-
-feat: Add Chord layout and Ribbon primitive
diff --git a/.changeset/purple-things-count.md b/.changeset/purple-things-count.md
deleted file mode 100644
index 9f3353233..000000000
--- a/.changeset/purple-things-count.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-chore: Update deps (including dagre from 1.x to 2.x)
diff --git a/.changeset/quiet-insects-share.md b/.changeset/quiet-insects-share.md
deleted file mode 100644
index f5fda5366..000000000
--- a/.changeset/quiet-insects-share.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': minor
----
-
-feat(Pattern): Simplified definitions via `lines`/`circles` props (issue #472)
diff --git a/.changeset/quiet-mangos-kneel.md b/.changeset/quiet-mangos-kneel.md
deleted file mode 100644
index 6ce35d7be..000000000
--- a/.changeset/quiet-mangos-kneel.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-breaking(Bar): Rename `bar` prop to `data` to better represent usage
diff --git a/.changeset/quiet-rabbits-listen.md b/.changeset/quiet-rabbits-listen.md
deleted file mode 100644
index 20af749ff..000000000
--- a/.changeset/quiet-rabbits-listen.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-'layerchart': patch
----
-
-fix: improve compatibility with UnoCSS Svelte scoped preprocessing
-
-- Remove TypeScript-only `as` assertions from exported Svelte markup in core mark components so preprocessors that parse markup expressions as plain JavaScript can consume packaged components without failing
diff --git a/.changeset/radial-tree-link.md b/.changeset/radial-tree-link.md
deleted file mode 100644
index 6c88ce805..000000000
--- a/.changeset/radial-tree-link.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-'layerchart': minor
----
-
-feat(Tree, Link, Connector): Add radial support
-
-`Tree` now detects `` and lays out with `d3.tree().size([2π, min(width, height)/2])` plus radial separation. Nodes emit polar coords (`x` = angle, `y` = radius).
-
-`Connector` gains a `radial` prop (defaults to `ctx.radial`) that interprets `source`/`target` as polar and dispatches to new `getConnectorRadialPresetPath` / `getConnectorRadialD3Path` helpers. Radial behavior per connector `type`:
-
-- `straight` — straight cartesian line
-- `square` — radial → arc at midR → radial
-- `beveled` — chord at source radius with chamfered corner (controlled by `radius`)
-- `rounded` — visx LinkRadialCurve Bezier
-- `d3` — `d3.linkRadial` by default; with a `curve` prop, `curveStep` / `curveStepBefore` / `curveStepAfter` map to polar arcs/radials, other curves go through `d3.lineRadial`
-
-`Link` forwards `radial` to `Connector` automatically when inside a radial ``.
diff --git a/.changeset/rare-hats-happen.md b/.changeset/rare-hats-happen.md
deleted file mode 100644
index 1274ca35e..000000000
--- a/.changeset/rare-hats-happen.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Axis): Additional multiline month fix for day ticks
diff --git a/.changeset/rare-olives-change.md b/.changeset/rare-olives-change.md
deleted file mode 100644
index 07271d4e9..000000000
--- a/.changeset/rare-olives-change.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': minor
----
-
-feat: Add `Layer` component to easily switch between Svg, Canavs, and Html layers
diff --git a/.changeset/ready-pumas-sink.md b/.changeset/ready-pumas-sink.md
deleted file mode 100644
index 116e5669c..000000000
--- a/.changeset/ready-pumas-sink.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix: Reduce bundle size by removing culori as transitive dependency
diff --git a/.changeset/real-badgers-say.md b/.changeset/real-badgers-say.md
deleted file mode 100644
index 4741a5422..000000000
--- a/.changeset/real-badgers-say.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(ScatterChart): Support color scales based on value (such as threshold)
diff --git a/.changeset/rect-data-corners-playground.md b/.changeset/rect-data-corners-playground.md
deleted file mode 100644
index 3e8234e69..000000000
--- a/.changeset/rect-data-corners-playground.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Rect): Support non-uniform `corners` in data/edge mode
diff --git a/.changeset/rect-per-corner-corners.md b/.changeset/rect-per-corner-corners.md
deleted file mode 100644
index 3b697db00..000000000
--- a/.changeset/rect-per-corner-corners.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-'layerchart': minor
----
-
-feat(Rect): Add `corners` prop for per-corner rounding
-
-New `corners` prop accepts either a number (equivalent to `rx`), a `[topLeft, topRight, bottomRight, bottomLeft]` tuple, or `{ topLeft, topRight, bottomRight, bottomLeft }`. Works across ``, ``, and `` layers — Svg renders a `` when corners are uniform and a `` when they differ, Canvas uses `roundRect`'s per-corner radii, and Html uses the 4-value `border-radius` shorthand.
-
-Also exports a shared `roundedRectPath(x, y, width, height, [tl, tr, br, bl])` helper from `path` utils for building per-corner rounded-rect path data.
diff --git a/.changeset/red-monkeys-sleep.md b/.changeset/red-monkeys-sleep.md
deleted file mode 100644
index 0a4f5f693..000000000
--- a/.changeset/red-monkeys-sleep.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': minor
----
-
-refactor: Remove LayerCake dependency (issue #432)
diff --git a/.changeset/remove-context-getters.md b/.changeset/remove-context-getters.md
deleted file mode 100644
index e16e4e456..000000000
--- a/.changeset/remove-context-getters.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-'layerchart': major
----
-
-breaking: Remove standalone context getter/setter functions
-
-The following standalone context functions have been removed in favor of the unified `getChartContext()` API:
-
-- `getTooltipContext()` / `setTooltipContext()` → use `getChartContext().tooltip`
-- `getBrushContext()` / `setBrushContext()` → use `getChartContext().brushState`
-- `getTransformContext()` / `setTransformContext()` → use `getChartContext().transformState`
-
-```diff
-- import { getTooltipContext } from 'layerchart'
-- const tooltip = getTooltipContext()
-+ import { getChartContext } from 'layerchart'
-+ const chart = getChartContext()
-+ // access via chart.tooltip
-```
diff --git a/.changeset/rename-scroll-mode.md b/.changeset/rename-scroll-mode.md
deleted file mode 100644
index 6a5f8ab86..000000000
--- a/.changeset/rename-scroll-mode.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': minor
----
-
-breaking(TransformContext): Rename `initialScrollMode` to `scrollMode` and make it reactive
diff --git a/.changeset/rich-keys-take.md b/.changeset/rich-keys-take.md
deleted file mode 100644
index f6ec4b7ca..000000000
--- a/.changeset/rich-keys-take.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-feat(TooltipContext): Support `quadtree` mode for geo visualizations
diff --git a/.changeset/ripe-numbers-speak.md b/.changeset/ripe-numbers-speak.md
deleted file mode 100644
index e2e3dbd34..000000000
--- a/.changeset/ripe-numbers-speak.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-feat(Chart): Support `motion` prop to transition x/y scales using tween or spring
diff --git a/.changeset/sad-chairs-stand.md b/.changeset/sad-chairs-stand.md
deleted file mode 100644
index 4a0a7f9d8..000000000
--- a/.changeset/sad-chairs-stand.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-feat(Chart): Add `xInterval` / `yInterval` for time scales usage with bar charts
diff --git a/.changeset/scroll-activation-key.md b/.changeset/scroll-activation-key.md
deleted file mode 100644
index 49c7368cd..000000000
--- a/.changeset/scroll-activation-key.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': minor
----
-
-feat(TransformContext): Add `scrollActivationKey` option to require a modifier key (meta, alt, control, shift) for scroll/wheel zoom/pan, preventing accidental page scroll from triggering transforms
diff --git a/.changeset/server-chart-rendering.md b/.changeset/server-chart-rendering.md
deleted file mode 100644
index b9cfd90b1..000000000
--- a/.changeset/server-chart-rendering.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': minor
----
-
-feat: Add `renderChart()` to `layerchart/server` for server-side chart-to-image rendering (PNG/JPEG)
diff --git a/.changeset/shaggy-dryers-make.md b/.changeset/shaggy-dryers-make.md
deleted file mode 100644
index 2cdaae9bd..000000000
--- a/.changeset/shaggy-dryers-make.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Highlight): Support radial area (issue #112)
diff --git a/.changeset/shaky-animals-wave.md b/.changeset/shaky-animals-wave.md
deleted file mode 100644
index c12b44a44..000000000
--- a/.changeset/shaky-animals-wave.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix: Update dependencies, notable @layerstack/utils with improved metric number formatting
diff --git a/.changeset/shaky-dots-go.md b/.changeset/shaky-dots-go.md
deleted file mode 100644
index 343bc0d6c..000000000
--- a/.changeset/shaky-dots-go.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-feat(Chart): Automatically determine scale based on data and domain values (instead of defaulting to scaleLinear)
diff --git a/.changeset/shaky-ends-bake.md b/.changeset/shaky-ends-bake.md
deleted file mode 100644
index d1655bb2c..000000000
--- a/.changeset/shaky-ends-bake.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-feat(Chart|Svg|Html): Support passing `clip` prop to hide overflown content
diff --git a/.changeset/sharp-rockets-jam.md b/.changeset/sharp-rockets-jam.md
deleted file mode 100644
index 8f9026ba7..000000000
--- a/.changeset/sharp-rockets-jam.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(AreaChart): Change default tooltip mode from `bisect-x` to `quadtree-x` (works with catagorical data and does not require data to be sorted)
diff --git a/.changeset/shiny-mails-hug.md b/.changeset/shiny-mails-hug.md
deleted file mode 100644
index 652b7f96d..000000000
--- a/.changeset/shiny-mails-hug.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': minor
----
-
-feat(Transform): Add zoom/pan constraints (`scaleExtent`, `translateExtent`, `constrain`, `domainExtent`), replace `geo.applyTransform` with `transform.mode: 'projection' | 'rotate'`, and reactively sync initial transform values on projection changes
diff --git a/.changeset/silver-baboons-smile.md b/.changeset/silver-baboons-smile.md
deleted file mode 100644
index 62ac30800..000000000
--- a/.changeset/silver-baboons-smile.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': major
----
-
-breaking(Arc|Pie|Calendar|GeoPath): Rename `tooltipContext` to simple `tooltip` (boolean), simplifying use case
diff --git a/.changeset/silver-mugs-leave.md b/.changeset/silver-mugs-leave.md
deleted file mode 100644
index 0b555b911..000000000
--- a/.changeset/silver-mugs-leave.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Text): Support explicit "\n" and set line-height (to match svg/canvas) for html layers
diff --git a/.changeset/skip-empty-markinfo-effect.md b/.changeset/skip-empty-markinfo-effect.md
deleted file mode 100644
index 7859c4c34..000000000
--- a/.changeset/skip-empty-markinfo-effect.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-'layerchart': patch
----
-
-perf: Skip mark-info `$effect` for pixel-mode primitives
-
-`registerComponent` now probes `markInfo()` once at construction; if the result is initially empty (pixel-mode primitives where `cx`/`cy`/`r`/etc. are numbers rather than string/function accessors), it skips creating the tracking `$effect` entirely. Saves one effect frame per primitive — adds up in mark-heavy scenes (force simulations, scatter plots with hundreds of nodes).
-
-Trade-off: a primitive that starts in pixel mode and later flips to data mode at runtime (e.g. `cx` mutates from a number to a string) will not register a mark. Mark mode is typically static; if a chart needs runtime data-mode marks, define an explicit `series` on the chart instead.
diff --git a/.changeset/slow-hounds-hide.md b/.changeset/slow-hounds-hide.md
deleted file mode 100644
index 6a372ffbb..000000000
--- a/.changeset/slow-hounds-hide.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(ForceSimulation): Expose default values by exporting them as constants
diff --git a/.changeset/slow-streets-look.md b/.changeset/slow-streets-look.md
deleted file mode 100644
index c12c6d366..000000000
--- a/.changeset/slow-streets-look.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-feat: Update `applyLanes()` util to support nested string key and function accessors for start/end properties
diff --git a/.changeset/small-moles-jog.md b/.changeset/small-moles-jog.md
deleted file mode 100644
index 43ca667a2..000000000
--- a/.changeset/small-moles-jog.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': minor
----
-
-feat(Bar): Support fixed `width` and `height` props to override scale-derived dimensions, centering the bar within its band. Resolves #360
diff --git a/.changeset/smart-dots-rule.md b/.changeset/smart-dots-rule.md
deleted file mode 100644
index 21cf6b27f..000000000
--- a/.changeset/smart-dots-rule.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Spline): Only re-draw on data/path changes and not other context (such as width/height). Fixes #504
diff --git a/.changeset/smart-paths-jog.md b/.changeset/smart-paths-jog.md
deleted file mode 100644
index 7e3e15b93..000000000
--- a/.changeset/smart-paths-jog.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': major
----
-
-feat: Migrate to Svelte 5 runes/snippets (issue #159)
diff --git a/.changeset/smooth-bars-grow.md b/.changeset/smooth-bars-grow.md
deleted file mode 100644
index 5bcc68047..000000000
--- a/.changeset/smooth-bars-grow.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-'layerchart': minor
----
-
-feat: Auto-compute Bar/Bars mount animation initial values from chart scales
-
-Bar now automatically derives `initialY`/`initialHeight` (vertical) or `initialX`/`initialWidth` (horizontal) from the chart's scale range when `motion` is configured, removing the need to hardcode pixel values.
-
-Also improves `valueAxis` inference on `ChartState` — when not explicitly set, it is now derived from scale types (band scale on y → `valueAxis: 'x'`, band scale on x → `valueAxis: 'y'`).
\ No newline at end of file
diff --git a/.changeset/smooth-domains-zoom.md b/.changeset/smooth-domains-zoom.md
deleted file mode 100644
index cd1d949cf..000000000
--- a/.changeset/smooth-domains-zoom.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': minor
----
-
-feat(Chart): Add cartesian pan/zoom via `transform={{ mode: 'domain' }}` with single or both axis support. Resolves #366
diff --git a/.changeset/social-masks-teach.md b/.changeset/social-masks-teach.md
deleted file mode 100644
index 600de3243..000000000
--- a/.changeset/social-masks-teach.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Axis): Fix multiline month when day tick does not align on first of month
diff --git a/.changeset/soft-pens-invite.md b/.changeset/soft-pens-invite.md
deleted file mode 100644
index d77cfb30a..000000000
--- a/.changeset/soft-pens-invite.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix: Update `dagreAncestors()` and `dagreDescendants()` util types
diff --git a/.changeset/solid-badgers-tan.md b/.changeset/solid-badgers-tan.md
deleted file mode 100644
index 9cf44c755..000000000
--- a/.changeset/solid-badgers-tan.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix: Add `applyLanes()` as top-level export
diff --git a/.changeset/some-frogs-camp.md b/.changeset/some-frogs-camp.md
deleted file mode 100644
index 59a9b5148..000000000
--- a/.changeset/some-frogs-camp.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-feat: Add classes for underlying element styling
diff --git a/.changeset/sour-hounds-repeat.md b/.changeset/sour-hounds-repeat.md
deleted file mode 100644
index ddade1f2a..000000000
--- a/.changeset/sour-hounds-repeat.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix: Resolves "Target div has zero or negative height" console warning (issue #291)
diff --git a/.changeset/sparkly-beds-dress.md b/.changeset/sparkly-beds-dress.md
deleted file mode 100644
index 656671e2b..000000000
--- a/.changeset/sparkly-beds-dress.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Canavs): Support `style` attribute
diff --git a/.changeset/sparkly-mice-peel.md b/.changeset/sparkly-mice-peel.md
deleted file mode 100644
index 228a05985..000000000
--- a/.changeset/sparkly-mice-peel.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Canavs): support `strokeOpacity` for Path component
diff --git a/.changeset/spicy-gifts-float.md b/.changeset/spicy-gifts-float.md
deleted file mode 100644
index 915bbcc77..000000000
--- a/.changeset/spicy-gifts-float.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-feat(Chart): Support `class` prop
diff --git a/.changeset/spicy-seals-kiss.md b/.changeset/spicy-seals-kiss.md
deleted file mode 100644
index a35ac685e..000000000
--- a/.changeset/spicy-seals-kiss.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Canavs): Suppport dashed stroke (fix: #652)
diff --git a/.changeset/spline-motion-support.md b/.changeset/spline-motion-support.md
deleted file mode 100644
index c624db336..000000000
--- a/.changeset/spline-motion-support.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': minor
----
-
-feat(Spline): Add motion support for mount animation from baseline
diff --git a/.changeset/spline-per-segment-styling.md b/.changeset/spline-per-segment-styling.md
deleted file mode 100644
index 573a87614..000000000
--- a/.changeset/spline-per-segment-styling.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': minor
----
-
-feat(Spline): Support function-valued `stroke`, `fill`, and `opacity` for per-segment styling
diff --git a/.changeset/spline-reactive-motion.md b/.changeset/spline-reactive-motion.md
deleted file mode 100644
index 14f5d0943..000000000
--- a/.changeset/spline-reactive-motion.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-fix(Spline): Make motion prop reactive so toggling between tween/none updates without remount
diff --git a/.changeset/spotty-plums-invite.md b/.changeset/spotty-plums-invite.md
deleted file mode 100644
index 1214fb5bc..000000000
--- a/.changeset/spotty-plums-invite.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'layerchart': patch
----
-
-refactor: Remove use of `layerClass` and apply `lc-{name}` class directly to allow easy component