@coinbase/cds-web 9.17.0 → 9.17.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,12 @@ All notable changes to this project will be documented in this file.
8
8
 
9
9
  <!-- template-start -->
10
10
 
11
+ ## 9.17.1 (8/17/2026 PST)
12
+
13
+ #### 🐞 Fixes
14
+
15
+ - Fix: restore Select field press target after chrome padding adjustments in recent tshirt size work.
16
+
11
17
  ## 9.17.0 (8/14/2026 PST)
12
18
 
13
19
  #### 🚀 Updates
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultSelectControl.d.ts","sourceRoot":"","sources":["../../../src/alpha/select/DefaultSelectControl.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyD,MAAM,OAAO,CAAC;AAgB9E,OAAO,EAEL,KAAK,kBAAkB,EAGvB,KAAK,UAAU,EAChB,MAAM,UAAU,CAAC;AA+ClB,KAAK,wBAAwB,GAAG,CAC9B,IAAI,SAAS,UAAU,EACvB,iBAAiB,SAAS,MAAM,GAAG,MAAM,EAEzC,KAAK,EAAE,kBAAkB,CAAC,IAAI,EAAE,iBAAiB,CAAC,GAAG;IACnD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;CAC9B,KACE,KAAK,CAAC,YAAY,CAAC;AAqiBxB,eAAO,MAAM,oBAAoB,EAAoC,wBAAwB,CAAC"}
1
+ {"version":3,"file":"DefaultSelectControl.d.ts","sourceRoot":"","sources":["../../../src/alpha/select/DefaultSelectControl.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyD,MAAM,OAAO,CAAC;AAgB9E,OAAO,EAEL,KAAK,kBAAkB,EAGvB,KAAK,UAAU,EAChB,MAAM,UAAU,CAAC;AAyDlB,KAAK,wBAAwB,GAAG,CAC9B,IAAI,SAAS,UAAU,EACvB,iBAAiB,SAAS,MAAM,GAAG,MAAM,EAEzC,KAAK,EAAE,kBAAkB,CAAC,IAAI,EAAE,iBAAiB,CAAC,GAAG;IACnD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;CAC9B,KACE,KAAK,CAAC,YAAY,CAAC;AAkiBxB,eAAO,MAAM,oBAAoB,EAAoC,wBAAwB,CAAC"}
@@ -76,6 +76,12 @@ export type InputStackBaseProps = SharedProps &
76
76
  * @default 'bg'
77
77
  */
78
78
  inputBackground?: ThemeVars.Color;
79
+ /**
80
+ * Press handler for the bordered field chrome only (not the label or helper).
81
+ * Use for trigger-style controls so padding on the field remains tappable.
82
+ * Do not use for text fields — the native input must stay the focus target.
83
+ */
84
+ onFieldPress?: React.MouseEventHandler;
79
85
  };
80
86
  export type InputStackProps = Omit<
81
87
  BoxProps<BoxDefaultElement>,
