@coinbase/cds-mcp-server 8.34.2 → 8.35.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 +8 -0
- package/mcp-docs/mobile/components/ProgressBar.txt +23 -9
- package/mcp-docs/mobile/components/ProgressBarWithFixedLabels.txt +61 -6
- package/mcp-docs/mobile/components/ProgressBarWithFloatLabel.txt +56 -6
- package/mcp-docs/mobile/components/ProgressCircle.txt +21 -3
- package/mcp-docs/mobile/components/RemoteImageGroup.txt +15 -0
- package/mcp-docs/mobile/components/Scrubber.txt +1 -1
- package/mcp-docs/mobile/components/TextInput.txt +4 -3
- package/mcp-docs/web/components/ProgressBar.txt +20 -2
- package/mcp-docs/web/components/ProgressBarWithFixedLabels.txt +72 -1
- package/mcp-docs/web/components/ProgressBarWithFloatLabel.txt +72 -1
- package/mcp-docs/web/components/ProgressCircle.txt +33 -11
- package/mcp-docs/web/components/RemoteImageGroup.txt +15 -0
- package/mcp-docs/web/components/TextInput.txt +4 -3
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,14 @@ All notable changes to this project will be documented in this file.
|
|
|
8
8
|
|
|
9
9
|
<!-- template-start -->
|
|
10
10
|
|
|
11
|
+
## 8.35.1 ((1/5/2026, 03:28 PM PST))
|
|
12
|
+
|
|
13
|
+
This is an artificial version bump with no new change.
|
|
14
|
+
|
|
15
|
+
## 8.35.0 ((1/5/2026, 10:03 AM PST))
|
|
16
|
+
|
|
17
|
+
This is an artificial version bump with no new change.
|
|
18
|
+
|
|
11
19
|
## 8.34.2 ((1/2/2026, 09:41 AM PST))
|
|
12
20
|
|
|
13
21
|
This is an artificial version bump with no new change.
|
|
@@ -10,7 +10,7 @@ import { ProgressBar } from '@coinbase/cds-mobile/visualizations/ProgressBar'
|
|
|
10
10
|
|
|
11
11
|
## Examples
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
#### Default
|
|
14
14
|
|
|
15
15
|
```tsx
|
|
16
16
|
<VStack gap={2}>
|
|
@@ -20,7 +20,7 @@ import { ProgressBar } from '@coinbase/cds-mobile/visualizations/ProgressBar'
|
|
|
20
20
|
</VStack>
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
#### Weights
|
|
24
24
|
|
|
25
25
|
```tsx
|
|
26
26
|
<VStack gap={2}>
|
|
@@ -31,7 +31,7 @@ import { ProgressBar } from '@coinbase/cds-mobile/visualizations/ProgressBar'
|
|
|
31
31
|
</VStack>
|
|
32
32
|
```
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
#### Disabled
|
|
35
35
|
|
|
36
36
|
```tsx
|
|
37
37
|
<VStack gap={2}>
|
|
@@ -41,7 +41,7 @@ import { ProgressBar } from '@coinbase/cds-mobile/visualizations/ProgressBar'
|
|
|
41
41
|
</VStack>
|
|
42
42
|
```
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
#### Colors
|
|
45
45
|
|
|
46
46
|
```tsx
|
|
47
47
|
<VStack gap={2}>
|
|
@@ -54,11 +54,11 @@ import { ProgressBar } from '@coinbase/cds-mobile/visualizations/ProgressBar'
|
|
|
54
54
|
</VStack>
|
|
55
55
|
```
|
|
56
56
|
|
|
57
|
-
|
|
57
|
+
#### Custom Styles
|
|
58
58
|
|
|
59
59
|
You can customize the appearance of the progress bar using the `styles` prop. The `root` style controls the container, and `progress` controls the fill bar.
|
|
60
60
|
|
|
61
|
-
```tsx
|
|
61
|
+
```tsx
|
|
62
62
|
<ProgressContainerWithButtons>
|
|
63
63
|
{({ calculateProgress }) => (
|
|
64
64
|
<VStack gap={2}>
|
|
@@ -80,7 +80,21 @@ You can customize the appearance of the progress bar using the `styles` prop. Th
|
|
|
80
80
|
</ProgressContainerWithButtons>
|
|
81
81
|
```
|
|
82
82
|
|
|
83
|
-
### Animation
|
|
83
|
+
### Animation
|
|
84
|
+
|
|
85
|
+
By default, ProgressBar animates progress changes. Use `disableAnimateOnMount` to skip the initial animation while still animating subsequent changes.
|
|
86
|
+
|
|
87
|
+
```tsx
|
|
88
|
+
<VStack gap={2}>
|
|
89
|
+
<Text variant="label2">Normal animation</Text>
|
|
90
|
+
<ProgressBar progress={0.5} />
|
|
91
|
+
|
|
92
|
+
<Text variant="label2">Disable animation on mount</Text>
|
|
93
|
+
<ProgressBar disableAnimateOnMount progress={0.5} />
|
|
94
|
+
</VStack>
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
#### Callbacks
|
|
84
98
|
|
|
85
99
|
You can use the `onAnimationStart` and `onAnimationEnd` callbacks to track the progress of the animation.
|
|
86
100
|
|
|
@@ -102,7 +116,7 @@ function Example() {
|
|
|
102
116
|
<ProgressBar
|
|
103
117
|
onAnimationEnd={handleAnimationEnd}
|
|
104
118
|
onAnimationStart={handleAnimationStart}
|
|
105
|
-
progress={
|
|
119
|
+
progress={0.2}
|
|
106
120
|
/>
|
|
107
121
|
</VStack>
|
|
108
122
|
);
|
|
@@ -116,7 +130,7 @@ function Example() {
|
|
|
116
130
|
| `progress` | `number` | Yes | `-` | Number between 0-1 representing the progress percentage |
|
|
117
131
|
| `color` | `currentColor \| fg \| fgMuted \| fgInverse \| fgPrimary \| fgWarning \| fgPositive \| fgNegative \| bg \| bgAlternate \| bgInverse \| bgOverlay \| bgElevation1 \| bgElevation2 \| bgPrimary \| bgPrimaryWash \| bgSecondary \| bgTertiary \| bgSecondaryWash \| bgNegative \| bgNegativeWash \| bgPositive \| bgPositiveWash \| bgWarning \| bgWarningWash \| bgLine \| bgLineHeavy \| bgLineInverse \| bgLinePrimary \| bgLinePrimarySubtle \| accentSubtleRed \| accentBoldRed \| accentSubtleGreen \| accentBoldGreen \| accentSubtleBlue \| accentBoldBlue \| accentSubtlePurple \| accentBoldPurple \| accentSubtleYellow \| accentBoldYellow \| accentSubtleGray \| accentBoldGray \| transparent` | No | `primary` | Custom progress color. |
|
|
118
132
|
| `disableAnimateOnMount` | `boolean` | No | `false` | Disable animation on component mount |
|
|
119
|
-
| `disabled` | `boolean` | No |
|
|
133
|
+
| `disabled` | `boolean` | No | `-` | Toggle used to show a disabled progress visualization |
|
|
120
134
|
| `key` | `Key \| null` | No | `-` | - |
|
|
121
135
|
| `onAnimationEnd` | `(() => void)` | No | `-` | Callback fired when the progress animation ends. |
|
|
122
136
|
| `onAnimationStart` | `(() => void)` | No | `-` | Callback fired when the progress animation starts. |
|
|
@@ -12,7 +12,7 @@ import { ProgressBarWithFixedLabels } from '@coinbase/cds-mobile/visualizations/
|
|
|
12
12
|
|
|
13
13
|
### Label Below
|
|
14
14
|
|
|
15
|
-
```jsx
|
|
15
|
+
```jsx
|
|
16
16
|
<VStack gap={2}>
|
|
17
17
|
<ProgressBarWithFixedLabels startLabel={0} endLabel={20} labelPlacement="below">
|
|
18
18
|
<ProgressBar progress={0.2} />
|
|
@@ -25,7 +25,7 @@ import { ProgressBarWithFixedLabels } from '@coinbase/cds-mobile/visualizations/
|
|
|
25
25
|
|
|
26
26
|
### Label Beside
|
|
27
27
|
|
|
28
|
-
```jsx
|
|
28
|
+
```jsx
|
|
29
29
|
<VStack gap={2}>
|
|
30
30
|
<ProgressBarWithFixedLabels startLabel={0} endLabel={20} labelPlacement="beside">
|
|
31
31
|
<ProgressBar progress={0.2} />
|
|
@@ -38,7 +38,7 @@ import { ProgressBarWithFixedLabels } from '@coinbase/cds-mobile/visualizations/
|
|
|
38
38
|
|
|
39
39
|
### Disabled
|
|
40
40
|
|
|
41
|
-
```jsx
|
|
41
|
+
```jsx
|
|
42
42
|
<VStack gap={2}>
|
|
43
43
|
<ProgressBarWithFixedLabels startLabel={0} endLabel={20} disabled labelPlacement="beside">
|
|
44
44
|
<ProgressBar disabled progress={0.2} />
|
|
@@ -51,7 +51,7 @@ import { ProgressBarWithFixedLabels } from '@coinbase/cds-mobile/visualizations/
|
|
|
51
51
|
|
|
52
52
|
### Custom Labels
|
|
53
53
|
|
|
54
|
-
```jsx
|
|
54
|
+
```jsx
|
|
55
55
|
function Example() {
|
|
56
56
|
const renderStartLabelNumStr = useCallback((num) => {
|
|
57
57
|
return `$${num.toLocaleString()}`;
|
|
@@ -119,7 +119,7 @@ function Example() {
|
|
|
119
119
|
|
|
120
120
|
You can customize the appearance of the progress bar and labels using the `styles` prop.
|
|
121
121
|
|
|
122
|
-
```tsx
|
|
122
|
+
```tsx
|
|
123
123
|
<ProgressContainerWithButtons>
|
|
124
124
|
{({ calculateProgress }) => (
|
|
125
125
|
<VStack gap={2}>
|
|
@@ -145,11 +145,66 @@ You can customize the appearance of the progress bar and labels using the `style
|
|
|
145
145
|
</ProgressContainerWithButtons>
|
|
146
146
|
```
|
|
147
147
|
|
|
148
|
+
### Animation
|
|
149
|
+
|
|
150
|
+
By default, ProgressBar animates progress changes. Use `disableAnimateOnMount` to skip the initial animation while still animating subsequent changes.
|
|
151
|
+
|
|
152
|
+
```tsx
|
|
153
|
+
<VStack gap={2}>
|
|
154
|
+
<Text variant="label2">Normal animation</Text>
|
|
155
|
+
<ProgressBarWithFixedLabels startLabel={0} endLabel={50} labelPlacement="above">
|
|
156
|
+
<ProgressBar progress={0.5} />
|
|
157
|
+
</ProgressBarWithFixedLabels>
|
|
158
|
+
|
|
159
|
+
<Text variant="label2">Disable animation on mount</Text>
|
|
160
|
+
<ProgressBarWithFixedLabels
|
|
161
|
+
disableAnimateOnMount
|
|
162
|
+
startLabel={0}
|
|
163
|
+
endLabel={50}
|
|
164
|
+
labelPlacement="above"
|
|
165
|
+
>
|
|
166
|
+
<ProgressBar disableAnimateOnMount progress={0.5} />
|
|
167
|
+
</ProgressBarWithFixedLabels>
|
|
168
|
+
</VStack>
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
#### Callbacks
|
|
172
|
+
|
|
173
|
+
You can use the `onAnimationStart` and `onAnimationEnd` callbacks to track the progress of the animation.
|
|
174
|
+
|
|
175
|
+
```jsx
|
|
176
|
+
function Example() {
|
|
177
|
+
const [animationStatus, setAnimationStatus] = React.useState('Ready');
|
|
178
|
+
|
|
179
|
+
const handleAnimationStart = useCallback(() => {
|
|
180
|
+
setAnimationStatus('Animating...');
|
|
181
|
+
}, []);
|
|
182
|
+
|
|
183
|
+
const handleAnimationEnd = useCallback(() => {
|
|
184
|
+
setAnimationStatus('Animation Ended');
|
|
185
|
+
}, []);
|
|
186
|
+
|
|
187
|
+
return (
|
|
188
|
+
<VStack gap={2}>
|
|
189
|
+
<Text>Animation Status: {animationStatus}</Text>
|
|
190
|
+
<ProgressBarWithFixedLabels startLabel={0} endLabel={20} labelPlacement="above">
|
|
191
|
+
<ProgressBar
|
|
192
|
+
onAnimationEnd={handleAnimationEnd}
|
|
193
|
+
onAnimationStart={handleAnimationStart}
|
|
194
|
+
progress={0.2}
|
|
195
|
+
/>
|
|
196
|
+
</ProgressBarWithFixedLabels>
|
|
197
|
+
</VStack>
|
|
198
|
+
);
|
|
199
|
+
}
|
|
200
|
+
```
|
|
201
|
+
|
|
148
202
|
## Props
|
|
149
203
|
|
|
150
204
|
| Prop | Type | Required | Default | Description |
|
|
151
205
|
| --- | --- | --- | --- | --- |
|
|
152
|
-
| `
|
|
206
|
+
| `disableAnimateOnMount` | `boolean` | No | `false` | Disable animation on component mount |
|
|
207
|
+
| `disabled` | `boolean` | No | `-` | Toggle used to show a disabled progress visualization |
|
|
153
208
|
| `endLabel` | `number \| { value: number; render: (num: number, disabled?: boolean \| undefined) => ReactNode; }` | No | `-` | Label that is pinned to the end of the container. If a number is used then it will format it as a percentage. |
|
|
154
209
|
| `labelPlacement` | `above \| below \| beside` | No | `beside` | Position of label relative to the bar |
|
|
155
210
|
| `startLabel` | `number \| { value: number; render: (num: number, disabled?: boolean \| undefined) => ReactNode; }` | No | `-` | Label that is pinned to the start of the container. If a number is used then it will format it as a percentage. |
|
|
@@ -12,7 +12,7 @@ import { ProgressBarWithFloatLabel } from '@coinbase/cds-mobile/visualizations/P
|
|
|
12
12
|
|
|
13
13
|
### Label Above
|
|
14
14
|
|
|
15
|
-
```jsx
|
|
15
|
+
```jsx
|
|
16
16
|
<VStack gap={2}>
|
|
17
17
|
<ProgressBarWithFloatLabel label={0} progress={0} labelPlacement="above">
|
|
18
18
|
<ProgressBar progress={0} />
|
|
@@ -25,7 +25,7 @@ import { ProgressBarWithFloatLabel } from '@coinbase/cds-mobile/visualizations/P
|
|
|
25
25
|
|
|
26
26
|
### Label Below
|
|
27
27
|
|
|
28
|
-
```jsx
|
|
28
|
+
```jsx
|
|
29
29
|
<VStack gap={2}>
|
|
30
30
|
<ProgressBarWithFloatLabel label={0} progress={0} labelPlacement="below">
|
|
31
31
|
<ProgressBar progress={0} />
|
|
@@ -38,7 +38,7 @@ import { ProgressBarWithFloatLabel } from '@coinbase/cds-mobile/visualizations/P
|
|
|
38
38
|
|
|
39
39
|
### Disabled
|
|
40
40
|
|
|
41
|
-
```jsx
|
|
41
|
+
```jsx
|
|
42
42
|
<VStack gap={2}>
|
|
43
43
|
<ProgressBarWithFloatLabel label={70} progress={0.7} disabled>
|
|
44
44
|
<ProgressBar progress={0.7} disabled />
|
|
@@ -48,7 +48,7 @@ import { ProgressBarWithFloatLabel } from '@coinbase/cds-mobile/visualizations/P
|
|
|
48
48
|
|
|
49
49
|
### Custom Labels
|
|
50
50
|
|
|
51
|
-
```jsx
|
|
51
|
+
```jsx
|
|
52
52
|
function Example() {
|
|
53
53
|
const renderLabelNumStr = useCallback((num) => {
|
|
54
54
|
return `$${num.toLocaleString()}`;
|
|
@@ -103,7 +103,7 @@ function Example() {
|
|
|
103
103
|
|
|
104
104
|
You can customize the appearance of the progress bar and float label using the `styles` prop.
|
|
105
105
|
|
|
106
|
-
```tsx
|
|
106
|
+
```tsx
|
|
107
107
|
<ProgressContainerWithButtons>
|
|
108
108
|
{({ calculateProgress }) => (
|
|
109
109
|
<VStack gap={2}>
|
|
@@ -122,13 +122,63 @@ You can customize the appearance of the progress bar and float label using the `
|
|
|
122
122
|
</ProgressContainerWithButtons>
|
|
123
123
|
```
|
|
124
124
|
|
|
125
|
+
### Animation
|
|
126
|
+
|
|
127
|
+
By default, ProgressBar animates progress changes. Use `disableAnimateOnMount` to skip the initial animation while still animating subsequent changes.
|
|
128
|
+
|
|
129
|
+
```tsx
|
|
130
|
+
<VStack gap={2}>
|
|
131
|
+
<Text variant="label2">Normal animation</Text>
|
|
132
|
+
<ProgressBarWithFloatLabel label={50} progress={0.5} labelPlacement="above">
|
|
133
|
+
<ProgressBar progress={0.5} />
|
|
134
|
+
</ProgressBarWithFloatLabel>
|
|
135
|
+
|
|
136
|
+
<Text variant="label2">Disable animation on mount</Text>
|
|
137
|
+
<ProgressBarWithFloatLabel disableAnimateOnMount label={50} progress={0.5} labelPlacement="above">
|
|
138
|
+
<ProgressBar disableAnimateOnMount progress={0.5} />
|
|
139
|
+
</ProgressBarWithFloatLabel>
|
|
140
|
+
</VStack>
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
#### Callbacks
|
|
144
|
+
|
|
145
|
+
You can use the `onAnimationStart` and `onAnimationEnd` callbacks to track the progress of the animation.
|
|
146
|
+
|
|
147
|
+
```jsx
|
|
148
|
+
function Example() {
|
|
149
|
+
const [animationStatus, setAnimationStatus] = React.useState('Ready');
|
|
150
|
+
|
|
151
|
+
const handleAnimationStart = useCallback(() => {
|
|
152
|
+
setAnimationStatus('Animating...');
|
|
153
|
+
}, []);
|
|
154
|
+
|
|
155
|
+
const handleAnimationEnd = useCallback(() => {
|
|
156
|
+
setAnimationStatus('Animation Ended');
|
|
157
|
+
}, []);
|
|
158
|
+
|
|
159
|
+
return (
|
|
160
|
+
<VStack gap={2}>
|
|
161
|
+
<Text>Animation Status: {animationStatus}</Text>
|
|
162
|
+
<ProgressBarWithFloatLabel label={20} progress={0.2} labelPlacement="above">
|
|
163
|
+
<ProgressBar
|
|
164
|
+
onAnimationEnd={handleAnimationEnd}
|
|
165
|
+
onAnimationStart={handleAnimationStart}
|
|
166
|
+
progress={0.2}
|
|
167
|
+
/>
|
|
168
|
+
</ProgressBarWithFloatLabel>
|
|
169
|
+
</VStack>
|
|
170
|
+
);
|
|
171
|
+
}
|
|
172
|
+
```
|
|
173
|
+
|
|
125
174
|
## Props
|
|
126
175
|
|
|
127
176
|
| Prop | Type | Required | Default | Description |
|
|
128
177
|
| --- | --- | --- | --- | --- |
|
|
129
178
|
| `label` | `number \| { value: number; render: (num: number, disabled?: boolean \| undefined) => ReactNode; }` | Yes | `-` | Label that is floated at the end of the filled in bar. If a number is used then it will format it as a percentage. |
|
|
130
179
|
| `progress` | `number` | Yes | `-` | Number between 0-1 representing the progress percentage |
|
|
131
|
-
| `
|
|
180
|
+
| `disableAnimateOnMount` | `boolean` | No | `false` | Disable animation on component mount |
|
|
181
|
+
| `disabled` | `boolean` | No | `-` | Toggle used to show a disabled progress visualization |
|
|
132
182
|
| `labelPlacement` | `above \| below` | No | `above` | Position of label relative to the bar |
|
|
133
183
|
| `style` | `null \| false \| ViewStyle \| RegisteredStyle<ViewStyle> \| RecursiveArray<ViewStyle \| Falsy \| RegisteredStyle<ViewStyle>>` | No | `-` | Custom styles for the progress bar with float label root. |
|
|
134
184
|
| `styles` | `{ root?: StyleProp<ViewStyle>; labelContainer?: StyleProp<ViewStyle>; label?: StyleProp<TextStyle>; }` | No | `-` | Custom styles for the progress bar with float label. |
|
|
@@ -186,7 +186,25 @@ The progress circle can be customized with styles.
|
|
|
186
186
|
</HStack>
|
|
187
187
|
```
|
|
188
188
|
|
|
189
|
-
|
|
189
|
+
### Animation
|
|
190
|
+
|
|
191
|
+
By default, ProgressCircle animates progress changes. Use `disableAnimateOnMount` to skip the initial animation while still animating subsequent changes.
|
|
192
|
+
|
|
193
|
+
```tsx
|
|
194
|
+
<HStack gap={2}>
|
|
195
|
+
<VStack gap={1} alignItems="center">
|
|
196
|
+
<Text variant="label2">Normal animation</Text>
|
|
197
|
+
<ProgressCircle progress={0.5} size={100} />
|
|
198
|
+
</VStack>
|
|
199
|
+
|
|
200
|
+
<VStack gap={1} alignItems="center">
|
|
201
|
+
<Text variant="label2">Disable animation on mount</Text>
|
|
202
|
+
<ProgressCircle disableAnimateOnMount progress={0.5} size={100} />
|
|
203
|
+
</VStack>
|
|
204
|
+
</HStack>
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
#### Callbacks
|
|
190
208
|
|
|
191
209
|
You can use the `onAnimationStart` and `onAnimationEnd` callbacks to track the progress of the animation.
|
|
192
210
|
|
|
@@ -208,7 +226,7 @@ function Example() {
|
|
|
208
226
|
<ProgressCircle
|
|
209
227
|
onAnimationEnd={handleAnimationEnd}
|
|
210
228
|
onAnimationStart={handleAnimationStart}
|
|
211
|
-
progress={
|
|
229
|
+
progress={0.2}
|
|
212
230
|
size={100}
|
|
213
231
|
/>
|
|
214
232
|
</VStack>
|
|
@@ -224,7 +242,7 @@ function Example() {
|
|
|
224
242
|
| `color` | `currentColor \| fg \| fgMuted \| fgInverse \| fgPrimary \| fgWarning \| fgPositive \| fgNegative \| bg \| bgAlternate \| bgInverse \| bgOverlay \| bgElevation1 \| bgElevation2 \| bgPrimary \| bgPrimaryWash \| bgSecondary \| bgTertiary \| bgSecondaryWash \| bgNegative \| bgNegativeWash \| bgPositive \| bgPositiveWash \| bgWarning \| bgWarningWash \| bgLine \| bgLineHeavy \| bgLineInverse \| bgLinePrimary \| bgLinePrimarySubtle \| accentSubtleRed \| accentBoldRed \| accentSubtleGreen \| accentBoldGreen \| accentSubtleBlue \| accentBoldBlue \| accentSubtlePurple \| accentBoldPurple \| accentSubtleYellow \| accentBoldYellow \| accentSubtleGray \| accentBoldGray \| transparent` | No | `primary` | Custom progress color. |
|
|
225
243
|
| `contentNode` | `null \| string \| number \| false \| true \| ReactElement<any, string \| JSXElementConstructor<any>> \| Iterable<ReactNode> \| ReactPortal` | No | `-` | Optional component to override the default content rendered inside the circle. |
|
|
226
244
|
| `disableAnimateOnMount` | `boolean` | No | `false` | Disable animation on component mount |
|
|
227
|
-
| `disabled` | `boolean` | No |
|
|
245
|
+
| `disabled` | `boolean` | No | `-` | Toggle used to show a disabled progress visualization |
|
|
228
246
|
| `hideContent` | `boolean` | No | `-` | Toggle used to hide the content node rendered inside the circle. |
|
|
229
247
|
| `hideText` | `boolean` | No | `-` | - |
|
|
230
248
|
| `key` | `Key \| null` | No | `-` | - |
|
|
@@ -47,10 +47,25 @@ import { RemoteImageGroup } from '@coinbase/cds-mobile/media/RemoteImageGroup'
|
|
|
47
47
|
</RemoteImageGroup>
|
|
48
48
|
```
|
|
49
49
|
|
|
50
|
+
### Bordered Images
|
|
51
|
+
|
|
52
|
+
Use the `borderWidth` and `borderColor` props to change border style of the images in the group. `borderColor` defaults to `bg` when `borderWidth` is set.
|
|
53
|
+
|
|
54
|
+
```tsx
|
|
55
|
+
<RemoteImageGroup borderWidth={300} max={3}>
|
|
56
|
+
<RemoteImage source={assets.eth.imageUrl} />
|
|
57
|
+
<RemoteImage source={assets.btc.imageUrl} />
|
|
58
|
+
<RemoteImage source={assets.dai.imageUrl} />
|
|
59
|
+
<RemoteImage source={assets.hbar.imageUrl} />
|
|
60
|
+
</RemoteImageGroup>
|
|
61
|
+
```
|
|
62
|
+
|
|
50
63
|
## Props
|
|
51
64
|
|
|
52
65
|
| Prop | Type | Required | Default | Description |
|
|
53
66
|
| --- | --- | --- | --- | --- |
|
|
67
|
+
| `borderColor` | `currentColor \| fg \| fgMuted \| fgInverse \| fgPrimary \| fgWarning \| fgPositive \| fgNegative \| bg \| bgAlternate \| bgInverse \| bgOverlay \| bgElevation1 \| bgElevation2 \| bgPrimary \| bgPrimaryWash \| bgSecondary \| bgTertiary \| bgSecondaryWash \| bgNegative \| bgNegativeWash \| bgPositive \| bgPositiveWash \| bgWarning \| bgWarningWash \| bgLine \| bgLineHeavy \| bgLineInverse \| bgLinePrimary \| bgLinePrimarySubtle \| accentSubtleRed \| accentBoldRed \| accentSubtleGreen \| accentBoldGreen \| accentSubtleBlue \| accentBoldBlue \| accentSubtlePurple \| accentBoldPurple \| accentSubtleYellow \| accentBoldYellow \| accentSubtleGray \| accentBoldGray \| transparent` | No | `borderWidth ? 'bg' : undefined` | - |
|
|
68
|
+
| `borderWidth` | `0 \| 100 \| 200 \| 300 \| 400 \| 500` | No | `-` | - |
|
|
54
69
|
| `children` | `null \| string \| number \| false \| true \| ReactElement<any, string \| JSXElementConstructor<any>> \| Iterable<ReactNode> \| ReactPortal` | No | `-` | Children content |
|
|
55
70
|
| `max` | `number` | No | `4` | Indicates the number of remote image before it collapses |
|
|
56
71
|
| `shape` | `rectangle \| circle \| squircle \| square \| hexagon` | No | `circle` | Shape of all RemoteImage children in the group |
|
|
@@ -324,7 +324,7 @@ When using the `inside` label variant, you should always include a `placeholder`
|
|
|
324
324
|
label="Password"
|
|
325
325
|
labelVariant="inside"
|
|
326
326
|
secureTextEntry
|
|
327
|
-
end={<InputIconButton name="
|
|
327
|
+
end={<InputIconButton name="visible" />}
|
|
328
328
|
placeholder="Enter your password"
|
|
329
329
|
/>
|
|
330
330
|
```
|
|
@@ -409,6 +409,7 @@ Password Input - Use Icon Buttons at the end for actions like showing a password
|
|
|
409
409
|
function PasswordInput() {
|
|
410
410
|
const [isVisible, setIsVisible] = useState(false);
|
|
411
411
|
const type = useMemo(() => (isVisible ? 'text' : 'password'), [isVisible]);
|
|
412
|
+
const iconName = useMemo(() => (isVisible ? 'visible' : 'invisible'), [isVisible]);
|
|
412
413
|
|
|
413
414
|
return (
|
|
414
415
|
<TextInput
|
|
@@ -416,8 +417,8 @@ function PasswordInput() {
|
|
|
416
417
|
type={type}
|
|
417
418
|
end={
|
|
418
419
|
<InputIconButton
|
|
419
|
-
name={
|
|
420
|
-
onPress={() => setIsVisible((isVisible) => !
|
|
420
|
+
name={iconName}
|
|
421
|
+
onPress={() => setIsVisible((isVisible) => !isVisible)}
|
|
421
422
|
accessibilityLabel={isVisible ? 'Hide password' : 'Show password'}
|
|
422
423
|
/>
|
|
423
424
|
}
|
|
@@ -108,7 +108,25 @@ This is for demo purposes. ProgressContainerWithButtons isn't designed for produ
|
|
|
108
108
|
</ProgressContainerWithButtons>
|
|
109
109
|
```
|
|
110
110
|
|
|
111
|
-
### Animation
|
|
111
|
+
### Animation
|
|
112
|
+
|
|
113
|
+
By default, ProgressBar animates progress changes. Use `disableAnimateOnMount` to skip the initial animation while still animating subsequent changes.
|
|
114
|
+
|
|
115
|
+
```tsx live
|
|
116
|
+
<ProgressContainerWithButtons>
|
|
117
|
+
{({ calculateProgress }) => (
|
|
118
|
+
<VStack gap={2}>
|
|
119
|
+
<Text variant="label2">Normal animation</Text>
|
|
120
|
+
<ProgressBar progress={calculateProgress(0)} />
|
|
121
|
+
|
|
122
|
+
<Text variant="label2">Disable animation on mount</Text>
|
|
123
|
+
<ProgressBar disableAnimateOnMount progress={calculateProgress(0.3)} />
|
|
124
|
+
</VStack>
|
|
125
|
+
)}
|
|
126
|
+
</ProgressContainerWithButtons>
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
#### Callbacks
|
|
112
130
|
|
|
113
131
|
You can use the `onAnimationStart` and `onAnimationEnd` callbacks to track the progress of the animation.
|
|
114
132
|
|
|
@@ -150,7 +168,7 @@ function Example() {
|
|
|
150
168
|
| `classNames` | `{ root?: string; progress?: string \| undefined; } \| undefined` | No | `-` | Custom class names for the progress bar. |
|
|
151
169
|
| `color` | `currentColor \| fg \| fgMuted \| fgInverse \| fgPrimary \| fgWarning \| fgPositive \| fgNegative \| bg \| bgAlternate \| bgInverse \| bgOverlay \| bgElevation1 \| bgElevation2 \| bgPrimary \| bgPrimaryWash \| bgSecondary \| bgTertiary \| bgSecondaryWash \| bgNegative \| bgNegativeWash \| bgPositive \| bgPositiveWash \| bgWarning \| bgWarningWash \| bgLine \| bgLineHeavy \| bgLineInverse \| bgLinePrimary \| bgLinePrimarySubtle \| accentSubtleRed \| accentBoldRed \| accentSubtleGreen \| accentBoldGreen \| accentSubtleBlue \| accentBoldBlue \| accentSubtlePurple \| accentBoldPurple \| accentSubtleYellow \| accentBoldYellow \| accentSubtleGray \| accentBoldGray \| transparent` | No | `primary` | Custom progress color. |
|
|
152
170
|
| `disableAnimateOnMount` | `boolean` | No | `false` | Disable animation on component mount |
|
|
153
|
-
| `disabled` | `boolean` | No |
|
|
171
|
+
| `disabled` | `boolean` | No | `-` | Toggle used to show a disabled progress visualization |
|
|
154
172
|
| `key` | `Key \| null` | No | `-` | - |
|
|
155
173
|
| `onAnimationEnd` | `(() => void)` | No | `-` | Callback fired when the progress animation ends. |
|
|
156
174
|
| `onAnimationStart` | `(() => void)` | No | `-` | Callback fired when the progress animation starts. |
|
|
@@ -195,13 +195,84 @@ This is for demo purposes. ProgressContainerWithButtons isn't designed for produ
|
|
|
195
195
|
</ProgressContainerWithButtons>
|
|
196
196
|
```
|
|
197
197
|
|
|
198
|
+
### Animation
|
|
199
|
+
|
|
200
|
+
By default, ProgressBar animates progress changes. Use `disableAnimateOnMount` to skip the initial animation while still animating subsequent changes.
|
|
201
|
+
|
|
202
|
+
```tsx live
|
|
203
|
+
<ProgressContainerWithButtons>
|
|
204
|
+
{({ calculateProgress }) => (
|
|
205
|
+
<VStack gap={2}>
|
|
206
|
+
<Text variant="label2">Normal animation</Text>
|
|
207
|
+
<ProgressBarWithFixedLabels
|
|
208
|
+
startLabel={0}
|
|
209
|
+
endLabel={Math.round(calculateProgress(0) * 100)}
|
|
210
|
+
labelPlacement="above"
|
|
211
|
+
>
|
|
212
|
+
<ProgressBar progress={calculateProgress(0)} />
|
|
213
|
+
</ProgressBarWithFixedLabels>
|
|
214
|
+
|
|
215
|
+
<Text variant="label2">Disable animation on mount</Text>
|
|
216
|
+
<ProgressBarWithFixedLabels
|
|
217
|
+
disableAnimateOnMount
|
|
218
|
+
startLabel={0}
|
|
219
|
+
endLabel={Math.round(calculateProgress(0.3) * 100)}
|
|
220
|
+
labelPlacement="above"
|
|
221
|
+
>
|
|
222
|
+
<ProgressBar disableAnimateOnMount progress={calculateProgress(0.3)} />
|
|
223
|
+
</ProgressBarWithFixedLabels>
|
|
224
|
+
</VStack>
|
|
225
|
+
)}
|
|
226
|
+
</ProgressContainerWithButtons>
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
#### Callbacks
|
|
230
|
+
|
|
231
|
+
You can use the `onAnimationStart` and `onAnimationEnd` callbacks to track the progress of the animation.
|
|
232
|
+
|
|
233
|
+
```jsx live
|
|
234
|
+
function Example() {
|
|
235
|
+
const [animationStatus, setAnimationStatus] = React.useState('Ready');
|
|
236
|
+
|
|
237
|
+
const handleAnimationStart = useCallback(() => {
|
|
238
|
+
setAnimationStatus('Animating...');
|
|
239
|
+
}, []);
|
|
240
|
+
|
|
241
|
+
const handleAnimationEnd = useCallback(() => {
|
|
242
|
+
setAnimationStatus('Animation Ended');
|
|
243
|
+
}, []);
|
|
244
|
+
|
|
245
|
+
return (
|
|
246
|
+
<ProgressContainerWithButtons>
|
|
247
|
+
{({ calculateProgress }) => (
|
|
248
|
+
<VStack gap={2}>
|
|
249
|
+
<Text>Animation Status: {animationStatus}</Text>
|
|
250
|
+
<ProgressBarWithFixedLabels
|
|
251
|
+
startLabel={0}
|
|
252
|
+
endLabel={Math.round(calculateProgress(0.2) * 100)}
|
|
253
|
+
labelPlacement="above"
|
|
254
|
+
>
|
|
255
|
+
<ProgressBar
|
|
256
|
+
onAnimationEnd={handleAnimationEnd}
|
|
257
|
+
onAnimationStart={handleAnimationStart}
|
|
258
|
+
progress={calculateProgress(0.2)}
|
|
259
|
+
/>
|
|
260
|
+
</ProgressBarWithFixedLabels>
|
|
261
|
+
</VStack>
|
|
262
|
+
)}
|
|
263
|
+
</ProgressContainerWithButtons>
|
|
264
|
+
);
|
|
265
|
+
}
|
|
266
|
+
```
|
|
267
|
+
|
|
198
268
|
## Props
|
|
199
269
|
|
|
200
270
|
| Prop | Type | Required | Default | Description |
|
|
201
271
|
| --- | --- | --- | --- | --- |
|
|
202
272
|
| `className` | `string` | No | `-` | Custom class name for the progress bar with fixed labels root. |
|
|
203
273
|
| `classNames` | `{ root?: string; labelContainer?: string \| undefined; startLabel?: string \| undefined; endLabel?: string \| undefined; } \| undefined` | No | `-` | Custom class names for the progress bar with fixed labels. |
|
|
204
|
-
| `
|
|
274
|
+
| `disableAnimateOnMount` | `boolean` | No | `false` | Disable animation on component mount |
|
|
275
|
+
| `disabled` | `boolean` | No | `-` | Toggle used to show a disabled progress visualization |
|
|
205
276
|
| `endLabel` | `number \| { value: number; render: (num: number, disabled?: boolean \| undefined) => ReactNode; }` | No | `-` | Label that is pinned to the end of the container. If a number is used then it will format it as a percentage. |
|
|
206
277
|
| `labelPlacement` | `above \| below \| beside` | No | `beside` | Position of label relative to the bar |
|
|
207
278
|
| `startLabel` | `number \| { value: number; render: (num: number, disabled?: boolean \| undefined) => ReactNode; }` | No | `-` | Label that is pinned to the start of the container. If a number is used then it will format it as a percentage. |
|
|
@@ -164,6 +164,76 @@ This is for demo purposes. ProgressContainerWithButtons isn't designed for produ
|
|
|
164
164
|
</ProgressContainerWithButtons>
|
|
165
165
|
```
|
|
166
166
|
|
|
167
|
+
### Animation
|
|
168
|
+
|
|
169
|
+
By default, ProgressBar animates progress changes. Use `disableAnimateOnMount` to skip the initial animation while still animating subsequent changes.
|
|
170
|
+
|
|
171
|
+
```tsx live
|
|
172
|
+
<ProgressContainerWithButtons>
|
|
173
|
+
{({ calculateProgress }) => (
|
|
174
|
+
<VStack gap={2}>
|
|
175
|
+
<Text variant="label2">Normal animation</Text>
|
|
176
|
+
<ProgressBarWithFloatLabel
|
|
177
|
+
label={Math.round(calculateProgress(0) * 100)}
|
|
178
|
+
progress={calculateProgress(0)}
|
|
179
|
+
labelPlacement="above"
|
|
180
|
+
>
|
|
181
|
+
<ProgressBar progress={calculateProgress(0)} />
|
|
182
|
+
</ProgressBarWithFloatLabel>
|
|
183
|
+
|
|
184
|
+
<Text variant="label2">Disable animation on mount</Text>
|
|
185
|
+
<ProgressBarWithFloatLabel
|
|
186
|
+
disableAnimateOnMount
|
|
187
|
+
label={Math.round(calculateProgress(0.3) * 100)}
|
|
188
|
+
progress={calculateProgress(0.3)}
|
|
189
|
+
labelPlacement="above"
|
|
190
|
+
>
|
|
191
|
+
<ProgressBar disableAnimateOnMount progress={calculateProgress(0.3)} />
|
|
192
|
+
</ProgressBarWithFloatLabel>
|
|
193
|
+
</VStack>
|
|
194
|
+
)}
|
|
195
|
+
</ProgressContainerWithButtons>
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
#### Callbacks
|
|
199
|
+
|
|
200
|
+
You can use the `onAnimationStart` and `onAnimationEnd` callbacks to track the progress of the animation.
|
|
201
|
+
|
|
202
|
+
```jsx live
|
|
203
|
+
function Example() {
|
|
204
|
+
const [animationStatus, setAnimationStatus] = React.useState('Ready');
|
|
205
|
+
|
|
206
|
+
const handleAnimationStart = useCallback(() => {
|
|
207
|
+
setAnimationStatus('Animating...');
|
|
208
|
+
}, []);
|
|
209
|
+
|
|
210
|
+
const handleAnimationEnd = useCallback(() => {
|
|
211
|
+
setAnimationStatus('Animation Ended');
|
|
212
|
+
}, []);
|
|
213
|
+
|
|
214
|
+
return (
|
|
215
|
+
<ProgressContainerWithButtons>
|
|
216
|
+
{({ calculateProgress }) => (
|
|
217
|
+
<VStack gap={2}>
|
|
218
|
+
<Text>Animation Status: {animationStatus}</Text>
|
|
219
|
+
<ProgressBarWithFloatLabel
|
|
220
|
+
label={Math.round(calculateProgress(0.2) * 100)}
|
|
221
|
+
progress={calculateProgress(0.2)}
|
|
222
|
+
labelPlacement="above"
|
|
223
|
+
>
|
|
224
|
+
<ProgressBar
|
|
225
|
+
onAnimationEnd={handleAnimationEnd}
|
|
226
|
+
onAnimationStart={handleAnimationStart}
|
|
227
|
+
progress={calculateProgress(0.2)}
|
|
228
|
+
/>
|
|
229
|
+
</ProgressBarWithFloatLabel>
|
|
230
|
+
</VStack>
|
|
231
|
+
)}
|
|
232
|
+
</ProgressContainerWithButtons>
|
|
233
|
+
);
|
|
234
|
+
}
|
|
235
|
+
```
|
|
236
|
+
|
|
167
237
|
## Props
|
|
168
238
|
|
|
169
239
|
| Prop | Type | Required | Default | Description |
|
|
@@ -172,7 +242,8 @@ This is for demo purposes. ProgressContainerWithButtons isn't designed for produ
|
|
|
172
242
|
| `progress` | `number` | Yes | `-` | Number between 0-1 representing the progress percentage |
|
|
173
243
|
| `className` | `string` | No | `-` | Custom class name for the progress bar with float label root. |
|
|
174
244
|
| `classNames` | `{ root?: string; labelContainer?: string \| undefined; label?: string \| undefined; } \| undefined` | No | `-` | Custom class names for the progress bar with float label. |
|
|
175
|
-
| `
|
|
245
|
+
| `disableAnimateOnMount` | `boolean` | No | `false` | Disable animation on component mount |
|
|
246
|
+
| `disabled` | `boolean` | No | `-` | Toggle used to show a disabled progress visualization |
|
|
176
247
|
| `labelPlacement` | `above \| below` | No | `above` | Position of label relative to the bar |
|
|
177
248
|
| `style` | `CSSProperties` | No | `-` | Custom styles for the progress bar with float label root. |
|
|
178
249
|
| `styles` | `{ root?: CSSProperties; labelContainer?: CSSProperties \| undefined; label?: CSSProperties \| undefined; } \| undefined` | No | `-` | Custom styles for the progress bar with float label. |
|
|
@@ -13,7 +13,7 @@ import { ProgressCircle } from '@coinbase/cds-web/visualizations/ProgressCircle'
|
|
|
13
13
|
### Default
|
|
14
14
|
|
|
15
15
|
```jsx live
|
|
16
|
-
<HStack gap={2}>
|
|
16
|
+
<HStack gap={2} flexWrap="wrap">
|
|
17
17
|
<ProgressCircle progress={0} size={100} />
|
|
18
18
|
<ProgressCircle progress={0.5} size={100} />
|
|
19
19
|
<ProgressCircle progress={1} size={100} />
|
|
@@ -23,7 +23,7 @@ import { ProgressCircle } from '@coinbase/cds-web/visualizations/ProgressCircle'
|
|
|
23
23
|
### Thin
|
|
24
24
|
|
|
25
25
|
```jsx live
|
|
26
|
-
<HStack gap={2}>
|
|
26
|
+
<HStack gap={2} flexWrap="wrap">
|
|
27
27
|
<ProgressCircle progress={0} weight="thin" size={100} />
|
|
28
28
|
<ProgressCircle progress={0.5} weight="thin" size={100} />
|
|
29
29
|
<ProgressCircle progress={1} weight="thin" size={100} />
|
|
@@ -33,7 +33,7 @@ import { ProgressCircle } from '@coinbase/cds-web/visualizations/ProgressCircle'
|
|
|
33
33
|
### Semiheavy
|
|
34
34
|
|
|
35
35
|
```jsx live
|
|
36
|
-
<HStack gap={2}>
|
|
36
|
+
<HStack gap={2} flexWrap="wrap">
|
|
37
37
|
<ProgressCircle progress={0} weight="semiheavy" size={100} />
|
|
38
38
|
<ProgressCircle progress={0.5} weight="semiheavy" size={100} />
|
|
39
39
|
<ProgressCircle progress={1} weight="semiheavy" size={100} />
|
|
@@ -43,7 +43,7 @@ import { ProgressCircle } from '@coinbase/cds-web/visualizations/ProgressCircle'
|
|
|
43
43
|
### Heavy
|
|
44
44
|
|
|
45
45
|
```jsx live
|
|
46
|
-
<HStack gap={2}>
|
|
46
|
+
<HStack gap={2} flexWrap="wrap">
|
|
47
47
|
<ProgressCircle progress={0} weight="heavy" size={100} />
|
|
48
48
|
<ProgressCircle progress={0.5} weight="heavy" size={100} />
|
|
49
49
|
<ProgressCircle progress={1} weight="heavy" size={100} />
|
|
@@ -53,7 +53,7 @@ import { ProgressCircle } from '@coinbase/cds-web/visualizations/ProgressCircle'
|
|
|
53
53
|
### No Text
|
|
54
54
|
|
|
55
55
|
```jsx live
|
|
56
|
-
<HStack gap={2}>
|
|
56
|
+
<HStack gap={2} flexWrap="wrap">
|
|
57
57
|
<ProgressCircle progress={0} hideContent size={25} />
|
|
58
58
|
<ProgressCircle progress={0.5} hideContent size={25} />
|
|
59
59
|
<ProgressCircle progress={1} hideContent size={25} />
|
|
@@ -63,7 +63,7 @@ import { ProgressCircle } from '@coinbase/cds-web/visualizations/ProgressCircle'
|
|
|
63
63
|
### Disabled
|
|
64
64
|
|
|
65
65
|
```jsx live
|
|
66
|
-
<HStack gap={2}>
|
|
66
|
+
<HStack gap={2} flexWrap="wrap">
|
|
67
67
|
<ProgressCircle progress={0} disabled size={100} />
|
|
68
68
|
<ProgressCircle progress={0.5} disabled size={100} />
|
|
69
69
|
<ProgressCircle progress={1} disabled size={100} />
|
|
@@ -73,7 +73,7 @@ import { ProgressCircle } from '@coinbase/cds-web/visualizations/ProgressCircle'
|
|
|
73
73
|
### Colors
|
|
74
74
|
|
|
75
75
|
```jsx live
|
|
76
|
-
<HStack gap={2}>
|
|
76
|
+
<HStack gap={2} flexWrap="wrap">
|
|
77
77
|
<ProgressCircle progress={0.5} color="bgPositive" size={100} />
|
|
78
78
|
<ProgressCircle progress={0.5} color="bgNegative" size={100} />
|
|
79
79
|
<ProgressCircle progress={0.5} color="bgPrimary" size={100} />
|
|
@@ -109,7 +109,7 @@ You can provide an image, such as an asset, as the content node.
|
|
|
109
109
|
|
|
110
110
|
```jsx live
|
|
111
111
|
<VStack gap={2}>
|
|
112
|
-
<HStack gap={2}>
|
|
112
|
+
<HStack gap={2} flexWrap="wrap">
|
|
113
113
|
<ProgressCircle
|
|
114
114
|
progress={1}
|
|
115
115
|
size={56}
|
|
@@ -211,7 +211,7 @@ You can provide an image, such as an asset, as the content node.
|
|
|
211
211
|
weight="thin"
|
|
212
212
|
/>
|
|
213
213
|
</HStack>
|
|
214
|
-
<HStack gap={2}>
|
|
214
|
+
<HStack gap={2} flexWrap="wrap">
|
|
215
215
|
<ProgressCircle
|
|
216
216
|
styles={{
|
|
217
217
|
progress: {
|
|
@@ -387,7 +387,29 @@ This is for demo purposes. ProgressContainerWithButtons isn't designed for produ
|
|
|
387
387
|
</ProgressContainerWithButtons>
|
|
388
388
|
```
|
|
389
389
|
|
|
390
|
-
### Animation
|
|
390
|
+
### Animation
|
|
391
|
+
|
|
392
|
+
By default, ProgressCircle animates progress changes. Use `disableAnimateOnMount` to skip the initial animation while still animating subsequent changes.
|
|
393
|
+
|
|
394
|
+
```tsx live
|
|
395
|
+
<ProgressContainerWithButtons>
|
|
396
|
+
{({ calculateProgress }) => (
|
|
397
|
+
<HStack gap={2}>
|
|
398
|
+
<VStack gap={1} alignItems="center">
|
|
399
|
+
<Text variant="label2">Normal animation</Text>
|
|
400
|
+
<ProgressCircle progress={calculateProgress(0)} size={100} />
|
|
401
|
+
</VStack>
|
|
402
|
+
|
|
403
|
+
<VStack gap={1} alignItems="center">
|
|
404
|
+
<Text variant="label2">Disable animation on mount</Text>
|
|
405
|
+
<ProgressCircle disableAnimateOnMount progress={calculateProgress(0.3)} size={100} />
|
|
406
|
+
</VStack>
|
|
407
|
+
</HStack>
|
|
408
|
+
)}
|
|
409
|
+
</ProgressContainerWithButtons>
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
#### Callbacks
|
|
391
413
|
|
|
392
414
|
You can use the `onAnimationStart` and `onAnimationEnd` callbacks to track the progress of the animation.
|
|
393
415
|
|
|
@@ -431,7 +453,7 @@ function Example() {
|
|
|
431
453
|
| `color` | `currentColor \| fg \| fgMuted \| fgInverse \| fgPrimary \| fgWarning \| fgPositive \| fgNegative \| bg \| bgAlternate \| bgInverse \| bgOverlay \| bgElevation1 \| bgElevation2 \| bgPrimary \| bgPrimaryWash \| bgSecondary \| bgTertiary \| bgSecondaryWash \| bgNegative \| bgNegativeWash \| bgPositive \| bgPositiveWash \| bgWarning \| bgWarningWash \| bgLine \| bgLineHeavy \| bgLineInverse \| bgLinePrimary \| bgLinePrimarySubtle \| accentSubtleRed \| accentBoldRed \| accentSubtleGreen \| accentBoldGreen \| accentSubtleBlue \| accentBoldBlue \| accentSubtlePurple \| accentBoldPurple \| accentSubtleYellow \| accentBoldYellow \| accentSubtleGray \| accentBoldGray \| transparent` | No | `primary` | Custom progress color. |
|
|
432
454
|
| `contentNode` | `null \| string \| number \| false \| true \| ReactElement<any, string \| JSXElementConstructor<any>> \| Iterable<ReactNode> \| ReactPortal` | No | `-` | Optional component to override the default content rendered inside the circle. |
|
|
433
455
|
| `disableAnimateOnMount` | `boolean` | No | `false` | Disable animation on component mount |
|
|
434
|
-
| `disabled` | `boolean` | No |
|
|
456
|
+
| `disabled` | `boolean` | No | `-` | Toggle used to show a disabled progress visualization |
|
|
435
457
|
| `hideContent` | `boolean` | No | `-` | Toggle used to hide the content node rendered inside the circle. |
|
|
436
458
|
| `hideText` | `boolean` | No | `-` | - |
|
|
437
459
|
| `key` | `Key \| null` | No | `-` | - |
|
|
@@ -77,10 +77,25 @@ function Component() {
|
|
|
77
77
|
}
|
|
78
78
|
```
|
|
79
79
|
|
|
80
|
+
### Bordered Images
|
|
81
|
+
|
|
82
|
+
Use the `borderWidth` and `borderColor` props to change border style of the images in the group. `borderColor` defaults to `bg` when `borderWidth` is set.
|
|
83
|
+
|
|
84
|
+
```tsx live
|
|
85
|
+
<RemoteImageGroup borderWidth={300} max={3}>
|
|
86
|
+
<RemoteImage source={assets.eth.imageUrl} />
|
|
87
|
+
<RemoteImage source={assets.btc.imageUrl} />
|
|
88
|
+
<RemoteImage source={assets.dai.imageUrl} />
|
|
89
|
+
<RemoteImage source={assets.hbar.imageUrl} />
|
|
90
|
+
</RemoteImageGroup>
|
|
91
|
+
```
|
|
92
|
+
|
|
80
93
|
## Props
|
|
81
94
|
|
|
82
95
|
| Prop | Type | Required | Default | Description |
|
|
83
96
|
| --- | --- | --- | --- | --- |
|
|
97
|
+
| `borderColor` | `currentColor \| fg \| fgMuted \| fgInverse \| fgPrimary \| fgWarning \| fgPositive \| fgNegative \| bg \| bgAlternate \| bgInverse \| bgOverlay \| bgElevation1 \| bgElevation2 \| bgPrimary \| bgPrimaryWash \| bgSecondary \| bgTertiary \| bgSecondaryWash \| bgNegative \| bgNegativeWash \| bgPositive \| bgPositiveWash \| bgWarning \| bgWarningWash \| bgLine \| bgLineHeavy \| bgLineInverse \| bgLinePrimary \| bgLinePrimarySubtle \| accentSubtleRed \| accentBoldRed \| accentSubtleGreen \| accentBoldGreen \| accentSubtleBlue \| accentBoldBlue \| accentSubtlePurple \| accentBoldPurple \| accentSubtleYellow \| accentBoldYellow \| accentSubtleGray \| accentBoldGray \| transparent` | No | `borderWidth ? 'bg' : undefined` | - |
|
|
98
|
+
| `borderWidth` | `0 \| 100 \| 200 \| 300 \| 400 \| 500` | No | `-` | - |
|
|
84
99
|
| `children` | `null \| string \| number \| false \| true \| ReactElement<any, string \| JSXElementConstructor<any>> \| Iterable<ReactNode> \| ReactPortal` | No | `-` | Children content |
|
|
85
100
|
| `max` | `number` | No | `4` | Indicates the number of remote image before it collapses |
|
|
86
101
|
| `shape` | `rectangle \| circle \| squircle \| square \| hexagon` | No | `circle` | Shape of all RemoteImage children in the group |
|
|
@@ -265,7 +265,7 @@ When using the `inside` label variant, you should always include a `placeholder`
|
|
|
265
265
|
label="Password"
|
|
266
266
|
labelVariant="inside"
|
|
267
267
|
type="password"
|
|
268
|
-
end={<InputIconButton name="
|
|
268
|
+
end={<InputIconButton name="visible" />}
|
|
269
269
|
placeholder="Enter your password"
|
|
270
270
|
/>
|
|
271
271
|
</VStack>
|
|
@@ -422,6 +422,7 @@ Password Input - Use Icon Buttons at the end for actions like showing a password
|
|
|
422
422
|
function PasswordInput() {
|
|
423
423
|
const [isVisible, setIsVisible] = useState(false);
|
|
424
424
|
const type = useMemo(() => (isVisible ? 'text' : 'password'), [isVisible]);
|
|
425
|
+
const iconName = useMemo(() => (isVisible ? 'visible' : 'invisible'), [isVisible]);
|
|
425
426
|
|
|
426
427
|
return (
|
|
427
428
|
<TextInput
|
|
@@ -429,8 +430,8 @@ function PasswordInput() {
|
|
|
429
430
|
type={type}
|
|
430
431
|
end={
|
|
431
432
|
<InputIconButton
|
|
432
|
-
name={
|
|
433
|
-
onClick={() => setIsVisible((isVisible) => !
|
|
433
|
+
name={iconName}
|
|
434
|
+
onClick={() => setIsVisible((isVisible) => !isVisible)}
|
|
434
435
|
accessibilityLabel={isVisible ? 'Hide password' : 'Show password'}
|
|
435
436
|
/>
|
|
436
437
|
}
|