@coinbase/cds-mcp-server 8.26.0 → 8.27.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,10 @@ All notable changes to this project will be documented in this file.
8
8
 
9
9
  <!-- template-start -->
10
10
 
11
+ ## 8.27.0 ((12/3/2025, 09:30 AM PST))
12
+
13
+ This is an artificial version bump with no new change.
14
+
11
15
  ## 8.26.0 ((12/1/2025, 12:25 PM PST))
12
16
 
13
17
  This is an artificial version bump with no new change.
@@ -113,7 +113,7 @@ Note: The mobile ContentCellFallback uses theme-based line heights and reuses th
113
113
 
114
114
  | Prop | Type | Required | Default | Description |
115
115
  | --- | --- | --- | --- | --- |
116
- | `accessory` | `more \| selected \| arrow` | No | `-` | Accessory to display at the end of the cell. |
116
+ | `accessory` | `more \| selected \| arrow \| unselected` | No | `-` | Accessory to display at the end of the cell. |
117
117
  | `accessoryNode` | `null \| string \| number \| false \| true \| ReactElement<any, string \| JSXElementConstructor<any>> \| Iterable<ReactNode> \| ReactPortal` | No | `-` | Custom accessory node rendered at the end of the cell. Takes precedence over accessory. |
118
118
  | `alignContent` | `flex-start \| flex-end \| center \| stretch \| space-between \| space-around \| space-evenly` | No | `-` | - |
119
119
  | `alignItems` | `flex-start \| flex-end \| center \| stretch \| baseline` | No | `-` | - |
@@ -294,6 +294,29 @@ When you pass the `end` prop, it overrides the `detail`/`subdetail`/`detailNode`
294
294
  />
295
295
  ```
296
296
 
297
+ #### Preserve Layout During Selection
298
+
299
+ Use the `unselected` accessory to reserve space for the selection checkmark when toggling the `selected` state.
300
+
301
+ ```tsx
302
+ function PreserveLayoutExample() {
303
+ const [isSelected, setIsSelected] = useState(false);
304
+
305
+ return (
306
+ <VStack gap={1}>
307
+ <ListCell
308
+ accessory={isSelected ? 'selected' : 'unselected'}
309
+ description="Selected state uses the same space, no layout shift when selected"
310
+ spacingVariant="condensed"
311
+ title="Leverage unselected state"
312
+ selected={isSelected}
313
+ onPress={() => setIsSelected((prev) => !prev)}
314
+ />
315
+ </VStack>
316
+ );
317
+ }
318
+ ```
319
+
297
320
  #### Custom Accessory via Node Prop
298
321
 
299
322
  ```tsx
@@ -571,7 +594,7 @@ Mapping to `styles` / `classNames` keys:
571
594
 
572
595
  | Prop | Type | Required | Default | Description |
573
596
  | --- | --- | --- | --- | --- |
574
- | `accessory` | `more \| selected \| arrow` | No | `-` | Accessory to display at the end of the cell. |
597
+ | `accessory` | `more \| selected \| arrow \| unselected` | No | `-` | Accessory to display at the end of the cell. |
575
598
  | `accessoryNode` | `null \| string \| number \| false \| true \| ReactElement<any, string \| JSXElementConstructor<any>> \| Iterable<ReactNode> \| ReactPortal` | No | `-` | Custom accessory node rendered at the end of the cell. Takes precedence over accessory. |
576
599
  | `action` | `null \| string \| number \| false \| true \| ReactElement<any, string \| JSXElementConstructor<any>> \| Iterable<ReactNode> \| ReactPortal` | No | `-` | - |
577
600
  | `adjustsFontSizeToFit` | `boolean` | No | `-` | Specifies whether font should be scaled down automatically to fit given style constraints. |
@@ -96,7 +96,7 @@ The ContentCellFallback component provides loading state representations of Cont
96
96
 
97
97
  | Prop | Type | Required | Default | Description |
98
98
  | --- | --- | --- | --- | --- |
99
- | `accessory` | `more \| selected \| arrow` | No | `-` | Accessory to display at the end of the cell. |
99
+ | `accessory` | `more \| selected \| arrow \| unselected` | No | `-` | Accessory to display at the end of the cell. |
100
100
  | `accessoryNode` | `null \| string \| number \| false \| true \| ReactElement<any, string \| JSXElementConstructor<any>> \| Iterable<ReactNode> \| ReactPortal` | No | `-` | Custom accessory node rendered at the end of the cell. Takes precedence over accessory. |
101
101
  | `alignContent` | `ResponsiveProp<center \| normal \| start \| end \| flex-start \| flex-end \| stretch \| baseline \| first baseline \| last baseline \| space-between \| space-around \| space-evenly>` | No | `-` | - |
102
102
  | `alignItems` | `ResponsiveProp<center \| normal \| start \| end \| flex-start \| flex-end \| self-start \| self-end \| stretch \| baseline \| first baseline \| last baseline>` | No | `-` | - |
@@ -294,6 +294,29 @@ When you pass the `end` prop, it overrides the `detail`/`subdetail`/`detailNode`
294
294
  />
295
295
  ```
296
296
 
297
+ #### Preserve Layout During Selection
298
+
299
+ Use the `unselected` accessory to reserve space for the selection checkmark when toggling the `selected` state.
300
+
301
+ ```tsx live
302
+ function PreserveLayoutExample() {
303
+ const [isSelected, setIsSelected] = useState(false);
304
+
305
+ return (
306
+ <VStack gap={1}>
307
+ <ListCell
308
+ accessory={isSelected ? 'selected' : 'unselected'}
309
+ description="Selected state uses the same space, no layout shift when selected"
310
+ spacingVariant="condensed"
311
+ title="Leverage unselected state"
312
+ selected={isSelected}
313
+ onClick={() => setIsSelected((prev) => !prev)}
314
+ />
315
+ </VStack>
316
+ );
317
+ }
318
+ ```
319
+
297
320
  #### Custom Accessory via Node Prop
298
321
 
299
322
  ```tsx live
@@ -571,7 +594,7 @@ Mapping to `styles` / `classNames` keys:
571
594
 
572
595
  | Prop | Type | Required | Default | Description |
573
596
  | --- | --- | --- | --- | --- |
574
- | `accessory` | `more \| selected \| arrow` | No | `-` | Accessory to display at the end of the cell. |
597
+ | `accessory` | `more \| selected \| arrow \| unselected` | No | `-` | Accessory to display at the end of the cell. |
575
598
  | `accessoryNode` | `null \| string \| number \| false \| true \| ReactElement<any, string \| JSXElementConstructor<any>> \| Iterable<ReactNode> \| ReactPortal` | No | `-` | Custom accessory node rendered at the end of the cell. Takes precedence over accessory. |
576
599
  | `action` | `null \| string \| number \| false \| true \| ReactElement<any, string \| JSXElementConstructor<any>> \| Iterable<ReactNode> \| ReactPortal` | No | `-` | - |
577
600
  | `alignContent` | `ResponsiveProp<center \| normal \| start \| end \| flex-start \| flex-end \| stretch \| baseline \| first baseline \| last baseline \| space-between \| space-around \| space-evenly>` | No | `-` | - |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coinbase/cds-mcp-server",
3
- "version": "8.26.0",
3
+ "version": "8.27.0",
4
4
  "description": "Coinbase Design System - MCP Server",
5
5
  "repository": {
6
6
  "type": "git",