@coinbase/cds-web 8.68.0 → 8.69.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,13 @@ All notable changes to this project will be documented in this file.
8
8
 
9
9
  <!-- template-start -->
10
10
 
11
+ ## 8.69.0 (5/5/2026 PST)
12
+
13
+ #### 🚀 Updates
14
+
15
+ - Fix: NavigationBar no longer reserves space for absent start content. [[#664](https://github.com/coinbase/cds/pull/664)]
16
+ - Add collapsedStyle prop to Collapsible.[[#664](https://github.com/coinbase/cds/pull/664)]
17
+
11
18
  ## 8.68.0 (5/1/2026 PST)
12
19
 
13
20
  #### 🚀 Updates
@@ -1 +1 @@
1
- {"version":3,"file":"Collapsible.d.ts","sourceRoot":"","sources":["../../src/collapsible/Collapsible.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2D,MAAM,OAAO,CAAC;AAChF,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAIlG,OAAO,EAAO,KAAK,iBAAiB,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAO3E,MAAM,MAAM,oBAAoB,GAAG,WAAW,GAC5C,YAAY,GACZ,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,yBAAyB,CAAC,GAAG;IAC7E;;;OAGG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;;OAGG;IACH,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC;;;OAGG;IACH,gCAAgC,CAAC,EAAE,OAAO,CAAC;IAC3C;;OAEG;IACH,SAAS,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,CAAC;IACrD;;OAEG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC,UAAU,CAAC,CAAC;CACpD,CAAC;AAEJ,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AAEpD,eAAO,MAAM,WAAW;IA/BpB;;;OAGG;eACQ,OAAO;IAClB;;OAEG;cACO,KAAK,CAAC,SAAS;IACzB;;;OAGG;gBACS,oBAAoB;IAChC;;;OAGG;uCACgC,OAAO;IAC1C;;OAEG;gBACS,QAAQ,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC;IACpD;;OAEG;eACQ,QAAQ,CAAC,iBAAiB,CAAC,CAAC,UAAU,CAAC;yCAkGrD,CAAC"}
1
+ {"version":3,"file":"Collapsible.d.ts","sourceRoot":"","sources":["../../src/collapsible/Collapsible.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2D,MAAM,OAAO,CAAC;AAChF,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAIlG,OAAO,EAAO,KAAK,iBAAiB,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAO3E,MAAM,MAAM,oBAAoB,GAAG,WAAW,GAC5C,YAAY,GACZ,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,yBAAyB,CAAC,GAAG;IAC7E;;;OAGG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;;OAGG;IACH,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC;;;OAGG;IACH,gCAAgC,CAAC,EAAE,OAAO,CAAC;IAC3C;;OAEG;IACH,SAAS,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,CAAC;IACrD;;OAEG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC,UAAU,CAAC,CAAC;CACpD,CAAC;AAEJ,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AAEpD,eAAO,MAAM,WAAW;IA/BpB;;;OAGG;eACQ,OAAO;IAClB;;OAEG;cACO,KAAK,CAAC,SAAS;IACzB;;;OAGG;gBACS,oBAAoB;IAChC;;;OAGG;uCACgC,OAAO;IAC1C;;OAEG;gBACS,QAAQ,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC;IACpD;;OAEG;eACQ,QAAQ,CAAC,iBAAiB,CAAC,CAAC,UAAU,CAAC;yCA2FrD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"NavigationBar.d.ts","sourceRoot":"","sources":["../../src/navigation/NavigationBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAOjE,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,QAAQ,EAAkB,MAAM,WAAW,CAAC;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEpD,eAAO,MAAM,2BAA2B,QAAQ,CAAC;AAEjD,MAAM,MAAM,2BAA2B,GAAG,OAAO,2BAA2B,CAAC;AAE7E;;;GAGG;AACH,eAAO,MAAM,uBAAuB;IAClC,4DAA4D;;IAE5D,uDAAuD;;IAEvD,4DAA4D;;CAEpD,CAAC;AAEX,MAAM,MAAM,sBAAsB,GAAG,YAAY,GAAG;IAClD;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;;OAEG;IACH,GAAG,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB;;OAEG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC;IAC3B;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC;IAC7B;;OAEG;IACH,aAAa,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC;IAChC;;;OAGG;IACH,MAAM,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACzC;;;OAGG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC5C;;OAEG;IACH,gCAAgC,CAAC,EAAE,OAAO,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,sBAAsB,GACrD,mBAAmB,CAAC,OAAO,uBAAuB,CAAC,GACnD,IAAI,CAAC,QAAQ,CAAC,2BAA2B,CAAC,EAAE,UAAU,CAAC,CAAC;AAE1D,eAAO,MAAM,aAAa,qCAAiB,kBAAkB,6CA+E3D,CAAC"}
1
+ {"version":3,"file":"NavigationBar.d.ts","sourceRoot":"","sources":["../../src/navigation/NavigationBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAOjE,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,QAAQ,EAAkB,MAAM,WAAW,CAAC;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEpD,eAAO,MAAM,2BAA2B,QAAQ,CAAC;AAEjD,MAAM,MAAM,2BAA2B,GAAG,OAAO,2BAA2B,CAAC;AAE7E;;;GAGG;AACH,eAAO,MAAM,uBAAuB;IAClC,4DAA4D;;IAE5D,uDAAuD;;IAEvD,4DAA4D;;CAEpD,CAAC;AAEX,MAAM,MAAM,sBAAsB,GAAG,YAAY,GAAG;IAClD;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;;OAEG;IACH,GAAG,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB;;OAEG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC;IAC3B;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC;IAC7B;;OAEG;IACH,aAAa,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC;IAChC;;;OAGG;IACH,MAAM,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACzC;;;OAGG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC5C;;OAEG;IACH,gCAAgC,CAAC,EAAE,OAAO,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,sBAAsB,GACrD,mBAAmB,CAAC,OAAO,uBAAuB,CAAC,GACnD,IAAI,CAAC,QAAQ,CAAC,2BAA2B,CAAC,EAAE,UAAU,CAAC,CAAC;AAE1D,eAAO,MAAM,aAAa,qCAAiB,kBAAkB,6CAiF3D,CAAC"}
@@ -54,27 +54,23 @@ export const Collapsible = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_props, fo
54
54
  };
55
55
  }, [direction, maxWidth, maxHeight]);
56
56
 
57
- // visibility is used to prevent child content from being focusable when collapsed
58
- const [visibility, setVisibility] = useState(collapsed ? 'hidden' : 'visible');
59
- // update the visibility to "visible" when the content is expanding
60
- if (!collapsed && visibility !== 'visible') {
61
- setVisibility('visible');
57
+ // display: none is applied after the collapse animation completes so the element no longer
58
+ // participates in layout and its children are not focusable. It is restored immediately when
59
+ // expanding so the animation has content to reveal.
60
+ const [isDisplayNone, setIsDisplayNone] = useState(collapsed);
61
+ if (!collapsed && isDisplayNone) {
62
+ setIsDisplayNone(false);
62
63
  }
63
-
64
- // when the animation completes, set the visibility to "hidden" if the content should be collapsed
65
- // this is to prevent children of the Collapsible element from being focusable in this state
66
64
  const handleAnimationComplete = useCallback(() => {
67
65
  if (collapsed) {
68
- setVisibility('hidden');
66
+ setIsDisplayNone(true);
69
67
  }
70
68
  }, [collapsed]);
71
-
72
- // merge visible style with the computed framer-motion styles
73
69
  const style = useMemo(() => {
74
- return _objectSpread(_objectSpread({}, motionStyle), {}, {
75
- visibility
76
- });
77
- }, [visibility, motionStyle]);
70
+ return isDisplayNone ? _objectSpread(_objectSpread({}, motionStyle), {}, {
71
+ display: 'none'
72
+ }) : motionStyle;
73
+ }, [motionStyle, isDisplayNone]);
78
74
  return /*#__PURE__*/_jsx(motion.div, _objectSpread(_objectSpread({}, motionProps), {}, {
79
75
  ref: forwardedRef,
80
76
  "aria-labelledby": accessibilityLabelledBy,
@@ -77,10 +77,6 @@ export const NavigationBar = /*#__PURE__*/memo(_props => {
77
77
  }, props), {}, {
78
78
  children: [/*#__PURE__*/_jsxs(HStack, {
79
79
  alignItems: "center",
80
- gap: columnGap !== null && columnGap !== void 0 ? columnGap : {
81
- base: 2,
82
- phone: 1
83
- },
84
80
  overflow: "auto",
85
81
  children: [/*#__PURE__*/_jsx(Collapsible, {
86
82
  collapsed: !start,
@@ -96,14 +92,22 @@ export const NavigationBar = /*#__PURE__*/memo(_props => {
96
92
  style: styles === null || styles === void 0 ? void 0 : styles.start,
97
93
  children: startNode
98
94
  })
99
- }), /*#__PURE__*/_jsx(HStack, {
95
+ }), /*#__PURE__*/_jsxs(HStack, {
100
96
  alignItems: "center",
101
- className: cx(navigationBarClassNames.content, classNames === null || classNames === void 0 ? void 0 : classNames.content),
102
97
  flexGrow: 1,
103
- gap: 1,
104
- style: styles === null || styles === void 0 ? void 0 : styles.content,
105
- children: children
106
- }), end]
98
+ gap: columnGap !== null && columnGap !== void 0 ? columnGap : {
99
+ base: 2,
100
+ phone: 1
101
+ },
102
+ children: [/*#__PURE__*/_jsx(HStack, {
103
+ alignItems: "center",
104
+ className: cx(navigationBarClassNames.content, classNames === null || classNames === void 0 ? void 0 : classNames.content),
105
+ flexGrow: 1,
106
+ gap: 1,
107
+ style: styles === null || styles === void 0 ? void 0 : styles.content,
108
+ children: children
109
+ }), end]
110
+ })]
107
111
  }), bottom]
108
112
  }));
109
113
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coinbase/cds-web",
3
- "version": "8.68.0",
3
+ "version": "8.69.0",
4
4
  "description": "Coinbase Design System - Web",
5
5
  "repository": {
6
6
  "type": "git",
@@ -207,7 +207,7 @@
207
207
  "react-dom": "^18.3.1"
208
208
  },
209
209
  "dependencies": {
210
- "@coinbase/cds-common": "^8.68.0",
210
+ "@coinbase/cds-common": "^8.69.0",
211
211
  "@coinbase/cds-icons": "^5.16.0",
212
212
  "@coinbase/cds-illustrations": "^4.38.0",
213
213
  "@coinbase/cds-lottie-files": "^3.3.4",