@coinbase/cds-web-visualization 3.4.0-beta.8 → 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 (156) hide show
  1. package/CHANGELOG.md +130 -0
  2. package/dts/chart/CartesianChart.d.ts +40 -4
  3. package/dts/chart/CartesianChart.d.ts.map +1 -1
  4. package/dts/chart/ChartProvider.d.ts +3 -0
  5. package/dts/chart/ChartProvider.d.ts.map +1 -1
  6. package/dts/chart/Path.d.ts +51 -12
  7. package/dts/chart/Path.d.ts.map +1 -1
  8. package/dts/chart/PeriodSelector.d.ts +25 -4
  9. package/dts/chart/PeriodSelector.d.ts.map +1 -1
  10. package/dts/chart/area/Area.d.ts +13 -11
  11. package/dts/chart/area/Area.d.ts.map +1 -1
  12. package/dts/chart/area/AreaChart.d.ts +18 -5
  13. package/dts/chart/area/AreaChart.d.ts.map +1 -1
  14. package/dts/chart/area/DottedArea.d.ts.map +1 -1
  15. package/dts/chart/area/GradientArea.d.ts.map +1 -1
  16. package/dts/chart/area/SolidArea.d.ts.map +1 -1
  17. package/dts/chart/axis/Axis.d.ts +29 -29
  18. package/dts/chart/axis/Axis.d.ts.map +1 -1
  19. package/dts/chart/axis/XAxis.d.ts +6 -0
  20. package/dts/chart/axis/XAxis.d.ts.map +1 -1
  21. package/dts/chart/axis/YAxis.d.ts +2 -1
  22. package/dts/chart/axis/YAxis.d.ts.map +1 -1
  23. package/dts/chart/bar/Bar.d.ts +51 -51
  24. package/dts/chart/bar/Bar.d.ts.map +1 -1
  25. package/dts/chart/bar/BarChart.d.ts +29 -6
  26. package/dts/chart/bar/BarChart.d.ts.map +1 -1
  27. package/dts/chart/bar/BarPlot.d.ts +2 -1
  28. package/dts/chart/bar/BarPlot.d.ts.map +1 -1
  29. package/dts/chart/bar/BarStack.d.ts +58 -20
  30. package/dts/chart/bar/BarStack.d.ts.map +1 -1
  31. package/dts/chart/bar/BarStackGroup.d.ts +2 -1
  32. package/dts/chart/bar/BarStackGroup.d.ts.map +1 -1
  33. package/dts/chart/bar/DefaultBar.d.ts.map +1 -1
  34. package/dts/chart/bar/DefaultBarStack.d.ts.map +1 -1
  35. package/dts/chart/gradient/Gradient.d.ts +7 -0
  36. package/dts/chart/gradient/Gradient.d.ts.map +1 -1
  37. package/dts/chart/index.d.ts +1 -0
  38. package/dts/chart/index.d.ts.map +1 -1
  39. package/dts/chart/legend/DefaultLegendEntry.d.ts +21 -0
  40. package/dts/chart/legend/DefaultLegendEntry.d.ts.map +1 -0
  41. package/dts/chart/legend/DefaultLegendShape.d.ts +7 -0
  42. package/dts/chart/legend/DefaultLegendShape.d.ts.map +1 -0
  43. package/dts/chart/legend/Legend.d.ts +169 -0
  44. package/dts/chart/legend/Legend.d.ts.map +1 -0
  45. package/dts/chart/legend/index.d.ts +4 -0
  46. package/dts/chart/legend/index.d.ts.map +1 -0
  47. package/dts/chart/line/DottedLine.d.ts.map +1 -1
  48. package/dts/chart/line/Line.d.ts +45 -24
  49. package/dts/chart/line/Line.d.ts.map +1 -1
  50. package/dts/chart/line/LineChart.d.ts +5 -3
  51. package/dts/chart/line/LineChart.d.ts.map +1 -1
  52. package/dts/chart/line/ReferenceLine.d.ts +9 -0
  53. package/dts/chart/line/ReferenceLine.d.ts.map +1 -1
  54. package/dts/chart/line/SolidLine.d.ts.map +1 -1
  55. package/dts/chart/point/Point.d.ts +26 -2
  56. package/dts/chart/point/Point.d.ts.map +1 -1
  57. package/dts/chart/scrubber/DefaultScrubberBeacon.d.ts +34 -17
  58. package/dts/chart/scrubber/DefaultScrubberBeacon.d.ts.map +1 -1
  59. package/dts/chart/scrubber/DefaultScrubberBeaconLabel.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 +148 -46
  63. package/dts/chart/scrubber/Scrubber.d.ts.map +1 -1
  64. package/dts/chart/scrubber/ScrubberBeaconGroup.d.ts +10 -0
  65. package/dts/chart/scrubber/ScrubberBeaconGroup.d.ts.map +1 -1
  66. package/dts/chart/scrubber/ScrubberBeaconLabelGroup.d.ts +25 -1
  67. package/dts/chart/scrubber/ScrubberBeaconLabelGroup.d.ts.map +1 -1
  68. package/dts/chart/scrubber/ScrubberProvider.d.ts.map +1 -1
  69. package/dts/chart/text/ChartText.d.ts.map +1 -1
  70. package/dts/chart/utils/axis.d.ts +48 -9
  71. package/dts/chart/utils/axis.d.ts.map +1 -1
  72. package/dts/chart/utils/bar.d.ts +188 -0
  73. package/dts/chart/utils/bar.d.ts.map +1 -1
  74. package/dts/chart/utils/chart.d.ts +32 -0
  75. package/dts/chart/utils/chart.d.ts.map +1 -1
  76. package/dts/chart/utils/context.d.ts +20 -4
  77. package/dts/chart/utils/context.d.ts.map +1 -1
  78. package/dts/chart/utils/gradient.d.ts +3 -1
  79. package/dts/chart/utils/gradient.d.ts.map +1 -1
  80. package/dts/chart/utils/path.d.ts +26 -0
  81. package/dts/chart/utils/path.d.ts.map +1 -1
  82. package/dts/chart/utils/point.d.ts +18 -7
  83. package/dts/chart/utils/point.d.ts.map +1 -1
  84. package/dts/chart/utils/scale.d.ts +11 -0
  85. package/dts/chart/utils/scale.d.ts.map +1 -1
  86. package/dts/chart/utils/scrubber.d.ts +2 -1
  87. package/dts/chart/utils/scrubber.d.ts.map +1 -1
  88. package/dts/chart/utils/transition.d.ts +50 -14
  89. package/dts/chart/utils/transition.d.ts.map +1 -1
  90. package/dts/sparkline/Sparkline.d.ts +2 -1
  91. package/dts/sparkline/Sparkline.d.ts.map +1 -1
  92. package/dts/sparkline/SparklineArea.d.ts +2 -1
  93. package/dts/sparkline/SparklineArea.d.ts.map +1 -1
  94. package/dts/sparkline/SparklineGradient.d.ts +2 -1
  95. package/dts/sparkline/SparklineGradient.d.ts.map +1 -1
  96. package/dts/sparkline/sparkline-interactive/SparklineInteractive.d.ts +2 -1
  97. package/dts/sparkline/sparkline-interactive/SparklineInteractive.d.ts.map +1 -1
  98. package/esm/chart/CartesianChart.js +154 -90
  99. package/esm/chart/ChartProvider.js +2 -2
  100. package/esm/chart/Path.js +35 -19
  101. package/esm/chart/PeriodSelector.js +33 -15
  102. package/esm/chart/area/Area.js +21 -9
  103. package/esm/chart/area/AreaChart.js +28 -25
  104. package/esm/chart/area/DottedArea.js +18 -9
  105. package/esm/chart/area/GradientArea.js +16 -8
  106. package/esm/chart/area/SolidArea.js +8 -3
  107. package/esm/chart/axis/Axis.js +3 -17
  108. package/esm/chart/axis/XAxis.js +153 -50
  109. package/esm/chart/axis/YAxis.js +146 -36
  110. package/esm/chart/bar/Bar.js +16 -8
  111. package/esm/chart/bar/BarChart.js +38 -33
  112. package/esm/chart/bar/BarPlot.js +20 -25
  113. package/esm/chart/bar/BarStack.js +109 -505
  114. package/esm/chart/bar/BarStackGroup.js +36 -27
  115. package/esm/chart/bar/DefaultBar.js +34 -26
  116. package/esm/chart/bar/DefaultBarStack.js +31 -18
  117. package/esm/chart/gradient/Gradient.js +3 -2
  118. package/esm/chart/index.js +1 -0
  119. package/esm/chart/legend/DefaultLegendEntry.css +1 -0
  120. package/esm/chart/legend/DefaultLegendEntry.js +50 -0
  121. package/esm/chart/legend/DefaultLegendShape.css +5 -0
  122. package/esm/chart/legend/DefaultLegendShape.js +47 -0
  123. package/esm/chart/legend/Legend.js +76 -0
  124. package/esm/chart/legend/index.js +3 -0
  125. package/esm/chart/line/DottedLine.js +7 -2
  126. package/esm/chart/line/Line.js +41 -42
  127. package/esm/chart/line/LineChart.js +18 -13
  128. package/esm/chart/line/ReferenceLine.js +6 -2
  129. package/esm/chart/line/SolidLine.js +8 -3
  130. package/esm/chart/point/Point.js +41 -24
  131. package/esm/chart/scrubber/DefaultScrubberBeacon.js +64 -65
  132. package/esm/chart/scrubber/DefaultScrubberBeaconLabel.js +25 -14
  133. package/esm/chart/scrubber/DefaultScrubberLabel.js +26 -8
  134. package/esm/chart/scrubber/Scrubber.js +54 -43
  135. package/esm/chart/scrubber/ScrubberBeaconGroup.js +60 -35
  136. package/esm/chart/scrubber/ScrubberBeaconLabelGroup.js +31 -8
  137. package/esm/chart/scrubber/ScrubberProvider.js +44 -39
  138. package/esm/chart/text/ChartText.js +3 -2
  139. package/esm/chart/utils/axis.js +90 -43
  140. package/esm/chart/utils/bar.js +863 -0
  141. package/esm/chart/utils/chart.js +34 -7
  142. package/esm/chart/utils/context.js +7 -0
  143. package/esm/chart/utils/gradient.js +6 -4
  144. package/esm/chart/utils/path.js +88 -61
  145. package/esm/chart/utils/point.js +57 -30
  146. package/esm/chart/utils/scale.js +13 -2
  147. package/esm/chart/utils/scrubber.js +9 -4
  148. package/esm/chart/utils/transition.js +68 -41
  149. package/esm/sparkline/Sparkline.js +2 -1
  150. package/esm/sparkline/SparklineArea.js +2 -1
  151. package/esm/sparkline/SparklineGradient.js +2 -1
  152. package/esm/sparkline/__figma__/Sparkline.figma.js +1 -1
  153. package/esm/sparkline/sparkline-interactive/SparklineInteractive.js +2 -1
  154. package/esm/sparkline/sparkline-interactive/__figma__/SparklineInteractive.figma.js +1 -1
  155. package/esm/sparkline/sparkline-interactive-header/__figma__/SparklineInteractiveHeader.figma.js +1 -1
  156. package/package.json +12 -11
