@fundar/data-chart-telling 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (524) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.md +6 -6
  3. package/dist/configuration/config.svelte.d.ts +1 -1
  4. package/dist/configuration/config.svelte.js +165 -100
  5. package/dist/configuration/themes/index.d.ts +5 -1428
  6. package/dist/index.d.ts +23 -14
  7. package/dist/index.js +20 -11
  8. package/dist/layout/base/BasePlotLayout.svelte +115 -50
  9. package/dist/layout/base/BasePlotLayout.svelte.d.ts +1 -38
  10. package/dist/layout/coordinates/CoordinatesLayout.svelte +42 -40
  11. package/dist/layout/coordinates/CoordinatesLayout.svelte.d.ts +0 -2
  12. package/dist/layout/coordinates/ProjectionZoom.svelte +48 -0
  13. package/dist/layout/coordinates/ProjectionZoom.svelte.d.ts +10 -0
  14. package/dist/layout/coordinates/ZoomedProjection.d.ts +11 -0
  15. package/dist/layout/coordinates/ZoomedProjection.js +24 -0
  16. package/dist/layout/coordinates/camera.svelte.js +11 -8
  17. package/dist/layout/coordinates/projections/argentina.js +1 -1
  18. package/dist/layout/coordinates/projections/fit.d.ts +1 -1
  19. package/dist/layout/coordinates/projections/fit.js +1 -1
  20. package/dist/layout/coordinates/zoom.svelte.d.ts +4 -5
  21. package/dist/layout/coordinates/zoom.svelte.js +4 -5
  22. package/dist/layout/facet/FacetLayout.svelte +1 -1
  23. package/dist/layout/facet/config.js +1 -1
  24. package/dist/layout/figure/Figure.svelte +2 -0
  25. package/dist/layout/geometry/GeometryLayout.svelte +14 -9
  26. package/dist/layout/geometry/GeometryLayout.svelte.d.ts +0 -3
  27. package/dist/layout/geometry/MarkerOffset.svelte +28 -0
  28. package/dist/layout/geometry/MarkerOffset.svelte.d.ts +13 -0
  29. package/dist/layout/grid/GridCell.svelte +6 -8
  30. package/dist/layout/legend/ContinuousSection.svelte +44 -9
  31. package/dist/layout/legend/DiscreteBadgeItem.svelte +2 -2
  32. package/dist/layout/legend/DiscreteSection.svelte +2 -2
  33. package/dist/layout/legend/DiscreteSymbolIcon.svelte +1 -1
  34. package/dist/layout/legend/LegendChannels.js +36 -12
  35. package/dist/layout/legend/LegendLayout.svelte +9 -1
  36. package/dist/layout/legend/LegendState.svelte.d.ts +4 -0
  37. package/dist/layout/legend/LegendState.svelte.js +20 -3
  38. package/dist/layout/legend/SizeSection.svelte +1 -1
  39. package/dist/layout/margins/PlotMargins.svelte.d.ts +2 -5
  40. package/dist/layout/margins/PlotMargins.svelte.js +4 -8
  41. package/dist/layout/plot/Slice.d.ts +5 -1
  42. package/dist/layout/plot/Slice.js +14 -4
  43. package/dist/layout/scales/NiceTicks.d.ts +3 -0
  44. package/dist/layout/scales/NiceTicks.js +4 -0
  45. package/dist/layout/scales/ScalesLayout.svelte +72 -7
  46. package/dist/layout/scales/ScalesLayout.svelte.d.ts +5 -0
  47. package/dist/layout/scales/SveltePlotScale.d.ts +2 -2
  48. package/dist/layout/scales/SveltePlotScale.js +13 -6
  49. package/dist/layout/scales/TickLabels.d.ts +32 -0
  50. package/dist/layout/scales/TickLabels.js +55 -0
  51. package/dist/layout/styles/StylesLayout.svelte +2 -2
  52. package/dist/layout/styles/ValueLabels.d.ts +33 -5
  53. package/dist/layout/styles/ValueLabels.js +80 -21
  54. package/dist/layout/timeline/TimelineLayout.svelte +1 -1
  55. package/dist/layout/tooltip/Tooltip.svelte +4 -4
  56. package/dist/layout/tooltip/Tooltip.svelte.d.ts +4 -4
  57. package/dist/layout/tooltip/TooltipState.svelte.js +1 -1
  58. package/dist/markers/MarkerKinds.d.ts +5 -0
  59. package/dist/markers/MarkerKinds.js +1 -0
  60. package/dist/markers/area/AreaMarker.svelte +15 -63
  61. package/dist/markers/arrow/ArrowMarker.svelte +51 -9
  62. package/dist/markers/bar/BarMarker.svelte +8 -4
  63. package/dist/markers/bollinger/BollingerMarker.svelte +33 -18
  64. package/dist/markers/box/BoxMarker.svelte +40 -9
  65. package/dist/markers/delta/Delta.js +1 -1
  66. package/dist/markers/dot/DotMarker.svelte +24 -27
  67. package/dist/markers/image/ImageMarker.svelte +17 -12
  68. package/dist/markers/inset/InsetMarker.svelte +2 -2
  69. package/dist/markers/line/LineMarker.svelte +1 -0
  70. package/dist/markers/link/LinkMarker.svelte +174 -29
  71. package/dist/markers/regression/RegressionMarker.svelte +16 -33
  72. package/dist/markers/rule/RuleMarker.svelte +9 -3
  73. package/dist/markers/text/Declutter.d.ts +4 -0
  74. package/dist/markers/text/Declutter.js +26 -11
  75. package/dist/markers/text/TextMarker.svelte +91 -48
  76. package/dist/markers/tick/TickMarker.svelte +27 -25
  77. package/dist/markers/utils/MarkerChannels.d.ts +24 -0
  78. package/dist/markers/utils/MarkerChannels.js +42 -7
  79. package/dist/markers/utils/RowOffset.d.ts +23 -0
  80. package/dist/markers/utils/RowOffset.js +23 -0
  81. package/dist/markers/utils/RowOffsetMarks.svelte +30 -0
  82. package/dist/markers/utils/RowOffsetMarks.svelte.d.ts +33 -0
  83. package/dist/markers/utils/RowStroke.d.ts +31 -0
  84. package/dist/markers/utils/RowStroke.js +28 -0
  85. package/dist/markers/violin/ViolinMarker.svelte +75 -0
  86. package/dist/markers/violin/ViolinMarker.svelte.d.ts +7 -0
  87. package/dist/markers/violin/ViolinProfiles.d.ts +29 -0
  88. package/dist/markers/violin/ViolinProfiles.js +55 -0
  89. package/dist/markers/waffle/WaffleMarker.svelte +17 -37
  90. package/dist/phases/Pipeline.d.ts +5 -0
  91. package/dist/phases/Pipeline.js +5 -0
  92. package/dist/phases/data/DataPhase.js +3 -3
  93. package/dist/phases/data/PlotAxes.d.ts +10 -0
  94. package/dist/phases/data/PlotAxes.js +14 -1
  95. package/dist/phases/facet/FacetPanels.d.ts +1 -0
  96. package/dist/phases/facet/FacetPanels.js +1 -0
  97. package/dist/phases/mapping/MappingPhase.js +1 -1
  98. package/dist/phases/markers/MarkersPhase.js +2 -1
  99. package/dist/phases/scales/CategoryOrder.d.ts +23 -0
  100. package/dist/phases/scales/CategoryOrder.js +73 -0
  101. package/dist/phases/scales/ScalesPhase.js +21 -7
  102. package/dist/phases/sharedScales/SharedScalesPhase.d.ts +3 -2
  103. package/dist/phases/sharedScales/SharedScalesPhase.js +5 -2
  104. package/dist/phases/statistics/Statistics.d.ts +10 -6
  105. package/dist/phases/statistics/Statistics.js +20 -10
  106. package/dist/phases/statistics/StatisticsPhase.js +7 -2
  107. package/dist/phases/statistics/methods/BollingerStatistic.d.ts +1 -1
  108. package/dist/phases/statistics/methods/BollingerStatistic.js +13 -11
  109. package/dist/phases/statistics/methods/BoxStatistic.d.ts +1 -1
  110. package/dist/phases/statistics/methods/BoxStatistic.js +14 -12
  111. package/dist/phases/statistics/methods/Density2dStatistic.d.ts +1 -1
  112. package/dist/phases/statistics/methods/Density2dStatistic.js +13 -11
  113. package/dist/phases/statistics/methods/DensityStatistic.d.ts +1 -1
  114. package/dist/phases/statistics/methods/DensityStatistic.js +11 -9
  115. package/dist/phases/statistics/methods/DeviationStatistic.d.ts +8 -0
  116. package/dist/phases/statistics/methods/DeviationStatistic.js +111 -0
  117. package/dist/phases/statistics/methods/MovingAverageStatistic.d.ts +1 -1
  118. package/dist/phases/statistics/methods/MovingAverageStatistic.js +11 -9
  119. package/dist/phases/statistics/methods/RegressionStatistic.d.ts +1 -1
  120. package/dist/phases/statistics/methods/RegressionStatistic.js +16 -14
  121. package/dist/phases/transforms/ProcessedPositions.js +1 -1
  122. package/dist/phases/transforms/TransformsPhase.js +49 -3
  123. package/dist/phases/transforms/ValueSelection.d.ts +30 -0
  124. package/dist/phases/transforms/ValueSelection.js +53 -0
  125. package/dist/plots/{heatmap → correlation/heatmap}/Plot.svelte +5 -2
  126. package/dist/plots/{heatmap → correlation/heatmap}/Plot.svelte.d.ts +2 -2
  127. package/dist/plots/{heatmap → correlation/heatmap}/defaults.d.ts +2 -2
  128. package/dist/plots/{heatmap → correlation/heatmap}/defaults.js +5 -5
  129. package/dist/plots/{heatmap → correlation/heatmap}/markers.d.ts +4 -4
  130. package/dist/plots/{heatmap → correlation/heatmap}/markers.js +3 -3
  131. package/dist/plots/{scatter → correlation/scatter}/Plot.svelte +5 -2
  132. package/dist/plots/{scatter → correlation/scatter}/Plot.svelte.d.ts +2 -2
  133. package/dist/plots/{scatter → correlation/scatter}/defaults.d.ts +2 -2
  134. package/dist/plots/{scatter → correlation/scatter}/defaults.js +4 -4
  135. package/dist/plots/{scatter → correlation/scatter}/markers.d.ts +4 -4
  136. package/dist/plots/{scatter → correlation/scatter}/markers.js +3 -3
  137. package/dist/plots/{box → distribution/box}/BoxSummaries.d.ts +2 -2
  138. package/dist/plots/{box → distribution/box}/BoxSummaries.js +6 -6
  139. package/dist/plots/{box → distribution/box}/Plot.svelte +2 -2
  140. package/dist/plots/{box → distribution/box}/Plot.svelte.d.ts +2 -2
  141. package/dist/plots/{box → distribution/box}/defaults.d.ts +2 -2
  142. package/dist/plots/{box → distribution/box}/defaults.js +1 -1
  143. package/dist/plots/{box → distribution/box}/markers.d.ts +2 -2
  144. package/dist/plots/distribution/density/Plot.svelte +45 -0
  145. package/dist/plots/distribution/density/Plot.svelte.d.ts +26 -0
  146. package/dist/plots/distribution/density/defaults.d.ts +9 -0
  147. package/dist/plots/distribution/density/defaults.js +29 -0
  148. package/dist/plots/distribution/density/markers.d.ts +9 -0
  149. package/dist/plots/distribution/density/markers.js +42 -0
  150. package/dist/plots/{histogram → distribution/histogram}/Plot.svelte +2 -2
  151. package/dist/plots/{histogram → distribution/histogram}/Plot.svelte.d.ts +2 -2
  152. package/dist/plots/{histogram → distribution/histogram}/defaults.d.ts +2 -2
  153. package/dist/plots/{histogram → distribution/histogram}/defaults.js +3 -3
  154. package/dist/plots/{histogram → distribution/histogram}/markers.d.ts +3 -3
  155. package/dist/plots/{histogram → distribution/histogram}/markers.js +5 -5
  156. package/dist/plots/{pyramid → distribution/pyramid}/Plot.svelte +5 -2
  157. package/dist/plots/{pyramid → distribution/pyramid}/Plot.svelte.d.ts +2 -2
  158. package/dist/plots/{pyramid → distribution/pyramid}/defaults.d.ts +2 -2
  159. package/dist/plots/{pyramid → distribution/pyramid}/defaults.js +6 -6
  160. package/dist/plots/{pyramid → distribution/pyramid}/markers.d.ts +4 -4
  161. package/dist/plots/{pyramid → distribution/pyramid}/markers.js +6 -6
  162. package/dist/plots/distribution/violin/Plot.svelte +45 -0
  163. package/dist/plots/distribution/violin/Plot.svelte.d.ts +26 -0
  164. package/dist/plots/distribution/violin/defaults.d.ts +10 -0
  165. package/dist/plots/distribution/violin/defaults.js +58 -0
  166. package/dist/plots/distribution/violin/markers.d.ts +10 -0
  167. package/dist/plots/distribution/violin/markers.js +71 -0
  168. package/dist/plots/{area → evolution/area}/Plot.svelte +2 -2
  169. package/dist/plots/{area → evolution/area}/Plot.svelte.d.ts +2 -2
  170. package/dist/plots/{area → evolution/area}/defaults.d.ts +2 -2
  171. package/dist/plots/{area → evolution/area}/defaults.js +2 -0
  172. package/dist/plots/{area → evolution/area}/markers.d.ts +2 -2
  173. package/dist/plots/{area → evolution/area}/markers.js +1 -1
  174. package/dist/plots/{line → evolution/line}/Plot.svelte +2 -2
  175. package/dist/plots/{line → evolution/line}/Plot.svelte.d.ts +2 -2
  176. package/dist/plots/{line → evolution/line}/defaults.d.ts +2 -2
  177. package/dist/plots/{line → evolution/line}/defaults.js +2 -0
  178. package/dist/plots/{line → evolution/line}/markers.d.ts +11 -8
  179. package/dist/plots/{line → evolution/line}/markers.js +6 -4
  180. package/dist/plots/evolution/slope/Plot.svelte +42 -0
  181. package/dist/plots/evolution/slope/Plot.svelte.d.ts +26 -0
  182. package/dist/plots/evolution/slope/defaults.d.ts +8 -0
  183. package/dist/plots/evolution/slope/defaults.js +31 -0
  184. package/dist/plots/evolution/slope/markers.d.ts +16 -0
  185. package/dist/plots/evolution/slope/markers.js +79 -0
  186. package/dist/plots/evolution/sparkline/Plot.svelte +45 -0
  187. package/dist/plots/evolution/sparkline/Plot.svelte.d.ts +26 -0
  188. package/dist/plots/evolution/sparkline/defaults.d.ts +7 -0
  189. package/dist/plots/evolution/sparkline/defaults.js +23 -0
  190. package/dist/plots/evolution/sparkline/markers.d.ts +7 -0
  191. package/dist/plots/evolution/sparkline/markers.js +56 -0
  192. package/dist/plots/{geo → map/geo}/Core.svelte +11 -10
  193. package/dist/plots/{geo → map/geo}/Core.svelte.d.ts +1 -1
  194. package/dist/plots/map/geo/GeoFeatures.svelte.d.ts +9 -0
  195. package/dist/plots/map/geo/GeoFeatures.svelte.js +55 -0
  196. package/dist/plots/map/geo/GeoGeometry.d.ts +27 -0
  197. package/dist/plots/map/geo/GeoGeometry.js +142 -0
  198. package/dist/plots/map/geo/GeoSegments.d.ts +16 -0
  199. package/dist/plots/map/geo/GeoSegments.js +23 -0
  200. package/dist/plots/{geo → map/geo}/Plot.svelte +10 -10
  201. package/dist/plots/{geo → map/geo}/Plot.svelte.d.ts +2 -2
  202. package/dist/plots/{geo → map/geo}/defaults.d.ts +2 -2
  203. package/dist/plots/{geo → map/geo}/defaults.js +1 -1
  204. package/dist/plots/{geo → map/geo}/phases/data.d.ts +1 -1
  205. package/dist/plots/{geo → map/geo}/phases/data.js +7 -6
  206. package/dist/plots/{geo → map/geo}/phases/hover.d.ts +1 -1
  207. package/dist/plots/{geo → map/geo}/phases/hover.js +2 -2
  208. package/dist/plots/{geo → map/geo}/phases/markers.d.ts +1 -1
  209. package/dist/plots/{geo → map/geo}/phases/markers.js +6 -10
  210. package/dist/plots/{geo → map/geo}/phases/scales.d.ts +2 -2
  211. package/dist/plots/{geo → map/geo}/phases/scales.js +28 -12
  212. package/dist/plots/{geo → map/geo}/phases/tooltip.d.ts +1 -1
  213. package/dist/plots/map/geo/phases/tooltip.js +5 -0
  214. package/dist/plots/{geo → map/geo}/slices.d.ts +2 -2
  215. package/dist/plots/{geo → map/geo}/slices.js +2 -2
  216. package/dist/plots/{bar → ranking/bar}/Plot.svelte +2 -2
  217. package/dist/plots/{bar → ranking/bar}/Plot.svelte.d.ts +2 -2
  218. package/dist/plots/ranking/bar/defaults.d.ts +16 -0
  219. package/dist/plots/{bar → ranking/bar}/defaults.js +15 -9
  220. package/dist/plots/{bar → ranking/bar}/markers.d.ts +8 -8
  221. package/dist/plots/{bar → ranking/bar}/markers.js +8 -17
  222. package/dist/plots/ranking/bullet/Plot.svelte +42 -0
  223. package/dist/plots/ranking/bullet/Plot.svelte.d.ts +26 -0
  224. package/dist/plots/ranking/bullet/defaults.d.ts +8 -0
  225. package/dist/plots/ranking/bullet/defaults.js +24 -0
  226. package/dist/plots/ranking/bullet/markers.d.ts +10 -0
  227. package/dist/plots/ranking/bullet/markers.js +90 -0
  228. package/dist/plots/ranking/cleveland/ClevelandConnector.d.ts +48 -0
  229. package/dist/plots/ranking/cleveland/ClevelandConnector.js +140 -0
  230. package/dist/plots/ranking/cleveland/ClevelandMarkers.d.ts +33 -0
  231. package/dist/plots/ranking/cleveland/ClevelandMarkers.js +375 -0
  232. package/dist/plots/ranking/cleveland/ClevelandRanges.d.ts +31 -0
  233. package/dist/plots/ranking/cleveland/ClevelandRanges.js +116 -0
  234. package/dist/plots/ranking/cleveland/Plot.svelte +45 -0
  235. package/dist/plots/ranking/cleveland/Plot.svelte.d.ts +26 -0
  236. package/dist/plots/ranking/cleveland/defaults.d.ts +13 -0
  237. package/dist/plots/ranking/cleveland/defaults.js +66 -0
  238. package/dist/plots/ranking/dumbbell/Plot.svelte +45 -0
  239. package/dist/plots/ranking/dumbbell/Plot.svelte.d.ts +26 -0
  240. package/dist/plots/ranking/dumbbell/defaults.d.ts +9 -0
  241. package/dist/plots/ranking/dumbbell/defaults.js +19 -0
  242. package/dist/plots/ranking/forest/Plot.svelte +42 -0
  243. package/dist/plots/ranking/forest/Plot.svelte.d.ts +26 -0
  244. package/dist/plots/ranking/forest/defaults.d.ts +11 -0
  245. package/dist/plots/ranking/forest/defaults.js +20 -0
  246. package/dist/plots/ranking/lollipop/Plot.svelte +45 -0
  247. package/dist/plots/ranking/lollipop/Plot.svelte.d.ts +26 -0
  248. package/dist/plots/ranking/lollipop/defaults.d.ts +9 -0
  249. package/dist/plots/ranking/lollipop/defaults.js +18 -0
  250. package/dist/plots/utils/RowNumbers.d.ts +16 -0
  251. package/dist/plots/utils/RowNumbers.js +24 -0
  252. package/dist/plots/utils/gaps.js +1 -1
  253. package/dist/plots/utils/segments.js +1 -1
  254. package/dist/types/configuration/styling.d.ts +276 -143
  255. package/dist/types/layout/coordinates.d.ts +5 -4
  256. package/dist/types/layout/legend.d.ts +21 -5
  257. package/dist/types/layout/plot.d.ts +44 -1
  258. package/dist/types/layout/scales.d.ts +39 -7
  259. package/dist/types/layout/statistics/deviation.d.ts +40 -0
  260. package/dist/types/layout/statistics/index.d.ts +7 -2
  261. package/dist/types/layout/styles/base.d.ts +18 -0
  262. package/dist/types/layout/styles/bullet.d.ts +25 -0
  263. package/dist/types/layout/styles/connector.d.ts +98 -0
  264. package/dist/types/layout/styles/curve.d.ts +11 -0
  265. package/dist/types/layout/styles/frame.d.ts +17 -0
  266. package/dist/types/layout/styles/gaps.d.ts +12 -0
  267. package/dist/types/layout/styles/geo.d.ts +55 -0
  268. package/dist/types/layout/styles/index.d.ts +8 -0
  269. package/dist/types/layout/styles/index.js +8 -0
  270. package/dist/types/layout/styles/values.d.ts +47 -0
  271. package/dist/types/layout/timeline.d.ts +5 -2
  272. package/dist/types/layout/tooltip.d.ts +6 -2
  273. package/dist/types/markers/axis/area.d.ts +2 -2
  274. package/dist/types/markers/axis/arrow.d.ts +3 -0
  275. package/dist/types/markers/axis/axisBasedMarkersConfig.d.ts +2 -1
  276. package/dist/types/markers/axis/bar.d.ts +1 -1
  277. package/dist/types/markers/axis/box.d.ts +5 -0
  278. package/dist/types/markers/axis/difference.d.ts +2 -2
  279. package/dist/types/markers/axis/image.d.ts +3 -2
  280. package/dist/types/markers/axis/line.d.ts +2 -0
  281. package/dist/types/markers/axis/rule.d.ts +9 -0
  282. package/dist/types/markers/axis/trail.d.ts +2 -3
  283. package/dist/types/markers/axis/violin.d.ts +25 -0
  284. package/dist/types/markers/basic/dot.d.ts +3 -2
  285. package/dist/types/markers/basic/text.d.ts +13 -3
  286. package/dist/types/markers/channels/commonMarkerConfig.d.ts +7 -3
  287. package/dist/types/markers/channels/commonMarkerConfigWithRowOffset.d.ts +13 -0
  288. package/dist/types/markers/common.d.ts +1 -1
  289. package/dist/types/markers/common.js +1 -0
  290. package/dist/types/markers/geo/link.d.ts +5 -1
  291. package/dist/types/phases/index.d.ts +1 -1
  292. package/dist/types/phases/scales/phase.d.ts +5 -1
  293. package/dist/types/phases/state.d.ts +15 -2
  294. package/dist/types/phases/statistics/source.d.ts +3 -1
  295. package/dist/types/phases/transforms/phase.d.ts +22 -0
  296. package/dist/types/plots/{heatmap → correlation/heatmap}/props.d.ts +6 -6
  297. package/dist/types/plots/{heatmap → correlation/heatmap}/state.d.ts +4 -4
  298. package/dist/types/plots/{scatter → correlation/scatter}/props.d.ts +6 -6
  299. package/dist/types/plots/{scatter → correlation/scatter}/state.d.ts +2 -2
  300. package/dist/types/plots/{box → distribution/box}/props.d.ts +6 -6
  301. package/dist/types/plots/{box → distribution/box}/state.d.ts +3 -3
  302. package/dist/types/plots/distribution/density/props.d.ts +23 -0
  303. package/dist/types/plots/distribution/density/state.d.ts +6 -0
  304. package/dist/types/plots/{histogram → distribution/histogram}/props.d.ts +7 -7
  305. package/dist/types/plots/{histogram → distribution/histogram}/state.d.ts +2 -2
  306. package/dist/types/plots/distribution/histogram/state.js +1 -0
  307. package/dist/types/plots/{pyramid → distribution/pyramid}/props.d.ts +6 -6
  308. package/dist/types/plots/distribution/pyramid/props.js +1 -0
  309. package/dist/types/plots/{pyramid → distribution/pyramid}/state.d.ts +3 -3
  310. package/dist/types/plots/distribution/pyramid/state.js +1 -0
  311. package/dist/types/plots/distribution/violin/props.d.ts +23 -0
  312. package/dist/types/plots/distribution/violin/props.js +1 -0
  313. package/dist/types/plots/distribution/violin/state.d.ts +6 -0
  314. package/dist/types/plots/distribution/violin/state.js +1 -0
  315. package/dist/types/plots/{area → evolution/area}/props.d.ts +6 -6
  316. package/dist/types/plots/evolution/area/props.js +1 -0
  317. package/dist/types/plots/{area → evolution/area}/state.d.ts +2 -2
  318. package/dist/types/plots/evolution/area/state.js +1 -0
  319. package/dist/types/plots/evolution/line/props.d.ts +10 -0
  320. package/dist/types/plots/evolution/line/props.js +1 -0
  321. package/dist/types/plots/{line → evolution/line}/state.d.ts +3 -3
  322. package/dist/types/plots/evolution/line/state.js +1 -0
  323. package/dist/types/plots/evolution/slope/props.d.ts +5 -0
  324. package/dist/types/plots/evolution/slope/props.js +1 -0
  325. package/dist/types/plots/evolution/slope/state.d.ts +5 -0
  326. package/dist/types/plots/evolution/slope/state.js +1 -0
  327. package/dist/types/plots/evolution/sparkline/props.d.ts +5 -0
  328. package/dist/types/plots/evolution/sparkline/props.js +1 -0
  329. package/dist/types/plots/evolution/sparkline/state.d.ts +5 -0
  330. package/dist/types/plots/evolution/sparkline/state.js +1 -0
  331. package/dist/types/plots/{geo → map/geo}/props.d.ts +8 -8
  332. package/dist/types/plots/map/geo/props.js +1 -0
  333. package/dist/types/plots/{geo → map/geo}/state.d.ts +18 -11
  334. package/dist/types/plots/map/geo/state.js +1 -0
  335. package/dist/types/plots/props.d.ts +1 -1
  336. package/dist/types/plots/{bar → ranking/bar}/props.d.ts +6 -6
  337. package/dist/types/plots/ranking/bar/props.js +1 -0
  338. package/dist/types/plots/{bar → ranking/bar}/state.d.ts +2 -2
  339. package/dist/types/plots/ranking/bar/state.js +1 -0
  340. package/dist/types/plots/ranking/bullet/props.d.ts +22 -0
  341. package/dist/types/plots/ranking/bullet/props.js +1 -0
  342. package/dist/types/plots/ranking/bullet/state.d.ts +5 -0
  343. package/dist/types/plots/ranking/bullet/state.js +1 -0
  344. package/dist/types/plots/ranking/cleveland/props.d.ts +10 -0
  345. package/dist/types/plots/ranking/cleveland/props.js +1 -0
  346. package/dist/types/plots/ranking/cleveland/state.d.ts +49 -0
  347. package/dist/types/plots/ranking/cleveland/state.js +1 -0
  348. package/dist/types/plots/ranking/dumbbell/props.d.ts +10 -0
  349. package/dist/types/plots/ranking/dumbbell/props.js +1 -0
  350. package/dist/types/plots/ranking/dumbbell/state.d.ts +5 -0
  351. package/dist/types/plots/ranking/dumbbell/state.js +1 -0
  352. package/dist/types/plots/ranking/forest/props.d.ts +23 -0
  353. package/dist/types/plots/ranking/forest/props.js +1 -0
  354. package/dist/types/plots/ranking/forest/state.d.ts +5 -0
  355. package/dist/types/plots/ranking/forest/state.js +1 -0
  356. package/dist/types/plots/ranking/lollipop/props.d.ts +10 -0
  357. package/dist/types/plots/ranking/lollipop/props.js +1 -0
  358. package/dist/types/plots/ranking/lollipop/state.d.ts +5 -0
  359. package/dist/types/plots/ranking/lollipop/state.js +1 -0
  360. package/dist/types/plots/segments/common.d.ts +4 -1
  361. package/dist/utils/OpacityScale.d.ts +14 -0
  362. package/dist/utils/OpacityScale.js +43 -0
  363. package/dist/utils/{symbol.d.ts → SymbolPath.d.ts} +0 -12
  364. package/dist/utils/{symbol.js → SymbolPath.js} +0 -24
  365. package/dist/utils/SymbolScale.d.ts +18 -0
  366. package/dist/utils/SymbolScale.js +29 -0
  367. package/dist/utils/color/ColorRamp.d.ts +27 -0
  368. package/dist/utils/color/ColorRamp.js +120 -0
  369. package/dist/utils/color/CssColor.d.ts +19 -0
  370. package/dist/utils/color/CssColor.js +114 -0
  371. package/dist/utils/color/Palette.d.ts +21 -0
  372. package/dist/utils/color/Palette.js +52 -0
  373. package/dist/utils/color/index.d.ts +11 -3
  374. package/dist/utils/color/index.js +14 -3
  375. package/dist/utils/grouping.js +1 -1
  376. package/docs/architecture.md +1 -1
  377. package/docs/chrome.md +2 -2
  378. package/docs/composer.md +2 -2
  379. package/docs/concepts.md +1 -1
  380. package/docs/development.md +1 -1
  381. package/docs/facets.md +3 -3
  382. package/docs/getting-started.md +2 -2
  383. package/docs/legend.md +13 -11
  384. package/docs/markers.md +29 -27
  385. package/docs/plots/correlation/heatmap.md +26 -0
  386. package/docs/plots/correlation/scatter.md +35 -0
  387. package/docs/plots/distribution/box.md +28 -0
  388. package/docs/plots/distribution/density.md +26 -0
  389. package/docs/plots/distribution/histogram.md +33 -0
  390. package/docs/plots/distribution/pyramid.md +31 -0
  391. package/docs/plots/distribution/violin.md +35 -0
  392. package/docs/plots/evolution/area.md +32 -0
  393. package/docs/plots/evolution/line.md +93 -0
  394. package/docs/plots/evolution/slope.md +39 -0
  395. package/docs/plots/evolution/sparkline.md +34 -0
  396. package/docs/plots/ranking/bar.md +59 -0
  397. package/docs/plots/ranking/bullet.md +37 -0
  398. package/docs/plots/ranking/cleveland.md +54 -0
  399. package/docs/plots/ranking/dumbbell.md +39 -0
  400. package/docs/plots/ranking/forest.md +40 -0
  401. package/docs/plots/ranking/lollipop.md +39 -0
  402. package/docs/plots.md +22 -280
  403. package/docs/scales.md +30 -24
  404. package/docs/styles-and-segments.md +24 -21
  405. package/docs/theming.md +23 -20
  406. package/docs/timeline.md +3 -3
  407. package/docs/tooltip-and-hover.md +10 -10
  408. package/docs/transforms-and-statistics.md +13 -12
  409. package/examples/BarValues.svelte +1 -1
  410. package/examples/Box.svelte +1 -1
  411. package/examples/Bullet.svelte +17 -0
  412. package/examples/Chrome.svelte +1 -1
  413. package/examples/ChromeOrder.svelte +1 -1
  414. package/examples/Cleveland.svelte +15 -0
  415. package/examples/Composer.svelte +2 -2
  416. package/examples/CustomTooltip.svelte +1 -1
  417. package/examples/Density.svelte +7 -0
  418. package/examples/Dumbbell.svelte +16 -0
  419. package/examples/Facets.svelte +1 -1
  420. package/examples/FacetsCarousel.svelte +1 -1
  421. package/examples/FacetsRowsCols.svelte +1 -1
  422. package/examples/FirstPlot.svelte +1 -1
  423. package/examples/Forest.svelte +17 -0
  424. package/examples/Gaps.svelte +2 -2
  425. package/examples/GroupedBars.svelte +1 -1
  426. package/examples/Heatmap.svelte +3 -3
  427. package/examples/HeatmapSegments.svelte +8 -8
  428. package/examples/Histogram.svelte +1 -1
  429. package/examples/HorizontalBars.svelte +1 -1
  430. package/examples/LegendSections.svelte +1 -1
  431. package/examples/LegendToggle.svelte +1 -1
  432. package/examples/LineByRegion.svelte +1 -1
  433. package/examples/LineDates.svelte +1 -1
  434. package/examples/LineStep.svelte +16 -0
  435. package/examples/LineStepSegment.svelte +18 -0
  436. package/examples/Lollipop.svelte +17 -0
  437. package/examples/Markers.svelte +1 -1
  438. package/examples/MovingAverage.svelte +1 -1
  439. package/examples/Pyramid.svelte +9 -2
  440. package/examples/Regression.svelte +2 -2
  441. package/examples/ResponsiveLine.svelte +1 -1
  442. package/examples/Scales.svelte +1 -1
  443. package/examples/Scatter.svelte +2 -2
  444. package/examples/SegmentHighlight.svelte +1 -1
  445. package/examples/Segments.svelte +1 -1
  446. package/examples/SegmentsBySeries.svelte +1 -1
  447. package/examples/Slope.svelte +17 -0
  448. package/examples/Sparkline.svelte +14 -0
  449. package/examples/StackedArea.svelte +1 -1
  450. package/examples/StackedBars.svelte +1 -1
  451. package/examples/TimelinePlayer.svelte +1 -1
  452. package/examples/TimelineRule.svelte +1 -1
  453. package/examples/Tooltip.svelte +1 -1
  454. package/examples/ValueLabels.svelte +1 -1
  455. package/examples/Violin.svelte +14 -0
  456. package/examples/datasets/argentina-chile-trends.ts +34 -0
  457. package/examples/datasets/commodity-prices.ts +48 -0
  458. package/examples/datasets/countries-over-time.ts +368 -0
  459. package/examples/datasets/daily-temperature.ts +121 -0
  460. package/examples/datasets/earthquakes.ts +977 -0
  461. package/examples/datasets/flight-routes.ts +29 -0
  462. package/examples/datasets/height-density.ts +37 -0
  463. package/examples/datasets/heights.ts +370 -0
  464. package/examples/datasets/index.ts +24 -0
  465. package/examples/datasets/inflation-by-region.ts +44 -0
  466. package/examples/datasets/inflation-ranges.ts +34 -0
  467. package/examples/datasets/iris-flower.ts +207 -0
  468. package/examples/datasets/life-expectancy.ts +95 -0
  469. package/examples/datasets/napoleons-march.ts +182 -0
  470. package/examples/datasets/penguins.ts +54 -0
  471. package/examples/datasets/population-by-age-with-gaps.ts +23 -0
  472. package/examples/datasets/population-by-age.ts +890 -0
  473. package/examples/datasets/province-population.ts +521 -0
  474. package/examples/datasets/stock-prices.ts +63 -0
  475. package/examples/datasets/weather-stations-over-time.ts +31 -0
  476. package/examples/datasets/weather-stations.ts +22 -0
  477. package/examples/datasets/wind-vectors.ts +30 -0
  478. package/examples/datasets/world-temperature.ts +400 -0
  479. package/llms-full.txt +22 -11
  480. package/llms.txt +32 -4
  481. package/package.json +10 -1
  482. package/dist/plots/bar/defaults.d.ts +0 -9
  483. package/dist/plots/geo/features.svelte.d.ts +0 -5
  484. package/dist/plots/geo/features.svelte.js +0 -44
  485. package/dist/plots/geo/phases/tooltip.js +0 -5
  486. package/dist/plots/utils/geoAccessors.d.ts +0 -72
  487. package/dist/plots/utils/geoAccessors.js +0 -220
  488. package/dist/plots/utils/geoSegments.d.ts +0 -29
  489. package/dist/plots/utils/geoSegments.js +0 -37
  490. package/dist/types/layout/styles.d.ts +0 -122
  491. package/dist/types/markers/axis/curveName.d.ts +0 -2
  492. package/dist/types/plots/line/props.d.ts +0 -10
  493. package/dist/utils/color/contrast.d.ts +0 -9
  494. package/dist/utils/color/contrast.js +0 -40
  495. package/dist/utils/color/cssColor.d.ts +0 -4
  496. package/dist/utils/color/cssColor.js +0 -77
  497. package/dist/utils/color/ramp.d.ts +0 -17
  498. package/dist/utils/color/ramp.js +0 -110
  499. package/dist/utils/opacity.d.ts +0 -9
  500. package/dist/utils/opacity.js +0 -38
  501. package/examples/data.ts +0 -324
  502. /package/dist/plots/{box → distribution/box}/markers.js +0 -0
  503. /package/dist/types/layout/{styles.js → statistics/deviation.js} +0 -0
  504. /package/dist/types/{markers/axis/curveName.js → layout/styles/base.js} +0 -0
  505. /package/dist/types/{plots/area/props.js → layout/styles/bullet.js} +0 -0
  506. /package/dist/types/{plots/area/state.js → layout/styles/connector.js} +0 -0
  507. /package/dist/types/{plots/bar/props.js → layout/styles/curve.js} +0 -0
  508. /package/dist/types/{plots/bar/state.js → layout/styles/frame.js} +0 -0
  509. /package/dist/types/{plots/box/props.js → layout/styles/gaps.js} +0 -0
  510. /package/dist/types/{plots/box/state.js → layout/styles/geo.js} +0 -0
  511. /package/dist/types/{plots/geo/props.js → layout/styles/values.js} +0 -0
  512. /package/dist/types/{plots/geo/state.js → markers/axis/violin.js} +0 -0
  513. /package/dist/types/{plots/heatmap/props.js → markers/channels/commonMarkerConfigWithRowOffset.js} +0 -0
  514. /package/dist/types/plots/{histogram → correlation/heatmap}/props.js +0 -0
  515. /package/dist/types/plots/{heatmap → correlation/heatmap}/state.js +0 -0
  516. /package/dist/types/plots/{line → correlation/scatter}/props.js +0 -0
  517. /package/dist/types/plots/{histogram → correlation/scatter}/state.js +0 -0
  518. /package/dist/types/plots/{pyramid → distribution/box}/props.js +0 -0
  519. /package/dist/types/plots/{line → distribution/box}/state.js +0 -0
  520. /package/dist/types/plots/{scatter → distribution/density}/props.js +0 -0
  521. /package/dist/types/plots/{pyramid → distribution/density}/state.js +0 -0
  522. /package/dist/types/plots/{scatter/state.js → distribution/histogram/props.js} +0 -0
  523. /package/dist/{plots/utils → utils}/accessors.d.ts +0 -0
  524. /package/dist/{plots/utils → utils}/accessors.js +0 -0
