@coinbase/cds-common 8.66.2 → 9.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dts/hooks/useFallbackShape.d.ts +3 -3
  3. package/dts/hooks/useFallbackShape.d.ts.map +1 -1
  4. package/dts/hooks/useMergeRefs.d.ts +3 -14
  5. package/dts/hooks/useMergeRefs.d.ts.map +1 -1
  6. package/dts/internal/utils/storyBuilder.d.ts +1 -1
  7. package/dts/overlays/ToastProvider.d.ts +2 -7
  8. package/dts/overlays/ToastProvider.d.ts.map +1 -1
  9. package/dts/overlays/useAlert.d.ts +1 -1
  10. package/dts/overlays/useModal.d.ts +1 -1
  11. package/dts/overlays/useToastQueue.d.ts.map +1 -1
  12. package/dts/svg/shape.d.ts +3 -0
  13. package/dts/svg/shape.d.ts.map +1 -0
  14. package/dts/tokens/button.d.ts +13 -3
  15. package/dts/tokens/button.d.ts.map +1 -1
  16. package/dts/tokens/cell.d.ts +12 -0
  17. package/dts/tokens/cell.d.ts.map +1 -1
  18. package/dts/tokens/dot.d.ts +16 -2
  19. package/dts/tokens/dot.d.ts.map +1 -1
  20. package/dts/tour/TourContext.d.ts +7 -3
  21. package/dts/tour/TourContext.d.ts.map +1 -1
  22. package/dts/tour/useTour.d.ts +45 -12
  23. package/dts/tour/useTour.d.ts.map +1 -1
  24. package/dts/types/BoxBaseProps.d.ts +4 -0
  25. package/dts/types/BoxBaseProps.d.ts.map +1 -1
  26. package/dts/types/ButtonBaseProps.d.ts +5 -1
  27. package/dts/types/ButtonBaseProps.d.ts.map +1 -1
  28. package/dts/types/DimensionStyles.d.ts +16 -0
  29. package/dts/types/DimensionStyles.d.ts.map +1 -1
  30. package/dts/types/Position.d.ts +4 -0
  31. package/dts/types/Position.d.ts.map +1 -1
  32. package/dts/types/index.d.ts +0 -1
  33. package/dts/types/index.d.ts.map +1 -1
  34. package/dts/utils/flattenNodes.d.ts +2 -3
  35. package/dts/utils/flattenNodes.d.ts.map +1 -1
  36. package/dts/utils/getButtonSpacingProps.d.ts +4 -0
  37. package/dts/utils/getButtonSpacingProps.d.ts.map +1 -1
  38. package/dts/utils/mergeRefs.d.ts +28 -0
  39. package/dts/utils/mergeRefs.d.ts.map +1 -0
  40. package/dts/visualizations/useVisualizationDimensions.d.ts +7 -6
  41. package/dts/visualizations/useVisualizationDimensions.d.ts.map +1 -1
  42. package/esm/hooks/useGroupToggler.js +1 -1
  43. package/esm/hooks/useMergeRefs.js +3 -32
  44. package/esm/hooks/usePreviousValue.js +1 -1
  45. package/esm/hooks/useTimer.js +2 -2
  46. package/esm/lottie/useStatusAnimationPoller.js +1 -1
  47. package/esm/overlays/useAlert.js +1 -1
  48. package/esm/overlays/useModal.js +1 -1
  49. package/esm/overlays/useToastQueue.js +2 -1
  50. package/esm/svg/shape.js +1 -0
  51. package/esm/tokens/button.js +13 -3
  52. package/esm/tokens/cell.js +15 -0
  53. package/esm/tokens/dot.js +17 -3
  54. package/esm/tokens/select.js +1 -1
  55. package/esm/tour/useTour.js +20 -0
  56. package/esm/types/index.js +0 -1
  57. package/esm/utils/flattenNodes.js +3 -6
  58. package/esm/utils/getButtonSpacingProps.js +5 -0
  59. package/esm/utils/mergeRefs.js +81 -0
  60. package/esm/visualizations/useCounter.js +1 -1
  61. package/package.json +9 -8
  62. package/dts/types/StickyFooterProps.d.ts +0 -25
  63. package/dts/types/StickyFooterProps.d.ts.map +0 -1
  64. package/esm/types/StickyFooterProps.js +0 -1
package/CHANGELOG.md CHANGED
@@ -8,6 +8,12 @@ All notable changes to this project will be documented in this file.
8
8
 
9
9
  <!-- template-start -->
10
10
 
11
+ ## 9.0.0-rc.1 (4/28/2026 PST)
12
+
13
+ #### 💥 Breaking
14
+
15
+ - Feat: CDS 9 release candidate 1.
16
+
11
17
  ## 8.66.2 (4/28/2026 PST)
12
18
 
13
19
  #### 🐞 Fixes
@@ -3,12 +3,12 @@ export type UseFallbackShapeOptions = {
3
3
  disableRandomRectWidth?: boolean;
4
4
  rectWidthVariant?: number;
5
5
  };
