@coinbase/cds-web 8.59.0 → 8.60.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 +6 -0
- package/dts/buttons/Button.d.ts +7 -0
- package/dts/buttons/Button.d.ts.map +1 -1
- package/dts/buttons/IconButton.d.ts.map +1 -1
- package/dts/loaders/Spinner.d.ts +4 -0
- package/dts/loaders/Spinner.d.ts.map +1 -1
- package/dts/visualizations/DefaultProgressCircleContent.d.ts +1 -2
- package/dts/visualizations/DefaultProgressCircleContent.d.ts.map +1 -1
- package/dts/visualizations/ProgressBar.d.ts +2 -2
- package/dts/visualizations/ProgressBar.d.ts.map +1 -1
- package/dts/visualizations/ProgressBarWithFloatLabel.d.ts.map +1 -1
- package/dts/visualizations/ProgressCircle.d.ts +9 -1
- package/dts/visualizations/ProgressCircle.d.ts.map +1 -1
- package/esm/buttons/Button.js +13 -13
- package/esm/buttons/IconButton.css +3 -4
- package/esm/buttons/IconButton.js +13 -17
- package/esm/loaders/Spinner.js +5 -0
- package/esm/visualizations/DefaultProgressCircleContent.js +2 -2
- package/esm/visualizations/ProgressBar.js +3 -3
- package/esm/visualizations/ProgressBarWithFloatLabel.js +31 -41
- package/esm/visualizations/ProgressCircle.css +2 -1
- package/esm/visualizations/ProgressCircle.js +65 -68
- package/package.json +2 -2
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
|
+
## 8.60.0 (3/29/2026 PST)
|
|
12
|
+
|
|
13
|
+
#### 🚀 Updates
|
|
14
|
+
|
|
15
|
+
- Add indeterminate ProgressCircle. [[#501](https://github.com/coinbase/cds/pull/501)]
|
|
16
|
+
|
|
11
17
|
## 8.59.0 (3/27/2026 PST)
|
|
12
18
|
|
|
13
19
|
#### 🚀 Updates
|
package/dts/buttons/Button.d.ts
CHANGED
|
@@ -7,6 +7,9 @@ import type {
|
|
|
7
7
|
} from '@coinbase/cds-common/types';
|
|
8
8
|
import type { Polymorphic } from '../core/polymorphism';
|
|
9
9
|
import { type PressableBaseProps } from '../system/Pressable';
|
|
10
|
+
/** @deprecated Use progressCircleSize instead. This will be removed in a future major release.
|
|
11
|
+
* @deprecationExpectedRemoval v10
|
|
12
|
+
*/
|
|
10
13
|
export declare const spinnerHeight = 2.5;
|
|
11
14
|
export declare const buttonDefaultElement = 'button';
|
|
12
15
|
export type ButtonDefaultElement = typeof buttonDefaultElement;
|
|
@@ -23,6 +26,10 @@ export type ButtonBaseProps = Polymorphic.ExtendableProps<
|
|
|
23
26
|
disabled?: boolean;
|
|
24
27
|
/** Mark the button as loading and display a spinner. */
|
|
25
28
|
loading?: boolean;
|
|
29
|
+
/** Size of the loading progress circle in px.
|
|
30
|
+
* @default 24
|
|
31
|
+
*/
|
|
32
|
+
progressCircleSize?: number;
|
|
26
33
|
/** Mark the background and border as transparent until interacted with. */
|
|
27
34
|
transparent?: boolean;
|
|
28
35
|
/** Change to block and expand to 100% of parent width. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/buttons/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAEhD,OAAO,KAAK,EACV,aAAa,EACb,QAAQ,EACR,wBAAwB,EACxB,WAAW,EACZ,MAAM,4BAA4B,CAAC;AAGpC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/buttons/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAEhD,OAAO,KAAK,EACV,aAAa,EACb,QAAQ,EACR,wBAAwB,EACxB,WAAW,EACZ,MAAM,4BAA4B,CAAC;AAGpC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGxD,OAAO,EAAa,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAQzE;;GAEG;AACH,eAAO,MAAM,aAAa,MAAM,CAAC;AAuFjC,eAAO,MAAM,oBAAoB,WAAW,CAAC;AAE7C,MAAM,MAAM,oBAAoB,GAAG,OAAO,oBAAoB,CAAC;AAE/D,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,eAAe,CACvD,kBAAkB,EAClB,WAAW,GACT,IAAI,CAAC,wBAAwB,EAAE,oBAAoB,CAAC,GAAG;IACrD;;;OAGG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wDAAwD;IACxD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,2EAA2E;IAC3E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,0DAA0D;IAC1D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,yDAAyD;IACzD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,4CAA4C;IAC5C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,yBAAyB;IACzB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,iDAAiD;IACjD,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,uCAAuC;IACvC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,uBAAuB;IACvB,GAAG,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,qCAAqC;IACrC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IACxB,kDAAkD;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CACJ,CAAC;AAEF,MAAM,MAAM,WAAW,CAAC,WAAW,SAAS,KAAK,CAAC,WAAW,IAAI,WAAW,CAAC,KAAK,CAChF,WAAW,EACX,eAAe,CAChB,CAAC;AAEF,KAAK,eAAe,GAAG,CAAC,CAAC,WAAW,SAAS,KAAK,CAAC,WAAW,GAAG,oBAAoB,EACnF,KAAK,EAAE,WAAW,CAAC,WAAW,CAAC,KAC5B,WAAW,CAAC,WAAW,CAAC,GAC3B,WAAW,CAAC,UAAU,CAAC;AAEzB,eAAO,MAAM,MAAM,EAAE,eA4IpB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IconButton.d.ts","sourceRoot":"","sources":["../../src/buttons/IconButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AAEzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAGxF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"IconButton.d.ts","sourceRoot":"","sources":["../../src/buttons/IconButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AAEzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAGxF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAIxD,OAAO,EAAa,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAGzE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,UAAU,CAAC;AAIhD,eAAO,MAAM,wBAAwB,WAAW,CAAC;AAEjD,MAAM,MAAM,wBAAwB,GAAG,OAAO,wBAAwB,CAAC;AAEvE,MAAM,MAAM,mBAAmB,GAAG,WAAW,CAAC,eAAe,CAC3D,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,EACpC,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,aAAa,GAAG,SAAS,GAAG,OAAO,CAAC,GAAG;IACxE,6CAA6C;IAC7C,IAAI,EAAE,QAAQ,CAAC;IACf;;;OAGG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,iCAAiC;IACjC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B,CACF,CAAC;AAEF,MAAM,MAAM,eAAe,CAAC,WAAW,SAAS,KAAK,CAAC,WAAW,IAAI,WAAW,CAAC,KAAK,CACpF,WAAW,EACX,mBAAmB,CACpB,CAAC;AAEF,KAAK,mBAAmB,GAAG,CAAC,CAAC,WAAW,SAAS,KAAK,CAAC,WAAW,GAAG,wBAAwB,EAC3F,KAAK,EAAE,eAAe,CAAC,WAAW,CAAC,KAChC,WAAW,CAAC,WAAW,CAAC,GAC3B,WAAW,CAAC,UAAU,CAAC;AAgBzB,eAAO,MAAM,UAAU,EAAE,mBAyFxB,CAAC"}
|
package/dts/loaders/Spinner.d.ts
CHANGED
|
@@ -7,6 +7,10 @@ export type SpinnerBaseProps = {
|
|
|
7
7
|
size: number;
|
|
8
8
|
};
|
|
9
9
|
export type SpinnerProps = SpinnerBaseProps & BoxProps<BoxDefaultElement>;
|
|
10
|
+
/**
|
|
11
|
+
* @deprecated Use indeterminate ProgressCircle component instead. This will be removed in a future major release.
|
|
12
|
+
* @deprecationExpectedRemoval v10
|
|
13
|
+
*/
|
|
10
14
|
export declare const Spinner: React.MemoExoticComponent<
|
|
11
15
|
({
|
|
12
16
|
color,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Spinner.d.ts","sourceRoot":"","sources":["../../src/loaders/Spinner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAI7C,OAAO,EAAO,KAAK,iBAAiB,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAI3E,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,gBAAgB,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AAgC1E,eAAO,MAAM,OAAO,sGASf,YAAY,6CAwBhB,CAAC"}
|
|
1
|
+
{"version":3,"file":"Spinner.d.ts","sourceRoot":"","sources":["../../src/loaders/Spinner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAI7C,OAAO,EAAO,KAAK,iBAAiB,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAI3E,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,gBAAgB,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AAgC1E;;;GAGG;AACH,eAAO,MAAM,OAAO,sGASf,YAAY,6CAwBhB,CAAC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
import type { ProgressCircleContentProps } from './ProgressCircle';
|
|
3
|
-
export declare const DefaultProgressCircleContent:
|
|
2
|
+
export declare const DefaultProgressCircleContent: import('react').MemoExoticComponent<
|
|
4
3
|
({
|
|
5
4
|
progress,
|
|
6
5
|
disableAnimateOnMount,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultProgressCircleContent.d.ts","sourceRoot":"","sources":["../../src/visualizations/DefaultProgressCircleContent.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DefaultProgressCircleContent.d.ts","sourceRoot":"","sources":["../../src/visualizations/DefaultProgressCircleContent.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAGnE,eAAO,MAAM,4BAA4B,8FAMpC,0BAA0B,6CAU9B,CAAC"}
|
|
@@ -6,7 +6,7 @@ export type ProgressBaseProps = SharedProps &
|
|
|
6
6
|
Pick<HintMotionBaseProps, 'disableAnimateOnMount'> &
|
|
7
7
|
Pick<SharedAccessibilityProps, 'accessibilityLabel'> & {
|
|
8
8
|
/** Number between 0-1 representing the progress percentage */
|
|
9
|
-
progress
|
|
9
|
+
progress?: number;
|
|
10
10
|
/** Toggle used to change thickness of progress visualization
|
|
11
11
|
* @default normal
|
|
12
12
|
* */
|
|
@@ -53,7 +53,7 @@ export declare const ProgressBar: React.MemoExoticComponent<
|
|
|
53
53
|
Pick<HintMotionBaseProps, 'disableAnimateOnMount'> &
|
|
54
54
|
Pick<SharedAccessibilityProps, 'accessibilityLabel'> & {
|
|
55
55
|
/** Number between 0-1 representing the progress percentage */
|
|
56
|
-
progress
|
|
56
|
+
progress?: number;
|
|
57
57
|
/** Toggle used to change thickness of progress visualization
|
|
58
58
|
* @default normal
|
|
59
59
|
* */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProgressBar.d.ts","sourceRoot":"","sources":["../../src/visualizations/ProgressBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAEhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,KAAK,EAAE,wBAAwB,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAOhG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAI3D,MAAM,MAAM,iBAAiB,GAAG,WAAW,GACzC,IAAI,CAAC,mBAAmB,EAAE,uBAAuB,CAAC,GAClD,IAAI,CAAC,wBAAwB,EAAE,oBAAoB,CAAC,GAAG;IACrD,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"ProgressBar.d.ts","sourceRoot":"","sources":["../../src/visualizations/ProgressBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAEhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,KAAK,EAAE,wBAAwB,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAOhG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAI3D,MAAM,MAAM,iBAAiB,GAAG,WAAW,GACzC,IAAI,CAAC,mBAAmB,EAAE,uBAAuB,CAAC,GAClD,IAAI,CAAC,wBAAwB,EAAE,oBAAoB,CAAC,GAAG;IACrD,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;SAEK;IACL,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC;IACxB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;CAC/B,CAAC;AAEJ,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,GAAG;IACjD,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,MAAM,CAAC,EAAE;QACP,mBAAmB;QACnB,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAC3B,4BAA4B;QAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;KAChC,CAAC;IACF,8EAA8E;IAC9E,UAAU,CAAC,EAAE;QACX,mBAAmB;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,4BAA4B;QAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH,CAAC;AAQF,eAAO,MAAM,WAAW;IAlDpB,8DAA8D;eACnD,MAAM;IACjB;;SAEK;aACI,MAAM;IACf;;OAEG;eACQ,OAAO;IAClB;;;OAGG;YACK,SAAS,CAAC,KAAK;IACvB;;OAEG;qBACc,MAAM,IAAI;IAC3B;;OAEG;uBACgB,MAAM,IAAI;;YAIvB,KAAK,CAAC,aAAa;gBACf,MAAM;IAClB,yEAAyE;aAChE;QACP,mBAAmB;QACnB,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAC3B,4BAA4B;QAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;KAChC;IACD,8EAA8E;iBACjE;QACX,mBAAmB;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,4BAA4B;QAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;yCA2FF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProgressBarWithFloatLabel.d.ts","sourceRoot":"","sources":["../../src/visualizations/ProgressBarWithFloatLabel.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ProgressBarWithFloatLabel.d.ts","sourceRoot":"","sources":["../../src/visualizations/ProgressBarWithFloatLabel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyD,MAAM,OAAO,CAAC;AAE9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAa5D,OAAO,EAA4B,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAG7F,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGvD,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAC3C,8BAA8B,EAC5B,OAAO,GACP,UAAU,GACV,uBAAuB,GACvB,UAAU,GACV,gBAAgB,GAChB,QAAQ,GACR,YAAY,CACf,CAAC;AA8FF,MAAM,MAAM,8BAA8B,GAAG,IAAI,CAC/C,iBAAiB,EACjB,UAAU,GAAG,uBAAuB,GAAG,UAAU,GAAG,QAAQ,CAC7D,GAAG;IACF,yHAAyH;IACzH,KAAK,EAAE,gBAAgB,CAAC;IACxB;;;SAGK;IACL,cAAc,CAAC,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC;IACvD,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uFAAuF;IACvF,MAAM,CAAC,EAAE;QACP,mBAAmB;QACnB,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAC3B,8BAA8B;QAC9B,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QACrC,oBAAoB;QACpB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;KAC7B,CAAC;IACF,4FAA4F;IAC5F,UAAU,CAAC,EAAE;QACX,mBAAmB;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,8BAA8B;QAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,oBAAoB;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,KAAK,CAAC,EAAE,CAC9C,KAAK,CAAC,iBAAiB,CAAC,8BAA8B,CAAC,CAwCxD,CAAC"}
|
|
@@ -23,6 +23,10 @@ export type ProgressCircleBaseProps = ProgressBaseProps & {
|
|
|
23
23
|
* Optional component to override the default content rendered inside the circle.
|
|
24
24
|
*/
|
|
25
25
|
contentNode?: React.ReactNode;
|
|
26
|
+
/**
|
|
27
|
+
* Toggle used to show an indeterminate progress circle.
|
|
28
|
+
*/
|
|
29
|
+
indeterminate?: boolean;
|
|
26
30
|
};
|
|
27
31
|
export type ProgressCircleProps = ProgressCircleBaseProps & {
|
|
28
32
|
style?: React.CSSProperties;
|
|
@@ -65,7 +69,7 @@ export declare const ProgressCircle: React.MemoExoticComponent<
|
|
|
65
69
|
import('@coinbase/cds-common').SharedProps &
|
|
66
70
|
Pick<import('../motion/types').HintMotionBaseProps, 'disableAnimateOnMount'> &
|
|
67
71
|
Pick<import('@coinbase/cds-common').SharedAccessibilityProps, 'accessibilityLabel'> & {
|
|
68
|
-
progress
|
|
72
|
+
progress?: number;
|
|
69
73
|
weight?: import('@coinbase/cds-common').Weight;
|
|
70
74
|
disabled?: boolean;
|
|
71
75
|
color?: ThemeVars.Color;
|
|
@@ -93,6 +97,10 @@ export declare const ProgressCircle: React.MemoExoticComponent<
|
|
|
93
97
|
* Optional component to override the default content rendered inside the circle.
|
|
94
98
|
*/
|
|
95
99
|
contentNode?: React.ReactNode;
|
|
100
|
+
/**
|
|
101
|
+
* Toggle used to show an indeterminate progress circle.
|
|
102
|
+
*/
|
|
103
|
+
indeterminate?: boolean;
|
|
96
104
|
} & {
|
|
97
105
|
style?: React.CSSProperties;
|
|
98
106
|
className?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProgressCircle.d.ts","sourceRoot":"","sources":["../../src/visualizations/ProgressCircle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmC,MAAM,OAAO,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"ProgressCircle.d.ts","sourceRoot":"","sources":["../../src/visualizations/ProgressCircle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmC,MAAM,OAAO,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAYtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAavD,MAAM,MAAM,uBAAuB,GAAG,iBAAiB,GAAG;IACxD;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,uBAAuB,GAAG;IAC1D,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,MAAM,CAAC,EAAE;QACP,mBAAmB;QACnB,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAC3B,kBAAkB;QAClB,GAAG,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAC1B,gCAAgC;QAChC,MAAM,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAC7B,yCAAyC;QACzC,QAAQ,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;KAChC,CAAC;IACF,iFAAiF;IACjF,UAAU,CAAC,EAAE;QACX,mBAAmB;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,kBAAkB;QAClB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,gCAAgC;QAChC,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,yCAAyC;QACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAC3C,uBAAuB,EACvB,UAAU,GAAG,uBAAuB,GAAG,UAAU,CAClD,GAAG;IACF;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC;CACzB,CAAC;AA6EF,eAAO,MAAM,cAAc;;;;;;;;IA5IzB;;OAEG;kBACW,OAAO;IACrB;;;;OAIG;eACQ,OAAO;IAClB;;;;;OAKG;WACI,MAAM;IACb;;OAEG;kBACW,KAAK,CAAC,SAAS;IAC7B;;OAEG;oBACa,OAAO;;YAIf,KAAK,CAAC,aAAa;gBACf,MAAM;IAClB,4EAA4E;aACnE;QACP,mBAAmB;QACnB,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAC3B,kBAAkB;QAClB,GAAG,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAC1B,gCAAgC;QAChC,MAAM,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAC7B,yCAAyC;QACzC,QAAQ,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;KAChC;IACD,iFAAiF;iBACpE;QACX,mBAAmB;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,kBAAkB;QAClB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,gCAAgC;QAChC,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,yCAAyC;QACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;yCAmNF,CAAC"}
|
package/esm/buttons/Button.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const _excluded = ["as", "variant", "loading", "transparent", "block", "compact", "children", "start", "startIcon", "startIconActive", "end", "endIcon", "endIconActive", "flush", "noScaleOnPress", "numberOfLines", "font", "fontFamily", "fontSize", "fontWeight", "lineHeight", "background", "color", "className", "height", "borderColor", "borderWidth", "borderRadius", "accessibilityLabel", "padding", "paddingX", "margin", "minWidth"];
|
|
1
|
+
const _excluded = ["as", "variant", "loading", "progressCircleSize", "transparent", "block", "compact", "children", "start", "startIcon", "startIconActive", "end", "endIcon", "endIconActive", "flush", "noScaleOnPress", "numberOfLines", "font", "fontFamily", "fontSize", "fontWeight", "lineHeight", "background", "color", "className", "height", "borderColor", "borderWidth", "borderRadius", "accessibilityLabel", "padding", "paddingX", "margin", "minWidth"];
|
|
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; }
|
|
@@ -10,13 +10,18 @@ import React, { forwardRef, memo } from 'react';
|
|
|
10
10
|
import { transparentVariants, variants } from '@coinbase/cds-common/tokens/button';
|
|
11
11
|
import { cx } from '../cx';
|
|
12
12
|
import { Icon } from '../icons/Icon';
|
|
13
|
-
import { Spinner } from '../loaders/Spinner';
|
|
14
13
|
import { Pressable } from '../system/Pressable';
|
|
15
14
|
import { Text } from '../typography/Text';
|
|
15
|
+
import { ProgressCircle } from '../visualizations';
|
|
16
16
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
17
17
|
const COMPONENT_STATIC_CLASSNAME = 'cds-Button';
|
|
18
18
|
const DEFAULT_MIN_WIDTH = 100;
|
|
19
|
+
|
|
20
|
+
/** @deprecated Use progressCircleSize instead. This will be removed in a future major release.
|
|
21
|
+
* @deprecationExpectedRemoval v10
|
|
22
|
+
*/
|
|
19
23
|
export const spinnerHeight = 2.5;
|
|
24
|
+
const defaultProgressCircleSize = 24;
|
|
20
25
|
const baseCss = "baseCss-b99zquh";
|
|
21
26
|
const blockCss = "blockCss-b9yox33";
|
|
22
27
|
const spinnerContainerCss = "spinnerContainerCss-s1bhvbb9";
|
|
@@ -29,20 +34,13 @@ const middleNodeCss = "middleNodeCss-m1avpq52";
|
|
|
29
34
|
const flushSpaceCss = "flushSpaceCss-f69rtgb";
|
|
30
35
|
const flushStartCss = "flushStartCss-f1aod6bi";
|
|
31
36
|
const flushEndCss = "flushEndCss-fz9snbo";
|
|
32
|
-
const spinnerStyle = {
|
|
33
|
-
width: '24px',
|
|
34
|
-
height: '24px',
|
|
35
|
-
border: '2px solid',
|
|
36
|
-
borderTopColor: 'var(--color-transparent)',
|
|
37
|
-
borderRightColor: 'var(--color-transparent)',
|
|
38
|
-
borderLeftColor: 'var(--color-transparent)'
|
|
39
|
-
};
|
|
40
37
|
export const buttonDefaultElement = 'button';
|
|
41
38
|
export const Button = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref) => {
|
|
42
39
|
let {
|
|
43
40
|
as,
|
|
44
41
|
variant = 'primary',
|
|
45
42
|
loading,
|
|
43
|
+
progressCircleSize = defaultProgressCircleSize,
|
|
46
44
|
transparent,
|
|
47
45
|
block,
|
|
48
46
|
compact,
|
|
@@ -123,10 +121,12 @@ export const Button = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
123
121
|
className: middleNodeCss,
|
|
124
122
|
children: [loading && /*#__PURE__*/_jsx("span", {
|
|
125
123
|
className: spinnerContainerCss,
|
|
126
|
-
children: /*#__PURE__*/_jsx(
|
|
124
|
+
children: /*#__PURE__*/_jsx(ProgressCircle, {
|
|
125
|
+
indeterminate: true,
|
|
126
|
+
accessibilityLabel: "Loading",
|
|
127
127
|
color: "currentColor",
|
|
128
|
-
size:
|
|
129
|
-
|
|
128
|
+
size: progressCircleSize,
|
|
129
|
+
weight: "thin"
|
|
130
130
|
})
|
|
131
131
|
}), /*#__PURE__*/_jsx(Text, {
|
|
132
132
|
color: "currentColor",
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
@layer cds{.
|
|
2
|
-
.
|
|
3
|
-
.
|
|
4
|
-
.flushEndCss-f10uyuq9{margin-inline-end:calc(var(--space-2) * -1);}}
|
|
1
|
+
@layer cds{.flushSpaceCss-f1po8mo6{min-width:unset;padding-inline-start:var(--space-2);padding-inline-end:var(--space-2);}
|
|
2
|
+
.flushStartCss-fqg7x6g{margin-inline-start:calc(var(--space-2) * -1);}
|
|
3
|
+
.flushEndCss-f18p387c{margin-inline-end:calc(var(--space-2) * -1);}}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const _excluded = ["as", "variant", "transparent", "compact", "background", "color", "borderColor", "borderRadius", "borderWidth", "alignItems", "justifyContent", "height", "width", "className", "name", "iconSize", "active", "flush", "loading", "accessibilityLabel", "accessibilityHint"];
|
|
1
|
+
const _excluded = ["as", "variant", "transparent", "compact", "background", "color", "borderColor", "borderRadius", "borderWidth", "alignItems", "justifyContent", "height", "width", "className", "name", "iconSize", "active", "flush", "loading", "progressCircleSize", "accessibilityLabel", "accessibilityHint"];
|
|
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; }
|
|
@@ -6,21 +6,19 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
|
|
|
6
6
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
7
7
|
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
|
|
8
8
|
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
|
|
9
|
-
import React, { forwardRef, memo
|
|
9
|
+
import React, { forwardRef, memo } from 'react';
|
|
10
10
|
import { transparentVariants, variants } from '@coinbase/cds-common/tokens/button';
|
|
11
11
|
import { cx } from '../cx';
|
|
12
12
|
import { useTheme } from '../hooks/useTheme';
|
|
13
13
|
import { Icon } from '../icons/Icon';
|
|
14
|
-
import { Spinner } from '../loaders/Spinner';
|
|
15
14
|
import { Pressable } from '../system/Pressable';
|
|
16
|
-
import {
|
|
15
|
+
import { ProgressCircle } from '../visualizations/ProgressCircle';
|
|
17
16
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
18
17
|
const COMPONENT_STATIC_CLASSNAME = 'cds-IconButton';
|
|
19
|
-
const baseSpinnerCss = "baseSpinnerCss-b1po8mo6";
|
|
20
18
|
export const iconButtonDefaultElement = 'button';
|
|
21
|
-
const flushSpaceCss = "flushSpaceCss-
|
|
22
|
-
const flushStartCss = "flushStartCss-
|
|
23
|
-
const flushEndCss = "flushEndCss-
|
|
19
|
+
const flushSpaceCss = "flushSpaceCss-f1po8mo6";
|
|
20
|
+
const flushStartCss = "flushStartCss-fqg7x6g";
|
|
21
|
+
const flushEndCss = "flushEndCss-f18p387c";
|
|
24
22
|
export const IconButton = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref) => {
|
|
25
23
|
let {
|
|
26
24
|
as,
|
|
@@ -43,6 +41,7 @@ export const IconButton = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref)
|
|
|
43
41
|
active,
|
|
44
42
|
flush,
|
|
45
43
|
loading,
|
|
44
|
+
progressCircleSize,
|
|
46
45
|
accessibilityLabel,
|
|
47
46
|
accessibilityHint
|
|
48
47
|
} = _ref,
|
|
@@ -50,10 +49,6 @@ export const IconButton = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref)
|
|
|
50
49
|
const Component = as !== null && as !== void 0 ? as : iconButtonDefaultElement;
|
|
51
50
|
const theme = useTheme();
|
|
52
51
|
const iconSizeValue = theme.iconSize[iconSize];
|
|
53
|
-
const spinnerSizeStyles = useMemo(() => ({
|
|
54
|
-
width: iconSizeValue,
|
|
55
|
-
height: iconSizeValue
|
|
56
|
-
}), [iconSizeValue]);
|
|
57
52
|
const variantMap = transparent ? transparentVariants : variants;
|
|
58
53
|
const variantStyle = variantMap[variant];
|
|
59
54
|
const colorValue = color !== null && color !== void 0 ? color : variantStyle.color;
|
|
@@ -81,12 +76,13 @@ export const IconButton = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref)
|
|
|
81
76
|
transparentWhileInactive: transparent,
|
|
82
77
|
width: width
|
|
83
78
|
}, props), {}, {
|
|
84
|
-
children: loading ? /*#__PURE__*/_jsx(
|
|
85
|
-
|
|
79
|
+
children: loading ? /*#__PURE__*/_jsx(ProgressCircle, {
|
|
80
|
+
indeterminate: true,
|
|
81
|
+
accessibilityLabel: "Loading",
|
|
86
82
|
color: "currentColor",
|
|
87
|
-
size:
|
|
88
|
-
|
|
89
|
-
|
|
83
|
+
size: progressCircleSize !== null && progressCircleSize !== void 0 ? progressCircleSize : iconSizeValue,
|
|
84
|
+
testID: props.testID ? "".concat(props.testID, "-progress-circle") : undefined,
|
|
85
|
+
weight: "thin"
|
|
90
86
|
}) : /*#__PURE__*/_jsx(Icon, {
|
|
91
87
|
active: active,
|
|
92
88
|
color: "currentColor",
|
package/esm/loaders/Spinner.js
CHANGED
|
@@ -13,6 +13,11 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
13
13
|
const COMPONENT_STATIC_CLASSNAME = 'cds-Spinner';
|
|
14
14
|
const baseCss = "baseCss-bggfp25";
|
|
15
15
|
const spinnerStatusCss = "spinnerStatusCss-s1pli158";
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* @deprecated Use indeterminate ProgressCircle component instead. This will be removed in a future major release.
|
|
19
|
+
* @deprecationExpectedRemoval v10
|
|
20
|
+
*/
|
|
16
21
|
export const Spinner = /*#__PURE__*/memo(_ref => {
|
|
17
22
|
let {
|
|
18
23
|
color = 'fgMuted',
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { memo } from 'react';
|
|
2
2
|
import { ProgressTextLabel } from './ProgressTextLabel';
|
|
3
3
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
4
4
|
export const DefaultProgressCircleContent = /*#__PURE__*/memo(_ref => {
|
|
5
5
|
let {
|
|
6
|
-
progress,
|
|
6
|
+
progress = 0,
|
|
7
7
|
disableAnimateOnMount,
|
|
8
8
|
disabled,
|
|
9
9
|
color = 'fgMuted'
|
|
@@ -5,7 +5,7 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
|
|
|
5
5
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
6
6
|
import React, { forwardRef, memo } from 'react';
|
|
7
7
|
import { animateProgressBaseSpec } from '@coinbase/cds-common/animation/progress';
|
|
8
|
-
import {
|
|
8
|
+
import { getProgressSize } from '@coinbase/cds-common/visualizations/getProgressSize';
|
|
9
9
|
import { m as motion } from 'framer-motion';
|
|
10
10
|
import { cx } from '../cx';
|
|
11
11
|
import { Box, HStack } from '../layout';
|
|
@@ -17,7 +17,7 @@ const boxCss = "boxCss-bnvjmt8";
|
|
|
17
17
|
export const ProgressBar = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, forwardedRef) => {
|
|
18
18
|
let {
|
|
19
19
|
weight = 'normal',
|
|
20
|
-
progress,
|
|
20
|
+
progress = 0,
|
|
21
21
|
color = 'bgPrimary',
|
|
22
22
|
disabled,
|
|
23
23
|
disableAnimateOnMount,
|
|
@@ -30,7 +30,7 @@ export const ProgressBar = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, forw
|
|
|
30
30
|
onAnimationEnd,
|
|
31
31
|
onAnimationStart
|
|
32
32
|
} = _ref;
|
|
33
|
-
const height =
|
|
33
|
+
const height = getProgressSize(weight);
|
|
34
34
|
|
|
35
35
|
// start position of the progress bar on mount
|
|
36
36
|
const initialTranslateX = isRtl() ? 100 : -100;
|
|
@@ -3,31 +3,30 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
3
3
|
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; }
|
|
4
4
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
5
5
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
6
|
-
import React, { memo, useCallback, useRef, useState } from 'react';
|
|
6
|
+
import React, { memo, useCallback, useEffect, useRef, useState } from 'react';
|
|
7
7
|
import { animateProgressBaseSpec } from '@coinbase/cds-common/animation/progress';
|
|
8
|
-
import { usePreviousValues } from '@coinbase/cds-common/hooks/usePreviousValues';
|
|
9
8
|
import { isStorybook } from '@coinbase/cds-utils';
|
|
10
|
-
import { m as motion
|
|
9
|
+
import { m as motion } from 'framer-motion';
|
|
11
10
|
import { cx } from '../cx';
|
|
12
11
|
import { useDimensions } from '../hooks/useDimensions';
|
|
13
|
-
import { useIsoEffect } from '../hooks/useIsoEffect';
|
|
14
12
|
import { Box } from '../layout/Box';
|
|
15
13
|
import { VStack } from '../layout/VStack';
|
|
16
|
-
import {
|
|
14
|
+
import { useMotionProps } from '../motion/useMotionProps';
|
|
17
15
|
import { isRtl } from '../utils/isRtl';
|
|
18
16
|
import { getProgressBarLabelParts } from './getProgressBarLabelParts';
|
|
17
|
+
const MotionBox = motion(Box);
|
|
19
18
|
import { ProgressTextLabel } from './ProgressTextLabel';
|
|
20
19
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
21
20
|
const floatingTextContainerCss = "floatingTextContainerCss-f11geujd";
|
|
22
21
|
const motionStyle = {
|
|
23
22
|
originX: isRtl() ? 'left' : 'right'
|
|
24
23
|
};
|
|
24
|
+
const getEndTranslateX = (containerWidth, textContainerWidth, progress) => isRtl() ? Math.min(containerWidth - textContainerWidth, containerWidth - containerWidth * progress) : Math.max(0, containerWidth * progress - textContainerWidth);
|
|
25
25
|
const ProgressBarFloatLabel = /*#__PURE__*/memo(_ref => {
|
|
26
|
-
var _getPreviousPercent;
|
|
27
26
|
let {
|
|
28
27
|
label,
|
|
29
28
|
disabled,
|
|
30
|
-
progress,
|
|
29
|
+
progress = 0,
|
|
31
30
|
disableAnimateOnMount,
|
|
32
31
|
labelPlacement,
|
|
33
32
|
styles,
|
|
@@ -35,16 +34,7 @@ const ProgressBarFloatLabel = /*#__PURE__*/memo(_ref => {
|
|
|
35
34
|
} = _ref;
|
|
36
35
|
const containerRef = useRef(null);
|
|
37
36
|
const textContainerRef = useRef(null);
|
|
38
|
-
const
|
|
39
|
-
getPreviousValue: getPreviousPercent,
|
|
40
|
-
addPreviousValue: addPreviousPercent
|
|
41
|
-
} = usePreviousValues([disableAnimateOnMount ? progress : 0]);
|
|
42
|
-
const animationControls = useAnimation();
|
|
43
|
-
const [hasAnimationMounted, setHasAnimationMounted] = useState(!disableAnimateOnMount);
|
|
44
|
-
addPreviousPercent(progress);
|
|
45
|
-
const previousPercent = (_getPreviousPercent = getPreviousPercent()) !== null && _getPreviousPercent !== void 0 ? _getPreviousPercent : 0;
|
|
46
|
-
|
|
47
|
-
// the animation uses a pixel translate which is outdated on a window resize, we have to account for this
|
|
37
|
+
const [targetX, setTargetX] = useState(null);
|
|
48
38
|
const {
|
|
49
39
|
observe,
|
|
50
40
|
width: cWidth,
|
|
@@ -54,29 +44,29 @@ const ProgressBarFloatLabel = /*#__PURE__*/memo(_ref => {
|
|
|
54
44
|
value: labelNum,
|
|
55
45
|
render: renderLabel
|
|
56
46
|
} = getProgressBarLabelParts(label);
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
void animationControls.set({
|
|
65
|
-
x: endLeftTranslate
|
|
66
|
-
});
|
|
67
|
-
setHasAnimationMounted(true);
|
|
68
|
-
} else {
|
|
69
|
-
void animationControls.start({
|
|
70
|
-
x: [startLeftTranslate, endLeftTranslate],
|
|
71
|
-
transition: convertTransition(animateProgressBaseSpec)
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}, [progress, cWidth, cHeight, previousPercent, disableAnimateOnMount]);
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
var _containerRef$current, _containerRef$current2, _textContainerRef$cur, _textContainerRef$cur2;
|
|
49
|
+
if (cWidth <= 0 || cHeight <= 0) return;
|
|
50
|
+
const containerWidth = (_containerRef$current = (_containerRef$current2 = containerRef.current) === null || _containerRef$current2 === void 0 ? void 0 : _containerRef$current2.offsetWidth) !== null && _containerRef$current !== void 0 ? _containerRef$current : cWidth;
|
|
51
|
+
const textContainerWidth = (_textContainerRef$cur = (_textContainerRef$cur2 = textContainerRef.current) === null || _textContainerRef$cur2 === void 0 ? void 0 : _textContainerRef$cur2.offsetWidth) !== null && _textContainerRef$cur !== void 0 ? _textContainerRef$cur : 0;
|
|
52
|
+
setTargetX(getEndTranslateX(containerWidth, textContainerWidth, progress));
|
|
53
|
+
}, [progress, cWidth, cHeight]);
|
|
76
54
|
const setupContainerRef = useCallback(ref => {
|
|
77
55
|
containerRef.current = ref;
|
|
78
56
|
observe(ref);
|
|
79
57
|
}, [observe]);
|
|
58
|
+
const motionProps = useMotionProps({
|
|
59
|
+
style: motionStyle,
|
|
60
|
+
animate: {
|
|
61
|
+
x: targetX !== null && targetX !== void 0 ? targetX : 0,
|
|
62
|
+
opacity: targetX !== null ? 1 : 0
|
|
63
|
+
},
|
|
64
|
+
initial: !progress || disableAnimateOnMount ? false : {
|
|
65
|
+
x: 0,
|
|
66
|
+
opacity: 0
|
|
67
|
+
},
|
|
68
|
+
transition: animateProgressBaseSpec
|
|
69
|
+
});
|
|
80
70
|
return /*#__PURE__*/_jsx(Box, {
|
|
81
71
|
ref: setupContainerRef,
|
|
82
72
|
alignItems: "center",
|
|
@@ -86,14 +76,14 @@ const ProgressBarFloatLabel = /*#__PURE__*/memo(_ref => {
|
|
|
86
76
|
style: styles === null || styles === void 0 ? void 0 : styles.labelContainer,
|
|
87
77
|
testID: "cds-progress-label-container",
|
|
88
78
|
width: "100%",
|
|
89
|
-
children: /*#__PURE__*/_jsx(
|
|
79
|
+
children: /*#__PURE__*/_jsx(MotionBox, {
|
|
90
80
|
ref: textContainerRef,
|
|
91
|
-
animate:
|
|
81
|
+
animate: motionProps.animate,
|
|
92
82
|
className: floatingTextContainerCss,
|
|
93
83
|
"data-testid": "cds-progress-bar-float-label",
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
84
|
+
initial: motionProps.initial,
|
|
85
|
+
style: motionProps.style,
|
|
86
|
+
transition: motionProps.transition,
|
|
97
87
|
children: /*#__PURE__*/_jsx(ProgressTextLabel, {
|
|
98
88
|
className: classNames === null || classNames === void 0 ? void 0 : classNames.label,
|
|
99
89
|
color: "fgMuted",
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
@layer cds{.svgCss-sq4tjn4{display:block;max-width:100
|
|
1
|
+
@layer cds{.svgCss-sq4tjn4{display:block;max-width:100%;-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}
|
|
2
|
+
.indeterminateProgressCircleCss-iqcdca3{-webkit-animation:spin-indeterminateProgressCircleCss-iqcdca3 1000ms linear infinite;animation:spin-indeterminateProgressCircleCss-iqcdca3 1000ms linear infinite;}@-webkit-keyframes spin-indeterminateProgressCircleCss-iqcdca3{0%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg);}100%{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);}}@keyframes spin-indeterminateProgressCircleCss-iqcdca3{0%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg);}100%{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);}}}
|
|
@@ -5,9 +5,8 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
|
|
|
5
5
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
6
6
|
import React, { forwardRef, memo, useRef } from 'react';
|
|
7
7
|
import { animateProgressBaseSpec } from '@coinbase/cds-common/animation/progress';
|
|
8
|
-
import { getCircumference, getRadius } from '@coinbase/cds-common/utils/circle';
|
|
9
8
|
import { getProgressCircleParams } from '@coinbase/cds-common/visualizations/getProgressCircleParams';
|
|
10
|
-
import {
|
|
9
|
+
import { getProgressSize } from '@coinbase/cds-common/visualizations/getProgressSize';
|
|
11
10
|
import { m as motion } from 'framer-motion';
|
|
12
11
|
import { cx } from '../cx';
|
|
13
12
|
import { Box } from '../layout/Box';
|
|
@@ -16,12 +15,13 @@ import { DefaultProgressCircleContent } from './DefaultProgressCircleContent';
|
|
|
16
15
|
import { VisualizationContainer } from './VisualizationContainer';
|
|
17
16
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
18
17
|
const svgCss = "svgCss-sq4tjn4";
|
|
18
|
+
const indeterminateProgressCircleCss = "indeterminateProgressCircleCss-iqcdca3";
|
|
19
19
|
const ProgressCircleInner = /*#__PURE__*/memo(_ref => {
|
|
20
20
|
let {
|
|
21
|
+
strokeWidth,
|
|
21
22
|
size,
|
|
22
|
-
progress,
|
|
23
|
+
progress = 0,
|
|
23
24
|
color,
|
|
24
|
-
weight,
|
|
25
25
|
visuallyDisabled,
|
|
26
26
|
style,
|
|
27
27
|
className,
|
|
@@ -29,10 +29,8 @@ const ProgressCircleInner = /*#__PURE__*/memo(_ref => {
|
|
|
29
29
|
onAnimationStart,
|
|
30
30
|
disableAnimateOnMount
|
|
31
31
|
} = _ref;
|
|
32
|
-
const strokeWidth = useProgressSize(weight);
|
|
33
32
|
const circleRef = useRef(null);
|
|
34
|
-
const
|
|
35
|
-
const progressOffset = (1 - progress) * circumference;
|
|
33
|
+
const progressOffset = 1 - progress;
|
|
36
34
|
const motionProps = useMotionProps({
|
|
37
35
|
style: _objectSpread(_objectSpread({}, style), {}, {
|
|
38
36
|
rotate: -90
|
|
@@ -42,13 +40,14 @@ const ProgressCircleInner = /*#__PURE__*/memo(_ref => {
|
|
|
42
40
|
},
|
|
43
41
|
transition: animateProgressBaseSpec,
|
|
44
42
|
initial: {
|
|
45
|
-
strokeDashoffset: disableAnimateOnMount ? progressOffset :
|
|
43
|
+
strokeDashoffset: disableAnimateOnMount ? progressOffset : 1
|
|
46
44
|
}
|
|
47
45
|
});
|
|
48
46
|
return /*#__PURE__*/_jsx(motion.circle, _objectSpread(_objectSpread(_objectSpread({
|
|
49
47
|
ref: circleRef,
|
|
50
48
|
"data-testid": "cds-progress-circle-inner",
|
|
51
|
-
|
|
49
|
+
pathLength: 1,
|
|
50
|
+
strokeDasharray: 1,
|
|
52
51
|
strokeLinecap: "round"
|
|
53
52
|
}, motionProps), getProgressCircleParams({
|
|
54
53
|
size,
|
|
@@ -62,16 +61,17 @@ const ProgressCircleInner = /*#__PURE__*/memo(_ref => {
|
|
|
62
61
|
});
|
|
63
62
|
export const ProgressCircle = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref2, forwardedRef) => {
|
|
64
63
|
let {
|
|
64
|
+
indeterminate,
|
|
65
65
|
weight = 'normal',
|
|
66
|
-
progress,
|
|
67
|
-
color = 'bgPrimary',
|
|
66
|
+
progress = indeterminate ? 0.75 : 0,
|
|
67
|
+
color = indeterminate ? 'fgMuted' : 'bgPrimary',
|
|
68
68
|
disabled,
|
|
69
|
-
disableAnimateOnMount,
|
|
69
|
+
disableAnimateOnMount = indeterminate ? true : false,
|
|
70
70
|
testID,
|
|
71
71
|
hideContent,
|
|
72
72
|
hideText,
|
|
73
73
|
size,
|
|
74
|
-
accessibilityLabel,
|
|
74
|
+
accessibilityLabel = indeterminate ? 'Loading' : undefined,
|
|
75
75
|
contentNode,
|
|
76
76
|
style,
|
|
77
77
|
styles,
|
|
@@ -80,8 +80,8 @@ export const ProgressCircle = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref2,
|
|
|
80
80
|
onAnimationEnd,
|
|
81
81
|
onAnimationStart
|
|
82
82
|
} = _ref2;
|
|
83
|
-
const strokeWidth = useProgressSize(weight);
|
|
84
83
|
const visSize = size !== null && size !== void 0 ? size : '100%';
|
|
84
|
+
const strokeWidth = getProgressSize(weight);
|
|
85
85
|
return /*#__PURE__*/_jsx(VisualizationContainer, {
|
|
86
86
|
height: visSize,
|
|
87
87
|
width: visSize,
|
|
@@ -91,75 +91,72 @@ export const ProgressCircle = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref2,
|
|
|
91
91
|
height,
|
|
92
92
|
circleSize
|
|
93
93
|
} = _ref3;
|
|
94
|
-
return /*#__PURE__*/
|
|
94
|
+
return /*#__PURE__*/_jsxs(Box, _objectSpread(_objectSpread({
|
|
95
95
|
ref: forwardedRef,
|
|
96
96
|
accessibilityLabel: accessibilityLabel,
|
|
97
|
-
alignItems: "center"
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
97
|
+
alignItems: "center"
|
|
98
|
+
}, indeterminate ? {} : {
|
|
99
|
+
'aria-valuemax': 100,
|
|
100
|
+
'aria-valuemin': 0,
|
|
101
|
+
'aria-valuenow': Math.round(progress * 100)
|
|
102
|
+
}), {}, {
|
|
101
103
|
className: cx(className, classNames === null || classNames === void 0 ? void 0 : classNames.root),
|
|
102
104
|
height: height,
|
|
103
105
|
justifyContent: "center",
|
|
106
|
+
position: "relative",
|
|
104
107
|
role: "progressbar",
|
|
105
108
|
style: _objectSpread(_objectSpread({}, style), styles === null || styles === void 0 ? void 0 : styles.root),
|
|
106
109
|
testID: testID,
|
|
107
110
|
title: accessibilityLabel,
|
|
108
111
|
width: width,
|
|
109
|
-
children: /*#__PURE__*/_jsxs(
|
|
110
|
-
|
|
111
|
-
|
|
112
|
+
children: [/*#__PURE__*/_jsxs("svg", {
|
|
113
|
+
"aria-hidden": true,
|
|
114
|
+
className: cx(svgCss, classNames === null || classNames === void 0 ? void 0 : classNames.svg, indeterminate && indeterminateProgressCircleCss),
|
|
112
115
|
height: circleSize,
|
|
113
|
-
|
|
116
|
+
style: styles === null || styles === void 0 ? void 0 : styles.svg,
|
|
114
117
|
width: circleSize,
|
|
115
|
-
children: [/*#__PURE__*/
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
},
|
|
118
|
+
children: [/*#__PURE__*/_jsx("circle", _objectSpread(_objectSpread({}, getProgressCircleParams({
|
|
119
|
+
size: circleSize,
|
|
120
|
+
strokeWidth,
|
|
121
|
+
stroke: 'var(--color-bgLine)'
|
|
122
|
+
})), {}, {
|
|
123
|
+
className: classNames === null || classNames === void 0 ? void 0 : classNames.circle,
|
|
124
|
+
style: styles === null || styles === void 0 ? void 0 : styles.circle
|
|
125
|
+
})), /*#__PURE__*/_jsx(ProgressCircleInner, {
|
|
126
|
+
className: classNames === null || classNames === void 0 ? void 0 : classNames.progress,
|
|
127
|
+
color: color,
|
|
128
|
+
disableAnimateOnMount: disableAnimateOnMount,
|
|
129
|
+
indeterminate: indeterminate,
|
|
130
|
+
onAnimationEnd: onAnimationEnd,
|
|
131
|
+
onAnimationStart: onAnimationStart,
|
|
132
|
+
progress: progress,
|
|
133
|
+
size: circleSize,
|
|
134
|
+
strokeWidth: strokeWidth,
|
|
135
|
+
style: styles === null || styles === void 0 ? void 0 : styles.progress,
|
|
136
|
+
visuallyDisabled: disabled
|
|
137
|
+
})]
|
|
138
|
+
}, circleSize), !hideText && !hideContent && /*#__PURE__*/_jsx(Box, {
|
|
139
|
+
height: "100%",
|
|
140
|
+
position: "absolute",
|
|
141
|
+
style: {
|
|
142
|
+
padding: strokeWidth
|
|
143
|
+
},
|
|
144
|
+
width: "100%",
|
|
145
|
+
children: /*#__PURE__*/_jsx(Box, {
|
|
146
|
+
alignItems: "center",
|
|
147
|
+
borderRadius: 1000,
|
|
141
148
|
height: "100%",
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
padding: strokeWidth
|
|
145
|
-
},
|
|
149
|
+
justifyContent: "center",
|
|
150
|
+
overflow: "clip",
|
|
146
151
|
width: "100%",
|
|
147
|
-
children: /*#__PURE__*/_jsx(
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
justifyContent: "center",
|
|
152
|
-
overflow: "clip",
|
|
153
|
-
width: "100%",
|
|
154
|
-
children: contentNode !== null && contentNode !== void 0 ? contentNode : /*#__PURE__*/_jsx(DefaultProgressCircleContent, {
|
|
155
|
-
disableAnimateOnMount: disableAnimateOnMount,
|
|
156
|
-
disabled: disabled,
|
|
157
|
-
progress: progress
|
|
158
|
-
})
|
|
152
|
+
children: contentNode !== null && contentNode !== void 0 ? contentNode : !indeterminate && /*#__PURE__*/_jsx(DefaultProgressCircleContent, {
|
|
153
|
+
disableAnimateOnMount: disableAnimateOnMount,
|
|
154
|
+
disabled: disabled,
|
|
155
|
+
progress: progress
|
|
159
156
|
})
|
|
160
|
-
})
|
|
161
|
-
})
|
|
162
|
-
});
|
|
157
|
+
})
|
|
158
|
+
})]
|
|
159
|
+
}));
|
|
163
160
|
}
|
|
164
161
|
});
|
|
165
162
|
}));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@coinbase/cds-web",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.60.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.
|
|
210
|
+
"@coinbase/cds-common": "^8.60.0",
|
|
211
211
|
"@coinbase/cds-icons": "^5.13.0",
|
|
212
212
|
"@coinbase/cds-illustrations": "^4.36.0",
|
|
213
213
|
"@coinbase/cds-lottie-files": "^3.3.4",
|