package/CHANGELOG.md CHANGED
@@ -2,6 +2,38 @@
2
2
 
3
3
  All notable changes to this project are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the project adheres to [Semantic Versioning](https://semver.org/).
4
4
 
5
+ ## [1.2.0] - 2026-10-24
6
+
7
+ ### Added
8
+
9
+ - `LollipopPlot`, a dot on a stem for the value of each category.
10
+ - `DumbbellPlot`, two series joined by a connector for each category.
11
+ - `ClevelandPlot`, any number of series per category joined from the lowest to the highest value, with connectors you can color, turn into arrows and sort by series value or range.
12
+ - `ForestPlot`, a dot per row on a stem spanning its confidence interval.
13
+ - `BulletPlot`, a bar against a target tick and shaded qualitative ranges.
14
+ - `SlopePlot`, the change of each series between two moments, labelled at both ends.
15
+ - `SparklinePlot`, a small axisless line with a dot and a label on its last point.
16
+ - `DensityPlot`, a kernel density curve of one numeric field, and `ViolinPlot`, the mirrored density of each category with a box inside.
17
+ - Step lines through `styles.curve: 'step'`, `'step-after'` or `'step-before'` on `LinePlot`.
18
+ - A `deviation` statistic that draws an estimator of the values and a band around it, with optional labels.
19
+ - `styles.values.select` chooses which points get a value label (`'first'`, `'last'`, `'min'`, `'max'` or a list), for line, area and Cleveland-family plots.
20
+ - The size channel (`r`) works on the dots of the Cleveland family, and its automatic legend is configured under the `r` key.
21
+ - Every marker takes `dx` and `dy` to move it a number of pixels, on a map too, and `dot`, `text` and `image` markers also take a function of the row to move each row on its own.
22
+ - `setConfiguration({ palette })` takes the name of a d3-scale-chromatic scheme (`'viridis'`, `'dark2'`...) or `{ scheme, count, schemeRange }` instead of just a list of colors.
23
+ - `continuous.scheme` and `continuous.schemeRange` in the configuration set the default continuous ramp by the name of a d3-scale-chromatic ramp, as an alternative to its `min` and `max` colors.
24
+ - Tick labels turn or thin out on small plots when they would not fit, and the last label of an axis that is not rounded to nice values stays inside the plot.
25
+ - A timeline can free one axis at a time (`scales: 'free-x'` or `'free-y'`) while the other keeps its shared domain.
26
+ - `link` markers on a map can lift their arcs off the surface (`altitude`) and cut them where a globe hides them (`occlusion`).
27
+
28
+ ### Changed
29
+
30
+ - The default palette is Tableau 10, and the default continuous ramp, the timeline and player accents and the connector colors follow it.
31
+
32
+ ### Fixed
33
+
34
+ - The example datasets moved out of the stories into `examples/datasets`, where real data replaces the synthetic rows and the docs, examples and stories all read the same files.
35
+ - The Minard map of Napoleon's march is rebuilt with `GeoPlot` and `LinePlot` markers instead of a hand-assembled svelteplot chart.
36
+
5
37
  ## [1.1.0] - 2026-10-20
6
38
 
7
39
  ### Added
package/README.md CHANGED
@@ -23,7 +23,7 @@ It aims for a sweet spot between the flexibility of `d3`, the declarative spirit
23
23
  ```svelte
24
24
  <script lang="ts">
25
25
  import { LinePlot } from '@fundar/data-chart-telling';
26
- import { REGION_VALUES } from './data';
26
+ import { REGION_VALUES } from './datasets';
27
27
  </script>
28
28
 
29
29
  <!-- One line per region, with a title, the automatic legend, end-of-line values and a tooltip. -->
@@ -45,9 +45,9 @@ It aims for a sweet spot between the flexibility of `d3`, the declarative spirit
45
45
 
46
46
  ![A line plot with a title, a legend, end-of-line value labels and a tooltip](docs/images/line-by-region.png)
47
47
 
48
- Every Svelte snippet in this README is a runnable file in [examples/](examples/), and the data comes from [examples/data.ts](examples/data.ts).
48
+ Every Svelte snippet in this README is a runnable file in [examples/](examples/), and the data comes from [examples/datasets/](examples/datasets/).
49
49
 
50
- Nine plot kinds - line, area, bar, histogram, box, heatmap, pyramid, scatter and geographic maps - share one vocabulary: the same channels (`x`, `y`, `color`, `grouping`, `opacity`, `symbol`, `r`), the same `scales`, `styles`, `segments`, `markers`, `transforms`, `tooltip`, `legend`, `timeline` and `facet` props, and one global theme.
50
+ Every plot kind shares one vocabulary: the same channels (`x`, `y`, `color`, `grouping`, `opacity`, `symbol`, `r`), the same `scales`, `styles`, `segments`, `markers`, `transforms`, `tooltip`, `legend`, `timeline` and `facet` props, and one global theme.
51
51
 
52
52
  ## Install
53
53
 
@@ -68,7 +68,7 @@ The package ships Svelte components, so the app needs the Svelte compiler (`@sve
68
68
  ```svelte
69
69
  <script lang="ts">
70
70
  import { BarPlot } from '@fundar/data-chart-telling';
71
- import { REGION_VALUES } from './data';
71
+ import { REGION_VALUES } from './datasets';
72
72
  </script>
73
73
 
74
74
  <!--
@@ -100,7 +100,7 @@ The package ships Svelte components, so the app needs the Svelte compiler (`@sve
100
100
  ```svelte
101
101
  <script lang="ts">
102
102
  import { LinePlot } from '@fundar/data-chart-telling';
103
- import { REGION_VALUES } from './data';
103
+ import { REGION_VALUES } from './datasets';
104
104
 
105
105
  // A rule has no controls of its own: the page moves it through `progress` (0 to 1).
106
106
  // One step per year; a line plot shows every row up to the current step.
@@ -133,7 +133,7 @@ Start with the concepts; the rest is organised by what you want a plot to do.
133
133
  | -------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
134
134
  | [Getting started](docs/getting-started.md) | Installing, a first plot, sizing a plot to its container, loading data |
135
135
  | [Concepts](docs/concepts.md) | Plots and figures, rows and series, channels, the props every plot shares |
136
- | [Plots](docs/plots.md) | The eight plot kinds: what each one draws and what it needs |
136
+ | [Plots](docs/plots.md) | Every plot kind: what it draws and what it needs |
137
137
  | [Scales](docs/scales.md) | Axes (`x`, `y`) and channel scales (`color`, `grouping`, `opacity`, `symbol`, `r`, `length`) |
138
138
  | [Styles and segments](docs/styles-and-segments.md) | Value labels, frames, gap filling, and styling ranges of the data |
139
139
  | [Markers](docs/markers.md) | Extra marks on a plot: annotations, regions, hover highlights, custom components |
@@ -2,7 +2,7 @@ import type { PlotStylesConfig, PlotStylesConfigInput } from '../types/configura
2
2
  export declare const DEFAULT_CONFIG: PlotStylesConfig;
3
3
  /** Read the live, reactive configuration. */
4
4
  export declare function getConfiguration(): PlotStylesConfig;
5
- /** Deep-merge a partial override into the global configuration. Reactive. */
5
+ /** Deep-merge a partial override into the global configuration - a `palette` may be a scheme name. Reactive. */
6
6
  export declare function setConfiguration(patch: PlotStylesConfigInput): PlotStylesConfig;
7
7
  /** Restore the shipped defaults. */
8
8
  export declare function resetConfiguration(): void;
@@ -1,4 +1,5 @@
1
1
  import { merge } from '../utils/merge';
2
+ import { Palette } from '../utils/color';
2
3
  /**
3
4
  * Global, reactive styling configuration. Chrome reads it as CSS custom
4
5
  * properties ({@link configToCssVars}); plots read it as plain values.
@@ -16,9 +17,17 @@ const text = (over) => ({
16
17
  ...over
17
18
  });
18
19
  export const DEFAULT_CONFIG = {
20
+ // ── General look ────────────────────────────────────────────────────────────
19
21
  font: 'inherit',
20
22
  color: 'currentColor',
21
23
  background: 'transparent',
24
+ title: text({ size: '1.5rem', weight: 500, leading: '1.2' }),
25
+ subtitle: text({
26
+ size: '1rem',
27
+ weight: 400,
28
+ color: 'color-mix(in srgb, currentColor 85%, transparent)'
29
+ }),
30
+ caption: text({ size: '0.75rem', color: 'color-mix(in srgb, currentColor 75%, transparent)' }),
22
31
  spacing: {
23
32
  headerPadding: '0.5rem 0',
24
33
  legendPadding: '0.5rem 0',
@@ -48,13 +57,32 @@ export const DEFAULT_CONFIG = {
48
57
  ],
49
58
  rowGap: '1rem'
50
59
  },
51
- title: text({ size: '1.5rem', weight: 500, leading: '1.2' }),
52
- subtitle: text({
53
- size: '1rem',
54
- weight: 400,
55
- color: 'color-mix(in srgb, currentColor 85%, transparent)'
56
- }),
57
- caption: text({ size: '0.75rem', color: 'color-mix(in srgb, currentColor 75%, transparent)' }),
60
+ // Tableau 10 - qualitative, with a muted blue first, and distinct enough to tell ten series apart.
61
+ palette: Palette.resolve('tableau10'),
62
+ symbols: ['circle', 'square', 'triangle', 'diamond', 'star', 'cross'],
63
+ // A light tint of the palette's first color up to the color itself.
64
+ continuous: { min: '#eaf0f6', max: '#4e79a7', labelColor: '#111827', opacityRange: [0.2, 1] },
65
+ margins: { top: 'auto', right: 'auto', bottom: 'auto', left: 'auto' },
66
+ frameClip: { tolerance: 2 },
67
+ // ── Features ────────────────────────────────────────────────────────────────
68
+ axis: {
69
+ color: 'currentColor',
70
+ fontSize: 14,
71
+ labelFontSize: 14,
72
+ titleFontSize: 14,
73
+ xTickSize: 5,
74
+ yTickSize: 5,
75
+ xTickPadding: 10,
76
+ yTickPadding: 10,
77
+ grid: false,
78
+ locale: 'es-AR',
79
+ compactDisplay: 'short',
80
+ edgeTicks: {
81
+ x: { enabled: true, collision: 'drop-nice' },
82
+ y: { enabled: false, collision: 'drop-nice' }
83
+ },
84
+ autoRotate: true
85
+ },
58
86
  legend: {
59
87
  font: 'inherit',
60
88
  size: '0.875rem',
@@ -79,6 +107,10 @@ export const DEFAULT_CONFIG = {
79
107
  height: 20,
80
108
  barHeight: 12,
81
109
  barRadius: 2,
110
+ opacity: {
111
+ color: '#000',
112
+ checker: { size: 4, light: '#fff', dark: '#d4d4d8' }
113
+ },
82
114
  // A slim vertical bar handle, taller than the 12px gradient track.
83
115
  handle: {
84
116
  width: '6px',
@@ -105,23 +137,6 @@ export const DEFAULT_CONFIG = {
105
137
  }
106
138
  }
107
139
  },
108
- axis: {
109
- color: 'currentColor',
110
- fontSize: 14,
111
- labelFontSize: 14,
112
- titleFontSize: 14,
113
- xTickSize: 5,
114
- yTickSize: 5,
115
- xTickPadding: 10,
116
- yTickPadding: 10,
117
- grid: false,
118
- locale: 'es-AR',
119
- compactDisplay: 'short',
120
- edgeTicks: {
121
- x: { enabled: true, collision: 'drop-nice' },
122
- y: { enabled: false, collision: 'drop-nice' }
123
- }
124
- },
125
140
  tooltip: {
126
141
  background: '#111827',
127
142
  color: '#ffffff',
@@ -130,42 +145,31 @@ export const DEFAULT_CONFIG = {
130
145
  radius: '0.375rem',
131
146
  border: 'none'
132
147
  },
133
- margins: { top: 'auto', right: 'auto', bottom: 'auto', left: 'auto' },
134
- frameClip: { tolerance: 5 },
135
- // ColorBrewer Dark2 - qualitative, harmonious, and dark enough to read on white.
136
- palette: ['#1b9e77', '#d95f02', '#7570b3', '#e7298a', '#66a61e', '#e6ab02', '#a6761d', '#666666'],
137
- symbols: ['circle', 'square', 'triangle', 'diamond', 'star', 'cross'],
138
- continuous: { min: '#f7fcfd', max: '#1b9e77', labelColor: '#111827', opacityRange: [0.2, 1] },
139
- line: {
140
- strokeWidth: 3,
141
- dotRadius: 4,
142
- gap: {
143
- stroke: { strokeOpacity: 0.6, strokeDasharray: '4 4' },
144
- dots: {}
145
- }
148
+ hover: {
149
+ rule: { stroke: '#e6580d', strokeOpacity: 0.35, strokeWidth: 1.5, strokeDasharray: '4 4' },
150
+ dot: { dotRadius: 5, dotFill: 'currentColor' },
151
+ font: { fill: 'currentColor', fontSize: 12, dy: -18 },
152
+ area: { fill: '#94a3b8', fillOpacity: 0.4 }
146
153
  },
147
- text: {
148
- declutter: {
149
- elbowGap: 10,
150
- laneStep: 7,
151
- labelGap: 6,
152
- connector: { stroke: '#94a3b8', strokeWidth: 0.5 }
154
+ facet: {
155
+ indicator: {
156
+ background: '#111827',
157
+ color: '#ffffff',
158
+ fontSize: '0.8125rem',
159
+ padding: '0.125rem 0.5rem',
160
+ radius: '999px'
161
+ },
162
+ navButton: {
163
+ background: '#111827',
164
+ color: '#ffffff',
165
+ size: '2rem',
166
+ fontSize: '1.1rem',
167
+ disabledOpacity: 0.3
153
168
  }
154
169
  },
155
- bar: {
156
- gap: { fillOpacity: 0.5 },
157
- seriesPadding: 0.2,
158
- paddingInner: 0.15,
159
- paddingOuter: 0.15
160
- },
161
- pyramid: { gap: { fillOpacity: 0.5 } },
162
- area: { fillOpacity: 0.6 },
163
- histogram: { inset: 1, fillOpacity: 1 },
164
- box: { fillOpacity: 0.9, paddingInner: 0.4, paddingOuter: 0.2 },
165
- scatter: { dotRadius: 5 },
166
170
  timeline: {
167
171
  axisColor: 'currentColor',
168
- activeColor: '#1b9e77',
172
+ activeColor: '#4e79a7',
169
173
  thickness: 60,
170
174
  gap: '12px',
171
175
  rule: {
@@ -190,22 +194,22 @@ export const DEFAULT_CONFIG = {
190
194
  valueWidth: '3rem',
191
195
  button: {
192
196
  size: '2rem',
193
- background: '#1b9e77',
197
+ background: '#4e79a7',
194
198
  color: '#ffffff',
195
- hoverBackground: '#0c4937',
199
+ hoverBackground: '#24384d',
196
200
  radius: '999px'
197
201
  },
198
202
  track: {
199
203
  height: '3px',
200
204
  color: 'color-mix(in srgb, currentColor 25%, transparent)',
201
- fillColor: '#1b9e77',
205
+ fillColor: '#4e79a7',
202
206
  radius: '999px'
203
207
  },
204
- thumb: { size: '14px', color: '#1b9e77' },
208
+ thumb: { size: '14px', color: '#4e79a7' },
205
209
  toggle: {
206
210
  background: 'transparent',
207
211
  color: 'currentColor',
208
- activeBackground: '#1b9e77',
212
+ activeBackground: '#4e79a7',
209
213
  activeColor: '#ffffff',
210
214
  radius: '0.375rem',
211
215
  fontSize: '0.75rem',
@@ -213,11 +217,15 @@ export const DEFAULT_CONFIG = {
213
217
  }
214
218
  }
215
219
  },
216
- hover: {
217
- rule: { stroke: '#e6580d', strokeOpacity: 0.35, strokeWidth: 1.5, strokeDasharray: '4 4' },
218
- dot: { dotRadius: 5, dotFill: 'currentColor' },
219
- font: { fill: 'currentColor', fontSize: 12, dy: -18 },
220
- area: { fill: '#94a3b8', fillOpacity: 0.25 }
220
+ connector: {
221
+ sign: { positive: '#59a14f', negative: '#e15759', zero: '#9ca3af' },
222
+ lengthScheme: ['#d1d5db', '#374151'],
223
+ differenceScheme: ['#e15759', '#e5e7eb', '#59a14f'],
224
+ arrow: { width: 2, headLength: 8, headAngle: 60 },
225
+ capLength: 8,
226
+ outsideOpacity: 0.4,
227
+ labelFontSize: 11,
228
+ labelGap: 4
221
229
  },
222
230
  // Beside a vertical delta (taken on x), above a horizontal one (on y).
223
231
  delta: {
@@ -226,22 +234,79 @@ export const DEFAULT_CONFIG = {
226
234
  y: { dx: 0, dy: -10, lineAnchor: 'middle', textAnchor: 'middle' }
227
235
  }
228
236
  },
229
- facet: {
230
- indicator: {
231
- background: '#111827',
232
- color: '#ffffff',
233
- fontSize: '0.8125rem',
234
- padding: '0.125rem 0.5rem',
235
- radius: '999px'
236
- },
237
- navButton: {
238
- background: '#111827',
239
- color: '#ffffff',
240
- size: '2rem',
241
- fontSize: '1.1rem',
242
- disabledOpacity: 0.3
237
+ text: {
238
+ declutter: {
239
+ elbowGap: 10,
240
+ laneStep: 7,
241
+ labelGap: 6,
242
+ connector: { stroke: '#94a3b8', strokeWidth: 0.5 }
243
+ }
244
+ },
245
+ // ── Plot kinds ──────────────────────────────────────────────────────────────
246
+ area: { fillOpacity: 0.6 },
247
+ bar: {
248
+ gap: { fillOpacity: 0.5 },
249
+ seriesPadding: 0.2,
250
+ paddingInner: 0.15,
251
+ paddingOuter: 0.15
252
+ },
253
+ box: { fillOpacity: 0.9, paddingInner: 0.4, paddingOuter: 0.2 },
254
+ bullet: {
255
+ barThickness: 10,
256
+ rangeWidth: 28,
257
+ rangeColors: ['#9ca3af', '#d1d5db', '#eceff3'],
258
+ targetLength: 22,
259
+ targetWidth: 3,
260
+ paddingInner: 0.4,
261
+ paddingOuter: 0.3
262
+ },
263
+ cleveland: {
264
+ dotRadius: 5,
265
+ stemWidth: 5,
266
+ connectorColor: '#9ca3af',
267
+ labelGap: 10,
268
+ paddingInner: 0.5,
269
+ paddingOuter: 0.5
270
+ },
271
+ density: { fillOpacity: 0.6, strokeWidth: 2 },
272
+ dumbbell: {
273
+ dotRadius: 6,
274
+ stemWidth: 'dots',
275
+ connectorColor: '#9ca3af',
276
+ labelGap: 10,
277
+ paddingInner: 0.5,
278
+ paddingOuter: 0.5
279
+ },
280
+ forest: {
281
+ dotRadius: 5,
282
+ stemWidth: 2,
283
+ caps: true,
284
+ labelGap: 10,
285
+ paddingInner: 0.5,
286
+ paddingOuter: 0.5
287
+ },
288
+ histogram: { inset: 1, fillOpacity: 1 },
289
+ line: {
290
+ curve: 'auto',
291
+ strokeWidth: 3,
292
+ dotRadius: 4,
293
+ gap: {
294
+ stroke: { strokeOpacity: 0.6, strokeDasharray: '4 4' },
295
+ dots: {}
243
296
  }
244
- }
297
+ },
298
+ lollipop: {
299
+ dotRadius: 6,
300
+ stemWidth: 2,
301
+ labelGap: 10,
302
+ paddingInner: 0.5,
303
+ paddingOuter: 0.5
304
+ },
305
+ pyramid: { gap: { fillOpacity: 0.5 } },
306
+ scatter: { dotRadius: 5 },
307
+ slope: { strokeWidth: 2, dotRadius: 5, padding: 0 },
308
+ sparkline: { strokeWidth: 1.5, dotRadius: 3 },
309
+ violin: { fillOpacity: 0.6, paddingInner: 0.2, paddingOuter: 0.2, boxWidth: 8 }
245
310
  };
246
311
  // ── Reactive store ──────────────────────────────────────────────────────────
247
312
  let current = $state(structuredClone(DEFAULT_CONFIG));
@@ -249,9 +314,9 @@ let current = $state(structuredClone(DEFAULT_CONFIG));
249
314
  export function getConfiguration() {
250
315
  return current;
251
316
  }
252
- /** Deep-merge a partial override into the global configuration. Reactive. */
317
+ /** Deep-merge a partial override into the global configuration - a `palette` may be a scheme name. Reactive. */
253
318
  export function setConfiguration(patch) {
254
- current = merge(current, patch);
319
+ current = merge(current, Palette.resolveIn(patch));
255
320
  return current;
256
321
  }
257
322
  /** Restore the shipped defaults. */
@@ -273,6 +338,9 @@ export function configToCssVars(c) {
273
338
  '--dct-font': c.font,
274
339
  '--dct-fg': c.color,
275
340
  '--dct-bg': c.background,
341
+ ...t('title', c.title),
342
+ ...t('subtitle', c.subtitle),
343
+ ...t('caption', c.caption),
276
344
  '--dct-header-pad': c.spacing.headerPadding,
277
345
  '--dct-legend-pad': c.spacing.legendPadding,
278
346
  '--dct-caption-pad': c.spacing.captionPadding,
@@ -282,9 +350,10 @@ export function configToCssVars(c) {
282
350
  '--dct-divider-style': c.divider.style,
283
351
  '--dct-divider-margin': c.divider.margin,
284
352
  '--dct-row-gap': c.chrome.rowGap,
285
- ...t('title', c.title),
286
- ...t('subtitle', c.subtitle),
287
- ...t('caption', c.caption),
353
+ '--dct-heat-min': c.continuous.min,
354
+ '--dct-heat-max': c.continuous.max,
355
+ '--dct-heat-text': c.continuous.labelColor,
356
+ '--dct-axis-color': c.axis.color,
288
357
  '--dct-legend-font': c.legend.font,
289
358
  '--dct-legend-size': c.legend.size,
290
359
  '--dct-legend-weight': String(c.legend.weight),
@@ -312,13 +381,22 @@ export function configToCssVars(c) {
312
381
  '--dct-continuous-label-size': c.legend.continuous.label.size,
313
382
  '--dct-continuous-label-weight': String(c.legend.continuous.label.weight),
314
383
  '--dct-continuous-label-overlap-rotate': c.legend.continuous.label.overlap.rotate,
315
- '--dct-axis-color': c.axis.color,
316
384
  '--dct-tooltip-bg': c.tooltip.background,
317
385
  '--dct-tooltip-color': c.tooltip.color,
318
386
  '--dct-tooltip-size': c.tooltip.fontSize,
319
387
  '--dct-tooltip-pad': c.tooltip.padding,
320
388
  '--dct-tooltip-radius': c.tooltip.radius,
321
389
  '--dct-tooltip-border': c.tooltip.border,
390
+ '--dct-facet-indicator-bg': c.facet.indicator.background,
391
+ '--dct-facet-indicator-color': c.facet.indicator.color,
392
+ '--dct-facet-indicator-size': c.facet.indicator.fontSize,
393
+ '--dct-facet-indicator-pad': c.facet.indicator.padding,
394
+ '--dct-facet-indicator-radius': c.facet.indicator.radius,
395
+ '--dct-facet-nav-bg': c.facet.navButton.background,
396
+ '--dct-facet-nav-color': c.facet.navButton.color,
397
+ '--dct-facet-nav-btn-size': c.facet.navButton.size,
398
+ '--dct-facet-nav-font-size': c.facet.navButton.fontSize,
399
+ '--dct-facet-nav-disabled-opacity': String(c.facet.navButton.disabledOpacity),
322
400
  '--dct-timeline-axis': c.timeline.axisColor,
323
401
  '--dct-timeline-active': c.timeline.activeColor,
324
402
  '--dct-timeline-gap': c.timeline.gap,
@@ -347,20 +425,7 @@ export function configToCssVars(c) {
347
425
  '--dct-player-toggle-active-color': c.timeline.player.toggle.activeColor,
348
426
  '--dct-player-toggle-radius': c.timeline.player.toggle.radius,
349
427
  '--dct-player-toggle-size': c.timeline.player.toggle.fontSize,
350
- '--dct-player-toggle-pad': c.timeline.player.toggle.padding,
351
- '--dct-heat-min': c.continuous.min,
352
- '--dct-heat-max': c.continuous.max,
353
- '--dct-heat-text': c.continuous.labelColor,
354
- '--dct-facet-indicator-bg': c.facet.indicator.background,
355
- '--dct-facet-indicator-color': c.facet.indicator.color,
356
- '--dct-facet-indicator-size': c.facet.indicator.fontSize,
357
- '--dct-facet-indicator-pad': c.facet.indicator.padding,
358
- '--dct-facet-indicator-radius': c.facet.indicator.radius,
359
- '--dct-facet-nav-bg': c.facet.navButton.background,
360
- '--dct-facet-nav-color': c.facet.navButton.color,
361
- '--dct-facet-nav-btn-size': c.facet.navButton.size,
362
- '--dct-facet-nav-font-size': c.facet.navButton.fontSize,
363
- '--dct-facet-nav-disabled-opacity': String(c.facet.navButton.disabledOpacity)
428
+ '--dct-player-toggle-pad': c.timeline.player.toggle.padding
364
429
  };
365
430
  }
366
431
  /** Serialize a CSS-vars record into a `style` attribute string. */