@coinbase/cds-mobile 8.29.0 → 8.30.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.
package/CHANGELOG.md CHANGED
@@ -8,6 +8,15 @@ All notable changes to this project will be documented in this file.
8
8
 
9
9
  <!-- template-start -->
10
10
 
11
+ ## 8.30.0 (12/12/2025 PST)
12
+
13
+ #### 🚀 Updates
14
+
15
+ - Add overflow gradient to the left side of TabbedChips alpha. [[#232](https://github.com/coinbase/cds/pull/232)] [DX-5070]
16
+ - Add autoScrollOffset prop to TabbedChips alpha. [[#232](https://github.com/coinbase/cds/pull/232)] [DX-5070]
17
+ - Add maxWidth prop to SelectChip alpha [[#232](https://github.com/coinbase/cds/pull/232)] [DX-5072]
18
+ - Add displayValue prop to SelectChip alpha [[#232](https://github.com/coinbase/cds/pull/232)]
19
+
11
20
  ## 8.29.0 (12/12/2025 PST)
12
21
 
13
22
  #### 🚀 Updates
@@ -2,18 +2,24 @@ import React from 'react';
2
2
  import type { ChipBaseProps } from '../../chips/ChipProps';
3
3
  import { type SelectRef } from '../select/Select';
4
4
  import type { SelectProps, SelectType } from '../select/types';
5
- export type SelectChipBaseProps = Pick<ChipBaseProps, 'invertColorScheme' | 'numberOfLines'>;
6
- /**
7
- * Chip-styled Select control built on top of the Alpha Select.
8
- * Supports both single and multi selection via Select's `type` prop.
9
- */
5
+ export type SelectChipBaseProps = Pick<
6
+ ChipBaseProps,
7
+ 'invertColorScheme' | 'numberOfLines' | 'maxWidth'
8
+ > & {
9
+ /**
10
+ * Override the displayed value in the chip control.
11
+ * Useful for avoiding truncation, especially in multi-select scenarios where multiple option labels might be too long to display.
12
+ * When provided, this value takes precedence over the default label generation.
13
+ */
14
+ displayValue?: React.ReactNode;
15
+ };
10
16
  export type SelectChipProps<
11
17
  Type extends SelectType = 'single',
12
18
  SelectOptionValue extends string = string,
13
19
  > = SelectChipBaseProps &
14
20
  Omit<
15
21
  SelectProps<Type, SelectOptionValue>,
16
- 'SelectControlComponent' | 'helperText' | 'labelVariant' | 'variant'
22
+ 'SelectControlComponent' | 'helperText' | 'labelVariant' | 'variant' | 'maxWidth'
17
23
  >;
18
24
  export declare const SelectChip: <
19
25
  Type extends SelectType = 'single',
@@ -1 +1 @@
1
- {"version":3,"file":"SelectChip.d.ts","sourceRoot":"","sources":["../../../src/alpha/select-chip/SelectChip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwC,MAAM,OAAO,CAAC;AAE7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAU,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAsB,WAAW,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAInF,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,aAAa,EAAE,mBAAmB,GAAG,eAAe,CAAC,CAAC;AAE7F;;;GAGG;AACH,MAAM,MAAM,eAAe,CACzB,IAAI,SAAS,UAAU,GAAG,QAAQ,EAClC,iBAAiB,SAAS,MAAM,GAAG,MAAM,IACvC,mBAAmB,GACrB,IAAI,CACF,WAAW,CAAC,IAAI,EAAE,iBAAiB,CAAC,EACpC,wBAAwB,GAAG,YAAY,GAAG,cAAc,GAAG,SAAS,CACrE,CAAC;AAkCJ,eAAO,MAAM,UAAU,EAA0B,CAC/C,IAAI,SAAS,UAAU,GAAG,QAAQ,EAClC,iBAAiB,SAAS,MAAM,GAAG,MAAM,EAEzC,KAAK,EAAE,eAAe,CAAC,IAAI,EAAE,iBAAiB,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;CAAE,KAC7E,KAAK,CAAC,YAAY,CAAC"}
1
+ {"version":3,"file":"SelectChip.d.ts","sourceRoot":"","sources":["../../../src/alpha/select-chip/SelectChip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwC,MAAM,OAAO,CAAC;AAE7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAU,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAsB,WAAW,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAInF,MAAM,MAAM,mBAAmB,GAAG,IAAI,CACpC,aAAa,EACb,mBAAmB,GAAG,eAAe,GAAG,UAAU,CACnD,GAAG;IACF;;;;OAIG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,eAAe,CACzB,IAAI,SAAS,UAAU,GAAG,QAAQ,EAClC,iBAAiB,SAAS,MAAM,GAAG,MAAM,IACvC,mBAAmB,GACrB,IAAI,CACF,WAAW,CAAC,IAAI,EAAE,iBAAiB,CAAC,EACpC,wBAAwB,GAAG,YAAY,GAAG,cAAc,GAAG,SAAS,GAAG,UAAU,CAClF,CAAC;AA8CJ,eAAO,MAAM,UAAU,EAA0B,CAC/C,IAAI,SAAS,UAAU,GAAG,QAAQ,EAClC,iBAAiB,SAAS,MAAM,GAAG,MAAM,EAEzC,KAAK,EAAE,eAAe,CAAC,IAAI,EAAE,iBAAiB,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;CAAE,KAC7E,KAAK,CAAC,YAAY,CAAC"}
@@ -9,6 +9,7 @@ export declare const SelectChipControl: <
9
9
  props: SelectControlProps<Type, SelectOptionValue> &
10
10
  Partial<Pick<ChipBaseProps, 'invertColorScheme' | 'numberOfLines'>> & {
11
11
  ref?: React.Ref<View>;
12
+ displayValue?: React.ReactNode;
12
13
  },
13
14
  ) => React.ReactElement;
14
15
  //# sourceMappingURL=SelectChipControl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SelectChipControl.d.ts","sourceRoot":"","sources":["../../../src/alpha/select-chip/SelectChipControl.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AACzD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG3D,OAAO,EAEL,KAAK,kBAAkB,EAEvB,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAC;AAuJzB,eAAO,MAAM,iBAAiB,EAAiC,CAC7D,IAAI,SAAS,UAAU,EACvB,iBAAiB,SAAS,MAAM,GAAG,MAAM,EAEzC,KAAK,EAAE,kBAAkB,CAAC,IAAI,EAAE,iBAAiB,CAAC,GAChD,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,mBAAmB,GAAG,eAAe,CAAC,CAAC,GAAG;IACpE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;CACvB,KACA,KAAK,CAAC,YAAY,CAAC"}
1
+ {"version":3,"file":"SelectChipControl.d.ts","sourceRoot":"","sources":["../../../src/alpha/select-chip/SelectChipControl.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AACzD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG3D,OAAO,EAEL,KAAK,kBAAkB,EAEvB,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAC;AA4JzB,eAAO,MAAM,iBAAiB,EAAiC,CAC7D,IAAI,SAAS,UAAU,EACvB,iBAAiB,SAAS,MAAM,GAAG,MAAM,EAEzC,KAAK,EAAE,kBAAkB,CAAC,IAAI,EAAE,iBAAiB,CAAC,GAChD,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,mBAAmB,GAAG,eAAe,CAAC,CAAC,GAAG;IACpE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtB,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAChC,KACA,KAAK,CAAC,YAAY,CAAC"}
@@ -25,6 +25,11 @@ export type TabbedChipsBaseProps<T extends string = string> = Omit<
25
25
  * @default false
26
26
  */
27
27
  compact?: boolean;
28
+ /**
29
+ * X position offset when auto-scrolling to active tab (to avoid active tab being covered by the overflow gradient on the left side, default: 30px)
30
+ * @default 30
31
+ */
32
+ autoScrollOffset?: number;
28
33
  };
29
34
  export type TabbedChipsProps<T extends string = string> = TabbedChipsBaseProps<T> &
30
35
  SharedProps &
@@ -1 +1 @@
1
- {"version":3,"file":"TabbedChips.d.ts","sourceRoot":"","sources":["../../../src/alpha/tabbed-chips/TabbedChips.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2D,MAAM,OAAO,CAAC;AAChF,OAAO,EAAc,KAAK,SAAS,EAAE,KAAK,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AACrF,OAAO,KAAK,EAAE,wBAAwB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAE7F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAElE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGvD,OAAO,EAAO,KAAK,QAAQ,EAAoB,MAAM,cAAc,CAAC;AACpE,OAAO,EAAQ,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AA0BtE,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,UAAU,GAAG,SAAS,CAAC,GAC9F,QAAQ,CAAC,CAAC,CAAC,GAAG;IACZ,SAAS,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;CACjE,CAAC;AAEJ,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,IAAI,CAChE,aAAa,CAAC,CAAC,CAAC,EACd,cAAc,GACd,8BAA8B,GAC9B,MAAM,GACN,0BAA0B,GAC1B,kBAAkB,CACrB,GAAG;IACF,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3B,YAAY,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,4BAA4B,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC;IAC5E;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,oBAAoB,CAAC,CAAC,CAAC,GAC/E,WAAW,GACX,wBAAwB,GAAG;IACzB;;;OAGG;IACH,GAAG,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC;IACtB;;;OAGG;IACH,KAAK,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC1B,MAAM,CAAC,EAAE;QACP;;WAEG;QACH,IAAI,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QAC5B;;WAEG;QACH,IAAI,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;KAC7B,CAAC;CACH,CAAC;AAEJ,KAAK,aAAa,GAAG,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAC7C,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;CAAE,KAC5D,KAAK,CAAC,YAAY,CAAC;AA0ExB,eAAO,MAAM,WAAW,EAA2B,aAAa,CAAC"}
1
+ {"version":3,"file":"TabbedChips.d.ts","sourceRoot":"","sources":["../../../src/alpha/tabbed-chips/TabbedChips.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2D,MAAM,OAAO,CAAC;AAChF,OAAO,EAAc,KAAK,SAAS,EAAE,KAAK,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AACrF,OAAO,KAAK,EAAE,wBAAwB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAE7F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAElE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGvD,OAAO,EAAO,KAAK,QAAQ,EAAoB,MAAM,cAAc,CAAC;AACpE,OAAO,EAAQ,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AA0BtE,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,UAAU,GAAG,SAAS,CAAC,GAC9F,QAAQ,CAAC,CAAC,CAAC,GAAG;IACZ,SAAS,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;CACjE,CAAC;AAEJ,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,IAAI,CAChE,aAAa,CAAC,CAAC,CAAC,EACd,cAAc,GACd,8BAA8B,GAC9B,MAAM,GACN,0BAA0B,GAC1B,kBAAkB,CACrB,GAAG;IACF,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3B,YAAY,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,4BAA4B,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC;IAC5E;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,oBAAoB,CAAC,CAAC,CAAC,GAC/E,WAAW,GACX,wBAAwB,GAAG;IACzB;;;OAGG;IACH,GAAG,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC;IACtB;;;OAGG;IACH,KAAK,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC1B,MAAM,CAAC,EAAE;QACP;;WAEG;QACH,IAAI,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QAC5B;;WAEG;QACH,IAAI,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;KAC7B,CAAC;CACH,CAAC;AAEJ,KAAK,aAAa,GAAG,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAC7C,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;CAAE,KAC5D,KAAK,CAAC,YAAY,CAAC;AA+ExB,eAAO,MAAM,WAAW,EAA2B,aAAa,CAAC"}
@@ -6,7 +6,7 @@ import type { View } from 'react-native';
6
6
  export declare const Chip: React.MemoExoticComponent<
7
7
  React.ForwardRefExoticComponent<
8
8
  import('@coinbase/cds-common').SharedProps &
9
- Omit<import('../system').PressableProps, 'children' | 'maxWidth' | 'style'> &
9
+ Omit<import('../system').PressableProps, 'children' | 'maxWidth' | 'style' | 'onChange'> &
10
10
  Pick<import('@coinbase/cds-common').SharedAccessibilityProps, 'accessibilityLabel'> & {
11
11
  children?: React.ReactNode;
12
12
  start?: React.ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"Chip.d.ts","sourceRoot":"","sources":["../../src/chips/Chip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqC,MAAM,OAAO,CAAC;AAC1D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AASzC;;GAEG;AACH,eAAO,MAAM,IAAI;;;;;;;;;;;;YAyDR,CAAC;eACS,CAAC;;+BA8BnB,CAAC"}
1
+ {"version":3,"file":"Chip.d.ts","sourceRoot":"","sources":["../../src/chips/Chip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqC,MAAM,OAAO,CAAC;AAC1D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AASzC;;GAEG;AACH,eAAO,MAAM,IAAI;;;;;;;;;;;;YA0DT,CAAA;eAAqC,CAAC;;+BA8B7C,CAAC"}
@@ -6,7 +6,7 @@ import {
6
6
  } from '@coinbase/cds-common/types';
7
7
  import type { PressableProps } from '../system';
8
8
  export type ChipBaseProps = SharedProps &
9
- Omit<PressableProps, 'children' | 'maxWidth' | 'style'> &
9
+ Omit<PressableProps, 'children' | 'maxWidth' | 'style' | 'onChange' | 'maxWidth'> &
10
10
  Pick<SharedAccessibilityProps, 'accessibilityLabel'> & {
11
11
  /** ReactNode placed in the center of the Chip */
12
12
  children?: React.ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"ChipProps.d.ts","sourceRoot":"","sources":["../../src/chips/ChipProps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,wBAAwB,EAC7B,KAAK,WAAW,EACjB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,MAAM,MAAM,aAAa,GAAG,WAAW,GACrC,IAAI,CAAC,cAAc,EAAE,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC,GACvD,IAAI,CAAC,wBAAwB,EAAE,oBAAoB,CAAC,GAAG;IACrD,iDAAiD;IACjD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,wCAAwC;IACxC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,uCAAuC;IACvC,GAAG,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,0CAA0C;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACpC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,iDAAiD;IACjD,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QAC5B,OAAO,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;KAChC,CAAC;CACH,CAAC;AAEJ,MAAM,MAAM,SAAS,GAAG,aAAa,CAAC;AAEtC,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG;IACvC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC"}
1
+ {"version":3,"file":"ChipProps.d.ts","sourceRoot":"","sources":["../../src/chips/ChipProps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,wBAAwB,EAC7B,KAAK,WAAW,EACjB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,MAAM,MAAM,aAAa,GAAG,WAAW,GACrC,IAAI,CAAC,cAAc,EAAE,UAAU,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,CAAC,GACjF,IAAI,CAAC,wBAAwB,EAAE,oBAAoB,CAAC,GAAG;IACrD,iDAAiD;IACjD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,wCAAwC;IACxC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,uCAAuC;IACvC,GAAG,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,0CAA0C;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACpC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,iDAAiD;IACjD,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QAC5B,OAAO,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;KAChC,CAAC;CACH,CAAC;AAEJ,MAAM,MAAM,SAAS,GAAG,aAAa,CAAC;AAEtC,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG;IACvC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC"}
@@ -3,7 +3,7 @@ import type { View } from 'react-native';
3
3
  export declare const InputChip: React.MemoExoticComponent<
4
4
  React.ForwardRefExoticComponent<
5
5
  import('@coinbase/cds-common').SharedProps &
6
- Omit<import('../system').PressableProps, 'children' | 'maxWidth' | 'style'> &
6
+ Omit<import('../system').PressableProps, 'children' | 'maxWidth' | 'style' | 'onChange'> &
7
7
  Pick<import('@coinbase/cds-common').SharedAccessibilityProps, 'accessibilityLabel'> & {
8
8
  children?: React.ReactNode;
9
9
  start?: React.ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"InputChip.d.ts","sourceRoot":"","sources":["../../src/chips/InputChip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAChD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAOzC,eAAO,MAAM,SAAS;;;;;;;;;;;;YAiC4vB,CAAC;eAAqC,CAAC;;;;+BADxzB,CAAC"}
1
+ {"version":3,"file":"InputChip.d.ts","sourceRoot":"","sources":["../../src/chips/InputChip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAChD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAOzC,eAAO,MAAM,SAAS;;;;;;;;;;;;YAiCsxB,CAAC;eAAqC,CAAC;;;;+BADl1B,CAAC"}
@@ -4,7 +4,7 @@ export type MediaChipProps = ChipProps;
4
4
  export declare const MediaChip: import('react').MemoExoticComponent<
5
5
  import('react').ForwardRefExoticComponent<
6
6
  import('@coinbase/cds-common').SharedProps &
7
- Omit<import('../system').PressableProps, 'children' | 'maxWidth' | 'style'> &
7
+ Omit<import('../system').PressableProps, 'children' | 'maxWidth' | 'style' | 'onChange'> &
8
8
  Pick<import('@coinbase/cds-common').SharedAccessibilityProps, 'accessibilityLabel'> & {
9
9
  children?: React.ReactNode;
10
10
  start?: React.ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"MediaChip.d.ts","sourceRoot":"","sources":["../../src/chips/MediaChip.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAIzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,MAAM,cAAc,GAAG,SAAS,CAAC;AAEvC,eAAO,MAAM,SAAS;;;;;;;;;;;;YAsDiL,CAAC;eAAqC,CAAC;;yCAD7O,CAAC"}
1
+ {"version":3,"file":"MediaChip.d.ts","sourceRoot":"","sources":["../../src/chips/MediaChip.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAIzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,MAAM,cAAc,GAAG,SAAS,CAAC;AAEvC,eAAO,MAAM,SAAS;;;;;;;;;;;;YAsD2M,CAAC;eAAqC,CAAC;;yCADvQ,CAAC"}
@@ -8,19 +8,29 @@ import type {
8
8
  export type UseHorizontalScrollToTargetOptions = {
9
9
  scrollThrottleWaitTime?: number;
10
10
  activeTarget?: View | null;
11
+ autoScrollOffset?: number;
12
+ overflowThreshold?: number;
11
13
  };
12
14
  /**
13
15
  * A hook for managing horizontal scrolling with overflow detection.
14
16
  * Useful for horizontally scrollable content that needs to show overflow indicators.
15
17
  * Optionally handles scrolling to an active target element.
18
+ *
19
+ * @param scrollThrottleWaitTime - Throttle time for scroll events (default: 200ms)
20
+ * @param activeTarget - The active element to scroll to when it's offscreen
21
+ * @param autoScrollOffset - X position offset when auto-scrolling to active target
22
+ * @param overflowThreshold - Threshold for detecting if content is offscreen (default: 1)
16
23
  */
17
24
  export declare const useHorizontalScrollToTarget: ({
18
25
  scrollThrottleWaitTime,
19
26
  activeTarget,
27
+ autoScrollOffset,
28
+ overflowThreshold,
20
29
  }?: UseHorizontalScrollToTargetOptions) => {
21
30
  scrollRef: import('react').RefObject<ScrollView>;
22
31
  isScrollContentOverflowing: boolean;
23
32
  isScrollContentOffscreenRight: boolean;
33
+ isScrollContentOffscreenLeft: boolean;
24
34
  handleScroll: (event: NativeSyntheticEvent<NativeScrollEvent>) => void;
25
35
  handleScrollContainerLayout: (event: LayoutChangeEvent) => void;
26
36
  handleScrollContentSizeChange: (contentWidth: number) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"useHorizontalScrollToTarget.d.ts","sourceRoot":"","sources":["../../src/hooks/useHorizontalScrollToTarget.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,UAAU,EACV,IAAI,EACL,MAAM,cAAc,CAAC;AAGtB,MAAM,MAAM,kCAAkC,GAAG;IAC/C,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,YAAY,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CAC5B,CAAC;AAIF;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,GAAI,4CAGzC,kCAAuC;;;;0BAsB9B,oBAAoB,CAAC,iBAAiB,CAAC;yCAOvC,iBAAiB;kDAQV,MAAM;CAgCxB,CAAC"}
1
+ {"version":3,"file":"useHorizontalScrollToTarget.d.ts","sourceRoot":"","sources":["../../src/hooks/useHorizontalScrollToTarget.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,UAAU,EACV,IAAI,EACL,MAAM,cAAc,CAAC;AAGtB,MAAM,MAAM,kCAAkC,GAAG;IAC/C,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,YAAY,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAIF;;;;;;;;;GASG;AAEH,eAAO,MAAM,2BAA2B,GAAI,iFAKzC,kCAAuC;;;;;0BAwB9B,oBAAoB,CAAC,iBAAiB,CAAC;yCAOvC,iBAAiB;kDAQV,MAAM;CAiCxB,CAAC"}
@@ -1,27 +1,30 @@
1
- const _excluded = ["invertColorScheme", "numberOfLines"];
1
+ const _excluded = ["invertColorScheme", "numberOfLines", "maxWidth", "displayValue"];
2
2
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
3
3
  function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
4
4
  import React, { forwardRef, memo, useCallback } from 'react';
5
5
  import { Select } from '../select/Select';
6
6
  import { SelectChipControl } from './SelectChipControl';
7
-
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
8
  /**
9
9
  * Chip-styled Select control built on top of the Alpha Select.
10
10
  * Supports both single and multi selection via Select's `type` prop.
11
11
  */
12
- import { jsx as _jsx } from "react/jsx-runtime";
13
12
  const SelectChipComponent = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref) => {
14
13
  let {
15
14
  invertColorScheme,
16
- numberOfLines
15
+ numberOfLines,
16
+ maxWidth,
17
+ displayValue
17
18
  } = _ref,
18
19
  props = _objectWithoutPropertiesLoose(_ref, _excluded);
19
20
  const SelectChipControlComponent = useCallback(props => {
20
21
  return /*#__PURE__*/_jsx(SelectChipControl, _extends({
22
+ displayValue: displayValue,
21
23
  invertColorScheme: invertColorScheme,
24
+ maxWidth: maxWidth,
22
25
  numberOfLines: numberOfLines
23
26
  }, props));
24
- }, [invertColorScheme, numberOfLines]);
27
+ }, [displayValue, invertColorScheme, maxWidth, numberOfLines]);
25
28
  return /*#__PURE__*/_jsx(Select, _extends({
26
29
  ref: ref,
27
30
  SelectControlComponent: SelectChipControlComponent
@@ -21,7 +21,9 @@ const SelectChipControlComponent = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_r
21
21
  label,
22
22
  compact,
23
23
  invertColorScheme,
24
- numberOfLines
24
+ numberOfLines,
25
+ maxWidth,
26
+ displayValue
25
27
  } = _ref;
26
28
  const isMultiSelect = type === 'multi';
27
29
  const hasValue = value !== null && !(Array.isArray(value) && value.length === 0);
@@ -64,6 +66,7 @@ const SelectChipControlComponent = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_r
64
66
  const labelContent = useMemo(() => {
65
67
  var _ref3, _ref6, _ref7, _ref8, _opt$label2;
66
68
  if (!hasValue) return (_ref3 = label != null ? label : placeholder) != null ? _ref3 : null;
69
+ if (displayValue) return displayValue;
67
70
  if (isMultiSelect) {
68
71
  const values = value;
69
72
  const visible = values.slice(0, maxSelectedOptionsToShow);
@@ -77,7 +80,7 @@ const SelectChipControlComponent = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_r
77
80
  }
78
81
  const opt = optionsMap.get(value);
79
82
  return (_ref6 = (_ref7 = (_ref8 = (_opt$label2 = opt == null ? void 0 : opt.label) != null ? _opt$label2 : opt == null ? void 0 : opt.description) != null ? _ref8 : opt == null ? void 0 : opt.value) != null ? _ref7 : placeholder) != null ? _ref6 : null;
80
- }, [hasValue, label, placeholder, isMultiSelect, optionsMap, value, maxSelectedOptionsToShow, hiddenSelectedOptionsLabel]);
83
+ }, [hasValue, label, placeholder, displayValue, isMultiSelect, optionsMap, value, maxSelectedOptionsToShow, hiddenSelectedOptionsLabel]);
81
84
  const endNode = useMemo(() => {
82
85
  return customEndNode != null ? customEndNode : /*#__PURE__*/_jsx(AnimatedCaret, {
83
86
  active: true,
@@ -102,6 +105,7 @@ const SelectChipControlComponent = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_r
102
105
  disabled: disabled,
103
106
  end: endNode,
104
107
  invertColorScheme: invertColorScheme,
108
+ maxWidth: maxWidth,
105
109
  numberOfLines: numberOfLines,
106
110
  onPress: () => setOpen(s => !s),
107
111
  start: startNode,
@@ -491,6 +491,45 @@ export const WithDescriptions = () => {
491
491
  })]
492
492
  });
493
493
  };
494
+ export const WithDisplayValue = () => {
495
+ const exampleOptions = [{
496
+ value: '1',
497
+ label: 'Option 1'
498
+ }, {
499
+ value: '2',
500
+ label: 'Option 2'
501
+ }, {
502
+ value: '3',
503
+ label: 'Option 3'
504
+ }, {
505
+ value: '4',
506
+ label: 'Option 4'
507
+ }, {
508
+ value: '5',
509
+ label: 'Option 5'
510
+ }];
511
+ const {
512
+ value,
513
+ onChange
514
+ } = useMultiSelect({
515
+ initialValue: []
516
+ });
517
+ const displayValue = Array.isArray(value) && value.length > 0 ? value.length + " " + (value.length === 1 ? 'option' : 'options') + " selected" : undefined;
518
+ return /*#__PURE__*/_jsxs(VStack, {
519
+ gap: 2,
520
+ children: [/*#__PURE__*/_jsx(Text, {
521
+ children: "Select with custom displayed value:"
522
+ }), /*#__PURE__*/_jsx(SelectChip, {
523
+ accessibilityLabel: "Select multiple values",
524
+ displayValue: displayValue,
525
+ onChange: onChange,
526
+ options: exampleOptions,
527
+ placeholder: "Choose options",
528
+ type: "multi",
529
+ value: value
530
+ })]
531
+ });
532
+ };
494
533
  const SelectChipScreen = () => {
495
534
  return /*#__PURE__*/_jsxs(ExampleScreen, {
496
535
  children: [/*#__PURE__*/_jsx(Example, {
@@ -532,6 +571,9 @@ const SelectChipScreen = () => {
532
571
  }), /*#__PURE__*/_jsx(Example, {
533
572
  title: "With Descriptions",
534
573
  children: /*#__PURE__*/_jsx(WithDescriptions, {})
574
+ }), /*#__PURE__*/_jsx(Example, {
575
+ title: "With Display Value",
576
+ children: /*#__PURE__*/_jsx(WithDisplayValue, {})
535
577
  })]
536
578
  });
537
579
  };
@@ -1,5 +1,5 @@
1
1
  const _excluded = ["label", "id"],
2
- _excluded2 = ["tabs", "activeTab", "testID", "TabComponent", "onChange", "width", "gap", "compact", "styles"];
2
+ _excluded2 = ["tabs", "activeTab", "testID", "TabComponent", "onChange", "width", "gap", "compact", "styles", "autoScrollOffset"];
3
3
  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); }
4
4
  function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
5
5
  import React, { forwardRef, memo, useCallback, useMemo, useState } from 'react';
@@ -45,19 +45,22 @@ const TabbedChipsComponent = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(function
45
45
  width,
46
46
  gap = 1,
47
47
  compact,
48
- styles
48
+ styles,
49
+ autoScrollOffset = 30
49
50
  } = _ref2,
50
51
  accessibilityProps = _objectWithoutPropertiesLoose(_ref2, _excluded2);
51
52
  const [scrollTarget, setScrollTarget] = useState(null);
52
53
  const {
53
54
  scrollRef,
54
55
  isScrollContentOverflowing,
56
+ isScrollContentOffscreenLeft,
55
57
  isScrollContentOffscreenRight,
56
58
  handleScroll,
57
59
  handleScrollContainerLayout,
58
60
  handleScrollContentSizeChange
59
61
  } = useHorizontalScrollToTarget({
60
- activeTarget: scrollTarget
62
+ activeTarget: scrollTarget,
63
+ autoScrollOffset
61
64
  });
62
65
  const TabComponentWithCompact = useCallback(props => {
63
66
  return /*#__PURE__*/_jsx(TabComponent, _extends({
@@ -66,7 +69,7 @@ const TabbedChipsComponent = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(function
66
69
  }, [TabComponent, compact]);
67
70
  return /*#__PURE__*/_jsxs(Box, {
68
71
  ref: ref,
69
- overflow: isScrollContentOverflowing && isScrollContentOffscreenRight ? undefined : 'visible',
72
+ overflow: isScrollContentOverflowing ? undefined : 'visible',
70
73
  style: styles == null ? void 0 : styles.root,
71
74
  testID: testID,
72
75
  width: width,
@@ -88,7 +91,11 @@ const TabbedChipsComponent = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(function
88
91
  style: styles == null ? void 0 : styles.tabs,
89
92
  tabs: tabs
90
93
  }, accessibilityProps))
91
- }), isScrollContentOverflowing && isScrollContentOffscreenRight ? /*#__PURE__*/_jsx(OverflowGradient, {}) : null]
94
+ }), isScrollContentOverflowing && isScrollContentOffscreenLeft && /*#__PURE__*/_jsx(OverflowGradient, {
95
+ pin: "left"
96
+ }), isScrollContentOverflowing && isScrollContentOffscreenRight && /*#__PURE__*/_jsx(OverflowGradient, {
97
+ pin: "right"
98
+ })]
92
99
  });
93
100
  }));
94
101
  TabbedChipsComponent.displayName = 'TabbedChips';
@@ -21,11 +21,13 @@ const Demo = _ref => {
21
21
  let {
22
22
  tabs = defaultTabs,
23
23
  compact = false,
24
- width
24
+ width,
25
+ autoScrollOffset
25
26
  } = _ref;
26
27
  const [value, setValue] = useState(tabs[0]);
27
28
  return /*#__PURE__*/_jsx(TabbedChips, {
28
29
  activeTab: value,
30
+ autoScrollOffset: autoScrollOffset,
29
31
  compact: compact,
30
32
  onChange: setValue,
31
33
  tabs: tabs,
@@ -94,6 +96,12 @@ const TabbedChipsScreen = () => {
94
96
  compact: true,
95
97
  tabs: compactTabsWithStart
96
98
  })
99
+ }), /*#__PURE__*/_jsx(Example, {
100
+ title: "With auto scroll offset",
101
+ children: /*#__PURE__*/_jsx(Demo, {
102
+ autoScrollOffset: 100,
103
+ tabs: sampleTabs
104
+ })
97
105
  })]
98
106
  });
99
107
  };
@@ -4,11 +4,19 @@ import throttle from 'lodash/throttle';
4
4
  * A hook for managing horizontal scrolling with overflow detection.
5
5
  * Useful for horizontally scrollable content that needs to show overflow indicators.
6
6
  * Optionally handles scrolling to an active target element.
7
+ *
8
+ * @param scrollThrottleWaitTime - Throttle time for scroll events (default: 200ms)
9
+ * @param activeTarget - The active element to scroll to when it's offscreen
10
+ * @param autoScrollOffset - X position offset when auto-scrolling to active target
11
+ * @param overflowThreshold - Threshold for detecting if content is offscreen (default: 1)
7
12
  */
13
+
8
14
  export const useHorizontalScrollToTarget = function (_temp) {
9
15
  let {
10
16
  scrollThrottleWaitTime = 200,
11
- activeTarget
17
+ activeTarget,
18
+ autoScrollOffset = 0,
19
+ overflowThreshold = 1
12
20
  } = _temp === void 0 ? {} : _temp;
13
21
  const scrollRef = useRef(null);
14
22
  const scrollDetails = useRef({
@@ -18,6 +26,7 @@ export const useHorizontalScrollToTarget = function (_temp) {
18
26
  });
19
27
  const [isScrollContentOverflowing, setIsScrollContentOverflowing] = useState(false);
20
28
  const [isScrollContentOffscreenRight, setIsScrollContentOffscreenRight] = useState(false);
29
+ const [isScrollContentOffscreenLeft, setIsScrollContentOffscreenLeft] = useState(false);
21
30
  const checkScrollState = useCallback(() => {
22
31
  const {
23
32
  xPosition,
@@ -26,8 +35,9 @@ export const useHorizontalScrollToTarget = function (_temp) {
26
35
  } = scrollDetails.current;
27
36
  const maxScroll = contentWidth - containerWidth;
28
37
  setIsScrollContentOverflowing(contentWidth > containerWidth);
29
- setIsScrollContentOffscreenRight(xPosition < maxScroll - 1); // -1 offset for fractional values
30
- }, []);
38
+ setIsScrollContentOffscreenRight(xPosition < maxScroll - overflowThreshold); // -1 offset for fractional values
39
+ setIsScrollContentOffscreenLeft(xPosition > overflowThreshold); // 1 offset for fractional values
40
+ }, [overflowThreshold]);
31
41
  const throttledHandleScroll = useRef(throttle(xPosition => {
32
42
  scrollDetails.current.xPosition = xPosition;
33
43
  checkScrollState();
@@ -56,7 +66,7 @@ export const useHorizontalScrollToTarget = function (_temp) {
56
66
  if (isOffscreenLeft || isOffscreenRight) {
57
67
  var _scrollRef$current;
58
68
  (_scrollRef$current = scrollRef.current) == null || _scrollRef$current.scrollTo({
59
- x,
69
+ x: x - autoScrollOffset,
60
70
  y: 0,
61
71
  animated: true
62
72
  });
@@ -64,11 +74,12 @@ export const useHorizontalScrollToTarget = function (_temp) {
64
74
  });
65
75
  }
66
76
  return () => throttledHandleScroll.cancel();
67
- }, [activeTarget, throttledHandleScroll]);
77
+ }, [activeTarget, autoScrollOffset, throttledHandleScroll]);
68
78
  return {
69
79
  scrollRef,
70
80
  isScrollContentOverflowing,
71
81
  isScrollContentOffscreenRight,
82
+ isScrollContentOffscreenLeft,
72
83
  handleScroll,
73
84
  handleScrollContainerLayout,
74
85
  handleScrollContentSizeChange
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coinbase/cds-mobile",
3
- "version": "8.29.0",
3
+ "version": "8.30.0",
4
4
  "description": "Coinbase Design System - Mobile",
5
5
  "repository": {
6
6
  "type": "git",
@@ -154,7 +154,7 @@
154
154
  "react-native-svg": "^14.1.0"
155
155
  },
156
156
  "dependencies": {
157
- "@coinbase/cds-common": "^8.29.0",
157
+ "@coinbase/cds-common": "^8.30.0",
158
158
  "@coinbase/cds-icons": "^5.8.0",
159
159
  "@coinbase/cds-illustrations": "^4.29.0",
160
160
  "@coinbase/cds-lottie-files": "^3.3.3",