@coinbase/cds-mobile-visualization 3.4.0-beta.2 → 3.4.0-beta.20

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 (211) hide show
  1. package/CHANGELOG.md +122 -0
  2. package/dts/chart/CartesianChart.d.ts +92 -34
  3. package/dts/chart/CartesianChart.d.ts.map +1 -1
  4. package/dts/chart/ChartContextBridge.d.ts +28 -0
  5. package/dts/chart/ChartContextBridge.d.ts.map +1 -0
  6. package/dts/chart/ChartProvider.d.ts +3 -0
  7. package/dts/chart/ChartProvider.d.ts.map +1 -1
  8. package/dts/chart/Path.d.ts +97 -32
  9. package/dts/chart/Path.d.ts.map +1 -1
  10. package/dts/chart/PeriodSelector.d.ts +6 -13
  11. package/dts/chart/PeriodSelector.d.ts.map +1 -1
  12. package/dts/chart/area/Area.d.ts +39 -28
  13. package/dts/chart/area/Area.d.ts.map +1 -1
  14. package/dts/chart/area/AreaChart.d.ts +51 -10
  15. package/dts/chart/area/AreaChart.d.ts.map +1 -1
  16. package/dts/chart/area/DottedArea.d.ts +21 -2
  17. package/dts/chart/area/DottedArea.d.ts.map +1 -1
  18. package/dts/chart/area/GradientArea.d.ts +19 -13
  19. package/dts/chart/area/GradientArea.d.ts.map +1 -1
  20. package/dts/chart/area/SolidArea.d.ts +17 -2
  21. package/dts/chart/area/SolidArea.d.ts.map +1 -1
  22. package/dts/chart/axis/Axis.d.ts +86 -118
  23. package/dts/chart/axis/Axis.d.ts.map +1 -1
  24. package/dts/chart/axis/DefaultAxisTickLabel.d.ts +8 -0
  25. package/dts/chart/axis/DefaultAxisTickLabel.d.ts.map +1 -0
  26. package/dts/chart/axis/XAxis.d.ts +1 -1
  27. package/dts/chart/axis/XAxis.d.ts.map +1 -1
  28. package/dts/chart/axis/YAxis.d.ts +2 -2
  29. package/dts/chart/axis/YAxis.d.ts.map +1 -1
  30. package/dts/chart/axis/index.d.ts +1 -0
  31. package/dts/chart/axis/index.d.ts.map +1 -1
  32. package/dts/chart/bar/Bar.d.ts +49 -12
  33. package/dts/chart/bar/Bar.d.ts.map +1 -1
  34. package/dts/chart/bar/BarChart.d.ts +40 -19
  35. package/dts/chart/bar/BarChart.d.ts.map +1 -1
  36. package/dts/chart/bar/BarPlot.d.ts +3 -1
  37. package/dts/chart/bar/BarPlot.d.ts.map +1 -1
  38. package/dts/chart/bar/BarStack.d.ts +41 -46
  39. package/dts/chart/bar/BarStack.d.ts.map +1 -1
  40. package/dts/chart/bar/BarStackGroup.d.ts +2 -0
  41. package/dts/chart/bar/BarStackGroup.d.ts.map +1 -1
  42. package/dts/chart/bar/DefaultBar.d.ts +1 -1
  43. package/dts/chart/bar/DefaultBar.d.ts.map +1 -1
  44. package/dts/chart/bar/DefaultBarStack.d.ts.map +1 -1
  45. package/dts/chart/gradient/Gradient.d.ts +25 -0
  46. package/dts/chart/gradient/Gradient.d.ts.map +1 -0
  47. package/dts/chart/gradient/index.d.ts +2 -0
  48. package/dts/chart/gradient/index.d.ts.map +1 -0
  49. package/dts/chart/index.d.ts +4 -1
  50. package/dts/chart/index.d.ts.map +1 -1
  51. package/dts/chart/legend/DefaultLegendEntry.d.ts +5 -0
  52. package/dts/chart/legend/DefaultLegendEntry.d.ts.map +1 -0
  53. package/dts/chart/legend/DefaultLegendShape.d.ts +5 -0
  54. package/dts/chart/legend/DefaultLegendShape.d.ts.map +1 -0
  55. package/dts/chart/legend/Legend.d.ts +168 -0
  56. package/dts/chart/legend/Legend.d.ts.map +1 -0
  57. package/dts/chart/legend/index.d.ts +4 -0
  58. package/dts/chart/legend/index.d.ts.map +1 -0
  59. package/dts/chart/line/DefaultReferenceLineLabel.d.ts +9 -0
  60. package/dts/chart/line/DefaultReferenceLineLabel.d.ts.map +1 -0
  61. package/dts/chart/line/DottedLine.d.ts +13 -5
  62. package/dts/chart/line/DottedLine.d.ts.map +1 -1
  63. package/dts/chart/line/Line.d.ts +61 -27
  64. package/dts/chart/line/Line.d.ts.map +1 -1
  65. package/dts/chart/line/LineChart.d.ts +43 -9
  66. package/dts/chart/line/LineChart.d.ts.map +1 -1
  67. package/dts/chart/line/ReferenceLine.d.ts +68 -20
  68. package/dts/chart/line/ReferenceLine.d.ts.map +1 -1
  69. package/dts/chart/line/SolidLine.d.ts +8 -5
  70. package/dts/chart/line/SolidLine.d.ts.map +1 -1
  71. package/dts/chart/line/index.d.ts +1 -1
  72. package/dts/chart/line/index.d.ts.map +1 -1
  73. package/dts/chart/point/DefaultPointLabel.d.ts +10 -0
  74. package/dts/chart/point/DefaultPointLabel.d.ts.map +1 -0
  75. package/dts/chart/point/Point.d.ts +136 -0
  76. package/dts/chart/point/Point.d.ts.map +1 -0
  77. package/dts/chart/point/index.d.ts +3 -0
  78. package/dts/chart/point/index.d.ts.map +1 -0
  79. package/dts/chart/scrubber/DefaultScrubberBeacon.d.ts +38 -0
  80. package/dts/chart/scrubber/DefaultScrubberBeacon.d.ts.map +1 -0
  81. package/dts/chart/scrubber/DefaultScrubberBeaconLabel.d.ts +12 -0
  82. package/dts/chart/scrubber/DefaultScrubberBeaconLabel.d.ts.map +1 -0
  83. package/dts/chart/scrubber/DefaultScrubberLabel.d.ts +11 -0
  84. package/dts/chart/scrubber/DefaultScrubberLabel.d.ts.map +1 -0
  85. package/dts/chart/scrubber/Scrubber.d.ts +230 -42
  86. package/dts/chart/scrubber/Scrubber.d.ts.map +1 -1
  87. package/dts/chart/scrubber/ScrubberBeaconGroup.d.ts +54 -0
  88. package/dts/chart/scrubber/ScrubberBeaconGroup.d.ts.map +1 -0
  89. package/dts/chart/scrubber/ScrubberBeaconLabelGroup.d.ts +46 -0
  90. package/dts/chart/scrubber/ScrubberBeaconLabelGroup.d.ts.map +1 -0
  91. package/dts/chart/scrubber/ScrubberProvider.d.ts +6 -3
  92. package/dts/chart/scrubber/ScrubberProvider.d.ts.map +1 -1
  93. package/dts/chart/scrubber/index.d.ts +3 -0
  94. package/dts/chart/scrubber/index.d.ts.map +1 -1
  95. package/dts/chart/text/ChartText.d.ts +151 -77
  96. package/dts/chart/text/ChartText.d.ts.map +1 -1
  97. package/dts/chart/text/{SmartChartTextGroup.d.ts → ChartTextGroup.d.ts} +9 -3
  98. package/dts/chart/text/ChartTextGroup.d.ts.map +1 -0
  99. package/dts/chart/text/index.d.ts +1 -1
  100. package/dts/chart/text/index.d.ts.map +1 -1
  101. package/dts/chart/utils/axis.d.ts +25 -1
  102. package/dts/chart/utils/axis.d.ts.map +1 -1
  103. package/dts/chart/utils/bar.d.ts +34 -0
  104. package/dts/chart/utils/bar.d.ts.map +1 -1
  105. package/dts/chart/utils/chart.d.ts +52 -7
  106. package/dts/chart/utils/chart.d.ts.map +1 -1
  107. package/dts/chart/utils/context.d.ts +28 -7
  108. package/dts/chart/utils/context.d.ts.map +1 -1
  109. package/dts/chart/utils/gradient.d.ts +117 -0
  110. package/dts/chart/utils/gradient.d.ts.map +1 -0
  111. package/dts/chart/utils/index.d.ts +3 -0
  112. package/dts/chart/utils/index.d.ts.map +1 -1
  113. package/dts/chart/utils/path.d.ts +59 -0
  114. package/dts/chart/utils/path.d.ts.map +1 -1
  115. package/dts/chart/utils/point.d.ts +71 -7
  116. package/dts/chart/utils/point.d.ts.map +1 -1
  117. package/dts/chart/utils/scale.d.ts +102 -0
  118. package/dts/chart/utils/scale.d.ts.map +1 -1
  119. package/dts/chart/utils/scrubber.d.ts +40 -0
  120. package/dts/chart/utils/scrubber.d.ts.map +1 -0
  121. package/dts/chart/utils/transition.d.ts +178 -0
  122. package/dts/chart/utils/transition.d.ts.map +1 -0
  123. package/esm/chart/CartesianChart.js +199 -75
  124. package/esm/chart/ChartContextBridge.js +159 -0
  125. package/esm/chart/ChartProvider.js +2 -2
  126. package/esm/chart/Path.js +200 -114
  127. package/esm/chart/PeriodSelector.js +7 -3
  128. package/esm/chart/__stories__/CartesianChart.stories.js +307 -134
  129. package/esm/chart/__stories__/ChartTransitions.stories.js +629 -0
  130. package/esm/chart/__stories__/PeriodSelector.stories.js +201 -75
  131. package/esm/chart/area/Area.js +27 -35
  132. package/esm/chart/area/AreaChart.js +17 -12
  133. package/esm/chart/area/DottedArea.js +64 -108
  134. package/esm/chart/area/GradientArea.js +37 -91
  135. package/esm/chart/area/SolidArea.js +24 -8
  136. package/esm/chart/area/__stories__/AreaChart.stories.js +1 -1
  137. package/esm/chart/axis/Axis.js +5 -39
  138. package/esm/chart/axis/DefaultAxisTickLabel.js +11 -0
  139. package/esm/chart/axis/XAxis.js +148 -66
  140. package/esm/chart/axis/YAxis.js +149 -65
  141. package/esm/chart/axis/__stories__/Axis.stories.js +259 -1
  142. package/esm/chart/axis/index.js +1 -0
  143. package/esm/chart/bar/Bar.js +7 -1
  144. package/esm/chart/bar/BarChart.js +17 -37
  145. package/esm/chart/bar/BarPlot.js +43 -35
  146. package/esm/chart/bar/BarStack.js +84 -37
  147. package/esm/chart/bar/BarStackGroup.js +7 -17
  148. package/esm/chart/bar/DefaultBar.js +29 -51
  149. package/esm/chart/bar/DefaultBarStack.js +34 -58
  150. package/esm/chart/bar/__stories__/BarChart.stories.js +948 -88
  151. package/esm/chart/gradient/Gradient.js +53 -0
  152. package/esm/chart/gradient/index.js +1 -0
  153. package/esm/chart/index.js +4 -1
  154. package/esm/chart/legend/DefaultLegendEntry.js +42 -0
  155. package/esm/chart/legend/DefaultLegendShape.js +64 -0
  156. package/esm/chart/legend/Legend.js +59 -0
  157. package/esm/chart/legend/__stories__/Legend.stories.js +574 -0
  158. package/esm/chart/legend/index.js +3 -0
  159. package/esm/chart/line/DefaultReferenceLineLabel.js +66 -0
  160. package/esm/chart/line/DottedLine.js +31 -14
  161. package/esm/chart/line/Line.js +96 -68
  162. package/esm/chart/line/LineChart.js +21 -14
  163. package/esm/chart/line/ReferenceLine.js +80 -63
  164. package/esm/chart/line/SolidLine.js +27 -10
  165. package/esm/chart/line/__stories__/LineChart.stories.js +1748 -2048
  166. package/esm/chart/line/__stories__/ReferenceLine.stories.js +177 -28
  167. package/esm/chart/line/index.js +1 -1
  168. package/esm/chart/point/DefaultPointLabel.js +39 -0
  169. package/esm/chart/point/Point.js +186 -0
  170. package/esm/chart/point/index.js +2 -0
  171. package/esm/chart/scrubber/DefaultScrubberBeacon.js +180 -0
  172. package/esm/chart/scrubber/DefaultScrubberBeaconLabel.js +43 -0
  173. package/esm/chart/scrubber/DefaultScrubberLabel.js +28 -0
  174. package/esm/chart/scrubber/Scrubber.js +130 -144
  175. package/esm/chart/scrubber/ScrubberBeaconGroup.js +165 -0
  176. package/esm/chart/scrubber/ScrubberBeaconLabelGroup.js +208 -0
  177. package/esm/chart/scrubber/ScrubberProvider.js +46 -54
  178. package/esm/chart/scrubber/__stories__/Scrubber.stories.js +760 -0
  179. package/esm/chart/scrubber/index.js +3 -1
  180. package/esm/chart/text/ChartText.js +242 -174
  181. package/esm/chart/text/{SmartChartTextGroup.js → ChartTextGroup.js} +6 -5
  182. package/esm/chart/text/index.js +1 -1
  183. package/esm/chart/utils/axis.js +47 -31
  184. package/esm/chart/utils/bar.js +43 -0
  185. package/esm/chart/utils/chart.js +57 -3
  186. package/esm/chart/utils/gradient.js +305 -0
  187. package/esm/chart/utils/index.js +3 -0
  188. package/esm/chart/utils/path.js +84 -8
  189. package/esm/chart/utils/point.js +171 -17
  190. package/esm/chart/utils/scale.js +242 -2
  191. package/esm/chart/utils/scrubber.js +146 -0
  192. package/esm/chart/utils/transition.js +220 -0
  193. package/esm/sparkline/__figma__/Sparkline.figma.js +1 -1
  194. package/esm/sparkline/__stories__/Sparkline.stories.js +11 -7
  195. package/esm/sparkline/__stories__/SparklineGradient.stories.js +7 -4
  196. package/esm/sparkline/sparkline-interactive/__figma__/SparklineInteractive.figma.js +1 -1
  197. package/esm/sparkline/sparkline-interactive/__stories__/SparklineInteractive.stories.js +51 -26
  198. package/esm/sparkline/sparkline-interactive-header/__figma__/SparklineInteractiveHeader.figma.js +1 -1
  199. package/esm/sparkline/sparkline-interactive-header/__stories__/SparklineInteractiveHeader.stories.js +17 -9
  200. package/package.json +15 -10
  201. package/dts/chart/Point.d.ts +0 -103
  202. package/dts/chart/Point.d.ts.map +0 -1
  203. package/dts/chart/line/GradientLine.d.ts +0 -45
  204. package/dts/chart/line/GradientLine.d.ts.map +0 -1
  205. package/dts/chart/scrubber/ScrubberBeacon.d.ts +0 -75
  206. package/dts/chart/scrubber/ScrubberBeacon.d.ts.map +0 -1
  207. package/dts/chart/text/SmartChartTextGroup.d.ts.map +0 -1
  208. package/esm/chart/Point.js +0 -111
  209. package/esm/chart/__stories__/Chart.stories.js +0 -79
  210. package/esm/chart/line/GradientLine.js +0 -62
  211. package/esm/chart/scrubber/ScrubberBeacon.js +0 -199
