@coinbase/cds-mobile-visualization 3.4.0-beta.9 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/CHANGELOG.md +132 -0
  2. package/dts/chart/CartesianChart.d.ts +92 -7
  3. package/dts/chart/CartesianChart.d.ts.map +1 -1
  4. package/dts/chart/ChartContextBridge.d.ts.map +1 -1
  5. package/dts/chart/ChartProvider.d.ts +3 -0
  6. package/dts/chart/ChartProvider.d.ts.map +1 -1
  7. package/dts/chart/Path.d.ts +36 -13
  8. package/dts/chart/Path.d.ts.map +1 -1
  9. package/dts/chart/PeriodSelector.d.ts +20 -5
  10. package/dts/chart/PeriodSelector.d.ts.map +1 -1
  11. package/dts/chart/area/Area.d.ts +14 -11
  12. package/dts/chart/area/Area.d.ts.map +1 -1
  13. package/dts/chart/area/AreaChart.d.ts +33 -9
  14. package/dts/chart/area/AreaChart.d.ts.map +1 -1
  15. package/dts/chart/area/DottedArea.d.ts.map +1 -1
  16. package/dts/chart/area/GradientArea.d.ts.map +1 -1
  17. package/dts/chart/area/SolidArea.d.ts.map +1 -1
  18. package/dts/chart/axis/Axis.d.ts +22 -42
  19. package/dts/chart/axis/Axis.d.ts.map +1 -1
  20. package/dts/chart/axis/XAxis.d.ts +6 -0
  21. package/dts/chart/axis/XAxis.d.ts.map +1 -1
  22. package/dts/chart/axis/YAxis.d.ts +1 -0
  23. package/dts/chart/axis/YAxis.d.ts.map +1 -1
  24. package/dts/chart/bar/Bar.d.ts +51 -51
  25. package/dts/chart/bar/Bar.d.ts.map +1 -1
  26. package/dts/chart/bar/BarChart.d.ts +56 -11
  27. package/dts/chart/bar/BarChart.d.ts.map +1 -1
  28. package/dts/chart/bar/BarPlot.d.ts +2 -1
  29. package/dts/chart/bar/BarPlot.d.ts.map +1 -1
  30. package/dts/chart/bar/BarStack.d.ts +45 -20
  31. package/dts/chart/bar/BarStack.d.ts.map +1 -1
  32. package/dts/chart/bar/BarStackGroup.d.ts +2 -1
  33. package/dts/chart/bar/BarStackGroup.d.ts.map +1 -1
  34. package/dts/chart/bar/DefaultBar.d.ts.map +1 -1
  35. package/dts/chart/bar/DefaultBarStack.d.ts.map +1 -1
  36. package/dts/chart/gradient/Gradient.d.ts +5 -0
  37. package/dts/chart/gradient/Gradient.d.ts.map +1 -1
  38. package/dts/chart/index.d.ts +1 -0
  39. package/dts/chart/index.d.ts.map +1 -1
  40. package/dts/chart/legend/DefaultLegendEntry.d.ts +5 -0
  41. package/dts/chart/legend/DefaultLegendEntry.d.ts.map +1 -0
  42. package/dts/chart/legend/DefaultLegendShape.d.ts +5 -0
  43. package/dts/chart/legend/DefaultLegendShape.d.ts.map +1 -0
  44. package/dts/chart/legend/Legend.d.ts +168 -0
  45. package/dts/chart/legend/Legend.d.ts.map +1 -0
  46. package/dts/chart/legend/index.d.ts +4 -0
  47. package/dts/chart/legend/index.d.ts.map +1 -0
  48. package/dts/chart/line/DottedLine.d.ts.map +1 -1
  49. package/dts/chart/line/Line.d.ts +23 -19
  50. package/dts/chart/line/Line.d.ts.map +1 -1
  51. package/dts/chart/line/LineChart.d.ts +26 -9
  52. package/dts/chart/line/LineChart.d.ts.map +1 -1
  53. package/dts/chart/line/ReferenceLine.d.ts +1 -0
  54. package/dts/chart/line/ReferenceLine.d.ts.map +1 -1
  55. package/dts/chart/line/SolidLine.d.ts.map +1 -1
  56. package/dts/chart/point/Point.d.ts +26 -2
  57. package/dts/chart/point/Point.d.ts.map +1 -1
  58. package/dts/chart/scrubber/DefaultScrubberBeacon.d.ts +32 -2
  59. package/dts/chart/scrubber/DefaultScrubberBeacon.d.ts.map +1 -1
  60. package/dts/chart/scrubber/DefaultScrubberLabel.d.ts +2 -1
  61. package/dts/chart/scrubber/DefaultScrubberLabel.d.ts.map +1 -1
  62. package/dts/chart/scrubber/Scrubber.d.ts +86 -17
  63. package/dts/chart/scrubber/Scrubber.d.ts.map +1 -1
  64. package/dts/chart/scrubber/ScrubberAccessibilityView.d.ts +12 -0
  65. package/dts/chart/scrubber/ScrubberAccessibilityView.d.ts.map +1 -0
  66. package/dts/chart/scrubber/ScrubberBeaconGroup.d.ts +10 -0
  67. package/dts/chart/scrubber/ScrubberBeaconGroup.d.ts.map +1 -1
  68. package/dts/chart/scrubber/ScrubberBeaconLabelGroup.d.ts +16 -1
  69. package/dts/chart/scrubber/ScrubberBeaconLabelGroup.d.ts.map +1 -1
  70. package/dts/chart/scrubber/ScrubberProvider.d.ts.map +1 -1
  71. package/dts/chart/utils/axis.d.ts +45 -10
  72. package/dts/chart/utils/axis.d.ts.map +1 -1
  73. package/dts/chart/utils/bar.d.ts +190 -0
  74. package/dts/chart/utils/bar.d.ts.map +1 -1
  75. package/dts/chart/utils/chart.d.ts +32 -0
  76. package/dts/chart/utils/chart.d.ts.map +1 -1
  77. package/dts/chart/utils/context.d.ts +21 -6
  78. package/dts/chart/utils/context.d.ts.map +1 -1
  79. package/dts/chart/utils/gradient.d.ts +3 -1
  80. package/dts/chart/utils/gradient.d.ts.map +1 -1
  81. package/dts/chart/utils/path.d.ts +26 -0
  82. package/dts/chart/utils/path.d.ts.map +1 -1
  83. package/dts/chart/utils/point.d.ts +24 -12
  84. package/dts/chart/utils/point.d.ts.map +1 -1
  85. package/dts/chart/utils/scale.d.ts +11 -0
  86. package/dts/chart/utils/scale.d.ts.map +1 -1
  87. package/dts/chart/utils/scrubber.d.ts +2 -1
  88. package/dts/chart/utils/scrubber.d.ts.map +1 -1
  89. package/dts/chart/utils/transition.d.ts +63 -22
  90. package/dts/chart/utils/transition.d.ts.map +1 -1
  91. package/dts/sparkline/Sparkline.d.ts +2 -1
  92. package/dts/sparkline/Sparkline.d.ts.map +1 -1
  93. package/dts/sparkline/SparklineArea.d.ts +2 -1
  94. package/dts/sparkline/SparklineArea.d.ts.map +1 -1
  95. package/dts/sparkline/SparklineGradient.d.ts +2 -1
  96. package/dts/sparkline/SparklineGradient.d.ts.map +1 -1
  97. package/dts/sparkline/sparkline-interactive/SparklineInteractive.d.ts +2 -1
  98. package/dts/sparkline/sparkline-interactive/SparklineInteractive.d.ts.map +1 -1
  99. package/esm/chart/CartesianChart.js +176 -82
  100. package/esm/chart/ChartContextBridge.js +14 -3
  101. package/esm/chart/ChartProvider.js +2 -2
  102. package/esm/chart/Path.js +34 -29
  103. package/esm/chart/PeriodSelector.js +5 -1
  104. package/esm/chart/__stories__/CartesianChart.stories.js +16 -80
  105. package/esm/chart/__stories__/ChartAccessibility.stories.js +721 -0
  106. package/esm/chart/__stories__/ChartTransitions.stories.js +625 -0
  107. package/esm/chart/__stories__/PeriodSelector.stories.js +99 -1
  108. package/esm/chart/area/Area.js +21 -9
  109. package/esm/chart/area/AreaChart.js +18 -13
  110. package/esm/chart/area/DottedArea.js +28 -18
  111. package/esm/chart/area/GradientArea.js +14 -7
  112. package/esm/chart/area/SolidArea.js +6 -2
  113. package/esm/chart/area/__stories__/AreaChart.stories.js +47 -5
  114. package/esm/chart/axis/Axis.js +5 -41
  115. package/esm/chart/axis/XAxis.js +116 -47
  116. package/esm/chart/axis/YAxis.js +105 -26
  117. package/esm/chart/axis/__stories__/Axis.stories.js +324 -48
  118. package/esm/chart/bar/Bar.js +17 -15
  119. package/esm/chart/bar/BarChart.js +38 -33
  120. package/esm/chart/bar/BarPlot.js +40 -45
  121. package/esm/chart/bar/BarStack.js +92 -475
  122. package/esm/chart/bar/BarStackGroup.js +37 -27
  123. package/esm/chart/bar/DefaultBar.js +27 -18
  124. package/esm/chart/bar/DefaultBarStack.js +25 -9
  125. package/esm/chart/bar/__stories__/BarChart.stories.js +728 -54
  126. package/esm/chart/gradient/Gradient.js +2 -1
  127. package/esm/chart/index.js +1 -0
  128. package/esm/chart/legend/DefaultLegendEntry.js +42 -0
  129. package/esm/chart/legend/DefaultLegendShape.js +64 -0
  130. package/esm/chart/legend/Legend.js +59 -0
  131. package/esm/chart/legend/__stories__/Legend.stories.js +574 -0
  132. package/esm/chart/legend/index.js +3 -0
  133. package/esm/chart/line/DottedLine.js +6 -2
  134. package/esm/chart/line/Line.js +42 -38
  135. package/esm/chart/line/LineChart.js +36 -12
  136. package/esm/chart/line/SolidLine.js +6 -2
  137. package/esm/chart/line/__stories__/LineChart.stories.js +236 -590
  138. package/esm/chart/line/__stories__/ReferenceLine.stories.js +95 -1
  139. package/esm/chart/point/Point.js +35 -36
  140. package/esm/chart/scrubber/DefaultScrubberBeacon.js +41 -38
  141. package/esm/chart/scrubber/DefaultScrubberLabel.js +26 -10
  142. package/esm/chart/scrubber/Scrubber.js +67 -35
  143. package/esm/chart/scrubber/ScrubberAccessibilityView.js +177 -0
  144. package/esm/chart/scrubber/ScrubberBeaconGroup.js +30 -22
  145. package/esm/chart/scrubber/ScrubberBeaconLabelGroup.js +35 -8
  146. package/esm/chart/scrubber/ScrubberProvider.js +29 -24
  147. package/esm/chart/scrubber/__stories__/Scrubber.stories.js +946 -0
  148. package/esm/chart/utils/axis.js +88 -44
  149. package/esm/chart/utils/bar.js +820 -0
  150. package/esm/chart/utils/chart.js +34 -7
  151. package/esm/chart/utils/context.js +7 -0
  152. package/esm/chart/utils/gradient.js +8 -4
  153. package/esm/chart/utils/path.js +91 -61
  154. package/esm/chart/utils/point.js +92 -39
  155. package/esm/chart/utils/scale.js +13 -2
  156. package/esm/chart/utils/scrubber.js +12 -5
  157. package/esm/chart/utils/transition.js +108 -60
  158. package/esm/sparkline/Sparkline.js +2 -1
  159. package/esm/sparkline/SparklineArea.js +2 -1
  160. package/esm/sparkline/SparklineGradient.js +2 -1
  161. package/esm/sparkline/__figma__/Sparkline.figma.js +1 -1
  162. package/esm/sparkline/sparkline-interactive/SparklineInteractive.js +2 -1
  163. package/esm/sparkline/sparkline-interactive/__figma__/SparklineInteractive.figma.js +1 -1
  164. package/esm/sparkline/sparkline-interactive-header/__figma__/SparklineInteractiveHeader.figma.js +1 -1
  165. package/esm/sparkline/sparkline-interactive-header/__stories__/SparklineInteractiveHeader.stories.js +2 -0
  166. package/package.json +5 -6
  167. package/esm/chart/__stories__/Chart.stories.js +0 -77
