@coinbase/cds-mobile 8.21.8 → 8.22.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.
package/CHANGELOG.md CHANGED
@@ -8,6 +8,18 @@ All notable changes to this project will be documented in this file.
8
8
 
9
9
  <!-- template-start -->
10
10
 
11
+ ## 8.22.1 (11/24/2025 PST)
12
+
13
+ #### 🐞 Fixes
14
+
15
+ - Fix the borderRadius prop issue in Banner. [[#190](https://github.com/coinbase/cds/pull/190)]
16
+
17
+ ## 8.22.0 (11/24/2025 PST)
18
+
19
+ #### 🚀 Updates
20
+
21
+ - Added `subtitle` for ListCell and accessory for `ListCellFallback`. [[#149](https://github.com/coinbase/cds/pull/149)] [DX-5015]
22
+
11
23
  ## 8.21.8 (11/21/2025 PST)
12
24
 
13
25
  #### 🐞 Fixes
@@ -52,7 +52,8 @@ export type BannerBaseProps = SharedProps & {
52
52
  bordered?: boolean;
53
53
  /**
54
54
  * Determines banner's border radius
55
- * @default 400
55
+ *
56
+ * @default 400 for contextual, undefined for global and inline
56
57
  * */
57
58
  borderRadius?: ThemeVars.BorderRadius;
58
59
  };
@@ -103,7 +104,8 @@ export declare const Banner: React.MemoExoticComponent<
103
104
  bordered?: boolean;
104
105
  /**
105
106
  * Determines banner's border radius
106
- * @default 400
107
+ *
108
+ * @default 400 for contextual, undefined for global and inline
107
109
  * */
108
110
  borderRadius?: ThemeVars.BorderRadius;
109
111
  } & Omit<import('../layout').BoxProps, 'children'> &
@@ -1 +1 @@
1
- {"version":3,"file":"Banner.d.ts","sourceRoot":"","sources":["../../src/banner/Banner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2E,MAAM,OAAO,CAAC;AAChG,OAAO,KAAK,EAAE,IAAI,EAAa,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EACb,QAAQ,EACR,WAAW,EACZ,MAAM,4BAA4B,CAAC;AAMpC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAsB7C,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG;IAC1C,2GAA2G;IAC3G,OAAO,EAAE,aAAa,CAAC;IACvB,6CAA6C;IAC7C,SAAS,EAAE,QAAQ,CAAC;IACpB,uCAAuC;IACvC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,4HAA4H;IAC5H,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,2HAA2H;IAC3H,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAClC,2DAA2D;IAC3D,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,wBAAwB;IACxB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;;SAGK;IACL,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,gFAAgF;IAChF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gCAAgC;IAChC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;;;SAGK;IACL,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,uDAAuD;IACvD,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC;;OAEG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC;;;SAGK;IACL,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;SAGK;IACL,YAAY,CAAC,EAAE,SAAS,CAAC,YAAY,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AAEhF,eAAO,MAAM,MAAM;IAlDjB,2GAA2G;aAClG,aAAa;IACtB,6CAA6C;eAClC,QAAQ;IACnB,uCAAuC;sBACrB,OAAO;IACzB,4HAA4H;oBAC5G,KAAK,CAAC,SAAS;IAC/B,2HAA2H;sBACzG,KAAK,CAAC,SAAS;IACjC,2DAA2D;YACnD,KAAK,CAAC,SAAS;IACvB,wBAAwB;eACb,KAAK,CAAC,SAAS;IAC1B;;;SAGK;kBACS,OAAO;IACrB,gDAAgD;cACtC,MAAM,IAAI;IACpB,gFAAgF;oBAChE,MAAM;IACtB,gCAAgC;YACxB,KAAK,CAAC,SAAS;IACvB;;;SAGK;mBACU,kBAAkB;IACjC,uDAAuD;kCACzB,MAAM;IACpC;;OAEG;8BACuB,MAAM;IAChC;;;SAGK;eACM,OAAO;IAClB;;;SAGK;mBACU,SAAS,CAAC,YAAY;gFAmNtC,CAAC"}
1
+ {"version":3,"file":"Banner.d.ts","sourceRoot":"","sources":["../../src/banner/Banner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2E,MAAM,OAAO,CAAC;AAChG,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EACb,QAAQ,EACR,WAAW,EACZ,MAAM,4BAA4B,CAAC;AAKpC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAM7C,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG;IAC1C,2GAA2G;IAC3G,OAAO,EAAE,aAAa,CAAC;IACvB,6CAA6C;IAC7C,SAAS,EAAE,QAAQ,CAAC;IACpB,uCAAuC;IACvC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,4HAA4H;IAC5H,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,2HAA2H;IAC3H,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAClC,2DAA2D;IAC3D,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,wBAAwB;IACxB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;;SAGK;IACL,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,gFAAgF;IAChF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gCAAgC;IAChC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;;;SAGK;IACL,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,uDAAuD;IACvD,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC;;OAEG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC;;;SAGK;IACL,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;SAIK;IACL,YAAY,CAAC,EAAE,SAAS,CAAC,YAAY,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AAEhF,eAAO,MAAM,MAAM;IAnDjB,2GAA2G;aAClG,aAAa;IACtB,6CAA6C;eAClC,QAAQ;IACnB,uCAAuC;sBACrB,OAAO;IACzB,4HAA4H;oBAC5G,KAAK,CAAC,SAAS;IAC/B,2HAA2H;sBACzG,KAAK,CAAC,SAAS;IACjC,2DAA2D;YACnD,KAAK,CAAC,SAAS;IACvB,wBAAwB;eACb,KAAK,CAAC,SAAS;IAC1B;;;SAGK;kBACS,OAAO;IACrB,gDAAgD;cACtC,MAAM,IAAI;IACpB,gFAAgF;oBAChE,MAAM;IACtB,gCAAgC;YACxB,KAAK,CAAC,SAAS;IACvB;;;SAGK;mBACU,kBAAkB;IACjC,uDAAuD;kCACzB,MAAM;IACpC;;OAEG;8BACuB,MAAM;IAChC;;;SAGK;eACM,OAAO;IAClB;;;;SAIK;mBACU,SAAS,CAAC,YAAY;gFAmNtC,CAAC"}
@@ -84,6 +84,10 @@ export type ListCellBaseProps = CellDetailProps &
84
84
  title?: React.ReactNode;
85
85
  /** React node to render title. Takes precedence over `title`. */
86
86
  titleNode?: React.ReactNode;
87
+ /** Subtitle to display below the title and above the description. This prop is only intended to accept a string or Text component; other use cases, while allowed, are not supported and may result in unexpected behavior. For arbitrary content, use `subtitleNode`. */
88
+ subtitle?: React.ReactNode;
89
+ /** React node to render subtitle. Takes precedence over `subtitle`. */
90
+ subtitleNode?: React.ReactNode;
87
91
  /** Styles for the components */
88
92
  styles?: {
89
93
  root?: StyleProp<ViewStyle>;
@@ -96,6 +100,7 @@ export type ListCellBaseProps = CellDetailProps &
96
100
  mainContent?: StyleProp<ViewStyle>;
97
101
  helperText?: StyleProp<ViewStyle>;
98
102
  title?: StyleProp<TextStyle>;
103
+ subtitle?: StyleProp<TextStyle>;
99
104
  description?: StyleProp<TextStyle>;
100
105
  };
101
106
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ListCell.d.ts","sourceRoot":"","sources":["../../src/cells/ListCell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAMpE,OAAO,EAAQ,KAAK,aAAa,EAAE,KAAK,SAAS,EAAoB,MAAM,QAAQ,CAAC;AACpF,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAEhE,eAAO,MAAM,qBAAqB;;;;CAIF,CAAC;AAGjC,eAAO,MAAM,qBAAqB;;;;CAIF,CAAC;AAEjC,MAAM,MAAM,iBAAiB,GAAG,eAAe,GAC7C,IAAI,CAAC,aAAa,EAAE,WAAW,GAAG,UAAU,CAAC,GAAG;IAC9C,mDAAmD;IACnD,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,gGAAgG;IAChG,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC;;;;OAIG;IACH,GAAG,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB;;OAEG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,cAAc,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAC;IACpD,6SAA6S;IAC7S,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,6EAA6E;IAC7E,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAClC;;;OAGG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,2DAA2D;IAC3D,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,6BAA6B;IAC7B,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE/B,KAAK,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC;IAC3B,wIAAwI;IACxI,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,uSAAuS;IACvS,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,iEAAiE;IACjE,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,gCAAgC;IAChC,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QAC5B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QAC7B,YAAY,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QACpC,GAAG,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QAC3B,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QACjC,gBAAgB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QACxC,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QACjC,WAAW,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QACnC,UAAU,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QAClC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QAC7B,WAAW,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;KACpC,CAAC;CACH,CAAC;AAEJ,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,GAAG,UAAU,CAAC,CAAC;AAE1F,eAAO,MAAM,QAAQ,2CAoJnB,CAAC"}
1
+ {"version":3,"file":"ListCell.d.ts","sourceRoot":"","sources":["../../src/cells/ListCell.tsx"],"names":[],"mappings":"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"}
@@ -1,10 +1,16 @@
1
+ import { type ReactNode } from 'react';
1
2
  import type { StyleProp, ViewStyle } from 'react-native';
2
3
  import type { FallbackRectWidthProps, SharedProps } from '@coinbase/cds-common/types';
4
+ import { type CellAccessoryType } from './CellAccessory';
3
5
  import type { CellMediaType } from './CellMedia';
4
6
  import { type ListCellBaseProps } from './ListCell';
5
7
  export type ListCellFallbackBaseProps = SharedProps &
6
8
  FallbackRectWidthProps &
7
9
  Pick<ListCellBaseProps, 'compact' | 'innerSpacing' | 'outerSpacing' | 'spacingVariant'> & {
10
+ /** Accessory to display at the end of the cell. */
11
+ accessory?: CellAccessoryType;
12
+ /** Custom accessory rendered at the end of the cell. Takes precedence over `accessory`. */
13
+ accessoryNode?: ReactNode;
8
14
  /** Display description shimmer. */
9
15
  description?: boolean;
10
16
  /** Display detail shimmer. */
@@ -15,6 +21,8 @@ export type ListCellFallbackBaseProps = SharedProps &
15
21
  media?: CellMediaType;
16
22
  /** Display subdetail shimmer. */
17
23
  subdetail?: boolean;
24
+ /** Display subtitle shimmer. */
25
+ subtitle?: boolean;
18
26
  /** Display title shimmer. */
19
27
  title?: boolean;
20
28
  };
@@ -31,6 +39,10 @@ export type ListCellFallbackProps = ListCellFallbackBaseProps & {
31
39
  title?: StyleProp<ViewStyle>;
32
40
  /** Style to apply to the description shimmer. */
33
41
  description?: StyleProp<ViewStyle>;
42
+ /** Style to apply to the subtitle shimmer. */
43
+ subtitle?: StyleProp<ViewStyle>;
44
+ /** Style to apply to the accessory container. */
45
+ accessory?: StyleProp<ViewStyle>;
34
46
  };
35
47
  };
36
48
  export declare const ListCellFallback: import('react').NamedExoticComponent<ListCellFallbackProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"ListCellFallback.d.ts","sourceRoot":"","sources":["../../src/cells/ListCellFallback.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,KAAK,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAQtF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAgD,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGlG,MAAM,MAAM,yBAAyB,GAAG,WAAW,GACjD,sBAAsB,GACtB,IAAI,CAAC,iBAAiB,EAAE,SAAS,GAAG,cAAc,GAAG,cAAc,GAAG,gBAAgB,CAAC,GAAG;IACxF,mCAAmC;IACnC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,8BAA8B;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,mCAAmC;IACnC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,iCAAiC;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6BAA6B;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEJ,MAAM,MAAM,qBAAqB,GAAG,yBAAyB,GAAG;IAC9D,+DAA+D;IAC/D,MAAM,CAAC,EAAE;QACP,kEAAkE;QAClE,UAAU,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QAClC,4CAA4C;QAC5C,MAAM,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QAC9B,+CAA+C;QAC/C,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QACjC,2CAA2C;QAC3C,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QAC7B,iDAAiD;QACjD,WAAW,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;KACpC,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,gBAAgB,6DAmJ3B,CAAC"}
1
+ {"version":3,"file":"ListCellFallback.d.ts","sourceRoot":"","sources":["../../src/cells/ListCellFallback.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,SAAS,EAAW,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,KAAK,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAQtF,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAgD,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGlG,MAAM,MAAM,yBAAyB,GAAG,WAAW,GACjD,sBAAsB,GACtB,IAAI,CAAC,iBAAiB,EAAE,SAAS,GAAG,cAAc,GAAG,cAAc,GAAG,gBAAgB,CAAC,GAAG;IACxF,mDAAmD;IACnD,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,2FAA2F;IAC3F,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,mCAAmC;IACnC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,8BAA8B;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,mCAAmC;IACnC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,iCAAiC;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6BAA6B;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEJ,MAAM,MAAM,qBAAqB,GAAG,yBAAyB,GAAG;IAC9D,+DAA+D;IAC/D,MAAM,CAAC,EAAE;QACP,kEAAkE;QAClE,UAAU,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QAClC,4CAA4C;QAC5C,MAAM,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QAC9B,+CAA+C;QAC/C,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QACjC,2CAA2C;QAC3C,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QAC7B,iDAAiD;QACjD,WAAW,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QACnC,8CAA8C;QAC9C,QAAQ,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QAChC,iDAAiD;QACjD,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;KAClC,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,gBAAgB,6DAuL3B,CAAC"}
@@ -11,20 +11,6 @@ import { Pressable } from '../system/Pressable';
11
11
  import { Link } from '../typography';
12
12
  import { Text } from '../typography/Text';
13
13
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
- const variantStyleProps = {
15
- contextual: {
16
- paddingX: 2,
17
- borderRadius: 400
18
- },
19
- global: {
20
- paddingX: 3,
21
- borderRadius: undefined
22
- },
23
- inline: {
24
- paddingX: 3,
25
- borderRadius: undefined
26
- }
27
- };
28
14
  export const Banner = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(function Banner(_ref, forwardedRef) {
29
15
  let {
30
16
  variant,
@@ -43,7 +29,7 @@ export const Banner = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(function Banner(
43
29
  styleVariant = 'contextual',
44
30
  startIconAccessibilityLabel,
45
31
  closeAccessibilityLabel = 'close',
46
- borderRadius = 400,
32
+ borderRadius = styleVariant === 'contextual' ? 400 : undefined,
47
33
  margin,
48
34
  marginX,
49
35
  marginY,
@@ -120,10 +106,11 @@ export const Banner = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(function Banner(
120
106
  background: background,
121
107
  borderRadius: borderRadius,
122
108
  gap: 1,
109
+ paddingX: styleVariant === 'contextual' ? 2 : 3,
123
110
  paddingY: 2,
124
111
  style: style,
125
112
  testID: testID
126
- }, variantStyleProps[styleVariant], props, {
113
+ }, props, {
127
114
  children: [/*#__PURE__*/_jsx(Box, {
128
115
  accessibilityLabel: startIconAccessibilityLabel,
129
116
  accessibilityRole: "image",
@@ -31,6 +31,7 @@ const examplePropsWithOffset = _extends({}, exampleProps, {
31
31
  marginX: -2,
32
32
  children: 'Lorem ipsum dolar sit amet'
33
33
  });
34
+ const borderRadiusValues = [0, 200, 400];
34
35
  const styleProps = [{
35
36
  variant: 'warning',
36
37
  title: 'Warning message',
@@ -321,6 +322,35 @@ const BannerScreen = () => {
321
322
  variant: "warning"
322
323
  }))]
323
324
  })]
325
+ }), /*#__PURE__*/_jsx(Example, {
326
+ title: "Border Radius",
327
+ children: /*#__PURE__*/_jsxs(VStack, {
328
+ gap: 2,
329
+ children: [/*#__PURE__*/_jsx(Text, {
330
+ font: "title1",
331
+ children: "Contextual"
332
+ }), /*#__PURE__*/_jsx(VStack, {
333
+ gap: 2,
334
+ children: borderRadiusValues.map(radius => /*#__PURE__*/_jsx(Banner, _extends({}, exampleProps, {
335
+ borderRadius: radius,
336
+ title: "Contextual radius " + radius,
337
+ variant: "informational",
338
+ children: shortMessage
339
+ }), "mobile-contextual-" + radius))
340
+ }), /*#__PURE__*/_jsx(Text, {
341
+ font: "title1",
342
+ children: "Inline"
343
+ }), /*#__PURE__*/_jsx(VStack, {
344
+ gap: 2,
345
+ children: borderRadiusValues.map(radius => /*#__PURE__*/_jsx(Banner, _extends({}, exampleProps, {
346
+ borderRadius: radius,
347
+ styleVariant: "inline",
348
+ title: "Inline radius " + radius,
349
+ variant: "informational",
350
+ children: shortMessage
351
+ }), "mobile-inline-" + radius))
352
+ })]
353
+ })
324
354
  })]
325
355
  });
326
356
  };
@@ -1,4 +1,4 @@
1
- const _excluded = ["accessory", "accessoryNode", "end", "action", "compact", "title", "titleNode", "disableMultilineTitle", "description", "descriptionNode", "detail", "detailNode", "detailWidth", "intermediary", "priority", "innerSpacing", "outerSpacing", "disabled", "disableSelectionAccessory", "helperText", "media", "multiline", "selected", "subdetail", "subdetailNode", "variant", "onPress", "spacingVariant", "style", "styles"];
1
+ const _excluded = ["accessory", "accessoryNode", "end", "action", "compact", "title", "titleNode", "disableMultilineTitle", "description", "descriptionNode", "subtitle", "subtitleNode", "detail", "detailNode", "detailWidth", "intermediary", "priority", "innerSpacing", "outerSpacing", "disabled", "disableSelectionAccessory", "helperText", "media", "multiline", "selected", "subdetail", "subdetailNode", "variant", "onPress", "spacingVariant", "style", "styles"];
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, { memo, useMemo } from 'react';
@@ -34,6 +34,8 @@ export const ListCell = /*#__PURE__*/memo(function ListCell(_ref) {
34
34
  disableMultilineTitle = false,
35
35
  description,
36
36
  descriptionNode,
37
+ subtitle,
38
+ subtitleNode,
37
39
  detail,
38
40
  detailNode,
39
41
  detailWidth,
@@ -112,6 +114,13 @@ export const ListCell = /*#__PURE__*/memo(function ListCell(_ref) {
112
114
  spacingVariant === 'condensed' ? 2 : description ? 1 : 2,
113
115
  style: styles == null ? void 0 : styles.title,
114
116
  children: title
117
+ }) : null, subtitleNode ? subtitleNode : subtitle ? /*#__PURE__*/_jsx(Text, {
118
+ color: "fgMuted",
119
+ ellipsize: "tail",
120
+ font: "label1",
121
+ numberOfLines: 1,
122
+ style: styles == null ? void 0 : styles.subtitle,
123
+ children: subtitle
115
124
  }) : null, descriptionNode ? descriptionNode : description ? /*#__PURE__*/_jsx(Text, {
116
125
  color: "fgMuted",
117
126
  ellipsize: multiline ? undefined : 'tail',
@@ -1,4 +1,4 @@
1
- const _excluded = ["title", "description", "detail", "subdetail", "media", "disableRandomRectWidth", "rectWidthVariant", "helperText", "styles", "compact", "spacingVariant", "innerSpacing", "outerSpacing"];
1
+ const _excluded = ["accessory", "accessoryNode", "title", "description", "detail", "subdetail", "media", "disableRandomRectWidth", "rectWidthVariant", "helperText", "subtitle", "styles", "compact", "spacingVariant", "innerSpacing", "outerSpacing"];
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 { memo, useMemo } from 'react';
@@ -7,11 +7,14 @@ import { useTheme } from '../hooks/useTheme';
7
7
  import { VStack } from '../layout';
8
8
  import { Fallback } from '../layout/Fallback';
9
9
  import { Cell } from './Cell';
10
+ import { CellAccessory } from './CellAccessory';
10
11
  import { condensedInnerSpacing, condensedOuterSpacing } from './ListCell';
11
12
  import { MediaFallback } from './MediaFallback';
12
13
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
14
  export const ListCellFallback = /*#__PURE__*/memo(function ListCellFallback(_ref) {
14
15
  let {
16
+ accessory,
17
+ accessoryNode,
15
18
  title,
16
19
  description,
17
20
  detail,
@@ -20,6 +23,7 @@ export const ListCellFallback = /*#__PURE__*/memo(function ListCellFallback(_ref
20
23
  disableRandomRectWidth,
21
24
  rectWidthVariant,
22
25
  helperText,
26
+ subtitle,
23
27
  styles,
24
28
  compact,
25
29
  spacingVariant = compact ? 'compact' : 'normal',
@@ -34,13 +38,13 @@ export const ListCellFallback = /*#__PURE__*/memo(function ListCellFallback(_ref
34
38
  }
35
39
  return /*#__PURE__*/_jsx(Fallback, {
36
40
  disableRandomRectWidth: disableRandomRectWidth,
37
- height: theme.lineHeight.body,
41
+ height: spacingVariant === 'condensed' ? theme.lineHeight.label2 : theme.lineHeight.body,
38
42
  rectWidthVariant: getRectWidthVariant(rectWidthVariant, 0),
39
43
  style: styles == null ? void 0 : styles.description,
40
44
  testID: "list-cell-fallback-description",
41
45
  width: 110
42
46
  });
43
- }, [description, disableRandomRectWidth, rectWidthVariant, styles == null ? void 0 : styles.description, theme.lineHeight.body]);
47
+ }, [description, disableRandomRectWidth, rectWidthVariant, spacingVariant, styles == null ? void 0 : styles.description, theme.lineHeight.body, theme.lineHeight.label2]);
44
48
  const detailFallback = useMemo(() => {
45
49
  if (!detail && !subdetail) {
46
50
  return null;
@@ -59,14 +63,14 @@ export const ListCellFallback = /*#__PURE__*/memo(function ListCellFallback(_ref
59
63
  width: 60
60
64
  }), !!subdetail && /*#__PURE__*/_jsx(Fallback, {
61
65
  disableRandomRectWidth: disableRandomRectWidth,
62
- height: theme.lineHeight.body,
66
+ height: spacingVariant === 'condensed' ? theme.lineHeight.label2 : theme.lineHeight.body,
63
67
  rectWidthVariant: getRectWidthVariant(rectWidthVariant, 1),
64
68
  style: styles == null ? void 0 : styles.subdetail,
65
69
  testID: "list-cell-fallback-subdetail",
66
70
  width: 60
67
71
  })]
68
72
  });
69
- }, [detail, disableRandomRectWidth, rectWidthVariant, styles == null ? void 0 : styles.detail, styles == null ? void 0 : styles.subdetail, subdetail, theme.lineHeight.body]);
73
+ }, [detail, disableRandomRectWidth, rectWidthVariant, spacingVariant, styles == null ? void 0 : styles.detail, styles == null ? void 0 : styles.subdetail, subdetail, theme.lineHeight.body, theme.lineHeight.label2]);
70
74
  const helperTextFallback = useMemo(() => {
71
75
  if (!helperText) {
72
76
  return null;
@@ -80,6 +84,19 @@ export const ListCellFallback = /*#__PURE__*/memo(function ListCellFallback(_ref
80
84
  width: "85%"
81
85
  });
82
86
  }, [disableRandomRectWidth, helperText, rectWidthVariant, styles == null ? void 0 : styles.helperText, theme.lineHeight.body]);
87
+ const subtitleFallback = useMemo(() => {
88
+ if (!subtitle) {
89
+ return null;
90
+ }
91
+ return /*#__PURE__*/_jsx(Fallback, {
92
+ disableRandomRectWidth: disableRandomRectWidth,
93
+ height: theme.lineHeight.label1,
94
+ rectWidthVariant: getRectWidthVariant(rectWidthVariant, 2),
95
+ style: styles == null ? void 0 : styles.subtitle,
96
+ testID: "list-cell-fallback-subtitle",
97
+ width: 80
98
+ });
99
+ }, [disableRandomRectWidth, rectWidthVariant, styles == null ? void 0 : styles.subtitle, subtitle, theme.lineHeight.label1]);
83
100
  const mediaFallback = useMemo(() => {
84
101
  if (!media) {
85
102
  return;
@@ -103,15 +120,22 @@ export const ListCellFallback = /*#__PURE__*/memo(function ListCellFallback(_ref
103
120
  });
104
121
  }, [disableRandomRectWidth, rectWidthVariant, styles == null ? void 0 : styles.title, theme.lineHeight.headline, title]);
105
122
  return /*#__PURE__*/_jsx(Cell, _extends({
123
+ accessory: accessory ? /*#__PURE__*/_jsx(CellAccessory, {
124
+ type: accessory
125
+ }) : undefined,
126
+ accessoryNode: accessoryNode,
106
127
  bottomContent: helperTextFallback,
107
- detail: detailFallback,
128
+ end: detailFallback,
108
129
  innerSpacing: innerSpacing != null ? innerSpacing : spacingVariant === 'condensed' ? condensedInnerSpacing : undefined,
109
130
  media: mediaFallback,
110
- outerSpacing: outerSpacing != null ? outerSpacing : spacingVariant === 'condensed' ? condensedOuterSpacing : undefined
131
+ outerSpacing: outerSpacing != null ? outerSpacing : spacingVariant === 'condensed' ? condensedOuterSpacing : undefined,
132
+ styles: {
133
+ accessory: styles == null ? void 0 : styles.accessory
134
+ }
111
135
  }, props, {
112
136
  children: /*#__PURE__*/_jsxs(VStack, {
113
137
  gap: 0.5,
114
- children: [titleFallback, descriptionFallback]
138
+ children: [titleFallback, subtitleFallback, descriptionFallback]
115
139
  })
116
140
  }));
117
141
  });
@@ -5,6 +5,7 @@ import { selectCellSpacingConfig } from '@coinbase/cds-common/tokens/select';
5
5
  import { gutter } from '@coinbase/cds-common/tokens/sizing';
6
6
  import { Button } from '../../buttons/Button';
7
7
  import { IconButton } from '../../buttons/IconButton';
8
+ import { Switch } from '../../controls/Switch';
8
9
  import { Example, ExampleScreen } from '../../examples/ExampleScreen';
9
10
  import { useTheme } from '../../hooks/useTheme';
10
11
  import { Icon } from '../../icons/Icon';
@@ -16,6 +17,7 @@ import { Tag } from '../../tag/Tag';
16
17
  import { Text } from '../../typography/Text';
17
18
  import { CellHelperText } from '../CellHelperText';
18
19
  import { ListCell } from '../ListCell';
20
+ import { ListCellFallback } from '../ListCellFallback';
19
21
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
20
22
  const onPressConsole = () => console.log('onPress');
21
23
  const cellPriorities = ['middle', 'end'];
@@ -641,6 +643,42 @@ const WithActions = () => /*#__PURE__*/_jsxs(_Fragment, {
641
643
  title: "Title"
642
644
  })]
643
645
  });
646
+ const Fallback = () => {
647
+ const [showFallback, setShowFallback] = React.useState(false);
648
+ return /*#__PURE__*/_jsxs(VStack, {
649
+ gap: 2,
650
+ children: [/*#__PURE__*/_jsx(Switch, {
651
+ checked: showFallback,
652
+ onChange: (_, nextChecked) => setShowFallback(Boolean(nextChecked)),
653
+ children: "Show fallback state"
654
+ }), showFallback ? /*#__PURE__*/_jsx(ListCellFallback, {
655
+ description: true,
656
+ detail: true,
657
+ disableRandomRectWidth: true,
658
+ helperText: true,
659
+ subdetail: true,
660
+ subtitle: true,
661
+ title: true,
662
+ accessory: "more",
663
+ media: "asset",
664
+ spacingVariant: "condensed"
665
+ }) : /*#__PURE__*/_jsx(ListCell, {
666
+ accessory: "more",
667
+ description: "Review portfolio performance",
668
+ detail: "$12,345.00",
669
+ helperText: /*#__PURE__*/_jsx(CellHelperText, {
670
+ children: "Balance reflects live market data"
671
+ }),
672
+ media: /*#__PURE__*/_jsx(Avatar, {
673
+ src: assets.eth.imageUrl
674
+ }),
675
+ spacingVariant: "condensed",
676
+ subdetail: "+5.43%",
677
+ subtitle: "ETH",
678
+ title: "Ethereum"
679
+ })]
680
+ });
681
+ };
644
682
  const WithIntermediary = () => /*#__PURE__*/_jsxs(_Fragment, {
645
683
  children: [/*#__PURE__*/_jsx(ListCell, {
646
684
  description: "Description",
@@ -871,6 +909,44 @@ const CondensedListCell = () => {
871
909
  },
872
910
  subdetail: "Subdetail",
873
911
  title: "Title"
912
+ }), /*#__PURE__*/_jsx(ListCell, {
913
+ multiline: true,
914
+ description: "Long description with multiple lines. This section can be arbitrarily long and occupy many many lines.",
915
+ detail: "Detail",
916
+ end: /*#__PURE__*/_jsxs(HStack, {
917
+ alignItems: "center",
918
+ gap: 1,
919
+ children: [/*#__PURE__*/_jsx(Text, {
920
+ color: "fgMuted",
921
+ font: "label2",
922
+ children: "Meta"
923
+ }), /*#__PURE__*/_jsx(Icon, {
924
+ color: "fg",
925
+ name: "caretRight",
926
+ size: "s"
927
+ })]
928
+ }),
929
+ media: /*#__PURE__*/_jsx(Avatar, {
930
+ shape: "circle",
931
+ size: "l",
932
+ src: assets.eth.imageUrl
933
+ }),
934
+ onPress: onPressConsole,
935
+ priority: "end",
936
+ spacingVariant: "condensed",
937
+ styles: {
938
+ media: {
939
+ marginTop: theme.space[1],
940
+ alignSelf: 'flex-start'
941
+ },
942
+ end: {
943
+ marginTop: theme.space[1],
944
+ alignSelf: 'flex-start'
945
+ }
946
+ },
947
+ subdetail: "Subdetail",
948
+ subtitle: "Subtitle",
949
+ title: "Title"
874
950
  }), /*#__PURE__*/_jsx(ListCell, {
875
951
  accessory: "more",
876
952
  description: "Description",
@@ -1275,6 +1351,12 @@ const ListCellScreen = () => {
1275
1351
  title: "WithActions",
1276
1352
  titlePadding: titlePadding,
1277
1353
  children: /*#__PURE__*/_jsx(WithActions, {})
1354
+ }), /*#__PURE__*/_jsx(Example, {
1355
+ inline: true,
1356
+ paddingX: 0,
1357
+ title: "Fallback",
1358
+ titlePadding: titlePadding,
1359
+ children: /*#__PURE__*/_jsx(Fallback, {})
1278
1360
  }), /*#__PURE__*/_jsx(Example, {
1279
1361
  inline: true,
1280
1362
  paddingX: 0,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coinbase/cds-mobile",
3
- "version": "8.21.8",
3
+ "version": "8.22.1",
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.21.8",
157
+ "@coinbase/cds-common": "^8.22.1",
158
158
  "@coinbase/cds-icons": "^5.7.0",
159
159
  "@coinbase/cds-illustrations": "^4.28.0",
160
160
  "@coinbase/cds-lottie-files": "^3.3.3",