6
- export declare function useFallbackShape(
6
+ export declare function useFallbackShape<T = string | number>(
7
7
  shape: Shape,
8
- baseWidth: number | string,
8
+ baseWidth: T,
9
9
  options?: UseFallbackShapeOptions,
10
10
  ): {
11
11
  borderRadius: number;
12
- width: string | number;
12
+ width: number | T;
13
13
  };
14
14
  //# sourceMappingURL=useFallbackShape.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useFallbackShape.d.ts","sourceRoot":"","sources":["../../src/hooks/useFallbackShape.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAI5C,MAAM,MAAM,uBAAuB,GAAG;IACpC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,MAAM,GAAG,MAAM,EAC1B,OAAO,CAAC,EAAE,uBAAuB;;;EAkClC"}
1
+ {"version":3,"file":"useFallbackShape.d.ts","sourceRoot":"","sources":["../../src/hooks/useFallbackShape.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAI5C,MAAM,MAAM,uBAAuB,GAAG;IACpC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM,EAClD,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,CAAC,EACZ,OAAO,CAAC,EAAE,uBAAuB;;;EAkClC"}
@@ -1,17 +1,6 @@
1
1
  /**
2
- * Merges multiple refs into a single ref callback. Supports both callback refs
3
- * and object refs. `null`/`undefined` refs are ignored.
4
- *
5
- * The returned callback is referentially stable across renders as long as the
6
- * underlying refs themselves are stable. This is critical under React 19,
7
- * which schedules a detach (`oldRef(null)`) followed by an attach
8
- * (`newRef(node)`) every time a ref-callback's identity changes. Without
9
- * `useCallback` here, every render would create a new merged callback,
10
- * triggering React 19's detach/attach lifecycle and — when one of the merged
11
- * refs synchronously sets state during attach/detach — an infinite update
12
- * loop ending in `Maximum update depth exceeded`.
2
+ * @deprecated Import from `@coinbase/cds-common/utils/mergeRefs` instead. This will be removed in a future major release.
3
+ * @deprecationExpectedRemoval v10
13
4
  */
14
- export declare const useMergeRefs: <T = any>(
15
- ...refs: (React.MutableRefObject<T> | React.LegacyRef<T> | undefined | null)[]
16
- ) => React.RefCallback<T>;
5
+ export { useMergeRefs } from '../utils/mergeRefs';
17
6
  //# sourceMappingURL=useMergeRefs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMergeRefs.d.ts","sourceRoot":"","sources":["../../src/hooks/useMergeRefs.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,YAAY,GAAI,CAAC,GAAG,GAAG,EAClC,GAAG,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,EAAE,KAC7E,KAAK,CAAC,WAAW,CAAC,CAAC,CAiBrB,CAAC"}
1
+ {"version":3,"file":"useMergeRefs.d.ts","sourceRoot":"","sources":["../../src/hooks/useMergeRefs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
@@ -104,7 +104,7 @@ export declare const baseConfig: {
104
104
  };
105
105
  argTypes: {
106
106
  isDarkMode: {
107
- control: string;
107
+ control: 'boolean';
108
108
  description: string;
109
109
  };
110
110
  };
@@ -1,11 +1,6 @@
1
1
  import React from 'react';
2
2
  import type { ThemeVars } from '../core/theme';
3
- import type {
4
- DimensionValue,
5
- OverlayLifecycleProps,
6
- SharedAccessibilityProps,
7
- SharedProps,
8
- } from '../types';
3
+ import type { OverlayLifecycleProps, SharedAccessibilityProps, SharedProps } from '../types';
9
4
  export type ToastRefHandle = {
10
5
  hide: () => Promise<boolean>;
11
6
  };
@@ -41,7 +36,7 @@ export type ToastBaseProps = SharedProps &
41
36
  /**
42
37
  * The vertical offset from the bottom of the screen
43
38
  */
44
- bottomOffset?: DimensionValue;
39
+ bottomOffset?: string | number;
45
40
  /**
46
41
  * Controls color surge of the Toast background
47
42
  * @default primary
@@ -1 +1 @@
1
- {"version":3,"file":"ToastProvider.d.ts","sourceRoot":"","sources":["../../src/overlays/ToastProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+D,MAAM,OAAO,CAAC;AAEpF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACrB,wBAAwB,EACxB,WAAW,EACZ,MAAM,UAAU,CAAC;AAIlB,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG;IACtC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,WAAW,GACtC,wBAAwB,GACxB,IAAI,CAAC,qBAAqB,EAAE,YAAY,GAAG,WAAW,CAAC,GAAG;IACxD;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;OAEG;IACH,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B;;;OAGG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC;CAC3B,CAAC;AAEJ,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC,cAAc,GAAG;IAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;CAAE,CAAC,CAAC;AAEpG;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,YAAY,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;CACpD,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,QAAQ,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACpE,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,YAAY,oCAQvB,CAAC;AAEH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAsC/E,CAAC"}
1
+ {"version":3,"file":"ToastProvider.d.ts","sourceRoot":"","sources":["../../src/overlays/ToastProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+D,MAAM,OAAO,CAAC;AAEpF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAI7F,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG;IACtC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,WAAW,GACtC,wBAAwB,GACxB,IAAI,CAAC,qBAAqB,EAAE,YAAY,GAAG,WAAW,CAAC,GAAG;IACxD;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B;;;OAGG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC;CAC3B,CAAC;AAEJ,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC,cAAc,GAAG;IAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;CAAE,CAAC,CAAC;AAEpG;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,YAAY,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;CACpD,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,QAAQ,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACpE,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,YAAY,oCAQvB,CAAC;AAEH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAsC/E,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @deprecated Use the visible and onRequestClose props as outlined in the docs here https://cds.coinbase.com/components/modal#get-started. This will be removed in a future major release.
2
+ * @deprecated Use the `visible` and `onRequestClose` props as outlined in the docs here https://cds.coinbase.com/components/modal#get-started. This will be removed in a future major release.
3
3
  * @deprecationExpectedRemoval v7
4
4
  */
5
5
  export declare const useAlert: () => {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @deprecated Use the visible and onRequestClose props as outlined in the docs here https://cds.coinbase.com/components/modal#get-started. This will be removed in a future major release.
2
+ * @deprecated Use the `visible` and `onRequestClose` props as outlined in the docs here https://cds.coinbase.com/components/modal#get-started. This will be removed in a future major release.
3
3
  * @deprecationExpectedRemoval v7
4
4
  */
5
5
  export declare const useModal: () => {
@@ -1 +1 @@
1
- {"version":3,"file":"useToastQueue.d.ts","sourceRoot":"","sources":["../../src/overlays/useToastQueue.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAkB,MAAM,iBAAiB,CAAC;AAEjE,eAAO,MAAM,aAAa;;wBAoCZ,SAAS,CAAC,SAAS,CAAC,YAAY,MAAM;;;;;;CAgCnD,CAAC"}
1
+ {"version":3,"file":"useToastQueue.d.ts","sourceRoot":"","sources":["../../src/overlays/useToastQueue.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAkB,MAAM,iBAAiB,CAAC;AAEjE,eAAO,MAAM,aAAa;;wBAsCZ,SAAS,CAAC,SAAS,CAAC,YAAY,MAAM;;;;;;CAgCnD,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const hexagonShapePath =
2
+ 'M15.4855 6.0242C16.1715 7.24852 16.1715 8.75148 15.4855 9.97581L13.4213 13.6598C12.7259 14.9008 11.4317 15.6667 10.0301 15.6667H5.96994C4.56828 15.6667 3.2741 14.9008 2.57874 13.6598L0.514515 9.97581C-0.171504 8.75148 -0.171505 7.24852 0.514514 6.0242L2.57874 2.34022C3.2741 1.09922 4.56828 0.333336 5.96994 0.333336H10.0301C11.4317 0.333336 12.7259 1.09922 13.4213 2.34022L15.4855 6.0242Z';
3
+ //# sourceMappingURL=shape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shape.d.ts","sourceRoot":"","sources":["../../src/svg/shape.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,0YAC4W,CAAC"}
@@ -10,9 +10,9 @@ export declare const variants: {
10
10
  readonly borderColor: 'bgSecondary';
11
11
  };
12
12
  readonly tertiary: {
13
- readonly color: 'fgInverse';
14
- readonly background: 'bgInverse';
15
- readonly borderColor: 'bgInverse';
13
+ readonly color: 'fg';
14
+ readonly background: 'bgTertiary';
15
+ readonly borderColor: 'bgTertiary';
16
16
  };
17
17
  readonly foregroundMuted: {
18
18
  readonly color: 'fgMuted';
@@ -29,6 +29,11 @@ export declare const variants: {
29
29
  readonly background: 'bgNegative';
30
30
  readonly borderColor: 'bgNegative';
31
31
  };
32
+ readonly inverse: {
33
+ readonly color: 'fgInverse';
34
+ readonly background: 'bgInverse';
35
+ readonly borderColor: 'bgInverse';
36
+ };
32
37
  };
33
38
  export declare const transparentVariants: {
34
39
  readonly primary: {
@@ -61,5 +66,10 @@ export declare const transparentVariants: {
61
66
  readonly background: 'bg';
62
67
  readonly borderColor: 'transparent';
63
68
  };
69
+ readonly inverse: {
70
+ readonly color: 'fg';
71
+ readonly background: 'bg';
72
+ readonly borderColor: 'transparent';
73
+ };
64
74
  };
65
75
  //# sourceMappingURL=button.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../src/tokens/button.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BmB,CAAC;AAEzC,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BQ,CAAC"}
1
+ {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../src/tokens/button.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCmB,CAAC;AAEzC,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCQ,CAAC"}
@@ -2,7 +2,15 @@ import type { IconName, ThemeVars } from '..';
2
2
  export declare const mediaSize = 32;
3
3
  export declare const imageSize = 48;
4
4
  export declare const pictogramScaleMultiplier = 1;
5
+ /**
6
+ * @deprecated This will be removed in a future major release.
7
+ * @deprecationExpectedRemoval v10
8
+ * */
5
9
  export declare const listHeight = 80;
10
+ /**
11
+ * @deprecated This will be removed in a future major release.
12
+ * @deprecationExpectedRemoval v10
13
+ * */
6
14
  export declare const compactListHeight = 40;
7
15
  /** Spacing configs for Cells to be parsed in [web/mobile]/hooks/useCellSpacing */
8
16
  /** Default spacing config */
@@ -18,6 +26,10 @@ export declare const defaultSpacingConfig: {
18
26
  readonly marginX: 0;
19
27
  };
20
28
  };
29
+ /**
30
+ * @deprecated Used by deprecated Select component. This will be removed in a future major release.
31
+ * @deprecationExpectedRemoval v10
32
+ */
21
33
  export declare const selectOptionHeight = 56;
22
34
  export declare const cellPriorities: readonly ['start', 'middle', 'end'];
23
35
  export declare const cellHelperTextVariants: Record<
@@ -1 +1 @@
1
- {"version":3,"file":"cell.d.ts","sourceRoot":"","sources":["../../src/tokens/cell.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAI9C,eAAO,MAAM,SAAS,KAAK,CAAC;AAG5B,eAAO,MAAM,SAAS,KAAK,CAAC;AAE5B,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C,eAAO,MAAM,UAAU,KAAK,CAAC;AAE7B,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC,kFAAkF;AAElF,6BAA6B;AAC7B,eAAO,MAAM,oBAAoB;;;;;;;;;;;CAWvB,CAAC;AAEX,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC,eAAO,MAAM,cAAc,qCAAsC,CAAC;AAElE,eAAO,MAAM,sBAAsB,EAAE,MAAM,CACzC,aAAa,GAAG,SAAS,GAAG,OAAO,EACnC;IACE,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC;CACxB,CAcF,CAAC"}
1
+ {"version":3,"file":"cell.d.ts","sourceRoot":"","sources":["../../src/tokens/cell.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAI9C,eAAO,MAAM,SAAS,KAAK,CAAC;AAG5B,eAAO,MAAM,SAAS,KAAK,CAAC;AAE5B,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C;;;KAGK;AACL,eAAO,MAAM,UAAU,KAAK,CAAC;AAE7B;;;KAGK;AACL,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC,kFAAkF;AAElF,6BAA6B;AAC7B,eAAO,MAAM,oBAAoB;;;;;;;;;;;CAWvB,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC,eAAO,MAAM,cAAc,qCAAsC,CAAC;AAElE,eAAO,MAAM,sBAAsB,EAAE,MAAM,CACzC,aAAa,GAAG,SAAS,GAAG,OAAO,EACnC;IACE,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC;CACxB,CAcF,CAAC"}
@@ -2,11 +2,25 @@ import type { DotSize } from '../types';
2
2
  import type { AvatarSize } from '../types/AvatarSize';
3
3
  export declare const avatarIconSizeMap: Record<AvatarSize, DotSize>;
4
4
  export declare const avatarDotSizeMap: Record<AvatarSize, DotSize>;
5
+ /**
6
+ * The fixed height of the DotCount component.
7
+ * Width grows based on content length.
8
+ **/
5
9
  export declare const dotCountSize = 24;
10
+ /**
11
+ * @deprecated Use local sizing logic instead. This export is temporarily supported for
12
+ * compatibility. This will be removed in a future major release.
13
+ * @deprecationExpectedRemoval v10
14
+ */
6
15
  export declare const dotSizeTokens: {
7
16
  readonly s: 28;
8
17
  readonly m: 36;
9
- readonly l: 42;
18
+ readonly l: 48;
10
19
  };
11
- export declare const getDotSize: (count?: number) => 28 | 36 | 42;
20
+ /**
21
+ * @deprecated Use local sizing logic instead. This export is temporarily supported for
22
+ * compatibility. This will be removed in a future major release.
23
+ * @deprecationExpectedRemoval v10
24
+ */
25
+ export declare const getDotSize: (count?: number) => 48 | 28 | 36;
12
26
  //# sourceMappingURL=dot.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dot.d.ts","sourceRoot":"","sources":["../../src/tokens/dot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,CAOhD,CAAC;AAEX,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,CAO/C,CAAC;AAEX,eAAO,MAAM,YAAY,KAAK,CAAC;AAI/B,eAAO,MAAM,aAAa;;;;CAAmC,CAAC;AAC9D,eAAO,MAAM,UAAU,GAAI,QAAQ,MAAM,iBAMxC,CAAC"}
1
+ {"version":3,"file":"dot.d.ts","sourceRoot":"","sources":["../../src/tokens/dot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,CAOhD,CAAC;AAEX,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,CAO/C,CAAC;AAEX;;;IAGI;AACJ,eAAO,MAAM,YAAY,KAAK,CAAC;AAE/B;;;;GAIG;AACH,eAAO,MAAM,aAAa;;;;CAAmC,CAAC;AAE9D;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAI,QAAQ,MAAM,iBAMxC,CAAC"}
@@ -1,8 +1,12 @@
1
1
  import { type Context } from 'react';
2
2
  import type { TourApi } from './useTour';
3
- export type TourContextValue<TourStepId extends string = string> = TourApi<TourStepId>;
4
- export declare const TourContext: Context<TourContextValue<string> | undefined>;
3
+ export type TourContextValue<TourStepId extends string = string, TTarget = unknown> = TourApi<
4
+ TourStepId,
5
+ TTarget
6
+ >;
7
+ export declare const TourContext: Context<TourContextValue<string, unknown> | undefined>;
5
8
  export declare const useTourContext: <
6
9
  TourStepId extends string = string,
7
- >() => TourContextValue<TourStepId>;
10
+ TTarget = unknown,
11
+ >() => TourContextValue<TourStepId, TTarget>;
8
12
  //# sourceMappingURL=TourContext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TourContext.d.ts","sourceRoot":"","sources":["../../src/tour/TourContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAA6B,MAAM,OAAO,CAAC;AAEhE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,MAAM,MAAM,gBAAgB,CAAC,UAAU,SAAS,MAAM,GAAG,MAAM,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;AAEvF,eAAO,MAAM,WAAW,+CAAyD,CAAC;AAElF,eAAO,MAAM,cAAc,GACzB,UAAU,SAAS,MAAM,GAAG,MAAM,OAC/B,gBAAgB,CAAC,UAAU,CAI/B,CAAC"}
1
+ {"version":3,"file":"TourContext.d.ts","sourceRoot":"","sources":["../../src/tour/TourContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAA6B,MAAM,OAAO,CAAC;AAEhE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,MAAM,MAAM,gBAAgB,CAAC,UAAU,SAAS,MAAM,GAAG,MAAM,EAAE,OAAO,GAAG,OAAO,IAAI,OAAO,CAC3F,UAAU,EACV,OAAO,CACR,CAAC;AAEF,eAAO,MAAM,WAAW,wDAAyD,CAAC;AAElF,eAAO,MAAM,cAAc,GACzB,UAAU,SAAS,MAAM,GAAG,MAAM,EAClC,OAAO,GAAG,OAAO,OACd,gBAAgB,CAAC,UAAU,EAAE,OAAO,CAMxC,CAAC"}
@@ -1,19 +1,45 @@
1
1
  import type React from 'react';
2
- import type { View } from 'react-native';
3
- import { type Coords, type Placement } from '@floating-ui/react-dom';
2
+ /**
3
+ * Placement for the tour step arrow. Matches the placement values used by positioning libraries
4
+ * (e.g. @floating-ui) so web/mobile can pass through their placement directly.
5
+ */
6
+ export type TourStepArrowPlacement =
7
+ | 'top'
8
+ | 'top-start'
9
+ | 'top-end'
10
+ | 'right'
11
+ | 'right-start'
12
+ | 'right-end'
13
+ | 'bottom'
14
+ | 'bottom-start'
15
+ | 'bottom-end'
16
+ | 'left'
17
+ | 'left-start'
18
+ | 'left-end';
19
+ /**
20
+ * Arrow coordinates and offsets for the tour step arrow. Matches the shape provided by arrow
21
+ * middleware (e.g. @floating-ui) so web/mobile can pass through their arrow data directly.
22
+ */
23
+ export type TourStepArrowData = {
24
+ x?: number;
25
+ y?: number;
26
+ centerOffset?: number;
27
+ alignmentOffset?: number;
28
+ };
4
29
  /**
5
30
  * @deprecated Import from `@coinbase/cds-web` or `@coinbase/cds-mobile` instead. This will be removed in a future major release.
6
31
  * @deprecationExpectedRemoval v10
7
32
  */
8
33
  export type TourStepArrowComponentProps = {
9
- arrow?: Partial<Coords> & {
10
- centerOffset: number;
11
- alignmentOffset?: number;
12
- };
13
- placement: Placement;
34
+ /** Arrow coordinates and offsets for positioning the arrow element. */
35
+ arrow?: TourStepArrowData;
36
+ /** Placement of the arrow relative to the floating element. */
37
+ placement: TourStepArrowPlacement;
14
38
  style?: Record<string, string | number>;
15
39
  };
16
40
  /**
41
+ * The TourStepArrowComponent forwards a ref to the underlying element.
42
+ * This is required for the positioning library to work correctly.
17
43
  * @deprecated Import from `@coinbase/cds-web` or `@coinbase/cds-mobile` instead. This will be removed in a future major release.
18
44
  * @deprecationExpectedRemoval v10
19
45
  */
@@ -93,12 +119,19 @@ export type TourOptions<TourStepId extends string = string> = {
93
119
  activeTourStep: TourStepValue<TourStepId> | null;
94
120
  onChange: (tourStep: TourStepValue<TourStepId> | null) => void;
95
121
  };
96
- export type TourApi<TourStepId extends string = string> = Omit<
122
+ /**
123
+ * API returned by useTour and provided via TourContext.
124
+ * @template TourStepId - Step id string literal type.
125
+ * @template TTarget - Type of the active step's target element (e.g. HTMLElement for web, View for react-native). Defaults to unknown.
126
+ */
127
+ export type TourApi<TourStepId extends string = string, TTarget = unknown> = Omit<
97
128
  TourOptions<TourStepId>,
98
129
  'onChange'
99
130
  > & {
100
- activeTourStepTarget: HTMLElement | View | null;
101
- setActiveTourStepTarget: (target: HTMLElement | View | null) => void;
131
+ /** The target element of the currently active tour step. */
132
+ activeTourStepTarget: TTarget | null;
133
+ /** Set the target element of the currently active tour step. */
134
+ setActiveTourStepTarget: (target: TTarget | null) => void;
102
135
  setActiveTourStep: (tourStepId: TourStepId | null) => void;
103
136
  startTour: (tourStepId?: TourStepId) => void;
104
137
  stopTour: () => void;
@@ -109,9 +142,9 @@ export type TourApi<TourStepId extends string = string> = Omit<
109
142
  * A controlled hook for managing tour state, such as the currently active tour step.
110
143
  * @see {@link https://linear.app/coinbase/issue/CDS-1878 CDS-1878} for planned refactor to make this API platform agnostic.
111
144
  */
112
- export declare const useTour: <TourStepId extends string = string>({
145
+ export declare const useTour: <TourStepId extends string = string, TTarget = unknown>({
113
146
  steps,
114
147
  activeTourStep,
115
148
  onChange,
116
- }: TourOptions<TourStepId>) => TourApi<TourStepId>;
149
+ }: TourOptions<TourStepId>) => TourApi<TourStepId, TTarget>;
117
150
  //# sourceMappingURL=useTour.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useTour.d.ts","sourceRoot":"","sources":["../../src/tour/useTour.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useTour.d.ts","sourceRoot":"","sources":["../../src/tour/useTour.ts"],"names":[],"mappings":"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"}
@@ -58,6 +58,10 @@ export type FlexStyles = {
58
58
  | 'space-evenly';
59
59
  };
60
60
  export type PinningDirection = 'top' | 'bottom' | 'left' | 'right' | 'all';
61
+ /**
62
+ * @deprecated Use PositionStyles type in mobile/src/styles/styleProps.ts instead. This will be removed in a future major release.
63
+ * @deprecationExpectedRemoval v10
64
+ */
61
65
  export type PositionStyles = {
62
66
  /** Position the box to the bottom edge. */
63
67
  bottom?: DimensionValue;
@@ -1 +1 @@
1
- {"version":3,"file":"BoxBaseProps.d.ts","sourceRoot":"","sources":["../../src/types/BoxBaseProps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,UAAU,GAAG,QAAQ,CAAC;AACjE,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG,SAAS,CAAC;AACxD,MAAM,MAAM,eAAe,GAAG,eAAe,GAAG,cAAc,CAAC;AAC/D,MAAM,MAAM,UAAU,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACjD,MAAM,MAAM,QAAQ,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7C,MAAM,MAAM,UAAU,GAAG;IACvB;;;OAGG;IACH,YAAY,CAAC,EACT,YAAY,GACZ,UAAU,GACV,QAAQ,GACR,SAAS,GACT,eAAe,GACf,cAAc,GACd,cAAc,CAAC;IACnB;;;OAGG;IACH,UAAU,CAAC,EAAE,YAAY,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;IAC3E;;;OAGG;IACH,SAAS,CAAC,EAAE,YAAY,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,CAAC;IACnF,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,yDAAyD;IACzD,aAAa,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,aAAa,GAAG,gBAAgB,CAAC;IACpE,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,cAAc,CAAC;IAC9C;;;OAGG;IACH,cAAc,CAAC,EACX,YAAY,GACZ,UAAU,GACV,QAAQ,GACR,eAAe,GACf,cAAc,GACd,cAAc,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;AAE3E,MAAM,MAAM,cAAc,GAAG;IAC3B,2CAA2C;IAC3C,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,yCAAyC;IACzC,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,wCAAwC;IACxC,GAAG,CAAC,EAAE,cAAc,CAAC;IACrB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC"}
1
+ {"version":3,"file":"BoxBaseProps.d.ts","sourceRoot":"","sources":["../../src/types/BoxBaseProps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,UAAU,GAAG,QAAQ,CAAC;AACjE,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG,SAAS,CAAC;AACxD,MAAM,MAAM,eAAe,GAAG,eAAe,GAAG,cAAc,CAAC;AAC/D,MAAM,MAAM,UAAU,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACjD,MAAM,MAAM,QAAQ,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7C,MAAM,MAAM,UAAU,GAAG;IACvB;;;OAGG;IACH,YAAY,CAAC,EACT,YAAY,GACZ,UAAU,GACV,QAAQ,GACR,SAAS,GACT,eAAe,GACf,cAAc,GACd,cAAc,CAAC;IACnB;;;OAGG;IACH,UAAU,CAAC,EAAE,YAAY,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;IAC3E;;;OAGG;IACH,SAAS,CAAC,EAAE,YAAY,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,CAAC;IACnF,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,yDAAyD;IACzD,aAAa,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,aAAa,GAAG,gBAAgB,CAAC;IACpE,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,cAAc,CAAC;IAC9C;;;OAGG;IACH,cAAc,CAAC,EACX,YAAY,GACZ,UAAU,GACV,QAAQ,GACR,eAAe,GACf,cAAc,GACd,cAAc,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;AAE3E;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,2CAA2C;IAC3C,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,yCAAyC;IACzC,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,wCAAwC;IACxC,GAAG,CAAC,EAAE,cAAc,CAAC;IACrB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC"}
@@ -4,5 +4,9 @@ export type ButtonVariant =
4
4
  | 'tertiary'
5
5
  | 'positive'
6
6
  | 'negative'
7
- | 'foregroundMuted';
7
+ /**
8
+ * @deprecated Use `secondary` directly. `foregroundMuted` is temporarily supported for compatibility and will be removed in a future release.
9
+ */
10
+ | 'foregroundMuted'
11
+ | 'inverse';
8
12
  //# sourceMappingURL=ButtonBaseProps.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonBaseProps.d.ts","sourceRoot":"","sources":["../../src/types/ButtonBaseProps.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GACrB,SAAS,GACT,WAAW,GACX,UAAU,GACV,UAAU,GACV,UAAU,GACV,iBAAiB,CAAC"}
1
+ {"version":3,"file":"ButtonBaseProps.d.ts","sourceRoot":"","sources":["../../src/types/ButtonBaseProps.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GACrB,SAAS,GACT,WAAW,GACX,UAAU,GACV,UAAU,GACV,UAAU;AACZ;;GAEG;GACD,iBAAiB,GACjB,SAAS,CAAC"}
@@ -1,7 +1,23 @@
1
+ /**
2
+ * @deprecated Use the dimension props (e.g. `width`, `height`) directly with values of type `'auto' | number | string`. This will be removed in a future major release.
3
+ * @deprecationExpectedRemoval v10
4
+ */
1
5
  export type FixedValue = number | string;
6
+ /**
7
+ * @deprecated Use the dimension props (e.g. `width`, `height`) directly with values of type `'auto' | number | string`. This will be removed in a future major release.
8
+ * @deprecationExpectedRemoval v10
9
+ */
2
10
  export type PercentageValue = string;
11
+ /**
12
+ * @deprecated Use the dimension props (e.g. `width`, `height`) directly with values of type `'auto' | number | string`. This will be removed in a future major release.
13
+ * @deprecationExpectedRemoval v10
14
+ */
3
15
  export type DimensionValue = 'auto' | FixedValue | PercentageValue;
4
16
  export type ResizeMode = 'cover' | 'contain';
17
+ /**
18
+ * @deprecated Use the dimension props (e.g. `width`, `height`) directly with values of type `'auto' | number | string`. This will be removed in a future major release.
19
+ * @deprecationExpectedRemoval v10
20
+ */
5
21
  export type DimensionStyles = {
6
22
  /** Set a fixed height. */
7
23
  height?: DimensionValue;
@@ -1 +1 @@
1
- {"version":3,"file":"DimensionStyles.d.ts","sourceRoot":"","sources":["../../src/types/DimensionStyles.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AACzC,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC;AACrC,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,UAAU,GAAG,eAAe,CAAC;AACnE,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;AAE7C,MAAM,MAAM,eAAe,GAAG;IAC5B,0BAA0B;IAC1B,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,4BAA4B;IAC5B,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,yBAAyB;IACzB,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB;;;OAGG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;CAClD,CAAC"}
1
+ {"version":3,"file":"DimensionStyles.d.ts","sourceRoot":"","sources":["../../src/types/DimensionStyles.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AACzC;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC;AACrC;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,UAAU,GAAG,eAAe,CAAC;AACnE,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;AAE7C;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,0BAA0B;IAC1B,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,4BAA4B;IAC5B,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,yBAAyB;IACzB,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB;;;OAGG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;CAClD,CAAC"}
@@ -1,2 +1,6 @@
1
+ /**
2
+ * @deprecated Use the CSSProperties['position'] or ViewStyle['position'] instead. This will be removed in a future major release.
3
+ * @deprecationExpectedRemoval v10
4
+ */
1
5
  export type Position = 'static' | 'relative' | 'fixed' | 'absolute' | 'sticky';
2
6
  //# sourceMappingURL=Position.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Position.d.ts","sourceRoot":"","sources":["../../src/types/Position.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAC"}
1
+ {"version":3,"file":"Position.d.ts","sourceRoot":"","sources":["../../src/types/Position.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAC"}
@@ -48,7 +48,6 @@ export * from './SharedProps';
48
48
  export * from './SpacingProps';
49
49
  export * from './SparklineInteractiveHeaderBaseProps';
50
50
  export * from './SpreadPropsSafely';
51
- export * from './StickyFooterProps';
52
51
  export * from './TagBaseProps';
53
52
  export * from './TextBaseProps';
54
53
  export * from './TooltipBaseProps';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AACA,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,wBAAwB,CAAC;AACvC,cAAc,SAAS,CAAC;AACxB,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,UAAU,CAAC;AACzB,cAAc,yBAAyB,CAAC;AACxC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,qCAAqC,CAAC;AACpD,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,SAAS,CAAC;AACxB,cAAc,4BAA4B,CAAC;AAC3C,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uCAAuC,CAAC;AACtD,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AACA,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,wBAAwB,CAAC;AACvC,cAAc,SAAS,CAAC;AACxB,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,UAAU,CAAC;AACzB,cAAc,yBAAyB,CAAC;AACxC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,qCAAqC,CAAC;AACpD,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,SAAS,CAAC;AACxB,cAAc,4BAA4B,CAAC;AAC3C,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uCAAuC,CAAC;AACtD,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC"}
@@ -1,9 +1,8 @@
1
- type Child = string | number | React.ReactElement<any, string | React.JSXElementConstructor<any>>;
2
- export declare function hasProps(child: Child): child is React.ReactElement;
1
+ type FlattenedNode = React.ReactElement | string | number;
3
2
  export default function flattenNodes(
4
3
  children: React.ReactNode,
5
4
  depth?: number,
6
5
  keys?: (string | number)[],
7
- ): Child[];
6
+ ): FlattenedNode[];
8
7
  export {};
9
8
  //# sourceMappingURL=flattenNodes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"flattenNodes.d.ts","sourceRoot":"","sources":["../../src/utils/flattenNodes.ts"],"names":[],"mappings":"AASA,KAAK,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC;AAGlG,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,KAAK,CAAC,YAAY,CAElE;AAGD,MAAM,CAAC,OAAO,UAAU,YAAY,CAClC,QAAQ,EAAE,KAAK,CAAC,SAAS,EACzB,KAAK,SAAI,EACT,IAAI,GAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAO,GAC7B,KAAK,EAAE,CA4BT"}
1
+ {"version":3,"file":"flattenNodes.d.ts","sourceRoot":"","sources":["../../src/utils/flattenNodes.ts"],"names":[],"mappings":"AAUA,KAAK,aAAa,GAAG,KAAK,CAAC,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;AAG1D,MAAM,CAAC,OAAO,UAAU,YAAY,CAClC,QAAQ,EAAE,KAAK,CAAC,SAAS,EACzB,KAAK,SAAI,EACT,IAAI,GAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAO,GAC7B,aAAa,EAAE,CA0BjB"}
@@ -11,6 +11,10 @@ type ButtonSpacingValue = {
11
11
  marginEnd?: NegativeSpace;
12
12
  marginStart?: NegativeSpace;
13
13
  };
14
+ /**
15
+ * @deprecated This will be removed in a future major release.
16
+ * @deprecationExpectedRemoval v10
17
+ */
14
18
  export declare const getButtonSpacingProps: ({
15
19
  compact,
16
20
  flush,
@@ -1 +1 @@
1
- {"version":3,"file":"getButtonSpacingProps.d.ts","sourceRoot":"","sources":["../../src/utils/getButtonSpacingProps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAa9C,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,OAAO,CAAC;CACnC,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,QAAQ,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC;IAC3B,QAAQ,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC;IAC3B,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,WAAW,CAAC,EAAE,aAAa,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,qBAGnC,sBAAsB,KAAG,kBAW3B,CAAC"}
1
+ {"version":3,"file":"getButtonSpacingProps.d.ts","sourceRoot":"","sources":["../../src/utils/getButtonSpacingProps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAa9C,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,OAAO,CAAC;CACnC,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,QAAQ,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC;IAC3B,QAAQ,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC;IAC3B,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,WAAW,CAAC,EAAE,aAAa,CAAC;CAC7B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAAI,qBAGnC,sBAAsB,KAAG,kBAY3B,CAAC"}
@@ -0,0 +1,28 @@
1
+ import type React from 'react';
2
+ type OptionalRef<T> = React.Ref<T> | undefined;
3
+ /**
4
+ * Merge multiple refs into a single ref callback.
5
+ *
6
+ * - Supports callback refs and object refs.
7
+ * - Ignores `null`/`undefined` refs.
8
+ * - Intentionally does not support legacy string refs.
9
+ */
10
+ export declare const mergeRefs: <T = unknown>(...refs: OptionalRef<T>[]) => React.RefCallback<T>;
11
+ /**
12
+ * Like `mergeRefs`, but also includes an existing ref already present on a React element.
13
+ *
14
+ * This is React 18/19 compatible:
15
+ * - React 19 stores refs on `element.props.ref`
16
+ * - React 18 and earlier store refs on `element.ref`
17
+ */
18
+ export declare const mergeReactElementRef: <T = unknown>(
19
+ element: React.ReactElement,
20
+ ...refs: OptionalRef<T>[]
21
+ ) => React.RefCallback<T>;
22
+ /**
23
+ * @deprecated Prefer `mergeRefs` function instead. This will be removed in a future major release.
24
+ * @deprecationExpectedRemoval v10
25
+ */
26
+ export declare const useMergeRefs: <T = unknown>(...refs: OptionalRef<T>[]) => React.RefCallback<T>;
27
+ export {};
28
+ //# sourceMappingURL=mergeRefs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeRefs.d.ts","sourceRoot":"","sources":["../../src/utils/mergeRefs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,KAAK,WAAW,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;AAoB/C;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,GAAG,OAAO,EAAE,GAAG,MAAM,WAAW,CAAC,CAAC,CAAC,EAAE,KAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAUrF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,GAAI,CAAC,GAAG,OAAO,EAC9C,SAAS,KAAK,CAAC,YAAY,EAC3B,GAAG,MAAM,WAAW,CAAC,CAAC,CAAC,EAAE,KACxB,KAAK,CAAC,WAAW,CAAC,CAAC,CAGrB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,CAAC,GAAG,OAAO,EAAE,GAAG,MAAM,WAAW,CAAC,CAAC,CAAC,EAAE,KAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAsBxF,CAAC"}
@@ -1,16 +1,17 @@
1
- import type { DimensionValue } from '../types';
2
- type VisualizationDimensions = {
3
- userDefinedWidth: DimensionValue;
4
- userDefinedHeight: DimensionValue;
1
+ type VisualizationDimensions<DimensionType> = {
2
+ userDefinedWidth: DimensionType;
3
+ userDefinedHeight: DimensionType;
5
4
  calculatedWidth: number;
6
5
  calculatedHeight: number;
7
6
  };
8
- export declare const useVisualizationDimensions: ({
7
+ export declare const useVisualizationDimensions: <
8
+ DimensionType = string | number | undefined | null,
9
+ >({
9
10
  userDefinedWidth,
10
11
  userDefinedHeight,
11
12
  calculatedWidth,
12
13
  calculatedHeight,
13
- }: VisualizationDimensions) => {
14
+ }: VisualizationDimensions<DimensionType>) => {
14
15
  width: number;
15
16
  height: number;
16
17
  circleSize: number;
@@ -1 +1 @@
1
- {"version":3,"file":"useVisualizationDimensions.d.ts","sourceRoot":"","sources":["../../src/visualizations/useVisualizationDimensions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,KAAK,uBAAuB,GAAG;IAC7B,gBAAgB,EAAE,cAAc,CAAC;IACjC,iBAAiB,EAAE,cAAc,CAAC;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,0BAA0B,GAAI,6EAKxC,uBAAuB;;;;;CAqBzB,CAAC"}
1
+ {"version":3,"file":"useVisualizationDimensions.d.ts","sourceRoot":"","sources":["../../src/visualizations/useVisualizationDimensions.ts"],"names":[],"mappings":"AAEA,KAAK,uBAAuB,CAAC,aAAa,IAAI;IAC5C,gBAAgB,EAAE,aAAa,CAAC;IAChC,iBAAiB,EAAE,aAAa,CAAC;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,0BAA0B,GAAI,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,EAAE,6EAK5F,uBAAuB,CAAC,aAAa,CAAC;;;;;CAqBxC,CAAC"}
@@ -25,7 +25,7 @@ export const useGroupToggler = (values, initialState) => {
25
25
  // and just throwing it away immediately.
26
26
  const initialStateSet = useMemo(() => new Set(initialState), [initialState]);
27
27
  const [state, setState] = useState(initialStateSet);
28
- const lastMixedStateRef = useRef();
28
+ const lastMixedStateRef = useRef(undefined);
29
29
  useEffect(() => {
30
30
  const isStateMixed = state.size !== 0 && state.size !== values.length;
31
31
  if (isStateMixed) {
@@ -1,34 +1,5 @@
1
- import { useCallback } from 'react';
2
-
3
1
  /**
4
- * Merges multiple refs into a single ref callback. Supports both callback refs
5
- * and object refs. `null`/`undefined` refs are ignored.
6
- *
7
- * The returned callback is referentially stable across renders as long as the
8
- * underlying refs themselves are stable. This is critical under React 19,
9
- * which schedules a detach (`oldRef(null)`) followed by an attach
10
- * (`newRef(node)`) every time a ref-callback's identity changes. Without
11
- * `useCallback` here, every render would create a new merged callback,
12
- * triggering React 19's detach/attach lifecycle and — when one of the merged
13
- * refs synchronously sets state during attach/detach — an infinite update
14
- * loop ending in `Maximum update depth exceeded`.
2
+ * @deprecated Import from `@coinbase/cds-common/utils/mergeRefs` instead. This will be removed in a future major release.
3
+ * @deprecationExpectedRemoval v10
15
4
  */
16
- export const useMergeRefs = function () {
17
- for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {
18
- refs[_key] = arguments[_key];
19
- }
20
- return useCallback(value => {
21
- refs.forEach(ref => {
22
- if (typeof ref === 'function') {
23
- ref(value);
24
- } else if (ref != null) {
25
- ref.current = value;
26
- }
27
- });
28
- },
29
- // The deps are the spread refs themselves. React's `useCallback` shallow-
30
- // compares each element of the deps array, so the returned callback stays
31
- // stable when each underlying ref keeps the same identity across renders.
32
- // eslint-disable-next-line react-hooks/exhaustive-deps
33
- refs);
34
- };
5
+ export { useMergeRefs } from '../utils/mergeRefs';
@@ -2,7 +2,7 @@ import { useEffect, useRef } from 'react';
2
2
  export const usePreviousValue = value => {
3
3
  // The ref object is a generic container whose current property is mutable ...
4
4
  // ... and can hold any value, similar to an instance property on a class
5
- const ref = useRef();
5
+ const ref = useRef(undefined);
6
6
  // Store current value in ref
7
7
  useEffect(() => {
8
8
  ref.current = value;
@@ -2,10 +2,10 @@ import { useCallback, useEffect, useMemo, useRef } from 'react';
2
2
 
3
3
  // Timer for single execution
4
4
  export const useTimer = () => {
5
- const timerRef = useRef();
5
+ const timerRef = useRef(undefined);
6
6
  const startTimeRef = useRef(0);
7
7
  const remainingTimeRef = useRef(0);
8
- const callbackRef = useRef();
8
+ const callbackRef = useRef(undefined);
9
9
  const isPausedRef = useRef(false);
10
10
  const clear = useCallback(() => {
11
11
  if (timerRef.current) {
@@ -17,7 +17,7 @@ export const useStatusAnimationPoller = _ref => {
17
17
  isRunning.current = true;
18
18
  }
19
19
  }, [playMarkers]);
20
- const previousStatusRef = useRef();
20
+ const previousStatusRef = useRef(undefined);
21
21
 
22
22
  // onAnimationFinish will get triggered after our first useEffect
23
23
  // play completes and then after each play within onAnimationFinish completes.
@@ -1,7 +1,7 @@
1
1
  import { useOverlay } from './useOverlay';
2
2
 
3
3
  /**
4
- * @deprecated Use the visible and onRequestClose props as outlined in the docs here https://cds.coinbase.com/components/modal#get-started. This will be removed in a future major release.
4
+ * @deprecated Use the `visible` and `onRequestClose` props as outlined in the docs here https://cds.coinbase.com/components/modal#get-started. This will be removed in a future major release.
5
5
  * @deprecationExpectedRemoval v7
6
6
  */
7
7
  export const useAlert = () => {
@@ -2,7 +2,7 @@ import { useMemo } from 'react';
2
2
  import { useOverlay } from './useOverlay';
3
3
 
4
4
  /**
5
- * @deprecated Use the visible and onRequestClose props as outlined in the docs here https://cds.coinbase.com/components/modal#get-started. This will be removed in a future major release.
5
+ * @deprecated Use the `visible` and `onRequestClose` props as outlined in the docs here https://cds.coinbase.com/components/modal#get-started. This will be removed in a future major release.
6
6
  * @deprecationExpectedRemoval v7
7
7
  */
8
8
  export const useModal = () => {
@@ -5,6 +5,7 @@ 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 { cloneElement, useCallback, useEffect, useRef, useState } from 'react';
7
7
  import { useTimer } from '../hooks/useTimer';
8
+ import { mergeReactElementRef } from '../utils/mergeRefs';
8
9
  export const useToastQueue = () => {
9
10
  const [activeToast, setActiveToast] = useState();
10
11
  const toastQueue = useRef([]);
@@ -25,7 +26,7 @@ export const useToastQueue = () => {
25
26
  activeToastRef.current = null;
26
27
  setActiveToast(_objectSpread(_objectSpread({}, toast), {}, {
27
28
  element: /*#__PURE__*/cloneElement(toast.element, {
28
- ref: activeToastRef
29
+ ref: mergeReactElementRef(toast.element, activeToastRef)
29
30
  })
30
31
  }));
31
32
 
@@ -0,0 +1 @@
1
+ export const hexagonShapePath = 'M15.4855 6.0242C16.1715 7.24852 16.1715 8.75148 15.4855 9.97581L13.4213 13.6598C12.7259 14.9008 11.4317 15.6667 10.0301 15.6667H5.96994C4.56828 15.6667 3.2741 14.9008 2.57874 13.6598L0.514515 9.97581C-0.171504 8.75148 -0.171505 7.24852 0.514514 6.0242L2.57874 2.34022C3.2741 1.09922 4.56828 0.333336 5.96994 0.333336H10.0301C11.4317 0.333336 12.7259 1.09922 13.4213 2.34022L15.4855 6.0242Z';
@@ -10,9 +10,9 @@ export const variants = {
10
10
  borderColor: 'bgSecondary'
11
11
  },
12
12
  tertiary: {
13
- color: 'fgInverse',
14
- background: 'bgInverse',
15
- borderColor: 'bgInverse'
13
+ color: 'fg',
14
+ background: 'bgTertiary',
15
+ borderColor: 'bgTertiary'
16
16
  },
17
17
  foregroundMuted: {
18
18
  color: 'fgMuted',
@@ -28,6 +28,11 @@ export const variants = {
28
28
  color: 'fgInverse',
29
29
  background: 'bgNegative',
30
30
  borderColor: 'bgNegative'
31
+ },
32
+ inverse: {
33
+ color: 'fgInverse',
34
+ background: 'bgInverse',
35
+ borderColor: 'bgInverse'
31
36
  }
32
37
  };
33
38
  export const transparentVariants = {
@@ -60,5 +65,10 @@ export const transparentVariants = {
60
65
  color: 'fgNegative',
61
66
  background: 'bg',
62
67
  borderColor: 'transparent'
68
+ },
69
+ inverse: {
70
+ color: 'fg',
71
+ background: 'bg',
72
+ borderColor: 'transparent'
63
73
  }
64
74
  };
@@ -4,7 +4,17 @@ export const mediaSize = 32;
4
4
  // Height of the inner cell without padding
5
5
  export const imageSize = 48;
6
6
  export const pictogramScaleMultiplier = 1;
7
+
8
+ /**
9
+ * @deprecated This will be removed in a future major release.
10
+ * @deprecationExpectedRemoval v10
11
+ * */
7
12
  export const listHeight = 80;
13
+
14
+ /**
15
+ * @deprecated This will be removed in a future major release.
16
+ * @deprecationExpectedRemoval v10
17
+ * */
8
18
  export const compactListHeight = 40;
9
19
 
10
20
  /** Spacing configs for Cells to be parsed in [web/mobile]/hooks/useCellSpacing */
@@ -22,6 +32,11 @@ export const defaultSpacingConfig = {
22
32
  marginX: 0
23
33
  }
24
34
  };
35
+
36
+ /**
37
+ * @deprecated Used by deprecated Select component. This will be removed in a future major release.
38
+ * @deprecationExpectedRemoval v10
39
+ */
25
40
  export const selectOptionHeight = 56;
26
41
  export const cellPriorities = ['start', 'middle', 'end'];
27
42
  export const cellHelperTextVariants = {
package/esm/tokens/dot.js CHANGED
@@ -14,15 +14,29 @@ export const avatarDotSizeMap = {
14
14
  m: 'xs',
15
15
  s: 'xs'
16
16
  };
17
+
18
+ /**
19
+ * The fixed height of the DotCount component.
20
+ * Width grows based on content length.
21
+ **/
17
22
  export const dotCountSize = 24;
18
23
 
19
- // This works for the purposes of TabNavigation, but it's not stable
20
- // TODO Update this with more stable values
24
+ /**
25
+ * @deprecated Use local sizing logic instead. This export is temporarily supported for
26
+ * compatibility. This will be removed in a future major release.
27
+ * @deprecationExpectedRemoval v10
28
+ */
21
29
  export const dotSizeTokens = {
22
30
  s: 28,
23
31
  m: 36,
24
- l: 42
32
+ l: 48
25
33
  };
34
+
35
+ /**
36
+ * @deprecated Use local sizing logic instead. This export is temporarily supported for
37
+ * compatibility. This will be removed in a future major release.
38
+ * @deprecationExpectedRemoval v10
39
+ */
26
40
  export const getDotSize = count => {
27
41
  if (!count || count < 10) return dotSizeTokens.s;
28
42
  if (count >= 10 && count < 100) return dotSizeTokens.m;
@@ -9,7 +9,7 @@ export const selectCellSpacingConfig = {
9
9
  },
10
10
  innerSpacing: {
11
11
  marginX: 0,
12
- paddingX: 2
12
+ paddingX: 3
13
13
  }
14
14
  };
15
15
 
@@ -1,15 +1,35 @@
1
1
  import { useCallback, useMemo, useState } from 'react';
2
2
 
3
+ // TODO: move all props irrelevant to useTour core logic to web and mobile packages. eg TourStepArrowComponent, TourStepComponent, TourScrollOptions, etc.
4
+
5
+ /**
6
+ * Placement for the tour step arrow. Matches the placement values used by positioning libraries
7
+ * (e.g. @floating-ui) so web/mobile can pass through their placement directly.
8
+ */
9
+
10
+ /**
11
+ * Arrow coordinates and offsets for the tour step arrow. Matches the shape provided by arrow
12
+ * middleware (e.g. @floating-ui) so web/mobile can pass through their arrow data directly.
13
+ */
14
+
3
15
  /**
4
16
  * @deprecated Import from `@coinbase/cds-web` or `@coinbase/cds-mobile` instead. This will be removed in a future major release.
5
17
  * @deprecationExpectedRemoval v10
6
18
  */
7
19
 
8
20
  /**
21
+ * The TourStepArrowComponent forwards a ref to the underlying element.
22
+ * This is required for the positioning library to work correctly.
9
23
  * @deprecated Import from `@coinbase/cds-web` or `@coinbase/cds-mobile` instead. This will be removed in a future major release.
10
24
  * @deprecationExpectedRemoval v10
11
25
  */
12
26
 
27
+ /**
28
+ * API returned by useTour and provided via TourContext.
29
+ * @template TourStepId - Step id string literal type.
30
+ * @template TTarget - Type of the active step's target element (e.g. HTMLElement for web, View for react-native). Defaults to unknown.
31
+ */
32
+
13
33
  /**
14
34
  * A controlled hook for managing tour state, such as the currently active tour step.
15
35
  * @see {@link https://linear.app/coinbase/issue/CDS-1878 CDS-1878} for planned refactor to make this API platform agnostic.
@@ -49,7 +49,6 @@ export * from './SharedProps';
49
49
  export * from './SpacingProps';
50
50
  export * from './SparklineInteractiveHeaderBaseProps';
51
51
  export * from './SpreadPropsSafely';
52
- export * from './StickyFooterProps';
53
52
  export * from './TagBaseProps';
54
53
  export * from './TextBaseProps';
55
54
  export * from './TooltipBaseProps';
@@ -6,11 +6,6 @@
6
6
 
7
7
  import { Children, cloneElement, isValidElement } from 'react';
8
8
  import { isFragment } from 'react-is';
9
- // typeguard to check for props in a ReactChild
10
- export function hasProps(child) {
11
- return child.props !== undefined;
12
- }
13
-
14
9
  // eslint-disable-next-line no-restricted-exports
15
10
  export default function flattenNodes(children) {
16
11
  let depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
@@ -18,7 +13,9 @@ export default function flattenNodes(children) {
18
13
  return Children.toArray(children).reduce((acc, node, nodeIndex) => {
19
14
  if (isFragment(node)) {
20
15
  var _node$key;
21
- return [...acc, ...flattenNodes(node.props.children, depth + 1, keys.concat((_node$key = node.key) !== null && _node$key !== void 0 ? _node$key : nodeIndex))];
16
+ // react-is only narrows type down to ReactElement, not FragmentElement
17
+ const fragmentNode = node;
18
+ return [...acc, ...flattenNodes(fragmentNode.props.children, depth + 1, keys.concat((_node$key = node.key) !== null && _node$key !== void 0 ? _node$key : nodeIndex))];
22
19
  }
23
20
  if (/*#__PURE__*/isValidElement(node)) {
24
21
  return [...acc, /*#__PURE__*/cloneElement(node, {
@@ -7,6 +7,10 @@ const buttonPaddingY = {
7
7
  default: 2,
8
8
  compact: 1
9
9
  };
10
+ /**
11
+ * @deprecated This will be removed in a future major release.
12
+ * @deprecationExpectedRemoval v10
13
+ */
10
14
  export const getButtonSpacingProps = _ref => {
11
15
  let {
12
16
  compact,
@@ -14,6 +18,7 @@ export const getButtonSpacingProps = _ref => {
14
18
  } = _ref;
15
19
  if (flush) return {
16
20
  paddingX: buttonPaddingX.flush,
21
+ paddingY: compact ? buttonPaddingY.compact : buttonPaddingY.default,
17
22
  marginEnd: flush === 'end' ? -buttonPaddingX.flush : undefined,
18
23
  marginStart: flush === 'start' ? -buttonPaddingX.flush : undefined
19
24
  };
@@ -0,0 +1,81 @@
1
+ import { useCallback } from 'react';
2
+ function getReactElementRef(element) {
3
+ // React 19: refs are on props
4
+ if (typeof element.props === 'object' && element.props !== null && 'ref' in element.props) {
5
+ var _ref;
6
+ return (_ref = element.props.ref) !== null && _ref !== void 0 ? _ref : null;
7
+ }
8
+
9
+ // React 18 and earlier: refs are on the element
10
+ if ('ref' in element) {
11
+ var _ref2;
12
+ return (_ref2 = element.ref) !== null && _ref2 !== void 0 ? _ref2 : null;
13
+ }
14
+ return null;
15
+ }
16
+
17
+ /**
18
+ * Merge multiple refs into a single ref callback.
19
+ *
20
+ * - Supports callback refs and object refs.
21
+ * - Ignores `null`/`undefined` refs.
22
+ * - Intentionally does not support legacy string refs.
23
+ */
24
+ export const mergeRefs = function () {
25
+ for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {
26
+ refs[_key] = arguments[_key];
27
+ }
28
+ return value => {
29
+ refs.forEach(ref => {
30
+ if (typeof ref === 'function') {
31
+ ref(value);
32
+ } else if (ref != null) {
33
+ ref.current = value;
34
+ }
35
+ });
36
+ };
37
+ };
38
+
39
+ /**
40
+ * Like `mergeRefs`, but also includes an existing ref already present on a React element.
41
+ *
42
+ * This is React 18/19 compatible:
43
+ * - React 19 stores refs on `element.props.ref`
44
+ * - React 18 and earlier store refs on `element.ref`
45
+ */
46
+ export const mergeReactElementRef = function (element) {
47
+ const existingRef = getReactElementRef(element);
48
+ for (var _len2 = arguments.length, refs = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
49
+ refs[_key2 - 1] = arguments[_key2];
50
+ }
51
+ return mergeRefs(...refs, existingRef);
52
+ };
53
+
54
+ /**
55
+ * @deprecated Prefer `mergeRefs` function instead. This will be removed in a future major release.
56
+ * @deprecationExpectedRemoval v10
57
+ */
58
+ export const useMergeRefs = function () {
59
+ for (var _len3 = arguments.length, refs = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
60
+ refs[_key3] = arguments[_key3];
61
+ }
62
+ /**
63
+ * Merges multiple refs into a single ref callback. Supports both callback refs
64
+ * and object refs. `null`/`undefined` refs are ignored.
65
+ *
66
+ * The returned callback is referentially stable across renders as long as the
67
+ * underlying refs themselves are stable. This is critical under React 19,
68
+ * which schedules a detach (`oldRef(null)`) followed by an attach
69
+ * (`newRef(node)`) every time a ref-callback's identity changes. Without
70
+ * `useCallback` here, every render would create a new merged callback,
71
+ * triggering React 19's detach/attach lifecycle and — when one of the merged
72
+ * refs synchronously sets state during attach/detach — an infinite update
73
+ * loop ending in `Maximum update depth exceeded`.
74
+ */
75
+ return useCallback(value => {
76
+ mergeRefs(...refs)(value);
77
+ },
78
+ // The deps are the individual refs, not the rest-parameter array.
79
+ // eslint-disable-next-line react-hooks/exhaustive-deps
80
+ refs);
81
+ };
@@ -8,7 +8,7 @@ export const useCounter = _ref => {
8
8
  } = _ref;
9
9
  const skipAnimation = isStorybook();
10
10
  const [count, setCount] = useState(skipAnimation ? endNum : startNum);
11
- const timeoutRef = useRef();
11
+ const timeoutRef = useRef(undefined);
12
12
  useEffect(() => {
13
13
  const clearTimeoutRef = () => {
14
14
  clearTimeout(timeoutRef.current);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coinbase/cds-common",
3
- "version": "8.66.2",
3
+ "version": "9.0.0-rc.1",
4
4
  "description": "Coinbase Design System - Common",
5
5
  "repository": {
6
6
  "type": "git",
@@ -34,13 +34,12 @@
34
34
  "CHANGELOG"
35
35
  ],
36
36
  "peerDependencies": {
37
- "react": "^18.3.1",
38
- "react-dom": "^18.3.1"
37
+ "react": "^18.0.0 || ~19.1.2"
39
38
  },
40
39
  "dependencies": {
41
40
  "@coinbase/cds-icons": "^5.16.0",
42
41
  "@coinbase/cds-illustrations": "^4.38.0",
43
- "@coinbase/cds-mcp-server": "^8.66.2",
42
+ "@coinbase/cds-mcp-server": "^9.0.0-rc.1",
44
43
  "@coinbase/cds-utils": "^2.3.5",
45
44
  "@modelcontextprotocol/sdk": "^1.13.1",
46
45
  "d3-array": "^3.2.4",
@@ -49,16 +48,18 @@
49
48
  "d3-scale": "^4.0.2",
50
49
  "d3-shape": "^3.2.0",
51
50
  "lodash": "^4.17.21",
52
- "react-is": "^17.0.2",
51
+ "react-is": "19.1.2",
53
52
  "type-fest": "^2.19.0",
54
53
  "zod": "^3.23.8"
55
54
  },
56
55
  "devDependencies": {
57
56
  "@babel/core": "^7.28.0",
58
57
  "@babel/preset-env": "^7.28.0",
59
- "@babel/preset-react": "^7.27.1",
58
+ "@babel/preset-react": "^7.28.5",
60
59
  "@babel/preset-typescript": "^7.27.1",
61
- "@types/react": "^18.3.12",
62
- "jest-date-mock": "^1.0.8"
60
+ "@types/react": "19.1.2",
61
+ "@types/react-is": "^19.0.0",
62
+ "jest-date-mock": "^1.0.8",
63
+ "react": "19.1.2"
63
64
  }
64
65
  }
@@ -1,25 +0,0 @@
1
- import type { SharedAccessibilityProps } from './SharedAccessibilityProps';
2
- import type { SharedProps } from './SharedProps';
3
- import type { PaddingProps } from './SpacingProps';
4
- /**
5
- * @deprecated Use StickyFooterProps from @coinbase/cds-mobile instead. This will be removed in a future major release.
6
- * @deprecationExpectedRemoval v8
7
- */
8
- export type StickyFooterProps = {
9
- /**
10
- * React children to be rendered inside the StickyFooter.
11
- */
12
- children?: React.ReactNode;
13
- /**
14
- * Whether to apply a top border and shadow to the StickyFooter.
15
- */
16
- elevated?: boolean;
17
- /**
18
- * The WAI-ARIA role for the StickyFooter element.
19
- * @see https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles
20
- */
21
- role?: React.AriaRole;
22
- } & SharedProps &
23
- PaddingProps &
24
- Pick<SharedAccessibilityProps, 'accessibilityLabel'>;
25
- //# sourceMappingURL=StickyFooterProps.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StickyFooterProps.d.ts","sourceRoot":"","sources":["../../src/types/StickyFooterProps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC;CACvB,GAAG,WAAW,GACb,YAAY,GACZ,IAAI,CAAC,wBAAwB,EAAE,oBAAoB,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- export {};