@coinbase/cds-mobile-visualization 3.8.1 → 4.0.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 (303) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dts/chart/index.d.ts +1 -15
  3. package/dts/chart/index.d.ts.map +1 -1
  4. package/dts/index.d.ts.map +1 -1
  5. package/dts/sparkline/index.d.ts +1 -5
  6. package/dts/sparkline/index.d.ts.map +1 -1
  7. package/esm/chart/index.js +1 -17
  8. package/esm/index.js +1 -3
  9. package/esm/sparkline/index.js +1 -5
  10. package/package.json +26 -20
  11. package/dts/chart/CartesianChart.d.ts +0 -206
  12. package/dts/chart/CartesianChart.d.ts.map +0 -1
  13. package/dts/chart/ChartContextBridge.d.ts +0 -28
  14. package/dts/chart/ChartContextBridge.d.ts.map +0 -1
  15. package/dts/chart/ChartProvider.d.ts +0 -9
  16. package/dts/chart/ChartProvider.d.ts.map +0 -1
  17. package/dts/chart/Path.d.ts +0 -121
  18. package/dts/chart/Path.d.ts.map +0 -1
  19. package/dts/chart/PeriodSelector.d.ts +0 -100
  20. package/dts/chart/PeriodSelector.d.ts.map +0 -1
  21. package/dts/chart/area/Area.d.ts +0 -83
  22. package/dts/chart/area/Area.d.ts.map +0 -1
  23. package/dts/chart/area/AreaChart.d.ts +0 -155
  24. package/dts/chart/area/AreaChart.d.ts.map +0 -1
  25. package/dts/chart/area/DottedArea.d.ts +0 -46
  26. package/dts/chart/area/DottedArea.d.ts.map +0 -1
  27. package/dts/chart/area/GradientArea.d.ts +0 -36
  28. package/dts/chart/area/GradientArea.d.ts.map +0 -1
  29. package/dts/chart/area/SolidArea.d.ts +0 -23
  30. package/dts/chart/area/SolidArea.d.ts.map +0 -1
  31. package/dts/chart/area/index.d.ts +0 -6
  32. package/dts/chart/area/index.d.ts.map +0 -1
  33. package/dts/chart/axis/Axis.d.ts +0 -174
  34. package/dts/chart/axis/Axis.d.ts.map +0 -1
  35. package/dts/chart/axis/DefaultAxisTickLabel.d.ts +0 -8
  36. package/dts/chart/axis/DefaultAxisTickLabel.d.ts.map +0 -1
  37. package/dts/chart/axis/XAxis.d.ts +0 -22
  38. package/dts/chart/axis/XAxis.d.ts.map +0 -1
  39. package/dts/chart/axis/YAxis.d.ts +0 -22
  40. package/dts/chart/axis/YAxis.d.ts.map +0 -1
  41. package/dts/chart/axis/index.d.ts +0 -5
  42. package/dts/chart/axis/index.d.ts.map +0 -1
  43. package/dts/chart/bar/Bar.d.ts +0 -100
  44. package/dts/chart/bar/Bar.d.ts.map +0 -1
  45. package/dts/chart/bar/BarChart.d.ts +0 -158
  46. package/dts/chart/bar/BarChart.d.ts.map +0 -1
  47. package/dts/chart/bar/BarPlot.d.ts +0 -31
  48. package/dts/chart/bar/BarPlot.d.ts.map +0 -1
  49. package/dts/chart/bar/BarStack.d.ts +0 -127
  50. package/dts/chart/bar/BarStack.d.ts.map +0 -1
  51. package/dts/chart/bar/BarStackGroup.d.ts +0 -37
  52. package/dts/chart/bar/BarStackGroup.d.ts.map +0 -1
  53. package/dts/chart/bar/DefaultBar.d.ts +0 -7
  54. package/dts/chart/bar/DefaultBar.d.ts.map +0 -1
  55. package/dts/chart/bar/DefaultBarStack.d.ts +0 -7
  56. package/dts/chart/bar/DefaultBarStack.d.ts.map +0 -1
  57. package/dts/chart/bar/PercentageBarChart.d.ts +0 -106
  58. package/dts/chart/bar/PercentageBarChart.d.ts.map +0 -1
  59. package/dts/chart/bar/index.d.ts +0 -9
  60. package/dts/chart/bar/index.d.ts.map +0 -1
  61. package/dts/chart/gradient/Gradient.d.ts +0 -41
  62. package/dts/chart/gradient/Gradient.d.ts.map +0 -1
  63. package/dts/chart/gradient/index.d.ts +0 -2
  64. package/dts/chart/gradient/index.d.ts.map +0 -1
  65. package/dts/chart/legend/DefaultLegendEntry.d.ts +0 -5
  66. package/dts/chart/legend/DefaultLegendEntry.d.ts.map +0 -1
  67. package/dts/chart/legend/DefaultLegendShape.d.ts +0 -5
  68. package/dts/chart/legend/DefaultLegendShape.d.ts.map +0 -1
  69. package/dts/chart/legend/Legend.d.ts +0 -168
  70. package/dts/chart/legend/Legend.d.ts.map +0 -1
  71. package/dts/chart/legend/index.d.ts +0 -4
  72. package/dts/chart/legend/index.d.ts.map +0 -1
  73. package/dts/chart/line/DefaultReferenceLineLabel.d.ts +0 -9
  74. package/dts/chart/line/DefaultReferenceLineLabel.d.ts.map +0 -1
  75. package/dts/chart/line/DottedLine.d.ts +0 -20
  76. package/dts/chart/line/DottedLine.d.ts.map +0 -1
  77. package/dts/chart/line/Line.d.ts +0 -122
  78. package/dts/chart/line/Line.d.ts.map +0 -1
  79. package/dts/chart/line/LineChart.d.ts +0 -135
  80. package/dts/chart/line/LineChart.d.ts.map +0 -1
  81. package/dts/chart/line/ReferenceLine.d.ts +0 -140
  82. package/dts/chart/line/ReferenceLine.d.ts.map +0 -1
  83. package/dts/chart/line/SolidLine.d.ts +0 -15
  84. package/dts/chart/line/SolidLine.d.ts.map +0 -1
  85. package/dts/chart/line/index.d.ts +0 -7
  86. package/dts/chart/line/index.d.ts.map +0 -1
  87. package/dts/chart/point/DefaultPointLabel.d.ts +0 -10
  88. package/dts/chart/point/DefaultPointLabel.d.ts.map +0 -1
  89. package/dts/chart/point/Point.d.ts +0 -144
  90. package/dts/chart/point/Point.d.ts.map +0 -1
  91. package/dts/chart/point/index.d.ts +0 -3
  92. package/dts/chart/point/index.d.ts.map +0 -1
  93. package/dts/chart/scrubber/DefaultScrubberBeacon.d.ts +0 -38
  94. package/dts/chart/scrubber/DefaultScrubberBeacon.d.ts.map +0 -1
  95. package/dts/chart/scrubber/DefaultScrubberBeaconLabel.d.ts +0 -12
  96. package/dts/chart/scrubber/DefaultScrubberBeaconLabel.d.ts.map +0 -1
  97. package/dts/chart/scrubber/DefaultScrubberLabel.d.ts +0 -12
  98. package/dts/chart/scrubber/DefaultScrubberLabel.d.ts.map +0 -1
  99. package/dts/chart/scrubber/Scrubber.d.ts +0 -302
  100. package/dts/chart/scrubber/Scrubber.d.ts.map +0 -1
  101. package/dts/chart/scrubber/ScrubberAccessibilityView.d.ts +0 -12
  102. package/dts/chart/scrubber/ScrubberAccessibilityView.d.ts.map +0 -1
  103. package/dts/chart/scrubber/ScrubberBeaconGroup.d.ts +0 -54
  104. package/dts/chart/scrubber/ScrubberBeaconGroup.d.ts.map +0 -1
  105. package/dts/chart/scrubber/ScrubberBeaconLabelGroup.d.ts +0 -46
  106. package/dts/chart/scrubber/ScrubberBeaconLabelGroup.d.ts.map +0 -1
  107. package/dts/chart/scrubber/ScrubberProvider.d.ts +0 -20
  108. package/dts/chart/scrubber/ScrubberProvider.d.ts.map +0 -1
  109. package/dts/chart/scrubber/index.d.ts +0 -5
  110. package/dts/chart/scrubber/index.d.ts.map +0 -1
  111. package/dts/chart/text/ChartText.d.ts +0 -164
  112. package/dts/chart/text/ChartText.d.ts.map +0 -1
  113. package/dts/chart/text/ChartTextGroup.d.ts +0 -61
  114. package/dts/chart/text/ChartTextGroup.d.ts.map +0 -1
  115. package/dts/chart/text/index.d.ts +0 -3
  116. package/dts/chart/text/index.d.ts.map +0 -1
  117. package/dts/chart/utils/axis.d.ts +0 -387
  118. package/dts/chart/utils/axis.d.ts.map +0 -1
  119. package/dts/chart/utils/bar.d.ts +0 -225
  120. package/dts/chart/utils/bar.d.ts.map +0 -1
  121. package/dts/chart/utils/chart.d.ts +0 -165
  122. package/dts/chart/utils/chart.d.ts.map +0 -1
  123. package/dts/chart/utils/context.d.ts +0 -131
  124. package/dts/chart/utils/context.d.ts.map +0 -1
  125. package/dts/chart/utils/gradient.d.ts +0 -129
  126. package/dts/chart/utils/gradient.d.ts.map +0 -1
  127. package/dts/chart/utils/index.d.ts +0 -11
  128. package/dts/chart/utils/index.d.ts.map +0 -1
  129. package/dts/chart/utils/path.d.ts +0 -186
  130. package/dts/chart/utils/path.d.ts.map +0 -1
  131. package/dts/chart/utils/point.d.ts +0 -146
  132. package/dts/chart/utils/point.d.ts.map +0 -1
  133. package/dts/chart/utils/scale.d.ts +0 -145
  134. package/dts/chart/utils/scale.d.ts.map +0 -1
  135. package/dts/chart/utils/scrubber.d.ts +0 -40
  136. package/dts/chart/utils/scrubber.d.ts.map +0 -1
  137. package/dts/chart/utils/transition.d.ts +0 -181
  138. package/dts/chart/utils/transition.d.ts.map +0 -1
  139. package/dts/sparkline/Counter.d.ts +0 -8
  140. package/dts/sparkline/Counter.d.ts.map +0 -1
  141. package/dts/sparkline/Sparkline.d.ts +0 -74
  142. package/dts/sparkline/Sparkline.d.ts.map +0 -1
  143. package/dts/sparkline/SparklineArea.d.ts +0 -15
  144. package/dts/sparkline/SparklineArea.d.ts.map +0 -1
  145. package/dts/sparkline/SparklineAreaPattern.d.ts +0 -14
  146. package/dts/sparkline/SparklineAreaPattern.d.ts.map +0 -1
  147. package/dts/sparkline/SparklineGradient.d.ts +0 -24
  148. package/dts/sparkline/SparklineGradient.d.ts.map +0 -1
  149. package/dts/sparkline/__figma__/Sparkline.figma.d.ts +0 -2
  150. package/dts/sparkline/__figma__/Sparkline.figma.d.ts.map +0 -1
  151. package/dts/sparkline/generateSparklineWithId.d.ts +0 -11
  152. package/dts/sparkline/generateSparklineWithId.d.ts.map +0 -1
  153. package/dts/sparkline/sparkline-interactive/SparklineAccessibleView.d.ts +0 -23
  154. package/dts/sparkline/sparkline-interactive/SparklineAccessibleView.d.ts.map +0 -1
  155. package/dts/sparkline/sparkline-interactive/SparklineInteractive.d.ts +0 -185
  156. package/dts/sparkline/sparkline-interactive/SparklineInteractive.d.ts.map +0 -1
  157. package/dts/sparkline/sparkline-interactive/SparklineInteractiveAnimatedPath.d.ts +0 -25
  158. package/dts/sparkline/sparkline-interactive/SparklineInteractiveAnimatedPath.d.ts.map +0 -1
  159. package/dts/sparkline/sparkline-interactive/SparklineInteractiveHoverDate.d.ts +0 -28
  160. package/dts/sparkline/sparkline-interactive/SparklineInteractiveHoverDate.d.ts.map +0 -1
  161. package/dts/sparkline/sparkline-interactive/SparklineInteractiveLineVertical.d.ts +0 -13
  162. package/dts/sparkline/sparkline-interactive/SparklineInteractiveLineVertical.d.ts.map +0 -1
  163. package/dts/sparkline/sparkline-interactive/SparklineInteractiveMarkerDates.d.ts +0 -17
  164. package/dts/sparkline/sparkline-interactive/SparklineInteractiveMarkerDates.d.ts.map +0 -1
  165. package/dts/sparkline/sparkline-interactive/SparklineInteractiveMinMax.d.ts +0 -11
  166. package/dts/sparkline/sparkline-interactive/SparklineInteractiveMinMax.d.ts.map +0 -1
  167. package/dts/sparkline/sparkline-interactive/SparklineInteractivePanGestureHandler.d.ts +0 -26
  168. package/dts/sparkline/sparkline-interactive/SparklineInteractivePanGestureHandler.d.ts.map +0 -1
  169. package/dts/sparkline/sparkline-interactive/SparklineInteractivePaths.d.ts +0 -25
  170. package/dts/sparkline/sparkline-interactive/SparklineInteractivePaths.d.ts.map +0 -1
  171. package/dts/sparkline/sparkline-interactive/SparklineInteractivePeriodSelector.d.ts +0 -25
  172. package/dts/sparkline/sparkline-interactive/SparklineInteractivePeriodSelector.d.ts.map +0 -1
  173. package/dts/sparkline/sparkline-interactive/SparklineInteractiveProvider.d.ts +0 -39
  174. package/dts/sparkline/sparkline-interactive/SparklineInteractiveProvider.d.ts.map +0 -1
  175. package/dts/sparkline/sparkline-interactive/SparklineInteractiveTimeseriesPaths.d.ts +0 -31
  176. package/dts/sparkline/sparkline-interactive/SparklineInteractiveTimeseriesPaths.d.ts.map +0 -1
  177. package/dts/sparkline/sparkline-interactive/__figma__/SparklineInteractive.figma.d.ts +0 -2
  178. package/dts/sparkline/sparkline-interactive/__figma__/SparklineInteractive.figma.d.ts.map +0 -1
  179. package/dts/sparkline/sparkline-interactive/useInterruptiblePathAnimation.d.ts +0 -13
  180. package/dts/sparkline/sparkline-interactive/useInterruptiblePathAnimation.d.ts.map +0 -1
  181. package/dts/sparkline/sparkline-interactive/useMinMaxTransform.d.ts +0 -16
  182. package/dts/sparkline/sparkline-interactive/useMinMaxTransform.d.ts.map +0 -1
  183. package/dts/sparkline/sparkline-interactive/useOpacityAnimation.d.ts +0 -6
  184. package/dts/sparkline/sparkline-interactive/useOpacityAnimation.d.ts.map +0 -1
  185. package/dts/sparkline/sparkline-interactive/useSparklineInteractiveConstants.d.ts +0 -22
  186. package/dts/sparkline/sparkline-interactive/useSparklineInteractiveConstants.d.ts.map +0 -1
  187. package/dts/sparkline/sparkline-interactive/useSparklineInteractiveLineStyles.d.ts +0 -34
  188. package/dts/sparkline/sparkline-interactive/useSparklineInteractiveLineStyles.d.ts.map +0 -1
  189. package/dts/sparkline/sparkline-interactive-header/SparklineInteractiveHeader.d.ts +0 -118
  190. package/dts/sparkline/sparkline-interactive-header/SparklineInteractiveHeader.d.ts.map +0 -1
  191. package/dts/sparkline/sparkline-interactive-header/__figma__/SparklineInteractiveHeader.figma.d.ts +0 -2
  192. package/dts/sparkline/sparkline-interactive-header/__figma__/SparklineInteractiveHeader.figma.d.ts.map +0 -1
  193. package/dts/sparkline/sparkline-interactive-header/useSparklineInteractiveHeaderStyles.d.ts +0 -29
  194. package/dts/sparkline/sparkline-interactive-header/useSparklineInteractiveHeaderStyles.d.ts.map +0 -1
  195. package/esm/chart/CartesianChart.js +0 -431
  196. package/esm/chart/ChartContextBridge.js +0 -159
  197. package/esm/chart/ChartProvider.js +0 -10
  198. package/esm/chart/Path.js +0 -255
  199. package/esm/chart/PeriodSelector.js +0 -139
  200. package/esm/chart/__stories__/CartesianChart.stories.js +0 -659
  201. package/esm/chart/__stories__/ChartAccessibility.stories.js +0 -721
  202. package/esm/chart/__stories__/ChartTransitions.stories.js +0 -693
  203. package/esm/chart/__stories__/PeriodSelector.stories.js +0 -420
  204. package/esm/chart/area/Area.js +0 -85
  205. package/esm/chart/area/AreaChart.js +0 -152
  206. package/esm/chart/area/DottedArea.js +0 -92
  207. package/esm/chart/area/GradientArea.js +0 -63
  208. package/esm/chart/area/SolidArea.js +0 -45
  209. package/esm/chart/area/__stories__/AreaChart.stories.js +0 -370
  210. package/esm/chart/area/index.js +0 -7
  211. package/esm/chart/axis/Axis.js +0 -9
  212. package/esm/chart/axis/DefaultAxisTickLabel.js +0 -11
  213. package/esm/chart/axis/XAxis.js +0 -256
  214. package/esm/chart/axis/YAxis.js +0 -255
  215. package/esm/chart/axis/__stories__/Axis.stories.js +0 -552
  216. package/esm/chart/axis/index.js +0 -6
  217. package/esm/chart/bar/Bar.js +0 -71
  218. package/esm/chart/bar/BarChart.js +0 -122
  219. package/esm/chart/bar/BarPlot.js +0 -106
  220. package/esm/chart/bar/BarStack.js +0 -173
  221. package/esm/chart/bar/BarStackGroup.js +0 -89
  222. package/esm/chart/bar/DefaultBar.js +0 -79
  223. package/esm/chart/bar/DefaultBarStack.js +0 -68
  224. package/esm/chart/bar/PercentageBarChart.js +0 -99
  225. package/esm/chart/bar/__stories__/BarChart.stories.js +0 -1417
  226. package/esm/chart/bar/__stories__/PercentageBarChart.stories.js +0 -833
  227. package/esm/chart/bar/index.js +0 -10
  228. package/esm/chart/gradient/Gradient.js +0 -156
  229. package/esm/chart/gradient/index.js +0 -1
  230. package/esm/chart/legend/DefaultLegendEntry.js +0 -42
  231. package/esm/chart/legend/DefaultLegendShape.js +0 -64
  232. package/esm/chart/legend/Legend.js +0 -59
  233. package/esm/chart/legend/__stories__/Legend.stories.js +0 -574
  234. package/esm/chart/legend/index.js +0 -3
  235. package/esm/chart/line/DefaultReferenceLineLabel.js +0 -66
  236. package/esm/chart/line/DottedLine.js +0 -57
  237. package/esm/chart/line/Line.js +0 -180
  238. package/esm/chart/line/LineChart.js +0 -149
  239. package/esm/chart/line/ReferenceLine.js +0 -132
  240. package/esm/chart/line/SolidLine.js +0 -53
  241. package/esm/chart/line/__stories__/LineChart.stories.js +0 -2018
  242. package/esm/chart/line/__stories__/ReferenceLine.stories.js +0 -226
  243. package/esm/chart/line/index.js +0 -8
  244. package/esm/chart/point/DefaultPointLabel.js +0 -39
  245. package/esm/chart/point/Point.js +0 -187
  246. package/esm/chart/point/index.js +0 -2
  247. package/esm/chart/scrubber/DefaultScrubberBeacon.js +0 -182
  248. package/esm/chart/scrubber/DefaultScrubberBeaconLabel.js +0 -43
  249. package/esm/chart/scrubber/DefaultScrubberLabel.js +0 -44
  250. package/esm/chart/scrubber/Scrubber.js +0 -198
  251. package/esm/chart/scrubber/ScrubberAccessibilityView.js +0 -177
  252. package/esm/chart/scrubber/ScrubberBeaconGroup.js +0 -169
  253. package/esm/chart/scrubber/ScrubberBeaconLabelGroup.js +0 -212
  254. package/esm/chart/scrubber/ScrubberProvider.js +0 -140
  255. package/esm/chart/scrubber/__stories__/Scrubber.stories.js +0 -946
  256. package/esm/chart/scrubber/index.js +0 -4
  257. package/esm/chart/text/ChartText.js +0 -305
  258. package/esm/chart/text/ChartTextGroup.js +0 -211
  259. package/esm/chart/text/index.js +0 -4
  260. package/esm/chart/utils/axis.js +0 -664
  261. package/esm/chart/utils/bar.js +0 -906
  262. package/esm/chart/utils/chart.js +0 -329
  263. package/esm/chart/utils/context.js +0 -22
  264. package/esm/chart/utils/gradient.js +0 -319
  265. package/esm/chart/utils/index.js +0 -12
  266. package/esm/chart/utils/path.js +0 -304
  267. package/esm/chart/utils/point.js +0 -282
  268. package/esm/chart/utils/scale.js +0 -288
  269. package/esm/chart/utils/scrubber.js +0 -146
  270. package/esm/chart/utils/transition.js +0 -241
  271. package/esm/sparkline/Counter.js +0 -45
  272. package/esm/sparkline/Sparkline.js +0 -165
  273. package/esm/sparkline/SparklineArea.js +0 -20
  274. package/esm/sparkline/SparklineAreaPattern.js +0 -38
  275. package/esm/sparkline/SparklineGradient.js +0 -77
  276. package/esm/sparkline/__figma__/Sparkline.figma.js +0 -22
  277. package/esm/sparkline/__stories__/Sparkline.stories.js +0 -124
  278. package/esm/sparkline/__stories__/SparklineGradient.stories.js +0 -126
  279. package/esm/sparkline/generateSparklineWithId.js +0 -7
  280. package/esm/sparkline/sparkline-interactive/SparklineAccessibleView.js +0 -75
  281. package/esm/sparkline/sparkline-interactive/SparklineInteractive.js +0 -308
  282. package/esm/sparkline/sparkline-interactive/SparklineInteractiveAnimatedPath.js +0 -116
  283. package/esm/sparkline/sparkline-interactive/SparklineInteractiveHoverDate.js +0 -131
  284. package/esm/sparkline/sparkline-interactive/SparklineInteractiveLineVertical.js +0 -99
  285. package/esm/sparkline/sparkline-interactive/SparklineInteractiveMarkerDates.js +0 -82
  286. package/esm/sparkline/sparkline-interactive/SparklineInteractiveMinMax.js +0 -103
  287. package/esm/sparkline/sparkline-interactive/SparklineInteractivePanGestureHandler.js +0 -104
  288. package/esm/sparkline/sparkline-interactive/SparklineInteractivePaths.js +0 -57
  289. package/esm/sparkline/sparkline-interactive/SparklineInteractivePeriodSelector.js +0 -124
  290. package/esm/sparkline/sparkline-interactive/SparklineInteractiveProvider.js +0 -80
  291. package/esm/sparkline/sparkline-interactive/SparklineInteractiveTimeseriesPaths.js +0 -109
  292. package/esm/sparkline/sparkline-interactive/__figma__/SparklineInteractive.figma.js +0 -85
  293. package/esm/sparkline/sparkline-interactive/__stories__/SparklineInteractive.stories.js +0 -526
  294. package/esm/sparkline/sparkline-interactive/useInterruptiblePathAnimation.js +0 -58
  295. package/esm/sparkline/sparkline-interactive/useInterruptiblePathAnimation.test.disable.js +0 -37
  296. package/esm/sparkline/sparkline-interactive/useMinMaxTransform.js +0 -56
  297. package/esm/sparkline/sparkline-interactive/useOpacityAnimation.js +0 -23
  298. package/esm/sparkline/sparkline-interactive/useSparklineInteractiveConstants.js +0 -47
  299. package/esm/sparkline/sparkline-interactive/useSparklineInteractiveLineStyles.js +0 -34
  300. package/esm/sparkline/sparkline-interactive-header/SparklineInteractiveHeader.js +0 -233
  301. package/esm/sparkline/sparkline-interactive-header/__figma__/SparklineInteractiveHeader.figma.js +0 -104
  302. package/esm/sparkline/sparkline-interactive-header/__stories__/SparklineInteractiveHeader.stories.js +0 -565
  303. package/esm/sparkline/sparkline-interactive-header/useSparklineInteractiveHeaderStyles.js +0 -117
