@jcsoftdev/ui 0.0.0-stage → 0.1.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 (1626) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +132 -2
  3. package/bin/ui-theme.mjs +45 -0
  4. package/dist/ai/attachment/attachment.d.ts +19 -0
  5. package/dist/ai/attachment/attachment.js +87 -0
  6. package/dist/ai/attachment/index.d.ts +1 -0
  7. package/dist/ai/attachment/index.js +1 -0
  8. package/dist/ai/chain-of-thought/chain-of-thought.d.ts +21 -0
  9. package/dist/ai/chain-of-thought/chain-of-thought.js +88 -0
  10. package/dist/ai/chain-of-thought/index.d.ts +1 -0
  11. package/dist/ai/chain-of-thought/index.js +1 -0
  12. package/dist/ai/chat-list/chat-list.d.ts +24 -0
  13. package/dist/ai/chat-list/chat-list.js +94 -0
  14. package/dist/ai/chat-list/group.d.ts +12 -0
  15. package/dist/ai/chat-list/group.js +37 -0
  16. package/dist/ai/chat-list/index.d.ts +2 -0
  17. package/dist/ai/chat-list/index.js +7 -0
  18. package/dist/ai/chat-message/chat-message.d.ts +23 -0
  19. package/dist/ai/chat-message/chat-message.js +91 -0
  20. package/dist/ai/chat-message/index.d.ts +1 -0
  21. package/dist/ai/chat-message/index.js +1 -0
  22. package/dist/ai/code-block/code-block.d.ts +12 -0
  23. package/dist/ai/code-block/code-block.js +80 -0
  24. package/dist/ai/code-block/highlight.d.ts +9 -0
  25. package/dist/ai/code-block/highlight.js +160 -0
  26. package/dist/ai/code-block/index.d.ts +2 -0
  27. package/dist/ai/code-block/index.js +9 -0
  28. package/dist/ai/conversation/conversation.d.ts +12 -0
  29. package/dist/ai/conversation/conversation.js +87 -0
  30. package/dist/ai/conversation/index.d.ts +2 -0
  31. package/dist/ai/conversation/index.js +15 -0
  32. package/dist/ai/conversation/stick.d.ts +18 -0
  33. package/dist/ai/conversation/stick.js +22 -0
  34. package/dist/ai/index.d.ts +14 -0
  35. package/dist/ai/index.js +14 -0
  36. package/dist/ai/internal/disclosure.d.ts +13 -0
  37. package/dist/ai/internal/disclosure.js +62 -0
  38. package/dist/ai/internal/icon-action.d.ts +7 -0
  39. package/dist/ai/internal/icon-action.js +21 -0
  40. package/dist/ai/internal/keyframes.d.ts +5 -0
  41. package/dist/ai/internal/keyframes.js +7 -0
  42. package/dist/ai/internal/use-copy.d.ts +5 -0
  43. package/dist/ai/internal/use-copy.js +35 -0
  44. package/dist/ai/loader/index.d.ts +1 -0
  45. package/dist/ai/loader/index.js +1 -0
  46. package/dist/ai/loader/loader.d.ts +12 -0
  47. package/dist/ai/loader/loader.js +41 -0
  48. package/dist/ai/markdown/index.d.ts +2 -0
  49. package/dist/ai/markdown/index.js +6 -0
  50. package/dist/ai/markdown/markdown.d.ts +12 -0
  51. package/dist/ai/markdown/markdown.js +159 -0
  52. package/dist/ai/markdown/parse.d.ts +56 -0
  53. package/dist/ai/markdown/parse.js +229 -0
  54. package/dist/ai/message-actions/index.d.ts +1 -0
  55. package/dist/ai/message-actions/index.js +1 -0
  56. package/dist/ai/message-actions/message-actions.d.ts +15 -0
  57. package/dist/ai/message-actions/message-actions.js +72 -0
  58. package/dist/ai/prompt-input/index.d.ts +2 -0
  59. package/dist/ai/prompt-input/index.js +5 -0
  60. package/dist/ai/prompt-input/keys.d.ts +8 -0
  61. package/dist/ai/prompt-input/keys.js +6 -0
  62. package/dist/ai/prompt-input/prompt-input.d.ts +29 -0
  63. package/dist/ai/prompt-input/prompt-input.js +110 -0
  64. package/dist/ai/prompt-suggestion/index.d.ts +1 -0
  65. package/dist/ai/prompt-suggestion/index.js +1 -0
  66. package/dist/ai/prompt-suggestion/prompt-suggestion.d.ts +13 -0
  67. package/dist/ai/prompt-suggestion/prompt-suggestion.js +44 -0
  68. package/dist/ai/source/index.d.ts +1 -0
  69. package/dist/ai/source/index.js +1 -0
  70. package/dist/ai/source/source.d.ts +12 -0
  71. package/dist/ai/source/source.js +48 -0
  72. package/dist/ai/text-shimmer/index.d.ts +1 -0
  73. package/dist/ai/text-shimmer/index.js +1 -0
  74. package/dist/ai/text-shimmer/text-shimmer.d.ts +11 -0
  75. package/dist/ai/text-shimmer/text-shimmer.js +28 -0
  76. package/dist/ai/tool-call/index.d.ts +1 -0
  77. package/dist/ai/tool-call/index.js +1 -0
  78. package/dist/ai/tool-call/tool-call.d.ts +18 -0
  79. package/dist/ai/tool-call/tool-call.js +84 -0
  80. package/dist/atoms/avatar/avatar.d.ts +11 -0
  81. package/dist/atoms/avatar/avatar.js +39 -0
  82. package/dist/atoms/avatar/index.d.ts +1 -0
  83. package/dist/atoms/avatar/index.js +4 -0
  84. package/dist/atoms/avatar-group/avatar-group.d.ts +7 -0
  85. package/dist/atoms/avatar-group/avatar-group.js +8 -0
  86. package/dist/atoms/avatar-group/index.d.ts +1 -0
  87. package/dist/atoms/avatar-group/index.js +4 -0
  88. package/dist/atoms/big-date/big-date.d.ts +7 -0
  89. package/dist/atoms/big-date/big-date.js +18 -0
  90. package/dist/atoms/big-date/index.d.ts +1 -0
  91. package/dist/atoms/big-date/index.js +4 -0
  92. package/dist/atoms/button/button.d.ts +11 -0
  93. package/dist/atoms/button/button.js +60 -0
  94. package/dist/atoms/button/index.d.ts +1 -0
  95. package/dist/atoms/button/index.js +6 -0
  96. package/dist/atoms/checkbox/checkbox.d.ts +5 -0
  97. package/dist/atoms/checkbox/checkbox.js +18 -0
  98. package/dist/atoms/checkbox/index.d.ts +1 -0
  99. package/dist/atoms/checkbox/index.js +4 -0
  100. package/dist/atoms/chip/chip.d.ts +8 -0
  101. package/dist/atoms/chip/chip.js +28 -0
  102. package/dist/atoms/chip/index.d.ts +1 -0
  103. package/dist/atoms/chip/index.js +4 -0
  104. package/dist/atoms/icon/icon-map.d.ts +42 -0
  105. package/dist/atoms/icon/icon-map.js +81 -0
  106. package/dist/atoms/icon/icon.d.ts +12 -0
  107. package/dist/atoms/icon/icon.js +13 -0
  108. package/dist/atoms/icon/index.d.ts +2 -0
  109. package/dist/atoms/icon/index.js +6 -0
  110. package/dist/atoms/index.d.ts +16 -0
  111. package/dist/atoms/index.js +16 -0
  112. package/dist/atoms/led/index.d.ts +1 -0
  113. package/dist/atoms/led/index.js +4 -0
  114. package/dist/atoms/led/led.d.ts +9 -0
  115. package/dist/atoms/led/led.js +23 -0
  116. package/dist/atoms/number-value/format.d.ts +10 -0
  117. package/dist/atoms/number-value/format.js +19 -0
  118. package/dist/atoms/number-value/index.d.ts +2 -0
  119. package/dist/atoms/number-value/index.js +14 -0
  120. package/dist/atoms/number-value/number-value.d.ts +18 -0
  121. package/dist/atoms/number-value/number-value.js +42 -0
  122. package/dist/atoms/pressable-feedback/index.d.ts +1 -0
  123. package/dist/atoms/pressable-feedback/index.js +4 -0
  124. package/dist/atoms/pressable-feedback/pressable-feedback.d.ts +14 -0
  125. package/dist/atoms/pressable-feedback/pressable-feedback.js +66 -0
  126. package/dist/atoms/progress/index.d.ts +1 -0
  127. package/dist/atoms/progress/index.js +5 -0
  128. package/dist/atoms/progress/progress.d.ts +9 -0
  129. package/dist/atoms/progress/progress.js +29 -0
  130. package/dist/atoms/radio-group/index.d.ts +1 -0
  131. package/dist/atoms/radio-group/index.js +6 -0
  132. package/dist/atoms/radio-group/radio-group.d.ts +11 -0
  133. package/dist/atoms/radio-group/radio-group.js +47 -0
  134. package/dist/atoms/status-dot/index.d.ts +1 -0
  135. package/dist/atoms/status-dot/index.js +6 -0
  136. package/dist/atoms/status-dot/status-dot.d.ts +13 -0
  137. package/dist/atoms/status-dot/status-dot.js +39 -0
  138. package/dist/atoms/status-pill/index.d.ts +1 -0
  139. package/dist/atoms/status-pill/index.js +4 -0
  140. package/dist/atoms/status-pill/status-pill.d.ts +10 -0
  141. package/dist/atoms/status-pill/status-pill.js +25 -0
  142. package/dist/atoms/switch/index.d.ts +1 -0
  143. package/dist/atoms/switch/index.js +4 -0
  144. package/dist/atoms/switch/switch.d.ts +5 -0
  145. package/dist/atoms/switch/switch.js +17 -0
  146. package/dist/atoms/trend-chip/index.d.ts +2 -0
  147. package/dist/atoms/trend-chip/index.js +12 -0
  148. package/dist/atoms/trend-chip/trend-chip.d.ts +14 -0
  149. package/dist/atoms/trend-chip/trend-chip.js +58 -0
  150. package/dist/atoms/trend-chip/trend.d.ts +8 -0
  151. package/dist/atoms/trend-chip/trend.js +21 -0
  152. package/dist/brand/export.d.ts +7 -0
  153. package/dist/brand/export.js +62 -0
  154. package/dist/brand/generate.d.ts +65 -0
  155. package/dist/brand/generate.js +409 -0
  156. package/dist/brand/glyphs.d.ts +16 -0
  157. package/dist/brand/glyphs.js +91 -0
  158. package/dist/brand/index.d.ts +8 -0
  159. package/dist/brand/index.js +8 -0
  160. package/dist/brand/initials.d.ts +6 -0
  161. package/dist/brand/initials.js +41 -0
  162. package/dist/brand/logo-forge.d.ts +42 -0
  163. package/dist/brand/logo-forge.js +441 -0
  164. package/dist/brand/logo-mark.d.ts +8 -0
  165. package/dist/brand/logo-mark.js +34 -0
  166. package/dist/brand/palettes.d.ts +23 -0
  167. package/dist/brand/palettes.js +47 -0
  168. package/dist/brand/rng.d.ts +5 -0
  169. package/dist/brand/rng.js +26 -0
  170. package/dist/calendar/day-chip/day-chip.d.ts +8 -0
  171. package/dist/calendar/day-chip/day-chip.js +34 -0
  172. package/dist/calendar/day-chip/index.d.ts +2 -0
  173. package/dist/calendar/day-chip/index.js +4 -0
  174. package/dist/calendar/event-block/event-block.d.ts +9 -0
  175. package/dist/calendar/event-block/event-block.js +74 -0
  176. package/dist/calendar/event-block/index.d.ts +2 -0
  177. package/dist/calendar/event-block/index.js +4 -0
  178. package/dist/calendar/index.d.ts +5 -0
  179. package/dist/calendar/index.js +5 -0
  180. package/dist/calendar/internal/date-utils.d.ts +18 -0
  181. package/dist/calendar/internal/date-utils.js +66 -0
  182. package/dist/calendar/internal/index.d.ts +3 -0
  183. package/dist/calendar/internal/index.js +3 -0
  184. package/dist/calendar/internal/layout.d.ts +14 -0
  185. package/dist/calendar/internal/layout.js +42 -0
  186. package/dist/calendar/internal/styles.d.ts +2 -0
  187. package/dist/calendar/internal/styles.js +4 -0
  188. package/dist/calendar/internal/types.d.ts +29 -0
  189. package/dist/calendar/internal/types.js +0 -0
  190. package/dist/calendar/month-view/index.d.ts +1 -0
  191. package/dist/calendar/month-view/index.js +4 -0
  192. package/dist/calendar/month-view/month-view.d.ts +24 -0
  193. package/dist/calendar/month-view/month-view.js +110 -0
  194. package/dist/calendar/timeline-view/index.d.ts +1 -0
  195. package/dist/calendar/timeline-view/index.js +4 -0
  196. package/dist/calendar/timeline-view/timeline-view.d.ts +19 -0
  197. package/dist/calendar/timeline-view/timeline-view.js +64 -0
  198. package/dist/calendar/week-view/index.d.ts +1 -0
  199. package/dist/calendar/week-view/index.js +4 -0
  200. package/dist/calendar/week-view/week-view.d.ts +26 -0
  201. package/dist/calendar/week-view/week-view.js +172 -0
  202. package/dist/charts/area-chart/area-chart.d.ts +10 -0
  203. package/dist/charts/area-chart/area-chart.js +14 -0
  204. package/dist/charts/area-chart/index.d.ts +1 -0
  205. package/dist/charts/area-chart/index.js +1 -0
  206. package/dist/charts/bar-chart/bar-chart.d.ts +35 -0
  207. package/dist/charts/bar-chart/bar-chart.js +29 -0
  208. package/dist/charts/bar-chart/bar-race-chart.d.ts +41 -0
  209. package/dist/charts/bar-chart/bar-race-chart.js +252 -0
  210. package/dist/charts/bar-chart/bar-race.d.ts +23 -0
  211. package/dist/charts/bar-chart/bar-race.js +42 -0
  212. package/dist/charts/bar-chart/drilldown-bar-chart.d.ts +18 -0
  213. package/dist/charts/bar-chart/drilldown-bar-chart.js +69 -0
  214. package/dist/charts/bar-chart/index.d.ts +4 -0
  215. package/dist/charts/bar-chart/index.js +4 -0
  216. package/dist/charts/beeswarm-chart/beeswarm-chart.d.ts +53 -0
  217. package/dist/charts/beeswarm-chart/beeswarm-chart.js +356 -0
  218. package/dist/charts/beeswarm-chart/index.d.ts +1 -0
  219. package/dist/charts/beeswarm-chart/index.js +1 -0
  220. package/dist/charts/box-plot/box-plot.d.ts +48 -0
  221. package/dist/charts/box-plot/box-plot.js +330 -0
  222. package/dist/charts/box-plot/index.d.ts +1 -0
  223. package/dist/charts/box-plot/index.js +1 -0
  224. package/dist/charts/bubble-chart/bubble-chart.d.ts +8 -0
  225. package/dist/charts/bubble-chart/bubble-chart.js +9 -0
  226. package/dist/charts/bubble-chart/index.d.ts +1 -0
  227. package/dist/charts/bubble-chart/index.js +1 -0
  228. package/dist/charts/bubble-map/bubble-map.d.ts +94 -0
  229. package/dist/charts/bubble-map/bubble-map.js +520 -0
  230. package/dist/charts/bubble-map/index.d.ts +1 -0
  231. package/dist/charts/bubble-map/index.js +1 -0
  232. package/dist/charts/bullet-chart/bullet-chart.d.ts +49 -0
  233. package/dist/charts/bullet-chart/bullet-chart.js +478 -0
  234. package/dist/charts/bullet-chart/bullet-layout.d.ts +21 -0
  235. package/dist/charts/bullet-chart/bullet-layout.js +30 -0
  236. package/dist/charts/bullet-chart/index.d.ts +2 -0
  237. package/dist/charts/bullet-chart/index.js +2 -0
  238. package/dist/charts/candlestick-chart/candlestick-chart.d.ts +59 -0
  239. package/dist/charts/candlestick-chart/candlestick-chart.js +514 -0
  240. package/dist/charts/candlestick-chart/index.d.ts +1 -0
  241. package/dist/charts/candlestick-chart/index.js +1 -0
  242. package/dist/charts/chart-grid/chart-grid.d.ts +72 -0
  243. package/dist/charts/chart-grid/chart-grid.js +114 -0
  244. package/dist/charts/chart-grid/grid-math.d.ts +26 -0
  245. package/dist/charts/chart-grid/grid-math.js +37 -0
  246. package/dist/charts/chart-grid/index.d.ts +2 -0
  247. package/dist/charts/chart-grid/index.js +2 -0
  248. package/dist/charts/chord-chart/chord-chart.d.ts +59 -0
  249. package/dist/charts/chord-chart/chord-chart.js +427 -0
  250. package/dist/charts/chord-chart/index.d.ts +1 -0
  251. package/dist/charts/chord-chart/index.js +1 -0
  252. package/dist/charts/choropleth-map/choropleth-drilldown.d.ts +36 -0
  253. package/dist/charts/choropleth-map/choropleth-drilldown.js +60 -0
  254. package/dist/charts/choropleth-map/choropleth-map.d.ts +69 -0
  255. package/dist/charts/choropleth-map/choropleth-map.js +304 -0
  256. package/dist/charts/choropleth-map/index.d.ts +2 -0
  257. package/dist/charts/choropleth-map/index.js +2 -0
  258. package/dist/charts/combo-chart/combo-chart.d.ts +15 -0
  259. package/dist/charts/combo-chart/combo-chart.js +14 -0
  260. package/dist/charts/combo-chart/index.d.ts +1 -0
  261. package/dist/charts/combo-chart/index.js +1 -0
  262. package/dist/charts/core/a11y.d.ts +4 -0
  263. package/dist/charts/core/a11y.js +4 -0
  264. package/dist/charts/core/axes.d.ts +41 -0
  265. package/dist/charts/core/axes.js +128 -0
  266. package/dist/charts/core/breadcrumb.d.ts +17 -0
  267. package/dist/charts/core/breadcrumb.js +43 -0
  268. package/dist/charts/core/cartesian/annotations.d.ts +10 -0
  269. package/dist/charts/core/cartesian/annotations.js +139 -0
  270. package/dist/charts/core/cartesian/axis-stack.d.ts +43 -0
  271. package/dist/charts/core/cartesian/axis-stack.js +40 -0
  272. package/dist/charts/core/cartesian/brush.d.ts +31 -0
  273. package/dist/charts/core/cartesian/brush.js +211 -0
  274. package/dist/charts/core/cartesian/cartesian-chart.d.ts +8 -0
  275. package/dist/charts/core/cartesian/cartesian-chart.js +1068 -0
  276. package/dist/charts/core/cartesian/category-group-axis.d.ts +6 -0
  277. package/dist/charts/core/cartesian/category-group-axis.js +39 -0
  278. package/dist/charts/core/cartesian/category-groups.d.ts +15 -0
  279. package/dist/charts/core/cartesian/category-groups.js +23 -0
  280. package/dist/charts/core/cartesian/ink-layer.d.ts +63 -0
  281. package/dist/charts/core/cartesian/ink-layer.js +371 -0
  282. package/dist/charts/core/cartesian/layout.d.ts +164 -0
  283. package/dist/charts/core/cartesian/layout.js +550 -0
  284. package/dist/charts/core/cartesian/marks.d.ts +33 -0
  285. package/dist/charts/core/cartesian/marks.js +110 -0
  286. package/dist/charts/core/cartesian/sync-store.d.ts +34 -0
  287. package/dist/charts/core/cartesian/sync-store.js +61 -0
  288. package/dist/charts/core/cartesian/sync.d.ts +20 -0
  289. package/dist/charts/core/cartesian/sync.js +50 -0
  290. package/dist/charts/core/cartesian/types.d.ts +156 -0
  291. package/dist/charts/core/cartesian/types.js +0 -0
  292. package/dist/charts/core/category-axis.d.ts +37 -0
  293. package/dist/charts/core/category-axis.js +78 -0
  294. package/dist/charts/core/category-explorer.d.ts +48 -0
  295. package/dist/charts/core/category-explorer.js +88 -0
  296. package/dist/charts/core/chart-frame.d.ts +40 -0
  297. package/dist/charts/core/chart-frame.js +63 -0
  298. package/dist/charts/core/chart-states.d.ts +16 -0
  299. package/dist/charts/core/chart-states.js +79 -0
  300. package/dist/charts/core/chord.d.ts +59 -0
  301. package/dist/charts/core/chord.js +104 -0
  302. package/dist/charts/core/color-scale.d.ts +50 -0
  303. package/dist/charts/core/color-scale.js +59 -0
  304. package/dist/charts/core/data-table.d.ts +17 -0
  305. package/dist/charts/core/data-table.js +28 -0
  306. package/dist/charts/core/distribution/brush.d.ts +44 -0
  307. package/dist/charts/core/distribution/brush.js +89 -0
  308. package/dist/charts/core/distribution/dot-stack.d.ts +39 -0
  309. package/dist/charts/core/distribution/dot-stack.js +40 -0
  310. package/dist/charts/core/distribution/explorer.d.ts +23 -0
  311. package/dist/charts/core/distribution/explorer.js +73 -0
  312. package/dist/charts/core/distribution/geometry.d.ts +38 -0
  313. package/dist/charts/core/distribution/geometry.js +37 -0
  314. package/dist/charts/core/distribution/index.d.ts +11 -0
  315. package/dist/charts/core/distribution/index.js +11 -0
  316. package/dist/charts/core/distribution/labels.d.ts +28 -0
  317. package/dist/charts/core/distribution/labels.js +29 -0
  318. package/dist/charts/core/distribution/layout.d.ts +103 -0
  319. package/dist/charts/core/distribution/layout.js +183 -0
  320. package/dist/charts/core/distribution/marks.d.ts +57 -0
  321. package/dist/charts/core/distribution/marks.js +269 -0
  322. package/dist/charts/core/distribution/observations.d.ts +19 -0
  323. package/dist/charts/core/distribution/observations.js +46 -0
  324. package/dist/charts/core/distribution/point-index.d.ts +20 -0
  325. package/dist/charts/core/distribution/point-index.js +47 -0
  326. package/dist/charts/core/distribution/points.d.ts +15 -0
  327. package/dist/charts/core/distribution/points.js +18 -0
  328. package/dist/charts/core/distribution/stats.d.ts +132 -0
  329. package/dist/charts/core/distribution/stats.js +281 -0
  330. package/dist/charts/core/distribution/use-legend.d.ts +31 -0
  331. package/dist/charts/core/distribution/use-legend.js +43 -0
  332. package/dist/charts/core/distribution/xy-points.d.ts +109 -0
  333. package/dist/charts/core/distribution/xy-points.js +968 -0
  334. package/dist/charts/core/downsample.d.ts +21 -0
  335. package/dist/charts/core/downsample.js +65 -0
  336. package/dist/charts/core/drawing-height.d.ts +14 -0
  337. package/dist/charts/core/drawing-height.js +11 -0
  338. package/dist/charts/core/export-menu.d.ts +20 -0
  339. package/dist/charts/core/export-menu.js +52 -0
  340. package/dist/charts/core/export.d.ts +45 -0
  341. package/dist/charts/core/export.js +162 -0
  342. package/dist/charts/core/format.d.ts +48 -0
  343. package/dist/charts/core/format.js +88 -0
  344. package/dist/charts/core/gantt.d.ts +136 -0
  345. package/dist/charts/core/gantt.js +362 -0
  346. package/dist/charts/core/hierarchy-chart.d.ts +76 -0
  347. package/dist/charts/core/hierarchy-chart.js +158 -0
  348. package/dist/charts/core/hierarchy.d.ts +118 -0
  349. package/dist/charts/core/hierarchy.js +229 -0
  350. package/dist/charts/core/index.d.ts +54 -0
  351. package/dist/charts/core/index.js +54 -0
  352. package/dist/charts/core/indicators.d.ts +55 -0
  353. package/dist/charts/core/indicators.js +125 -0
  354. package/dist/charts/core/ink.d.ts +127 -0
  355. package/dist/charts/core/ink.js +178 -0
  356. package/dist/charts/core/legend.d.ts +23 -0
  357. package/dist/charts/core/legend.js +79 -0
  358. package/dist/charts/core/motion.d.ts +33 -0
  359. package/dist/charts/core/motion.js +81 -0
  360. package/dist/charts/core/palette.d.ts +38 -0
  361. package/dist/charts/core/palette.js +52 -0
  362. package/dist/charts/core/path.d.ts +40 -0
  363. package/dist/charts/core/path.js +141 -0
  364. package/dist/charts/core/pattern-defs.d.ts +15 -0
  365. package/dist/charts/core/pattern-defs.js +83 -0
  366. package/dist/charts/core/patterns.d.ts +49 -0
  367. package/dist/charts/core/patterns.js +93 -0
  368. package/dist/charts/core/plot-overlay.d.ts +36 -0
  369. package/dist/charts/core/plot-overlay.js +68 -0
  370. package/dist/charts/core/polar.d.ts +111 -0
  371. package/dist/charts/core/polar.js +173 -0
  372. package/dist/charts/core/sankey.d.ts +168 -0
  373. package/dist/charts/core/sankey.js +354 -0
  374. package/dist/charts/core/scales/band.d.ts +34 -0
  375. package/dist/charts/core/scales/band.js +58 -0
  376. package/dist/charts/core/scales/index.d.ts +4 -0
  377. package/dist/charts/core/scales/index.js +4 -0
  378. package/dist/charts/core/scales/linear.d.ts +27 -0
  379. package/dist/charts/core/scales/linear.js +73 -0
  380. package/dist/charts/core/scales/log.d.ts +8 -0
  381. package/dist/charts/core/scales/log.js +30 -0
  382. package/dist/charts/core/scales/time.d.ts +26 -0
  383. package/dist/charts/core/scales/time.js +98 -0
  384. package/dist/charts/core/shape-morph.d.ts +29 -0
  385. package/dist/charts/core/shape-morph.js +60 -0
  386. package/dist/charts/core/stack.d.ts +14 -0
  387. package/dist/charts/core/stack.js +27 -0
  388. package/dist/charts/core/time-range.d.ts +23 -0
  389. package/dist/charts/core/time-range.js +27 -0
  390. package/dist/charts/core/tooltip.d.ts +38 -0
  391. package/dist/charts/core/tooltip.js +83 -0
  392. package/dist/charts/core/tree-fit.d.ts +29 -0
  393. package/dist/charts/core/tree-fit.js +53 -0
  394. package/dist/charts/core/tree-layout.d.ts +85 -0
  395. package/dist/charts/core/tree-layout.js +237 -0
  396. package/dist/charts/core/tree-radial.d.ts +59 -0
  397. package/dist/charts/core/tree-radial.js +209 -0
  398. package/dist/charts/core/types.d.ts +106 -0
  399. package/dist/charts/core/types.js +18 -0
  400. package/dist/charts/core/unit-glyph.d.ts +40 -0
  401. package/dist/charts/core/unit-glyph.js +61 -0
  402. package/dist/charts/core/unit-icons.d.ts +132 -0
  403. package/dist/charts/core/unit-icons.js +157 -0
  404. package/dist/charts/core/units.d.ts +101 -0
  405. package/dist/charts/core/units.js +161 -0
  406. package/dist/charts/core/use-canvas.d.ts +24 -0
  407. package/dist/charts/core/use-canvas.js +50 -0
  408. package/dist/charts/core/use-chart-size.d.ts +19 -0
  409. package/dist/charts/core/use-chart-size.js +43 -0
  410. package/dist/charts/core/use-drill.d.ts +26 -0
  411. package/dist/charts/core/use-drill.js +67 -0
  412. package/dist/charts/core/use-index-navigation.d.ts +30 -0
  413. package/dist/charts/core/use-index-navigation.js +47 -0
  414. package/dist/charts/core/use-pan-zoom.d.ts +56 -0
  415. package/dist/charts/core/use-pan-zoom.js +163 -0
  416. package/dist/charts/core/use-series-state.d.ts +13 -0
  417. package/dist/charts/core/use-series-state.js +26 -0
  418. package/dist/charts/crossfilter/crossfilter-engine.d.ts +54 -0
  419. package/dist/charts/crossfilter/crossfilter-engine.js +125 -0
  420. package/dist/charts/crossfilter/crossfilter.d.ts +140 -0
  421. package/dist/charts/crossfilter/crossfilter.js +333 -0
  422. package/dist/charts/crossfilter/index.d.ts +2 -0
  423. package/dist/charts/crossfilter/index.js +2 -0
  424. package/dist/charts/donut-chart/center-fit.d.ts +14 -0
  425. package/dist/charts/donut-chart/center-fit.js +29 -0
  426. package/dist/charts/donut-chart/donut-chart.d.ts +73 -0
  427. package/dist/charts/donut-chart/donut-chart.js +639 -0
  428. package/dist/charts/donut-chart/index.d.ts +1 -0
  429. package/dist/charts/donut-chart/index.js +1 -0
  430. package/dist/charts/dumbbell-chart/dumbbell-chart.d.ts +68 -0
  431. package/dist/charts/dumbbell-chart/dumbbell-chart.js +585 -0
  432. package/dist/charts/dumbbell-chart/index.d.ts +1 -0
  433. package/dist/charts/dumbbell-chart/index.js +1 -0
  434. package/dist/charts/fill-gauge-chart/fill-gauge-chart.d.ts +42 -0
  435. package/dist/charts/fill-gauge-chart/fill-gauge-chart.js +259 -0
  436. package/dist/charts/fill-gauge-chart/index.d.ts +1 -0
  437. package/dist/charts/fill-gauge-chart/index.js +1 -0
  438. package/dist/charts/funnel-chart/funnel-chart.d.ts +48 -0
  439. package/dist/charts/funnel-chart/funnel-chart.js +423 -0
  440. package/dist/charts/funnel-chart/index.d.ts +1 -0
  441. package/dist/charts/funnel-chart/index.js +1 -0
  442. package/dist/charts/gantt-chart/gantt-chart.d.ts +120 -0
  443. package/dist/charts/gantt-chart/gantt-chart.js +1144 -0
  444. package/dist/charts/gantt-chart/gantt-export.d.ts +26 -0
  445. package/dist/charts/gantt-chart/gantt-export.js +103 -0
  446. package/dist/charts/gantt-chart/gantt-marks.d.ts +125 -0
  447. package/dist/charts/gantt-chart/gantt-marks.js +602 -0
  448. package/dist/charts/gantt-chart/index.d.ts +1 -0
  449. package/dist/charts/gantt-chart/index.js +1 -0
  450. package/dist/charts/gauge-chart/gauge-chart.d.ts +71 -0
  451. package/dist/charts/gauge-chart/gauge-chart.js +458 -0
  452. package/dist/charts/gauge-chart/index.d.ts +1 -0
  453. package/dist/charts/gauge-chart/index.js +1 -0
  454. package/dist/charts/globe-chart/globe-chart.d.ts +75 -0
  455. package/dist/charts/globe-chart/globe-chart.js +618 -0
  456. package/dist/charts/globe-chart/index.d.ts +1 -0
  457. package/dist/charts/globe-chart/index.js +1 -0
  458. package/dist/charts/heatmap-chart/calendar-heatmap.d.ts +47 -0
  459. package/dist/charts/heatmap-chart/calendar-heatmap.js +159 -0
  460. package/dist/charts/heatmap-chart/calendar-layout.d.ts +27 -0
  461. package/dist/charts/heatmap-chart/calendar-layout.js +47 -0
  462. package/dist/charts/heatmap-chart/datetime-columns.d.ts +8 -0
  463. package/dist/charts/heatmap-chart/datetime-columns.js +29 -0
  464. package/dist/charts/heatmap-chart/drilldown-heatmap.d.ts +33 -0
  465. package/dist/charts/heatmap-chart/drilldown-heatmap.js +58 -0
  466. package/dist/charts/heatmap-chart/heatmap-chart.d.ts +59 -0
  467. package/dist/charts/heatmap-chart/heatmap-chart.js +127 -0
  468. package/dist/charts/heatmap-chart/heatmap-grid.d.ts +75 -0
  469. package/dist/charts/heatmap-chart/heatmap-grid.js +494 -0
  470. package/dist/charts/heatmap-chart/heatmap-scale.d.ts +19 -0
  471. package/dist/charts/heatmap-chart/heatmap-scale.js +38 -0
  472. package/dist/charts/heatmap-chart/hex-layout.d.ts +35 -0
  473. package/dist/charts/heatmap-chart/hex-layout.js +58 -0
  474. package/dist/charts/heatmap-chart/index.d.ts +9 -0
  475. package/dist/charts/heatmap-chart/index.js +12 -0
  476. package/dist/charts/hex-tile-map/hex-layout.d.ts +40 -0
  477. package/dist/charts/hex-tile-map/hex-layout.js +96 -0
  478. package/dist/charts/hex-tile-map/hex-tile-map.d.ts +41 -0
  479. package/dist/charts/hex-tile-map/hex-tile-map.js +307 -0
  480. package/dist/charts/hex-tile-map/index.d.ts +2 -0
  481. package/dist/charts/hex-tile-map/index.js +2 -0
  482. package/dist/charts/hierarchy-morph/hierarchy-morph.d.ts +47 -0
  483. package/dist/charts/hierarchy-morph/hierarchy-morph.js +355 -0
  484. package/dist/charts/hierarchy-morph/index.d.ts +1 -0
  485. package/dist/charts/hierarchy-morph/index.js +1 -0
  486. package/dist/charts/histogram/histogram.d.ts +55 -0
  487. package/dist/charts/histogram/histogram.js +444 -0
  488. package/dist/charts/histogram/index.d.ts +1 -0
  489. package/dist/charts/histogram/index.js +1 -0
  490. package/dist/charts/icicle-chart/icicle-chart.d.ts +41 -0
  491. package/dist/charts/icicle-chart/icicle-chart.js +360 -0
  492. package/dist/charts/icicle-chart/index.d.ts +1 -0
  493. package/dist/charts/icicle-chart/index.js +1 -0
  494. package/dist/charts/index.d.ts +50 -0
  495. package/dist/charts/index.js +50 -0
  496. package/dist/charts/isotype-rows/index.d.ts +1 -0
  497. package/dist/charts/isotype-rows/index.js +1 -0
  498. package/dist/charts/isotype-rows/isotype-rows.d.ts +42 -0
  499. package/dist/charts/isotype-rows/isotype-rows.js +274 -0
  500. package/dist/charts/line-chart/index.d.ts +2 -0
  501. package/dist/charts/line-chart/index.js +2 -0
  502. package/dist/charts/line-chart/line-chart.d.ts +15 -0
  503. package/dist/charts/line-chart/line-chart.js +19 -0
  504. package/dist/charts/line-chart/line-drilldown.d.ts +18 -0
  505. package/dist/charts/line-chart/line-drilldown.js +51 -0
  506. package/dist/charts/lollipop-chart/index.d.ts +1 -0
  507. package/dist/charts/lollipop-chart/index.js +1 -0
  508. package/dist/charts/lollipop-chart/lollipop-chart.d.ts +45 -0
  509. package/dist/charts/lollipop-chart/lollipop-chart.js +325 -0
  510. package/dist/charts/maps/data/peru/index.d.ts +2 -0
  511. package/dist/charts/maps/data/peru/index.js +4 -0
  512. package/dist/charts/maps/data/world/index.d.ts +2 -0
  513. package/dist/charts/maps/data/world/index.js +4 -0
  514. package/dist/charts/maps/geo/build-topology.d.ts +20 -0
  515. package/dist/charts/maps/geo/build-topology.js +175 -0
  516. package/dist/charts/maps/geo/cluster.d.ts +22 -0
  517. package/dist/charts/maps/geo/cluster.js +58 -0
  518. package/dist/charts/maps/geo/geo-path.d.ts +20 -0
  519. package/dist/charts/maps/geo/geo-path.js +132 -0
  520. package/dist/charts/maps/geo/globe.d.ts +72 -0
  521. package/dist/charts/maps/geo/globe.js +223 -0
  522. package/dist/charts/maps/geo/index.d.ts +7 -0
  523. package/dist/charts/maps/geo/index.js +7 -0
  524. package/dist/charts/maps/geo/map-data-table.d.ts +25 -0
  525. package/dist/charts/maps/geo/map-data-table.js +99 -0
  526. package/dist/charts/maps/geo/map-labels.d.ts +33 -0
  527. package/dist/charts/maps/geo/map-labels.js +30 -0
  528. package/dist/charts/maps/geo/map-legend.d.ts +19 -0
  529. package/dist/charts/maps/geo/map-legend.js +70 -0
  530. package/dist/charts/maps/geo/map-viewport.d.ts +69 -0
  531. package/dist/charts/maps/geo/map-viewport.js +326 -0
  532. package/dist/charts/maps/geo/match.d.ts +9 -0
  533. package/dist/charts/maps/geo/match.js +12 -0
  534. package/dist/charts/maps/geo/projection.d.ts +47 -0
  535. package/dist/charts/maps/geo/projection.js +118 -0
  536. package/dist/charts/maps/geo/pure.d.ts +11 -0
  537. package/dist/charts/maps/geo/pure.js +11 -0
  538. package/dist/charts/maps/geo/routes.d.ts +19 -0
  539. package/dist/charts/maps/geo/routes.js +63 -0
  540. package/dist/charts/maps/geo/simplify.d.ts +11 -0
  541. package/dist/charts/maps/geo/simplify.js +49 -0
  542. package/dist/charts/maps/geo/topojson.d.ts +18 -0
  543. package/dist/charts/maps/geo/topojson.js +74 -0
  544. package/dist/charts/maps/geo/types.d.ts +54 -0
  545. package/dist/charts/maps/geo/types.js +0 -0
  546. package/dist/charts/maps/geo/use-map-geometry.d.ts +31 -0
  547. package/dist/charts/maps/geo/use-map-geometry.js +100 -0
  548. package/dist/charts/maps/geo/use-map-view.d.ts +44 -0
  549. package/dist/charts/maps/geo/use-map-view.js +199 -0
  550. package/dist/charts/maps/geo/view.d.ts +30 -0
  551. package/dist/charts/maps/geo/view.js +55 -0
  552. package/dist/charts/maps/index.d.ts +1 -0
  553. package/dist/charts/maps/index.js +1 -0
  554. package/dist/charts/parliament-chart/index.d.ts +1 -0
  555. package/dist/charts/parliament-chart/index.js +1 -0
  556. package/dist/charts/parliament-chart/parliament-chart.d.ts +40 -0
  557. package/dist/charts/parliament-chart/parliament-chart.js +325 -0
  558. package/dist/charts/pictogram-chart/index.d.ts +1 -0
  559. package/dist/charts/pictogram-chart/index.js +1 -0
  560. package/dist/charts/pictogram-chart/pictogram-chart.d.ts +43 -0
  561. package/dist/charts/pictogram-chart/pictogram-chart.js +319 -0
  562. package/dist/charts/pie-chart/index.d.ts +1 -0
  563. package/dist/charts/pie-chart/index.js +1 -0
  564. package/dist/charts/pie-chart/pie-chart.d.ts +7 -0
  565. package/dist/charts/pie-chart/pie-chart.js +9 -0
  566. package/dist/charts/polar-area-chart/index.d.ts +1 -0
  567. package/dist/charts/polar-area-chart/index.js +1 -0
  568. package/dist/charts/polar-area-chart/polar-area-chart.d.ts +46 -0
  569. package/dist/charts/polar-area-chart/polar-area-chart.js +389 -0
  570. package/dist/charts/progress-units/index.d.ts +1 -0
  571. package/dist/charts/progress-units/index.js +1 -0
  572. package/dist/charts/progress-units/progress-units.d.ts +39 -0
  573. package/dist/charts/progress-units/progress-units.js +154 -0
  574. package/dist/charts/radar-chart/index.d.ts +1 -0
  575. package/dist/charts/radar-chart/index.js +1 -0
  576. package/dist/charts/radar-chart/radar-chart.d.ts +44 -0
  577. package/dist/charts/radar-chart/radar-chart.js +434 -0
  578. package/dist/charts/radial-bar-chart/index.d.ts +1 -0
  579. package/dist/charts/radial-bar-chart/index.js +1 -0
  580. package/dist/charts/radial-bar-chart/radial-bar-chart.d.ts +53 -0
  581. package/dist/charts/radial-bar-chart/radial-bar-chart.js +430 -0
  582. package/dist/charts/raincloud-chart/index.d.ts +1 -0
  583. package/dist/charts/raincloud-chart/index.js +1 -0
  584. package/dist/charts/raincloud-chart/raincloud-chart.d.ts +39 -0
  585. package/dist/charts/raincloud-chart/raincloud-chart.js +363 -0
  586. package/dist/charts/range-area-chart/index.d.ts +1 -0
  587. package/dist/charts/range-area-chart/index.js +1 -0
  588. package/dist/charts/range-area-chart/range-area-chart.d.ts +52 -0
  589. package/dist/charts/range-area-chart/range-area-chart.js +414 -0
  590. package/dist/charts/sankey-chart/alluvial-chart.d.ts +11 -0
  591. package/dist/charts/sankey-chart/alluvial-chart.js +45 -0
  592. package/dist/charts/sankey-chart/index.d.ts +2 -0
  593. package/dist/charts/sankey-chart/index.js +2 -0
  594. package/dist/charts/sankey-chart/sankey-chart.d.ts +91 -0
  595. package/dist/charts/sankey-chart/sankey-chart.js +868 -0
  596. package/dist/charts/scatter-chart/index.d.ts +1 -0
  597. package/dist/charts/scatter-chart/index.js +1 -0
  598. package/dist/charts/scatter-chart/scatter-chart.d.ts +7 -0
  599. package/dist/charts/scatter-chart/scatter-chart.js +9 -0
  600. package/dist/charts/slope-chart/index.d.ts +2 -0
  601. package/dist/charts/slope-chart/index.js +2 -0
  602. package/dist/charts/slope-chart/label-layout.d.ts +10 -0
  603. package/dist/charts/slope-chart/label-layout.js +35 -0
  604. package/dist/charts/slope-chart/slope-chart.d.ts +43 -0
  605. package/dist/charts/slope-chart/slope-chart.js +421 -0
  606. package/dist/charts/sparkline/index.d.ts +1 -0
  607. package/dist/charts/sparkline/index.js +1 -0
  608. package/dist/charts/sparkline/sparkline.d.ts +30 -0
  609. package/dist/charts/sparkline/sparkline.js +227 -0
  610. package/dist/charts/stock-chart/index.d.ts +1 -0
  611. package/dist/charts/stock-chart/index.js +1 -0
  612. package/dist/charts/stock-chart/stock-chart.d.ts +103 -0
  613. package/dist/charts/stock-chart/stock-chart.js +552 -0
  614. package/dist/charts/stock-chart/stock-drawing-layer.d.ts +66 -0
  615. package/dist/charts/stock-chart/stock-drawing-layer.js +338 -0
  616. package/dist/charts/stock-chart/stock-drawings.d.ts +68 -0
  617. package/dist/charts/stock-chart/stock-drawings.js +74 -0
  618. package/dist/charts/stock-chart/stock-model.d.ts +87 -0
  619. package/dist/charts/stock-chart/stock-model.js +83 -0
  620. package/dist/charts/stock-chart/stock-plot.d.ts +84 -0
  621. package/dist/charts/stock-chart/stock-plot.js +1005 -0
  622. package/dist/charts/stock-chart/stock-stats.d.ts +49 -0
  623. package/dist/charts/stock-chart/stock-stats.js +68 -0
  624. package/dist/charts/stock-chart/stock-transforms.d.ts +19 -0
  625. package/dist/charts/stock-chart/stock-transforms.js +72 -0
  626. package/dist/charts/stock-chart/use-stock-stream.d.ts +16 -0
  627. package/dist/charts/stock-chart/use-stock-stream.js +16 -0
  628. package/dist/charts/stream-graph/index.d.ts +2 -0
  629. package/dist/charts/stream-graph/index.js +2 -0
  630. package/dist/charts/stream-graph/stream-graph.d.ts +38 -0
  631. package/dist/charts/stream-graph/stream-graph.js +415 -0
  632. package/dist/charts/stream-graph/stream-layout.d.ts +34 -0
  633. package/dist/charts/stream-graph/stream-layout.js +89 -0
  634. package/dist/charts/sunburst-chart/index.d.ts +1 -0
  635. package/dist/charts/sunburst-chart/index.js +1 -0
  636. package/dist/charts/sunburst-chart/sunburst-chart.d.ts +44 -0
  637. package/dist/charts/sunburst-chart/sunburst-chart.js +437 -0
  638. package/dist/charts/timeline-chart/index.d.ts +2 -0
  639. package/dist/charts/timeline-chart/index.js +2 -0
  640. package/dist/charts/timeline-chart/timeline-chart.d.ts +70 -0
  641. package/dist/charts/timeline-chart/timeline-chart.js +524 -0
  642. package/dist/charts/timeline-chart/timeline-lanes.d.ts +43 -0
  643. package/dist/charts/timeline-chart/timeline-lanes.js +65 -0
  644. package/dist/charts/tree-chart/index.d.ts +3 -0
  645. package/dist/charts/tree-chart/index.js +3 -0
  646. package/dist/charts/tree-chart/tree-card.d.ts +37 -0
  647. package/dist/charts/tree-chart/tree-card.js +94 -0
  648. package/dist/charts/tree-chart/tree-chart.d.ts +118 -0
  649. package/dist/charts/tree-chart/tree-chart.js +850 -0
  650. package/dist/charts/tree-chart/tree-model.d.ts +87 -0
  651. package/dist/charts/tree-chart/tree-model.js +116 -0
  652. package/dist/charts/tree-chart/use-tree-transition.d.ts +16 -0
  653. package/dist/charts/tree-chart/use-tree-transition.js +84 -0
  654. package/dist/charts/treemap-chart/index.d.ts +1 -0
  655. package/dist/charts/treemap-chart/index.js +1 -0
  656. package/dist/charts/treemap-chart/treemap-chart.d.ts +44 -0
  657. package/dist/charts/treemap-chart/treemap-chart.js +347 -0
  658. package/dist/charts/violin-chart/index.d.ts +1 -0
  659. package/dist/charts/violin-chart/index.js +1 -0
  660. package/dist/charts/violin-chart/violin-chart.d.ts +53 -0
  661. package/dist/charts/violin-chart/violin-chart.js +406 -0
  662. package/dist/charts/waffle-chart/index.d.ts +1 -0
  663. package/dist/charts/waffle-chart/index.js +1 -0
  664. package/dist/charts/waffle-chart/waffle-chart.d.ts +40 -0
  665. package/dist/charts/waffle-chart/waffle-chart.js +273 -0
  666. package/dist/charts/waterfall-chart/index.d.ts +2 -0
  667. package/dist/charts/waterfall-chart/index.js +2 -0
  668. package/dist/charts/waterfall-chart/waterfall-chart.d.ts +38 -0
  669. package/dist/charts/waterfall-chart/waterfall-chart.js +531 -0
  670. package/dist/charts/waterfall-chart/waterfall-layout.d.ts +51 -0
  671. package/dist/charts/waterfall-chart/waterfall-layout.js +54 -0
  672. package/dist/containers/action-bar/action-bar.d.ts +18 -0
  673. package/dist/containers/action-bar/action-bar.js +63 -0
  674. package/dist/containers/action-bar/index.d.ts +1 -0
  675. package/dist/containers/action-bar/index.js +4 -0
  676. package/dist/containers/banner/banner.d.ts +10 -0
  677. package/dist/containers/banner/banner.js +49 -0
  678. package/dist/containers/banner/index.d.ts +1 -0
  679. package/dist/containers/banner/index.js +1 -0
  680. package/dist/containers/card/card.d.ts +6 -0
  681. package/dist/containers/card/card.js +47 -0
  682. package/dist/containers/card/index.d.ts +1 -0
  683. package/dist/containers/card/index.js +1 -0
  684. package/dist/containers/carousel/carousel.d.ts +19 -0
  685. package/dist/containers/carousel/carousel.js +178 -0
  686. package/dist/containers/carousel/index.d.ts +2 -0
  687. package/dist/containers/carousel/index.js +7 -0
  688. package/dist/containers/carousel/model.d.ts +4 -0
  689. package/dist/containers/carousel/model.js +22 -0
  690. package/dist/containers/cell/cell.d.ts +44 -0
  691. package/dist/containers/cell/cell.js +83 -0
  692. package/dist/containers/cell/index.d.ts +1 -0
  693. package/dist/containers/cell/index.js +6 -0
  694. package/dist/containers/cols/cols.d.ts +15 -0
  695. package/dist/containers/cols/cols.js +46 -0
  696. package/dist/containers/cols/index.d.ts +1 -0
  697. package/dist/containers/cols/index.js +1 -0
  698. package/dist/containers/comment/comment.d.ts +14 -0
  699. package/dist/containers/comment/comment.js +44 -0
  700. package/dist/containers/comment/index.d.ts +1 -0
  701. package/dist/containers/comment/index.js +1 -0
  702. package/dist/containers/data-grid/chart-panel.d.ts +24 -0
  703. package/dist/containers/data-grid/chart-panel.js +114 -0
  704. package/dist/containers/data-grid/chart-range.d.ts +46 -0
  705. package/dist/containers/data-grid/chart-range.js +73 -0
  706. package/dist/containers/data-grid/column-groups.d.ts +15 -0
  707. package/dist/containers/data-grid/column-groups.js +29 -0
  708. package/dist/containers/data-grid/column-menu.d.ts +28 -0
  709. package/dist/containers/data-grid/column-menu.js +361 -0
  710. package/dist/containers/data-grid/data-grid.d.ts +199 -0
  711. package/dist/containers/data-grid/data-grid.demos.d.ts +15 -0
  712. package/dist/containers/data-grid/data-grid.demos.js +578 -0
  713. package/dist/containers/data-grid/data-grid.fixtures.d.ts +61 -0
  714. package/dist/containers/data-grid/data-grid.fixtures.js +316 -0
  715. package/dist/containers/data-grid/data-grid.js +2850 -0
  716. package/dist/containers/data-grid/data-grid.samples.d.ts +81 -0
  717. package/dist/containers/data-grid/data-grid.samples.js +345 -0
  718. package/dist/containers/data-grid/data-source.d.ts +56 -0
  719. package/dist/containers/data-grid/data-source.js +90 -0
  720. package/dist/containers/data-grid/fill-series.d.ts +97 -0
  721. package/dist/containers/data-grid/fill-series.js +168 -0
  722. package/dist/containers/data-grid/filter-builder-editor.d.ts +18 -0
  723. package/dist/containers/data-grid/filter-builder-editor.js +207 -0
  724. package/dist/containers/data-grid/filter-builder.d.ts +47 -0
  725. package/dist/containers/data-grid/filter-builder.js +227 -0
  726. package/dist/containers/data-grid/formula-bar.d.ts +18 -0
  727. package/dist/containers/data-grid/formula-bar.js +68 -0
  728. package/dist/containers/data-grid/formula-sheet.d.ts +48 -0
  729. package/dist/containers/data-grid/formula-sheet.js +175 -0
  730. package/dist/containers/data-grid/formula.d.ts +86 -0
  731. package/dist/containers/data-grid/formula.js +580 -0
  732. package/dist/containers/data-grid/grid-edit.d.ts +52 -0
  733. package/dist/containers/data-grid/grid-edit.js +99 -0
  734. package/dist/containers/data-grid/grid-toolbar.d.ts +53 -0
  735. package/dist/containers/data-grid/grid-toolbar.js +266 -0
  736. package/dist/containers/data-grid/history.d.ts +61 -0
  737. package/dist/containers/data-grid/history.js +84 -0
  738. package/dist/containers/data-grid/index.d.ts +18 -0
  739. package/dist/containers/data-grid/index.js +18 -0
  740. package/dist/containers/data-grid/labels.d.ts +141 -0
  741. package/dist/containers/data-grid/labels.js +157 -0
  742. package/dist/containers/data-grid/model.d.ts +93 -0
  743. package/dist/containers/data-grid/model.js +481 -0
  744. package/dist/containers/data-grid/pivot.d.ts +36 -0
  745. package/dist/containers/data-grid/pivot.js +126 -0
  746. package/dist/containers/data-grid/range.d.ts +41 -0
  747. package/dist/containers/data-grid/range.js +78 -0
  748. package/dist/containers/data-grid/rows.d.ts +26 -0
  749. package/dist/containers/data-grid/rows.js +67 -0
  750. package/dist/containers/data-grid/spreadsheet.demos.d.ts +75 -0
  751. package/dist/containers/data-grid/spreadsheet.demos.js +423 -0
  752. package/dist/containers/data-grid/tool-panel.d.ts +31 -0
  753. package/dist/containers/data-grid/tool-panel.js +222 -0
  754. package/dist/containers/data-grid/tree.d.ts +25 -0
  755. package/dist/containers/data-grid/tree.js +65 -0
  756. package/dist/containers/data-grid/types.d.ts +154 -0
  757. package/dist/containers/data-grid/types.js +0 -0
  758. package/dist/containers/data-grid/use-data-source.d.ts +31 -0
  759. package/dist/containers/data-grid/use-data-source.js +77 -0
  760. package/dist/containers/data-grid/use-grid-layout.d.ts +25 -0
  761. package/dist/containers/data-grid/use-grid-layout.js +99 -0
  762. package/dist/containers/data-grid/virtual.d.ts +53 -0
  763. package/dist/containers/data-grid/virtual.js +90 -0
  764. package/dist/containers/data-grid/xlsx-export.d.ts +9 -0
  765. package/dist/containers/data-grid/xlsx-export.js +39 -0
  766. package/dist/containers/description-list/description-list.d.ts +8 -0
  767. package/dist/containers/description-list/description-list.js +19 -0
  768. package/dist/containers/description-list/index.d.ts +1 -0
  769. package/dist/containers/description-list/index.js +1 -0
  770. package/dist/containers/facts/facts.d.ts +8 -0
  771. package/dist/containers/facts/facts.js +20 -0
  772. package/dist/containers/facts/index.d.ts +1 -0
  773. package/dist/containers/facts/index.js +1 -0
  774. package/dist/containers/file-tree/file-tree.d.ts +18 -0
  775. package/dist/containers/file-tree/file-tree.js +154 -0
  776. package/dist/containers/file-tree/index.d.ts +2 -0
  777. package/dist/containers/file-tree/index.js +16 -0
  778. package/dist/containers/file-tree/model.d.ts +37 -0
  779. package/dist/containers/file-tree/model.js +83 -0
  780. package/dist/containers/generic-row/generic-row.d.ts +16 -0
  781. package/dist/containers/generic-row/generic-row.js +29 -0
  782. package/dist/containers/generic-row/index.d.ts +1 -0
  783. package/dist/containers/generic-row/index.js +1 -0
  784. package/dist/containers/hbars/hbars.d.ts +57 -0
  785. package/dist/containers/hbars/hbars.js +124 -0
  786. package/dist/containers/hbars/index.d.ts +1 -0
  787. package/dist/containers/hbars/index.js +1 -0
  788. package/dist/containers/highlight-line/highlight-line.d.ts +7 -0
  789. package/dist/containers/highlight-line/highlight-line.js +14 -0
  790. package/dist/containers/highlight-line/index.d.ts +1 -0
  791. package/dist/containers/highlight-line/index.js +1 -0
  792. package/dist/containers/index.d.ts +26 -0
  793. package/dist/containers/index.js +26 -0
  794. package/dist/containers/item-card-group/index.d.ts +1 -0
  795. package/dist/containers/item-card-group/index.js +6 -0
  796. package/dist/containers/item-card-group/item-card-group.d.ts +22 -0
  797. package/dist/containers/item-card-group/item-card-group.js +66 -0
  798. package/dist/containers/kanban/index.d.ts +2 -0
  799. package/dist/containers/kanban/index.js +16 -0
  800. package/dist/containers/kanban/kanban.d.ts +22 -0
  801. package/dist/containers/kanban/kanban.js +329 -0
  802. package/dist/containers/kanban/model.d.ts +49 -0
  803. package/dist/containers/kanban/model.js +77 -0
  804. package/dist/containers/kpi/index.d.ts +1 -0
  805. package/dist/containers/kpi/index.js +1 -0
  806. package/dist/containers/kpi/kpi.d.ts +15 -0
  807. package/dist/containers/kpi/kpi.js +40 -0
  808. package/dist/containers/kpi-group/index.d.ts +1 -0
  809. package/dist/containers/kpi-group/index.js +4 -0
  810. package/dist/containers/kpi-group/kpi-group.d.ts +25 -0
  811. package/dist/containers/kpi-group/kpi-group.js +40 -0
  812. package/dist/containers/page-header/index.d.ts +1 -0
  813. package/dist/containers/page-header/index.js +1 -0
  814. package/dist/containers/page-header/page-header.d.ts +17 -0
  815. package/dist/containers/page-header/page-header.js +42 -0
  816. package/dist/containers/resizable/index.d.ts +2 -0
  817. package/dist/containers/resizable/index.js +14 -0
  818. package/dist/containers/resizable/model.d.ts +18 -0
  819. package/dist/containers/resizable/model.js +62 -0
  820. package/dist/containers/resizable/resizable.d.ts +27 -0
  821. package/dist/containers/resizable/resizable.js +234 -0
  822. package/dist/containers/scrolly/index.d.ts +2 -0
  823. package/dist/containers/scrolly/index.js +9 -0
  824. package/dist/containers/scrolly/scrolly-logic.d.ts +16 -0
  825. package/dist/containers/scrolly/scrolly-logic.js +29 -0
  826. package/dist/containers/scrolly/scrolly.d.ts +45 -0
  827. package/dist/containers/scrolly/scrolly.js +154 -0
  828. package/dist/containers/settings-layout/index.d.ts +1 -0
  829. package/dist/containers/settings-layout/index.js +1 -0
  830. package/dist/containers/settings-layout/settings-layout.d.ts +21 -0
  831. package/dist/containers/settings-layout/settings-layout.js +71 -0
  832. package/dist/containers/settings-row/index.d.ts +1 -0
  833. package/dist/containers/settings-row/index.js +1 -0
  834. package/dist/containers/settings-row/settings-row.d.ts +10 -0
  835. package/dist/containers/settings-row/settings-row.js +31 -0
  836. package/dist/containers/table/index.d.ts +1 -0
  837. package/dist/containers/table/index.js +1 -0
  838. package/dist/containers/table/pin.d.ts +33 -0
  839. package/dist/containers/table/pin.js +56 -0
  840. package/dist/containers/table/table.d.ts +60 -0
  841. package/dist/containers/table/table.js +325 -0
  842. package/dist/containers/timeline/index.d.ts +1 -0
  843. package/dist/containers/timeline/index.js +6 -0
  844. package/dist/containers/timeline/timeline.d.ts +25 -0
  845. package/dist/containers/timeline/timeline.js +56 -0
  846. package/dist/containers/toolbar/index.d.ts +1 -0
  847. package/dist/containers/toolbar/index.js +1 -0
  848. package/dist/containers/toolbar/toolbar.d.ts +7 -0
  849. package/dist/containers/toolbar/toolbar.js +18 -0
  850. package/dist/dashboards/data.d.ts +29 -0
  851. package/dist/dashboards/data.js +42 -0
  852. package/dist/dashboards/inicio-dashboard.d.ts +1 -0
  853. package/dist/dashboards/inicio-dashboard.js +200 -0
  854. package/dist/dashboards/layout.d.ts +33 -0
  855. package/dist/dashboards/layout.js +55 -0
  856. package/dist/forms/accent-picker/accent-picker.d.ts +20 -0
  857. package/dist/forms/accent-picker/accent-picker.js +51 -0
  858. package/dist/forms/accent-picker/index.d.ts +1 -0
  859. package/dist/forms/accent-picker/index.js +6 -0
  860. package/dist/forms/checkbox-button-group/checkbox-button-group.d.ts +16 -0
  861. package/dist/forms/checkbox-button-group/checkbox-button-group.js +52 -0
  862. package/dist/forms/checkbox-button-group/index.d.ts +1 -0
  863. package/dist/forms/checkbox-button-group/index.js +6 -0
  864. package/dist/forms/dropzone/dropzone.d.ts +19 -0
  865. package/dist/forms/dropzone/dropzone.js +103 -0
  866. package/dist/forms/dropzone/index.d.ts +1 -0
  867. package/dist/forms/dropzone/index.js +6 -0
  868. package/dist/forms/emoji-picker/emoji-data.d.ts +14 -0
  869. package/dist/forms/emoji-picker/emoji-data.js +160 -0
  870. package/dist/forms/emoji-picker/emoji-picker.d.ts +16 -0
  871. package/dist/forms/emoji-picker/emoji-picker.js +124 -0
  872. package/dist/forms/emoji-picker/index.d.ts +3 -0
  873. package/dist/forms/emoji-picker/index.js +9 -0
  874. package/dist/forms/emoji-picker/model.d.ts +8 -0
  875. package/dist/forms/emoji-picker/model.js +44 -0
  876. package/dist/forms/emoji-reaction-button/emoji-reaction-button.d.ts +28 -0
  877. package/dist/forms/emoji-reaction-button/emoji-reaction-button.js +95 -0
  878. package/dist/forms/emoji-reaction-button/index.d.ts +1 -0
  879. package/dist/forms/emoji-reaction-button/index.js +8 -0
  880. package/dist/forms/field/field.d.ts +16 -0
  881. package/dist/forms/field/field.js +26 -0
  882. package/dist/forms/field/index.d.ts +1 -0
  883. package/dist/forms/field/index.js +4 -0
  884. package/dist/forms/form-grid/form-grid.d.ts +7 -0
  885. package/dist/forms/form-grid/form-grid.js +17 -0
  886. package/dist/forms/form-grid/index.d.ts +1 -0
  887. package/dist/forms/form-grid/index.js +4 -0
  888. package/dist/forms/index.d.ts +20 -0
  889. package/dist/forms/index.js +20 -0
  890. package/dist/forms/inline-select/index.d.ts +1 -0
  891. package/dist/forms/inline-select/index.js +6 -0
  892. package/dist/forms/inline-select/inline-select.d.ts +14 -0
  893. package/dist/forms/inline-select/inline-select.js +28 -0
  894. package/dist/forms/input/index.d.ts +1 -0
  895. package/dist/forms/input/index.js +4 -0
  896. package/dist/forms/input/input.d.ts +4 -0
  897. package/dist/forms/input/input.js +17 -0
  898. package/dist/forms/input-icon/index.d.ts +1 -0
  899. package/dist/forms/input-icon/index.js +4 -0
  900. package/dist/forms/input-icon/input-icon.d.ts +7 -0
  901. package/dist/forms/input-icon/input-icon.js +19 -0
  902. package/dist/forms/internal/button-option.d.ts +18 -0
  903. package/dist/forms/internal/button-option.js +29 -0
  904. package/dist/forms/label/index.d.ts +1 -0
  905. package/dist/forms/label/index.js +4 -0
  906. package/dist/forms/label/label.d.ts +4 -0
  907. package/dist/forms/label/label.js +11 -0
  908. package/dist/forms/native-select/index.d.ts +1 -0
  909. package/dist/forms/native-select/index.js +6 -0
  910. package/dist/forms/native-select/native-select.d.ts +23 -0
  911. package/dist/forms/native-select/native-select.js +52 -0
  912. package/dist/forms/number-stepper/index.d.ts +1 -0
  913. package/dist/forms/number-stepper/index.js +4 -0
  914. package/dist/forms/number-stepper/number-stepper.d.ts +17 -0
  915. package/dist/forms/number-stepper/number-stepper.js +108 -0
  916. package/dist/forms/pin-input/index.d.ts +1 -0
  917. package/dist/forms/pin-input/index.js +4 -0
  918. package/dist/forms/pin-input/pin-input.d.ts +16 -0
  919. package/dist/forms/pin-input/pin-input.js +61 -0
  920. package/dist/forms/radio-button-group/index.d.ts +1 -0
  921. package/dist/forms/radio-button-group/index.js +6 -0
  922. package/dist/forms/radio-button-group/radio-button-group.d.ts +19 -0
  923. package/dist/forms/radio-button-group/radio-button-group.js +52 -0
  924. package/dist/forms/rating/index.d.ts +2 -0
  925. package/dist/forms/rating/index.js +9 -0
  926. package/dist/forms/rating/model.d.ts +8 -0
  927. package/dist/forms/rating/model.js +37 -0
  928. package/dist/forms/rating/rating.d.ts +20 -0
  929. package/dist/forms/rating/rating.js +114 -0
  930. package/dist/forms/select/index.d.ts +1 -0
  931. package/dist/forms/select/index.js +4 -0
  932. package/dist/forms/select/select.d.ts +8 -0
  933. package/dist/forms/select/select.js +28 -0
  934. package/dist/forms/slider/index.d.ts +2 -0
  935. package/dist/forms/slider/index.js +22 -0
  936. package/dist/forms/slider/model.d.ts +16 -0
  937. package/dist/forms/slider/model.js +65 -0
  938. package/dist/forms/slider/slider.d.ts +43 -0
  939. package/dist/forms/slider/slider.js +180 -0
  940. package/dist/forms/textarea/index.d.ts +1 -0
  941. package/dist/forms/textarea/index.js +4 -0
  942. package/dist/forms/textarea/textarea.d.ts +4 -0
  943. package/dist/forms/textarea/textarea.js +17 -0
  944. package/dist/forms/time-input/index.d.ts +1 -0
  945. package/dist/forms/time-input/index.js +4 -0
  946. package/dist/forms/time-input/time-input.d.ts +15 -0
  947. package/dist/forms/time-input/time-input.js +87 -0
  948. package/dist/navigation/floating-toc/floating-toc.d.ts +21 -0
  949. package/dist/navigation/floating-toc/floating-toc.js +86 -0
  950. package/dist/navigation/floating-toc/index.d.ts +2 -0
  951. package/dist/navigation/floating-toc/index.js +6 -0
  952. package/dist/navigation/floating-toc/model.d.ts +13 -0
  953. package/dist/navigation/floating-toc/model.js +9 -0
  954. package/dist/navigation/index.d.ts +4 -0
  955. package/dist/navigation/index.js +4 -0
  956. package/dist/navigation/segmented/index.d.ts +1 -0
  957. package/dist/navigation/segmented/index.js +8 -0
  958. package/dist/navigation/segmented/segmented.d.ts +9 -0
  959. package/dist/navigation/segmented/segmented.js +33 -0
  960. package/dist/navigation/stepper/index.d.ts +1 -0
  961. package/dist/navigation/stepper/index.js +4 -0
  962. package/dist/navigation/stepper/stepper.d.ts +11 -0
  963. package/dist/navigation/stepper/stepper.js +58 -0
  964. package/dist/navigation/tabs/index.d.ts +1 -0
  965. package/dist/navigation/tabs/index.js +12 -0
  966. package/dist/navigation/tabs/tabs.d.ts +20 -0
  967. package/dist/navigation/tabs/tabs.js +44 -0
  968. package/dist/overlays/context-menu/context-menu.d.ts +40 -0
  969. package/dist/overlays/context-menu/context-menu.js +201 -0
  970. package/dist/overlays/context-menu/index.d.ts +1 -0
  971. package/dist/overlays/context-menu/index.js +20 -0
  972. package/dist/overlays/dialog/dialog.d.ts +27 -0
  973. package/dist/overlays/dialog/dialog.js +128 -0
  974. package/dist/overlays/dialog/index.d.ts +1 -0
  975. package/dist/overlays/dialog/index.js +20 -0
  976. package/dist/overlays/drawer/drawer.d.ts +18 -0
  977. package/dist/overlays/drawer/drawer.js +82 -0
  978. package/dist/overlays/drawer/index.d.ts +1 -0
  979. package/dist/overlays/drawer/index.js +14 -0
  980. package/dist/overlays/dropdown-menu/dropdown-menu.d.ts +19 -0
  981. package/dist/overlays/dropdown-menu/dropdown-menu.js +72 -0
  982. package/dist/overlays/dropdown-menu/index.d.ts +1 -0
  983. package/dist/overlays/dropdown-menu/index.js +20 -0
  984. package/dist/overlays/focus-return/focus-return.d.ts +30 -0
  985. package/dist/overlays/focus-return/focus-return.js +36 -0
  986. package/dist/overlays/focus-return/index.d.ts +1 -0
  987. package/dist/overlays/focus-return/index.js +12 -0
  988. package/dist/overlays/hover-card/hover-card.d.ts +28 -0
  989. package/dist/overlays/hover-card/hover-card.js +133 -0
  990. package/dist/overlays/hover-card/index.d.ts +1 -0
  991. package/dist/overlays/hover-card/index.js +10 -0
  992. package/dist/overlays/index.d.ts +8 -0
  993. package/dist/overlays/index.js +8 -0
  994. package/dist/overlays/popover/index.d.ts +1 -0
  995. package/dist/overlays/popover/index.js +14 -0
  996. package/dist/overlays/popover/popover.d.ts +10 -0
  997. package/dist/overlays/popover/popover.js +34 -0
  998. package/dist/overlays/toaster/index.d.ts +1 -0
  999. package/dist/overlays/toaster/index.js +5 -0
  1000. package/dist/overlays/toaster/toaster.d.ts +10 -0
  1001. package/dist/overlays/toaster/toaster.js +30 -0
  1002. package/dist/palette/command-palette/command-palette.d.ts +32 -0
  1003. package/dist/palette/command-palette/command-palette.js +95 -0
  1004. package/dist/palette/command-palette/index.d.ts +1 -0
  1005. package/dist/palette/command-palette/index.js +6 -0
  1006. package/dist/palette/index.d.ts +1 -0
  1007. package/dist/palette/index.js +1 -0
  1008. package/dist/rich-text/index.d.ts +2 -0
  1009. package/dist/rich-text/index.js +14 -0
  1010. package/dist/rich-text/rich-text-editor.d.ts +31 -0
  1011. package/dist/rich-text/rich-text-editor.js +364 -0
  1012. package/dist/rich-text/sanitize.d.ts +17 -0
  1013. package/dist/rich-text/sanitize.js +215 -0
  1014. package/dist/shell/app-shell/app-shell.d.ts +24 -0
  1015. package/dist/shell/app-shell/app-shell.js +42 -0
  1016. package/dist/shell/app-shell/index.d.ts +1 -0
  1017. package/dist/shell/app-shell/index.js +10 -0
  1018. package/dist/shell/index.d.ts +3 -0
  1019. package/dist/shell/index.js +3 -0
  1020. package/dist/shell/sidebar/index.d.ts +1 -0
  1021. package/dist/shell/sidebar/index.js +6 -0
  1022. package/dist/shell/sidebar/sidebar.d.ts +48 -0
  1023. package/dist/shell/sidebar/sidebar.js +110 -0
  1024. package/dist/shell/topbar/index.d.ts +1 -0
  1025. package/dist/shell/topbar/index.js +4 -0
  1026. package/dist/shell/topbar/topbar.d.ts +22 -0
  1027. package/dist/shell/topbar/topbar.js +93 -0
  1028. package/dist/showcase/analytics-bento.d.ts +2 -0
  1029. package/dist/showcase/analytics-bento.js +336 -0
  1030. package/dist/showcase/bento.d.ts +43 -0
  1031. package/dist/showcase/bento.js +131 -0
  1032. package/dist/showcase/controls-bento.d.ts +2 -0
  1033. package/dist/showcase/controls-bento.js +264 -0
  1034. package/dist/showcase/dataviz-bento.d.ts +2 -0
  1035. package/dist/showcase/dataviz-bento.js +444 -0
  1036. package/dist/showcase/kit-tiles.d.ts +15 -0
  1037. package/dist/showcase/kit-tiles.js +192 -0
  1038. package/dist/showcase/operations-bento.d.ts +2 -0
  1039. package/dist/showcase/operations-bento.js +450 -0
  1040. package/dist/showcase/shell.d.ts +8 -0
  1041. package/dist/showcase/shell.js +115 -0
  1042. package/dist/states/empty-state/empty-state.d.ts +11 -0
  1043. package/dist/states/empty-state/empty-state.js +22 -0
  1044. package/dist/states/empty-state/index.d.ts +1 -0
  1045. package/dist/states/empty-state/index.js +1 -0
  1046. package/dist/states/error-state/error-state.d.ts +12 -0
  1047. package/dist/states/error-state/error-state.js +42 -0
  1048. package/dist/states/error-state/index.d.ts +1 -0
  1049. package/dist/states/error-state/index.js +1 -0
  1050. package/dist/states/forbidden-state/forbidden-state.d.ts +8 -0
  1051. package/dist/states/forbidden-state/forbidden-state.js +21 -0
  1052. package/dist/states/forbidden-state/index.d.ts +1 -0
  1053. package/dist/states/forbidden-state/index.js +1 -0
  1054. package/dist/states/index.d.ts +5 -0
  1055. package/dist/states/index.js +5 -0
  1056. package/dist/states/offline-banner/index.d.ts +1 -0
  1057. package/dist/states/offline-banner/index.js +1 -0
  1058. package/dist/states/offline-banner/offline-banner.d.ts +10 -0
  1059. package/dist/states/offline-banner/offline-banner.js +24 -0
  1060. package/dist/states/skeleton/index.d.ts +1 -0
  1061. package/dist/states/skeleton/index.js +1 -0
  1062. package/dist/states/skeleton/skeleton.d.ts +12 -0
  1063. package/dist/states/skeleton/skeleton.js +35 -0
  1064. package/dist/utils/cn.d.ts +3 -0
  1065. package/dist/utils/cn.js +86 -0
  1066. package/dist/utils/index.d.ts +2 -0
  1067. package/dist/utils/index.js +6 -0
  1068. package/dist/utils/reduced-motion.d.ts +2 -0
  1069. package/dist/utils/reduced-motion.js +18 -0
  1070. package/dist/xlsx/crc32.d.ts +4 -0
  1071. package/dist/xlsx/crc32.js +19 -0
  1072. package/dist/xlsx/index.d.ts +3 -0
  1073. package/dist/xlsx/index.js +21 -0
  1074. package/dist/xlsx/xlsx.d.ts +42 -0
  1075. package/dist/xlsx/xlsx.js +242 -0
  1076. package/dist/xlsx/zip.d.ts +16 -0
  1077. package/dist/xlsx/zip.js +98 -0
  1078. package/package.json +115 -3
  1079. package/scripts/build-theme.mjs +423 -0
  1080. package/src/ai/attachment/attachment.tsx +111 -0
  1081. package/src/ai/attachment/index.ts +1 -0
  1082. package/src/ai/chain-of-thought/chain-of-thought.tsx +120 -0
  1083. package/src/ai/chain-of-thought/index.ts +1 -0
  1084. package/src/ai/chat-list/chat-list.tsx +124 -0
  1085. package/src/ai/chat-list/group.ts +48 -0
  1086. package/src/ai/chat-list/index.ts +2 -0
  1087. package/src/ai/chat-message/chat-message.tsx +116 -0
  1088. package/src/ai/chat-message/index.ts +1 -0
  1089. package/src/ai/code-block/code-block.tsx +91 -0
  1090. package/src/ai/code-block/highlight.ts +195 -0
  1091. package/src/ai/code-block/index.ts +8 -0
  1092. package/src/ai/conversation/conversation.tsx +97 -0
  1093. package/src/ai/conversation/index.ts +9 -0
  1094. package/src/ai/conversation/stick.ts +40 -0
  1095. package/src/ai/index.ts +14 -0
  1096. package/src/ai/internal/disclosure.tsx +65 -0
  1097. package/src/ai/internal/icon-action.tsx +25 -0
  1098. package/src/ai/internal/keyframes.tsx +13 -0
  1099. package/src/ai/internal/use-copy.ts +38 -0
  1100. package/src/ai/loader/index.ts +1 -0
  1101. package/src/ai/loader/loader.tsx +60 -0
  1102. package/src/ai/markdown/index.ts +2 -0
  1103. package/src/ai/markdown/markdown.tsx +211 -0
  1104. package/src/ai/markdown/parse.ts +276 -0
  1105. package/src/ai/message-actions/index.ts +1 -0
  1106. package/src/ai/message-actions/message-actions.tsx +85 -0
  1107. package/src/ai/prompt-input/index.ts +2 -0
  1108. package/src/ai/prompt-input/keys.ts +11 -0
  1109. package/src/ai/prompt-input/prompt-input.tsx +148 -0
  1110. package/src/ai/prompt-suggestion/index.ts +1 -0
  1111. package/src/ai/prompt-suggestion/prompt-suggestion.tsx +54 -0
  1112. package/src/ai/source/index.ts +1 -0
  1113. package/src/ai/source/source.tsx +73 -0
  1114. package/src/ai/text-shimmer/index.ts +1 -0
  1115. package/src/ai/text-shimmer/text-shimmer.tsx +42 -0
  1116. package/src/ai/tool-call/index.ts +1 -0
  1117. package/src/ai/tool-call/tool-call.tsx +108 -0
  1118. package/src/atoms/avatar/avatar.tsx +51 -0
  1119. package/src/atoms/avatar/index.ts +1 -0
  1120. package/src/atoms/avatar-group/avatar-group.tsx +16 -0
  1121. package/src/atoms/avatar-group/index.ts +1 -0
  1122. package/src/atoms/big-date/big-date.tsx +23 -0
  1123. package/src/atoms/big-date/index.ts +1 -0
  1124. package/src/atoms/button/button.tsx +76 -0
  1125. package/src/atoms/button/index.ts +6 -0
  1126. package/src/atoms/checkbox/checkbox.tsx +23 -0
  1127. package/src/atoms/checkbox/index.ts +1 -0
  1128. package/src/atoms/chip/chip.tsx +41 -0
  1129. package/src/atoms/chip/index.ts +1 -0
  1130. package/src/atoms/icon/icon-map.ts +83 -0
  1131. package/src/atoms/icon/icon.tsx +23 -0
  1132. package/src/atoms/icon/index.ts +2 -0
  1133. package/src/atoms/index.ts +16 -0
  1134. package/src/atoms/led/index.ts +1 -0
  1135. package/src/atoms/led/led.tsx +30 -0
  1136. package/src/atoms/number-value/format.ts +28 -0
  1137. package/src/atoms/number-value/index.ts +8 -0
  1138. package/src/atoms/number-value/number-value.tsx +60 -0
  1139. package/src/atoms/pressable-feedback/index.ts +1 -0
  1140. package/src/atoms/pressable-feedback/pressable-feedback.tsx +79 -0
  1141. package/src/atoms/progress/index.ts +1 -0
  1142. package/src/atoms/progress/progress.tsx +32 -0
  1143. package/src/atoms/radio-group/index.ts +5 -0
  1144. package/src/atoms/radio-group/radio-group.tsx +52 -0
  1145. package/src/atoms/status-dot/index.ts +6 -0
  1146. package/src/atoms/status-dot/status-dot.tsx +52 -0
  1147. package/src/atoms/status-pill/index.ts +1 -0
  1148. package/src/atoms/status-pill/status-pill.tsx +32 -0
  1149. package/src/atoms/switch/index.ts +1 -0
  1150. package/src/atoms/switch/switch.tsx +20 -0
  1151. package/src/atoms/trend-chip/index.ts +8 -0
  1152. package/src/atoms/trend-chip/trend-chip.tsx +73 -0
  1153. package/src/atoms/trend-chip/trend.ts +24 -0
  1154. package/src/brand/export.ts +67 -0
  1155. package/src/brand/generate.ts +531 -0
  1156. package/src/brand/glyphs.ts +113 -0
  1157. package/src/brand/index.ts +8 -0
  1158. package/src/brand/initials.ts +51 -0
  1159. package/src/brand/logo-forge.tsx +523 -0
  1160. package/src/brand/logo-mark.tsx +40 -0
  1161. package/src/brand/palettes.ts +69 -0
  1162. package/src/brand/rng.ts +25 -0
  1163. package/src/calendar/day-chip/day-chip.tsx +34 -0
  1164. package/src/calendar/day-chip/index.ts +2 -0
  1165. package/src/calendar/event-block/event-block.tsx +74 -0
  1166. package/src/calendar/event-block/index.ts +2 -0
  1167. package/src/calendar/index.ts +5 -0
  1168. package/src/calendar/internal/date-utils.ts +78 -0
  1169. package/src/calendar/internal/index.ts +3 -0
  1170. package/src/calendar/internal/layout.ts +60 -0
  1171. package/src/calendar/internal/styles.ts +3 -0
  1172. package/src/calendar/internal/types.ts +32 -0
  1173. package/src/calendar/month-view/index.ts +1 -0
  1174. package/src/calendar/month-view/month-view.tsx +157 -0
  1175. package/src/calendar/timeline-view/index.ts +1 -0
  1176. package/src/calendar/timeline-view/timeline-view.tsx +100 -0
  1177. package/src/calendar/week-view/index.ts +1 -0
  1178. package/src/calendar/week-view/week-view.tsx +216 -0
  1179. package/src/charts/README.md +598 -0
  1180. package/src/charts/area-chart/area-chart.tsx +23 -0
  1181. package/src/charts/area-chart/index.ts +1 -0
  1182. package/src/charts/bar-chart/bar-chart.tsx +68 -0
  1183. package/src/charts/bar-chart/bar-race-chart.tsx +303 -0
  1184. package/src/charts/bar-chart/bar-race.ts +67 -0
  1185. package/src/charts/bar-chart/drilldown-bar-chart.tsx +85 -0
  1186. package/src/charts/bar-chart/index.ts +4 -0
  1187. package/src/charts/beeswarm-chart/beeswarm-chart.tsx +470 -0
  1188. package/src/charts/beeswarm-chart/index.ts +1 -0
  1189. package/src/charts/box-plot/box-plot.tsx +417 -0
  1190. package/src/charts/box-plot/index.ts +1 -0
  1191. package/src/charts/bubble-chart/bubble-chart.tsx +14 -0
  1192. package/src/charts/bubble-chart/index.ts +1 -0
  1193. package/src/charts/bubble-map/bubble-map.tsx +678 -0
  1194. package/src/charts/bubble-map/index.ts +1 -0
  1195. package/src/charts/bullet-chart/bullet-chart.tsx +577 -0
  1196. package/src/charts/bullet-chart/bullet-layout.ts +47 -0
  1197. package/src/charts/bullet-chart/index.ts +2 -0
  1198. package/src/charts/candlestick-chart/candlestick-chart.tsx +608 -0
  1199. package/src/charts/candlestick-chart/index.ts +1 -0
  1200. package/src/charts/chart-grid/chart-grid.tsx +197 -0
  1201. package/src/charts/chart-grid/grid-math.ts +69 -0
  1202. package/src/charts/chart-grid/index.ts +2 -0
  1203. package/src/charts/chord-chart/chord-chart.tsx +551 -0
  1204. package/src/charts/chord-chart/index.ts +1 -0
  1205. package/src/charts/choropleth-map/choropleth-drilldown.tsx +98 -0
  1206. package/src/charts/choropleth-map/choropleth-map.tsx +425 -0
  1207. package/src/charts/choropleth-map/index.ts +2 -0
  1208. package/src/charts/combo-chart/combo-chart.tsx +29 -0
  1209. package/src/charts/combo-chart/index.ts +1 -0
  1210. package/src/charts/core/a11y.ts +2 -0
  1211. package/src/charts/core/axes.tsx +176 -0
  1212. package/src/charts/core/breadcrumb.tsx +68 -0
  1213. package/src/charts/core/cartesian/annotations.tsx +161 -0
  1214. package/src/charts/core/cartesian/axis-stack.ts +88 -0
  1215. package/src/charts/core/cartesian/brush.tsx +241 -0
  1216. package/src/charts/core/cartesian/cartesian-chart.tsx +1239 -0
  1217. package/src/charts/core/cartesian/category-group-axis.tsx +43 -0
  1218. package/src/charts/core/cartesian/category-groups.ts +40 -0
  1219. package/src/charts/core/cartesian/ink-layer.tsx +463 -0
  1220. package/src/charts/core/cartesian/layout.ts +796 -0
  1221. package/src/charts/core/cartesian/marks.tsx +158 -0
  1222. package/src/charts/core/cartesian/sync-store.ts +103 -0
  1223. package/src/charts/core/cartesian/sync.tsx +68 -0
  1224. package/src/charts/core/cartesian/types.ts +169 -0
  1225. package/src/charts/core/category-axis.ts +120 -0
  1226. package/src/charts/core/category-explorer.tsx +132 -0
  1227. package/src/charts/core/chart-frame.tsx +119 -0
  1228. package/src/charts/core/chart-states.tsx +89 -0
  1229. package/src/charts/core/chord.ts +176 -0
  1230. package/src/charts/core/color-scale.ts +117 -0
  1231. package/src/charts/core/data-table.tsx +49 -0
  1232. package/src/charts/core/distribution/brush.ts +151 -0
  1233. package/src/charts/core/distribution/dot-stack.ts +78 -0
  1234. package/src/charts/core/distribution/explorer.tsx +96 -0
  1235. package/src/charts/core/distribution/geometry.ts +76 -0
  1236. package/src/charts/core/distribution/index.ts +11 -0
  1237. package/src/charts/core/distribution/labels.ts +56 -0
  1238. package/src/charts/core/distribution/layout.ts +302 -0
  1239. package/src/charts/core/distribution/marks.tsx +334 -0
  1240. package/src/charts/core/distribution/observations.tsx +61 -0
  1241. package/src/charts/core/distribution/point-index.ts +68 -0
  1242. package/src/charts/core/distribution/points.ts +35 -0
  1243. package/src/charts/core/distribution/stats.ts +426 -0
  1244. package/src/charts/core/distribution/use-legend.tsx +76 -0
  1245. package/src/charts/core/distribution/xy-points.tsx +1202 -0
  1246. package/src/charts/core/downsample.ts +85 -0
  1247. package/src/charts/core/drawing-height.ts +22 -0
  1248. package/src/charts/core/export-menu.tsx +68 -0
  1249. package/src/charts/core/export.ts +217 -0
  1250. package/src/charts/core/format.ts +154 -0
  1251. package/src/charts/core/gantt.ts +531 -0
  1252. package/src/charts/core/hierarchy-chart.tsx +236 -0
  1253. package/src/charts/core/hierarchy.ts +380 -0
  1254. package/src/charts/core/index.ts +54 -0
  1255. package/src/charts/core/indicators.ts +175 -0
  1256. package/src/charts/core/ink.ts +321 -0
  1257. package/src/charts/core/legend.tsx +111 -0
  1258. package/src/charts/core/motion.ts +112 -0
  1259. package/src/charts/core/palette.ts +76 -0
  1260. package/src/charts/core/path.ts +198 -0
  1261. package/src/charts/core/pattern-defs.tsx +87 -0
  1262. package/src/charts/core/patterns.ts +121 -0
  1263. package/src/charts/core/plot-overlay.tsx +106 -0
  1264. package/src/charts/core/polar.ts +316 -0
  1265. package/src/charts/core/sankey.ts +544 -0
  1266. package/src/charts/core/scales/band.ts +90 -0
  1267. package/src/charts/core/scales/index.ts +4 -0
  1268. package/src/charts/core/scales/linear.ts +94 -0
  1269. package/src/charts/core/scales/log.ts +35 -0
  1270. package/src/charts/core/scales/time.ts +136 -0
  1271. package/src/charts/core/shape-morph.ts +101 -0
  1272. package/src/charts/core/stack.ts +41 -0
  1273. package/src/charts/core/time-range.ts +51 -0
  1274. package/src/charts/core/tooltip.tsx +126 -0
  1275. package/src/charts/core/tree-fit.ts +90 -0
  1276. package/src/charts/core/tree-layout.ts +384 -0
  1277. package/src/charts/core/tree-radial.ts +303 -0
  1278. package/src/charts/core/types.ts +105 -0
  1279. package/src/charts/core/unit-glyph.tsx +102 -0
  1280. package/src/charts/core/unit-icons.ts +210 -0
  1281. package/src/charts/core/units.ts +267 -0
  1282. package/src/charts/core/use-canvas.ts +77 -0
  1283. package/src/charts/core/use-chart-size.ts +65 -0
  1284. package/src/charts/core/use-drill.ts +100 -0
  1285. package/src/charts/core/use-index-navigation.ts +68 -0
  1286. package/src/charts/core/use-pan-zoom.ts +219 -0
  1287. package/src/charts/core/use-series-state.ts +40 -0
  1288. package/src/charts/crossfilter/crossfilter-engine.ts +207 -0
  1289. package/src/charts/crossfilter/crossfilter.tsx +494 -0
  1290. package/src/charts/crossfilter/index.ts +2 -0
  1291. package/src/charts/donut-chart/center-fit.ts +53 -0
  1292. package/src/charts/donut-chart/donut-chart.tsx +826 -0
  1293. package/src/charts/donut-chart/index.ts +1 -0
  1294. package/src/charts/dumbbell-chart/dumbbell-chart.tsx +723 -0
  1295. package/src/charts/dumbbell-chart/index.ts +1 -0
  1296. package/src/charts/fill-gauge-chart/fill-gauge-chart.tsx +319 -0
  1297. package/src/charts/fill-gauge-chart/index.ts +1 -0
  1298. package/src/charts/funnel-chart/funnel-chart.tsx +517 -0
  1299. package/src/charts/funnel-chart/index.ts +1 -0
  1300. package/src/charts/gantt-chart/gantt-chart.tsx +1369 -0
  1301. package/src/charts/gantt-chart/gantt-export.ts +139 -0
  1302. package/src/charts/gantt-chart/gantt-marks.tsx +710 -0
  1303. package/src/charts/gantt-chart/index.ts +1 -0
  1304. package/src/charts/gauge-chart/gauge-chart.tsx +594 -0
  1305. package/src/charts/gauge-chart/index.ts +1 -0
  1306. package/src/charts/globe-chart/globe-chart.tsx +744 -0
  1307. package/src/charts/globe-chart/index.ts +1 -0
  1308. package/src/charts/heatmap-chart/calendar-heatmap.tsx +221 -0
  1309. package/src/charts/heatmap-chart/calendar-layout.ts +68 -0
  1310. package/src/charts/heatmap-chart/datetime-columns.ts +38 -0
  1311. package/src/charts/heatmap-chart/drilldown-heatmap.tsx +92 -0
  1312. package/src/charts/heatmap-chart/heatmap-chart.tsx +189 -0
  1313. package/src/charts/heatmap-chart/heatmap-grid.tsx +588 -0
  1314. package/src/charts/heatmap-chart/heatmap-scale.ts +64 -0
  1315. package/src/charts/heatmap-chart/hex-layout.ts +88 -0
  1316. package/src/charts/heatmap-chart/index.ts +9 -0
  1317. package/src/charts/hex-tile-map/hex-layout.ts +147 -0
  1318. package/src/charts/hex-tile-map/hex-tile-map.tsx +361 -0
  1319. package/src/charts/hex-tile-map/index.ts +2 -0
  1320. package/src/charts/hierarchy-morph/hierarchy-morph.tsx +455 -0
  1321. package/src/charts/hierarchy-morph/index.ts +1 -0
  1322. package/src/charts/histogram/histogram.tsx +556 -0
  1323. package/src/charts/histogram/index.ts +1 -0
  1324. package/src/charts/icicle-chart/icicle-chart.tsx +466 -0
  1325. package/src/charts/icicle-chart/index.ts +1 -0
  1326. package/src/charts/index.ts +50 -0
  1327. package/src/charts/isotype-rows/index.ts +1 -0
  1328. package/src/charts/isotype-rows/isotype-rows.tsx +336 -0
  1329. package/src/charts/line-chart/index.ts +2 -0
  1330. package/src/charts/line-chart/line-chart.tsx +36 -0
  1331. package/src/charts/line-chart/line-drilldown.tsx +65 -0
  1332. package/src/charts/lollipop-chart/index.ts +1 -0
  1333. package/src/charts/lollipop-chart/lollipop-chart.tsx +402 -0
  1334. package/src/charts/maps/data/README.md +51 -0
  1335. package/src/charts/maps/data/peru/index.ts +5 -0
  1336. package/src/charts/maps/data/world/index.ts +5 -0
  1337. package/src/charts/maps/geo/build-topology.ts +226 -0
  1338. package/src/charts/maps/geo/cluster.ts +81 -0
  1339. package/src/charts/maps/geo/geo-path.ts +153 -0
  1340. package/src/charts/maps/geo/globe.ts +309 -0
  1341. package/src/charts/maps/geo/index.ts +7 -0
  1342. package/src/charts/maps/geo/map-data-table.tsx +141 -0
  1343. package/src/charts/maps/geo/map-labels.ts +60 -0
  1344. package/src/charts/maps/geo/map-legend.tsx +82 -0
  1345. package/src/charts/maps/geo/map-viewport.tsx +404 -0
  1346. package/src/charts/maps/geo/match.ts +12 -0
  1347. package/src/charts/maps/geo/projection.ts +177 -0
  1348. package/src/charts/maps/geo/pure.ts +12 -0
  1349. package/src/charts/maps/geo/routes.ts +95 -0
  1350. package/src/charts/maps/geo/simplify.ts +57 -0
  1351. package/src/charts/maps/geo/topojson.ts +94 -0
  1352. package/src/charts/maps/geo/types.ts +59 -0
  1353. package/src/charts/maps/geo/use-map-geometry.ts +132 -0
  1354. package/src/charts/maps/geo/use-map-view.ts +253 -0
  1355. package/src/charts/maps/geo/view.ts +100 -0
  1356. package/src/charts/maps/index.ts +1 -0
  1357. package/src/charts/parliament-chart/index.ts +1 -0
  1358. package/src/charts/parliament-chart/parliament-chart.tsx +406 -0
  1359. package/src/charts/pictogram-chart/index.ts +1 -0
  1360. package/src/charts/pictogram-chart/pictogram-chart.tsx +406 -0
  1361. package/src/charts/pie-chart/index.ts +1 -0
  1362. package/src/charts/pie-chart/pie-chart.tsx +16 -0
  1363. package/src/charts/polar-area-chart/index.ts +1 -0
  1364. package/src/charts/polar-area-chart/polar-area-chart.tsx +505 -0
  1365. package/src/charts/progress-units/index.ts +1 -0
  1366. package/src/charts/progress-units/progress-units.tsx +209 -0
  1367. package/src/charts/radar-chart/index.ts +1 -0
  1368. package/src/charts/radar-chart/radar-chart.tsx +550 -0
  1369. package/src/charts/radial-bar-chart/index.ts +1 -0
  1370. package/src/charts/radial-bar-chart/radial-bar-chart.tsx +552 -0
  1371. package/src/charts/raincloud-chart/index.ts +1 -0
  1372. package/src/charts/raincloud-chart/raincloud-chart.tsx +453 -0
  1373. package/src/charts/range-area-chart/index.ts +1 -0
  1374. package/src/charts/range-area-chart/range-area-chart.tsx +516 -0
  1375. package/src/charts/sankey-chart/alluvial-chart.tsx +56 -0
  1376. package/src/charts/sankey-chart/index.ts +2 -0
  1377. package/src/charts/sankey-chart/sankey-chart.tsx +1139 -0
  1378. package/src/charts/scatter-chart/index.ts +1 -0
  1379. package/src/charts/scatter-chart/scatter-chart.tsx +16 -0
  1380. package/src/charts/slope-chart/index.ts +2 -0
  1381. package/src/charts/slope-chart/label-layout.ts +48 -0
  1382. package/src/charts/slope-chart/slope-chart.tsx +484 -0
  1383. package/src/charts/sparkline/index.ts +1 -0
  1384. package/src/charts/sparkline/sparkline.tsx +266 -0
  1385. package/src/charts/stock-chart/index.ts +1 -0
  1386. package/src/charts/stock-chart/stock-chart.tsx +728 -0
  1387. package/src/charts/stock-chart/stock-drawing-layer.tsx +386 -0
  1388. package/src/charts/stock-chart/stock-drawings.ts +121 -0
  1389. package/src/charts/stock-chart/stock-model.ts +167 -0
  1390. package/src/charts/stock-chart/stock-plot.tsx +1133 -0
  1391. package/src/charts/stock-chart/stock-stats.ts +122 -0
  1392. package/src/charts/stock-chart/stock-transforms.ts +86 -0
  1393. package/src/charts/stock-chart/use-stock-stream.ts +28 -0
  1394. package/src/charts/stream-graph/index.ts +2 -0
  1395. package/src/charts/stream-graph/stream-graph.tsx +521 -0
  1396. package/src/charts/stream-graph/stream-layout.ts +131 -0
  1397. package/src/charts/sunburst-chart/index.ts +1 -0
  1398. package/src/charts/sunburst-chart/sunburst-chart.tsx +558 -0
  1399. package/src/charts/timeline-chart/index.ts +2 -0
  1400. package/src/charts/timeline-chart/timeline-chart.tsx +656 -0
  1401. package/src/charts/timeline-chart/timeline-lanes.ts +116 -0
  1402. package/src/charts/tree-chart/index.ts +3 -0
  1403. package/src/charts/tree-chart/tree-card.tsx +132 -0
  1404. package/src/charts/tree-chart/tree-chart.tsx +1071 -0
  1405. package/src/charts/tree-chart/tree-model.ts +217 -0
  1406. package/src/charts/tree-chart/use-tree-transition.ts +116 -0
  1407. package/src/charts/treemap-chart/index.ts +1 -0
  1408. package/src/charts/treemap-chart/treemap-chart.tsx +435 -0
  1409. package/src/charts/violin-chart/index.ts +1 -0
  1410. package/src/charts/violin-chart/violin-chart.tsx +514 -0
  1411. package/src/charts/waffle-chart/index.ts +1 -0
  1412. package/src/charts/waffle-chart/waffle-chart.tsx +354 -0
  1413. package/src/charts/waterfall-chart/index.ts +2 -0
  1414. package/src/charts/waterfall-chart/waterfall-chart.tsx +629 -0
  1415. package/src/charts/waterfall-chart/waterfall-layout.ts +112 -0
  1416. package/src/containers/action-bar/action-bar.tsx +78 -0
  1417. package/src/containers/action-bar/index.ts +1 -0
  1418. package/src/containers/banner/banner.tsx +68 -0
  1419. package/src/containers/banner/index.ts +1 -0
  1420. package/src/containers/card/card.tsx +44 -0
  1421. package/src/containers/card/index.ts +1 -0
  1422. package/src/containers/carousel/carousel.tsx +216 -0
  1423. package/src/containers/carousel/index.ts +2 -0
  1424. package/src/containers/carousel/model.ts +21 -0
  1425. package/src/containers/cell/cell.tsx +127 -0
  1426. package/src/containers/cell/index.ts +8 -0
  1427. package/src/containers/cols/cols.tsx +64 -0
  1428. package/src/containers/cols/index.ts +1 -0
  1429. package/src/containers/comment/comment.tsx +56 -0
  1430. package/src/containers/comment/index.ts +1 -0
  1431. package/src/containers/data-grid/README.md +38 -0
  1432. package/src/containers/data-grid/chart-panel.tsx +141 -0
  1433. package/src/containers/data-grid/chart-range.ts +131 -0
  1434. package/src/containers/data-grid/column-groups.ts +45 -0
  1435. package/src/containers/data-grid/column-menu.tsx +444 -0
  1436. package/src/containers/data-grid/data-grid.demos.tsx +577 -0
  1437. package/src/containers/data-grid/data-grid.fixtures.tsx +358 -0
  1438. package/src/containers/data-grid/data-grid.samples.tsx +441 -0
  1439. package/src/containers/data-grid/data-grid.tsx +3419 -0
  1440. package/src/containers/data-grid/data-source.ts +144 -0
  1441. package/src/containers/data-grid/fill-series.ts +282 -0
  1442. package/src/containers/data-grid/filter-builder-editor.tsx +262 -0
  1443. package/src/containers/data-grid/filter-builder.ts +308 -0
  1444. package/src/containers/data-grid/formula-bar.tsx +80 -0
  1445. package/src/containers/data-grid/formula-sheet.ts +254 -0
  1446. package/src/containers/data-grid/formula.ts +687 -0
  1447. package/src/containers/data-grid/grid-edit.ts +137 -0
  1448. package/src/containers/data-grid/grid-toolbar.tsx +307 -0
  1449. package/src/containers/data-grid/history.ts +137 -0
  1450. package/src/containers/data-grid/index.ts +18 -0
  1451. package/src/containers/data-grid/labels.ts +315 -0
  1452. package/src/containers/data-grid/model.ts +641 -0
  1453. package/src/containers/data-grid/pivot.ts +188 -0
  1454. package/src/containers/data-grid/range.ts +124 -0
  1455. package/src/containers/data-grid/rows.ts +95 -0
  1456. package/src/containers/data-grid/spreadsheet.demos.tsx +520 -0
  1457. package/src/containers/data-grid/tool-panel.tsx +289 -0
  1458. package/src/containers/data-grid/tree.ts +97 -0
  1459. package/src/containers/data-grid/types.ts +166 -0
  1460. package/src/containers/data-grid/use-data-source.ts +124 -0
  1461. package/src/containers/data-grid/use-grid-layout.ts +133 -0
  1462. package/src/containers/data-grid/virtual.ts +158 -0
  1463. package/src/containers/data-grid/xlsx-export.ts +54 -0
  1464. package/src/containers/description-list/description-list.tsx +25 -0
  1465. package/src/containers/description-list/index.ts +1 -0
  1466. package/src/containers/facts/facts.tsx +26 -0
  1467. package/src/containers/facts/index.ts +1 -0
  1468. package/src/containers/file-tree/file-tree.tsx +185 -0
  1469. package/src/containers/file-tree/index.ts +12 -0
  1470. package/src/containers/file-tree/model.ts +111 -0
  1471. package/src/containers/generic-row/generic-row.tsx +41 -0
  1472. package/src/containers/generic-row/index.ts +1 -0
  1473. package/src/containers/hbars/hbars.tsx +204 -0
  1474. package/src/containers/hbars/index.ts +1 -0
  1475. package/src/containers/highlight-line/highlight-line.tsx +17 -0
  1476. package/src/containers/highlight-line/index.ts +1 -0
  1477. package/src/containers/index.ts +26 -0
  1478. package/src/containers/item-card-group/index.ts +5 -0
  1479. package/src/containers/item-card-group/item-card-group.tsx +106 -0
  1480. package/src/containers/kanban/index.ts +14 -0
  1481. package/src/containers/kanban/kanban.tsx +402 -0
  1482. package/src/containers/kanban/model.ts +141 -0
  1483. package/src/containers/kpi/index.ts +1 -0
  1484. package/src/containers/kpi/kpi.tsx +53 -0
  1485. package/src/containers/kpi-group/index.ts +1 -0
  1486. package/src/containers/kpi-group/kpi-group.tsx +71 -0
  1487. package/src/containers/page-header/index.ts +1 -0
  1488. package/src/containers/page-header/page-header.tsx +53 -0
  1489. package/src/containers/resizable/index.ts +9 -0
  1490. package/src/containers/resizable/model.ts +94 -0
  1491. package/src/containers/resizable/resizable.tsx +281 -0
  1492. package/src/containers/scrolly/index.ts +8 -0
  1493. package/src/containers/scrolly/scrolly-logic.ts +41 -0
  1494. package/src/containers/scrolly/scrolly.tsx +206 -0
  1495. package/src/containers/settings-layout/index.ts +1 -0
  1496. package/src/containers/settings-layout/settings-layout.tsx +85 -0
  1497. package/src/containers/settings-row/index.ts +1 -0
  1498. package/src/containers/settings-row/settings-row.tsx +38 -0
  1499. package/src/containers/table/index.ts +1 -0
  1500. package/src/containers/table/pin.ts +91 -0
  1501. package/src/containers/table/table.tsx +406 -0
  1502. package/src/containers/timeline/index.ts +6 -0
  1503. package/src/containers/timeline/timeline.tsx +93 -0
  1504. package/src/containers/toolbar/index.ts +1 -0
  1505. package/src/containers/toolbar/toolbar.tsx +21 -0
  1506. package/src/dashboards/data.ts +40 -0
  1507. package/src/dashboards/inicio-dashboard.tsx +209 -0
  1508. package/src/dashboards/layout.tsx +95 -0
  1509. package/src/forms/accent-picker/accent-picker.tsx +68 -0
  1510. package/src/forms/accent-picker/index.ts +5 -0
  1511. package/src/forms/checkbox-button-group/checkbox-button-group.tsx +66 -0
  1512. package/src/forms/checkbox-button-group/index.ts +5 -0
  1513. package/src/forms/dropzone/dropzone.tsx +127 -0
  1514. package/src/forms/dropzone/index.ts +6 -0
  1515. package/src/forms/emoji-picker/emoji-data.ts +173 -0
  1516. package/src/forms/emoji-picker/emoji-picker.tsx +142 -0
  1517. package/src/forms/emoji-picker/index.ts +3 -0
  1518. package/src/forms/emoji-picker/model.ts +49 -0
  1519. package/src/forms/emoji-reaction-button/emoji-reaction-button.tsx +112 -0
  1520. package/src/forms/emoji-reaction-button/index.ts +7 -0
  1521. package/src/forms/field/field.tsx +53 -0
  1522. package/src/forms/field/index.ts +1 -0
  1523. package/src/forms/form-grid/form-grid.tsx +22 -0
  1524. package/src/forms/form-grid/index.ts +1 -0
  1525. package/src/forms/index.ts +20 -0
  1526. package/src/forms/inline-select/index.ts +5 -0
  1527. package/src/forms/inline-select/inline-select.tsx +41 -0
  1528. package/src/forms/input/index.ts +1 -0
  1529. package/src/forms/input/input.tsx +16 -0
  1530. package/src/forms/input-icon/index.ts +1 -0
  1531. package/src/forms/input-icon/input-icon.tsx +22 -0
  1532. package/src/forms/internal/button-option.tsx +46 -0
  1533. package/src/forms/label/index.ts +1 -0
  1534. package/src/forms/label/label.tsx +11 -0
  1535. package/src/forms/native-select/index.ts +6 -0
  1536. package/src/forms/native-select/native-select.tsx +87 -0
  1537. package/src/forms/number-stepper/index.ts +1 -0
  1538. package/src/forms/number-stepper/number-stepper.tsx +124 -0
  1539. package/src/forms/pin-input/index.ts +1 -0
  1540. package/src/forms/pin-input/pin-input.tsx +79 -0
  1541. package/src/forms/radio-button-group/index.ts +5 -0
  1542. package/src/forms/radio-button-group/radio-button-group.tsx +68 -0
  1543. package/src/forms/rating/index.ts +2 -0
  1544. package/src/forms/rating/model.ts +48 -0
  1545. package/src/forms/rating/rating.tsx +139 -0
  1546. package/src/forms/select/index.ts +1 -0
  1547. package/src/forms/select/select.tsx +29 -0
  1548. package/src/forms/slider/index.ts +17 -0
  1549. package/src/forms/slider/model.ts +89 -0
  1550. package/src/forms/slider/slider.tsx +241 -0
  1551. package/src/forms/textarea/index.ts +1 -0
  1552. package/src/forms/textarea/textarea.tsx +16 -0
  1553. package/src/forms/time-input/index.ts +1 -0
  1554. package/src/forms/time-input/time-input.tsx +116 -0
  1555. package/src/foundations/presets-gallery.mdx +59 -0
  1556. package/src/navigation/floating-toc/floating-toc.tsx +115 -0
  1557. package/src/navigation/floating-toc/index.ts +2 -0
  1558. package/src/navigation/floating-toc/model.ts +23 -0
  1559. package/src/navigation/index.ts +4 -0
  1560. package/src/navigation/segmented/index.ts +6 -0
  1561. package/src/navigation/segmented/segmented.tsx +36 -0
  1562. package/src/navigation/stepper/index.ts +1 -0
  1563. package/src/navigation/stepper/stepper.tsx +60 -0
  1564. package/src/navigation/tabs/index.ts +10 -0
  1565. package/src/navigation/tabs/tabs.tsx +55 -0
  1566. package/src/overlays/context-menu/context-menu.tsx +256 -0
  1567. package/src/overlays/context-menu/index.ts +15 -0
  1568. package/src/overlays/dialog/dialog.tsx +146 -0
  1569. package/src/overlays/dialog/index.ts +12 -0
  1570. package/src/overlays/drawer/drawer.tsx +94 -0
  1571. package/src/overlays/drawer/index.ts +8 -0
  1572. package/src/overlays/dropdown-menu/dropdown-menu.tsx +82 -0
  1573. package/src/overlays/dropdown-menu/index.ts +14 -0
  1574. package/src/overlays/focus-return/focus-return.tsx +60 -0
  1575. package/src/overlays/focus-return/index.ts +7 -0
  1576. package/src/overlays/hover-card/hover-card.tsx +186 -0
  1577. package/src/overlays/hover-card/index.ts +8 -0
  1578. package/src/overlays/index.ts +8 -0
  1579. package/src/overlays/popover/index.ts +8 -0
  1580. package/src/overlays/popover/popover.tsx +35 -0
  1581. package/src/overlays/toaster/index.ts +1 -0
  1582. package/src/overlays/toaster/toaster.tsx +35 -0
  1583. package/src/palette/command-palette/command-palette.tsx +131 -0
  1584. package/src/palette/command-palette/index.ts +5 -0
  1585. package/src/palette/index.ts +1 -0
  1586. package/src/rich-text/index.ts +8 -0
  1587. package/src/rich-text/rich-text-editor.tsx +419 -0
  1588. package/src/rich-text/sanitize.ts +266 -0
  1589. package/src/shell/app-shell/app-shell.tsx +76 -0
  1590. package/src/shell/app-shell/index.ts +6 -0
  1591. package/src/shell/index.ts +3 -0
  1592. package/src/shell/sidebar/index.ts +8 -0
  1593. package/src/shell/sidebar/sidebar.tsx +172 -0
  1594. package/src/shell/topbar/index.ts +1 -0
  1595. package/src/shell/topbar/topbar.tsx +120 -0
  1596. package/src/showcase/analytics-bento.tsx +333 -0
  1597. package/src/showcase/bento.tsx +169 -0
  1598. package/src/showcase/controls-bento.tsx +313 -0
  1599. package/src/showcase/dataviz-bento.tsx +452 -0
  1600. package/src/showcase/kit-tiles.tsx +193 -0
  1601. package/src/showcase/operations-bento.tsx +478 -0
  1602. package/src/showcase/shell.tsx +136 -0
  1603. package/src/states/empty-state/empty-state.tsx +40 -0
  1604. package/src/states/empty-state/index.ts +1 -0
  1605. package/src/states/error-state/error-state.tsx +52 -0
  1606. package/src/states/error-state/index.ts +1 -0
  1607. package/src/states/forbidden-state/forbidden-state.tsx +28 -0
  1608. package/src/states/forbidden-state/index.ts +1 -0
  1609. package/src/states/index.ts +5 -0
  1610. package/src/states/offline-banner/index.ts +1 -0
  1611. package/src/states/offline-banner/offline-banner.tsx +35 -0
  1612. package/src/states/skeleton/index.ts +1 -0
  1613. package/src/states/skeleton/skeleton.tsx +53 -0
  1614. package/src/utils/cn.ts +94 -0
  1615. package/src/utils/index.ts +2 -0
  1616. package/src/utils/reduced-motion.ts +20 -0
  1617. package/src/xlsx/crc32.ts +22 -0
  1618. package/src/xlsx/index.ts +15 -0
  1619. package/src/xlsx/xlsx.ts +390 -0
  1620. package/src/xlsx/zip.ts +117 -0
  1621. package/styles/Theme.kt +246 -0
  1622. package/styles/base.css +45 -0
  1623. package/styles/fonts.css +2 -0
  1624. package/styles/theme.css +272 -0
  1625. package/styles/tokens.css +1109 -0
  1626. package/tokens/default.json +1802 -0