@@ -2,6 +2,7 @@ function _extends() { return _extends = Object.assign ? Object.assign.bind() : f
2
2
  import { memo, useCallback, useMemo } from 'react';
3
3
  import { Example, ExampleScreen } from '@coinbase/cds-mobile/examples/ExampleScreen';
4
4
  import { useTheme } from '@coinbase/cds-mobile/hooks/useTheme';
5
+ import { BarPlot } from '../../bar';
5
6
  import { CartesianChart } from '../../CartesianChart';
6
7
  import { LineChart, SolidLine } from '../../line';
7
8
  import { Line } from '../../line/Line';
@@ -118,7 +119,6 @@ const TimeOfDayAxesExample = () => {
118
119
  }, [timeData]);
119
120
  return /*#__PURE__*/_jsxs(LineChart, {
120
121
  enableScrubbing: true,
121
- curve: "monotone",
122
122
  height: defaultChartHeight,
123
123
  series: [{
124
124
  id: 'lineA',
@@ -195,6 +195,105 @@ const MultipleYAxesExample = () => /*#__PURE__*/_jsxs(CartesianChart, {
195
195
  seriesId: "log"
196
196
  }), /*#__PURE__*/_jsx(Scrubber, {})]
197
197
  });
198
+ const AxesOnAllSides = () => {
199
+ const theme = useTheme();
200
+ const data = [30, 45, 60, 80, 55, 40, 65];
201
+ const labels = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];
202
+ return /*#__PURE__*/_jsxs(CartesianChart, {
203
+ height: defaultChartHeight,
204
+ series: [{
205
+ id: 'data',
206
+ data,
207
+ color: theme.color.accentBoldBlue
208
+ }],
209
+ xAxis: {
210
+ data: labels
211
+ },
212
+ yAxis: {
213
+ domain: {
214
+ min: 0,
215
+ max: 100
216
+ }
217
+ },
218
+ children: [/*#__PURE__*/_jsx(XAxis, {
219
+ showLine: true,
220
+ showTickMarks: true,
221
+ label: "Bottom Axis",
222
+ position: "bottom",
223
+ ticks: labels.map((label, index) => index)
224
+ }), /*#__PURE__*/_jsx(XAxis, {
225
+ showLine: true,
226
+ showTickMarks: true,
227
+ label: "Top Axis",
228
+ position: "top",
229
+ ticks: labels.map((label, index) => index)
230
+ }), /*#__PURE__*/_jsx(YAxis, {
231
+ showLine: true,
232
+ showTickMarks: true,
233
+ label: "Left Axis",
234
+ position: "left"
235
+ }), /*#__PURE__*/_jsx(YAxis, {
236
+ showLine: true,
237
+ showTickMarks: true,
238
+ label: "Right Axis",
239
+ position: "right"
240
+ }), /*#__PURE__*/_jsx(Line, {
241
+ curve: "natural",
242
+ seriesId: "data"
243
+ })]
244
+ });
245
+ };
246
+ const CustomTickMarkSizes = () => {
247
+ const theme = useTheme();
248
+ const data = [25, 50, 75, 60, 45, 80, 35];
249
+ return /*#__PURE__*/_jsxs(CartesianChart, {
250
+ height: 300,
251
+ series: [{
252
+ id: 'data',
253
+ data,
254
+ color: theme.color.accentBoldGreen
255
+ }],
256
+ xAxis: {
257
+ data: ['A', 'B', 'C', 'D', 'E', 'F', 'G']
258
+ },
259
+ yAxis: {
260
+ domain: {
261
+ min: 0,
262
+ max: 100
263
+ }
264
+ },
265
+ children: [/*#__PURE__*/_jsx(XAxis, {
266
+ showLine: true,
267
+ showTickMarks: true,
268
+ label: "tickMarkSize=4 (default)",
269
+ tickMarkSize: 4
270
+ }), /*#__PURE__*/_jsx(XAxis, {
271
+ showLine: true,
272
+ showTickMarks: true,
273
+ height: 60,
274
+ label: "tickMarkSize=8",
275
+ position: "top",
276
+ tickMarkSize: 8
277
+ }), /*#__PURE__*/_jsx(YAxis, {
278
+ showLine: true,
279
+ showTickMarks: true,
280
+ label: "tickMarkSize=16",
281
+ position: "left",
282
+ tickMarkSize: 16,
283
+ width: 76
284
+ }), /*#__PURE__*/_jsx(YAxis, {
285
+ showLine: true,
286
+ showTickMarks: true,
287
+ label: "tickMarkSize=24",
288
+ position: "right",
289
+ tickMarkSize: 24,
290
+ width: 84
291
+ }), /*#__PURE__*/_jsx(Line, {
292
+ curve: "monotone",
293
+ seriesId: "data"
294
+ })]
295
+ });
296
+ };
198
297
  const DomainLimitType = _ref => {
199
298
  let {
200
299
  limit
@@ -250,6 +349,97 @@ const DomainLimitType = _ref => {
250
349
  }), /*#__PURE__*/_jsx(Scrubber, {})]