@@ -1,565 +0,0 @@
1
- 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); }
2
- import React, { useCallback, useMemo, useRef, useState } from 'react';
3
- import { TextInput } from 'react-native';
4
- import { sparklineInteractiveData } from '@coinbase/cds-common/internal/visualizations/SparklineInteractiveData';
5
- import { IconButton } from '@coinbase/cds-mobile/buttons';
6
- import { Example, ExampleScreen } from '@coinbase/cds-mobile/examples/ExampleScreen';
7
- import { Icon } from '@coinbase/cds-mobile/icons';
8
- import { Box, HStack } from '@coinbase/cds-mobile/layout';
9
- import { Text } from '@coinbase/cds-mobile/typography';
10
- import { SparklineInteractive } from '../../sparkline-interactive/SparklineInteractive';
11
- import { SparklineInteractiveHeader } from '../SparklineInteractiveHeader';
12
- import { useSparklineInteractiveHeaderStyles } from '../useSparklineInteractiveHeaderStyles';
13
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
- const DEFAULT_PERIOD = 'day';
15
- const periods = [{
16
- label: '1H',
17
- value: 'hour'
18
- }, {
19
- label: '1D',
20
- value: 'day'
21
- }, {
22
- label: '1W',
23
- value: 'week'
24
- }, {
25
- label: '1M',
26
- value: 'month'
27
- }, {
28
- label: '1Y',
29
- value: 'year'
30
- }, {
31
- label: 'All',
32
- value: 'all'
33
- }];
34
- const periodsAlt = [{
35
- label: '1 Std.',
36
- value: 'hour'
37
- }, {
38
- label: '1 Tag',
39
- value: 'day'
40
- }, {
41
- label: '1 Wo.',
42
- value: 'week'
43
- }, {
44
- label: '1 Mon.',
45
- value: 'month'
46
- }, {
47
- label: '1 Jahr',
48
- value: 'year'
49
- }, {
50
- label: 'All',
51
- value: 'all'
52
- }];
53
- const subsetOfPeriods = [{
54
- label: '1D',
55
- value: 'day'
56
- }, {
57
- label: '1M',
58
- value: 'month'
59
- }, {
60
- label: '1Y',
61
- value: 'year'
62
- }];
63
- function numToLocaleString(num) {
64
- return num.toLocaleString('en-US', {
65
- maximumFractionDigits: 2
66
- });
67
- }
68
- const getFormattingConfigForPeriod = period => {
69
- switch (period) {
70
- case 'hour':
71
- case 'day':
72
- return {
73
- hour: 'numeric',
74
- minute: 'numeric'
75
- };
76
- case 'week':
77
- case 'month':
78
- return {
79
- month: 'numeric',
80
- day: 'numeric'
81
- };
82
- case 'year':
83
- case 'all':
84
- return {
85
- month: 'numeric',
86
- year: 'numeric'
87
- };
88
- }
89
- };
90
- const getDateHoverOptions = period => {
91
- switch (period) {
92
- case 'hour':
93
- case 'day':
94
- case 'week':
95
- case 'month':
96
- return {
97
- weekday: 'short',
98
- month: 'short',
99
- day: 'numeric',
100
- hour: 'numeric',
101
- minute: 'numeric'
102
- };
103
- default:
104
- return {
105
- weekday: 'short',
106
- year: 'numeric',
107
- month: 'short',
108
- day: 'numeric'
109
- };
110
- }
111
- };
112
- const generateSubHead = (point, period, sparklineInteractiveData) => {
113
- const data = sparklineInteractiveData[period];
114
- const firstPoint = data[0];
115
- const increase = point.value > firstPoint.value;
116
- return {
117
- percent: numToLocaleString(Math.abs((point.value - firstPoint.value) / firstPoint.value) * 100) + "%",
118
- sign: increase ? 'upwardTrend' : 'downwardTrend',
119
- variant: increase ? 'positive' : 'negative',
120
- accessibilityLabel: "" + (increase ? 'up' : 'down'),
121
- priceChange: "$" + numToLocaleString(Math.abs(point.value - firstPoint.value))
122
- };
123
- };
124
- const SparklineInteractiveBuild = /*#__PURE__*/React.memo(props => {
125
- const formatDateWithConfig = useCallback((value, period) => {
126
- const config = getFormattingConfigForPeriod(period);
127
- return value.toLocaleString('en-US', _extends({}, config));
128
- }, []);
129
- const formatHoverDate = useCallback((date, period) => {
130
- return date.toLocaleString('en-US', _extends({}, getDateHoverOptions(period)));
131
- }, []);
132
- const formatMinMaxLabel = useCallback(amount => {
133
- return "$" + numToLocaleString(parseInt(amount, 10));
134
- }, []);
135
- return /*#__PURE__*/_jsx(SparklineInteractive, _extends({
136
- disableScrubbing: !__DEV__
137
- }, props, {
138
- defaultPeriod: props.defaultPeriod || DEFAULT_PERIOD,
139
- formatDate: formatDateWithConfig,
140
- formatHoverDate: !props.hideHoverDate ? formatHoverDate : undefined,
141
- formatMinMaxLabel: formatMinMaxLabel,
142
- periods: periods,
143
- strokeColor: props.strokeColor
144
- }));
145
- });
146
- function handlePress() {
147
- // do nothing
148
- }
149
- const HeaderLabel = () => {
150
- return /*#__PURE__*/_jsxs(HStack, {
151
- alignItems: "center",
152
- gap: 1,
153
- paddingBottom: 0,
154
- children: [/*#__PURE__*/_jsx(Icon, {
155
- active: true,
156
- name: "wallet",
157
- size: "s"
158
- }), /*#__PURE__*/_jsx(Text, {
159
- font: "title3",
160
- children: "CustomHeader"
161
- })]
162
- });
163
- };
164
- const SparklineInteractiveWithHeaderBuild = /*#__PURE__*/React.memo(props => {
165
- var _props$defaultPeriod;
166
- const {
167
- data: sparklineData,
168
- trailing,
169
- labelNode,
170
- compact
171
- } = props;
172
- const sparklineInteractiveData = sparklineData;
173
- const headerRef = useRef(null);
174
- const [currentPeriod, setCurrentPeriod] = useState((_props$defaultPeriod = props.defaultPeriod) != null ? _props$defaultPeriod : DEFAULT_PERIOD);
175
- const data = sparklineInteractiveData[currentPeriod];
176
- const lastPoint = data[data.length - 1];
177
- const handleScrub = useCallback(_ref => {
178
- var _headerRef$current;
179
- let {
180
- point,
181
- period
182
- } = _ref;
183
- (_headerRef$current = headerRef.current) == null || _headerRef$current.update({
184
- title: "$" + point.value.toLocaleString('en-US'),
185
- subHead: generateSubHead(point, period, sparklineInteractiveData)
186
- });
187
- }, [sparklineInteractiveData]);
188
- const handleScrubEnd = useCallback(() => {
189
- var _headerRef$current2;
190
- (_headerRef$current2 = headerRef.current) == null || _headerRef$current2.update({
191
- title: "$" + numToLocaleString(lastPoint.value),
192
- subHead: generateSubHead(lastPoint, currentPeriod, sparklineInteractiveData)
193
- });
194
- }, [currentPeriod, sparklineInteractiveData, lastPoint]);
195
- const handleOnPeriodChanged = useCallback(period => {
196
- var _headerRef$current3;
197
- setCurrentPeriod(period);
198
- const newData = sparklineInteractiveData[period];
199
- const newLastPoint = newData[newData.length - 1];
200
- (_headerRef$current3 = headerRef.current) == null || _headerRef$current3.update({
201
- title: "$" + numToLocaleString(newLastPoint.value),
202
- subHead: generateSubHead(newLastPoint, period, sparklineInteractiveData)
203
- });
204
- }, [sparklineInteractiveData]);
205
- const header = /*#__PURE__*/_jsx(SparklineInteractiveHeader, {
206
- ref: headerRef,
207
- compact: compact,
208
- defaultLabel: labelNode ? 'CustomHeader' : 'Bitcoin Price',
209
- defaultSubHead: generateSubHead(lastPoint, currentPeriod, sparklineInteractiveData),
210
- defaultTitle: "$" + numToLocaleString(lastPoint.value),
211
- labelNode: labelNode,
212
- trailing: trailing
213
- });
214
- return /*#__PURE__*/_jsx(SparklineInteractiveBuild, _extends({}, props, {
215
- headerNode: header,
216
- onPeriodChanged: handleOnPeriodChanged,
217
- onScrub: handleScrub,
218
- onScrubEnd: handleScrubEnd
219
- }));
220
- });
221
- const SparklineInteractiveWithAltHeader = /*#__PURE__*/React.memo(props => {
222
- var _props$defaultPeriod2;
223
- const {
224
- data: sparklineData,
225
- trailing,
226
- labelNode,
227
- compact
228
- } = props;
229
- const sparklineInteractiveData = sparklineData;
230
- const headerRef = useRef(null);
231
- const [currentPeriod, setCurrentPeriod] = useState((_props$defaultPeriod2 = props.defaultPeriod) != null ? _props$defaultPeriod2 : DEFAULT_PERIOD);
232
- const data = sparklineInteractiveData[currentPeriod];
233
- const lastPoint = data[data.length - 1];
234
- const handleScrub = useCallback(_ref2 => {
235
- var _headerRef$current4;
236
- let {
237
- point,
238
- period
239
- } = _ref2;
240
- (_headerRef$current4 = headerRef.current) == null || _headerRef$current4.update({
241
- title: "$" + point.value.toLocaleString('en-US'),
242
- subHead: generateSubHead(point, period, sparklineInteractiveData)
243
- });
244
- }, [sparklineInteractiveData]);
245
- const handleScrubEnd = useCallback(() => {
246
- var _headerRef$current5;
247
- (_headerRef$current5 = headerRef.current) == null || _headerRef$current5.update({
248
- title: "$" + numToLocaleString(lastPoint.value),
249
- subHead: generateSubHead(lastPoint, currentPeriod, sparklineInteractiveData)
250
- });
251
- }, [currentPeriod, sparklineInteractiveData, lastPoint]);
252
- const handleOnPeriodChanged = useCallback(period => {
253
- var _headerRef$current6;
254
- setCurrentPeriod(period);
255
- const newData = sparklineInteractiveData[period];
256
- const newLastPoint = newData[newData.length - 1];
257
- (_headerRef$current6 = headerRef.current) == null || _headerRef$current6.update({
258
- title: "$" + numToLocaleString(newLastPoint.value),
259
- subHead: generateSubHead(newLastPoint, period, sparklineInteractiveData)
260
- });
261
- }, [sparklineInteractiveData]);
262
- const header = /*#__PURE__*/_jsx(SparklineInteractiveHeader, {
263
- ref: headerRef,
264
- compact: compact,
265
- defaultLabel: labelNode ? 'CustomHeader' : 'Bitcoin Price',
266
- defaultSubHead: generateSubHead(lastPoint, currentPeriod, sparklineInteractiveData),
267
- defaultTitle: "$" + numToLocaleString(lastPoint.value),
268
- labelNode: labelNode,
269
- trailing: trailing
270
- });
271
- const formatDateWithConfig = useCallback((value, period) => {
272
- const config = getFormattingConfigForPeriod(period);
273
- return value.toLocaleString('en-US', _extends({}, config));
274
- }, []);
275
- const formatHoverDate = useCallback((date, period) => {
276
- return date.toLocaleString('en-US', _extends({}, getDateHoverOptions(period)));
277
- }, []);
278
- const formatMinMaxLabel = useCallback(amount => {
279
- return "$" + numToLocaleString(parseInt(amount, 10));
280
- }, []);
281
- return /*#__PURE__*/_jsx(SparklineInteractive, _extends({
282
- disableScrubbing: !__DEV__
283
- }, props, {
284
- defaultPeriod: props.defaultPeriod || DEFAULT_PERIOD,
285
- formatDate: formatDateWithConfig,
286
- formatHoverDate: !props.hideHoverDate ? formatHoverDate : undefined,
287
- formatMinMaxLabel: formatMinMaxLabel,
288
- headerNode: header,
289
- onPeriodChanged: handleOnPeriodChanged,
290
- onScrub: handleScrub,
291
- onScrubEnd: handleScrubEnd,
292
- periods: periodsAlt,
293
- strokeColor: props.strokeColor
294
- }));
295
- });
296
- const SparklineInteractiveWithSmallerPeriodSet = /*#__PURE__*/React.memo(props => {
297
- var _props$defaultPeriod3;
298
- const {
299
- data: sparklineData,
300
- trailing,
301
- labelNode,
302
- compact
303
- } = props;
304
- const sparklineInteractiveData = sparklineData;
305
- const headerRef = useRef(null);
306
- const [currentPeriod, setCurrentPeriod] = useState((_props$defaultPeriod3 = props.defaultPeriod) != null ? _props$defaultPeriod3 : DEFAULT_PERIOD);
307
- const data = sparklineInteractiveData[currentPeriod];
308
- const lastPoint = data[data.length - 1];
309
- const handleScrub = useCallback(_ref3 => {
310
- var _headerRef$current7;
311
- let {
312
- point,
313
- period
314
- } = _ref3;
315
- (_headerRef$current7 = headerRef.current) == null || _headerRef$current7.update({
316
- title: "$" + point.value.toLocaleString('en-US'),
317
- subHead: generateSubHead(point, period, sparklineInteractiveData)
318
- });
319
- }, [sparklineInteractiveData]);
320
- const handleScrubEnd = useCallback(() => {
321
- var _headerRef$current8;
322
- (_headerRef$current8 = headerRef.current) == null || _headerRef$current8.update({
323
- title: "$" + numToLocaleString(lastPoint.value),
324
- subHead: generateSubHead(lastPoint, currentPeriod, sparklineInteractiveData)
325
- });
326
- }, [currentPeriod, sparklineInteractiveData, lastPoint]);
327
- const handleOnPeriodChanged = useCallback(period => {
328
- var _headerRef$current9;
329
- setCurrentPeriod(period);
330
- const newData = sparklineInteractiveData[period];
331
- const newLastPoint = newData[newData.length - 1];
332
- (_headerRef$current9 = headerRef.current) == null || _headerRef$current9.update({
333
- title: "$" + numToLocaleString(newLastPoint.value),
334
- subHead: generateSubHead(newLastPoint, period, sparklineInteractiveData)
335
- });
336
- }, [sparklineInteractiveData]);
337
- const header = /*#__PURE__*/_jsx(SparklineInteractiveHeader, {
338
- ref: headerRef,
339
- compact: compact,
340
- defaultLabel: labelNode ? 'CustomHeader' : 'Bitcoin Price',
341
- defaultSubHead: generateSubHead(lastPoint, currentPeriod, sparklineInteractiveData),
342
- defaultTitle: "$" + numToLocaleString(lastPoint.value),
343
- labelNode: labelNode,
344
- trailing: trailing
345
- });
346
- const formatDateWithConfig = useCallback((value, period) => {
347
- const config = getFormattingConfigForPeriod(period);
348
- return value.toLocaleString('en-US', _extends({}, config));
349
- }, []);
350
- const formatHoverDate = useCallback((date, period) => {
351
- return date.toLocaleString('en-US', _extends({}, getDateHoverOptions(period)));
352
- }, []);
353
- const formatMinMaxLabel = useCallback(amount => {
354
- return "$" + numToLocaleString(parseInt(amount, 10));
355
- }, []);
356
- return /*#__PURE__*/_jsx(SparklineInteractive, _extends({
357
- disableScrubbing: !__DEV__
358
- }, props, {
359
- defaultPeriod: props.defaultPeriod || DEFAULT_PERIOD,
360
- formatDate: formatDateWithConfig,
361
- formatHoverDate: !props.hideHoverDate ? formatHoverDate : undefined,
362
- formatMinMaxLabel: formatMinMaxLabel,
363
- headerNode: header,
364
- onPeriodChanged: handleOnPeriodChanged,
365
- onScrub: handleScrub,
366
- onScrubEnd: handleScrubEnd,
367
- periods: subsetOfPeriods,
368
- strokeColor: props.strokeColor
369
- }));
370
- });
371
- export const SparklineInteractiveHeaderWithCustomTitle = () => {
372
- const headerRef = useRef(null);
373
- const [currentPeriod, setCurrentPeriod] = useState('day');
374
- const data = sparklineInteractiveData[currentPeriod];
375
- const lastPoint = data[data.length - 1];
376
- const titleRef = useRef(null);
377
- const styles = useSparklineInteractiveHeaderStyles();
378
- const handleScrub = useCallback(_ref4 => {
379
- var _headerRef$current0, _titleRef$current;
380
- let {
381
- point,
382
- period
383
- } = _ref4;
384
- const newTitle = "$" + point.value.toLocaleString('en-US');
385
- (_headerRef$current0 = headerRef.current) == null || _headerRef$current0.update({
386
- subHead: generateSubHead(point, period, sparklineInteractiveData)
387
- });
388
- (_titleRef$current = titleRef.current) == null || _titleRef$current.setNativeProps({
389
- text: newTitle,
390
- style: [styles.title(newTitle), {
391
- color: 'green'
392
- }]
393
- });
394
- }, [styles]);
395
- const handleScrubEnd = useCallback(() => {
396
- var _headerRef$current1, _titleRef$current2;
397
- const newTitle = "$" + numToLocaleString(lastPoint.value);
398
- (_headerRef$current1 = headerRef.current) == null || _headerRef$current1.update({
399
- subHead: generateSubHead(lastPoint, currentPeriod, sparklineInteractiveData)
400
- });
401
- (_titleRef$current2 = titleRef.current) == null || _titleRef$current2.setNativeProps({
402
- text: newTitle,
403
- style: [styles.title(newTitle), {
404
- color: 'green'
405
- }]
406
- });
407
- }, [currentPeriod, lastPoint, styles]);
408
- const handleOnPeriodChanged = useCallback(period => {
409
- var _headerRef$current10, _titleRef$current3;
410
- setCurrentPeriod(period);
411
- const newData = sparklineInteractiveData[period];
412
- const newLastPoint = newData[newData.length - 1];
413
- const newTitle = "$" + numToLocaleString(newLastPoint.value);
414
- (_headerRef$current10 = headerRef.current) == null || _headerRef$current10.update({
415
- subHead: generateSubHead(newLastPoint, period, sparklineInteractiveData)
416
- });
417
- (_titleRef$current3 = titleRef.current) == null || _titleRef$current3.setNativeProps({
418
- text: newTitle,
419
- style: [styles.title(newTitle), {
420
- color: 'green'
421
- }]
422
- });
423
- }, [styles]);
424
- const defaultTitleStyle = useMemo(() => [styles.title("$" + numToLocaleString(lastPoint.value)), {
425
- color: 'green'
426
- }], [lastPoint.value, styles]);
427
- const RenderedDefaultTitle = /*#__PURE__*/_jsx(TextInput, {
428
- ref: titleRef,
429
- defaultValue: "$" + numToLocaleString(lastPoint.value),
430
- editable: false,
431
- pointerEvents: "none",
432
- style: defaultTitleStyle,
433
- testID: "SparklineInteractiveHeaderTitle"
434
- });
435
- const header = /*#__PURE__*/_jsx(SparklineInteractiveHeader, {
436
- ref: headerRef,
437
- defaultLabel: "Bitcoin Price",
438
- defaultSubHead: generateSubHead(lastPoint, currentPeriod, sparklineInteractiveData),
439
- defaultTitle: RenderedDefaultTitle
440
- });
441
- return /*#__PURE__*/_jsx(SparklineInteractiveBuild, {
442
- data: sparklineInteractiveData,
443
- headerNode: header,
444
- onPeriodChanged: handleOnPeriodChanged,
445
- onScrub: handleScrub,
446
- onScrubEnd: handleScrubEnd,
447
- strokeColor: "#F7931A"
448
- });
449
- };
450
- const SparklineInteractiveHeaderScreen = () => {
451
- const trailing = useMemo(() => {
452
- return /*#__PURE__*/_jsxs(HStack, {
453
- gap: 1,
454
- children: [/*#__PURE__*/_jsx(IconButton, {
455
- active: true,
456
- accessibilityLabel: "Star",
457
- feedback: "heavy",
458
- name: "star",
459
- onPress: handlePress,
460
- variant: "secondary"
461
- }), /*#__PURE__*/_jsx(IconButton, {
462
- accessibilityLabel: "Share",
463
- feedback: "heavy",
464
- name: "share",
465
- onPress: handlePress,
466
- variant: "secondary"
467
- })]
468
- });
469
- }, []);
470
- return /*#__PURE__*/_jsxs(ExampleScreen, {
471
- children: [/*#__PURE__*/_jsx(Example, {
472
- padding: 0,
473
- children: /*#__PURE__*/_jsxs(Box, {
474
- children: [/*#__PURE__*/_jsx(Text, {
475
- font: "title3",
476
- paddingX: 3,
477
- paddingY: 3,
478
- children: "SparklineInteractive Header Example"
479
- }), /*#__PURE__*/_jsx(SparklineInteractiveWithHeaderBuild, {
480
- data: sparklineInteractiveData,
481
- strokeColor: "#F7931A"
482
- })]
483
- })
484
- }), /*#__PURE__*/_jsx(Example, {
485
- padding: 0,
486
- children: /*#__PURE__*/_jsxs(Box, {
487
- children: [/*#__PURE__*/_jsx(Text, {
488
- font: "title3",
489
- paddingX: 3,
490
- paddingY: 3,
491
- children: "SparklineInteractive Header Trailing"
492
- }), /*#__PURE__*/_jsx(SparklineInteractiveWithHeaderBuild, {
493
- data: sparklineInteractiveData,
494
- strokeColor: "#F7931A",
495
- trailing: trailing
496
- })]
497
- })
498
- }), /*#__PURE__*/_jsx(Example, {
499
- padding: 0,
500
- children: /*#__PURE__*/_jsxs(Box, {
501
- children: [/*#__PURE__*/_jsx(Text, {
502
- font: "title3",
503
- paddingX: 3,
504
- paddingY: 3,
505
- children: "SparklineInteractive Header Custom Label"
506
- }), /*#__PURE__*/_jsx(SparklineInteractiveWithHeaderBuild, {
507
- data: sparklineInteractiveData,
508
- labelNode: /*#__PURE__*/_jsx(HeaderLabel, {}),
509
- strokeColor: "#F7931A"
510
- })]
511
- })
512
- }), /*#__PURE__*/_jsx(Example, {
513
- padding: 0,
514
- children: /*#__PURE__*/_jsxs(Box, {
515
- children: [/*#__PURE__*/_jsx(Text, {
516
- font: "title3",
517
- paddingX: 3,
518
- paddingY: 3,
519
- children: "SparklineInteractive Header Example with AltHeader"
520
- }), /*#__PURE__*/_jsx(SparklineInteractiveWithAltHeader, {
521
- data: sparklineInteractiveData,
522
- strokeColor: "#F7931A"
523
- })]
524
- })
525
- }), /*#__PURE__*/_jsx(Example, {
526
- padding: 0,
527
- children: /*#__PURE__*/_jsxs(Box, {
528
- children: [/*#__PURE__*/_jsx(Text, {
529
- font: "title3",
530
- paddingX: 3,
531
- paddingY: 3,
532
- children: "SparklineInteractive Header Example with Smaller Period Set"
533
- }), /*#__PURE__*/_jsx(SparklineInteractiveWithSmallerPeriodSet, {
534
- data: sparklineInteractiveData,
535
- strokeColor: "#F7931A"
536
- })]
537
- })
538
- }), /*#__PURE__*/_jsx(Example, {
539
- padding: 0,
540
- children: /*#__PURE__*/_jsxs(Box, {
541
- children: [/*#__PURE__*/_jsx(Text, {
542
- font: "title3",
543
- paddingX: 3,
544
- paddingY: 3,
545
- children: "SparklineInteractive Header Example with No Period Set"
546
- }), /*#__PURE__*/_jsx(SparklineInteractiveWithHeaderBuild, {
547
- hidePeriodSelector: true,
548
- data: sparklineInteractiveData,
549
- strokeColor: "#F7931A"
550
- })]
551
- })
552
- }), /*#__PURE__*/_jsx(Example, {
553
- padding: 0,
554
- children: /*#__PURE__*/_jsxs(Box, {
555
- children: [/*#__PURE__*/_jsx(Text, {
556
- font: "title3",
557
- paddingX: 3,
558
- paddingY: 3,
559
- children: "SparklineInteractive Header Custom Title"
560
- }), /*#__PURE__*/_jsx(SparklineInteractiveHeaderWithCustomTitle, {})]
561
- })
562
- })]
563
- });
564
- };
565
- export default SparklineInteractiveHeaderScreen;
@@ -1,117 +0,0 @@
1
- import { useCallback, useMemo } from 'react';
2
- import { StyleSheet } from 'react-native';
3
- import { useTheme } from '@coinbase/cds-mobile/hooks/useTheme';
4
- import { getAdjustedFontScale } from '@coinbase/cds-mobile/utils/getAdjustedFontScale';
5
- // The – character width is larger than the width of the + character.
6
- // To prevent layout jank and jumping around we set a fixed width for
7
- // this component. Because of accessible font scaling we first get the
8
- // active font size and then calculate the character width, which for the –
9
- // character is 0.6em.
10
- const useSubIconWidth = () => {
11
- const theme = useTheme();
12
- const label1FontSize = theme.fontSize.label1;
13
- return useCallback(color => {
14
- const activeWidth = label1FontSize * 0.6;
15
- // Hide if color is muted aka 0% change so icon is flushed to far left
16
- return color === 'foregroundMuted' ? 0 : activeWidth;
17
- }, [label1FontSize]);
18
- };
19
- const variantColorMap = {
20
- positive: 'fgPositive',
21
- negative: 'fgNegative',
22
- foregroundMuted: 'fgMuted'
23
- };
24
- export const styles = StyleSheet.create({
25
- // Inputs need to have these styles to make it appear as Text component
26
- inputReset: {
27
- padding: 0,
28
- margin: 0,
29
- backgroundColor: 'transparent',
30
- overflow: 'visible',
31
- lineHeight: undefined
32
- },
33
- fullWidth: {
34
- width: '100%'
35
- },
36
- tabularNumbers: {
37
- fontVariant: ['tabular-nums']
38
- }
39
- });
40
- export function useSparklineInteractiveHeaderStyles() {
41
- const theme = useTheme();
42
- const typography = {
43
- title1: {
44
- fontSize: theme.fontSize.title1,
45
- lineHeight: theme.lineHeight.title1,
46
- fontFamily: theme.fontFamily.title1
47
- },
48
- label1: {
49
- fontSize: theme.fontSize.label1,
50
- lineHeight: theme.lineHeight.label1,
51
- fontFamily: theme.fontFamily.label1
52
- },
53
- label2: {
54
- fontSize: theme.fontSize.label2,
55
- lineHeight: theme.lineHeight.label2,
56
- fontFamily: theme.fontFamily.label2
57
- }
58
- };
59
- const fontSize = {
60
- title1: typography.title1.fontSize
61
- };
62
- const lineHeight = {
63
- title1: typography.title1.lineHeight,
64
- label1: typography.label1.lineHeight
65
- };
66
- const getSubIconWidth = useSubIconWidth();
67
- return useMemo(() => {
68
- return {
69
- // TITLE STYLES - the large price text
70
- title: text => {
71
- const {
72
- length
73
- } = text;
74
- // We manually decrease fontSize if length of new value
75
- // is greater than 12 characters long
76
- const {
77
- fontSize: titleFontSize
78
- } = getAdjustedFontScale({
79
- fontSize: fontSize.title1
80
- }, length, 12);
81
- return [typography.title1, styles.tabularNumbers, styles.inputReset, styles.fullWidth, {
82
- fontSize: titleFontSize,
83
- color: theme.color.fg,
84
- height: lineHeight.title1
85
- }];
86
- },
87
- // LABEL STYLES - the small text above price
88
- label: [typography.label1, styles.inputReset, styles.fullWidth, {
89
- height: lineHeight.label1,
90
- color: theme.color.fgMuted
91
- }],
92
- // SUBHEAD ICON STYLES - the + or - after price and in front of percent change)
93
- subHeadIcon: color => [typography.label1, styles.inputReset, {
94
- color: theme.color[variantColorMap[color]],
95
- width: getSubIconWidth(color),
96
- marginRight: theme.space[0.5] / 2,
97
- textAlign: 'left'
98
- }],
99
- // SUBHEAD STYLES - the percent change text
100
- subHead: function (color, useFullWidth) {
101
- if (useFullWidth === void 0) {
102
- useFullWidth = true;
103
- }
104
- return [typography.label1, styles.tabularNumbers, ...(useFullWidth ? [styles.fullWidth] : [{
105
- width: 'auto'
106
- }]), styles.inputReset, {
107
- color: theme.color[variantColorMap[color]]
108
- }];
109
- },
110
- subHeadAccessory: () => [typography.label2, styles.inputReset, {
111
- color: theme.color.fgMuted,
112
- marginLeft: theme.space[0.5],
113
- textAlign: 'left'
114
- }]
115
- };
116
- }, [typography.label1, typography.title1, typography.label2, lineHeight.label1, lineHeight.title1, theme.color, theme.space, fontSize.title1, getSubIconWidth]);
117
- }