@coinbase/cds-web 8.52.1 → 8.53.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,22 @@ All notable changes to this project will be documented in this file.
8
8
 
9
9
  <!-- template-start -->
10
10
 
11
+ ## 8.53.0 (3/16/2026 PST)
12
+
13
+ #### 🚀 Updates
14
+
15
+ - Feat: update Checkbox borderRadius to match design. [[#509](https://github.com/coinbase/cds/pull/509)]
16
+
17
+ #### 📘 Misc
18
+
19
+ - Deprecate SegmentedControl. [[#493](https://github.com/coinbase/cds/pull/493)]
20
+
21
+ ## 8.52.2 (3/11/2026 PST)
22
+
23
+ #### 🐞 Fixes
24
+
25
+ - Configure control borderWidth and controlColor. [[#457](https://github.com/coinbase/cds/pull/457)]
26
+
11
27
  ## 8.52.1 (3/11/2026 PST)
12
28
 
13
29
  #### 🐞 Fixes
@@ -1,17 +1,19 @@
1
1
  import React from 'react';
2
2
  import type { ThemeVars } from '@coinbase/cds-common/core/theme';
3
3
  import { type ControlBaseProps } from './Control';
4
- export type CheckboxProps<CheckboxValue extends string> = ControlBaseProps<CheckboxValue> & {
5
- /** Sets the checked/active color of the control.
4
+ export type CheckboxBaseProps<CheckboxValue extends string> = ControlBaseProps<CheckboxValue> & {
5
+ /**
6
+ * Sets the checked/active color of the checkbox.
6
7
  * @default fgInverse
7
8
  */
8
9
  controlColor?: ThemeVars.Color;
9
10
  /**
10
- * Optional.Sets the border width of the control.
11
+ * Sets the border width of the checkbox.
11
12
  * @default 100
12
13
  */
13
14
  borderWidth?: ThemeVars.BorderWidth;
14
15
  };
16
+ export type CheckboxProps<CheckboxValue extends string> = CheckboxBaseProps<CheckboxValue>;
15
17
  declare const CheckboxWithRef: <CheckboxValue extends string>(
16
18
  props: CheckboxProps<CheckboxValue> & {
17
19
  ref?: React.Ref<HTMLInputElement>;
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../src/controls/Checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAejE,OAAO,EAAW,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAyB3D,MAAM,MAAM,aAAa,CAAC,aAAa,SAAS,MAAM,IAAI,gBAAgB,CAAC,aAAa,CAAC,GAAG;IAC1F;;OAEG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC;IAC/B;;;OAGG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC;CACrC,CAAC;AAEF,QAAA,MAAM,eAAe,EA6Ef,CAAC,aAAa,SAAS,MAAM,EACjC,KAAK,EAAE,aAAa,CAAC,aAAa,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;CAAE,KACxE,KAAK,CAAC,YAAY,CAAC;AAExB,eAAO,MAAM,QAAQ,EAA4B,OAAO,eAAe,GACrE,KAAK,CAAC,mBAAmB,CAAC,OAAO,eAAe,CAAC,CAAC"}
1
+ {"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../src/controls/Checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAejE,OAAO,EAAW,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAyB3D,MAAM,MAAM,iBAAiB,CAAC,aAAa,SAAS,MAAM,IAAI,gBAAgB,CAAC,aAAa,CAAC,GAAG;IAC9F;;;OAGG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC;IAC/B;;;OAGG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,aAAa,CAAC,aAAa,SAAS,MAAM,IAAI,iBAAiB,CAAC,aAAa,CAAC,CAAC;AAE3F,QAAA,MAAM,eAAe,EA4Ef,CAAC,aAAa,SAAS,MAAM,EACjC,KAAK,EAAE,aAAa,CAAC,aAAa,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;CAAE,KACxE,KAAK,CAAC,YAAY,CAAC;AAExB,eAAO,MAAM,QAAQ,EAA4B,OAAO,eAAe,GACrE,KAAK,CAAC,mBAAmB,CAAC,OAAO,eAAe,CAAC,CAAC"}
@@ -1,12 +1,19 @@
1
1
  import React from 'react';
2
2
  import type { ThemeVars } from '@coinbase/cds-common/core/theme';
3
3
  import { type ControlBaseProps } from './Control';
4
- export type RadioProps<RadioValue extends string> = ControlBaseProps<RadioValue> & {
5
- /** Sets the checked/active color of the control.
4
+ export type RadioBaseProps<RadioValue extends string> = ControlBaseProps<RadioValue> & {
5
+ /**
6
+ * Sets the checked/active color of the radio.
6
7
  * @default bgPrimary
7
8
  */
8
9
  controlColor?: ThemeVars.Color;
10
+ /**
11
+ * Sets the border width of the radio.
12
+ * @default 100
13
+ */
14
+ borderWidth?: ThemeVars.BorderWidth;
9
15
  };
16
+ export type RadioProps<RadioValue extends string> = RadioBaseProps<RadioValue>;
10
17
  declare const RadioWithRef: <RadioValue extends string>(
11
18
  props: RadioProps<RadioValue> & {
12
19
  ref?: React.Ref<HTMLInputElement>;
@@ -1 +1 @@
1
- {"version":3,"file":"Radio.d.ts","sourceRoot":"","sources":["../../src/controls/Radio.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAcjE,OAAO,EAAW,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAuC3D,MAAM,MAAM,UAAU,CAAC,UAAU,SAAS,MAAM,IAAI,gBAAgB,CAAC,UAAU,CAAC,GAAG;IACjF;;OAEG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC;CAChC,CAAC;AAEF,QAAA,MAAM,YAAY,EAmDZ,CAAC,UAAU,SAAS,MAAM,EAC9B,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;CAAE,KAClE,KAAK,CAAC,YAAY,CAAC;AAExB,eAAO,MAAM,KAAK,EAAyB,OAAO,YAAY,GAC5D,KAAK,CAAC,mBAAmB,CAAC,OAAO,YAAY,CAAC,CAAC"}
1
+ {"version":3,"file":"Radio.d.ts","sourceRoot":"","sources":["../../src/controls/Radio.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAcjE,OAAO,EAAW,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAsC3D,MAAM,MAAM,cAAc,CAAC,UAAU,SAAS,MAAM,IAAI,gBAAgB,CAAC,UAAU,CAAC,GAAG;IACrF;;;OAGG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC;IAC/B;;;OAGG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,UAAU,CAAC,UAAU,SAAS,MAAM,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC;AAE/E,QAAA,MAAM,YAAY,EAqDZ,CAAC,UAAU,SAAS,MAAM,EAC9B,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;CAAE,KAClE,KAAK,CAAC,YAAY,CAAC;AAExB,eAAO,MAAM,KAAK,EAAyB,OAAO,YAAY,GAC5D,KAAK,CAAC,mBAAmB,CAAC,OAAO,YAAY,CAAC,CAAC"}
@@ -42,6 +42,9 @@ type IconOptionProps = {
42
42
  /** The options to render as an array of values and IconNames */
43
43
  options: IconOptions;
44
44
  };
45
+ /**
46
+ * @deprecated SegmentedControl is deprecated and will be removed in a future version. Please use Tabs or SegmentedTabs instead.
47
+ */
45
48
  export declare const SegmentedControl: React.MemoExoticComponent<
46
49
  React.ForwardRefExoticComponent<SegmentedControlProps & React.RefAttributes<HTMLInputElement>>
47
50
  >;
@@ -1 +1 @@
1
- {"version":3,"file":"SegmentedControl.d.ts","sourceRoot":"","sources":["../../src/controls/SegmentedControl.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmE,MAAM,OAAO,CAAC;AAGxF,OAAO,KAAK,EACV,QAAQ,EACR,QAAQ,EACR,wBAAwB,EACxB,WAAW,EACZ,MAAM,4BAA4B,CAAC;AA2IpC,MAAM,MAAM,qBAAqB,GAAG;IAClC,yBAAyB;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,CAAC,eAAe,GAAG,eAAe,CAAC,GACrC,WAAW,CAAC;AAEd,MAAM,MAAM,WAAW,GAAG,SAAS,UAAU,EAAE,CAAC;AAChD,MAAM,MAAM,WAAW,GAAG,SAAS,UAAU,EAAE,CAAC;AAEhD,KAAK,UAAU,GAAG;IAChB,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,IAAI,CAAC,wBAAwB,EAAE,oBAAoB,CAAC,CAAC;AAEzD,KAAK,UAAU,GAAG;IAChB,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,UAAU,CAAC;AAEf,KAAK,eAAe,GAAG;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,OAAO,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,gDAAgD;IAChD,KAAK,EAAE,QAAQ,CAAC;IAChB,iCAAiC;IACjC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,UAAU,CAAC;AAEf,KAAK,eAAe,GAAG;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC;IACnB,iEAAiE;IACjE,OAAO,EAAE,WAAW,CAAC;CACtB,CAAC;AAyDF,eAAO,MAAM,gBAAgB,2HAA6C,CAAC"}
1
+ {"version":3,"file":"SegmentedControl.d.ts","sourceRoot":"","sources":["../../src/controls/SegmentedControl.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmE,MAAM,OAAO,CAAC;AAGxF,OAAO,KAAK,EACV,QAAQ,EACR,QAAQ,EACR,wBAAwB,EACxB,WAAW,EACZ,MAAM,4BAA4B,CAAC;AA2IpC,MAAM,MAAM,qBAAqB,GAAG;IAClC,yBAAyB;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,CAAC,eAAe,GAAG,eAAe,CAAC,GACrC,WAAW,CAAC;AAEd,MAAM,MAAM,WAAW,GAAG,SAAS,UAAU,EAAE,CAAC;AAChD,MAAM,MAAM,WAAW,GAAG,SAAS,UAAU,EAAE,CAAC;AAEhD,KAAK,UAAU,GAAG;IAChB,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,IAAI,CAAC,wBAAwB,EAAE,oBAAoB,CAAC,CAAC;AAEzD,KAAK,UAAU,GAAG;IAChB,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,UAAU,CAAC;AAEf,KAAK,eAAe,GAAG;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,OAAO,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,gDAAgD;IAChD,KAAK,EAAE,QAAQ,CAAC;IAChB,iCAAiC;IACjC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,UAAU,CAAC;AAEf,KAAK,eAAe,GAAG;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC;IACnB,iEAAiE;IACjE,OAAO,EAAE,WAAW,CAAC;CACtB,CAAC;AAyDF;;GAEG;AACH,eAAO,MAAM,gBAAgB,2HAA6C,CAAC"}
@@ -24,7 +24,7 @@ const CheckboxWithRef = /*#__PURE__*/forwardRef(function CheckboxWithRef(_ref, r
24
24
  controlColor = 'fgInverse',
25
25
  background = checked || indeterminate ? 'bgPrimary' : 'bg',
26
26
  borderColor = checked || indeterminate ? 'bgPrimary' : 'bgLineHeavy',
27
- borderRadius,
27
+ borderRadius = 100,
28
28
  borderWidth = 100,
29
29
  elevation
30
30
  } = _ref,
@@ -51,7 +51,6 @@ const CheckboxWithRef = /*#__PURE__*/forwardRef(function CheckboxWithRef(_ref, r
51
51
  ref: ref,
52
52
  "aria-label": props.accessibilityLabel,
53
53
  borderRadius: borderRadius,
54
- borderWidth: borderWidth,
55
54
  checked: checked,
56
55
  elevation: elevation,
57
56
  label: children,
@@ -1 +1 @@
1
- @layer cds{.baseCss-b1rohblb{position:relative;-webkit-appearance:radio;-moz-appearance:radio;appearance:radio;width:var(--controlSize-radioSize);height:var(--controlSize-radioSize);border-style:solid;border-width:var(--borderWidth-100);border-radius:var(--borderRadius-1000);-webkit-transition:border-color 0.2s linear;transition:border-color 0.2s linear;}.baseCss-b1rohblb:focus{outline:none;}.baseCss-b1rohblb:focus-visible{outline-style:solid;outline-width:2px;outline-color:var(--color-bgPrimary);outline-offset:2px;}}
1
+ @layer cds{.baseCss-b1rohblb{position:relative;-webkit-appearance:radio;-moz-appearance:radio;appearance:radio;width:var(--controlSize-radioSize);height:var(--controlSize-radioSize);border-style:solid;border-radius:var(--borderRadius-1000);-webkit-transition:border-color 0.2s linear;transition:border-color 0.2s linear;}.baseCss-b1rohblb:focus{outline:none;}.baseCss-b1rohblb:focus-visible{outline-style:solid;outline-width:2px;outline-color:var(--color-bgPrimary);outline-offset:2px;}}
@@ -1,4 +1,4 @@
1
- const _excluded = ["children", "controlColor", "checked", "background", "borderColor", "elevation"];
1
+ const _excluded = ["children", "controlColor", "checked", "background", "borderColor", "borderWidth", "elevation"];
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; }
@@ -40,6 +40,7 @@ const RadioWithRef = /*#__PURE__*/forwardRef(function RadioWithRef(_ref2, ref) {
40
40
  checked = false,
41
41
  background = 'bg',
42
42
  borderColor = checked ? controlColor : 'bgLineHeavy',
43
+ borderWidth = 100,
43
44
  elevation
44
45
  } = _ref2,
45
46
  props = _objectWithoutProperties(_ref2, _excluded);
@@ -61,6 +62,7 @@ const RadioWithRef = /*#__PURE__*/forwardRef(function RadioWithRef(_ref2, ref) {
61
62
  alignItems: "center",
62
63
  background: background,
63
64
  borderColor: borderColor,
65
+ borderWidth: borderWidth,
64
66
  className: baseCss,
65
67
  "data-filled": checked,
66
68
  flexShrink: 0,
@@ -104,6 +104,10 @@ function SegmentedControlInternal(props, ref) {
104
104
  })
105
105
  });
106
106
  }
107
+
108
+ /**
109
+ * @deprecated SegmentedControl is deprecated and will be removed in a future version. Please use Tabs or SegmentedTabs instead.
110
+ */
107
111
  export const SegmentedControl = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(SegmentedControlInternal));
108
112
  SegmentedControl.displayName = 'SegmentedControl';
109
113
  import "./SegmentedControl.css";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coinbase/cds-web",
3
- "version": "8.52.1",
3
+ "version": "8.53.0",
4
4
  "description": "Coinbase Design System - Web",
5
5
  "repository": {
6
6
  "type": "git",
@@ -207,9 +207,9 @@
207
207
  "react-dom": "^18.3.1"
208
208
  },
209
209
  "dependencies": {
210
- "@coinbase/cds-common": "^8.52.1",
211
- "@coinbase/cds-icons": "^5.12.0",
212
- "@coinbase/cds-illustrations": "^4.32.0",
210
+ "@coinbase/cds-common": "^8.53.0",
211
+ "@coinbase/cds-icons": "^5.13.0",
212
+ "@coinbase/cds-illustrations": "^4.33.0",
213
213
  "@coinbase/cds-lottie-files": "^3.3.4",
214
214
  "@coinbase/cds-utils": "^2.3.5",
215
215
  "@floating-ui/react-dom": "^2.1.1",