251
350
  });
252
351
  };
352
+
353
+ // Band scale with tick filtering - show every other tick
354
+ const BandScaleTickFiltering = () => /*#__PURE__*/_jsxs(CartesianChart, {
355
+ height: defaultChartHeight,
356
+ inset: 8,
357
+ series: [{
358
+ id: 'data',
359
+ data: [10, 22, 29, 45, 98, 45, 22, 35, 42, 18, 55, 67]
360
+ }],
361
+ xAxis: {
362
+ scaleType: 'band',
363
+ data: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
364
+ },
365
+ yAxis: {
366
+ domain: {
367
+ min: 0
368
+ }
369
+ },
370
+ children: [/*#__PURE__*/_jsx(XAxis, {
371
+ showGrid: true,
372
+ showLine: true,
373
+ showTickMarks: true,
374
+ label: "ticks={(i) => i % 2 === 0}",
375
+ ticks: i => i % 2 === 0
376
+ }), /*#__PURE__*/_jsx(BarPlot, {})]
377
+ });
378
+
379
+ // Band scale with explicit ticks array
380
+ const BandScaleExplicitTicks = () => /*#__PURE__*/_jsxs(CartesianChart, {
381
+ height: defaultChartHeight,
382
+ inset: 8,
383
+ series: [{
384
+ id: 'data',
385
+ data: [10, 22, 29, 45, 98, 45, 22]
386
+ }],
387
+ xAxis: {
388
+ scaleType: 'band',
389
+ data: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']
390
+ },
391
+ yAxis: {
392
+ domain: {
393
+ min: 0
394
+ }
395
+ },
396
+ children: [/*#__PURE__*/_jsx(XAxis, {
397
+ showGrid: true,
398
+ showLine: true,
399
+ showTickMarks: true,
400
+ label: "ticks={[0, 3, 6]} (first, middle, last)",
401
+ ticks: [0, 3, 6]
402
+ }), /*#__PURE__*/_jsx(BarPlot, {})]
403
+ });
404
+
405
+ // Line chart on band scale - comparing grid placements
406
+ const LineChartOnBandScale = _ref2 => {
407
+ let {
408
+ bandGridLinePlacement
409
+ } = _ref2;
410
+ const theme = useTheme();
411
+ return /*#__PURE__*/_jsxs(CartesianChart, {
412
+ height: 180,
413
+ inset: 8,
414
+ series: [{
415
+ id: 'line1',
416
+ data: [10, 22, 29, 45, 98, 45, 22],
417
+ color: theme.color.accentBoldBlue
418
+ }],
419
+ xAxis: {
420
+ scaleType: 'band',
421
+ data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
422
+ },
423
+ yAxis: {
424
+ domain: {
425
+ min: 0
426
+ }
427
+ },
428
+ children: [/*#__PURE__*/_jsx(XAxis, {
429
+ showGrid: true,
430
+ showLine: true,
431
+ showTickMarks: true,
432
+ bandGridLinePlacement: bandGridLinePlacement,
433
+ bandTickMarkPlacement: bandGridLinePlacement,
434
+ label: "bandGridLinePlacement: " + bandGridLinePlacement
435
+ }), /*#__PURE__*/_jsx(YAxis, {
436
+ showGrid: true,
437
+ position: "left"
438
+ }), /*#__PURE__*/_jsx(Line, {
439
+ seriesId: "line1"
440
+ })]
441
+ });
442
+ };
253
443
  const AxisStories = () => {
254
444
  return /*#__PURE__*/_jsxs(ExampleScreen, {
255
445
  children: [/*#__PURE__*/_jsx(Example, {
@@ -271,6 +461,74 @@ const AxisStories = () => {
271
461
  children: /*#__PURE__*/_jsx(DomainLimitType, {
272
462
  limit: "nice"
273
463
  })
464
+ }), /*#__PURE__*/_jsx(Example, {
465
+ title: "Band Axis Grid Alignment",
466
+ children: /*#__PURE__*/_jsxs(CartesianChart, {
467
+ height: 350,
468
+ inset: 8,
469
+ series: [{
470
+ id: 'prices',
471
+ data: [10, 22, 29, 45, 98, 45, 22]
472
+ }],
473
+ xAxis: {
474
+ scaleType: 'band',
475
+ data: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']
476
+ },
477
+ yAxis: {
478
+ domain: {
479
+ min: 0
480
+ }
481
+ },
482
+ children: [/*#__PURE__*/_jsx(XAxis, {
483
+ showGrid: true,
484
+ showLine: true,
485
+ showTickMarks: true,
486
+ label: "Default"
487
+ }), /*#__PURE__*/_jsx(XAxis, {
488
+ showLine: true,
489
+ showTickMarks: true,
490
+ bandTickMarkPlacement: "start",
491
+ label: "Start"
492
+ }), /*#__PURE__*/_jsx(XAxis, {
493
+ showLine: true,
494
+ showTickMarks: true,
495
+ bandTickMarkPlacement: "end",
496
+ label: "End"
497
+ }), /*#__PURE__*/_jsx(XAxis, {
498
+ showLine: true,
499
+ showTickMarks: true,
500
+ bandTickMarkPlacement: "middle",
501
+ label: "Middle"
502
+ }), /*#__PURE__*/_jsx(XAxis, {
503
+ showLine: true,
504
+ showTickMarks: true,
505
+ bandTickMarkPlacement: "edges",
506
+ label: "Edges"
507
+ }), /*#__PURE__*/_jsx(BarPlot, {})]
508
+ })
509
+ }), /*#__PURE__*/_jsx(Example, {
510
+ title: "Band Scale - Tick Filtering",
511
+ children: /*#__PURE__*/_jsx(BandScaleTickFiltering, {})
512
+ }), /*#__PURE__*/_jsx(Example, {
513
+ title: "Band Scale - Explicit Ticks",
514
+ children: /*#__PURE__*/_jsx(BandScaleExplicitTicks, {})
515
+ }), /*#__PURE__*/_jsxs(Example, {
516
+ title: "Line Chart on Band Scale - Grid Positions",
517
+ children: [/*#__PURE__*/_jsx(LineChartOnBandScale, {
518
+ bandGridLinePlacement: "edges"
519
+ }), /*#__PURE__*/_jsx(LineChartOnBandScale, {
520
+ bandGridLinePlacement: "start"
521
+ }), /*#__PURE__*/_jsx(LineChartOnBandScale, {
522
+ bandGridLinePlacement: "middle"
523
+ }), /*#__PURE__*/_jsx(LineChartOnBandScale, {
524
+ bandGridLinePlacement: "end"
525
+ })]
526
+ }), /*#__PURE__*/_jsx(Example, {
527
+ title: "Axes on All Sides",
528
+ children: /*#__PURE__*/_jsx(AxesOnAllSides, {})
529
+ }), /*#__PURE__*/_jsx(Example, {
530
+ title: "Custom Tick Mark Sizes",
531
+ children: /*#__PURE__*/_jsx(CustomTickMarkSizes, {})
274
532
  })]
275
533
  });
276
534
  };
@@ -1,5 +1,6 @@
1
1
  // codegen:start {preset: barrel, include: ./*.tsx, exclude: ./__stories__/*.tsx}
2
2
  export * from './Axis';
3
+ export * from './DefaultAxisTickLabel';
3
4
  export * from './XAxis';
4
5
  export * from './YAxis';
5
6
  // codegen:end
@@ -24,6 +24,7 @@ export const Bar = /*#__PURE__*/memo(_ref => {
24
24
  originY,
25
25
  dataX,
26
26
  dataY,
27
+ seriesId,
27
28
  BarComponent = DefaultBar,
28
29
  fill,
29
30
  fillOpacity = 1,
@@ -31,7 +32,9 @@ export const Bar = /*#__PURE__*/memo(_ref => {
31
32
  strokeWidth,
32
33
  borderRadius = 4,
33
34
  roundTop = true,
34
- roundBottom = true
35
+ roundBottom = true,
36
+ transitions,
37
+ transition
35
38
  } = _ref;
36
39
  const theme = useTheme();
37
40
 
@@ -58,8 +61,11 @@ export const Bar = /*#__PURE__*/memo(_ref => {
58
61
  originY: effectiveOriginY,
59
62
  roundBottom: roundBottom,
60
63
  roundTop: roundTop,
64
+ seriesId: seriesId,
61
65
  stroke: stroke,
62
66
  strokeWidth: strokeWidth,
67
+ transition: transition,
68
+ transitions: transitions,
63
69
  width: width,
64
70
  x: x,
65
71
  y: y
@@ -1,4 +1,4 @@
1
- const _excluded = ["series", "stacked", "showXAxis", "showYAxis", "xAxis", "yAxis", "inset", "children", "barPadding", "BarComponent", "fillOpacity", "stroke", "strokeWidth", "borderRadius", "roundBaseline", "BarStackComponent", "stackGap", "barMinSize", "stackMinSize"],
1
+ const _excluded = ["series", "stacked", "showXAxis", "showYAxis", "xAxis", "yAxis", "inset", "children", "barPadding", "BarComponent", "fillOpacity", "stroke", "strokeWidth", "borderRadius", "roundBaseline", "BarStackComponent", "stackGap", "barMinSize", "stackMinSize", "transitions", "transition"],
2
2
  _excluded2 = ["scaleType", "data", "categoryPadding", "domain", "domainLimit", "range"],
3
3
  _excluded3 = ["scaleType", "data", "categoryPadding", "domain", "domainLimit", "range", "id"];
4
4
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
@@ -8,11 +8,6 @@ import { XAxis, YAxis } from '../axis';
8
8
  import { CartesianChart } from '../CartesianChart';
9
9
  import { defaultChartInset, defaultStackId, getChartInset } from '../utils';
10
10
  import { BarPlot } from './BarPlot';
11
-
12
- /**
13
- * Series type specifically for bar charts - supports both single numbers and tuples,
14
- * and allows individual customization of Bar props per series.
15
- */
16
11
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
17
12
  export const BarChart = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref) => {
18
13
  let {
@@ -22,7 +17,7 @@ export const BarChart = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref) =>
22
17
  showYAxis,
23
18
  xAxis,
24
19
  yAxis,
25
- inset: userInset,
20
+ inset,
26
21
  children,
27
22
  barPadding,
28
23
  BarComponent,
@@ -34,44 +29,27 @@ export const BarChart = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref) =>
34
29
  BarStackComponent,
35
30
  stackGap,
36
31
  barMinSize,
37
- stackMinSize
32
+ stackMinSize,
33
+ transitions,
34
+ transition
38
35
  } = _ref,
39
36
  chartProps = _objectWithoutPropertiesLoose(_ref, _excluded);
40
- const calculatedInset = useMemo(() => getChartInset(userInset, defaultChartInset), [userInset]);
41
-
42
- // Convert BarSeries to Series for Chart context
43
- const chartSeries = useMemo(() => {
44
- return series == null ? void 0 : series.map(s => ({
45
- id: s.id,
46
- data: s.data,
47
- label: s.label,
48
- color: s.color,
49
- yAxisId: s.yAxisId,
50
- stackId: s.stackId
51
- }));
52
- }, [series]);
37
+ const calculatedInset = useMemo(() => getChartInset(inset, defaultChartInset), [inset]);
53
38
  const transformedSeries = useMemo(() => {
54
- if (!stacked || !chartSeries) return chartSeries;
55
- return chartSeries.map(s => {
56
- var _s$stackId;
57
- return _extends({}, s, {
58
- stackId: (_s$stackId = s.stackId) != null ? _s$stackId : defaultStackId
59
- });
60
- });
61
- }, [chartSeries, stacked]);
62
- const seriesToRender = transformedSeries != null ? transformedSeries : chartSeries;
63
-
64
- // Keep the original series with bar-specific props for BarPlot
65
- const barSeriesToRender = useMemo(() => {
66
39
  if (!stacked || !series) return series;
67
40
  return series.map(s => {
68
- var _s$stackId2;
41
+ var _s$stackId;
69
42
  return _extends({}, s, {
70
- stackId: (_s$stackId2 = s.stackId) != null ? _s$stackId2 : defaultStackId
43
+ stackId: (_s$stackId = s.stackId) != null ? _s$stackId : defaultStackId
71
44
  });
72
45
  });
73
46
  }, [series, stacked]);
74
47
 
48
+ // Unlike other charts with custom props per series, we do not need to pick out
49
+ // the props from each series that shouldn't be passed to CartesianChart
50
+ const seriesToRender = transformedSeries != null ? transformedSeries : series;
51
+ const seriesIds = seriesToRender == null ? void 0 : seriesToRender.map(s => s.id);
52
+
75
53
  // Split axis props into config props for Chart and visual props for axis components
76
54
  const _ref2 = xAxis || {},
77
55
  {
@@ -137,11 +115,13 @@ export const BarChart = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref) =>
137
115
  borderRadius: borderRadius,
138
116
  fillOpacity: fillOpacity,
139
117
  roundBaseline: roundBaseline,
140
- seriesIds: barSeriesToRender == null ? void 0 : barSeriesToRender.map(s => s.id),
118
+ seriesIds: seriesIds,
141
119
  stackGap: stackGap,
142
120
  stackMinSize: stackMinSize,
143
121
  stroke: stroke,
144
- strokeWidth: strokeWidth
122
+ strokeWidth: strokeWidth,
123
+ transition: transition,
124
+ transitions: transitions
145
125
  }), children]
146
126
  }));