@@ -1 +1 @@
1
- {"version":3,"file":"InputStack.d.ts","sourceRoot":"","sources":["../../src/controls/InputStack.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAIjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAK1E,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAIzF,OAAO,EAAgB,KAAK,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAoDlF,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAC3C,IAAI,CAAC,qBAAqB,EAAE,aAAa,CAAC,GAAG;IAC3C;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC;IACpC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC;IAC3C;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;;SAGK;IACL,KAAK,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;IAC9B;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IAChC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yEAAyE;IACzE,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,uHAAuH;IACvH,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,sEAAsE;IACtE,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,mHAAmH;IACnH,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,iCAAiC;IACjC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,iGAAiG;IACjG,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACjC,qDAAqD;IACrD,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,wEAAwE;IACxE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC;IAC5C;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,YAAY,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IACpC;;;OAGG;IACH,eAAe,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC;CACnC,CAAC;AAEJ,MAAM,MAAM,eAAe,GAAG,IAAI,CAChC,QAAQ,CAAC,iBAAiB,CAAC,EAC3B,OAAO,GAAG,QAAQ,GAAG,cAAc,CACpC,GACC,mBAAmB,GAAG;IACpB,UAAU,CAAC,EAAE;QACX,6BAA6B;QAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;QACd;;;WAGG;QACH,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,iCAAiC;QACjC,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,MAAM,CAAC,EAAE;QACP,6BAA6B;QAC7B,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAC3B,yCAAyC;QACzC,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QACrC,iCAAiC;QACjC,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;KAC7B,CAAC;CACH,CAAC;AAEJ,eAAO,MAAM,UAAU,6FA0ItB,CAAC"}
1
+ {"version":3,"file":"InputStack.d.ts","sourceRoot":"","sources":["../../src/controls/InputStack.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAIjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAK1E,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAIzF,OAAO,EAAgB,KAAK,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAoDlF,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAC3C,IAAI,CAAC,qBAAqB,EAAE,aAAa,CAAC,GAAG;IAC3C;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC;IACpC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC;IAC3C;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;;SAGK;IACL,KAAK,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;IAC9B;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IAChC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yEAAyE;IACzE,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,uHAAuH;IACvH,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,sEAAsE;IACtE,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,mHAAmH;IACnH,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,iCAAiC;IACjC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,iGAAiG;IACjG,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACjC,qDAAqD;IACrD,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,wEAAwE;IACxE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC;IAC5C;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,YAAY,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IACpC;;;OAGG;IACH,eAAe,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC;IAClC;;;;OAIG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC;CACxC,CAAC;AAEJ,MAAM,MAAM,eAAe,GAAG,IAAI,CAChC,QAAQ,CAAC,iBAAiB,CAAC,EAC3B,OAAO,GAAG,QAAQ,GAAG,cAAc,CACpC,GACC,mBAAmB,GAAG;IACpB,UAAU,CAAC,EAAE;QACX,6BAA6B;QAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;QACd;;;WAGG;QACH,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,iCAAiC;QACjC,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,MAAM,CAAC,EAAE;QACP,6BAA6B;QAC7B,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAC3B,yCAAyC;QACzC,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QACrC,iCAAiC;QACjC,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;KAC7B,CAAC;CACH,CAAC;AAEJ,eAAO,MAAM,UAAU,6FA4ItB,CAAC"}
@@ -38,6 +38,16 @@ const multiSelectVerticalSpaceVar = {
38
38
  // Multi-select value chips always use the compact `xs` size (even at size `l`) so several chips —
39
39
  // and a stacked inside label — stay within the field's natural height.
40
40
  const multiSelectValueChipSize = 'xs';
41
+
42
+ // Inner control stays the tab stop but must not paint its own hover/press. The
43
+ // field chrome (InputStack Interactable) owns that look so padding and content
44
+ // share one press treatment instead of double-dimming.
45
+ const inertInnerBlendStyles = {
46
+ hoveredBackground: 'rgba(0, 0, 0, 0)',
47
+ hoveredOpacity: 1,
48
+ pressedBackground: 'rgba(0, 0, 0, 0)',
49
+ pressedOpacity: 1
50
+ };
41
51
  const noFocusOutlineCss = "noFocusOutlineCss-n1gl6kcn";
42
52
  const selectedOptionChipContentCss = "selectedOptionChipContentCss-s1kle8pq";
43
53
  const variantColor = {
@@ -285,7 +295,7 @@ const DefaultSelectControlComponent = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(
285
295
  "aria-readonly": readOnly,
286
296
  as: role === 'combobox' ? 'div' : 'button',
287
297
  background: "transparent",
288
- blendStyles: interactableBlendStyles,
298
+ blendStyles: inertInnerBlendStyles,
289
299
  borderWidth: 0,
290
300
  className: cx(noFocusOutlineCss, classNames === null || classNames === void 0 ? void 0 : classNames.controlInputNode),
291
301
  disabled: disabled,
@@ -293,7 +303,6 @@ const DefaultSelectControlComponent = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(
293
303
  flexShrink: 1,
294
304
  focusable: false,
295
305
  minWidth: 0,
296
- onClick: handleToggleOpen,
297
306
  onKeyDown: onKeyDown,
298
307
  role: role,
299
308
  style: styles === null || styles === void 0 ? void 0 : styles.controlInputNode,
@@ -359,26 +368,21 @@ const DefaultSelectControlComponent = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(
359
368
  children: [valueNode, contentNode]
360
369
  })
361
370
  })]
362
- }), [computedControlAccessibilityLabel, ariaHaspopup, open, role, interactableBlendStyles, classNames === null || classNames === void 0 ? void 0 : classNames.controlInputNode, classNames === null || classNames === void 0 ? void 0 : classNames.controlStartNode, classNames === null || classNames === void 0 ? void 0 : classNames.controlValueNode, disabled, readOnly, styles === null || styles === void 0 ? void 0 : styles.controlInputNode, styles === null || styles === void 0 ? void 0 : styles.controlStartNode, styles === null || styles === void 0 ? void 0 : styles.controlValueNode, tabIndex, onKeyDown, startNode, insideHorizontalLabel, insideVerticalLabel, inlineLabelNode, align, valueNode, contentNode, handleToggleOpen]);
363
- const endNode = useMemo(() => /*#__PURE__*/_jsx(Pressable, {
371
+ }), [computedControlAccessibilityLabel, ariaHaspopup, open, role, interactableBlendStyles, classNames === null || classNames === void 0 ? void 0 : classNames.controlInputNode, classNames === null || classNames === void 0 ? void 0 : classNames.controlStartNode, classNames === null || classNames === void 0 ? void 0 : classNames.controlValueNode, disabled, readOnly, styles === null || styles === void 0 ? void 0 : styles.controlInputNode, styles === null || styles === void 0 ? void 0 : styles.controlStartNode, styles === null || styles === void 0 ? void 0 : styles.controlValueNode, tabIndex, onKeyDown, startNode, insideHorizontalLabel, insideVerticalLabel, inlineLabelNode, align, valueNode, contentNode]);
372
+ const endNode = useMemo(() => /*#__PURE__*/_jsx(HStack, {
364
373
  "aria-hidden": true,
374
+ alignItems: "center",
375
+ alignSelf: "stretch",
376
+ className: classNames === null || classNames === void 0 ? void 0 : classNames.controlEndNode,
365
377
  flexShrink: 0,
366
- onClick: handleToggleOpen,
367
- tabIndex: -1,
368
- children: /*#__PURE__*/_jsx(HStack, {
369
- alignItems: "center",
370
- className: classNames === null || classNames === void 0 ? void 0 : classNames.controlEndNode,
371
- flexGrow: 1,
372
- height: "100%",
373
- justifyContent: insideVerticalLabel ? 'flex-end' : undefined,
374
- paddingStart: 2,
375
- style: styles === null || styles === void 0 ? void 0 : styles.controlEndNode,
376
- children: customEndNode ? customEndNode : /*#__PURE__*/_jsx(AnimatedCaret, {
377
- color: "fg",
378
- rotate: open ? 0 : 180
379
- })
378
+ justifyContent: insideVerticalLabel ? 'flex-end' : undefined,
379
+ paddingStart: 2,
380
+ style: styles === null || styles === void 0 ? void 0 : styles.controlEndNode,
381
+ children: customEndNode ? customEndNode : /*#__PURE__*/_jsx(AnimatedCaret, {
382
+ color: "fg",
383
+ rotate: open ? 0 : 180
380
384
  })
381
- }), [classNames === null || classNames === void 0 ? void 0 : classNames.controlEndNode, insideVerticalLabel, styles === null || styles === void 0 ? void 0 : styles.controlEndNode, customEndNode, open, handleToggleOpen]);
385
+ }), [classNames === null || classNames === void 0 ? void 0 : classNames.controlEndNode, insideVerticalLabel, styles === null || styles === void 0 ? void 0 : styles.controlEndNode, customEndNode, open]);
382
386
  const inputStackStyles = useMemo(() => {
383
387
  let verticalSpaceVar;
384
388
  if (insideVerticalLabel) {
@@ -398,7 +402,7 @@ const DefaultSelectControlComponent = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(
398
402
  paddingRight: 'var(--space-2)'
399
403
  };
400
404
  }, [insideVerticalLabel, resolvedSize, isMultiSelect, hasValue]);
401
- return /*#__PURE__*/_jsx(InputStack, _objectSpread({
405
+ return /*#__PURE__*/_jsx(InputStack, _objectSpread(_objectSpread({
402
406
  ref: ref,
403
407
  blendStyles: interactableBlendStyles,
404
408
  borderRadius: borderRadius,
@@ -417,7 +421,9 @@ const DefaultSelectControlComponent = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(
417
421
  input: inputStackStyles
418
422
  },
419
423
  variant: variant
420
- }, props));
424
+ }, props), {}, {
425
+ onFieldPress: handleToggleOpen
426
+ }));
421
427
  }));
