react-native-metrify 0.1.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (679) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/LICENSE +21 -0
  3. package/README.md +332 -0
  4. package/dist/cjs/core/animation/index.js +99 -0
  5. package/dist/cjs/core/animation/index.js.map +1 -0
  6. package/dist/cjs/core/animation/index.web.js +95 -0
  7. package/dist/cjs/core/animation/index.web.js.map +1 -0
  8. package/dist/cjs/core/hooks/index.js +50 -0
  9. package/dist/cjs/core/hooks/index.js.map +1 -0
  10. package/dist/cjs/core/index.js +36 -0
  11. package/dist/cjs/core/index.js.map +1 -0
  12. package/dist/cjs/core/layout/index.js +80 -0
  13. package/dist/cjs/core/layout/index.js.map +1 -0
  14. package/dist/cjs/core/math/index.js +62 -0
  15. package/dist/cjs/core/math/index.js.map +1 -0
  16. package/dist/cjs/core/theme/ThemeProvider.js +63 -0
  17. package/dist/cjs/core/theme/ThemeProvider.js.map +1 -0
  18. package/dist/cjs/core/theme/index.js +13 -0
  19. package/dist/cjs/core/theme/index.js.map +1 -0
  20. package/dist/cjs/core/theme/themes.js +120 -0
  21. package/dist/cjs/core/theme/themes.js.map +1 -0
  22. package/dist/cjs/core/types/index.js +11 -0
  23. package/dist/cjs/core/types/index.js.map +1 -0
  24. package/dist/cjs/core/utils/responsive.js +118 -0
  25. package/dist/cjs/core/utils/responsive.js.map +1 -0
  26. package/dist/cjs/core/utils/time.js +84 -0
  27. package/dist/cjs/core/utils/time.js.map +1 -0
  28. package/dist/cjs/index.js +28 -0
  29. package/dist/cjs/index.js.map +1 -0
  30. package/dist/cjs/renderer-svg/adapters/index.js +67 -0
  31. package/dist/cjs/renderer-svg/adapters/index.js.map +1 -0
  32. package/dist/cjs/renderer-svg/index.js +25 -0
  33. package/dist/cjs/renderer-svg/index.js.map +1 -0
  34. package/dist/cjs/renderer-svg/paths/arc.js +79 -0
  35. package/dist/cjs/renderer-svg/paths/arc.js.map +1 -0
  36. package/dist/cjs/renderer-svg/paths/index.js +23 -0
  37. package/dist/cjs/renderer-svg/paths/index.js.map +1 -0
  38. package/dist/cjs/renderer-svg/paths/line.js +70 -0
  39. package/dist/cjs/renderer-svg/paths/line.js.map +1 -0
  40. package/dist/cjs/renderer-svg/paths/rect.js +54 -0
  41. package/dist/cjs/renderer-svg/paths/rect.js.map +1 -0
  42. package/dist/cjs/renderer-svg/primitives/AnimatedCircle.js +54 -0
  43. package/dist/cjs/renderer-svg/primitives/AnimatedCircle.js.map +1 -0
  44. package/dist/cjs/renderer-svg/primitives/AnimatedPath.js +54 -0
  45. package/dist/cjs/renderer-svg/primitives/AnimatedPath.js.map +1 -0
  46. package/dist/cjs/renderer-svg/primitives/Text.js +66 -0
  47. package/dist/cjs/renderer-svg/primitives/Text.js.map +1 -0
  48. package/dist/cjs/renderer-svg/primitives/index.js +23 -0
  49. package/dist/cjs/renderer-svg/primitives/index.js.map +1 -0
  50. package/dist/cjs/widgets/AreaChart/AreaChart.js +179 -0
  51. package/dist/cjs/widgets/AreaChart/AreaChart.js.map +1 -0
  52. package/dist/cjs/widgets/AreaChart/index.js +6 -0
  53. package/dist/cjs/widgets/AreaChart/index.js.map +1 -0
  54. package/dist/cjs/widgets/AreaChart/types.js +3 -0
  55. package/dist/cjs/widgets/AreaChart/types.js.map +1 -0
  56. package/dist/cjs/widgets/BarChart/BarChart.js +203 -0
  57. package/dist/cjs/widgets/BarChart/BarChart.js.map +1 -0
  58. package/dist/cjs/widgets/BarChart/index.js +9 -0
  59. package/dist/cjs/widgets/BarChart/index.js.map +1 -0
  60. package/dist/cjs/widgets/BarChart/types.js +3 -0
  61. package/dist/cjs/widgets/BarChart/types.js.map +1 -0
  62. package/dist/cjs/widgets/BoxPlot/BoxPlot.js +186 -0
  63. package/dist/cjs/widgets/BoxPlot/BoxPlot.js.map +1 -0
  64. package/dist/cjs/widgets/BoxPlot/index.js +6 -0
  65. package/dist/cjs/widgets/BoxPlot/index.js.map +1 -0
  66. package/dist/cjs/widgets/BoxPlot/types.js +3 -0
  67. package/dist/cjs/widgets/BoxPlot/types.js.map +1 -0
  68. package/dist/cjs/widgets/BubbleChart/BubbleChart.js +158 -0
  69. package/dist/cjs/widgets/BubbleChart/BubbleChart.js.map +1 -0
  70. package/dist/cjs/widgets/BubbleChart/index.js +6 -0
  71. package/dist/cjs/widgets/BubbleChart/index.js.map +1 -0
  72. package/dist/cjs/widgets/BubbleChart/types.js +3 -0
  73. package/dist/cjs/widgets/BubbleChart/types.js.map +1 -0
  74. package/dist/cjs/widgets/CandlestickChart/CandlestickChart.js +168 -0
  75. package/dist/cjs/widgets/CandlestickChart/CandlestickChart.js.map +1 -0
  76. package/dist/cjs/widgets/CandlestickChart/index.js +6 -0
  77. package/dist/cjs/widgets/CandlestickChart/index.js.map +1 -0
  78. package/dist/cjs/widgets/CandlestickChart/types.js +3 -0
  79. package/dist/cjs/widgets/CandlestickChart/types.js.map +1 -0
  80. package/dist/cjs/widgets/FunnelChart/FunnelChart.js +149 -0
  81. package/dist/cjs/widgets/FunnelChart/FunnelChart.js.map +1 -0
  82. package/dist/cjs/widgets/FunnelChart/index.js +6 -0
  83. package/dist/cjs/widgets/FunnelChart/index.js.map +1 -0
  84. package/dist/cjs/widgets/FunnelChart/types.js +3 -0
  85. package/dist/cjs/widgets/FunnelChart/types.js.map +1 -0
  86. package/dist/cjs/widgets/Gauge/Gauge.js +171 -0
  87. package/dist/cjs/widgets/Gauge/Gauge.js.map +1 -0
  88. package/dist/cjs/widgets/Gauge/index.js +9 -0
  89. package/dist/cjs/widgets/Gauge/index.js.map +1 -0
  90. package/dist/cjs/widgets/Gauge/types.js +3 -0
  91. package/dist/cjs/widgets/Gauge/types.js.map +1 -0
  92. package/dist/cjs/widgets/GroupedBarChart/GroupedBarChart.js +155 -0
  93. package/dist/cjs/widgets/GroupedBarChart/GroupedBarChart.js.map +1 -0
  94. package/dist/cjs/widgets/GroupedBarChart/index.js +6 -0
  95. package/dist/cjs/widgets/GroupedBarChart/index.js.map +1 -0
  96. package/dist/cjs/widgets/GroupedBarChart/types.js +3 -0
  97. package/dist/cjs/widgets/GroupedBarChart/types.js.map +1 -0
  98. package/dist/cjs/widgets/Heatmap/Heatmap.js +182 -0
  99. package/dist/cjs/widgets/Heatmap/Heatmap.js.map +1 -0
  100. package/dist/cjs/widgets/Heatmap/index.js +6 -0
  101. package/dist/cjs/widgets/Heatmap/index.js.map +1 -0
  102. package/dist/cjs/widgets/Heatmap/types.js +3 -0
  103. package/dist/cjs/widgets/Heatmap/types.js.map +1 -0
  104. package/dist/cjs/widgets/Histogram/Histogram.js +152 -0
  105. package/dist/cjs/widgets/Histogram/Histogram.js.map +1 -0
  106. package/dist/cjs/widgets/Histogram/index.js +6 -0
  107. package/dist/cjs/widgets/Histogram/index.js.map +1 -0
  108. package/dist/cjs/widgets/Histogram/types.js +3 -0
  109. package/dist/cjs/widgets/Histogram/types.js.map +1 -0
  110. package/dist/cjs/widgets/HorizontalBarChart/HorizontalBarChart.js +124 -0
  111. package/dist/cjs/widgets/HorizontalBarChart/HorizontalBarChart.js.map +1 -0
  112. package/dist/cjs/widgets/HorizontalBarChart/index.js +6 -0
  113. package/dist/cjs/widgets/HorizontalBarChart/index.js.map +1 -0
  114. package/dist/cjs/widgets/HorizontalBarChart/types.js +3 -0
  115. package/dist/cjs/widgets/HorizontalBarChart/types.js.map +1 -0
  116. package/dist/cjs/widgets/KPI/KPI.js +195 -0
  117. package/dist/cjs/widgets/KPI/KPI.js.map +1 -0
  118. package/dist/cjs/widgets/KPI/index.js +9 -0
  119. package/dist/cjs/widgets/KPI/index.js.map +1 -0
  120. package/dist/cjs/widgets/KPI/types.js +3 -0
  121. package/dist/cjs/widgets/KPI/types.js.map +1 -0
  122. package/dist/cjs/widgets/LineChart/LineChart.js +298 -0
  123. package/dist/cjs/widgets/LineChart/LineChart.js.map +1 -0
  124. package/dist/cjs/widgets/LineChart/index.js +9 -0
  125. package/dist/cjs/widgets/LineChart/index.js.map +1 -0
  126. package/dist/cjs/widgets/LineChart/types.js +3 -0
  127. package/dist/cjs/widgets/LineChart/types.js.map +1 -0
  128. package/dist/cjs/widgets/MultiLineSparkline/MultiLineSparkline.js +192 -0
  129. package/dist/cjs/widgets/MultiLineSparkline/MultiLineSparkline.js.map +1 -0
  130. package/dist/cjs/widgets/MultiLineSparkline/index.js +9 -0
  131. package/dist/cjs/widgets/MultiLineSparkline/index.js.map +1 -0
  132. package/dist/cjs/widgets/MultiLineSparkline/types.js +3 -0
  133. package/dist/cjs/widgets/MultiLineSparkline/types.js.map +1 -0
  134. package/dist/cjs/widgets/PieChart/PieChart.js +241 -0
  135. package/dist/cjs/widgets/PieChart/PieChart.js.map +1 -0
  136. package/dist/cjs/widgets/PieChart/index.js +9 -0
  137. package/dist/cjs/widgets/PieChart/index.js.map +1 -0
  138. package/dist/cjs/widgets/PieChart/types.js +3 -0
  139. package/dist/cjs/widgets/PieChart/types.js.map +1 -0
  140. package/dist/cjs/widgets/Progress/Progress.js +166 -0
  141. package/dist/cjs/widgets/Progress/Progress.js.map +1 -0
  142. package/dist/cjs/widgets/Progress/index.js +9 -0
  143. package/dist/cjs/widgets/Progress/index.js.map +1 -0
  144. package/dist/cjs/widgets/Progress/types.js +3 -0
  145. package/dist/cjs/widgets/Progress/types.js.map +1 -0
  146. package/dist/cjs/widgets/RadarChart/RadarChart.js +162 -0
  147. package/dist/cjs/widgets/RadarChart/RadarChart.js.map +1 -0
  148. package/dist/cjs/widgets/RadarChart/index.js +6 -0
  149. package/dist/cjs/widgets/RadarChart/index.js.map +1 -0
  150. package/dist/cjs/widgets/RadarChart/types.js +3 -0
  151. package/dist/cjs/widgets/RadarChart/types.js.map +1 -0
  152. package/dist/cjs/widgets/SankeyDiagram/SankeyDiagram.js +211 -0
  153. package/dist/cjs/widgets/SankeyDiagram/SankeyDiagram.js.map +1 -0
  154. package/dist/cjs/widgets/SankeyDiagram/index.js +6 -0
  155. package/dist/cjs/widgets/SankeyDiagram/index.js.map +1 -0
  156. package/dist/cjs/widgets/SankeyDiagram/types.js +3 -0
  157. package/dist/cjs/widgets/SankeyDiagram/types.js.map +1 -0
  158. package/dist/cjs/widgets/ScatterPlot/ScatterPlot.js +152 -0
  159. package/dist/cjs/widgets/ScatterPlot/ScatterPlot.js.map +1 -0
  160. package/dist/cjs/widgets/ScatterPlot/index.js +6 -0
  161. package/dist/cjs/widgets/ScatterPlot/index.js.map +1 -0
  162. package/dist/cjs/widgets/ScatterPlot/types.js +3 -0
  163. package/dist/cjs/widgets/ScatterPlot/types.js.map +1 -0
  164. package/dist/cjs/widgets/Sparkline/Sparkline.js +154 -0
  165. package/dist/cjs/widgets/Sparkline/Sparkline.js.map +1 -0
  166. package/dist/cjs/widgets/Sparkline/index.js +9 -0
  167. package/dist/cjs/widgets/Sparkline/index.js.map +1 -0
  168. package/dist/cjs/widgets/Sparkline/types.js +3 -0
  169. package/dist/cjs/widgets/Sparkline/types.js.map +1 -0
  170. package/dist/cjs/widgets/StackedBarChart/StackedBarChart.js +152 -0
  171. package/dist/cjs/widgets/StackedBarChart/StackedBarChart.js.map +1 -0
  172. package/dist/cjs/widgets/StackedBarChart/index.js +6 -0
  173. package/dist/cjs/widgets/StackedBarChart/index.js.map +1 -0
  174. package/dist/cjs/widgets/StackedBarChart/types.js +3 -0
  175. package/dist/cjs/widgets/StackedBarChart/types.js.map +1 -0
  176. package/dist/cjs/widgets/SunburstChart/SunburstChart.js +134 -0
  177. package/dist/cjs/widgets/SunburstChart/SunburstChart.js.map +1 -0
  178. package/dist/cjs/widgets/SunburstChart/index.js +6 -0
  179. package/dist/cjs/widgets/SunburstChart/index.js.map +1 -0
  180. package/dist/cjs/widgets/SunburstChart/types.js +3 -0
  181. package/dist/cjs/widgets/SunburstChart/types.js.map +1 -0
  182. package/dist/cjs/widgets/Treemap/Treemap.js +145 -0
  183. package/dist/cjs/widgets/Treemap/Treemap.js.map +1 -0
  184. package/dist/cjs/widgets/Treemap/index.js +6 -0
  185. package/dist/cjs/widgets/Treemap/index.js.map +1 -0
  186. package/dist/cjs/widgets/Treemap/types.js +3 -0
  187. package/dist/cjs/widgets/Treemap/types.js.map +1 -0
  188. package/dist/cjs/widgets/WaterfallChart/WaterfallChart.js +175 -0
  189. package/dist/cjs/widgets/WaterfallChart/WaterfallChart.js.map +1 -0
  190. package/dist/cjs/widgets/WaterfallChart/index.js +6 -0
  191. package/dist/cjs/widgets/WaterfallChart/index.js.map +1 -0
  192. package/dist/cjs/widgets/WaterfallChart/types.js +3 -0
  193. package/dist/cjs/widgets/WaterfallChart/types.js.map +1 -0
  194. package/dist/cjs/widgets/index.js +51 -0
  195. package/dist/cjs/widgets/index.js.map +1 -0
  196. package/dist/core/animation/index.d.ts +66 -0
  197. package/dist/core/animation/index.d.ts.map +1 -0
  198. package/dist/core/animation/index.web.d.ts +63 -0
  199. package/dist/core/animation/index.web.d.ts.map +1 -0
  200. package/dist/core/hooks/index.d.ts +34 -0
  201. package/dist/core/hooks/index.d.ts.map +1 -0
  202. package/dist/core/index.d.ts +13 -0
  203. package/dist/core/index.d.ts.map +1 -0
  204. package/dist/core/layout/index.d.ts +39 -0
  205. package/dist/core/layout/index.d.ts.map +1 -0
  206. package/dist/core/math/index.d.ts +37 -0
  207. package/dist/core/math/index.d.ts.map +1 -0
  208. package/dist/core/theme/ThemeProvider.d.ts +19 -0
  209. package/dist/core/theme/ThemeProvider.d.ts.map +1 -0
  210. package/dist/core/theme/index.d.ts +6 -0
  211. package/dist/core/theme/index.d.ts.map +1 -0
  212. package/dist/core/theme/themes.d.ts +13 -0
  213. package/dist/core/theme/themes.d.ts.map +1 -0
  214. package/dist/core/types/index.d.ts +137 -0
  215. package/dist/core/types/index.d.ts.map +1 -0
  216. package/dist/core/utils/responsive.d.ts +92 -0
  217. package/dist/core/utils/responsive.d.ts.map +1 -0
  218. package/dist/core/utils/time.d.ts +20 -0
  219. package/dist/core/utils/time.d.ts.map +1 -0
  220. package/dist/esm/core/animation/index.js +88 -0
  221. package/dist/esm/core/animation/index.js.map +1 -0
  222. package/dist/esm/core/animation/index.web.js +81 -0
  223. package/dist/esm/core/animation/index.web.js.map +1 -0
  224. package/dist/esm/core/hooks/index.js +44 -0
  225. package/dist/esm/core/hooks/index.js.map +1 -0
  226. package/dist/esm/core/index.js +20 -0
  227. package/dist/esm/core/index.js.map +1 -0
  228. package/dist/esm/core/layout/index.js +73 -0
  229. package/dist/esm/core/layout/index.js.map +1 -0
  230. package/dist/esm/core/math/index.js +54 -0
  231. package/dist/esm/core/math/index.js.map +1 -0
  232. package/dist/esm/core/theme/ThemeProvider.js +26 -0
  233. package/dist/esm/core/theme/ThemeProvider.js.map +1 -0
  234. package/dist/esm/core/theme/index.js +6 -0
  235. package/dist/esm/core/theme/index.js.map +1 -0
  236. package/dist/esm/core/theme/themes.js +117 -0
  237. package/dist/esm/core/theme/themes.js.map +1 -0
  238. package/dist/esm/core/types/index.js +10 -0
  239. package/dist/esm/core/types/index.js.map +1 -0
  240. package/dist/esm/core/utils/responsive.js +112 -0
  241. package/dist/esm/core/utils/responsive.js.map +1 -0
  242. package/dist/esm/core/utils/time.js +79 -0
  243. package/dist/esm/core/utils/time.js.map +1 -0
  244. package/dist/esm/index.js +11 -0
  245. package/dist/esm/index.js.map +1 -0
  246. package/dist/esm/renderer-svg/adapters/index.js +62 -0
  247. package/dist/esm/renderer-svg/adapters/index.js.map +1 -0
  248. package/dist/esm/renderer-svg/index.js +9 -0
  249. package/dist/esm/renderer-svg/index.js.map +1 -0
  250. package/dist/esm/renderer-svg/paths/arc.js +74 -0
  251. package/dist/esm/renderer-svg/paths/arc.js.map +1 -0
  252. package/dist/esm/renderer-svg/paths/index.js +7 -0
  253. package/dist/esm/renderer-svg/paths/index.js.map +1 -0
  254. package/dist/esm/renderer-svg/paths/line.js +64 -0
  255. package/dist/esm/renderer-svg/paths/line.js.map +1 -0
  256. package/dist/esm/renderer-svg/paths/rect.js +50 -0
  257. package/dist/esm/renderer-svg/paths/rect.js.map +1 -0
  258. package/dist/esm/renderer-svg/primitives/AnimatedCircle.js +15 -0
  259. package/dist/esm/renderer-svg/primitives/AnimatedCircle.js.map +1 -0
  260. package/dist/esm/renderer-svg/primitives/AnimatedPath.js +15 -0
  261. package/dist/esm/renderer-svg/primitives/AnimatedPath.js.map +1 -0
  262. package/dist/esm/renderer-svg/primitives/Text.js +29 -0
  263. package/dist/esm/renderer-svg/primitives/Text.js.map +1 -0
  264. package/dist/esm/renderer-svg/primitives/index.js +7 -0
  265. package/dist/esm/renderer-svg/primitives/index.js.map +1 -0
  266. package/dist/esm/widgets/AreaChart/AreaChart.js +143 -0
  267. package/dist/esm/widgets/AreaChart/AreaChart.js.map +1 -0
  268. package/dist/esm/widgets/AreaChart/index.js +2 -0
  269. package/dist/esm/widgets/AreaChart/index.js.map +1 -0
  270. package/dist/esm/widgets/AreaChart/types.js +2 -0
  271. package/dist/esm/widgets/AreaChart/types.js.map +1 -0
  272. package/dist/esm/widgets/BarChart/BarChart.js +167 -0
  273. package/dist/esm/widgets/BarChart/BarChart.js.map +1 -0
  274. package/dist/esm/widgets/BarChart/index.js +5 -0
  275. package/dist/esm/widgets/BarChart/index.js.map +1 -0
  276. package/dist/esm/widgets/BarChart/types.js +2 -0
  277. package/dist/esm/widgets/BarChart/types.js.map +1 -0
  278. package/dist/esm/widgets/BoxPlot/BoxPlot.js +150 -0
  279. package/dist/esm/widgets/BoxPlot/BoxPlot.js.map +1 -0
  280. package/dist/esm/widgets/BoxPlot/index.js +2 -0
  281. package/dist/esm/widgets/BoxPlot/index.js.map +1 -0
  282. package/dist/esm/widgets/BoxPlot/types.js +2 -0
  283. package/dist/esm/widgets/BoxPlot/types.js.map +1 -0
  284. package/dist/esm/widgets/BubbleChart/BubbleChart.js +122 -0
  285. package/dist/esm/widgets/BubbleChart/BubbleChart.js.map +1 -0
  286. package/dist/esm/widgets/BubbleChart/index.js +2 -0
  287. package/dist/esm/widgets/BubbleChart/index.js.map +1 -0
  288. package/dist/esm/widgets/BubbleChart/types.js +2 -0
  289. package/dist/esm/widgets/BubbleChart/types.js.map +1 -0
  290. package/dist/esm/widgets/CandlestickChart/CandlestickChart.js +132 -0
  291. package/dist/esm/widgets/CandlestickChart/CandlestickChart.js.map +1 -0
  292. package/dist/esm/widgets/CandlestickChart/index.js +2 -0
  293. package/dist/esm/widgets/CandlestickChart/index.js.map +1 -0
  294. package/dist/esm/widgets/CandlestickChart/types.js +2 -0
  295. package/dist/esm/widgets/CandlestickChart/types.js.map +1 -0
  296. package/dist/esm/widgets/FunnelChart/FunnelChart.js +113 -0
  297. package/dist/esm/widgets/FunnelChart/FunnelChart.js.map +1 -0
  298. package/dist/esm/widgets/FunnelChart/index.js +2 -0
  299. package/dist/esm/widgets/FunnelChart/index.js.map +1 -0
  300. package/dist/esm/widgets/FunnelChart/types.js +2 -0
  301. package/dist/esm/widgets/FunnelChart/types.js.map +1 -0
  302. package/dist/esm/widgets/Gauge/Gauge.js +132 -0
  303. package/dist/esm/widgets/Gauge/Gauge.js.map +1 -0
  304. package/dist/esm/widgets/Gauge/index.js +5 -0
  305. package/dist/esm/widgets/Gauge/index.js.map +1 -0
  306. package/dist/esm/widgets/Gauge/types.js +2 -0
  307. package/dist/esm/widgets/Gauge/types.js.map +1 -0
  308. package/dist/esm/widgets/GroupedBarChart/GroupedBarChart.js +119 -0
  309. package/dist/esm/widgets/GroupedBarChart/GroupedBarChart.js.map +1 -0
  310. package/dist/esm/widgets/GroupedBarChart/index.js +2 -0
  311. package/dist/esm/widgets/GroupedBarChart/index.js.map +1 -0
  312. package/dist/esm/widgets/GroupedBarChart/types.js +2 -0
  313. package/dist/esm/widgets/GroupedBarChart/types.js.map +1 -0
  314. package/dist/esm/widgets/Heatmap/Heatmap.js +146 -0
  315. package/dist/esm/widgets/Heatmap/Heatmap.js.map +1 -0
  316. package/dist/esm/widgets/Heatmap/index.js +2 -0
  317. package/dist/esm/widgets/Heatmap/index.js.map +1 -0
  318. package/dist/esm/widgets/Heatmap/types.js +2 -0
  319. package/dist/esm/widgets/Heatmap/types.js.map +1 -0
  320. package/dist/esm/widgets/Histogram/Histogram.js +116 -0
  321. package/dist/esm/widgets/Histogram/Histogram.js.map +1 -0
  322. package/dist/esm/widgets/Histogram/index.js +2 -0
  323. package/dist/esm/widgets/Histogram/index.js.map +1 -0
  324. package/dist/esm/widgets/Histogram/types.js +2 -0
  325. package/dist/esm/widgets/Histogram/types.js.map +1 -0
  326. package/dist/esm/widgets/HorizontalBarChart/HorizontalBarChart.js +88 -0
  327. package/dist/esm/widgets/HorizontalBarChart/HorizontalBarChart.js.map +1 -0
  328. package/dist/esm/widgets/HorizontalBarChart/index.js +2 -0
  329. package/dist/esm/widgets/HorizontalBarChart/index.js.map +1 -0
  330. package/dist/esm/widgets/HorizontalBarChart/types.js +2 -0
  331. package/dist/esm/widgets/HorizontalBarChart/types.js.map +1 -0
  332. package/dist/esm/widgets/KPI/KPI.js +159 -0
  333. package/dist/esm/widgets/KPI/KPI.js.map +1 -0
  334. package/dist/esm/widgets/KPI/index.js +5 -0
  335. package/dist/esm/widgets/KPI/index.js.map +1 -0
  336. package/dist/esm/widgets/KPI/types.js +2 -0
  337. package/dist/esm/widgets/KPI/types.js.map +1 -0
  338. package/dist/esm/widgets/LineChart/LineChart.js +262 -0
  339. package/dist/esm/widgets/LineChart/LineChart.js.map +1 -0
  340. package/dist/esm/widgets/LineChart/index.js +5 -0
  341. package/dist/esm/widgets/LineChart/index.js.map +1 -0
  342. package/dist/esm/widgets/LineChart/types.js +2 -0
  343. package/dist/esm/widgets/LineChart/types.js.map +1 -0
  344. package/dist/esm/widgets/MultiLineSparkline/MultiLineSparkline.js +153 -0
  345. package/dist/esm/widgets/MultiLineSparkline/MultiLineSparkline.js.map +1 -0
  346. package/dist/esm/widgets/MultiLineSparkline/index.js +5 -0
  347. package/dist/esm/widgets/MultiLineSparkline/index.js.map +1 -0
  348. package/dist/esm/widgets/MultiLineSparkline/types.js +2 -0
  349. package/dist/esm/widgets/MultiLineSparkline/types.js.map +1 -0
  350. package/dist/esm/widgets/PieChart/PieChart.js +205 -0
  351. package/dist/esm/widgets/PieChart/PieChart.js.map +1 -0
  352. package/dist/esm/widgets/PieChart/index.js +5 -0
  353. package/dist/esm/widgets/PieChart/index.js.map +1 -0
  354. package/dist/esm/widgets/PieChart/types.js +2 -0
  355. package/dist/esm/widgets/PieChart/types.js.map +1 -0
  356. package/dist/esm/widgets/Progress/Progress.js +130 -0
  357. package/dist/esm/widgets/Progress/Progress.js.map +1 -0
  358. package/dist/esm/widgets/Progress/index.js +5 -0
  359. package/dist/esm/widgets/Progress/index.js.map +1 -0
  360. package/dist/esm/widgets/Progress/types.js +2 -0
  361. package/dist/esm/widgets/Progress/types.js.map +1 -0
  362. package/dist/esm/widgets/RadarChart/RadarChart.js +126 -0
  363. package/dist/esm/widgets/RadarChart/RadarChart.js.map +1 -0
  364. package/dist/esm/widgets/RadarChart/index.js +2 -0
  365. package/dist/esm/widgets/RadarChart/index.js.map +1 -0
  366. package/dist/esm/widgets/RadarChart/types.js +2 -0
  367. package/dist/esm/widgets/RadarChart/types.js.map +1 -0
  368. package/dist/esm/widgets/SankeyDiagram/SankeyDiagram.js +175 -0
  369. package/dist/esm/widgets/SankeyDiagram/SankeyDiagram.js.map +1 -0
  370. package/dist/esm/widgets/SankeyDiagram/index.js +2 -0
  371. package/dist/esm/widgets/SankeyDiagram/index.js.map +1 -0
  372. package/dist/esm/widgets/SankeyDiagram/types.js +2 -0
  373. package/dist/esm/widgets/SankeyDiagram/types.js.map +1 -0
  374. package/dist/esm/widgets/ScatterPlot/ScatterPlot.js +116 -0
  375. package/dist/esm/widgets/ScatterPlot/ScatterPlot.js.map +1 -0
  376. package/dist/esm/widgets/ScatterPlot/index.js +2 -0
  377. package/dist/esm/widgets/ScatterPlot/index.js.map +1 -0
  378. package/dist/esm/widgets/ScatterPlot/types.js +2 -0
  379. package/dist/esm/widgets/ScatterPlot/types.js.map +1 -0
  380. package/dist/esm/widgets/Sparkline/Sparkline.js +118 -0
  381. package/dist/esm/widgets/Sparkline/Sparkline.js.map +1 -0
  382. package/dist/esm/widgets/Sparkline/index.js +5 -0
  383. package/dist/esm/widgets/Sparkline/index.js.map +1 -0
  384. package/dist/esm/widgets/Sparkline/types.js +2 -0
  385. package/dist/esm/widgets/Sparkline/types.js.map +1 -0
  386. package/dist/esm/widgets/StackedBarChart/StackedBarChart.js +116 -0
  387. package/dist/esm/widgets/StackedBarChart/StackedBarChart.js.map +1 -0
  388. package/dist/esm/widgets/StackedBarChart/index.js +2 -0
  389. package/dist/esm/widgets/StackedBarChart/index.js.map +1 -0
  390. package/dist/esm/widgets/StackedBarChart/types.js +2 -0
  391. package/dist/esm/widgets/StackedBarChart/types.js.map +1 -0
  392. package/dist/esm/widgets/SunburstChart/SunburstChart.js +98 -0
  393. package/dist/esm/widgets/SunburstChart/SunburstChart.js.map +1 -0
  394. package/dist/esm/widgets/SunburstChart/index.js +2 -0
  395. package/dist/esm/widgets/SunburstChart/index.js.map +1 -0
  396. package/dist/esm/widgets/SunburstChart/types.js +2 -0
  397. package/dist/esm/widgets/SunburstChart/types.js.map +1 -0
  398. package/dist/esm/widgets/Treemap/Treemap.js +109 -0
  399. package/dist/esm/widgets/Treemap/Treemap.js.map +1 -0
  400. package/dist/esm/widgets/Treemap/index.js +2 -0
  401. package/dist/esm/widgets/Treemap/index.js.map +1 -0
  402. package/dist/esm/widgets/Treemap/types.js +2 -0
  403. package/dist/esm/widgets/Treemap/types.js.map +1 -0
  404. package/dist/esm/widgets/WaterfallChart/WaterfallChart.js +139 -0
  405. package/dist/esm/widgets/WaterfallChart/WaterfallChart.js.map +1 -0
  406. package/dist/esm/widgets/WaterfallChart/index.js +2 -0
  407. package/dist/esm/widgets/WaterfallChart/index.js.map +1 -0
  408. package/dist/esm/widgets/WaterfallChart/types.js +2 -0
  409. package/dist/esm/widgets/WaterfallChart/types.js.map +1 -0
  410. package/dist/esm/widgets/index.js +35 -0
  411. package/dist/esm/widgets/index.js.map +1 -0
  412. package/dist/index.d.ts +8 -0
  413. package/dist/index.d.ts.map +1 -0
  414. package/dist/renderer-svg/adapters/index.d.ts +21 -0
  415. package/dist/renderer-svg/adapters/index.d.ts.map +1 -0
  416. package/dist/renderer-svg/index.d.ts +9 -0
  417. package/dist/renderer-svg/index.d.ts.map +1 -0
  418. package/dist/renderer-svg/paths/arc.d.ts +24 -0
  419. package/dist/renderer-svg/paths/arc.d.ts.map +1 -0
  420. package/dist/renderer-svg/paths/index.d.ts +7 -0
  421. package/dist/renderer-svg/paths/index.d.ts.map +1 -0
  422. package/dist/renderer-svg/paths/line.d.ts +21 -0
  423. package/dist/renderer-svg/paths/line.d.ts.map +1 -0
  424. package/dist/renderer-svg/paths/rect.d.ts +24 -0
  425. package/dist/renderer-svg/paths/rect.d.ts.map +1 -0
  426. package/dist/renderer-svg/primitives/AnimatedCircle.d.ts +19 -0
  427. package/dist/renderer-svg/primitives/AnimatedCircle.d.ts.map +1 -0
  428. package/dist/renderer-svg/primitives/AnimatedPath.d.ts +19 -0
  429. package/dist/renderer-svg/primitives/AnimatedPath.d.ts.map +1 -0
  430. package/dist/renderer-svg/primitives/Text.d.ts +25 -0
  431. package/dist/renderer-svg/primitives/Text.d.ts.map +1 -0
  432. package/dist/renderer-svg/primitives/index.d.ts +7 -0
  433. package/dist/renderer-svg/primitives/index.d.ts.map +1 -0
  434. package/dist/widgets/AreaChart/AreaChart.d.ts +7 -0
  435. package/dist/widgets/AreaChart/AreaChart.d.ts.map +1 -0
  436. package/dist/widgets/AreaChart/index.d.ts +3 -0
  437. package/dist/widgets/AreaChart/index.d.ts.map +1 -0
  438. package/dist/widgets/AreaChart/types.d.ts +30 -0
  439. package/dist/widgets/AreaChart/types.d.ts.map +1 -0
  440. package/dist/widgets/BarChart/BarChart.d.ts +10 -0
  441. package/dist/widgets/BarChart/BarChart.d.ts.map +1 -0
  442. package/dist/widgets/BarChart/index.d.ts +6 -0
  443. package/dist/widgets/BarChart/index.d.ts.map +1 -0
  444. package/dist/widgets/BarChart/types.d.ts +24 -0
  445. package/dist/widgets/BarChart/types.d.ts.map +1 -0
  446. package/dist/widgets/BoxPlot/BoxPlot.d.ts +7 -0
  447. package/dist/widgets/BoxPlot/BoxPlot.d.ts.map +1 -0
  448. package/dist/widgets/BoxPlot/index.d.ts +3 -0
  449. package/dist/widgets/BoxPlot/index.d.ts.map +1 -0
  450. package/dist/widgets/BoxPlot/types.d.ts +25 -0
  451. package/dist/widgets/BoxPlot/types.d.ts.map +1 -0
  452. package/dist/widgets/BubbleChart/BubbleChart.d.ts +7 -0
  453. package/dist/widgets/BubbleChart/BubbleChart.d.ts.map +1 -0
  454. package/dist/widgets/BubbleChart/index.d.ts +3 -0
  455. package/dist/widgets/BubbleChart/index.d.ts.map +1 -0
  456. package/dist/widgets/BubbleChart/types.d.ts +30 -0
  457. package/dist/widgets/BubbleChart/types.d.ts.map +1 -0
  458. package/dist/widgets/CandlestickChart/CandlestickChart.d.ts +7 -0
  459. package/dist/widgets/CandlestickChart/CandlestickChart.d.ts.map +1 -0
  460. package/dist/widgets/CandlestickChart/index.d.ts +3 -0
  461. package/dist/widgets/CandlestickChart/index.d.ts.map +1 -0
  462. package/dist/widgets/CandlestickChart/types.d.ts +27 -0
  463. package/dist/widgets/CandlestickChart/types.d.ts.map +1 -0
  464. package/dist/widgets/FunnelChart/FunnelChart.d.ts +7 -0
  465. package/dist/widgets/FunnelChart/FunnelChart.d.ts.map +1 -0
  466. package/dist/widgets/FunnelChart/index.d.ts +3 -0
  467. package/dist/widgets/FunnelChart/index.d.ts.map +1 -0
  468. package/dist/widgets/FunnelChart/types.d.ts +20 -0
  469. package/dist/widgets/FunnelChart/types.d.ts.map +1 -0
  470. package/dist/widgets/Gauge/Gauge.d.ts +11 -0
  471. package/dist/widgets/Gauge/Gauge.d.ts.map +1 -0
  472. package/dist/widgets/Gauge/index.d.ts +6 -0
  473. package/dist/widgets/Gauge/index.d.ts.map +1 -0
  474. package/dist/widgets/Gauge/types.d.ts +18 -0
  475. package/dist/widgets/Gauge/types.d.ts.map +1 -0
  476. package/dist/widgets/GroupedBarChart/GroupedBarChart.d.ts +7 -0
  477. package/dist/widgets/GroupedBarChart/GroupedBarChart.d.ts.map +1 -0
  478. package/dist/widgets/GroupedBarChart/index.d.ts +3 -0
  479. package/dist/widgets/GroupedBarChart/index.d.ts.map +1 -0
  480. package/dist/widgets/GroupedBarChart/types.d.ts +27 -0
  481. package/dist/widgets/GroupedBarChart/types.d.ts.map +1 -0
  482. package/dist/widgets/Heatmap/Heatmap.d.ts +7 -0
  483. package/dist/widgets/Heatmap/Heatmap.d.ts.map +1 -0
  484. package/dist/widgets/Heatmap/index.d.ts +3 -0
  485. package/dist/widgets/Heatmap/index.d.ts.map +1 -0
  486. package/dist/widgets/Heatmap/types.d.ts +25 -0
  487. package/dist/widgets/Heatmap/types.d.ts.map +1 -0
  488. package/dist/widgets/Histogram/Histogram.d.ts +7 -0
  489. package/dist/widgets/Histogram/Histogram.d.ts.map +1 -0
  490. package/dist/widgets/Histogram/index.d.ts +3 -0
  491. package/dist/widgets/Histogram/index.d.ts.map +1 -0
  492. package/dist/widgets/Histogram/types.d.ts +17 -0
  493. package/dist/widgets/Histogram/types.d.ts.map +1 -0
  494. package/dist/widgets/HorizontalBarChart/HorizontalBarChart.d.ts +7 -0
  495. package/dist/widgets/HorizontalBarChart/HorizontalBarChart.d.ts.map +1 -0
  496. package/dist/widgets/HorizontalBarChart/index.d.ts +3 -0
  497. package/dist/widgets/HorizontalBarChart/index.d.ts.map +1 -0
  498. package/dist/widgets/HorizontalBarChart/types.d.ts +21 -0
  499. package/dist/widgets/HorizontalBarChart/types.d.ts.map +1 -0
  500. package/dist/widgets/KPI/KPI.d.ts +11 -0
  501. package/dist/widgets/KPI/KPI.d.ts.map +1 -0
  502. package/dist/widgets/KPI/index.d.ts +6 -0
  503. package/dist/widgets/KPI/index.d.ts.map +1 -0
  504. package/dist/widgets/KPI/types.d.ts +17 -0
  505. package/dist/widgets/KPI/types.d.ts.map +1 -0
  506. package/dist/widgets/LineChart/LineChart.d.ts +10 -0
  507. package/dist/widgets/LineChart/LineChart.d.ts.map +1 -0
  508. package/dist/widgets/LineChart/index.d.ts +6 -0
  509. package/dist/widgets/LineChart/index.d.ts.map +1 -0
  510. package/dist/widgets/LineChart/types.d.ts +31 -0
  511. package/dist/widgets/LineChart/types.d.ts.map +1 -0
  512. package/dist/widgets/MultiLineSparkline/MultiLineSparkline.d.ts +10 -0
  513. package/dist/widgets/MultiLineSparkline/MultiLineSparkline.d.ts.map +1 -0
  514. package/dist/widgets/MultiLineSparkline/index.d.ts +6 -0
  515. package/dist/widgets/MultiLineSparkline/index.d.ts.map +1 -0
  516. package/dist/widgets/MultiLineSparkline/types.d.ts +22 -0
  517. package/dist/widgets/MultiLineSparkline/types.d.ts.map +1 -0
  518. package/dist/widgets/PieChart/PieChart.d.ts +10 -0
  519. package/dist/widgets/PieChart/PieChart.d.ts.map +1 -0
  520. package/dist/widgets/PieChart/index.d.ts +6 -0
  521. package/dist/widgets/PieChart/index.d.ts.map +1 -0
  522. package/dist/widgets/PieChart/types.d.ts +23 -0
  523. package/dist/widgets/PieChart/types.d.ts.map +1 -0
  524. package/dist/widgets/Progress/Progress.d.ts +11 -0
  525. package/dist/widgets/Progress/Progress.d.ts.map +1 -0
  526. package/dist/widgets/Progress/index.d.ts +6 -0
  527. package/dist/widgets/Progress/index.d.ts.map +1 -0
  528. package/dist/widgets/Progress/types.d.ts +17 -0
  529. package/dist/widgets/Progress/types.d.ts.map +1 -0
  530. package/dist/widgets/RadarChart/RadarChart.d.ts +7 -0
  531. package/dist/widgets/RadarChart/RadarChart.d.ts.map +1 -0
  532. package/dist/widgets/RadarChart/index.d.ts +3 -0
  533. package/dist/widgets/RadarChart/index.d.ts.map +1 -0
  534. package/dist/widgets/RadarChart/types.d.ts +26 -0
  535. package/dist/widgets/RadarChart/types.d.ts.map +1 -0
  536. package/dist/widgets/SankeyDiagram/SankeyDiagram.d.ts +7 -0
  537. package/dist/widgets/SankeyDiagram/SankeyDiagram.d.ts.map +1 -0
  538. package/dist/widgets/SankeyDiagram/index.d.ts +3 -0
  539. package/dist/widgets/SankeyDiagram/index.d.ts.map +1 -0
  540. package/dist/widgets/SankeyDiagram/types.d.ts +26 -0
  541. package/dist/widgets/SankeyDiagram/types.d.ts.map +1 -0
  542. package/dist/widgets/ScatterPlot/ScatterPlot.d.ts +7 -0
  543. package/dist/widgets/ScatterPlot/ScatterPlot.d.ts.map +1 -0
  544. package/dist/widgets/ScatterPlot/index.d.ts +3 -0
  545. package/dist/widgets/ScatterPlot/index.d.ts.map +1 -0
  546. package/dist/widgets/ScatterPlot/types.d.ts +29 -0
  547. package/dist/widgets/ScatterPlot/types.d.ts.map +1 -0
  548. package/dist/widgets/Sparkline/Sparkline.d.ts +11 -0
  549. package/dist/widgets/Sparkline/Sparkline.d.ts.map +1 -0
  550. package/dist/widgets/Sparkline/index.d.ts +6 -0
  551. package/dist/widgets/Sparkline/index.d.ts.map +1 -0
  552. package/dist/widgets/Sparkline/types.d.ts +16 -0
  553. package/dist/widgets/Sparkline/types.d.ts.map +1 -0
  554. package/dist/widgets/StackedBarChart/StackedBarChart.d.ts +7 -0
  555. package/dist/widgets/StackedBarChart/StackedBarChart.d.ts.map +1 -0
  556. package/dist/widgets/StackedBarChart/index.d.ts +3 -0
  557. package/dist/widgets/StackedBarChart/index.d.ts.map +1 -0
  558. package/dist/widgets/StackedBarChart/types.d.ts +26 -0
  559. package/dist/widgets/StackedBarChart/types.d.ts.map +1 -0
  560. package/dist/widgets/SunburstChart/SunburstChart.d.ts +7 -0
  561. package/dist/widgets/SunburstChart/SunburstChart.d.ts.map +1 -0
  562. package/dist/widgets/SunburstChart/index.d.ts +3 -0
  563. package/dist/widgets/SunburstChart/index.d.ts.map +1 -0
  564. package/dist/widgets/SunburstChart/types.d.ts +20 -0
  565. package/dist/widgets/SunburstChart/types.d.ts.map +1 -0
  566. package/dist/widgets/Treemap/Treemap.d.ts +7 -0
  567. package/dist/widgets/Treemap/Treemap.d.ts.map +1 -0
  568. package/dist/widgets/Treemap/index.d.ts +3 -0
  569. package/dist/widgets/Treemap/index.d.ts.map +1 -0
  570. package/dist/widgets/Treemap/types.d.ts +21 -0
  571. package/dist/widgets/Treemap/types.d.ts.map +1 -0
  572. package/dist/widgets/WaterfallChart/WaterfallChart.d.ts +7 -0
  573. package/dist/widgets/WaterfallChart/WaterfallChart.d.ts.map +1 -0
  574. package/dist/widgets/WaterfallChart/index.d.ts +3 -0
  575. package/dist/widgets/WaterfallChart/index.d.ts.map +1 -0
  576. package/dist/widgets/WaterfallChart/types.d.ts +24 -0
  577. package/dist/widgets/WaterfallChart/types.d.ts.map +1 -0
  578. package/dist/widgets/index.d.ts +29 -0
  579. package/dist/widgets/index.d.ts.map +1 -0
  580. package/package.json +84 -0
  581. package/src/core/animation/index.ts +113 -0
  582. package/src/core/animation/index.web.ts +112 -0
  583. package/src/core/hooks/index.ts +66 -0
  584. package/src/core/index.ts +26 -0
  585. package/src/core/layout/index.ts +101 -0
  586. package/src/core/math/index.ts +72 -0
  587. package/src/core/package.json +13 -0
  588. package/src/core/theme/ThemeProvider.tsx +36 -0
  589. package/src/core/theme/index.ts +5 -0
  590. package/src/core/theme/themes.ts +132 -0
  591. package/src/core/types/index.ts +164 -0
  592. package/src/core/utils/responsive.ts +203 -0
  593. package/src/core/utils/time.ts +100 -0
  594. package/src/index.ts +13 -0
  595. package/src/renderer-svg/adapters/index.ts +84 -0
  596. package/src/renderer-svg/index.ts +8 -0
  597. package/src/renderer-svg/package.json +17 -0
  598. package/src/renderer-svg/paths/arc.ts +93 -0
  599. package/src/renderer-svg/paths/index.ts +6 -0
  600. package/src/renderer-svg/paths/line.ts +83 -0
  601. package/src/renderer-svg/paths/rect.ts +80 -0
  602. package/src/renderer-svg/primitives/AnimatedCircle.tsx +48 -0
  603. package/src/renderer-svg/primitives/AnimatedPath.tsx +48 -0
  604. package/src/renderer-svg/primitives/Text.tsx +73 -0
  605. package/src/renderer-svg/primitives/index.ts +6 -0
  606. package/src/widgets/AreaChart/AreaChart.tsx +213 -0
  607. package/src/widgets/AreaChart/index.ts +2 -0
  608. package/src/widgets/AreaChart/types.ts +34 -0
  609. package/src/widgets/BarChart/BarChart.tsx +249 -0
  610. package/src/widgets/BarChart/index.ts +10 -0
  611. package/src/widgets/BarChart/types.ts +27 -0
  612. package/src/widgets/BoxPlot/BoxPlot.tsx +252 -0
  613. package/src/widgets/BoxPlot/index.ts +2 -0
  614. package/src/widgets/BoxPlot/types.ts +27 -0
  615. package/src/widgets/BubbleChart/BubbleChart.tsx +175 -0
  616. package/src/widgets/BubbleChart/index.ts +2 -0
  617. package/src/widgets/BubbleChart/types.ts +33 -0
  618. package/src/widgets/CandlestickChart/CandlestickChart.tsx +204 -0
  619. package/src/widgets/CandlestickChart/index.ts +2 -0
  620. package/src/widgets/CandlestickChart/types.ts +29 -0
  621. package/src/widgets/FunnelChart/FunnelChart.tsx +172 -0
  622. package/src/widgets/FunnelChart/index.ts +2 -0
  623. package/src/widgets/FunnelChart/types.ts +22 -0
  624. package/src/widgets/Gauge/Gauge.tsx +235 -0
  625. package/src/widgets/Gauge/index.ts +5 -0
  626. package/src/widgets/Gauge/types.ts +19 -0
  627. package/src/widgets/GroupedBarChart/GroupedBarChart.tsx +190 -0
  628. package/src/widgets/GroupedBarChart/index.ts +2 -0
  629. package/src/widgets/GroupedBarChart/types.ts +30 -0
  630. package/src/widgets/Heatmap/Heatmap.tsx +216 -0
  631. package/src/widgets/Heatmap/index.ts +2 -0
  632. package/src/widgets/Heatmap/types.ts +27 -0
  633. package/src/widgets/Histogram/Histogram.tsx +173 -0
  634. package/src/widgets/Histogram/index.ts +2 -0
  635. package/src/widgets/Histogram/types.ts +18 -0
  636. package/src/widgets/HorizontalBarChart/HorizontalBarChart.tsx +125 -0
  637. package/src/widgets/HorizontalBarChart/index.ts +2 -0
  638. package/src/widgets/HorizontalBarChart/types.ts +23 -0
  639. package/src/widgets/KPI/KPI.tsx +222 -0
  640. package/src/widgets/KPI/index.ts +5 -0
  641. package/src/widgets/KPI/types.ts +19 -0
  642. package/src/widgets/LineChart/LineChart.tsx +364 -0
  643. package/src/widgets/LineChart/index.ts +10 -0
  644. package/src/widgets/LineChart/types.ts +34 -0
  645. package/src/widgets/MultiLineSparkline/MultiLineSparkline.tsx +234 -0
  646. package/src/widgets/MultiLineSparkline/index.ts +10 -0
  647. package/src/widgets/MultiLineSparkline/types.ts +25 -0
  648. package/src/widgets/PieChart/PieChart.tsx +275 -0
  649. package/src/widgets/PieChart/index.ts +10 -0
  650. package/src/widgets/PieChart/types.ts +26 -0
  651. package/src/widgets/Progress/Progress.tsx +201 -0
  652. package/src/widgets/Progress/index.ts +5 -0
  653. package/src/widgets/Progress/types.ts +19 -0
  654. package/src/widgets/RadarChart/RadarChart.tsx +213 -0
  655. package/src/widgets/RadarChart/index.ts +2 -0
  656. package/src/widgets/RadarChart/types.ts +29 -0
  657. package/src/widgets/SankeyDiagram/SankeyDiagram.tsx +272 -0
  658. package/src/widgets/SankeyDiagram/index.ts +2 -0
  659. package/src/widgets/SankeyDiagram/types.ts +29 -0
  660. package/src/widgets/ScatterPlot/ScatterPlot.tsx +167 -0
  661. package/src/widgets/ScatterPlot/index.ts +2 -0
  662. package/src/widgets/ScatterPlot/types.ts +32 -0
  663. package/src/widgets/Sparkline/Sparkline.tsx +203 -0
  664. package/src/widgets/Sparkline/index.ts +5 -0
  665. package/src/widgets/Sparkline/types.ts +18 -0
  666. package/src/widgets/StackedBarChart/StackedBarChart.tsx +181 -0
  667. package/src/widgets/StackedBarChart/index.ts +2 -0
  668. package/src/widgets/StackedBarChart/types.ts +29 -0
  669. package/src/widgets/SunburstChart/SunburstChart.tsx +176 -0
  670. package/src/widgets/SunburstChart/index.ts +2 -0
  671. package/src/widgets/SunburstChart/types.ts +22 -0
  672. package/src/widgets/Treemap/Treemap.tsx +191 -0
  673. package/src/widgets/Treemap/index.ts +2 -0
  674. package/src/widgets/Treemap/types.ts +23 -0
  675. package/src/widgets/WaterfallChart/WaterfallChart.tsx +226 -0
  676. package/src/widgets/WaterfallChart/index.ts +2 -0
  677. package/src/widgets/WaterfallChart/types.ts +26 -0
  678. package/src/widgets/index.ts +40 -0
  679. package/src/widgets/package.json +18 -0
