@coinbase/cds-web 8.15.0 → 8.16.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.16.1 (10/9/2025 PST)
12
+
13
+ #### 🐞 Fixes
14
+
15
+ - Update createThemeCssVars to use String.prototype.replace instead of replaceAll. [[#90](https://github.com/coinbase/cds/pull/90)]
16
+
17
+ ## 8.16.0 (10/8/2025 PST)
18
+
19
+ #### 🚀 Updates
20
+
21
+ - New ListCell in layoutSpacing variants. [[#31](https://github.com/coinbase/cds/pull/31)]
22
+
11
23
  ## 8.15.0 (10/8/2025 PST)
12
24
 
13
25
  ### 🚀 Updates
@@ -1,5 +1,4 @@
1
1
  import React from 'react';
2
- import type { ThemeVars } from '@coinbase/cds-common/core/theme';
3
2
  import type { CellPriority } from '@coinbase/cds-common/types';
4
3
  import type { Polymorphic } from '../core/polymorphism';
5
4
  import { type BoxBaseProps } from '../layout/Box';
@@ -27,18 +26,46 @@ export type CellSpacing = Pick<
27
26
  export type CellBaseProps = Polymorphic.ExtendableProps<
28
27
  BoxBaseProps,
29
28
  Pick<PressableProps<'a'>, 'href' | 'target'> & {
29
+ /**
30
+ * @deprecated Use `classNames.contentContainer` instead. `contentClassName` will be removed in a future major release.
31
+ */
30
32
  contentClassName?: string;
33
+ /** Key down handler for keyboard interaction. */
31
34
  onKeyDown?: React.KeyboardEventHandler;
35
+ /** Key up handler for keyboard interaction. */
32
36
  onKeyUp?: React.KeyboardEventHandler;
37
+ /** Click handler. */
33
38
  onClick?: React.MouseEventHandler;
39
+ /** Accessory element rendered at the end of the cell (e.g., chevron). */
34
40
  accessory?: React.ReactElement<CellAccessoryProps>;
41
+ /** Main content of the cell; typically title/description content. */
35
42
  children: React.ReactNode;
43
+ /**
44
+ * End-aligned content (e.g., value, status).
45
+ * Replaces the deprecated `detail` prop.
46
+ */
47
+ end?: React.ReactNode;
48
+ /**
49
+ * @deprecated Use `end` instead. `detail` will be removed in a future major release.
50
+ */
36
51
  detail?: React.ReactNode;
52
+ /** Middle content between main content and detail. */
37
53
  intermediary?: React.ReactNode;
54
+ /** Media rendered at the start of the cell (icon, avatar, image, etc). */
38
55
  media?: React.ReactElement;
56
+ /**
57
+ * @deprecated Use `shouldTruncate` instead. `shouldOverflow` will be removed in a future release.
58
+ */
39
59
  shouldOverflow?: boolean;
40
- borderRadius?: ThemeVars.BorderRadius;
41
- /** Apply a fixed width to the detail (end). */
60
+ /**
61
+ * Controls whether the main content should truncate with an ellipsis.
62
+ * Defaults to true (truncates) when not provided.
63
+ * @default true
64
+ */
65
+ shouldTruncate?: boolean;
66
+ /**
67
+ * @deprecated Use `styles.end` instead. `detailWidth` will be removed in a future major release.
68
+ */
42
69
  detailWidth?: number | string;
43
70
  /** Is the cell disabled? Will apply opacity and disable interaction. */
44
71
  disabled?: boolean;
@@ -52,6 +79,32 @@ export type CellBaseProps = Polymorphic.ExtendableProps<
52
79
  innerSpacing?: CellSpacing;
53
80
  /** The content to display below the main cell content */
54
81
  bottomContent?: React.ReactNode;
82
+ /** Styles for the components */
83
+ styles?: {
84
+ root?: React.CSSProperties;
85
+ contentContainer?: React.CSSProperties;
86
+ topContent?: React.CSSProperties;
87
+ bottomContent?: React.CSSProperties;
88
+ pressable?: React.CSSProperties;
89
+ media?: React.CSSProperties;
90
+ intermediary?: React.CSSProperties;
91
+ /** Applied to the container of detail or action */
92
+ end?: React.CSSProperties;
93
+ accessory?: React.CSSProperties;
94
+ };
95
+ /** Class names for the components */
96
+ classNames?: {
97
+ root?: string;
98
+ contentContainer?: string;
99
+ topContent?: string;
100
+ bottomContent?: string;
101
+ pressable?: string;
102
+ media?: string;
103
+ intermediary?: string;
104
+ /** Applied to the container of detail or action */
105
+ end?: string;
106
+ accessory?: string;
107
+ };
55
108
  }
56
109
  >;
57
110
  export type CellProps<AsComponent extends React.ElementType> = Polymorphic.Props<
@@ -1 +1 @@
1
- {"version":3,"file":"Cell.d.ts","sourceRoot":"","sources":["../../src/cells/Cell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAI/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGxD,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAGvD,OAAO,EAAa,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAsC1D,eAAO,MAAM,kBAAkB,QAAQ,CAAC;AAExC,MAAM,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,CAAC;AAE3D,MAAM,MAAM,WAAW,GAAG,IAAI,CAC5B,YAAY,EACV,SAAS,GACT,UAAU,GACV,UAAU,GACV,YAAY,GACZ,YAAY,GACZ,eAAe,GACf,cAAc,GACd,QAAQ,GACR,SAAS,GACT,SAAS,GACT,WAAW,GACX,WAAW,GACX,cAAc,GACd,aAAa,CAChB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,eAAe,CACrD,YAAY,EACZ,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,GAAG;IAC7C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC;IACvC,OAAO,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC;IACrC,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC;IAClC,SAAS,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;IACnD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,KAAK,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,SAAS,CAAC,YAAY,CAAC;IACtC,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,wEAAwE;IACxE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6GAA6G;IAC7G,QAAQ,CAAC,EAAE,YAAY,GAAG,YAAY,EAAE,CAAC;IACzC,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uDAAuD;IACvD,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B,sDAAsD;IACtD,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B,yDAAyD;IACzD,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACjC,CACF,CAAC;AAEF,MAAM,MAAM,SAAS,CAAC,WAAW,SAAS,KAAK,CAAC,WAAW,IAAI,WAAW,CAAC,KAAK,CAC9E,WAAW,EACX,aAAa,CACd,CAAC;AAEF,KAAK,aAAa,GAAG,CAAC,CAAC,WAAW,SAAS,KAAK,CAAC,WAAW,GAAG,kBAAkB,EAC/E,KAAK,EAAE,SAAS,CAAC,WAAW,CAAC,KAC1B,WAAW,CAAC,WAAW,CAAC,GAC3B,WAAW,CAAC,UAAU,CAAC;AAEzB,eAAO,MAAM,IAAI,EAAE,aAgPlB,CAAC"}
1
+ {"version":3,"file":"Cell.d.ts","sourceRoot":"","sources":["../../src/cells/Cell.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
+ import type { TextProps } from '../typography/Text';
2
3
  export type CellDetailVariant = 'foregroundMuted' | 'negative' | 'positive' | 'warning';
3
4
  export type CellDetailProps = {
4
5
  /**
@@ -13,6 +14,8 @@ export type CellDetailProps = {
13
14
  subdetail?: React.ReactNode;
14
15
  /** Variant color to apply to the subdetail text. */
15
16
  variant?: CellDetailVariant;
17
+ /** Font to apply to the subdetail text. */
18
+ subdetailFont?: TextProps<'div'>['font'];
16
19
  };
17
20
  export declare const CellDetail: React.NamedExoticComponent<CellDetailProps>;
18
21
  //# sourceMappingURL=CellDetail.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CellDetail.d.ts","sourceRoot":"","sources":["../../src/cells/CellDetail.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAC;AAKpC,MAAM,MAAM,iBAAiB,GAAG,iBAAiB,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;AAExF,MAAM,MAAM,eAAe,GAAG;IAC5B;;;OAGG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB;;;OAGG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,oDAAoD;IACpD,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B,CAAC;AASF,eAAO,MAAM,UAAU,6CA2BrB,CAAC"}
1
+ {"version":3,"file":"CellDetail.d.ts","sourceRoot":"","sources":["../../src/cells/CellDetail.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAC;AAGpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAIpD,MAAM,MAAM,iBAAiB,GAAG,iBAAiB,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;AAExF,MAAM,MAAM,eAAe,GAAG;IAC5B;;;OAGG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB;;;OAGG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,oDAAoD;IACpD,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,2CAA2C;IAC3C,aAAa,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;CAC1C,CAAC;AASF,eAAO,MAAM,UAAU,6CA4BrB,CAAC"}
@@ -29,6 +29,10 @@ export type CellMediaBaseProps = SharedProps &
29
29
  CellMediaVariantProps &
30
30
  Pick<SharedAccessibilityProps, 'accessibilityLabel'>;
31
31
  export type CellMediaProps = CellMediaBaseProps;
32
+ /**
33
+ * @deprecated This component will be removed in a future release. Pass media directly via the `media` prop.
34
+ * For example: `<Avatar src={...} />`, `<Icon name={...} />`, `<RemoteImage source={...} />`, or a Pictogram.
35
+ */
32
36
  export declare const CellMedia: React.NamedExoticComponent<CellMediaBaseProps>;
33
37
  export {};
34
38
  //# sourceMappingURL=CellMedia.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CellMedia.d.ts","sourceRoot":"","sources":["../../src/cells/CellMedia.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6B,MAAM,OAAO,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,KAAK,EAAE,QAAQ,EAAE,wBAAwB,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAGlG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAIjE,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,WAAW,CAAC;AAEhF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACrC,IAAI,EAAE,QAAQ,CAAC;IACf,iCAAiC;IACjC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,OAAO,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAC1C,YAAY,EAAE,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;CAClD,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACzB,IAAI,EAAE,OAAO,CAAC,aAAa,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC;IACnD;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB,CAAC;AAEF,KAAK,qBAAqB,GAAG,kBAAkB,GAAG,uBAAuB,GAAG,mBAAmB,CAAC;AAEhG,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAC1C,qBAAqB,GACrB,IAAI,CAAC,wBAAwB,EAAE,oBAAoB,CAAC,CAAC;AAEvD,MAAM,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAEhD,eAAO,MAAM,SAAS,gDA2DpB,CAAC"}
1
+ {"version":3,"file":"CellMedia.d.ts","sourceRoot":"","sources":["../../src/cells/CellMedia.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6B,MAAM,OAAO,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,KAAK,EAAE,QAAQ,EAAE,wBAAwB,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAGlG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAIjE,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,WAAW,CAAC;AAEhF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACrC,IAAI,EAAE,QAAQ,CAAC;IACf,iCAAiC;IACjC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,OAAO,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAC1C,YAAY,EAAE,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;CAClD,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACzB,IAAI,EAAE,OAAO,CAAC,aAAa,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC;IACnD;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB,CAAC;AAEF,KAAK,qBAAqB,GAAG,kBAAkB,GAAG,uBAAuB,GAAG,mBAAmB,CAAC;AAEhG,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAC1C,qBAAqB,GACrB,IAAI,CAAC,wBAAwB,EAAE,oBAAoB,CAAC,CAAC;AAEvD,MAAM,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,SAAS,gDA2DpB,CAAC"}
@@ -5,15 +5,66 @@ import { type CellAccessoryType } from './CellAccessory';
5
5
  import { type CellDetailProps } from './CellDetail';
6
6
  export declare const listCellDefaultElement = 'div';
7
7
  export type ListCellDefaultElement = typeof listCellDefaultElement;
8
+ export declare const hugInnerSpacing: {
9
+ paddingX: 2;
10
+ paddingY: 0.5;
11
+ marginX: 0;
12
+ };
13
+ export declare const hugOuterSpacing: {
14
+ paddingX: 0;
15
+ paddingY: 0;
16
+ marginX: 0;
17
+ };
18
+ type CellStyles = NonNullable<CellBaseProps['styles']>;
19
+ type CellClassNames = NonNullable<CellBaseProps['classNames']>;
8
20
  export type ListCellBaseProps = Polymorphic.ExtendableProps<
9
21
  Omit<CellBaseProps, 'children'>,
10
22
  CellDetailProps & {
11
23
  /** Accessory to display at the end of the cell. */
12
24
  accessory?: CellAccessoryType;
13
- /** Interactive action, like a CTA or form element. Cannot be used alongside `onPress`. */
25
+ /**
26
+ * End-aligned content (e.g., CTA, form element, metric). Replacement for the deprecated action prop, and takes precedence over it.
27
+ * If the content is an action (like button, link, etc), we recommend avoiding use alongside `onClick`.
28
+ * If used alongside `onClick`, the end action is triggered first and then the `onClick` handler.
29
+ */
30
+ end?: React.ReactNode;
31
+ /**
32
+ * @deprecated Use `end` instead. `action` will be removed in a future major release.
33
+ */
14
34
  action?: React.ReactNode;
15
- /** enables compact spacing */
35
+ /**
36
+ * @deprecated Use `layoutDensity="compact"` instead. `compact` will be removed in a future major release.
37
+ */
16
38
  compact?: boolean;
39
+ /**
40
+ * Layout spacing configuration.
41
+ * Deprecated values: 'spacious' and 'compact'. Prefer 'hug'.
42
+ * This prop will be removed in the next major release, new list cell will only have 'hug' spacing.
43
+ *
44
+ * When 'spacious' is set, the cell will have the following behavior:
45
+ * 1. min-height is 80px
46
+ * 2. Effective padding is '16px 24px' with 8px padding around the pressable area
47
+ * 3. border radius is 8px for pressable area
48
+ * 4. Title always cap at 1 line when there is no description, cap at 2 lines when there is description
49
+ * 5. Description and subdetail have font 'body'
50
+ *
51
+ * When 'compact' is set, the cell will have the following behavior:
52
+ * 1. min-height is 40px
53
+ * 2. Effective padding is '16px 24px' with 8px padding around the pressable area
54
+ * 3. border radius is 8px for pressable area
55
+ * 4. Title always cap at 1 line when there is no description, cap at 2 lines when there is description
56
+ * 5. Description and subdetail have font 'body'
57
+ *
58
+ * When 'hug' is set, the cell will have the following behavior:
59
+ * 1. No min-height, height is determined by the content
60
+ * 2. Padding is '4px 16px', no extra padding around the pressable area
61
+ * 3. 0 border radius for pressable area
62
+ * 4. Title always cap at 2 lines
63
+ * 5. Description and subdetail have font 'label2'
64
+ *
65
+ * @default 'spacious'
66
+ */
67
+ layoutSpacing?: 'spacious' | 'compact' | 'hug';
17
68
  /** Description of content. Max 1 line (with title) or 2 lines (without), otherwise will truncate. */
18
69
  description?: React.ReactNode;
19
70
  /**
@@ -36,6 +87,26 @@ export type ListCellBaseProps = Polymorphic.ExtendableProps<
36
87
  multiline?: boolean;
37
88
  /** Title of content. Max 1 line (with description) or 2 lines (without), otherwise will truncate. */
38
89
  title?: React.ReactNode;
90
+ /** Class names for the components */
91
+ classNames?: Pick<
92
+ CellClassNames,
93
+ 'root' | 'media' | 'intermediary' | 'end' | 'accessory' | 'contentContainer' | 'pressable'
94
+ > & {
95
+ mainContent?: CellClassNames['topContent'];
96
+ helperText?: CellClassNames['bottomContent'];
97
+ title?: string;
98
+ description?: string;
99
+ };
100
+ /** Styles for the components */
101
+ styles?: Pick<
102
+ CellStyles,
103
+ 'root' | 'media' | 'intermediary' | 'end' | 'accessory' | 'contentContainer' | 'pressable'
104
+ > & {
105
+ mainContent?: CellStyles['topContent'];
106
+ helperText?: CellStyles['bottomContent'];
107
+ title?: React.CSSProperties;
108
+ description?: React.CSSProperties;
109
+ };
39
110
  }
40
111
  >;
41
112
  export type ListCellProps<AsComponent extends React.ElementType> = Polymorphic.Props<
@@ -1 +1 @@
1
- {"version":3,"file":"ListCell.d.ts","sourceRoot":"","sources":["../../src/cells/ListCell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AAIzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAKxD,OAAO,EAAQ,KAAK,aAAa,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAQhE,eAAO,MAAM,sBAAsB,QAAQ,CAAC;AAE5C,MAAM,MAAM,sBAAsB,GAAG,OAAO,sBAAsB,CAAC;AAEnE,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,eAAe,CACzD,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,EAC/B,eAAe,GAAG;IAChB,mDAAmD;IACnD,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,0FAA0F;IAC1F,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qGAAqG;IACrG,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;OAGG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,yDAAyD;IACzD,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,qGAAqG;IACrG,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACzB,CACF,CAAC;AAEF,MAAM,MAAM,aAAa,CAAC,WAAW,SAAS,KAAK,CAAC,WAAW,IAAI,WAAW,CAAC,KAAK,CAClF,WAAW,EACX,iBAAiB,CAClB,CAAC;AAEF,KAAK,iBAAiB,GAAG,CAAC,CAAC,WAAW,SAAS,KAAK,CAAC,WAAW,GAAG,sBAAsB,EACvF,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,KAC9B,WAAW,CAAC,WAAW,CAAC,GAC3B,WAAW,CAAC,UAAU,CAAC;AAEzB,eAAO,MAAM,QAAQ,EAAE,iBA4FtB,CAAC"}
1
+ {"version":3,"file":"ListCell.d.ts","sourceRoot":"","sources":["../../src/cells/ListCell.tsx"],"names":[],"mappings":"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"}
@@ -17,6 +17,8 @@ export type ListCellFallbackBaseProps = SharedProps &
17
17
  subdetail?: boolean;
18
18
  /** Display title shimmer. */
19
19
  title?: boolean;
20
+ /** Layout spacing configuration. */
21
+ layoutSpacing?: 'spacious' | 'compact' | 'hug';
20
22
  };
21
23
  export type ListCellFallbackProps = ListCellFallbackBaseProps & {
22
24
  /** Class names to apply to the detail, bottomContent, and title. */
@@ -1 +1 @@
1
- {"version":3,"file":"ListCellFallback.d.ts","sourceRoot":"","sources":["../../src/cells/ListCellFallback.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAiB,MAAM,OAAO,CAAC;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAMtF,OAAO,EAAQ,KAAK,aAAa,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,MAAM,MAAM,yBAAyB,GAAG,WAAW,GACjD,sBAAsB,GACtB,IAAI,CAAC,aAAa,EAAE,cAAc,GAAG,cAAc,CAAC,GAAG;IACrD,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,oEAAoE;IACpE,UAAU,CAAC,EAAE;QACX,uDAAuD;QACvD,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,yCAAyC;QACzC,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,4CAA4C;QAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,wCAAwC;QACxC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,8CAA8C;QAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,+DAA+D;IAC/D,MAAM,CAAC,EAAE;QACP,kEAAkE;QAClE,UAAU,CAAC,EAAE,aAAa,CAAC;QAC3B,4CAA4C;QAC5C,MAAM,CAAC,EAAE,aAAa,CAAC;QACvB,+CAA+C;QAC/C,SAAS,CAAC,EAAE,aAAa,CAAC;QAC1B,2CAA2C;QAC3C,KAAK,CAAC,EAAE,aAAa,CAAC;QACtB,iDAAiD;QACjD,WAAW,CAAC,EAAE,aAAa,CAAC;KAC7B,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,gBAAgB,6DAuJ3B,CAAC"}
1
+ {"version":3,"file":"ListCellFallback.d.ts","sourceRoot":"","sources":["../../src/cells/ListCellFallback.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAiB,MAAM,OAAO,CAAC;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAMtF,OAAO,EAAQ,KAAK,aAAa,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIjD,MAAM,MAAM,yBAAyB,GAAG,WAAW,GACjD,sBAAsB,GACtB,IAAI,CAAC,aAAa,EAAE,cAAc,GAAG,cAAc,CAAC,GAAG;IACrD,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;IAChB,oCAAoC;IACpC,aAAa,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,KAAK,CAAC;CAChD,CAAC;AAEJ,MAAM,MAAM,qBAAqB,GAAG,yBAAyB,GAAG;IAC9D,oEAAoE;IACpE,UAAU,CAAC,EAAE;QACX,uDAAuD;QACvD,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,yCAAyC;QACzC,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,4CAA4C;QAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,wCAAwC;QACxC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,8CAA8C;QAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,+DAA+D;IAC/D,MAAM,CAAC,EAAE;QACP,kEAAkE;QAClE,UAAU,CAAC,EAAE,aAAa,CAAC;QAC3B,4CAA4C;QAC5C,MAAM,CAAC,EAAE,aAAa,CAAC;QACvB,+CAA+C;QAC/C,SAAS,CAAC,EAAE,aAAa,CAAC;QAC1B,2CAA2C;QAC3C,KAAK,CAAC,EAAE,aAAa,CAAC;QACtB,iDAAiD;QACjD,WAAW,CAAC,EAAE,aAAa,CAAC;KAC7B,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,gBAAgB,6DA4J3B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"createThemeCssVars.d.ts","sourceRoot":"","sources":["../../src/core/createThemeCssVars.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,KAAK,EAAE,MAAM,SAAS,CAAC;AAEvD,8FAA8F;AAC9F,eAAO,MAAM,kBAAkB,GAAI,OAAO,OAAO,CAAC,KAAK,CAAC,4BAiCvD,CAAC"}
1
+ {"version":3,"file":"createThemeCssVars.d.ts","sourceRoot":"","sources":["../../src/core/createThemeCssVars.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,KAAK,EAAE,MAAM,SAAS,CAAC;AAIvD,8FAA8F;AAC9F,eAAO,MAAM,kBAAkB,GAAI,OAAO,OAAO,CAAC,KAAK,CAAC,4BAiCvD,CAAC"}
package/esm/cells/Cell.js CHANGED
@@ -1,4 +1,4 @@
1
- const _excluded = ["as", "accessory", "alignItems", "borderRadius", "children", "className", "contentClassName", "detail", "detailWidth", "disabled", "gap", "columnGap", "rowGap", "intermediary", "media", "minHeight", "maxHeight", "onClick", "onKeyDown", "onKeyUp", "priority", "selected", "testID", "target", "href", "tabIndex", "shouldOverflow", "accessibilityLabel", "accessibilityLabelledBy", "accessibilityHint", "innerSpacing", "outerSpacing", "bottomContent"],
1
+ const _excluded = ["as", "accessory", "alignItems", "borderRadius", "children", "style", "styles", "classNames", "className", "contentClassName", "end", "detail", "detailWidth", "disabled", "gap", "columnGap", "rowGap", "intermediary", "media", "minHeight", "maxHeight", "onClick", "onKeyDown", "onKeyUp", "priority", "selected", "testID", "target", "href", "tabIndex", "shouldOverflow", "shouldTruncate", "accessibilityLabel", "accessibilityLabelledBy", "accessibilityHint", "innerSpacing", "outerSpacing", "bottomContent"],
2
2
  _excluded2 = ["marginX"];
3
3
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4
4
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
@@ -32,8 +32,12 @@ export const Cell = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref) => {
32
32
  alignItems = 'center',
33
33
  borderRadius = 200,
34
34
  children,
35
+ style,
36
+ styles,
37
+ classNames,
35
38
  className,
36
39
  contentClassName,
40
+ end,
37
41
  detail,
38
42
  detailWidth,
39
43
  disabled,
@@ -60,6 +64,7 @@ export const Cell = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref) => {
60
64
  *
61
65
  * */
62
66
  shouldOverflow,
67
+ shouldTruncate = !shouldOverflow,
63
68
  accessibilityLabel,
64
69
  accessibilityLabelledBy,
65
70
  accessibilityHint,
@@ -83,31 +88,39 @@ export const Cell = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref) => {
83
88
  const isAnchor = Boolean(href);
84
89
  const isButton = Boolean((_ref2 = onClick !== null && onClick !== void 0 ? onClick : onKeyDown) !== null && _ref2 !== void 0 ? _ref2 : onKeyUp);
85
90
  const linkable = isAnchor || isButton;
86
- const contentTruncationStyle = cx(baseCss, !shouldOverflow && truncationCss);
91
+ const contentTruncationStyle = cx(baseCss, shouldTruncate && truncationCss);
87
92
  const content = useMemo(() => {
93
+ var _styles$end$width, _styles$end;
88
94
  // props for the entire inner container that wraps the top content
89
95
  // (media, children, intermediary, detail, accessory) and the bottom content
90
- const innerContainerProps = _objectSpread(_objectSpread({
96
+ const contentContainerProps = _objectSpread(_objectSpread(_objectSpread({
91
97
  borderRadius,
92
- className: contentClassName,
98
+ className: cx(contentClassName, classNames === null || classNames === void 0 ? void 0 : classNames.contentContainer),
93
99
  testID
94
100
  }, selected ? {
95
101
  background: 'bgAlternate'
96
- } : {}), linkable ? innerSpacingWithoutMarginX : innerSpacing);
102
+ } : {}), linkable ? innerSpacingWithoutMarginX : innerSpacing), {}, {
103
+ style: styles === null || styles === void 0 ? void 0 : styles.contentContainer
104
+ });
97
105
 
98
106
  // props for the container of the top content only(media, children, intermediary, detail, accessory)
99
- const topContentContainerProps = {
107
+ const topContentProps = {
100
108
  alignItems: alignItems,
101
109
  flexGrow: 1,
102
110
  gap: columnGap || gap,
103
- width: '100%'
111
+ width: '100%',
112
+ className: classNames === null || classNames === void 0 ? void 0 : classNames.topContent,
113
+ style: styles === null || styles === void 0 ? void 0 : styles.topContent
104
114
  };
115
+ const endWidth = (_styles$end$width = styles === null || styles === void 0 || (_styles$end = styles.end) === null || _styles$end === void 0 ? void 0 : _styles$end.width) !== null && _styles$end$width !== void 0 ? _styles$end$width : detailWidth;
105
116
 
106
117
  // content that is displayed horizontally above the bottom content
107
118
  const topContent = /*#__PURE__*/_jsxs(_Fragment, {
108
119
  children: [media && /*#__PURE__*/_jsx(Box, {
120
+ className: classNames === null || classNames === void 0 ? void 0 : classNames.media,
109
121
  flexGrow: 0,
110
122
  flexShrink: 0,
123
+ style: styles === null || styles === void 0 ? void 0 : styles.media,
111
124
  children: media
112
125
  }), /*#__PURE__*/_jsx(Box, {
113
126
  className: contentTruncationStyle,
@@ -116,28 +129,32 @@ export const Cell = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref) => {
116
129
  justifyContent: "flex-start",
117
130
  children: children
118
131
  }), !!intermediary && /*#__PURE__*/_jsx(Box, {
119
- className: contentTruncationStyle,
132
+ className: cx(contentTruncationStyle, classNames === null || classNames === void 0 ? void 0 : classNames.intermediary),
120
133
  flexGrow: 0,
121
134
  flexShrink: hasCellPriority('middle', priority) ? 0 : 1,
122
135
  justifyContent: "center",
136
+ style: styles === null || styles === void 0 ? void 0 : styles.intermediary,
123
137
  children: intermediary
124
- }), !!detail && /*#__PURE__*/_jsx(Box, {
138
+ }), !!(end !== null && end !== void 0 ? end : detail) && /*#__PURE__*/_jsx(Box, {
125
139
  alignItems: "flex-end",
126
- className: contentTruncationStyle,
140
+ className: cx(contentTruncationStyle, classNames === null || classNames === void 0 ? void 0 : classNames.end),
127
141
  flexDirection: "column",
128
- flexGrow: detailWidth ? undefined : 1,
129
- flexShrink: detailWidth ? undefined : hasCellPriority('end', priority) ? 0 : 1,
142
+ flexGrow: endWidth ? undefined : 1,
143
+ flexShrink: endWidth ? undefined : hasCellPriority('end', priority) ? 0 : 1,
130
144
  justifyContent: "flex-end",
145
+ style: styles === null || styles === void 0 ? void 0 : styles.end,
131
146
  width: detailWidth,
132
- children: detail
147
+ children: end !== null && end !== void 0 ? end : detail
133
148
  }), !!accessory && /*#__PURE__*/_jsx(Box, {
149
+ className: classNames === null || classNames === void 0 ? void 0 : classNames.accessory,
134
150
  flexGrow: 0,
135
151
  flexShrink: 0,
152
+ style: styles === null || styles === void 0 ? void 0 : styles.accessory,
136
153
  children: accessory
137
154
  })]
138
155
  });
139
156
  if (!bottom) {
140
- return /*#__PURE__*/_jsx(HStack, _objectSpread(_objectSpread(_objectSpread({}, topContentContainerProps), innerContainerProps), {}, {
157
+ return /*#__PURE__*/_jsx(HStack, _objectSpread(_objectSpread(_objectSpread({}, topContentProps), contentContainerProps), {}, {
141
158
  children: topContent
142
159
  }));
143
160
  }
@@ -146,15 +163,17 @@ export const Cell = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref) => {
146
163
  flexGrow: 1,
147
164
  gap: rowGap,
148
165
  width: "100%"
149
- }, innerContainerProps), {}, {
150
- children: [/*#__PURE__*/_jsx(HStack, _objectSpread(_objectSpread({}, topContentContainerProps), {}, {
166
+ }, contentContainerProps), {}, {
167
+ children: [/*#__PURE__*/_jsx(HStack, _objectSpread(_objectSpread({}, topContentProps), {}, {
151
168
  children: topContent
152
169
  })), /*#__PURE__*/_jsx(Box, {
170
+ className: classNames === null || classNames === void 0 ? void 0 : classNames.bottomContent,
171
+ style: styles === null || styles === void 0 ? void 0 : styles.bottomContent,
153
172
  children: bottom
154
173
  })]
155
174
  }));
156
- }, [borderRadius, contentClassName, testID, selected, linkable, innerSpacingWithoutMarginX, innerSpacing, alignItems, columnGap, gap, media, contentTruncationStyle, priority, children, intermediary, detail, detailWidth, accessory, bottom, rowGap]);
157
- const wrappedContent = useMemo(() => {
175
+ }, [borderRadius, contentClassName, classNames === null || classNames === void 0 ? void 0 : classNames.contentContainer, classNames === null || classNames === void 0 ? void 0 : classNames.topContent, classNames === null || classNames === void 0 ? void 0 : classNames.media, classNames === null || classNames === void 0 ? void 0 : classNames.intermediary, classNames === null || classNames === void 0 ? void 0 : classNames.end, classNames === null || classNames === void 0 ? void 0 : classNames.accessory, classNames === null || classNames === void 0 ? void 0 : classNames.bottomContent, testID, selected, linkable, innerSpacingWithoutMarginX, innerSpacing, styles === null || styles === void 0 ? void 0 : styles.contentContainer, styles === null || styles === void 0 ? void 0 : styles.topContent, styles === null || styles === void 0 ? void 0 : styles.media, styles === null || styles === void 0 ? void 0 : styles.intermediary, styles === null || styles === void 0 ? void 0 : styles.end, styles === null || styles === void 0 ? void 0 : styles.accessory, styles === null || styles === void 0 ? void 0 : styles.bottomContent, alignItems, columnGap, gap, media, contentTruncationStyle, priority, children, intermediary, end, detail, detailWidth, accessory, bottom, rowGap]);
176
+ const pressableWrappedContent = useMemo(() => {
158
177
  const pressableSharedProps = {
159
178
  noScaleOnPress: true,
160
179
  transparentWhileInactive: true,
@@ -163,14 +182,15 @@ export const Cell = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref) => {
163
182
  accessibilityLabelledBy,
164
183
  background: 'bg',
165
184
  borderRadius,
166
- className: cx(pressCss, insetFocusRingCss),
185
+ className: cx(pressCss, insetFocusRingCss, classNames === null || classNames === void 0 ? void 0 : classNames.pressable),
167
186
  disabled,
168
187
  marginX: innerSpacingMarginX,
169
188
  onClick,
170
189
  onKeyDown,
171
190
  onKeyUp,
172
191
  tabIndex,
173
- testID: testID && "".concat(testID, "-cell-pressable")
192
+ testID: testID && "".concat(testID, "-cell-pressable"),
193
+ style: styles === null || styles === void 0 ? void 0 : styles.pressable
174
194
  };
175
195
  if (isAnchor) return /*#__PURE__*/_jsx(Pressable, _objectSpread(_objectSpread({
176
196
  as: "a",
@@ -185,17 +205,18 @@ export const Cell = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref) => {
185
205
  children: content
186
206
  }));
187
207
  return content;
188
- }, [isButton, accessibilityHint, accessibilityLabel, accessibilityLabelledBy, borderRadius, disabled, innerSpacingMarginX, onClick, onKeyDown, onKeyUp, tabIndex, testID, content, isAnchor, href, target]);
208
+ }, [accessibilityHint, accessibilityLabel, accessibilityLabelledBy, borderRadius, classNames === null || classNames === void 0 ? void 0 : classNames.pressable, disabled, innerSpacingMarginX, onClick, onKeyDown, onKeyUp, tabIndex, testID, styles === null || styles === void 0 ? void 0 : styles.pressable, isAnchor, href, target, content, isButton]);
189
209
  return /*#__PURE__*/_jsx(Box, _objectSpread(_objectSpread(_objectSpread({
190
210
  ref: ref,
191
211
  alignItems: "stretch",
192
212
  as: Component,
193
- className: className,
213
+ className: cx(className, classNames === null || classNames === void 0 ? void 0 : classNames.root),
194
214
  maxHeight: maxHeight,
195
215
  minHeight: minHeight,
216
+ style: _objectSpread(_objectSpread({}, style), styles === null || styles === void 0 ? void 0 : styles.root),
196
217
  width: "100%"
197
218
  }, outerSpacing), props), {}, {
198
- children: wrappedContent
219
+ children: pressableWrappedContent
199
220
  }));
200
221
  }));
201
222
  import "./Cell.css";
@@ -1,5 +1,7 @@
1
1
  import React, { memo } from 'react';
2
2
  import { Text } from '../typography/Text';
3
+
4
+ // TODO: update this CellDetailVariant in the next breaking change release.
3
5
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
4
6
  const variantColorMap = {
5
7
  foregroundMuted: 'fgMuted',
@@ -11,7 +13,8 @@ export const CellDetail = /*#__PURE__*/memo(function CellDetail(_ref) {
11
13
  let {
12
14
  detail,
13
15
  subdetail,
14
- variant = 'foregroundMuted'
16
+ variant = 'foregroundMuted',
17
+ subdetailFont = 'label2'
15
18
  } = _ref;
16
19
  return /*#__PURE__*/_jsxs(_Fragment, {
17
20
  children: [!!detail && /*#__PURE__*/_jsx(Text, {
@@ -25,7 +28,7 @@ export const CellDetail = /*#__PURE__*/memo(function CellDetail(_ref) {
25
28
  as: "div",
26
29
  color: variantColorMap[variant],
27
30
  display: "block",
28
- font: "body",
31
+ font: subdetailFont,
29
32
  overflow: "truncate",
30
33
  textAlign: "end",
31
34
  children: subdetail
@@ -4,6 +4,10 @@ import { Icon } from '../icons/Icon';
4
4
  import { Box } from '../layout/Box';
5
5
  import { RemoteImage } from '../media/RemoteImage';
6
6
  import { jsx as _jsx } from "react/jsx-runtime";
7
+ /**
8
+ * @deprecated This component will be removed in a future release. Pass media directly via the `media` prop.
9
+ * For example: `<Avatar src={...} />`, `<Icon name={...} />`, `<RemoteImage source={...} />`, or a Pictogram.
10
+ */
7
11
  export const CellMedia = /*#__PURE__*/memo(function CellMedia(props) {
8
12
  let size = mediaSize;
9
13
  let content = null;
@@ -1,4 +1,4 @@
1
- const _excluded = ["as", "accessory", "action", "compact", "title", "description", "detail", "disabled", "disableMultilineTitle", "disableSelectionAccessory", "helperText", "media", "multiline", "selected", "subdetail", "variant", "intermediary", "priority", "innerSpacing", "outerSpacing", "detailWidth"];
1
+ const _excluded = ["as", "accessory", "end", "action", "compact", "title", "description", "detail", "disabled", "disableMultilineTitle", "disableSelectionAccessory", "helperText", "media", "multiline", "selected", "subdetail", "variant", "intermediary", "priority", "innerSpacing", "outerSpacing", "layoutSpacing", "className", "classNames", "styles", "style"];
2
2
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
3
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
4
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
@@ -8,6 +8,7 @@ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i
8
8
  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; }
9
9
  import React, { forwardRef, memo, useMemo } from 'react';
10
10
  import { compactListHeight, listHeight } from '@coinbase/cds-common/tokens/cell';
11
+ import { cx } from '../cx';
11
12
  import { Box } from '../layout/Box';
12
13
  import { VStack } from '../layout/VStack';
13
14
  import { Text } from '../typography/Text';
@@ -17,10 +18,23 @@ import { CellDetail } from './CellDetail';
17
18
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
18
19
  const overflowCss = "overflowCss-onthvgs";
19
20
  export const listCellDefaultElement = 'div';
21
+ export const hugInnerSpacing = {
22
+ paddingX: 2,
23
+ paddingY: 0.5,
24
+ marginX: 0
25
+ };
26
+ // no padding outside of the pressable area
27
+ export const hugOuterSpacing = {
28
+ paddingX: 0,
29
+ paddingY: 0,
30
+ marginX: 0
31
+ };
20
32
  export const ListCell = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref) => {
33
+ var _props$borderRadius;
21
34
  let {
22
35
  as,
23
36
  accessory,
37
+ end: endProp,
24
38
  action,
25
39
  compact,
26
40
  title,
@@ -39,13 +53,23 @@ export const ListCell = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref) =>
39
53
  priority,
40
54
  innerSpacing,
41
55
  outerSpacing,
42
- detailWidth
56
+ layoutSpacing = compact ? 'compact' : 'spacious',
57
+ className,
58
+ classNames,
59
+ styles,
60
+ style
43
61
  } = _ref,
44
62
  props = _objectWithoutProperties(_ref, _excluded);
45
63
  const Component = as !== null && as !== void 0 ? as : listCellDefaultElement;
46
- const minHeight = compact ? compactListHeight : listHeight;
64
+ const minHeight = layoutSpacing === 'compact' ? compactListHeight : layoutSpacing === 'spacious' ? listHeight : undefined;
47
65
  const accessoryType = selected && !disableSelectionAccessory ? 'selected' : accessory;
48
66
  const end = useMemo(() => {
67
+ if (endProp) {
68
+ return /*#__PURE__*/_jsx(Box, {
69
+ justifyContent: "flex-end",
70
+ children: endProp
71
+ });
72
+ }
49
73
  if (action) {
50
74
  return /*#__PURE__*/_jsx(Box, {
51
75
  justifyContent: "flex-end",
@@ -56,44 +80,61 @@ export const ListCell = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref) =>
56
80
  return /*#__PURE__*/_jsx(CellDetail, {
57
81
  detail: detail,
58
82
  subdetail: subdetail,
83
+ subdetailFont: layoutSpacing === 'hug' ? 'label2' : 'body',
59
84
  variant: variant
60
85
  });
61
86
  }
62
87
  return undefined;
63
- }, [action, detail, subdetail, variant]);
88
+ }, [endProp, action, detail, subdetail, variant, layoutSpacing]);
64
89
  return /*#__PURE__*/_jsx(Cell, _objectSpread(_objectSpread({
65
90
  ref: ref,
66
91
  accessory: accessoryType && /*#__PURE__*/_jsx(CellAccessory, {
67
92
  type: accessoryType
68
93
  }),
69
94
  as: Component,
95
+ borderRadius: (_props$borderRadius = props.borderRadius) !== null && _props$borderRadius !== void 0 ? _props$borderRadius : layoutSpacing === 'hug' ? 0 : undefined,
70
96
  bottomContent: helperText,
71
- detail: end,
72
- detailWidth: detailWidth,
97
+ className: cx(className, classNames === null || classNames === void 0 ? void 0 : classNames.root),
73
98
  disabled: disabled,
74
- innerSpacing: innerSpacing,
99
+ end: end,
100
+ innerSpacing: innerSpacing !== null && innerSpacing !== void 0 ? innerSpacing : layoutSpacing === 'hug' ? hugInnerSpacing : undefined,
75
101
  intermediary: intermediary,
76
102
  media: media,
77
103
  minHeight: minHeight,
78
- outerSpacing: outerSpacing,
104
+ outerSpacing: outerSpacing !== null && outerSpacing !== void 0 ? outerSpacing : layoutSpacing === 'hug' ? hugOuterSpacing : undefined,
79
105
  priority: priority,
80
- selected: selected
106
+ selected: selected,
107
+ style: _objectSpread(_objectSpread({}, style), styles === null || styles === void 0 ? void 0 : styles.root),
108
+ styles: {
109
+ media: styles === null || styles === void 0 ? void 0 : styles.media,
110
+ intermediary: styles === null || styles === void 0 ? void 0 : styles.intermediary,
111
+ end: styles === null || styles === void 0 ? void 0 : styles.end,
112
+ accessory: styles === null || styles === void 0 ? void 0 : styles.accessory,
113
+ topContent: styles === null || styles === void 0 ? void 0 : styles.mainContent,
114
+ bottomContent: styles === null || styles === void 0 ? void 0 : styles.helperText,
115
+ contentContainer: styles === null || styles === void 0 ? void 0 : styles.contentContainer,
116
+ pressable: styles === null || styles === void 0 ? void 0 : styles.pressable
117
+ }
81
118
  }, props), {}, {
82
119
  children: /*#__PURE__*/_jsxs(VStack, {
83
120
  children: [!!title && /*#__PURE__*/_jsx(Text, {
84
121
  as: "div",
85
122
  display: "block",
86
123
  font: "headline",
87
- numberOfLines: description || disableMultilineTitle ? 1 : 2,
124
+ numberOfLines: disableMultilineTitle ? 1 :
125
+ // wrap at 2 lines in hug layoutSpacing regardless of description
126
+ layoutSpacing === 'hug' ? 2 : description ? 1 : 2,
88
127
  overflow: "wrap",
128
+ style: styles === null || styles === void 0 ? void 0 : styles.title,
89
129
  children: title
90
130
  }), !!description && /*#__PURE__*/_jsx(Text, {
91
131
  as: "div",
92
- className: multiline ? overflowCss : undefined,
132
+ className: cx(multiline ? overflowCss : undefined, classNames === null || classNames === void 0 ? void 0 : classNames.description),
93
133
  color: "fgMuted",
94
134
  display: "block",
95
- font: "body",
135
+ font: layoutSpacing === 'hug' ? 'label2' : 'body',
96
136
  overflow: multiline ? undefined : 'truncate',
137
+ style: styles === null || styles === void 0 ? void 0 : styles.description,
97
138
  children: description
98
139
  })]
99
140
  })
@@ -1,4 +1,4 @@
1
- const _excluded = ["classNames", "styles", "title", "description", "detail", "subdetail", "media", "disableRandomRectWidth", "rectWidthVariant", "helperText"];
1
+ const _excluded = ["classNames", "styles", "title", "description", "detail", "subdetail", "media", "disableRandomRectWidth", "rectWidthVariant", "helperText", "layoutSpacing", "innerSpacing", "outerSpacing"];
2
2
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
3
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
4
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
@@ -11,6 +11,7 @@ import { getRectWidthVariant } from '@coinbase/cds-common/utils/getRectWidthVari
11
11
  import { VStack } from '../layout';
12
12
  import { Fallback } from '../layout/Fallback';
13
13
  import { Cell } from './Cell';
14
+ import { hugInnerSpacing, hugOuterSpacing } from './ListCell';
14
15
  import { MediaFallback } from './MediaFallback';
15
16
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
16
17
  export const ListCellFallback = /*#__PURE__*/memo(function ListCellFallback(_ref) {
@@ -24,7 +25,10 @@ export const ListCellFallback = /*#__PURE__*/memo(function ListCellFallback(_ref
24
25
  media,
25
26
  disableRandomRectWidth,
26
27
  rectWidthVariant,
27
- helperText
28
+ helperText,
29
+ layoutSpacing,
30
+ innerSpacing,
31
+ outerSpacing
28
32
  } = _ref,
29
33
  props = _objectWithoutProperties(_ref, _excluded);
30
34
  // We cant use ListCell here as we need to account for percentage based widths.
@@ -117,7 +121,9 @@ export const ListCellFallback = /*#__PURE__*/memo(function ListCellFallback(_ref
117
121
  return /*#__PURE__*/_jsx(Cell, _objectSpread(_objectSpread({
118
122
  bottomContent: bottomContentFallback,
119
123
  detail: detailFallback,
120
- media: mediaFallback
124
+ innerSpacing: innerSpacing !== null && innerSpacing !== void 0 ? innerSpacing : layoutSpacing === 'hug' ? hugInnerSpacing : undefined,
125
+ media: mediaFallback,
126
+ outerSpacing: outerSpacing !== null && outerSpacing !== void 0 ? outerSpacing : layoutSpacing === 'hug' ? hugOuterSpacing : undefined
121
127
  }, props), {}, {
122
128
  children: /*#__PURE__*/_jsxs(VStack, {
123
129
  gap: 0.5,
@@ -1,4 +1,5 @@
1
1
  import { styleVarPrefixes } from './theme';
2
+ const periodsRegex = /\./g;
2
3
 
3
4
  /** Takes a theme object and formats its keys as CSS variables to be used in inline styles. */
4
5
  export const createThemeCssVars = theme => {
@@ -23,7 +24,7 @@ export const createThemeCssVars = theme => {
23
24
  if (value === undefined) continue;
24
25
 
25
26
  // Create CSS variable name, replacing periods with underscores
26
- const cssVarName = "".concat(cssVarPrefix).concat(varName).replaceAll('.', '_');
27
+ const cssVarName = "".concat(cssVarPrefix).concat(varName).replace(periodsRegex, '_');
27
28
 
28
29
  // Format value (add px to numbers)
29
30
  themeCss[cssVarName] = typeof value !== 'number' ? value : value + 'px';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coinbase/cds-web",
3
- "version": "8.15.0",
3
+ "version": "8.16.1",
4
4
  "description": "Coinbase Design System - Web",
5
5
  "repository": {
6
6
  "type": "git",
@@ -147,7 +147,7 @@
147
147
  "react-dom": "^18.3.1"
148
148
  },
149
149
  "dependencies": {
150
- "@coinbase/cds-common": "^8.15.0",
150
+ "@coinbase/cds-common": "^8.16.1",
151
151
  "@coinbase/cds-icons": "^5.4.2",
152
152
  "@coinbase/cds-illustrations": "^4.23.1",
153
153
  "@coinbase/cds-lottie-files": "^3.3.2",