422
428
  export const DefaultSelectControl = DefaultSelectControlComponent;
423
429
  import "./DefaultSelectControl.css";
@@ -1,4 +1,4 @@
1
- const _excluded = ["width", "prependNode", "endNode", "appendNode", "startNode", "disabled", "inputNode", "helperTextNode", "borderWidth", "focusedBorderWidth", "variant", "labelNode", "testID", "focused", "borderRadius", "height", "disableFocusedStyle", "enableColorSurge", "labelVariant", "blendStyles", "inputBackground", "className", "style", "classNames", "styles"];
1
+ const _excluded = ["width", "prependNode", "endNode", "appendNode", "startNode", "disabled", "inputNode", "helperTextNode", "borderWidth", "focusedBorderWidth", "variant", "labelNode", "testID", "focused", "borderRadius", "height", "disableFocusedStyle", "enableColorSurge", "labelVariant", "blendStyles", "inputBackground", "onFieldPress", "className", "style", "classNames", "styles"];
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; }
@@ -55,6 +55,7 @@ export const InputStack = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_props, ref
55
55
  labelVariant = 'outside',
56
56
  blendStyles,
57
57
  inputBackground = 'bg',
58
+ onFieldPress,
58
59
  className,
59
60
  style,
60
61
  classNames,
@@ -122,6 +123,7 @@ export const InputStack = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_props, ref
122
123
  className: cx(baseCss, focused && persistedFocusCss, classNames === null || classNames === void 0 ? void 0 : classNames.input),
123
124
  disabled: disabled,
124
125
  height: height,
126
+ onClick: disabled ? undefined : onFieldPress,
125
127
  style: _objectSpread(_objectSpread({}, inputAreaStyles), styles === null || styles === void 0 ? void 0 : styles.input),
126
128
  testID: "input-interactable-area",
127
129
  children: [!!focused && !!enableColorSurge && /*#__PURE__*/_jsx(ColorSurge, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coinbase/cds-web",
3
- "version": "9.17.0",
3
+ "version": "9.17.1",
4
4
  "description": "Coinbase Design System - Web",
5
5
  "repository": {
6
6
  "type": "git",
@@ -227,7 +227,7 @@
227
227
  "react-dom": "^18.0.0 || ~19.1.2"
228
228
  },
229
229
  "dependencies": {
230
- "@coinbase/cds-common": "^9.17.0",
230
+ "@coinbase/cds-common": "^9.17.1",
231
231
  "@coinbase/cds-icons": "^5.21.0",
232
232
  "@coinbase/cds-illustrations": "^4.48.0",
233
233
  "@coinbase/cds-lottie-files": "^3.3.4",