@@ -0,0 +1,150 @@
1
+ /**
2
+ * BoxPlot Widget - Shows statistical distribution with quartiles
3
+ */
4
+ import React, { memo, useMemo } from 'react';
5
+ import { View, Text as RNText, StyleSheet } from 'react-native';
6
+ import Svg, { Rect, Line as SvgLine, Circle } from 'react-native-svg';
7
+ import { useWidgetDimensions, useWidgetTheme, normalize } from '../../core';
8
+ export const BoxPlot = memo(({ data: widgetData, width, height, loading = false, theme: themeOverride, showLabels = true, showOutliers = true, boxWidth = 50, boxSpacing = 30, color, testID, }) => {
9
+ const theme = useWidgetTheme(themeOverride);
10
+ const dimensions = useWidgetDimensions(width, height, 350, 300);
11
+ if (loading) {
12
+ return (<View style={[styles.container, { width: dimensions.width, height: dimensions.height, backgroundColor: theme.colors.surface, borderRadius: theme.radius.md }]} testID={`${testID}-loading`}>
13
+ <RNText style={[styles.loadingText, { color: theme.colors.textSecondary }]}>Loading...</RNText>
14
+ </View>);
15
+ }
16
+ if (!widgetData || !widgetData.data || widgetData.data.length === 0) {
17
+ return (<View style={[styles.container, { width: dimensions.width, height: dimensions.height, backgroundColor: theme.colors.surface, borderRadius: theme.radius.md }]} testID={`${testID}-empty`}>
18
+ <RNText style={[styles.emptyText, { color: theme.colors.textSecondary }]}>No data</RNText>
19
+ </View>);
20
+ }
21
+ const { data, title } = widgetData;
22
+ const padding = theme.spacing.md;
23
+ const titleHeight = title ? theme.fontScale.md + theme.spacing.sm : 0;
24
+ const labelHeight = showLabels ? 30 : 0;
25
+ const yAxisWidth = 40;
26
+ const chartHeight = dimensions.height - padding * 2 - titleHeight - labelHeight;
27
+ const chartWidth = dimensions.width - padding * 2 - yAxisWidth;
28
+ const boxColor = color || theme.colors.chartPrimary;
29
+ // Find global min/max for Y-axis
30
+ const { globalMin, globalMax } = useMemo(() => {
31
+ let min = Infinity;
32
+ let max = -Infinity;
33
+ data.forEach(point => {
34
+ if (point.min < min)
35
+ min = point.min;
36
+ if (point.max > max)
37
+ max = point.max;
38
+ if (point.outliers) {
39
+ point.outliers.forEach(val => {
40
+ if (val < min)
41
+ min = val;
42
+ if (val > max)
43
+ max = val;
44
+ });
45
+ }
46
+ });
47
+ return { globalMin: min, globalMax: max };
48
+ }, [data]);
49
+ const yAxisLabels = useMemo(() => {
50
+ const range = globalMax - globalMin;
51
+ const step = range / 4;
52
+ return Array.from({ length: 5 }, (_, i) => ({
53
+ value: globalMin + i * step,
54
+ y: chartHeight - (i * chartHeight) / 4,
55
+ }));
56
+ }, [globalMin, globalMax, chartHeight]);
57
+ const boxes = useMemo(() => {
58
+ return data.map((point, index) => {
59
+ const centerX = index * (boxWidth + boxSpacing) + boxWidth / 2;
60
+ // Normalize values to chart height
61
+ const minY = chartHeight - normalize(point.min, globalMin, globalMax) * chartHeight;
62
+ const maxY = chartHeight - normalize(point.max, globalMin, globalMax) * chartHeight;
63
+ const q1Y = chartHeight - normalize(point.q1, globalMin, globalMax) * chartHeight;
64
+ const q3Y = chartHeight - normalize(point.q3, globalMin, globalMax) * chartHeight;
65
+ const medianY = chartHeight - normalize(point.median, globalMin, globalMax) * chartHeight;
66
+ const outlierPoints = point.outliers?.map(val => ({
67
+ x: centerX,
68
+ y: chartHeight - normalize(val, globalMin, globalMax) * chartHeight,
69
+ })) || [];
70
+ return {
71
+ label: point.label,
72
+ centerX,
73
+ boxX: centerX - boxWidth / 2,
74
+ boxWidth,
75
+ // Whiskers
76
+ minY,
77
+ maxY,
78
+ // Box (IQR)
79
+ q1Y,
80
+ q3Y,
81
+ boxHeight: Math.abs(q3Y - q1Y),
82
+ boxY: Math.min(q1Y, q3Y),
83
+ // Median line
84
+ medianY,
85
+ // Outliers
86
+ outliers: outlierPoints,
87
+ };
88
+ });
89
+ }, [data, chartHeight, globalMin, globalMax, boxWidth, boxSpacing]);
90
+ return (<View style={[styles.wrapper, { width: dimensions.width, height: dimensions.height, backgroundColor: theme.colors.surface, borderRadius: theme.radius.md, padding }]} testID={testID}>
91
+ {title && (<RNText style={[styles.title, { color: theme.colors.text, fontSize: theme.fontScale.md, fontWeight: 'bold', marginBottom: theme.spacing.sm }]}>
92
+ {title}
93
+ </RNText>)}
94
+
95
+ <View style={styles.chartRow}>
96
+ {/* Y-Axis */}
97
+ <View style={[styles.yAxis, { width: yAxisWidth }]}>
98
+ {yAxisLabels.map((label, index) => (<RNText key={`y-${index}`} style={[styles.yAxisLabel, { color: theme.colors.textSecondary, fontSize: theme.fontScale.xs, top: label.y - 6 }]}>
99
+ {label.value.toFixed(0)}
100
+ </RNText>))}
101
+ </View>
102
+
103
+ <View>
104
+ <Svg width={chartWidth} height={chartHeight}>
105
+ {boxes.map((box, index) => (<React.Fragment key={`box-${index}`}>
106
+ {/* Whisker lines (min to Q1, Q3 to max) */}
107
+ <SvgLine x1={box.centerX} y1={box.minY} x2={box.centerX} y2={box.q1Y} stroke={boxColor} strokeWidth={1}/>
108
+ <SvgLine x1={box.centerX} y1={box.q3Y} x2={box.centerX} y2={box.maxY} stroke={boxColor} strokeWidth={1}/>
109
+
110
+ {/* Min/Max caps */}
111
+ <SvgLine x1={box.centerX - boxWidth / 4} y1={box.minY} x2={box.centerX + boxWidth / 4} y2={box.minY} stroke={boxColor} strokeWidth={2}/>
112
+ <SvgLine x1={box.centerX - boxWidth / 4} y1={box.maxY} x2={box.centerX + boxWidth / 4} y2={box.maxY} stroke={boxColor} strokeWidth={2}/>
113
+
114
+ {/* IQR Box (Q1 to Q3) */}
115
+ <Rect x={box.boxX} y={box.boxY} width={box.boxWidth} height={box.boxHeight} fill={boxColor} fillOpacity={0.3} stroke={boxColor} strokeWidth={2} rx={theme.radius.sm} ry={theme.radius.sm}/>
116
+
117
+ {/* Median line */}
118
+ <SvgLine x1={box.boxX} y1={box.medianY} x2={box.boxX + box.boxWidth} y2={box.medianY} stroke={boxColor} strokeWidth={3}/>
119
+
120
+ {/* Outliers */}
121
+ {showOutliers && box.outliers.map((outlier, oIndex) => (<Circle key={`outlier-${index}-${oIndex}`} cx={outlier.x} cy={outlier.y} r={3} fill={theme.colors.chartNegative} opacity={0.8}/>))}
122
+ </React.Fragment>))}
123
+ </Svg>
124
+
125
+ {showLabels && (<View style={styles.labelsContainer}>
126
+ {boxes.map((box, index) => (<View key={`label-${index}`} style={[styles.labelItem, { left: box.boxX, width: box.boxWidth }]}>
127
+ <RNText style={[styles.labelText, { color: theme.colors.textSecondary, fontSize: theme.fontScale.xs }]} numberOfLines={1}>
128
+ {box.label}
129
+ </RNText>
130
+ </View>))}
131
+ </View>)}
132
+ </View>
133
+ </View>
134
+ </View>);
135
+ });
136
+ BoxPlot.displayName = 'BoxPlot';
137
+ const styles = StyleSheet.create({
138
+ wrapper: { justifyContent: 'flex-start', alignItems: 'flex-start' },
139
+ container: { justifyContent: 'center', alignItems: 'center' },
140
+ loadingText: { fontSize: 16 },
141
+ emptyText: { fontSize: 16 },
142
+ title: { textAlign: 'center', width: '100%' },
143
+ chartRow: { flexDirection: 'row', alignItems: 'flex-start' },
144
+ yAxis: { position: 'relative', marginRight: 8 },
145
+ yAxisLabel: { position: 'absolute', right: 0, textAlign: 'right' },
146
+ labelsContainer: { position: 'relative', height: 30, marginTop: 4 },
147
+ labelItem: { position: 'absolute', alignItems: 'center' },
148
+ labelText: { textAlign: 'center' },
149
+ });
150
+ //# sourceMappingURL=BoxPlot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BoxPlot.js","sourceRoot":"","sources":["../../../../src/widgets/BoxPlot/BoxPlot.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { BoxPlot } from './BoxPlot';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/widgets/BoxPlot/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/widgets/BoxPlot/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * BubbleChart Widget - Scatter plot with size dimension (3D data)
3
+ */
4
+ import React, { memo, useMemo } from 'react';
5
+ import { View, Text as RNText, StyleSheet } from 'react-native';
6
+ import Svg, { Circle, Line as SvgLine } from 'react-native-svg';
7
+ import { useWidgetDimensions, useWidgetTheme, normalize } from '../../core';
8
+ export const BubbleChart = memo(({ data: widgetData, width, height, loading = false, theme: themeOverride, showXAxis = true, showYAxis = true, showGrid = true, showLegend = true, minBubbleSize = 5, maxBubbleSize = 30, testID, }) => {
9
+ const theme = useWidgetTheme(themeOverride);
10
+ const dimensions = useWidgetDimensions(width, height, 350, 300);
11
+ if (loading) {
12
+ return (<View style={[styles.container, { width: dimensions.width, height: dimensions.height, backgroundColor: theme.colors.surface, borderRadius: theme.radius.md }]} testID={`${testID}-loading`}>
13
+ <RNText style={[styles.loadingText, { color: theme.colors.textSecondary }]}>Loading...</RNText>
14
+ </View>);
15
+ }
16
+ if (!widgetData || !widgetData.series || widgetData.series.length === 0) {
17
+ return (<View style={[styles.container, { width: dimensions.width, height: dimensions.height, backgroundColor: theme.colors.surface, borderRadius: theme.radius.md }]} testID={`${testID}-empty`}>
18
+ <RNText style={[styles.emptyText, { color: theme.colors.textSecondary }]}>No data</RNText>
19
+ </View>);
20
+ }
21
+ const { series, title } = widgetData;
22
+ const padding = theme.spacing.md;
23
+ const titleHeight = title ? theme.fontScale.md + theme.spacing.sm : 0;
24
+ const legendHeight = showLegend ? 30 : 0;
25
+ const xAxisHeight = showXAxis ? 30 : 0;
26
+ const yAxisWidth = showYAxis ? 40 : 0;
27
+ const chartWidth = dimensions.width - padding * 2 - yAxisWidth;
28
+ const chartHeight = dimensions.height - padding * 2 - titleHeight - legendHeight - xAxisHeight;
29
+ const { globalMinX, globalMaxX, globalMinY, globalMaxY, globalMinSize, globalMaxSize } = useMemo(() => {
30
+ let minX = Infinity, maxX = -Infinity, minY = Infinity, maxY = -Infinity, minS = Infinity, maxS = -Infinity;
31
+ series.forEach(s => {
32
+ s.data.forEach(point => {
33
+ if (point.x < minX)
34
+ minX = point.x;
35
+ if (point.x > maxX)
36
+ maxX = point.x;
37
+ if (point.y < minY)
38
+ minY = point.y;
39
+ if (point.y > maxY)
40
+ maxY = point.y;
41
+ if (point.size < minS)
42
+ minS = point.size;
43
+ if (point.size > maxS)
44
+ maxS = point.size;
45
+ });
46
+ });
47
+ return { globalMinX: minX, globalMaxX: maxX, globalMinY: minY, globalMaxY: maxY, globalMinSize: minS, globalMaxSize: maxS };
48
+ }, [series]);
49
+ const yAxisLabels = useMemo(() => {
50
+ const range = globalMaxY - globalMinY;
51
+ const step = range / 4;
52
+ return Array.from({ length: 5 }, (_, i) => ({
53
+ value: globalMinY + i * step,
54
+ y: chartHeight - (i * chartHeight) / 4,
55
+ }));
56
+ }, [globalMinY, globalMaxY, chartHeight]);
57
+ const seriesBubbles = useMemo(() => {
58
+ return series.map(s => {
59
+ const bubbles = s.data.map(point => {
60
+ const normalizedX = normalize(point.x, globalMinX, globalMaxX);
61
+ const normalizedY = normalize(point.y, globalMinY, globalMaxY);
62
+ const normalizedSize = normalize(point.size, globalMinSize, globalMaxSize);
63
+ const radius = minBubbleSize + normalizedSize * (maxBubbleSize - minBubbleSize);
64
+ return {
65
+ cx: normalizedX * chartWidth,
66
+ cy: chartHeight - normalizedY * chartHeight,
67
+ r: radius,
68
+ label: point.label,
69
+ };
70
+ });
71
+ return {
72
+ bubbles,
73
+ color: s.color,
74
+ label: s.label,
75
+ };
76
+ });
77
+ }, [series, chartWidth, chartHeight, globalMinX, globalMaxX, globalMinY, globalMaxY, globalMinSize, globalMaxSize, minBubbleSize, maxBubbleSize]);
78
+ return (<View style={[styles.wrapper, { width: dimensions.width, height: dimensions.height, backgroundColor: theme.colors.surface, borderRadius: theme.radius.md, padding }]} testID={testID}>
79
+ {title && (<RNText style={[styles.title, { color: theme.colors.text, fontSize: theme.fontScale.md, fontWeight: 'bold', marginBottom: theme.spacing.sm }]}>
80
+ {title}
81
+ </RNText>)}
82
+
83
+ <View style={styles.chartRow}>
84
+ {showYAxis && (<View style={[styles.yAxis, { width: yAxisWidth }]}>
85
+ {yAxisLabels.map((label, index) => (<RNText key={`y-${index}`} style={[styles.yAxisLabel, { color: theme.colors.textSecondary, fontSize: theme.fontScale.xs, top: label.y - 6 }]}>
86
+ {label.value.toFixed(0)}
87
+ </RNText>))}
88
+ </View>)}
89
+
90
+ <View>
91
+ <Svg width={chartWidth} height={chartHeight}>
92
+ {showGrid && yAxisLabels.map((label, index) => (<SvgLine key={`grid-${index}`} x1={0} y1={label.y} x2={chartWidth} y2={label.y} stroke={theme.colors.borderLight} strokeWidth={1}/>))}
93
+
94
+ {seriesBubbles.map((series, seriesIndex) => (series.bubbles.map((bubble, bubbleIndex) => (<Circle key={`series-${seriesIndex}-bubble-${bubbleIndex}`} cx={bubble.cx} cy={bubble.cy} r={bubble.r} fill={series.color} opacity={0.6} stroke={series.color} strokeWidth={2}/>))))}
95
+ </Svg>
96
+ </View>
97
+ </View>
98
+
99
+ {showLegend && (<View style={styles.legend}>
100
+ {seriesBubbles.map((series, index) => (series.label && (<View key={`legend-${index}`} style={styles.legendItem}>
101
+ <View style={[styles.legendColor, { backgroundColor: series.color }]}/>
102
+ <RNText style={[styles.legendText, { color: theme.colors.textSecondary, fontSize: theme.fontScale.xs }]}>{series.label}</RNText>
103
+ </View>)))}
104
+ </View>)}
105
+ </View>);
106
+ });
107
+ BubbleChart.displayName = 'BubbleChart';
108
+ const styles = StyleSheet.create({
109
+ wrapper: { justifyContent: 'flex-start', alignItems: 'flex-start' },
110
+ container: { justifyContent: 'center', alignItems: 'center' },
111
+ loadingText: { fontSize: 16 },
112
+ emptyText: { fontSize: 16 },
113
+ title: { textAlign: 'center', width: '100%' },
114
+ chartRow: { flexDirection: 'row', alignItems: 'flex-start' },
115
+ yAxis: { position: 'relative', marginRight: 8 },
116
+ yAxisLabel: { position: 'absolute', right: 0, textAlign: 'right' },
117
+ legend: { flexDirection: 'row', flexWrap: 'wrap', justifyContent: 'center', marginTop: 12, gap: 12 },
118
+ legendItem: { flexDirection: 'row', alignItems: 'center', gap: 6 },
119
+ legendColor: { width: 12, height: 12, borderRadius: 6 },
120
+ legendText: { textTransform: 'uppercase', letterSpacing: 0.5 },
121
+ });
122
+ //# sourceMappingURL=BubbleChart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BubbleChart.js","sourceRoot":"","sources":["../../../../src/widgets/BubbleChart/BubbleChart.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { BubbleChart } from './BubbleChart';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/widgets/BubbleChart/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/widgets/BubbleChart/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * CandlestickChart Widget - For stock/financial data
3
+ */
4
+ import React, { memo, useMemo } from 'react';
5
+ import { View, Text as RNText, StyleSheet } from 'react-native';
6
+ import Svg, { Rect, Line as SvgLine } from 'react-native-svg';
7
+ import { useWidgetDimensions, useWidgetTheme, normalize, formatTimeLabel, reduceLabels } from '../../core';
8
+ export const CandlestickChart = memo(({ data: widgetData, width, height, loading = false, theme: themeOverride, showXAxis = true, showYAxis = true, showGrid = true, candleWidth = 8, candleSpacing = 4, upColor, downColor, maxCandles = 30, testID, }) => {
9
+ const theme = useWidgetTheme(themeOverride);
10
+ const dimensions = useWidgetDimensions(width, height, 350, 300);
11
+ if (loading) {
12
+ return (<View style={[styles.container, { width: dimensions.width, height: dimensions.height, backgroundColor: theme.colors.surface, borderRadius: theme.radius.md }]} testID={`${testID}-loading`}>
13
+ <RNText style={[styles.loadingText, { color: theme.colors.textSecondary }]}>Loading...</RNText>
14
+ </View>);
15
+ }
16
+ if (!widgetData || !widgetData.data || widgetData.data.length === 0) {
17
+ return (<View style={[styles.container, { width: dimensions.width, height: dimensions.height, backgroundColor: theme.colors.surface, borderRadius: theme.radius.md }]} testID={`${testID}-empty`}>
18
+ <RNText style={[styles.emptyText, { color: theme.colors.textSecondary }]}>No data</RNText>
19
+ </View>);
20
+ }
21
+ const { data, title, timeInterval = 'day' } = widgetData;
22
+ const displayData = data.slice(-maxCandles); // Show last N candles
23
+ const padding = theme.spacing.md;
24
+ const titleHeight = title ? theme.fontScale.md + theme.spacing.sm : 0;
25
+ const xAxisHeight = showXAxis ? 30 : 0;
26
+ const yAxisWidth = showYAxis ? 40 : 0;
27
+ const chartWidth = dimensions.width - padding * 2 - yAxisWidth;
28
+ const chartHeight = dimensions.height - padding * 2 - titleHeight - xAxisHeight;
29
+ const colorUp = upColor || theme.colors.chartPositive;
30
+ const colorDown = downColor || theme.colors.chartNegative;
31
+ // Find min/max prices
32
+ const { minPrice, maxPrice } = useMemo(() => {
33
+ const lows = displayData.map(d => d.low);
34
+ const highs = displayData.map(d => d.high);
35
+ return {
36
+ minPrice: Math.min(...lows),
37
+ maxPrice: Math.max(...highs),
38
+ };
39
+ }, [displayData]);
40
+ const yAxisLabels = useMemo(() => {
41
+ const range = maxPrice - minPrice;
42
+ const step = range / 4;
43
+ return Array.from({ length: 5 }, (_, i) => ({
44
+ value: minPrice + i * step,
45
+ y: chartHeight - (i * chartHeight) / 4,
46
+ }));
47
+ }, [minPrice, maxPrice, chartHeight]);
48
+ const xLabels = useMemo(() => {
49
+ return displayData.map(d => formatTimeLabel(d.date, timeInterval));
50
+ }, [displayData, timeInterval]);
51
+ const xAxisLabelsReduced = useMemo(() => {
52
+ return reduceLabels(xLabels, 6);
53
+ }, [xLabels]);
54
+ const totalCandleWidth = candleWidth + candleSpacing;
55
+ const chartStartX = Math.max(0, (chartWidth - displayData.length * totalCandleWidth) / 2);
56
+ const candles = useMemo(() => {
57
+ return displayData.map((point, index) => {
58
+ const isUp = point.close >= point.open;
59
+ const color = isUp ? colorUp : colorDown;
60
+ // Normalize prices to chart height
61
+ const highY = chartHeight - normalize(point.high, minPrice, maxPrice) * chartHeight;
62
+ const lowY = chartHeight - normalize(point.low, minPrice, maxPrice) * chartHeight;
63
+ const openY = chartHeight - normalize(point.open, minPrice, maxPrice) * chartHeight;
64
+ const closeY = chartHeight - normalize(point.close, minPrice, maxPrice) * chartHeight;
65
+ const candleX = chartStartX + index * totalCandleWidth;
66
+ const candleCenterX = candleX + candleWidth / 2;
67
+ // Candle body
68
+ const bodyTop = Math.min(openY, closeY);
69
+ const bodyHeight = Math.max(Math.abs(closeY - openY), 1); // Minimum 1px
70
+ return {
71
+ // High-Low line (wick)
72
+ wickX: candleCenterX,
73
+ wickTop: highY,
74
+ wickBottom: lowY,
75
+ // Body rectangle
76
+ bodyX: candleX,
77
+ bodyY: bodyTop,
78
+ bodyWidth: candleWidth,
79
+ bodyHeight: bodyHeight,
80
+ color,
81
+ isUp,
82
+ };
83
+ });
84
+ }, [displayData, chartHeight, minPrice, maxPrice, colorUp, colorDown, candleWidth, totalCandleWidth, chartStartX]);
85
+ return (<View style={[styles.wrapper, { width: dimensions.width, height: dimensions.height, backgroundColor: theme.colors.surface, borderRadius: theme.radius.md, padding }]} testID={testID}>
86
+ {title && (<RNText style={[styles.title, { color: theme.colors.text, fontSize: theme.fontScale.md, fontWeight: 'bold', marginBottom: theme.spacing.sm }]}>
87
+ {title}
88
+ </RNText>)}
89
+
90
+ <View style={styles.chartRow}>
91
+ {showYAxis && (<View style={[styles.yAxis, { width: yAxisWidth }]}>
92
+ {yAxisLabels.map((label, index) => (<RNText key={`y-${index}`} style={[styles.yAxisLabel, { color: theme.colors.textSecondary, fontSize: theme.fontScale.xs, top: label.y - 6 }]}>
93
+ {label.value.toFixed(0)}
94
+ </RNText>))}
95
+ </View>)}
96
+
97
+ <View>
98
+ <Svg width={chartWidth} height={chartHeight}>
99
+ {showGrid && yAxisLabels.map((label, index) => (<SvgLine key={`grid-${index}`} x1={0} y1={label.y} x2={chartWidth} y2={label.y} stroke={theme.colors.borderLight} strokeWidth={1}/>))}
100
+
101
+ {candles.map((candle, index) => (<React.Fragment key={`candle-${index}`}>
102
+ {/* Wick (high-low line) */}
103
+ <SvgLine x1={candle.wickX} y1={candle.wickTop} x2={candle.wickX} y2={candle.wickBottom} stroke={candle.color} strokeWidth={1}/>
104
+
105
+ {/* Body */}
106
+ <Rect x={candle.bodyX} y={candle.bodyY} width={candle.bodyWidth} height={candle.bodyHeight} fill={candle.color} stroke={candle.color} strokeWidth={1}/>
107
+ </React.Fragment>))}
108
+ </Svg>
109
+
110
+ {showXAxis && (<View style={[styles.xAxis, { width: chartWidth }]}>
111
+ {xAxisLabelsReduced.map((item, index) => (<RNText key={`x-${index}`} style={[styles.xAxisLabel, { color: theme.colors.textSecondary, fontSize: theme.fontScale.xs, left: chartStartX + (item.index * totalCandleWidth) - 20 }]}>
112
+ {item.label}
113
+ </RNText>))}
114
+ </View>)}
115
+ </View>
116
+ </View>
117
+ </View>);
118
+ });
119
+ CandlestickChart.displayName = 'CandlestickChart';
120
+ const styles = StyleSheet.create({
121
+ wrapper: { justifyContent: 'flex-start', alignItems: 'flex-start' },
122
+ container: { justifyContent: 'center', alignItems: 'center' },
123
+ loadingText: { fontSize: 16 },
124
+ emptyText: { fontSize: 16 },
125
+ title: { textAlign: 'center', width: '100%' },
126
+ chartRow: { flexDirection: 'row', alignItems: 'flex-start' },
127
+ yAxis: { position: 'relative', marginRight: 8 },
128
+ yAxisLabel: { position: 'absolute', right: 0, textAlign: 'right' },
129
+ xAxis: { position: 'relative', height: 30, marginTop: 4 },
130
+ xAxisLabel: { position: 'absolute', width: 40, textAlign: 'center' },
131
+ });
132
+ //# sourceMappingURL=CandlestickChart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CandlestickChart.js","sourceRoot":"","sources":["../../../../src/widgets/CandlestickChart/CandlestickChart.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { CandlestickChart } from './CandlestickChart';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/widgets/CandlestickChart/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/widgets/CandlestickChart/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * FunnelChart Widget - Conversion funnel visualization
3
+ */
4
+ import React, { memo, useMemo } from 'react';
5
+ import { View, Text as RNText, StyleSheet } from 'react-native';
6
+ import Svg, { Polygon } from 'react-native-svg';
7
+ import { useWidgetDimensions, useWidgetTheme, normalize } from '../../core';
8
+ export const FunnelChart = memo(({ data: widgetData, width, height, loading = false, theme: themeOverride, showLabels = true, showValues = true, showPercentages = true, stageSpacing = 8, testID, }) => {
9
+ const theme = useWidgetTheme(themeOverride);
10
+ const dimensions = useWidgetDimensions(width, height, 300, 400);
11
+ if (loading) {
12
+ return (<View style={[styles.container, { width: dimensions.width, height: dimensions.height, backgroundColor: theme.colors.surface, borderRadius: theme.radius.md }]} testID={`${testID}-loading`}>
13
+ <RNText style={[styles.loadingText, { color: theme.colors.textSecondary }]}>Loading...</RNText>
14
+ </View>);
15
+ }
16
+ if (!widgetData || !widgetData.stages || widgetData.stages.length === 0) {
17
+ return (<View style={[styles.container, { width: dimensions.width, height: dimensions.height, backgroundColor: theme.colors.surface, borderRadius: theme.radius.md }]} testID={`${testID}-empty`}>
18
+ <RNText style={[styles.emptyText, { color: theme.colors.textSecondary }]}>No data</RNText>
19
+ </View>);
20
+ }
21
+ const { stages, title } = widgetData;
22
+ const padding = theme.spacing.md;
23
+ const titleHeight = title ? theme.fontScale.md + theme.spacing.sm : 0;
24
+ const labelWidth = showLabels ? 100 : 0;
25
+ const chartWidth = dimensions.width - padding * 2 - labelWidth;
26
+ const chartHeight = dimensions.height - padding * 2 - titleHeight;
27
+ const maxValue = stages[0].value;
28
+ const totalSpacing = (stages.length - 1) * stageSpacing;
29
+ const stageHeight = (chartHeight - totalSpacing) / stages.length;
30
+ const funnelStages = useMemo(() => {
31
+ return stages.map((stage, index) => {
32
+ const normalizedValue = normalize(stage.value, 0, maxValue);
33
+ const topWidth = normalizedValue * chartWidth;
34
+ const bottomWidth = index < stages.length - 1
35
+ ? normalize(stages[index + 1].value, 0, maxValue) * chartWidth
36
+ : topWidth * 0.7; // Last stage tapers to 70%
37
+ const y = index * (stageHeight + stageSpacing);
38
+ const centerX = chartWidth / 2;
39
+ // Create trapezoid points (top-left, top-right, bottom-right, bottom-left)
40
+ const points = `
41
+ ${centerX - topWidth / 2},${y}
42
+ ${centerX + topWidth / 2},${y}
43
+ ${centerX + bottomWidth / 2},${y + stageHeight}
44
+ ${centerX - bottomWidth / 2},${y + stageHeight}
45
+ `;
46
+ const percentage = ((stage.value / maxValue) * 100).toFixed(1);
47
+ const conversionRate = index > 0
48
+ ? ((stage.value / stages[index - 1].value) * 100).toFixed(1)
49
+ : '100.0';
50
+ return {
51
+ points,
52
+ color: stage.color || getDefaultColor(index, theme),
53
+ label: stage.label,
54
+ value: stage.value,
55
+ percentage,
56
+ conversionRate,
57
+ y: y + stageHeight / 2,
58
+ };
59
+ });
60
+ }, [stages, chartWidth, chartHeight, stageHeight, stageSpacing, maxValue, theme]);
61
+ return (<View style={[styles.wrapper, { width: dimensions.width, height: dimensions.height, backgroundColor: theme.colors.surface, borderRadius: theme.radius.md, padding }]} testID={testID}>
62
+ {title && (<RNText style={[styles.title, { color: theme.colors.text, fontSize: theme.fontScale.md, fontWeight: 'bold', marginBottom: theme.spacing.sm }]}>
63
+ {title}
64
+ </RNText>)}
65
+
66
+ <View style={styles.chartRow}>
67
+ <View>
68
+ <Svg width={chartWidth} height={chartHeight}>
69
+ {funnelStages.map((stage, index) => (<Polygon key={`stage-${index}`} points={stage.points} fill={stage.color} opacity={0.9}/>))}
70
+ </Svg>
71
+ </View>
72
+
73
+ {showLabels && (<View style={[styles.labelsContainer, { width: labelWidth, height: chartHeight }]}>
74
+ {funnelStages.map((stage, index) => (<View key={`label-${index}`} style={[styles.labelItem, { top: stage.y - 20, height: 40 }]}>
75
+ <RNText style={[styles.label, { color: theme.colors.text, fontSize: theme.fontScale.sm }]} numberOfLines={1}>
76
+ {stage.label}
77
+ </RNText>
78
+ {showValues && (<RNText style={[styles.value, { color: theme.colors.textSecondary, fontSize: theme.fontScale.xs }]}>
79
+ {stage.value.toLocaleString()}
80
+ </RNText>)}
81
+ {showPercentages && (<RNText style={[styles.percentage, { color: theme.colors.textSecondary, fontSize: theme.fontScale.xs }]}>
82
+ {index > 0 ? `${stage.conversionRate}%` : '100%'}
83
+ </RNText>)}
84
+ </View>))}
85
+ </View>)}
86
+ </View>
87
+ </View>);
88
+ });
89
+ FunnelChart.displayName = 'FunnelChart';
90
+ function getDefaultColor(index, theme) {
91
+ const colors = [
92
+ theme.colors.chartPrimary,
93
+ theme.colors.chartSecondary,
94
+ theme.colors.chartTertiary,
95
+ theme.colors.chartQuaternary,
96
+ theme.colors.chartPositive,
97
+ ];
98
+ return colors[index % colors.length];
99
+ }
100
+ const styles = StyleSheet.create({
101
+ wrapper: { justifyContent: 'flex-start', alignItems: 'flex-start' },
102
+ container: { justifyContent: 'center', alignItems: 'center' },
103
+ loadingText: { fontSize: 16 },
104
+ emptyText: { fontSize: 16 },
105
+ title: { textAlign: 'center', width: '100%' },
106
+ chartRow: { flexDirection: 'row', flex: 1 },
107
+ labelsContainer: { position: 'relative', marginLeft: 12 },
108
+ labelItem: { position: 'absolute', justifyContent: 'center' },
109
+ label: { fontWeight: '600', marginBottom: 2 },
110
+ value: { marginBottom: 1 },
111
+ percentage: { fontWeight: '500' },
112
+ });
113
+ //# sourceMappingURL=FunnelChart.js.map