@@ -0,0 +1,598 @@
1
+ # Charts
2
+
3
+ Our own chart library: pure React + SVG, zero runtime dependencies, themed only through tokens.
4
+
5
+ ```tsx
6
+ import { BarChart, LineChart } from "@jcsoftdev/ui/charts";
7
+ import { Sparkline } from "@jcsoftdev/ui/charts/sparkline"; // single entry, tree-shakes
8
+ ```
9
+
10
+ | Chart | Folder | Built on |
11
+ | --- | --- | --- |
12
+ | `LineChart` | `line-chart/` | `CartesianChart` (series `kind: "line"`) |
13
+ | `AreaChart` | `area-chart/` | `CartesianChart` (`kind: "area"`) |
14
+ | `BarChart` | `bar-chart/` | `CartesianChart` (`kind: "column"`): ranges, stack groups, patterns, reversed axis, group labels |
15
+ | `DrilldownBarChart` | `bar-chart/` | `BarChart` + `useDrill` + `ChartBreadcrumb` |
16
+ | `BarRaceChart` | `bar-chart/` | `bar-race.ts` rank interpolation, play / pause / scrub |
17
+ | `LollipopChart` | `lollipop-chart/` | stick + dot per category, horizontal or vertical, negatives |
18
+ | `BulletChart` | `bullet-chart/` | `bullet-layout.ts` bands, actual bar, target tick, per-row or shared scale |
19
+ | `ComboChart` | `combo-chart/` | `CartesianChart` (mixed kinds, right axis) |
20
+ | `DonutChart` / `PieChart` | `donut-chart/`, `pie-chart/` | `ChartFrame` + `polar.ts` (rounded arcs, gaps, explode, outside labels, semi variant) |
21
+ | `RadialBarChart` | `radial-bar-chart/` | stroked `arcLine` rings, track, gradient, ring labels |
22
+ | `GaugeChart` | `gauge-chart/` | `arcLine` bands + progress or needle, `useAnimatedNumber` |
23
+ | `RadarChart` | `radar-chart/` | polygon/circle grid, angular hit-testing with `slotAt` |
24
+ | `PolarAreaChart` | `polar-area-chart/` | `arcPath` sectors, radius or area scale |
25
+ | `FunnelChart` | `funnel-chart/` | `funnelStages` geometry (funnel / pyramid, vertical / horizontal) |
26
+ | `Sparkline` | `sparkline/` | scales + paths directly (no frame) |
27
+ | `RangeAreaChart` | `range-area-chart/` | `ChartFrame` + `buildCategoryAxis`: min-max bands with an average line |
28
+ | `StreamGraph` | `stream-graph/` | `streamLayout` (wiggle / silhouette / zero / expand offsets), hover a stream to isolate it |
29
+ | `WaterfallChart` | `waterfall-chart/` | `waterfallLayout` running totals, connectors, up/down/total tokens |
30
+ | `DumbbellChart` | `dumbbell-chart/` | two or more values per row, horizontal or vertical, sortable, change column |
31
+ | `TimelineChart` | `timeline-chart/` | Gantt rows, `assignLanes` stacks overlapping bars, now marker, clock ticks |
32
+ | `CandlestickChart` | `candlestick-chart/` | OHLC candles + volume panel + `ChartBrush` zoom |
33
+ | `StockChart` | `stock-chart/` | candle / OHLC / line / area, range presets (`time-range.ts`), `ChartBrush` navigator, `indicators.ts` overlays and RSI/MACD pane, % comparisons, flags |
34
+ | `GanttChart` | `gantt-chart/` | `gantt.ts` (zoom scale, two-tier header, rows with rollups, orthogonal dependency routes), task tree + timeline in one sticky scroller |
35
+ | `SlopeChart` | `slope-chart/` | two columns, `spreadSlopeLabels` collision avoidance on both sides |
36
+ | `HeatmapChart`, `CalendarHeatmap` | `heatmap-chart/` | `color-scale.ts` + an internal `HeatmapGrid` (`shape="hex"`, `renderer="canvas"`, `Date` columns) |
37
+ | `DrilldownHeatmap` | `heatmap-chart/` | `HeatmapChart` + `ChartBreadcrumb`; each `HeatmapLevel` returns the matrix behind a cell |
38
+ | `ChartGrid` | `chart-grid/` | small multiples (trellis): shared value/x domains, shared legend, columns from the container width |
39
+ | `TreemapChart` | `treemap-chart/` | `hierarchy.ts` (`treemapLayout`, squarified) + `hierarchy-chart.tsx` |
40
+ | `SunburstChart` | `sunburst-chart/` | `hierarchy.ts` (`partitionLayout`, `sectorPath`) + `use-drill.ts`; `half` for a 180 degree fan |
41
+ | `HierarchyMorph` | `hierarchy-morph/` | treemap and sunburst layouts sampled as polygons (`shape-morph.ts`) and blended |
42
+ | `IcicleChart` | `icicle-chart/` | same partition as the sunburst, rectangular |
43
+ | `BoxPlot` | `box-plot/` | `distribution/` (`categoryLayout`, `BoxGlyph`) |
44
+ | `ViolinChart` | `violin-chart/` | `distribution/` (`gaussianKde`, `violinPath`) |
45
+ | `RaincloudChart` | `raincloud-chart/` | `distribution/` (half violin + `BoxGlyph` + jittered rain) |
46
+ | `Histogram` | `histogram/` | `distribution/` (`binEdges`, `binCounts`, `xyLayout`) |
47
+ | `BeeswarmChart` | `beeswarm-chart/` | `distribution/` (`beeswarm` collision layout) |
48
+ | `ScatterChart` | `scatter-chart/` | `XYPointChart` (trend lines, quadrants, time axis, jitter, image markers, canvas renderer) |
49
+ | `BubbleChart` | `bubble-chart/` | `XYPointChart` (`sized`, area-proportional radius, `shading="shaded"` spheres) |
50
+ | `ChoroplethMap` | `choropleth-map/` | `maps/geo/` (`MapViewport`, `useMapGeometry`, `useMapView`) + `heatmapScale` (sequential / diverging / thresholds) |
51
+ | `BubbleMap` | `bubble-map/` | same stage + `clusterPoints`; bubbles and clusters are drawn in screen space |
52
+ | `HexTileMap` | `hex-tile-map/` | own SVG grid (`hex-layout.ts`) + `heatmapScale`, `MapLegend`; no geometry needed |
53
+ | `PictogramChart` | `pictogram-chart/` | unit charts core (`units.ts`, `UnitGlyph`, `useCategoryExplorer`) |
54
+ | `WaffleChart` | `waffle-chart/` | unit charts core (`waffleCounts`, `gridCell`) |
55
+ | `ParliamentChart` | `parliament-chart/` | unit charts core (`parliamentLayout`) |
56
+ | `FillGaugeChart` | `fill-gauge-chart/` | `UNIT_ICONS` shapes as clip paths |
57
+ | `IsotypeRows` | `isotype-rows/` | unit charts core (`unitFractions`, `UnitGlyph`) |
58
+ | `ProgressUnits` | `progress-units/` | unit charts core (`progressFractions`, `UnitGlyph`) |
59
+ | `TreeChart` | `tree-chart/` | `tree-layout.ts` (tidy tree, 4 directions, edge paths), `tree-radial.ts` (radial, dendrogram) + `use-pan-zoom.ts`; HTML card templates, search, lazy children |
60
+ | `ChordChart` | `chord-chart/` | `chord.ts` (groups, ribbons) + `polar.ts` `arcPath`, `useIndexNavigation`, export buttons |
61
+ | `AlluvialChart` | `sankey-chart/` | `SankeyChart` with fixed stage columns (`alluvialGraph`) |
62
+ | `SankeyChart` | `sankey-chart/` | `sankey.ts` (columns by longest path, relaxation, link ordering, cycle breaking) |
63
+
64
+ Everything else lives in `core/` (exported as `@jcsoftdev/ui/charts/core` and re-exported from `@jcsoftdev/ui/charts`).
65
+ Polar and other chart families should be built from these blocks; see "Building a new chart" below.
66
+
67
+ ## Data model
68
+
69
+ ```ts
70
+ type XValue = string | number | Date;
71
+
72
+ interface ChartSeries {
73
+ id: string; // stable key, legend toggling
74
+ name: string; // legend, tooltip, data table
75
+ data: ReadonlyArray<number | null>; // one value per category, null = gap
76
+ color?: string; // CSS color; defaults to the palette slot
77
+ dashed?: boolean;
78
+ format?: ValueFormat; // overrides the chart valueFormat
79
+ }
80
+ ```
81
+
82
+ Cartesian charts take `categories: XValue[]` plus `series`. When every category is a `Date` and no series is a
83
+ column, the x axis becomes a real time scale (`xScale="auto"`); force it with `xScale="band" | "time"`.
84
+
85
+ ## Core modules
86
+
87
+ | Module | What it gives you |
88
+ | --- | --- |
89
+ | `scales/linear.ts` | `linearScale`, `niceDomain`, `linearTicks`, `tickStep`, `extent`. All scales share `ContinuousScale { domain, range, map, invert, ticks }`. |
90
+ | `scales/log.ts` | `logScale` (base 10, whole decades). |
91
+ | `scales/band.ts` | `bandScale`, `pointScale`: index based (`start(i)`, `center(i)`, `indexAt(px)`, `bandwidth`, `step`). |
92
+ | `scales/time.ts` | `timeScale`, `timeTicks` (day / week-on-Monday / month / year, es-PE labels such as "lun 28", "6 oct", "jul 2026"), `formatDate` ("mar 6 oct 2026"), `shortMonth`, `shortWeekday`. |
93
+ | `format.ts` | `formatNumber` ("12 345.68"), `formatCurrency` ("S/ 1 234.50"), `formatPercent` ("12.5%"), `formatCompact` ("1,2 mil"), `resolveFormat(ValueFormat)`, `resolveAxisFormat` (shorter tick labels). Groups use a no-break space. |
94
+ | `path.ts` | `linePath`, `areaPath` (variable baseline), `curveCommands` (`"linear" \| "smooth"` = monotone cubic, never overshoots), `monotoneTangents`, `roundedRectPath`, `barPath` (rounded at the value end only), `segments`. |
95
+ | `stack.ts` | `stackLayers(series, "normal" \| "percent")`: positives up, negatives down, percent normalised to 0-1. |
96
+ | `palette.ts` | `CHART_PALETTE`, `seriesColor(i, override?)`, `TONE_COLORS` (neutral/accent/danger/warning/success ink + soft). |
97
+ | `use-chart-size.ts` | `useChartSize()` / `useChartWidth()` (ResizeObserver, SSR fallback 640 x 300), `resolveDrawingHeight`, `useIsomorphicLayoutEffect`. |
98
+ | `motion.ts` | `useReducedMotion`, `useEntryAnimation(ref, play, { disabled, replayKey })`, `revealClip`, `fadeIn`, `EASE_OUT`. Web Animations API, skipped under `prefers-reduced-motion`. |
99
+ | `polar.ts` | Angles are radians, 0 at 12 o'clock, clockwise. `polarPoint`, `angleOf`, `normalizeAngle`, `slotAt` (equal slots), `sliceAngles` (proportional slices with a gap), `arcPath` (annular sector, rounded corners clamped to fit), `arcLine` (stroked centre-line arc), `spreadLabels` (vertical label collision avoidance), `funnelStages` (stage geometry and conversion). Unit tested in `test/charts-polar.test.mjs`. |
100
+ | `use-index-navigation.ts` | `useIndexNavigation(count, { wrap })`: hover and keyboard (arrows, Home/End, Escape) share one `active` index, plus the pointer position for the tooltip. Spread `sliderProps` on a `role="slider"` overlay (`pointer-events-none` is fine for polar charts). |
101
+ | `a11y.ts` | `DECORATIVE` (`aria-hidden`) spread for visual-only SVG text and groups. |
102
+ | `motion.ts` (extra) | `useAnimatedNumber(target, { from, duration, disabled })` eases a displayed value; instant under reduced motion. |
103
+ | `use-series-state.ts` | `useSeriesState(initialHidden)`: hidden set, legend highlight, `toggle`. |
104
+ | `chart-frame.tsx` | `ChartFrame`: measures its slot (width and, with `height="fill"`, height), swaps in loading/empty states, places legend / drawing / footer / hidden table (`legendAside` for polar). Render prop `children(width, height)`. |
105
+ | `chart-states.tsx` | `ChartSkeleton` (`shape: "bars" \| "line" \| "ring"`), `ChartEmpty`. |
106
+ | `legend.tsx` | `ChartLegend`: toggle buttons with `aria-pressed`, hover/focus highlight, swatch shapes `line \| dashed \| square \| dot`. The last visible series cannot be hidden. |
107
+ | `tooltip.tsx` | `ChartTooltip`: positioned card with rows (color, name, value, note, emphasis); measures itself and stays inside the container (prefers the left side past 60%, clamps to the edges when neither side fits); moves with a transform. `tooltipLeft` is the pure placement. |
108
+ | `data-table.tsx` | `ChartDataTable`: visually hidden table for screen readers. |
109
+ | `axes.tsx` | `GridLines`, `AxisBottom`, `AxisLeft`, `AxisRight`, `thinTicks`, `estimateTextWidth`. |
110
+ | `category-axis.ts` | `buildCategoryAxis(categories, width, { mode: "point" \| "band" \| "time" })`: positions, ticks, `indexAt`, bandwidth for charts that share a horizontal category/time axis (range area, stream, candlestick). |
111
+ | `plot-overlay.tsx` | `PlotOverlay`: the focusable `role="slider"` layer + pointer hit-testing used by the non-cartesian charts. Props: `indexAt(pointer)`, `keys`, optional `onKey`. |
112
+ | `palette.ts` (direction) | `DIRECTION_COLORS` (`chart-up`, `chart-down`, `chart-total` tokens) and `directionOf(delta)`. |
113
+ | `types.ts` | `XValue`, `ChartSeries`, `ChartAnnotation`, `ValueAxisOptions`, `ChartLabels` + `DEFAULT_LABELS` + `resolveLabels`. |
114
+ | `color-scale.ts` | Token-only color scales as `color-mix()`: `tint(color, %)`, `inkOn(%)` (readable text on a tint), `sequentialColor`, `divergingColor`, `ColorRange` + `rangeIndex` / `rangeColor` (stepped, `tone` aware), `scaleGradient` for legend bars. |
115
+ | `hierarchy.ts` | `buildHierarchy` (sums, drops empty branches, sorts, `branch` index), `ancestors`, `descendants`, `findNode`, `heightOf`; `squarify` and nested `treemapLayout`; `partitionLayout` (spans 0-1), `PartitionView` + `projectSpan` + `interpolateView` (zoom window), `sectorPath` (annular sector, 0 at twelve o'clock). |
116
+ | `use-drill.ts` | `useDrill(data)`: hierarchy + focused node + `drill(id)` / `up()`; `useAnimatedView(view)`: rAF zoom transition, instant under reduced motion. |
117
+ | `hierarchy-chart.tsx` | Shared pieces of the hierarchy charts: `HierarchyLabels` (+ `breadcrumb`, `share`, `drillHint`), `branchColor`, `levelStrength`, `HierarchyHeader` (breadcrumb), `HierarchyLegend`, `HierarchyTable`, `hierarchyKey` (keyboard model), `HIERARCHY_FRAME_CLASS`. |
118
+ | `breadcrumb.tsx` | `ChartBreadcrumb`: drill path, ancestors are buttons, current item has `aria-current`. |
119
+ | `distribution/` | Statistics and geometry for the distribution family; see below. |
120
+ | `units.ts` | Pure unit geometry: `unitCount`/`unitFractions` (23 at 5 per icon = 4 icons + 0.6), `progressFractions` (4.5 of 5 stars), `largestRemainder`/`waffleCounts` (integer cells that add up), `gridCell`, `fitUnitGrid` (largest icons that fit a box), `parliamentRows`/`parliamentLayout` (hemicycle seats, left to right), `assignUnits`. |
121
+ | `shape-morph.ts` | `rectRing`, `sectorRing`, `blendRings`, `ringPath`, `ringCenter`: rectangles and annular sectors as polygons with the same point count, so any blend between them is a point-wise lerp. |
122
+ | `unit-icons.ts` | `UNIT_ICONS` (person, woman, child, heart, tree, house, car, star, drop, clock, pin, scissors, comb, mustache, pole, chair, calendar, bottle, battery, droplet, target, shield; 24 x 24 solid silhouettes), `PICTOGRAM_SILHOUETTES` and `BARBER_SILHOUETTES` (gallery order), `UnitIcon` (a name, a raw path or a `UnitShape` with its own box), `resolveUnitShape`, `UnitCategory`. |
123
+ | `unit-glyph.tsx` | `UnitGlyph` (one icon in a square cell, partial fill clipped, track behind), `popUnits` (staggered entry), `UNIT_FRAME_CLASS` / `UNIT_LEGEND_CLASS` (frame as `@container/units`, legend below under `@sm`). |
124
+ | `category-explorer.tsx` | `useCategoryExplorer` + `CategorySlider`: hover finds the category through `[data-category]`, a pointer-transparent `role="slider"` overlay moves between categories with the keyboard. |
125
+ | `indicators.ts` | Pure, aligned with the input (`null` while warming up), tested in `test/charts-gantt-stock.test.mjs`: `sma`, `ema` (seeded with the SMA, skips leading nulls), `bollinger` (population deviation), `vwap(bars, from)` (anchored), `rsi` (Wilder), `macd` (line, signal, histogram), `rebase` (% change from a base point). |
126
+ | `time-range.ts` | `TimeRangePreset` (`unit: "day" \| "week" \| "month" \| "year" \| "all"`, `count`), `rangeWindow(dates, preset)` (inclusive index window ending at the last date), `shiftDate` (months clamp to the month end). |
127
+ | `gantt.ts` | `GANTT_ZOOMS` (hour / day / week / month / quarter: px per day, header units, snap), `startOf` / `addUnits` (local calendar, weeks start Monday), `ganttDomain`, `ganttScale(domain, zoom, minWidth)` (stretches to fill the pane), `ganttHeader` / `headerCells`, `nonWorkingSpans(domain, workingDays, holidays)`, `snapTime`, `routeDependency` (finish-to-start, right angles, wraps back through the row gutter when the successor starts too early), `roundedPolyline`, `ganttRows(tasks, collapsed)` (depth-first rows, parents roll up dates and duration-weighted progress). Tested in `test/charts-gantt-stock.test.mjs`. |
128
+ | `tree-layout.ts` | Pure, tested in `test/charts-graph.test.mjs`: `treeLayout(root, { direction, siblingGap, levelGap })` (contour packing in the Reingold–Tilford / Walker family: parents centred over children, siblings packed from both ends and averaged so small subtrees spread evenly, one depth band per level), `treeEdgePath` (`curved` / `step` with rounded elbows / `straight`), `treePathToRoot`, `treeKeyMove` (arrow key to parent/child/sibling for each direction), `treeNeighbor`. |
129
+ | `sankey.ts` | Pure, tested in `test/charts-graph.test.mjs`: `sankeyLayout(nodes, links, { width, height, nodeWidth, nodePadding, iterations, align })` (columns by longest path, `justify` sinks, shared scale `ky`, relaxation sweeps with collision resolution, links ordered by the other end), `breakCycles` (weighted Eades–Lin–Smyth order; backward links are reported in `removed` with a reason), `sankeyLinkPath`, `sankeyFlowOf` (everything upstream and downstream of a node). |
130
+ | `tree-radial.ts` | `radialTreeLayout`, `dendrogramLayout`, `radialEdgePath`, `toPolar`: extra layouts returning the same `TreeLayout` (radial nodes carry `angle`, the layout a `center`). Tested in `test/graph-flow-parity.test.mjs`. |
131
+ | `export.ts` / `export-menu.tsx` | `serializeSvg(svg \| svg[])` clones the drawing(s), bakes computed paint (CSS variables, Tailwind classes) into inline style and stacks them vertically; `downloadSvg`, `downloadPng` (canvas, 2x), `exportFileName`, `stackLayout`; `ExportMenu` is the two-button group used by Gantt and Sankey. Browser only, no dependencies. |
132
+ | `chord.ts` | `chordLayout(matrix, { padAngle, startAngle, sortGroups, sortSubgroups })` (groups + chords), `ribbonPath`, `chordsOf`, `groupAt`. Angles follow `polar.ts`. |
133
+ | `sankey.ts` (extra) | `sankeyTraceOf(link)` (whole path through a link), `sankeyDiff(before, after)`, `alluvialGraph({ stages, categories, flows })`; layout options `relax: false` and per-node `column`. |
134
+ | `use-pan-zoom.ts` | `usePanZoom({ minZoom, maxZoom, wheel })`: drag to pan (capture starts after a few pixels so clicks still work), two-pointer pinch, wheel zoom with Ctrl/⌘ by default, `zoomBy`, `wasDrag()`; pure `zoomAround` and `fitView`. |
135
+ | `cartesian/` | `CartesianChart` (the engine), `computeLayout` (pure geometry), `ChartBrush`, marks and annotations. |
136
+
137
+ ## Theming
138
+
139
+ Colors only come from CSS variables, applied through `style` (`fill`, `stroke`, `stopColor`) so `var()` resolves; never
140
+ as SVG presentation attributes. Text uses Tailwind token utilities (`fill-ink-3`, `text-[11px]`).
141
+
142
+ - Series 1 is always `var(--accent-word)`, so it follows `data-accent`. Series 2-8 use `--chart-cat-1` ... `--chart-cat-7`.
143
+ - `--chart-up`, `--chart-down`, `--chart-total` are the semantic direction tokens (candles, waterfall, slopes, change columns).
144
+ - `--chart-grid` (gridlines, hover band, empty-state rules) and `--chart-crosshair` are chart-only tokens.
145
+ - All of them are defined in `tokens/default.json` with light and dark values; `pnpm build:styles` regenerates `styles/`.
146
+
147
+ ## Interaction and accessibility contract
148
+
149
+ Every chart must keep these, so all families behave the same:
150
+
151
+ - The drawing is `<svg role="img" aria-label={title}>`, and a `ChartDataTable` with the same numbers is rendered (hidden).
152
+ - Visible strings are props (`labels: Partial<ChartLabels>`, English defaults); data formatting is es-PE.
153
+ - Keyboard: the plot overlay is a focusable `role="slider"` whose `aria-valuetext` reads the category and every series
154
+ value. Arrows move, Home/End jump, Escape clears. The brush is its own slider (arrows pan, Shift+arrows resize).
155
+ - Pointer: one transparent overlay owns pointer events; hover state lives in the plot component and marks are
156
+ `memo`ised with stable geometry from `computeLayout`, so hovering only re-renders the crosshair, markers and tooltip.
157
+ - Legend hover/focus dims the other series (`opacity` transition); click toggles them.
158
+ - Entry animation through `useEntryAnimation` (line reveal by a clip rect, bars grow from their baseline with a short
159
+ stagger, labels fade). Nothing animates with `prefers-reduced-motion` or `animate={false}`.
160
+ - `loading` shows `ChartSkeleton`; no finite data shows `ChartEmpty`.
161
+
162
+ ## Hierarchy and matrix charts
163
+
164
+ ```tsx
165
+ <TreemapChart title="Ventas por categoría" data={{ name: "Octubre", children: [...] }} valueFormat="currency" />
166
+ <SunburstChart title="Servicios" data={tree} levels={3} />
167
+ <IcicleChart title="Ingresos" data={tree} orientation="vertical" />
168
+ <HeatmapChart title="Ocupación" rows={days} columns={hours} values={matrix} scale="diverging" />
169
+ <CalendarHeatmap title="Citas por día" days={[{ date, value }]} ranges={[{ to: 5, label: "0-4" }]} />
170
+ ```
171
+
172
+ - Data is a `HierarchyDatum` tree (`name`, `value` on leaves, optional `color`, `children`).
173
+ - Keyboard: arrows move between the children of the open node, Enter opens one, Escape goes up
174
+ (heatmaps: arrows move by row/column, Enter calls `onCellClick`, Escape clears).
175
+ - Drill-down keeps a breadcrumb; sunburst and icicle animate the zoom window with `useAnimatedView`.
176
+ - Colors: each top-level branch of the open node takes a palette slot; depth and sibling rank vary the
177
+ tint. Heatmaps use `color-scale.ts`, so they follow the theme and `data-accent`.
178
+
179
+ ### Semi-circle sunburst and the treemap/sunburst morph
180
+
181
+ - `<SunburstChart half />` draws the partition on a 180 degree fan; the center label sits above the baseline and the
182
+ pointer and keyboard behave as in the full disc.
183
+ - `<HierarchyMorph data={tree} />` shows one hierarchy as treemap rectangles or sunburst rings and morphs between them
184
+ (`mode` / `defaultMode` / `onModeChange`, `showSwitch={false}` to drive it from outside). It draws the first
185
+ `levels` (1 or 2) levels; shapes that have no rectangle in the treemap grow out of their parent.
186
+ - Treemap, sunburst and icicle have `Drilldown` stories that report the open node through `onFocusChange`;
187
+ `Nested` (treemap, `depth={3}`) is the market-map layout.
188
+
189
+ ## Node-link charts: tree and sankey
190
+
191
+ ```tsx
192
+ <TreeChart title="Equipo de la barbería" data={{ name: "Carlos", subtitle: "Dueño", children: [...] }}
193
+ direction="left" edgeStyle="step" initialDepth={2} height="fill" />
194
+ <TreeChart ... renderNode={(node, state) => <MyCard node={node} highlighted={state.highlighted} />} />
195
+ <SankeyChart title="Origen de clientes" nodes={[{ id: "ig", name: "Instagram" }, ...]}
196
+ links={[{ source: "ig", target: "corte", value: 142 }, ...]} columns={["Origen", "Servicio", "Pago"]} />
197
+ ```
198
+
199
+ - `TreeChart` draws edges in SVG and nodes as absolutely positioned HTML boxes (`nodeWidth` x `nodeHeight`)
200
+ inside one transformed stage, so templates are ordinary React + Tailwind. The default `TreeCard` has a color
201
+ rail, avatar (image or initials), name, subtitle and badge. Expand/collapse animates with `useTreeTransition`
202
+ (nodes grow out of and fold back into their closest visible ancestor). The view fits the tree and follows the
203
+ container until the user pans or zooms; the fit button (or `0`) returns to following. Keyboard: the explorer
204
+ slider moves by arrows relative to the direction (towards the leaves = first child, across = siblings), Enter
205
+ toggles, `+`/`-` zoom, Home goes to the root; the active node is panned into view.
206
+ - Tree extras: `layout="radial"` (`radialTreeLayout`: root in the centre, one ring per level, leaves share the
207
+ angle, rings pushed out until a ring's boxes fit; edges via `radialEdgePath`) and `layout="dendrogram"`
208
+ (`dendrogramLayout`: every leaf on the last level, parents centred over their first and last child, honours
209
+ `direction`); both default to compact `TreeChip` nodes and the same transitions. `searchable` adds a search box
210
+ (`searchTree` folds accents, every word must match name, subtitle or badge): matches are ringed, Enter / Shift+Enter
211
+ or the arrows step through them, opening closed ancestors, selecting the node and centring it. `selectable` /
212
+ `selectedId` keep the path to the root lit. `showCounts` shows descendants (`TreeNodeState.descendants` for custom
213
+ templates). `groupLeaves={n}` folds runs of `n`+ leaf siblings into a dashed group node (`groupLeaves()` is
214
+ pure). `lazy: true` data plus `loadChildren(node)` fetches children on first expand with a spinner on the toggle
215
+ (`buildTreeModel(data, loaded)`); a rejected promise marks the node and calls `onLoadError`. `edgeColor` is
216
+ `neutral | depth | branch`; with a lit path the other edges fade.
217
+ - `SankeyChart`: hover a node to light its whole flow upstream and downstream, a link to isolate it; the tooltip
218
+ gives the value, share of its source and share of the total. Keyboard: up/down within a column, left/right to
219
+ the nearest node of the next column, Enter steps through the node's flows. Links that close a cycle are left
220
+ out, reported through `onRemovedLinks`, and logged with `console.warn` outside production.
221
+ - Sankey extras: `compare={previousLinks}` turns it into a diff view (`sankeyDiff` merges the periods by pair; the
222
+ layout reserves the larger width, the band is drawn at the current width colored by `--chart-up` /
223
+ `--chart-down`, the previous width stays as a grey ghost, a flow that disappeared is dashed; tooltip and table
224
+ give before, after and change). `pathTracing` makes a link light everything upstream of its source and
225
+ downstream of its target (`sankeyTraceOf`) and lets a click pin the path. `particles` animates dots along the
226
+ bands with SMIL (`animateMotion`), off under `prefers-reduced-motion` and marked `data-export-skip` so exports
227
+ stay static. `exportable` adds SVG / PNG buttons. `relax={false}` and `SankeyNodeInput.column` pin nodes to
228
+ fixed columns in input order, which is what `AlluvialChart` (`stages`, `categories`, `flows[s]` from stage `s`
229
+ to `s + 1`; `alluvialGraph` is the pure conversion) uses.
230
+ - `ChordChart`: `chordLayout(matrix)` (`matrix[i][j]` = flow from `i` to `j`, a group's arc is its row sum, a
231
+ ribbon is `matrix[i][j]` wide at `i` and `matrix[j][i]` at `j`), `ribbonPath`, `chordsOf`, `groupAt`. Hover a
232
+ group to light its ribbons, a ribbon to isolate it; arrows walk the groups (`PlotOverlay`-style hidden slider).
233
+ Names sit around the ring from 420 px, the legend carries them below.
234
+ - Narrow containers: the tree is fitted (and can be zoomed); sankey labels shorten, then hide when the gap
235
+ between columns is under 40 px, and a node legend shows below the drawing until `@lg/chart`.
236
+
237
+ ## Responsive: hierarchy and heatmap charts
238
+
239
+ Charts receive the measured width of their container from `ChartFrame`, never the viewport. The hierarchy
240
+ and heatmap charts make the frame a size container (`@container/chart`) so the HTML around the drawing
241
+ reacts with container variants: the legend sits below the drawing in narrow containers and moves above it
242
+ from `@md/chart`. Inside the SVG: labels only render where they fit, column labels thin out, the sunburst and
243
+ icicle drop outer levels before they get too thin, the calendar keeps only the most recent weeks that fit,
244
+ and the tooltip never leaves the frame. Every chart has a `Narrow` story at 320 px.
245
+
246
+ ## Fitting the parent: `height="fill"` and `aspectRatio`
247
+
248
+ Every chart adapts to its exact parent, width and height, from the container and never the viewport.
249
+
250
+ ```tsx
251
+ <div style={{ width: 560, height: 360 }}>
252
+ <LineChart height="fill" ... /> {/* takes the whole box, legend and brush included */}
253
+ </div>
254
+ <DonutChart aspectRatio={16 / 9} ... /> {/* height follows the measured width */}
255
+ ```
256
+
257
+ - `height`: a number (pixels, the default of each chart), `"fill"` (the frame measures its slot with a
258
+ `ResizeObserver` and the legend, footer and brush are subtracted by the layout, so the drawing gets what is left),
259
+ or, inside `ChartFrame`, a function of the width (`CalendarHeatmap` uses it: square cells decide the height).
260
+ - `aspectRatio` (width / height) wins over a pixel `height` and is ignored with `"fill"`.
261
+ - `"fill"` needs a parent with a definite height (fixed, flex or grid sized). With none, the drawing falls back to a
262
+ 120 px minimum instead of collapsing.
263
+ - `ChartFrame` is `@container/chart` with no padding or margin; `children(width, height)` gets the drawing size
264
+ (the second argument is optional, older charts keep working). The pure rules live in `core/drawing-height.ts`.
265
+ - Row-based charts (`TimelineChart`, `DumbbellChart`, `IsotypeRows`) accept `height="fill"` only: rows stretch to the
266
+ box. `ProgressUnits` is a single row and keeps its `size`.
267
+ - No chart has outer padding: the plot touches the container edges except for axis gutters measured from the actual
268
+ tick labels (plus half of the last x label). Polar charts take `min(width, height)` for the radius; with
269
+ `legendAside` the legend moves beside the drawing from `@lg/chart` (512 px) and sits under it when narrower.
270
+ - Only container variants (`@lg/chart:`, `@md/chart:`, `@sm/units:`) are used in charts. Geometry thresholds in JS
271
+ (`width < 440`, ...) read the measured width. Check the `FillParent` stories (resizable box) and `Narrow` ones.
272
+
273
+ ## Gantt and stock charts
274
+
275
+ ```tsx
276
+ <GanttChart
277
+ title="Remodelación de la sede San Isidro"
278
+ tasks={[{ id, name, start, end, progress, parentId, milestone, dependencies: ["id"], color, assignee }]}
279
+ defaultZoom="day" // or zoom + onZoomChange
280
+ today={new Date()} // "auto" (default) or false
281
+ editable onTaskChange={(change) => update(change)} // { id, start, end, progress, source }
282
+ holidays={[new Date(2026, 9, 8)]}
283
+ />
284
+ <StockChart
285
+ title="Precio de la caja de navajas (S/)"
286
+ data={[{ date, open, high, low, close, volume }]}
287
+ ranges={presets} defaultRange="6m"
288
+ overlays={[{ type: "sma", period: 20 }, { type: "bollinger" }, { type: "vwap" }]}
289
+ oscillator={{ type: "rsi" }} // or { type: "macd", fast, slow, signal }
290
+ comparisons={[{ id, name, values }]} flags={[{ date, label: "P", text, tone }]}
291
+ />
292
+ ```
293
+
294
+ - Gantt: the task tree (`role="tree"`, roving focus) and the timeline share one scroller, so vertical scroll is always in
295
+ sync; the header row and the list are `position: sticky` (the Table pinning idea). The divider between them is a
296
+ focusable `role="separator"` (drag or arrows). Ends are instants: a task from Monday to Friday ends on Saturday 00:00
297
+ and is shown ending on Friday. Keyboard: Up/Down rows, Left/Right collapse/expand, Enter toggles; when `editable`,
298
+ Alt+arrows move by the zoom snap, Shift+arrows change the end, `+`/`-` change progress by 10%. Edits are controlled:
299
+ the chart reports them and shows the dragged draft until `tasks` changes. Late links (successor starts before the
300
+ predecessor ends) use the danger token. Default height follows the rows (220-560 px); `"fill"` scrolls rows inside.
301
+ - Gantt extras: `showCriticalPath` runs `criticalPath(tasks)` (forward/backward pass over finish-to-start
302
+ dependencies; tasks without predecessors start at their own date, the rest when their predecessors end, so waiting gaps are ignored; a dependency on a parent
303
+ means all its leaves; cycles are left out) and draws zero-slack tasks and their tight links in the danger tone,
304
+ with the slack of the others in the tooltip. `showBaselines` draws `task.baseline` as a thin bar under the
305
+ actual one and adds baseline and variance to the tooltip. `annotations` are dated lines or bands (`to`) with a
306
+ label, stacked into lanes so labels never overlap. `zoom="year"` shows a whole year (quarters in the header).
307
+ `exportable` adds SVG and PNG buttons that export the header and the timeline (`core/export.ts`).
308
+ - Stock: indicators run on the whole series and are sliced to the window, so the warm-up never shows inside the view;
309
+ VWAP is anchored at the first visible bar. Visible comparisons switch the chart to % change from the first visible
310
+ bar (the main series becomes a line, overlays hide, the type switch is disabled). The price and oscillator panes
311
+ share one crosshair and one keyboard slider; the navigator is `ChartBrush`. `height` covers price and oscillator; the
312
+ navigator is extra, as with the candlestick brush (`"fill"` includes it).
313
+ - Stock types: `seriesType` also takes `"column"`, `"heikin-ashi"` and `"renko"`. The last two transform the data
314
+ (`heikinAshi(data)`, `renko(data, brickSize)` in `stock-transforms.ts`, `renkoBrickSize` defaults to the ATR(14));
315
+ overlays and the oscillator then run on the transformed bars, the hidden data table keeps the raw prices.
316
+ - Streaming: `useStockStream(initial, { maxBars })` returns `{ data, appendData }`; `appendBars` replaces a bar with the
317
+ same date (the forming candle) and appends newer ones. A window that ends at the last bar follows new bars, any other
318
+ window keeps its dates; a different series type or an unrelated dataset resets to `defaultRange`.
319
+ - Drawing tools: `drawingTools={DEFAULT_STOCK_TOOLS}` shows select, trend line, horizontal line, range box, Fibonacci and
320
+ measure. Drawings are `{ id, type, a, b }` with `{ time, price }` anchors, so they survive zoom and new data; the list is
321
+ controlled with `drawings` or `defaultDrawings` and every change reaches `onDrawingsChange(all)`. Select one by clicking it
322
+ and delete it with Supr or the toolbar button. Measure is transient: it shows % change, bars and days between two points.
323
+ Drawings are hidden in % comparison mode.
324
+ - `pinnable` pins a bar's tooltip on click or Enter (several at once, `defaultPinned` / `onPinnedChange` carry times in ms).
325
+ - `stockStats(bars)` is headless: returns, annualized volatility, high/low, best/worst day and maximum drawdown; pair it
326
+ with `onWindowChange({ from, to })` to summarize the visible window.
327
+
328
+ ## Bars and relatives
329
+
330
+ ```tsx
331
+ <BarChart // floating bars: [start, end] per category
332
+ series={[{ id: "turno", name: "Turno", ranges: [[9, 17], [10, 18]] }]} />
333
+ <BarChart stack="normal" series={[ // grouped stacked: one pile per stackGroup
334
+ { id: "cortes", name: "Cortes", stackGroup: "ingresos", data },
335
+ { id: "sueldos", name: "Sueldos", stackGroup: "costos", data },
336
+ ]} />
337
+ <BarChart categoryGroups={[{ label: "1.er trimestre", count: 3 }]} categories={months} />
338
+ <BarChart yAxis={{ reversed: true }} /> // bars hang from the top (left-to-right axis flips for horizontal)
339
+ <BarChart series={[{ id: "a", name: "A", data, pattern: "stripes" }]} />
340
+ <BarChart distributed /> // or series[].colors = ["var(--chart-up)", undefined, ...]
341
+ <BarChart categoryLabelRotation={-45} />
342
+ <DrilldownBarChart data={tree} breadcrumbLabel="Ruta" /> // HierarchyDatum; click a bar with a `›`
343
+ <BarRaceChart entities={[{ id, name }]} frames={[{ label: "Sem 1", values: [..] }]} topN={6} />
344
+ <WaterfallChart orientation="horizontal" />
345
+ <DumbbellChart orientation="vertical" measures={[{ name: "Sep" }, { name: "Oct" }, { name: "Meta" }]}
346
+ items={[{ label: "Mateo", values: [42, 38, 35] }]} />
347
+ <LollipopChart items={[{ label, value }]} orientation="vertical" sort="desc" />
348
+ <BulletChart items={[{ label, actual: 78, target: 85, ranges: [60, 80, 100] }]} rangeLabels={["Bajo", "Medio", "Alto"]} />
349
+ ```
350
+
351
+ - `CartesianSeries` gained `from` (floating start), `stackGroup` and `pointColors`; `ChartSeries` gained `pattern`;
352
+ `ValueAxisOptions` gained `reversed`; `CartesianChartProps` gained `categoryGroups`, `categoryLabelRotation` and
353
+ `onCategoryClick(index)` (click or Enter on the focused plot). Floating series never stack and are rounded at both ends.
354
+ - Group labels (`CategoryGroupAxis`, `categoryGroupSpans` in `core/cartesian/`) are a second tier under vertical category
355
+ axes; they hide while the plot is zoomed.
356
+ - Patterns (`core/patterns.ts`, `core/pattern-defs.tsx`): `PATTERN_NAMES` (stripes, stripes-reverse, dots, crosshatch,
357
+ grid, zigzag, checks, diamonds, waves) or your own `PatternTile { size, shapes }`. Tiles are drawn in the series color
358
+ over a soft backdrop of the same token, so themes still decide the hue. `ChartPatternDefs` + `patternId` / `patternFill`
359
+ are exported so other charts (donut, area) can use them: render the defs in your `<defs>` and fill with `url(#id)`.
360
+ - Bar race: values move linearly and ranks follow a smoothstep (`raceItems`), so bars glide into place; bars pass over each
361
+ other while swapping. Reduced motion steps frame to frame. The hidden table lists every frame.
362
+ - Bullet: `scale="row"` (default) gives every row its own 0-to-max scale, for mixed units; `"shared"` draws one axis.
363
+ - Dumbbell with `values`: the change compares the first measure with the last; two measures keep the gradient bar, more
364
+ use a neutral bar. Vertical dumbbells put the change above each column.
365
+
366
+ ## Annotations (cartesian)
367
+
368
+ ```ts
369
+ annotations={[
370
+ { type: "line", axis: "y", value: 1500, label: "Meta diaria", tone: "success" },
371
+ { type: "range", axis: "y", from: 0, to: 30, label: "Bajo", tone: "danger" },
372
+ { type: "line", axis: "x", value: new Date(2026, 9, 8), label: "Feriado" },
373
+ { type: "range", axis: "x", from: "jue", to: "vie", tone: "warning" },
374
+ ]}
375
+ ```
376
+
377
+ `axis: "y"` is the value axis (drawn vertical in horizontal bar charts), `axis: "x"` the category axis; x values match a
378
+ category (dates by time). `yAxis: "right"` measures against the secondary axis.
379
+
380
+ Marks anchored at a data coordinate (category `x`, value `y`), with an optional `tooltip` sentence shown when the
381
+ pointer is within 14 px (any annotation type accepts `tooltip`, only `point` and `text` are hoverable):
382
+
383
+ ```ts
384
+ { type: "point", x: new Date(2026, 9, 4), y: 2280, label: "Récord", tooltip: "Mejor día del periodo", tone: "success" },
385
+ { type: "text", x: "dom", y: 900, label: "Domingo corto" },
386
+ ```
387
+
388
+ ## Cartesian extras
389
+
390
+ | Prop | Where | What |
391
+ | --- | --- | --- |
392
+ | `curve="step" \| "step-before" \| "step-after"` | Line, Area, Combo | Values that hold until they change. `step` switches halfway between samples, `step-after` holds the value until the next sample, `step-before` jumps early. Stacked areas mirror the lower edge. |
393
+ | `syncId` | every cartesian chart | Charts with the same id share the hovered category (crosshair, dots and tooltip) and the brush window. Matching is by category value (dates by time; nearest date when the other chart is sampled differently). Wrap a group in `ChartSyncProvider` to scope it so two groups with the same id never mix. |
394
+ | `onPointClick` | every cartesian chart | `{ index, category, seriesId, value }` for a click, or Enter on the focused plot. `index` is in your original `categories`, whatever the zoom or downsampling. |
395
+ | `transition` | every cartesian chart | Eases line and area paths between updates with the CSS `d` property (live feeds with a fixed point count; browsers without it jump). |
396
+ | `maxPoints` | every cartesian chart | LTTB threshold, 2000 by default, `false` to draw everything. Applies to line and area plots (never bars or horizontal charts): `sharedSampleIndices` picks the union of each series' LTTB points plus the neighbours of every gap, so series stay aligned. Zooming resamples the window; the hidden data table and the brush overview use the reduced data. |
397
+ | `gradient` (LineChart) | Line | Strokes each line from its color towards the next palette color. (On Area/Combo `gradient` is still the fill under the area.) |
398
+
399
+ `downsample(points, threshold)`, `lttbIndices` and `sharedSampleIndices` (core `downsample.ts`) are pure and tested in
400
+ `test/cartesian-parity.test.mjs`, together with the step paths and the sync store.
401
+
402
+ `LineDrilldown` (`line-chart/`) walks a `HierarchyDatum`: the children of the focused node are the points, a node's
403
+ value is its own or the sum of its children, clicking a point with children drills in (`useDrill`) and `ChartBreadcrumb`
404
+ climbs out. It keeps `useDrill`'s rule that only positive values are shown.
405
+
406
+ Value axes: `yAxis` and `rightAxis` are shorthand for the axes with id `"left"` and `"right"`. `axes` declares any number
407
+ of them (`{ id, side?: "left" | "right", color?, ...ValueAxisOptions }`; extra ones default to the right), series pick one
408
+ with `axis: "<id>"` and annotations with `yAxis: "<id>"`. Axes stack outward from the plot on their side, each taking
409
+ the width of its widest tick label (`stackAxes`, tested); an axis no series uses is dropped. `color` tints the labels
410
+ and draws a thin axis line so a reader can tell which scale belongs to which series. The first axis is the primary one
411
+ (gridlines, zero line, bar baseline). Charts with a `syncId` also share the widest left and right margin of the group, so
412
+ their plot areas line up.
413
+
414
+ ## Distribution family (`core/distribution/`)
415
+
416
+ ```ts
417
+ interface DistributionSeries { // BoxPlot, ViolinChart, RaincloudChart
418
+ id: string; name: string; color?: string; format?: ValueFormat;
419
+ data: ReadonlyArray<ReadonlyArray<number | null>>; // data[i] = raw samples of categories[i]
420
+ }
421
+ // Histogram: { id, name, values: number[] } Beeswarm: { id, name, points: { value, category?, size?, label? }[] }
422
+ // Scatter / Bubble: { id, name, points: { x, y, size?, label? }[] }
423
+ ```
424
+
425
+ | Module | What it gives you |
426
+ | --- | --- |
427
+ | `stats.ts` | Pure, tested in `test/charts-distribution.test.mjs`: `quantileSorted` (type 7), `boxStats` (Tukey whiskers, outliers, mean), `standardDeviation`, `silvermanBandwidth`, `gaussianKde`, `normalPdf`, `sturgesBinCount`, `freedmanDiaconisWidth`, `binEdges` (nice widths), `binCounts`, `histogram`, `linearRegression` (slope, intercept, r²), `seededRandom` (stable jitter), `beeswarm` (collision-free offsets, closest free slot to the axis). |
428
+ | `layout.ts` | `categoryLayout` (category axis + value axis, vertical or horizontal, dodged `slot(category, series)`), `xyLayout` (two continuous axes, `inset` for radii), `nearestPoint`, `truncateLabel`, `tooltipFit`. |
429
+ | `marks.tsx` | `CategoryAxes`, `XYAxes`, `BoxGlyph` (`variant: "box" \| "inner"`), `boxTooltipRows`, `boxValueText`, `BoxStatsTable`. |
430
+ | `geometry.ts` | `violinPath` (full or half, either orientation), `toXY`. |
431
+ | `explorer.tsx` | `PlotExplorer`: the focusable `role="slider"` overlay (arrows, Home/End, PageUp/PageDown, Escape) plus pointer picking. |
432
+ | `use-legend.tsx` | `useDistributionLegend`: colors, toggling, highlight and the legend node. |
433
+ | `xy-points.tsx` | `XYPointChart`, the engine behind `ScatterChart` and `BubbleChart`. |
434
+ | `points.ts`, `observations.tsx` | `jitterValues(values, seed, reach)` (deterministic jitter, `reach` may follow a density), `groupSeed`, and `ObservationDots` (raw dots of a box or violin, `coloring: "series" \| "value"`). |
435
+ | `dot-stack.ts` | `packDots`, `fitRadius`, `explodeBins`: row-by-row dot stacks that fit a bin, one shared radius (histogram explode). |
436
+ | `point-index.ts` | `createPointIndex(points, cell)`: uniform-grid index, `nearest(x, y, radius)` in microseconds for 50 000 marks; ties go to the smaller mark. |
437
+ | `../use-canvas.ts` | `useCanvasPaint` (device-pixel-ratio canvas, repaint on deps and theme change), `resolveCssColors` (token / `color-mix()` colors to something a canvas understands). |
438
+ | `labels.ts` | `StatLabels` (median, Q1, mean, outliers, ...) merged with `ChartLabels`; pass Spanish through `labels`. |
439
+
440
+ ### Parity features (distribution, scatter, heatmap, trellis)
441
+
442
+ Pure parts are tested in `test/distribution-parity.test.mjs`.
443
+
444
+ - `BoxPlot` / `ViolinChart`: `showPoints` draws every raw sample with seeded `jitter` (0-1, the share of the box or local
445
+ violin width) and `seed`; `pointColor="value"` grades each dot from a pale tint of the series colour to the full colour.
446
+ Violin dots spread by the local density, so they follow the shape. Outlier dots are the same dots when `showPoints` is on.
447
+ - `Histogram`: `exploded` / `defaultExploded` / `onExplodedChange` turn every bin into one dot per observation (dot plot
448
+ on the same bins, one column per bin, staggered pop-in); dot k fills the k-th unit cell of the y axis, so a stack is as
449
+ tall as its count, and the axis stretches when dots would otherwise be taller than the bin is wide.
450
+ `explodeToggle` shows the button (`labels.explode`, `labels.bars` while exploded; `aria-pressed`).
451
+ - `ScatterChart` / `BubbleChart`: `xType="time"` (x in epoch ms, calendar ticks, `formatDate` tooltips), `jitter`
452
+ (pixels, number or `{ x, y }`, tooltips keep the true values), `XYPoint.image` (URL or data URI, clipped to the
453
+ marker, ringed in the series colour), `shading="shaded"` (bubbles only: off-centre radial gradient, a lit sphere).
454
+ - `renderer="canvas"` (scatter, bubble, heatmap): marks are painted on a canvas; axes, tooltip, focus ring and
455
+ keyboard stay SVG/HTML. Scatter hit-testing is a grid index (`createPointIndex`); heatmap hit-testing is cell
456
+ arithmetic (`hexLayout.cellAt` for honeycombs). The hidden data table is capped (500 points, 60 x 40 cells), and the
457
+ heatmap crosshair dimming is skipped. Scatter falls back to SVG when points have images or bubbles are shaded.
458
+ - `HeatmapChart`: `shape="hex"` honeycomb (`hexLayout`, `hexPath`: pointy-top, odd rows shifted half a cell),
459
+ `columns` may be `Date[]`: the header is labelled only at calendar boundaries (`datetimeColumnLabels`).
460
+ `DrilldownHeatmap` takes a root `HeatmapLevel` whose `drill({ row, column, value })` returns the sub-matrix.
461
+ - `ChartGrid`: `panels` (`id`, `title`, `subtitle`, `extent`, `xExtent`) and a render prop `(panel, ctx)`;
462
+ `ctx.valueDomain` / `ctx.xDomain` are the shared domains (`sharedDomain`: union of extents, niced, `includeZero`),
463
+ `ctx.height` (default: about 1.4:1 from the panel width, at least 180), `ctx.tickCount` (the shared domain is niced for it, pass it as `yAxis.tickCount`), `ctx.compact`. Columns come from the measured container width (`gridColumns`, `minPanelWidth`,
464
+ `maxColumns`), never the viewport. `legend` is one shared `ChartLegend`; `syncHover` wraps the grid in a
465
+ `ChartSyncProvider` and exposes `ctx.syncId`: pass it to each chart's `syncId` and every panel shows the real crosshair
466
+ and tooltip of the hovered category.
467
+
468
+ Exploration order is the reading order: boxes/violins category by category, histogram bins left to right, beeswarm
469
+ points row by row, scatter points by x. The tooltip and `aria-valuetext` carry the same numbers.
470
+
471
+ ## Responsive: all charts and the distribution family
472
+
473
+ Charts only know the width `ChartFrame` measures, never the viewport:
474
+
475
+ - Tick counts derive from the plot size; crowded category labels are thinned (`thinTicks`), long row labels are
476
+ truncated (`truncateLabel`), and the right margin leaves room for the last tick label.
477
+ - Distribution charts give the frame `@container`; their top legend uses `order-last @md:order-none`, so it sits under
478
+ the plot below 448 px. `tooltipFit(width)` flips the tooltip at the middle and caps it to `50cqw` under 480 px.
479
+ - Bubble labels outside the bubble, trend-line R² labels and quadrant captions hide or truncate when they do not fit.
480
+ - `ChartDataTable` wraps its table in an `sr-only` div: a table ignores `width: 1px`, so a wide one used to overflow.
481
+
482
+ ## Building a new chart (polar, heatmap, candlestick, treemap, ...)
483
+
484
+ 1. Create `src/charts/<name>/<name>.tsx`, `index.ts` and `<name>.stories.tsx`; add the folder to `src/charts/index.ts`.
485
+ 2. Wrap the output in `ChartFrame` with `labels={resolveLabels(props.labels)}`, `loading`, `empty`, a `ChartLegend`
486
+ fed by `useSeriesState`, and a `ChartDataTable`. Pick a skeleton shape (`"ring"` exists for polar charts).
487
+ 3. Inside `children(width, height)` (accept `height: number | "fill"` and `aspectRatio` and pass them to the frame), render a separate plot component so `useMemo` can hold the geometry; keep hover state in
488
+ that component and `memo` the marks.
489
+ 4. Use `seriesColor(i)` for categorical colors (slices, cells legend) and `TONE_COLORS` for status colors; apply them via
490
+ `style`. Use `resolveFormat` for values and `formatDate` for dates.
491
+ 5. Geometry helpers: polar code can reuse `linearScale` for radius, `bandScale` for angular slots, and draw arcs with
492
+ its own small `arcPath` next to `path.ts` (add it there so the next chart can share it).
493
+ 6. Reuse `ChartTooltip` (pass container-relative `x`/`y`) and a focusable overlay with `role="slider"` +
494
+ `aria-valuetext` for keyboard exploration.
495
+ 7. Animate with `useEntryAnimation`; respect `animate={false}`.
496
+ 8. Pure helpers get a case in `test/charts-core.test.mjs`.
497
+
498
+ ## Polar charts and narrow containers
499
+
500
+ Polar charts measure the container through `ChartFrame` and degrade by width, with no viewport queries:
501
+ outside labels (donut/pie) and rim labels (polar area) give way to the legend below 420-440 px, radial ring labels
502
+ hide below 360 px, radar axis names shorten, funnel label columns shrink and truncate, and the tooltip flips inside
503
+ the frame. Every polar chart ships a `Narrow` story rendered in a 320 px container.
504
+ 8. Pure helpers get a case in `test/charts-core.test.mjs` (hierarchy and matrix layouts: `test/charts-hierarchy.test.mjs`).
505
+
506
+ ### Radial charts: shades, fills, updates, drilldown
507
+
508
+ - `monochrome` (`PieChart`, `DonutChart`, `PolarAreaChart`): one hue in shades, darkest on the largest value
509
+ (`monochromeByValue` in `palette.ts`). `true` uses the accent, a string sets the base color.
510
+ - `DonutChart` `fill`: `"gradient"` fades each slice from the hole to the rim; `"pattern"` adds a texture per slice
511
+ (stripes, dots, grid, wide stripes, checks) so color is not the only cue. Image fills are not supported.
512
+ - Data changes ease: slices grow, shrink and appear, and the centre total counts along (not under reduced motion).
513
+ - `DonutChart` drilldown: a datum with `children` opens in the same ring on click or Enter; a breadcrumb (and Escape or
514
+ Backspace) goes back; children default to shades of the parent color. `rootLabel` names the first crumb.
515
+ - `GaugeChart`: `tickMarks` + `minorTicks` draw a dial; `centerContent` replaces the value/caption with your own
516
+ HTML. `FunnelChart`: `tapered` (default) or straight bars, and `neck` for how far the last stage narrows.
517
+
518
+ ## Maps
519
+
520
+ ```tsx
521
+ import { ChoroplethMap } from "@jcsoftdev/ui/charts/choropleth-map";
522
+ import { peruMap } from "@jcsoftdev/ui/charts/maps/data/peru"; // geometry is a separate module
523
+
524
+ <ChoroplethMap title="Clientes por departamento" map={peruMap} valueName="Clientes"
525
+ data={[{ id: "PE-CUS", value: 520 }, { id: "Arequipa", value: 760 }]} />
526
+ <BubbleMap title="Sedes" map={selectRegions(peruMap, ["PE-LMA", "PE-CAL"])} cluster
527
+ points={[{ id: "mir", name: "Miraflores", lat: -12.12, lon: -77.03, value: 1840, category: "propia" }]} />
528
+ ```
529
+
530
+ - Data joins by region id or name (accents and case ignored). `value: null` or a missing region has no data.
531
+ - Geometry is TopoJSON decoded by our own `topologyFeatures`; `maps/data/README.md` has sources, licenses and how it was
532
+ simplified. `selectRegions(map, ids)` restricts a map (the projection re-fits, so it also zooms to those regions).
533
+ - Projections (`maps/geo/projection.ts`): `equirectangular`, `mercator` (clamped to 85.05 deg), `equalEarth`, and `fitted`
534
+ (equirectangular with the standard parallel at the middle of the area, for a country). `fitProjection` scales any of
535
+ them to the exact box of the chart, so a map fills its parent like every other chart (`height="fill"`, `aspectRatio`).
536
+ - Zoom and pan: buttons, wheel (by default `wheelZoom="modifier"` needs Ctrl/Cmd so page scrolling is never trapped), drag,
537
+ two-finger pinch, keys `+` `-` `0` and Shift+arrows. The view is clamped to the map and resets when the box resizes.
538
+ - Keyboard: one focusable `role="slider"` layer; arrows walk the regions (or visible bubbles), Enter fires the click
539
+ callback, the tooltip follows the keyboard selection and the view pans to keep it visible. A hidden data table
540
+ repeats every value.
541
+ - Touch: the map takes the gestures (`touch-action: none`), so on phones scroll the page from outside the map or pass
542
+ `zoomable={false}`.
543
+ - Region labels (`regionLabels`) sit at a point inside each region, only where they fit and do not collide. Bubble and
544
+ cluster sizes are in screen pixels, area proportional between `minRadius` and `maxRadius`.
545
+ - Data table: `dataTable="visible"` swaps the map for a sortable table (name, value, a magnitude bar) and `"toggle"`
546
+ adds a button to switch; the default keeps the table for screen readers only. `MapDataTable` is exported for reuse.
547
+ - Drilldown: `ChoroplethDrilldown` takes a `root` level (`{ id, name, map, data }`) and `resolve(region, path)` returning
548
+ the level to open (or nothing); a breadcrumb goes back up. Only Peru and the world ship geometry, and Peru has
549
+ departments but no provinces, so the story drills world -> Peru.
550
+ - `HexTileMap`: every region is one equal hexagon (`tiles` = `{ id, name, code, row, col }` on an odd-r grid; Peru's 25
551
+ regions are `PERU_HEX_TILES`). Same data joins, scales, legend, tooltip, keyboard and table as `ChoroplethMap`;
552
+ labels show the code and the value where the tile is big enough. The layout math is in `hex-tile-map/hex-layout.ts`.
553
+ - Routes: `BubbleMap routes={[{ id, from, to, value }]}` (`from` / `to` are point ids or `{ lon, lat }`) draws arcs under
554
+ the bubbles; `routeStyle="curve"` is a quadratic arch in screen space (`routeBend`), `"great-circle"` follows the
555
+ shortest path on the globe and splits at the antimeridian (`maps/geo/routes.ts`). Width follows `value`, the dashes
556
+ march from origin to destination unless `animateRoutes={false}` or the user prefers reduced motion, and routes get
557
+ their own hidden table.
558
+ - Pure helpers (`projection.ts`, `topojson.ts`, `simplify.ts`, `build-topology.ts`, `cluster.ts`, `view.ts`) are tested
559
+ in `test/charts-maps.test.mjs`; `check:treeshake` asserts that a chart or one dataset never pulls in the other dataset.
560
+
561
+ ## Globe, crossfilter, ruler/ink and scrollytelling
562
+
563
+ - `GlobeChart` (`globe-chart/`): the world as an orthographic globe. Props: `map` (`worldMap`), `data` (choropleth by id or
564
+ name, same scales and legend as `ChoroplethMap`), `points` (`MapPoint`, area-proportional), `routes` (`MapRoute`,
565
+ great-circle arcs lifted over the surface), `graticule`, `initialRotation` or controlled `rotation` +
566
+ `onRotationChange`, `autoRotate` (pauses on hover/focus, off under reduced motion, with a pause button). Drag or use
567
+ the arrow keys (Shift turns more), `0` resets, space pauses the spin. It is a disc that fits the container
568
+ (`height="fill"` too). All math (rotation, horizon clipping of rings and lines, great arcs, invert) is in
569
+ `maps/geo/globe.ts` and tested in `test/globe-parity.test.mjs`. Limits: no zoom, and a polygon that covers the whole
570
+ visible hemisphere without crossing the horizon (e.g. Antarctica, not shipped) is not filled.
571
+ - Crossfilter (`crossfilter/`): `CrossfilterProvider data dimensions` shares one dataset and its filters;
572
+ `useCrossfilter()` exposes `filtered` (feed it to a `DataGrid`), `group`, `bins`, `toggle`, `setRange`, `clear`.
573
+ `CrossfilterBarChart` (click to filter), `CrossfilterHistogram` (drag or click bins) and `CrossfilterScatter`
574
+ (filtered dots in accent, the rest faint; a rectangular brush filters both dimensions: drag a rectangle, click to clear, or focus the brush after the plot: arrows move it, Shift + arrows resize it, Enter applies, Escape clears; a Clear button appears; on touch the plot keeps `touch-action: pan-x pan-y`, so swipes scroll the page and the brush starts only after resting a finger ~350 ms, with a short vibration where supported: `touchDelay` on `CrossfilterScatter` / the `XYBrush`, `0` brushes at once and blocks scroll; mouse and pen drag immediately) each show "filtered of total" and draw the totals as a ghost
575
+ series. A chart's own filter is excluded from its own counts (crossfilter semantics), so it stays stable while you
576
+ brush it. The engine (`crossfilter-engine.ts`) is pure and tested in `test/crossfilter-parity.test.mjs`. The
577
+ histogram brush uses the new cartesian prop `rangeSelect={{ value, onChange }}` (vertical charts, band of category
578
+ indices; no zoom).
579
+ - Ruler and ink: `const ink = useChartInk()`; `<ChartInkToolbar ink={ink} />` and `<LineChart overlay={ink.overlay} />`
580
+ (any vertical `CartesianChart` preset). The ruler reports Δx (time axes in d/h/min, category axes in steps) and Δy
581
+ (value and %); the pen draws a thinned, smoothed, spline path. Marks are stored in data units and drawn inside the
582
+ chart SVG, so `ExportMenu` exports them. Undo, redo and clear are in the toolbar. `CartesianChartProps.overlay` is
583
+ `{ svg(plot), html(plot) }` with `CartesianPlotInfo` (pixel/data conversions) so other tools can reuse it. Pointer
584
+ or keyboard: with the ruler or pen active the plot is focusable (`role="slider"`); arrows move a crosshair (one
585
+ category or a fiftieth of the time window; Shift five times as far), Space or Enter sets a point (ruler: two
586
+ points; pen: Space adds vertices, Enter finishes), Escape cancels. The position is the slider's value text and the
587
+ last measurement is announced in a live region. Downsampled series map x through the original sample indices (and
588
+ real times), so measures are in data units, not samples. Horizontal bars (`orientation="horizontal"`) work too: the
589
+ plot info carries `horizontal: true` (`toX`/`fromX` stay the category axis, now along y; `toY`/`fromY` the value axis,
590
+ now along x), the ruler reports Δ value in value units plus the distance in categories (`deltaValue`,
591
+ `deltaCategory` labels), and the arrows move the value left/right and the category up/down. `plotToPixel`,
592
+ `pixelToPlot` and `plotDomain` in `core/ink.ts` convert for either layout. Math in `core/ink.ts`,
593
+ tests in `test/ink-parity.test.mjs` and `test/ink-keyboard.test.mjs`.
594
+ - `Scrolly` / `ScrollyStep` (`containers/scrolly/`): steps scroll while a sticky `graphic({ step, previous,
595
+ reducedMotion })` follows the one crossing the trigger line (`offset`, default the middle; `root` for an inner scroll
596
+ container). Wide containers (`@3xl`) put the graphic beside the text, narrow ones pin it on top. Steps are plain
597
+ content (`aria-current="step"` on the active one). Pure picking logic in `scrolly-logic.ts`, tested in
598
+ `test/scrolly-parity.test.mjs`.