@coinbase/cds-mobile 9.2.1 → 9.2.2
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.2.2 (6/10/2026 PST)
|
|
12
|
+
|
|
13
|
+
#### 🐞 Fixes
|
|
14
|
+
|
|
15
|
+
- Fix: custom Switch sizes now center in the background track correctly. [[#750](https://github.com/coinbase/cds/pull/750)]
|
|
16
|
+
|
|
11
17
|
## 9.2.1 (6/9/2026 PST)
|
|
12
18
|
|
|
13
19
|
#### 🐞 Fixes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../../src/controls/Switch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,KAAK,SAAS,EAAc,KAAK,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAOrF,OAAO,EAAW,KAAK,gBAAgB,EAAyB,MAAM,WAAW,CAAC;AAElF,MAAM,MAAM,eAAe,CAAC,WAAW,SAAS,MAAM,IAAI,IAAI,CAC5D,gBAAgB,CAAC,WAAW,CAAC,EAC7B,aAAa,GAAG,SAAS,CAC1B,CAAC;AAEF,MAAM,MAAM,WAAW,CAAC,WAAW,SAAS,MAAM,IAAI,eAAe,CAAC,WAAW,CAAC,GAAG;IACnF;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,oCAAoC;IACpC,MAAM,CAAC,EAAE;QACP,oDAAoD;QACpD,IAAI,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QAC5B;;;WAGG;QACH,OAAO,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;KAChC,CAAC;CACH,CAAC;
|
|
1
|
+
{"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../../src/controls/Switch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,KAAK,SAAS,EAAc,KAAK,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAOrF,OAAO,EAAW,KAAK,gBAAgB,EAAyB,MAAM,WAAW,CAAC;AAElF,MAAM,MAAM,eAAe,CAAC,WAAW,SAAS,MAAM,IAAI,IAAI,CAC5D,gBAAgB,CAAC,WAAW,CAAC,EAC7B,aAAa,GAAG,SAAS,CAC1B,CAAC;AAEF,MAAM,MAAM,WAAW,CAAC,WAAW,SAAS,MAAM,IAAI,eAAe,CAAC,WAAW,CAAC,GAAG;IACnF;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,oCAAoC;IACpC,MAAM,CAAC,EAAE;QACP,oDAAoD;QACpD,IAAI,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QAC5B;;;WAGG;QACH,OAAO,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;KAChC,CAAC;CACH,CAAC;AA6HF,eAAO,MAAM,MAAM;IAhJjB;;;;;;;OAOG;eACQ,KAAK,CAAC,SAAS;IAC1B,oCAAoC;aAC3B;QACP,oDAAoD;QACpD,IAAI,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QAC5B;;;WAGG;QACH,OAAO,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;KAChC;8BA8HsC,CAAC"}
|
package/esm/controls/Switch.js
CHANGED
|
@@ -31,6 +31,10 @@ const SwitchIcon = _ref => {
|
|
|
31
31
|
switchHeight,
|
|
32
32
|
switchThumbSize
|
|
33
33
|
} = theme.controlSize;
|
|
34
|
+
|
|
35
|
+
// Inset that keeps the thumb centered within the track regardless of the
|
|
36
|
+
// configured track/thumb sizes (built-in themes use a 1px inset).
|
|
37
|
+
const thumbInset = (switchHeight - switchThumbSize) / 2;
|
|
34
38
|
const trackStyle = useMemo(() => [{
|
|
35
39
|
width: switchWidth,
|
|
36
40
|
height: switchHeight
|
|
@@ -39,16 +43,16 @@ const SwitchIcon = _ref => {
|
|
|
39
43
|
width: switchThumbSize,
|
|
40
44
|
height: switchThumbSize,
|
|
41
45
|
position: 'absolute',
|
|
42
|
-
top:
|
|
43
|
-
left:
|
|
46
|
+
top: thumbInset - borderSize,
|
|
47
|
+
left: thumbInset - borderSize
|
|
44
48
|
}, {
|
|
45
49
|
transform: [{
|
|
46
50
|
translateX: animatedScaleValue.interpolate({
|
|
47
51
|
inputRange: [0.9, 1],
|
|
48
|
-
outputRange: [0, switchWidth - switchThumbSize - 2]
|
|
52
|
+
outputRange: [0, switchWidth - switchThumbSize - thumbInset * 2]
|
|
49
53
|
})
|
|
50
54
|
}]
|
|
51
|
-
}], [animatedScaleValue, borderSize, switchThumbSize, switchWidth]);
|
|
55
|
+
}], [animatedScaleValue, borderSize, thumbInset, switchThumbSize, switchWidth]);
|
|
52
56
|
return /*#__PURE__*/_jsx(Interactable, {
|
|
53
57
|
background: background,
|
|
54
58
|
borderColor: borderColor,
|
|
@@ -1,12 +1,16 @@
|
|
|
1
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
1
2
|
import React, { useState } from 'react';
|
|
2
3
|
import { Example, ExampleScreen } from '../../examples/ExampleScreen';
|
|
3
4
|
import { VStack } from '../../layout';
|
|
5
|
+
import { ThemeProvider } from '../../system/ThemeProvider';
|
|
6
|
+
import { defaultTheme } from '../../themes/defaultTheme';
|
|
4
7
|
import { Switch } from '../Switch';
|
|
5
8
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
6
9
|
const SwitchScreen = () => {
|
|
7
10
|
const [isChecked, setIsChecked] = useState(false);
|
|
8
11
|
const [isChecked2, setIsChecked2] = useState(true);
|
|
9
12
|
const [isChecked3, setIsChecked3] = useState(false);
|
|
13
|
+
const [isChecked4, setIsChecked4] = useState(false);
|
|
10
14
|
return /*#__PURE__*/_jsxs(ExampleScreen, {
|
|
11
15
|
children: [/*#__PURE__*/_jsx(Example, {
|
|
12
16
|
inline: true,
|
|
@@ -64,6 +68,37 @@ const SwitchScreen = () => {
|
|
|
64
68
|
})]
|
|
65
69
|
});
|
|
66
70
|
}
|
|
71
|
+
}), /*#__PURE__*/_jsx(Example, {
|
|
72
|
+
inline: true,
|
|
73
|
+
title: "Custom Theme",
|
|
74
|
+
children: () => {
|
|
75
|
+
const toggleChecked = () => setIsChecked4(prevChecked => !prevChecked);
|
|
76
|
+
const customTheme = _extends({}, defaultTheme, {
|
|
77
|
+
controlSize: _extends({}, defaultTheme.controlSize, {
|
|
78
|
+
switchHeight: 24,
|
|
79
|
+
switchThumbSize: 20,
|
|
80
|
+
switchWidth: 44
|
|
81
|
+
})
|
|
82
|
+
});
|
|
83
|
+
return /*#__PURE__*/_jsx(ThemeProvider, {
|
|
84
|
+
activeColorScheme: "light",
|
|
85
|
+
theme: customTheme,
|
|
86
|
+
children: /*#__PURE__*/_jsxs(VStack, {
|
|
87
|
+
gap: 2,
|
|
88
|
+
children: [/*#__PURE__*/_jsx(Switch, {
|
|
89
|
+
checked: isChecked4,
|
|
90
|
+
onChange: toggleChecked,
|
|
91
|
+
children: "Interactive"
|
|
92
|
+
}), /*#__PURE__*/_jsx(Switch, {
|
|
93
|
+
checked: false,
|
|
94
|
+
children: "Off"
|
|
95
|
+
}), /*#__PURE__*/_jsx(Switch, {
|
|
96
|
+
checked: true,
|
|
97
|
+
children: "On"
|
|
98
|
+
})]
|
|
99
|
+
})
|
|
100
|
+
});
|
|
101
|
+
}
|
|
67
102
|
}), /*#__PURE__*/_jsx(Example, {
|
|
68
103
|
inline: true,
|
|
69
104
|
title: "Elevation",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@coinbase/cds-mobile",
|
|
3
|
-
"version": "9.2.
|
|
3
|
+
"version": "9.2.2",
|
|
4
4
|
"description": "Coinbase Design System - Mobile",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -206,9 +206,9 @@
|
|
|
206
206
|
"react-native-worklets": "0.5.2"
|
|
207
207
|
},
|
|
208
208
|
"dependencies": {
|
|
209
|
-
"@coinbase/cds-common": "^9.2.
|
|
210
|
-
"@coinbase/cds-icons": "^5.
|
|
211
|
-
"@coinbase/cds-illustrations": "^4.
|
|
209
|
+
"@coinbase/cds-common": "^9.2.2",
|
|
210
|
+
"@coinbase/cds-icons": "^5.19.0",
|
|
211
|
+
"@coinbase/cds-illustrations": "^4.41.0",
|
|
212
212
|
"@coinbase/cds-lottie-files": "^3.3.4",
|
|
213
213
|
"@coinbase/cds-utils": "^2.3.5",
|
|
214
214
|
"@floating-ui/react-native": "^0.10.5",
|