147
127
  }));
@@ -1,9 +1,9 @@
1
1
  import { memo, useId, useMemo } from 'react';
2
- import { ClipPath, Defs, G, Rect } from 'react-native-svg';
2
+ import { Group, Skia } from '@shopify/react-native-skia';
3
3
  import { useCartesianChartContext } from '../ChartProvider';
4
4
  import { defaultAxisId } from '../utils';
5
5
  import { BarStackGroup } from './BarStackGroup';
6
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
7
  /**
8
8
  * BarPlot component that handles multiple series with proper stacking coordination.
9
9
  * Groups series by stack ID + y-axis ID combination and renders BarStackGroup for each group.
@@ -23,7 +23,9 @@ export const BarPlot = /*#__PURE__*/memo(_ref => {
23
23
  BarStackComponent,
24
24
  stackGap,
25
25
  barMinSize,
26
- stackMinSize
26
+ stackMinSize,
27
+ transitions,
28
+ transition
27
29
  } = _ref;
28
30
  const {
29
31
  series: allSeries,
@@ -58,39 +60,45 @@ export const BarPlot = /*#__PURE__*/memo(_ref => {
58
60
  });
59
61
  return Array.from(groups.values());
60
62
  }, [targetSeries]);
61
- if (!drawingArea) {
63
+
64
+ // Create clip path for the entire chart area (shared by all bars)
65
+ const clipPath = useMemo(() => {
66
+ if (!drawingArea) return null;
67
+ const clip = Skia.Path.Make();
68
+ clip.addRect({
69
+ x: drawingArea.x,
70
+ y: drawingArea.y,
71
+ width: drawingArea.width,
72
+ height: drawingArea.height
73
+ });
74
+ return clip;
75
+ }, [drawingArea]);
76
+ if (!clipPath) {
62
77
  return null;
63
78
  }
64
- return /*#__PURE__*/_jsxs(_Fragment, {
65
- children: [/*#__PURE__*/_jsx(Defs, {
66
- children: /*#__PURE__*/_jsx(ClipPath, {
67
- id: clipPathId,
68
- children: /*#__PURE__*/_jsx(Rect, {
69
- height: drawingArea.height,
70
- width: drawingArea.width,
71
- x: drawingArea.x,
72
- y: drawingArea.y
73
- })
74
- })
75
- }), /*#__PURE__*/_jsx(G, {
76
- clipPath: "url(#" + clipPathId + ")",
77
- children: stackGroups.map((group, stackIndex) => /*#__PURE__*/_jsx(BarStackGroup, {
78
- BarComponent: defaultBarComponent,
79
- BarStackComponent: BarStackComponent,
80
- barMinSize: barMinSize,
81
- barPadding: barPadding,
82
- borderRadius: defaultBorderRadius,
83
- fillOpacity: defaultFillOpacity,
84
- roundBaseline: roundBaseline,
85
- series: group.series,
86
- stackGap: stackGap,
87
- stackIndex: stackIndex,
88
- stackMinSize: stackMinSize,
89
- stroke: defaultStroke,
90
- strokeWidth: defaultStrokeWidth,
91
- totalStacks: stackGroups.length,
92
- yAxisId: group.yAxisId
93
- }, group.stackId))
94
- })]
79
+
80
+ // Note: Clipping is now handled here at the BarPlot level (one clip path for all bars!)
81
+ // This is much more efficient than creating a clip path for each individual bar
82
+ return /*#__PURE__*/_jsx(Group, {
83
+ clip: clipPath,
84
+ children: stackGroups.map((group, stackIndex) => /*#__PURE__*/_jsx(BarStackGroup, {
85
+ BarComponent: defaultBarComponent,
86
+ BarStackComponent: BarStackComponent,
87
+ barMinSize: barMinSize,
88
+ barPadding: barPadding,
89
+ borderRadius: defaultBorderRadius,
90
+ fillOpacity: defaultFillOpacity,
91
+ roundBaseline: roundBaseline,
92
+ series: group.series,
93
+ stackGap: stackGap,
94
+ stackIndex: stackIndex,
95
+ stackMinSize: stackMinSize,
96
+ stroke: defaultStroke,
97
+ strokeWidth: defaultStrokeWidth,
98
+ totalStacks: stackGroups.length,
99
+ transition: transition,
100
+ transitions: transitions,
101
+ yAxisId: group.yAxisId
102
+ }, group.stackId))
95
103
  });
96
104
  });