@@ -16,10 +16,11 @@ export const Gradient = /*#__PURE__*/memo(_ref => {
16
16
  var _gradient$axis;
17
17
  let {
18
18
  gradient,
19
+ xAxisId,
19
20
  yAxisId
20
21
  } = _ref;
21
22
  const context = useCartesianChartContext();
22
- const xScale = context.getXScale();
23
+ const xScale = context.getXScale(xAxisId);
23
24
  const yScale = context.getYScale(yAxisId);
24
25
  const axis = (_gradient$axis = gradient.axis) != null ? _gradient$axis : 'y';
25
26
  const scale = axis === 'x' ? xScale : yScale;
@@ -6,6 +6,7 @@ export * from './CartesianChart';
6
6
  export * from './ChartContextBridge';
7
7
  export * from './ChartProvider';
8
8
  export * from './gradient';
9
+ export * from './legend';
9
10
  export * from './line';
10
11
  export * from './Path';
11
12
  export * from './PeriodSelector';
@@ -0,0 +1,42 @@
1
+ const _excluded = ["label", "color", "shape", "ShapeComponent", "gap", "style", "styles", "testID"];
2
+ 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); }
3
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
4
+ import { memo } from 'react';
5
+ import { StyleSheet } from 'react-native';
6
+ import { HStack } from '@coinbase/cds-mobile/layout';
7
+ import { Text } from '@coinbase/cds-mobile/typography/Text';
8
+ import { DefaultLegendShape } from './DefaultLegendShape';
9
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
10
+ const styles = StyleSheet.create({
11
+ legendEntry: {
12
+ alignItems: 'center'
13
+ }
14
+ });
15
+ export const DefaultLegendEntry = /*#__PURE__*/memo(_ref => {
16
+ let {
17
+ label,
18
+ color,
19
+ shape,
20
+ ShapeComponent = DefaultLegendShape,
21
+ gap = 1,
22
+ style,
23
+ styles: stylesProp,
24
+ testID
25
+ } = _ref,
26
+ props = _objectWithoutPropertiesLoose(_ref, _excluded);
27
+ return /*#__PURE__*/_jsxs(HStack, _extends({
28
+ gap: gap,
29
+ style: [styles.legendEntry, style, stylesProp == null ? void 0 : stylesProp.root],
30
+ testID: testID
31
+ }, props, {
32
+ children: [/*#__PURE__*/_jsx(ShapeComponent, {
33
+ color: color,
34
+ shape: shape,
35
+ style: stylesProp == null ? void 0 : stylesProp.shape
36
+ }), typeof label === 'string' ? /*#__PURE__*/_jsx(Text, {
37
+ font: "label1",
38
+ style: stylesProp == null ? void 0 : stylesProp.label,
39
+ children: label
40
+ }) : label]
41
+ }));
42
+ });
@@ -0,0 +1,64 @@
1
+ const _excluded = ["color", "shape", "style", "testID"];
2
+ 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); }
3
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
4
+ import { memo } from 'react';
5
+ import { StyleSheet, View } from 'react-native';
6
+ import { useTheme } from '@coinbase/cds-mobile';
7
+ import { Box } from '@coinbase/cds-mobile/layout';
8
+ import { jsx as _jsx } from "react/jsx-runtime";
9
+ const styles = StyleSheet.create({
10
+ container: {
11
+ width: 10,
12
+ height: 24,
13
+ alignItems: 'center',
14
+ justifyContent: 'center'
15
+ },
16
+ pill: {
17
+ width: 6,
18
+ height: 24,
19
+ borderRadius: 3
20
+ },
21
+ circle: {
22
+ width: 10,
23
+ height: 10,
24
+ borderRadius: 5
25
+ },
26
+ square: {
27
+ width: 10,
28
+ height: 10
29
+ },
30
+ squircle: {
31
+ width: 10,
32
+ height: 10,
33
+ borderRadius: 2
34
+ }
35
+ });
36
+ const stylesByVariant = {
37
+ pill: styles.pill,
38
+ circle: styles.circle,
39
+ square: styles.square,
40
+ squircle: styles.squircle
41
+ };
42
+ const isVariantShape = shape => typeof shape === 'string' && shape in stylesByVariant;
43
+ export const DefaultLegendShape = /*#__PURE__*/memo(_ref => {
44
+ let {
45
+ color,
46
+ shape = 'circle',
47
+ style,
48
+ testID
49
+ } = _ref,
50
+ props = _objectWithoutPropertiesLoose(_ref, _excluded);
51
+ const theme = useTheme();
52
+ if (!isVariantShape(shape)) return shape;
53
+ const variantStyle = stylesByVariant[shape];
54
+ return /*#__PURE__*/_jsx(Box, _extends({
55
+ style: [styles.container, style],
56
+ testID: testID
57
+ }, props, {
58
+ children: /*#__PURE__*/_jsx(View, {
59
+ style: [variantStyle, {
60
+ backgroundColor: color != null ? color : theme.color.fgPrimary
61
+ }]
62
+ })
63
+ }));
64
+ });
@@ -0,0 +1,59 @@
1
+ const _excluded = ["flexDirection", "justifyContent", "alignItems", "flexWrap", "rowGap", "columnGap", "seriesIds", "EntryComponent", "ShapeComponent", "accessibilityLabel", "style", "styles"];
2
+ 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); }
3
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
4
+ import { forwardRef, memo, useMemo } from 'react';
5
+ import { Box } from '@coinbase/cds-mobile/layout';
6
+ import { useCartesianChartContext } from '../ChartProvider';
7
+ import { DefaultLegendEntry } from './DefaultLegendEntry';
8
+ import { DefaultLegendShape } from './DefaultLegendShape';
9
+ import { jsx as _jsx } from "react/jsx-runtime";
10
+ export const Legend = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref) => {
11
+ let {
12
+ flexDirection = 'row',
13
+ justifyContent = 'center',
14
+ alignItems = flexDirection === 'row' ? 'center' : 'flex-start',
15
+ flexWrap = 'wrap',
16
+ rowGap = 0.75,
17
+ columnGap = 2,
18
+ seriesIds,
19
+ EntryComponent = DefaultLegendEntry,
20
+ ShapeComponent = DefaultLegendShape,
21
+ accessibilityLabel = 'Legend',
22
+ style,
23
+ styles
24
+ } = _ref,
25
+ props = _objectWithoutPropertiesLoose(_ref, _excluded);
26
+ const {
27
+ series
28
+ } = useCartesianChartContext();
29
+ const filteredSeries = useMemo(() => {
30
+ if (seriesIds === undefined) return series.filter(s => s.label !== undefined);
31
+ return series.filter(s => seriesIds.includes(s.id) && s.label !== undefined);
32
+ }, [series, seriesIds]);
33
+ if (filteredSeries.length === 0) return;
34
+ return /*#__PURE__*/_jsx(Box, _extends({
35
+ ref: ref,
36
+ accessibilityLabel: accessibilityLabel,
37
+ accessibilityRole: "summary",
38
+ alignItems: alignItems,
39
+ columnGap: columnGap,
40
+ flexDirection: flexDirection,
41
+ flexWrap: flexWrap,
42
+ justifyContent: justifyContent,
43
+ rowGap: rowGap,
44
+ style: [style, styles == null ? void 0 : styles.root]
45
+ }, props, {
46
+ children: filteredSeries.map(s => /*#__PURE__*/_jsx(EntryComponent, {
47
+ ShapeComponent: ShapeComponent,
48
+ color: s.color,
49
+ label: s.label,
50
+ seriesId: s.id,
51
+ shape: s.legendShape,
52
+ styles: {
53
+ root: styles == null ? void 0 : styles.entry,
54
+ shape: styles == null ? void 0 : styles.entryShape,
55
+ label: styles == null ? void 0 : styles.entryLabel
56
+ }
57
+ }, s.id))
58
+ }));
59
+ }));