@@ -5,10 +5,11 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
5
5
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
6
6
  import { useEffect, useRef } from 'react';
7
7
  import { interpolatePath } from 'd3-interpolate-path';
8
- import { animate, useMotionValue, useTransform } from 'framer-motion';
8
+ import { animate, useMotionValue } from 'framer-motion';
9
9
 
10
10
  /**
11
- * Default transition configuration used across all chart components.
11
+ * Default update transition used across all chart components.
12
+ * `{ type: 'spring', stiffness: 900, damping: 120, mass: 4 }`
12
13
  */
13
14
  export const defaultTransition = {
14
15
  type: 'spring',
@@ -17,6 +18,15 @@ export const defaultTransition = {
17
18
  mass: 4
18
19
  };
19
20
 
21
+ /**
22
+ * Instant transition that completes immediately with no animation.
23
+ * Used when a transition is set to `null`.
24
+ */
25
+ export const instantTransition = {
26
+ type: 'tween',
27
+ duration: 0
28
+ };
29
+
20
30
  /**
21
31
  * Duration in seconds for accessory elements to fade in.
22
32
  */
@@ -27,85 +37,102 @@ export const accessoryFadeTransitionDuration = 0.15;
27
37
  */
28
38
  export const accessoryFadeTransitionDelay = 0.35;
29
39
 
40
+ /**
41
+ * Default enter transition for accessory elements (Point, Scrubber beacons).
42
+ * `{ type: 'tween', duration: 0.15, delay: 0.35 }`
43
+ */
44
+ export const defaultAccessoryEnterTransition = {
45
+ type: 'tween',
46
+ duration: accessoryFadeTransitionDuration,
47
+ delay: accessoryFadeTransitionDelay
48
+ };
49
+
50
+ /**
51
+ * Resolves a transition value based on the animation state and a default.
52
+ * @note Passing in null will disable an animation.
53
+ * @note Passing in undefined will use the provided default.
54
+ */
55
+ export const getTransition = (value, animate, defaultValue) => {
56
+ if (!animate || value === null) return null;
57
+ return value !== null && value !== void 0 ? value : defaultValue;
58
+ };
59
+
30
60
  /**
31
61
  * Hook for path animation state and transitions.
32
62
  *
33
63
  * @param currentPath - Current target path to animate to
34
64
  * @param initialPath - Initial path for enter animation. When provided, the first animation will go from initialPath to currentPath.
35
- * @param transition - Transition configuration
65
+ * @param transitions - Transition configuration for enter and update animations
36
66
  * @returns MotionValue containing the current interpolated path string
37
67
  *
38
68
  * @example
39
69
  * // Simple path transition
40
70
  * const animatedPath = usePathTransition({
41
71
  * currentPath: d ?? '',
42
- * transition: {
43
- * type: 'spring',
44
- * stiffness: 300,
45
- * damping: 20
46
- * }
72
+ * transitions: {
73
+ * update: { type: 'spring', stiffness: 300, damping: 20 },
74
+ * },
47
75
  * });
48
76
  *
49
77
  * @example
50
- * // Time based animation
78
+ * // Enter animation with different initial config (like DefaultBar)
51
79
  * const animatedPath = usePathTransition({
52
80
  * currentPath: targetPath,
53
81
  * initialPath: baselinePath,
54
- * transition: {
55
- * type: 'tween',
56
- * duration: 0.3,
57
- * ease: 'easeInOut'
58
- * }
82
+ * transitions: {
83
+ * enter: { type: 'tween', duration: 0.5 },
84
+ * update: { type: 'spring', stiffness: 900, damping: 120, mass: 4 },
85
+ * },
59
86
  * });
60
87
  */
61
88
  export const usePathTransition = _ref => {
62
89
  let {
63
90
  currentPath,
64
91
  initialPath,
92
+ transitions,
65
93
  transition = defaultTransition
66
94
  } = _ref;
67
- const isInitialRender = useRef(true);
95
+ const updateTransition = (transitions === null || transitions === void 0 ? void 0 : transitions.update) !== undefined ? transitions.update : transition;
96
+ const enterTransition = transitions === null || transitions === void 0 ? void 0 : transitions.enter;
68
97
  const previousPathRef = useRef(initialPath !== null && initialPath !== void 0 ? initialPath : currentPath);
69
- const targetPathRef = useRef(currentPath);
98
+ const targetPathRef = useRef(initialPath !== null && initialPath !== void 0 ? initialPath : currentPath);
70
99
  const animationRef = useRef(null);
71
- const progress = useMotionValue(0);
72
-
73
- // Derive the interpolated path from progress using useTransform
74
- const interpolatedPath = useTransform(progress, latest => {
75
- const pathInterpolator = interpolatePath(previousPathRef.current, targetPathRef.current);
76
- return pathInterpolator(latest);
77
- });
100
+ const isFirstAnimation = useRef(!!initialPath);
101
+ const animatedPath = useMotionValue(initialPath !== null && initialPath !== void 0 ? initialPath : currentPath);
78
102
  useEffect(() => {
79
- // Only proceed if the target path has actually changed
80
103
  if (targetPathRef.current !== currentPath) {
81
- // Cancel any ongoing animation before starting a new one
82
- const wasAnimating = !!animationRef.current;
104
+ const currentVisualPath = animatedPath.get();
83
105
  if (animationRef.current) {
84
- animationRef.current.cancel();
106
+ animationRef.current.stop();
85
107
  animationRef.current = null;
86
- }
87
- const currentInterpolatedPath = interpolatedPath.get();
88
-
89
- // If we were animating and the interpolated path is different from both start and end,
90
- // use it as the starting point for the next animation (smooth interruption)
91
- const isInterpolatedPosition = currentInterpolatedPath !== previousPathRef.current && currentInterpolatedPath !== currentPath;
92
- if (wasAnimating && isInterpolatedPosition) {
93
- previousPathRef.current = currentInterpolatedPath;
108
+ previousPathRef.current = currentVisualPath;
94
109
  }
95
110
  targetPathRef.current = currentPath;
96
- progress.set(0);
97
- animationRef.current = animate(progress, 1, _objectSpread(_objectSpread({}, transition), {}, {
111
+ const activeTransition = isFirstAnimation.current && enterTransition !== undefined ? enterTransition : updateTransition;
112
+ isFirstAnimation.current = false;
113
+ if (activeTransition === null) {
114
+ animatedPath.set(currentPath);
115
+ previousPathRef.current = currentPath;
116
+ animationRef.current = null;
117
+ return;
118
+ }
119
+ const pathInterpolator = interpolatePath(previousPathRef.current, currentPath);
120
+ animationRef.current = animate(0, 1, _objectSpread(_objectSpread({}, activeTransition), {}, {
121
+ onUpdate: latest => {
122
+ animatedPath.set(pathInterpolator(latest));
123
+ },
98
124
  onComplete: () => {
125
+ animatedPath.set(currentPath);
99
126
  previousPathRef.current = currentPath;
127
+ animationRef.current = null;
100
128
  }
101
129
  }));
102
- isInitialRender.current = false;
103
130
  }
104
131
  return () => {
105
132
  if (animationRef.current) {
106
- animationRef.current.cancel();
133
+ animationRef.current.stop();
107
134
  }
108
135
  };
109
- }, [currentPath, transition, progress, interpolatedPath]);
110
- return interpolatedPath;
136
+ }, [currentPath, updateTransition, enterTransition, animatedPath]);
137
+ return animatedPath;
111
138
  };
@@ -15,7 +15,8 @@ import { SparklineAreaPattern } from './SparklineAreaPattern';
15
15
  import { SparklinePath } from './SparklinePath';
16
16
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
17
17
  /**
18
- * @deprecated Use LineChart instead.
18
+ * @deprecated Use LineChart instead. This will be removed in a future major release.
19
+ * @deprecationExpectedRemoval v4
19
20
  */
20
21
  export const Sparkline = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref) => {
21
22
  let {
@@ -1,7 +1,8 @@
1
1
  import React, { forwardRef, memo } from 'react';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  /**
4
- * @deprecated Use AreaChart instead.
4
+ * @deprecated Use AreaChart instead. This will be removed in a future major release.
5
+ * @deprecationExpectedRemoval v4
5
6
  */
6
7
  export const SparklineArea = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref) => {
7
8
  let {
@@ -2,7 +2,8 @@ import React, { forwardRef, memo } from 'react';
2
2
  import { Sparkline } from './Sparkline';
3
3
  import { jsx as _jsx } from "react/jsx-runtime";
4
4
  /**
5
- * @deprecated Use LineChart instead.
5
+ * @deprecated Use LineChart instead. This will be removed in a future major release.
6
+ * @deprecationExpectedRemoval v4
6
7
  */
7
8
  export const SparklineGradient = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref) => {
8
9
  let {
@@ -5,7 +5,7 @@ import { figma } from '@figma/code-connect';
5
5
  import { Sparkline } from '../Sparkline';
6
6
  import { jsx as _jsx } from "react/jsx-runtime";
7
7
  figma.connect(Sparkline, 'https://www.figma.com/design/k5CtyJccNQUGMI5bI4lJ2g/✨-CDS-Components?node-id=320-15040&m=dev', {
8
- imports: ["import { Sparkline } from '@coinbase/cds-web-visualization';", "import { useSparklinePath } from '@coinbase/cds-common/visualizations/useSparklinePath';"],
8
+ imports: ["import { Sparkline } from '@coinbase/cds-web-visualization'", "import { useSparklinePath } from '@coinbase/cds-common/visualizations/useSparklinePath'"],
9
9
  example: () => {
10
10
  const data = [20, 30, 5, 45, 0];
11
11
  // @ts-expect-error: useSparklinePath is not typed correctly
@@ -312,6 +312,7 @@ function SparklineInteractiveWithGeneric(_ref4) {
312
312
  }
313
313
 
314
314
  /**
315
- * @deprecated Use LineChart instead.
315
+ * @deprecated Use LineChart instead. This will be removed in a future major release.
316
+ * @deprecationExpectedRemoval v4
316
317
  */
317
318
  export const SparklineInteractive = /*#__PURE__*/memo(SparklineInteractiveWithGeneric);
@@ -8,7 +8,7 @@ import { figma } from '@figma/code-connect';
8
8
  import { SparklineInteractive } from '../SparklineInteractive';
9
9
  import { jsx as _jsx } from "react/jsx-runtime";
10
10
  figma.connect(SparklineInteractive, 'https://www.figma.com/design/k5CtyJccNQUGMI5bI4lJ2g/✨-CDS-Components?node-id=320-14858&m=dev', {
11
- imports: ["import { SparklineInteractive } from '@coinbase/cds-web-visualization';"],
11
+ imports: ["import { SparklineInteractive } from '@coinbase/cds-web-visualization'"],
12
12
  props: {
13
13
  compact: figma.boolean('compact'),
14
14
  disableScrubbing: figma.boolean('scrubbing', {
@@ -9,7 +9,7 @@ import { SparklineInteractive } from '../../sparkline-interactive/SparklineInter
9
9
  import { SparklineInteractiveHeader } from '../SparklineInteractiveHeader';
10
10
  import { jsx as _jsx } from "react/jsx-runtime";
11
11
  figma.connect(SparklineInteractiveHeader, 'https://www.figma.com/design/k5CtyJccNQUGMI5bI4lJ2g/✨-CDS-Components?node-id=320-14931&m=dev', {
12
- imports: ["import { SparklineInteractiveHeader } from '@coinbase/cds-web-visualization';", "import { SparklineInteractive } from '@coinbase/cds-web-visualization';"],
12
+ imports: ["import { SparklineInteractiveHeader } from '@coinbase/cds-web-visualization'", "import { SparklineInteractive } from '@coinbase/cds-web-visualization'"],
13
13
  props: {
14
14
  compact: figma.boolean('compact'),
15
15
  disableScrubbing: figma.boolean('scrubbing', {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coinbase/cds-web-visualization",
3
- "version": "3.4.0-beta.8",
3
+ "version": "3.4.0",
4
4
  "description": "Coinbase Design System - Web Sparkline",
5
5
  "repository": {
6
6
  "type": "git",
@@ -38,10 +38,11 @@
38
38
  "CHANGELOG"
39
39
  ],
40
40
  "peerDependencies": {
41
- "@coinbase/cds-common": "^8.27.2",
42
- "@coinbase/cds-lottie-files": "^3.3.3",
43
- "@coinbase/cds-utils": "^2.3.4",
44
- "@coinbase/cds-web": "^8.27.2",
41
+ "@coinbase/cds-common": "^8.62.1",
42
+ "@coinbase/cds-lottie-files": "^3.3.4",
43
+ "@coinbase/cds-utils": "^2.3.5",
44
+ "@coinbase/cds-web": "^8.62.1",
45
+ "framer-motion": "^10.18.0",
45
46
  "react": "^18.3.1",
46
47
  "react-dom": "^18.3.1"
47
48
  },
@@ -58,13 +59,13 @@
58
59
  "@babel/preset-env": "^7.28.0",
59
60
  "@babel/preset-react": "^7.27.1",
60
61
  "@babel/preset-typescript": "^7.27.1",
61
- "@coinbase/cds-common": "^8.27.2",
62
- "@coinbase/cds-lottie-files": "^3.3.3",
63
- "@coinbase/cds-utils": "^2.3.4",
64
- "@coinbase/cds-web": "^8.27.2",
65
- "@figma/code-connect": "^1.3.4",
62
+ "@coinbase/cds-common": "^8.62.1",
63
+ "@coinbase/cds-lottie-files": "^3.3.4",
64
+ "@coinbase/cds-utils": "^2.3.5",
65
+ "@coinbase/cds-web": "^8.62.1",
66
66
  "@linaria/core": "^3.0.0-beta.22",
67
67
  "@types/react": "^18.3.12",
68
- "@types/react-dom": "^18.3.1"
68
+ "@types/react-dom": "^18.3.1",
69
+ "framer-motion": "^10.18.0"
69
70
  }
70
71
  }