@coinbase/cds-mcp-server 8.17.2 → 8.17.3
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 +4 -0
- package/mcp-docs/mobile/components/Accordion.txt +189 -0
- package/mcp-docs/mobile/components/AccordionItem.txt +30 -0
- package/mcp-docs/mobile/components/Alert.txt +156 -0
- package/mcp-docs/mobile/components/AreaChart.txt +266 -0
- package/mcp-docs/mobile/components/Avatar.txt +196 -0
- package/mcp-docs/mobile/components/AvatarButton.txt +226 -0
- package/mcp-docs/mobile/components/Banner.txt +222 -0
- package/mcp-docs/mobile/components/BarChart.txt +816 -0
- package/mcp-docs/mobile/components/Box.txt +174 -0
- package/mcp-docs/mobile/components/BrowserBar.txt +147 -0
- package/mcp-docs/mobile/components/Button.txt +199 -0
- package/mcp-docs/mobile/components/ButtonGroup.txt +80 -0
- package/mcp-docs/mobile/components/Carousel.txt +1084 -0
- package/mcp-docs/mobile/components/CartesianChart.txt +826 -0
- package/mcp-docs/mobile/components/CellMedia.txt +71 -0
- package/mcp-docs/mobile/components/Checkbox.txt +246 -0
- package/mcp-docs/mobile/components/CheckboxCell.txt +202 -0
- package/mcp-docs/mobile/components/CheckboxGroup.txt +285 -0
- package/mcp-docs/mobile/components/Chip.txt +195 -0
- package/mcp-docs/mobile/components/Coachmark.txt +158 -0
- package/mcp-docs/mobile/components/Collapsible.txt +105 -0
- package/mcp-docs/mobile/components/ContainedAssetCard.txt +135 -0
- package/mcp-docs/mobile/components/ContentCard.txt +366 -0
- package/mcp-docs/mobile/components/ContentCardBody.txt +136 -0
- package/mcp-docs/mobile/components/ContentCardFooter.txt +128 -0
- package/mcp-docs/mobile/components/ContentCardHeader.txt +146 -0
- package/mcp-docs/mobile/components/ContentCell.txt +227 -0
- package/mcp-docs/mobile/components/ControlGroup.txt +444 -0
- package/mcp-docs/mobile/components/DatePicker.txt +497 -0
- package/mcp-docs/mobile/components/Divider.txt +139 -0
- package/mcp-docs/mobile/components/DotCount.txt +146 -0
- package/mcp-docs/mobile/components/DotStatusColor.txt +59 -0
- package/mcp-docs/mobile/components/DotSymbol.txt +135 -0
- package/mcp-docs/mobile/components/Fallback.txt +158 -0
- package/mcp-docs/mobile/components/FloatingAssetCard.txt +156 -0
- package/mcp-docs/mobile/components/HStack.txt +235 -0
- package/mcp-docs/mobile/components/HeroSquare.txt +48 -0
- package/mcp-docs/mobile/components/Icon.txt +52 -0
- package/mcp-docs/mobile/components/IconButton.txt +269 -0
- package/mcp-docs/mobile/components/InputChip.txt +188 -0
- package/mcp-docs/mobile/components/Interactable.txt +187 -0
- package/mcp-docs/mobile/components/LineChart.txt +1325 -0
- package/mcp-docs/mobile/components/Link.txt +292 -0
- package/mcp-docs/mobile/components/ListCell.txt +391 -0
- package/mcp-docs/mobile/components/LogoMark.txt +85 -0
- package/mcp-docs/mobile/components/LogoWordMark.txt +94 -0
- package/mcp-docs/mobile/components/Lottie.txt +139 -0
- package/mcp-docs/mobile/components/LottieStatusAnimation.txt +47 -0
- package/mcp-docs/mobile/components/Modal.txt +84 -0
- package/mcp-docs/mobile/components/ModalBody.txt +34 -0
- package/mcp-docs/mobile/components/ModalFooter.txt +25 -0
- package/mcp-docs/mobile/components/ModalHeader.txt +28 -0
- package/mcp-docs/mobile/components/MultiContentModule.txt +380 -0
- package/mcp-docs/mobile/components/NavigationTitle.txt +132 -0
- package/mcp-docs/mobile/components/NavigationTitleSelect.txt +142 -0
- package/mcp-docs/mobile/components/NudgeCard.txt +90 -0
- package/mcp-docs/mobile/components/Numpad.txt +341 -0
- package/mcp-docs/mobile/components/Overlay.txt +152 -0
- package/mcp-docs/mobile/components/PageFooter.txt +161 -0
- package/mcp-docs/mobile/components/PageHeader.txt +186 -0
- package/mcp-docs/mobile/components/PeriodSelector.txt +408 -0
- package/mcp-docs/mobile/components/Pictogram.txt +48 -0
- package/mcp-docs/mobile/components/Point.txt +205 -0
- package/mcp-docs/mobile/components/PortalProvider.txt +79 -0
- package/mcp-docs/mobile/components/Pressable.txt +211 -0
- package/mcp-docs/mobile/components/ProgressBar.txt +130 -0
- package/mcp-docs/mobile/components/ProgressBarWithFixedLabels.txt +161 -0
- package/mcp-docs/mobile/components/ProgressBarWithFloatLabel.txt +138 -0
- package/mcp-docs/mobile/components/ProgressCircle.txt +237 -0
- package/mcp-docs/mobile/components/Radio.txt +242 -0
- package/mcp-docs/mobile/components/RadioCell.txt +202 -0
- package/mcp-docs/mobile/components/RadioGroup.txt +282 -0
- package/mcp-docs/mobile/components/ReferenceLine.txt +153 -0
- package/mcp-docs/mobile/components/RemoteImage.txt +106 -0
- package/mcp-docs/mobile/components/RemoteImageGroup.txt +61 -0
- package/mcp-docs/mobile/components/RollingNumber.txt +789 -0
- package/mcp-docs/mobile/components/Scrubber.txt +204 -0
- package/mcp-docs/mobile/components/SearchInput.txt +192 -0
- package/mcp-docs/mobile/components/SectionHeader.txt +205 -0
- package/mcp-docs/mobile/components/SegmentedTabs.txt +316 -0
- package/mcp-docs/mobile/components/Select.txt +212 -0
- package/mcp-docs/mobile/components/SelectChip.txt +324 -0
- package/mcp-docs/mobile/components/SelectOption.txt +85 -0
- package/mcp-docs/mobile/components/SlideButton.txt +331 -0
- package/mcp-docs/mobile/components/Spacer.txt +84 -0
- package/mcp-docs/mobile/components/Sparkline.txt +123 -0
- package/mcp-docs/mobile/components/SparklineGradient.txt +107 -0
- package/mcp-docs/mobile/components/SparklineInteractive.txt +157 -0
- package/mcp-docs/mobile/components/SparklineInteractiveHeader.txt +73 -0
- package/mcp-docs/mobile/components/Spinner.txt +49 -0
- package/mcp-docs/mobile/components/SpotIcon.txt +48 -0
- package/mcp-docs/mobile/components/SpotRectangle.txt +48 -0
- package/mcp-docs/mobile/components/SpotSquare.txt +48 -0
- package/mcp-docs/mobile/components/Stepper.txt +528 -0
- package/mcp-docs/mobile/components/SubBrandLogoMark.txt +126 -0
- package/mcp-docs/mobile/components/SubBrandLogoWordMark.txt +126 -0
- package/mcp-docs/mobile/components/Switch.txt +98 -0
- package/mcp-docs/mobile/components/TabIndicator.txt +49 -0
- package/mcp-docs/mobile/components/TabLabel.txt +154 -0
- package/mcp-docs/mobile/components/TabNavigation.txt +147 -0
- package/mcp-docs/mobile/components/TabbedChips.txt +143 -0
- package/mcp-docs/mobile/components/Tabs.txt +191 -0
- package/mcp-docs/mobile/components/Tag.txt +301 -0
- package/mcp-docs/mobile/components/Text.txt +212 -0
- package/mcp-docs/mobile/components/TextInput.txt +718 -0
- package/mcp-docs/mobile/components/ThemeProvider.txt +133 -0
- package/mcp-docs/mobile/components/Toast.txt +197 -0
- package/mcp-docs/mobile/components/Tooltip.txt +60 -0
- package/mcp-docs/mobile/components/TopNavBar.txt +162 -0
- package/mcp-docs/mobile/components/Tour.txt +159 -0
- package/mcp-docs/mobile/components/Tray.txt +253 -0
- package/mcp-docs/mobile/components/UpsellCard.txt +322 -0
- package/mcp-docs/mobile/components/VStack.txt +223 -0
- package/mcp-docs/mobile/components/XAxis.txt +622 -0
- package/mcp-docs/mobile/components/YAxis.txt +568 -0
- package/mcp-docs/mobile/getting-started/introduction.txt +99 -0
- package/mcp-docs/mobile/getting-started/mcp-server.txt +94 -0
- package/mcp-docs/mobile/getting-started/playground.txt +25 -0
- package/mcp-docs/mobile/hooks/useDimensions.txt +47 -0
- package/mcp-docs/mobile/hooks/useOverlayContentContext.txt +215 -0
- package/mcp-docs/mobile/hooks/useTheme.txt +110 -0
- package/mcp-docs/mobile/routes.txt +132 -0
- package/mcp-docs/web/components/Accordion.txt +190 -0
- package/mcp-docs/web/components/AccordionItem.txt +32 -0
- package/mcp-docs/web/components/Alert.txt +165 -0
- package/mcp-docs/web/components/AreaChart.txt +511 -0
- package/mcp-docs/web/components/Avatar.txt +212 -0
- package/mcp-docs/web/components/AvatarButton.txt +241 -0
- package/mcp-docs/web/components/Banner.txt +227 -0
- package/mcp-docs/web/components/BarChart.txt +1268 -0
- package/mcp-docs/web/components/Box.txt +176 -0
- package/mcp-docs/web/components/Button.txt +213 -0
- package/mcp-docs/web/components/ButtonGroup.txt +80 -0
- package/mcp-docs/web/components/Calendar.txt +182 -0
- package/mcp-docs/web/components/Carousel.txt +1576 -0
- package/mcp-docs/web/components/CartesianChart.txt +1045 -0
- package/mcp-docs/web/components/CellMedia.txt +57 -0
- package/mcp-docs/web/components/Checkbox.txt +189 -0
- package/mcp-docs/web/components/CheckboxCell.txt +203 -0
- package/mcp-docs/web/components/CheckboxGroup.txt +220 -0
- package/mcp-docs/web/components/Chip.txt +197 -0
- package/mcp-docs/web/components/Coachmark.txt +189 -0
- package/mcp-docs/web/components/Collapsible.txt +120 -0
- package/mcp-docs/web/components/ContainedAssetCard.txt +233 -0
- package/mcp-docs/web/components/ContentCard.txt +368 -0
- package/mcp-docs/web/components/ContentCardBody.txt +138 -0
- package/mcp-docs/web/components/ContentCardFooter.txt +130 -0
- package/mcp-docs/web/components/ContentCardHeader.txt +148 -0
- package/mcp-docs/web/components/ContentCell.txt +220 -0
- package/mcp-docs/web/components/ControlGroup.txt +437 -0
- package/mcp-docs/web/components/DatePicker.txt +506 -0
- package/mcp-docs/web/components/Divider.txt +144 -0
- package/mcp-docs/web/components/DotCount.txt +150 -0
- package/mcp-docs/web/components/DotStatusColor.txt +59 -0
- package/mcp-docs/web/components/DotSymbol.txt +138 -0
- package/mcp-docs/web/components/Dropdown.txt +120 -0
- package/mcp-docs/web/components/Fallback.txt +164 -0
- package/mcp-docs/web/components/FloatingAssetCard.txt +251 -0
- package/mcp-docs/web/components/FullscreenAlert.txt +70 -0
- package/mcp-docs/web/components/FullscreenModal.txt +146 -0
- package/mcp-docs/web/components/FullscreenModalLayout.txt +188 -0
- package/mcp-docs/web/components/Grid.txt +237 -0
- package/mcp-docs/web/components/GridColumn.txt +210 -0
- package/mcp-docs/web/components/HStack.txt +237 -0
- package/mcp-docs/web/components/HeroSquare.txt +49 -0
- package/mcp-docs/web/components/Icon.txt +146 -0
- package/mcp-docs/web/components/IconButton.txt +391 -0
- package/mcp-docs/web/components/InputChip.txt +188 -0
- package/mcp-docs/web/components/Interactable.txt +194 -0
- package/mcp-docs/web/components/LineChart.txt +1577 -0
- package/mcp-docs/web/components/Link.txt +244 -0
- package/mcp-docs/web/components/ListCell.txt +397 -0
- package/mcp-docs/web/components/LogoMark.txt +85 -0
- package/mcp-docs/web/components/LogoWordMark.txt +94 -0
- package/mcp-docs/web/components/Lottie.txt +158 -0
- package/mcp-docs/web/components/LottieStatusAnimation.txt +58 -0
- package/mcp-docs/web/components/MediaQueryProvider.txt +109 -0
- package/mcp-docs/web/components/Modal.txt +193 -0
- package/mcp-docs/web/components/ModalBody.txt +118 -0
- package/mcp-docs/web/components/ModalFooter.txt +120 -0
- package/mcp-docs/web/components/ModalHeader.txt +124 -0
- package/mcp-docs/web/components/MultiContentModule.txt +382 -0
- package/mcp-docs/web/components/NavigationBar.txt +103 -0
- package/mcp-docs/web/components/NavigationTitle.txt +26 -0
- package/mcp-docs/web/components/NavigationTitleSelect.txt +46 -0
- package/mcp-docs/web/components/NudgeCard.txt +182 -0
- package/mcp-docs/web/components/Overlay.txt +172 -0
- package/mcp-docs/web/components/PageFooter.txt +185 -0
- package/mcp-docs/web/components/PageHeader.txt +244 -0
- package/mcp-docs/web/components/Pagination.txt +500 -0
- package/mcp-docs/web/components/PeriodSelector.txt +704 -0
- package/mcp-docs/web/components/Pictogram.txt +49 -0
- package/mcp-docs/web/components/Point.txt +461 -0
- package/mcp-docs/web/components/PortalProvider.txt +77 -0
- package/mcp-docs/web/components/Pressable.txt +194 -0
- package/mcp-docs/web/components/ProgressBar.txt +164 -0
- package/mcp-docs/web/components/ProgressBarWithFixedLabels.txt +213 -0
- package/mcp-docs/web/components/ProgressBarWithFloatLabel.txt +182 -0
- package/mcp-docs/web/components/ProgressCircle.txt +444 -0
- package/mcp-docs/web/components/Radio.txt +220 -0
- package/mcp-docs/web/components/RadioCell.txt +216 -0
- package/mcp-docs/web/components/RadioGroup.txt +289 -0
- package/mcp-docs/web/components/ReferenceLine.txt +452 -0
- package/mcp-docs/web/components/RemoteImage.txt +166 -0
- package/mcp-docs/web/components/RemoteImageGroup.txt +87 -0
- package/mcp-docs/web/components/RollingNumber.txt +1022 -0
- package/mcp-docs/web/components/Scrubber.txt +232 -0
- package/mcp-docs/web/components/SearchInput.txt +118 -0
- package/mcp-docs/web/components/SectionHeader.txt +218 -0
- package/mcp-docs/web/components/SegmentedTabs.txt +325 -0
- package/mcp-docs/web/components/Select.txt +225 -0
- package/mcp-docs/web/components/SelectChip.txt +315 -0
- package/mcp-docs/web/components/SelectOption.txt +166 -0
- package/mcp-docs/web/components/Sidebar.txt +350 -0
- package/mcp-docs/web/components/SidebarItem.txt +132 -0
- package/mcp-docs/web/components/SidebarMoreMenu.txt +31 -0
- package/mcp-docs/web/components/Spacer.txt +174 -0
- package/mcp-docs/web/components/Sparkline.txt +123 -0
- package/mcp-docs/web/components/SparklineGradient.txt +107 -0
- package/mcp-docs/web/components/SparklineInteractive.txt +154 -0
- package/mcp-docs/web/components/SparklineInteractiveHeader.txt +77 -0
- package/mcp-docs/web/components/Spinner.txt +129 -0
- package/mcp-docs/web/components/SpotIcon.txt +49 -0
- package/mcp-docs/web/components/SpotRectangle.txt +49 -0
- package/mcp-docs/web/components/SpotSquare.txt +49 -0
- package/mcp-docs/web/components/Stepper.txt +683 -0
- package/mcp-docs/web/components/SubBrandLogoMark.txt +126 -0
- package/mcp-docs/web/components/SubBrandLogoWordMark.txt +126 -0
- package/mcp-docs/web/components/Switch.txt +86 -0
- package/mcp-docs/web/components/TabIndicator.txt +49 -0
- package/mcp-docs/web/components/TabLabel.txt +159 -0
- package/mcp-docs/web/components/TabNavigation.txt +160 -0
- package/mcp-docs/web/components/TabbedChips.txt +156 -0
- package/mcp-docs/web/components/Table.txt +368 -0
- package/mcp-docs/web/components/TableBody.txt +84 -0
- package/mcp-docs/web/components/TableCaption.txt +103 -0
- package/mcp-docs/web/components/TableCell.txt +166 -0
- package/mcp-docs/web/components/TableCellFallback.txt +98 -0
- package/mcp-docs/web/components/TableFooter.txt +84 -0
- package/mcp-docs/web/components/TableHeader.txt +101 -0
- package/mcp-docs/web/components/TableRow.txt +141 -0
- package/mcp-docs/web/components/Tabs.txt +213 -0
- package/mcp-docs/web/components/Tag.txt +305 -0
- package/mcp-docs/web/components/Text.txt +233 -0
- package/mcp-docs/web/components/TextInput.txt +653 -0
- package/mcp-docs/web/components/ThemeProvider.txt +200 -0
- package/mcp-docs/web/components/TileButton.txt +159 -0
- package/mcp-docs/web/components/Toast.txt +204 -0
- package/mcp-docs/web/components/Tooltip.txt +90 -0
- package/mcp-docs/web/components/Tour.txt +180 -0
- package/mcp-docs/web/components/Tray.txt +289 -0
- package/mcp-docs/web/components/UpsellCard.txt +320 -0
- package/mcp-docs/web/components/VStack.txt +225 -0
- package/mcp-docs/web/components/XAxis.txt +620 -0
- package/mcp-docs/web/components/YAxis.txt +549 -0
- package/mcp-docs/web/getting-started/introduction.txt +99 -0
- package/mcp-docs/web/getting-started/mcp-server.txt +94 -0
- package/mcp-docs/web/getting-started/playground.txt +25 -0
- package/mcp-docs/web/hooks/useBreakpoints.txt +33 -0
- package/mcp-docs/web/hooks/useDimensions.txt +55 -0
- package/mcp-docs/web/hooks/useHasMounted.txt +55 -0
- package/mcp-docs/web/hooks/useIsoEffect.txt +42 -0
- package/mcp-docs/web/hooks/useMediaQuery.txt +94 -0
- package/mcp-docs/web/hooks/useOverlayContentContext.txt +217 -0
- package/mcp-docs/web/hooks/useScrollBlocker.txt +63 -0
- package/mcp-docs/web/hooks/useTheme.txt +105 -0
- package/mcp-docs/web/routes.txt +155 -0
- package/package.json +1 -1
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
# Pressable
|
|
2
|
+
|
|
3
|
+
Extends the Interactable component to add accessibility support for press interactions.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```jsx
|
|
8
|
+
import { Pressable } from '@coinbase/cds-web/system/Pressable'
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Props
|
|
12
|
+
|
|
13
|
+
| Prop | Type | Required | Default | Description |
|
|
14
|
+
| --- | --- | --- | --- | --- |
|
|
15
|
+
| `alignContent` | `ResponsiveProp<center \| normal \| start \| end \| flex-start \| flex-end \| stretch \| baseline \| first baseline \| last baseline \| space-between \| space-around \| space-evenly>` | No | `-` | - |
|
|
16
|
+
| `alignItems` | `ResponsiveProp<center \| normal \| start \| end \| flex-start \| flex-end \| self-start \| self-end \| stretch \| baseline \| first baseline \| last baseline>` | No | `-` | - |
|
|
17
|
+
| `alignSelf` | `ResponsiveProp<center \| normal \| auto \| start \| end \| flex-start \| flex-end \| self-start \| self-end \| stretch \| baseline \| first baseline \| last baseline>` | No | `-` | - |
|
|
18
|
+
| `as` | `symbol \| object \| style \| svg \| a \| abbr \| address \| area \| article \| aside \| audio \| b \| base \| bdi \| bdo \| big \| blockquote \| body \| br \| button \| canvas \| caption \| center \| cite \| code \| col \| colgroup \| data \| datalist \| dd \| del \| details \| dfn \| dialog \| div \| dl \| dt \| em \| embed \| fieldset \| figcaption \| figure \| footer \| form \| h1 \| h2 \| h3 \| h4 \| h5 \| h6 \| head \| header \| hgroup \| hr \| html \| i \| iframe \| img \| input \| ins \| kbd \| keygen \| label \| legend \| li \| link \| main \| map \| mark \| menu \| menuitem \| meta \| meter \| nav \| noindex \| noscript \| ol \| optgroup \| option \| output \| p \| param \| picture \| pre \| progress \| q \| rp \| rt \| ruby \| s \| samp \| search \| slot \| script \| section \| select \| small \| source \| span \| strong \| sub \| summary \| sup \| table \| template \| tbody \| td \| textarea \| tfoot \| th \| thead \| time \| title \| tr \| track \| u \| ul \| var \| video \| wbr \| webview \| animate \| animateMotion \| animateTransform \| circle \| clipPath \| defs \| desc \| ellipse \| feBlend \| feColorMatrix \| feComponentTransfer \| feComposite \| feConvolveMatrix \| feDiffuseLighting \| feDisplacementMap \| feDistantLight \| feDropShadow \| feFlood \| feFuncA \| feFuncB \| feFuncG \| feFuncR \| feGaussianBlur \| feImage \| feMerge \| feMergeNode \| feMorphology \| feOffset \| fePointLight \| feSpecularLighting \| feSpotLight \| feTile \| feTurbulence \| filter \| foreignObject \| g \| image \| line \| linearGradient \| marker \| mask \| metadata \| mpath \| path \| pattern \| polygon \| polyline \| radialGradient \| rect \| set \| stop \| switch \| text \| textPath \| tspan \| use \| view \| ComponentClass<any, any> \| FunctionComponent<any>` | No | `-` | - |
|
|
19
|
+
| `aspectRatio` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| auto` | No | `-` | - |
|
|
20
|
+
| `background` | `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 | `-` | Background color of the overlay (element being interacted with). |
|
|
21
|
+
| `blendStyles` | `{ background?: string; pressedBackground?: string \| undefined; disabledBackground?: string \| undefined; hoveredBackground?: string \| undefined; borderColor?: string \| undefined; pressedBorderColor?: string \| undefined; disabledBorderColor?: string \| undefined; hoveredBorderColor?: string \| undefined; } \| undefined` | No | `-` | Custom color overrides for different interaction states. Base colors (background, borderColor) are used directly, while interaction state colors (hovered, pressed, disabled) are used as alternative base colors for blending calculations with blend strength and color scheme considerations. |
|
|
22
|
+
| `block` | `boolean` | No | `-` | Set element to block and expand to 100% width. |
|
|
23
|
+
| `borderBottomLeftRadius` | `0 \| 100 \| 200 \| 300 \| 400 \| 500 \| 600 \| 700 \| 800 \| 900 \| 1000` | No | `-` | - |
|
|
24
|
+
| `borderBottomRightRadius` | `0 \| 100 \| 200 \| 300 \| 400 \| 500 \| 600 \| 700 \| 800 \| 900 \| 1000` | No | `-` | - |
|
|
25
|
+
| `borderBottomWidth` | `0 \| 100 \| 200 \| 300 \| 400 \| 500` | No | `-` | - |
|
|
26
|
+
| `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 | `-` | Border color of the element. |
|
|
27
|
+
| `borderEndWidth` | `0 \| 100 \| 200 \| 300 \| 400 \| 500` | No | `-` | - |
|
|
28
|
+
| `borderRadius` | `0 \| 100 \| 200 \| 300 \| 400 \| 500 \| 600 \| 700 \| 800 \| 900 \| 1000` | No | `-` | - |
|
|
29
|
+
| `borderStartWidth` | `0 \| 100 \| 200 \| 300 \| 400 \| 500` | No | `-` | - |
|
|
30
|
+
| `borderTopLeftRadius` | `0 \| 100 \| 200 \| 300 \| 400 \| 500 \| 600 \| 700 \| 800 \| 900 \| 1000` | No | `-` | - |
|
|
31
|
+
| `borderTopRightRadius` | `0 \| 100 \| 200 \| 300 \| 400 \| 500 \| 600 \| 700 \| 800 \| 900 \| 1000` | No | `-` | - |
|
|
32
|
+
| `borderTopWidth` | `0 \| 100 \| 200 \| 300 \| 400 \| 500` | No | `-` | - |
|
|
33
|
+
| `borderWidth` | `0 \| 100 \| 200 \| 300 \| 400 \| 500` | No | `-` | - |
|
|
34
|
+
| `bordered` | `boolean` | No | `-` | Add a border around all sides of the box. |
|
|
35
|
+
| `borderedBottom` | `boolean` | No | `-` | Add a border to the bottom side of the box. |
|
|
36
|
+
| `borderedEnd` | `boolean` | No | `-` | Add a border to the trailing side of the box. |
|
|
37
|
+
| `borderedHorizontal` | `boolean` | No | `-` | Add a border to the leading and trailing sides of the box. |
|
|
38
|
+
| `borderedStart` | `boolean` | No | `-` | Add a border to the leading side of the box. |
|
|
39
|
+
| `borderedTop` | `boolean` | No | `-` | Add a border to the top side of the box. |
|
|
40
|
+
| `borderedVertical` | `boolean` | No | `-` | Add a border to the top and bottom sides of the box. |
|
|
41
|
+
| `bottom` | `ResponsiveProp<Bottom<string \| number>>` | No | `-` | - |
|
|
42
|
+
| `className` | `string` | No | `-` | Apply class names to the outer container. |
|
|
43
|
+
| `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 | `-` | - |
|
|
44
|
+
| `columnGap` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `-` | - |
|
|
45
|
+
| `dangerouslySetBackground` | `string` | No | `-` | - |
|
|
46
|
+
| `disabled` | `boolean` | No | `-` | Is the element currently disabled. |
|
|
47
|
+
| `display` | `ResponsiveProp<grid \| revert \| none \| block \| inline \| inline-block \| flex \| inline-flex \| inline-grid \| contents \| flow-root \| list-item>` | No | `-` | - |
|
|
48
|
+
| `elevation` | `0 \| 1 \| 2` | No | `-` | - |
|
|
49
|
+
| `flexBasis` | `ResponsiveProp<FlexBasis<string \| number>>` | No | `-` | - |
|
|
50
|
+
| `flexDirection` | `ResponsiveProp<column \| row \| row-reverse \| column-reverse>` | No | `-` | - |
|
|
51
|
+
| `flexGrow` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset` | No | `-` | - |
|
|
52
|
+
| `flexShrink` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset` | No | `-` | - |
|
|
53
|
+
| `flexWrap` | `ResponsiveProp<nowrap \| wrap \| wrap-reverse>` | No | `-` | - |
|
|
54
|
+
| `focusable` | `boolean` | No | `-` | - |
|
|
55
|
+
| `font` | `ResponsiveProp<FontFamily \| inherit>` | No | `-` | - |
|
|
56
|
+
| `fontFamily` | `ResponsiveProp<FontFamily \| inherit>` | No | `-` | - |
|
|
57
|
+
| `fontSize` | `ResponsiveProp<FontSize \| inherit>` | No | `-` | - |
|
|
58
|
+
| `fontWeight` | `ResponsiveProp<FontWeight \| inherit>` | No | `-` | - |
|
|
59
|
+
| `gap` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `-` | - |
|
|
60
|
+
| `grid` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| none` | No | `-` | - |
|
|
61
|
+
| `gridArea` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| auto` | No | `-` | - |
|
|
62
|
+
| `gridAutoColumns` | `ResponsiveProp<GridAutoColumns<string \| number>>` | No | `-` | - |
|
|
63
|
+
| `gridAutoFlow` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| row \| column \| dense` | No | `-` | - |
|
|
64
|
+
| `gridAutoRows` | `ResponsiveProp<GridAutoRows<string \| number>>` | No | `-` | - |
|
|
65
|
+
| `gridColumn` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| auto` | No | `-` | - |
|
|
66
|
+
| `gridColumnEnd` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| auto` | No | `-` | - |
|
|
67
|
+
| `gridColumnStart` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| auto` | No | `-` | - |
|
|
68
|
+
| `gridRow` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| auto` | No | `-` | - |
|
|
69
|
+
| `gridRowEnd` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| auto` | No | `-` | - |
|
|
70
|
+
| `gridRowStart` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| auto` | No | `-` | - |
|
|
71
|
+
| `gridTemplate` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| none` | No | `-` | - |
|
|
72
|
+
| `gridTemplateAreas` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| none` | No | `-` | - |
|
|
73
|
+
| `gridTemplateColumns` | `ResponsiveProp<GridTemplateColumns<string \| number>>` | No | `-` | - |
|
|
74
|
+
| `gridTemplateRows` | `ResponsiveProp<GridTemplateRows<string \| number>>` | No | `-` | - |
|
|
75
|
+
| `height` | `ResponsiveProp<Height<string \| number>>` | No | `-` | - |
|
|
76
|
+
| `justifyContent` | `ResponsiveProp<left \| right \| center \| normal \| start \| end \| flex-start \| flex-end \| stretch \| space-between \| space-around \| space-evenly>` | No | `-` | - |
|
|
77
|
+
| `left` | `ResponsiveProp<Left<string \| number>>` | No | `-` | - |
|
|
78
|
+
| `lineHeight` | `ResponsiveProp<LineHeight \| inherit>` | No | `-` | - |
|
|
79
|
+
| `loading` | `boolean` | No | `-` | Is the element currenty loading. When set to true, will disable element from press and keyboard events |
|
|
80
|
+
| `margin` | `ResponsiveProp<0 \| -5 \| -10 \| -0.25 \| -0.5 \| -0.75 \| -1 \| -1.5 \| -2 \| -3 \| -4 \| -6 \| -7 \| -8 \| -9>` | No | `-` | - |
|
|
81
|
+
| `marginBottom` | `ResponsiveProp<0 \| -5 \| -10 \| -0.25 \| -0.5 \| -0.75 \| -1 \| -1.5 \| -2 \| -3 \| -4 \| -6 \| -7 \| -8 \| -9>` | No | `-` | - |
|
|
82
|
+
| `marginEnd` | `ResponsiveProp<0 \| -5 \| -10 \| -0.25 \| -0.5 \| -0.75 \| -1 \| -1.5 \| -2 \| -3 \| -4 \| -6 \| -7 \| -8 \| -9>` | No | `-` | - |
|
|
83
|
+
| `marginStart` | `ResponsiveProp<0 \| -5 \| -10 \| -0.25 \| -0.5 \| -0.75 \| -1 \| -1.5 \| -2 \| -3 \| -4 \| -6 \| -7 \| -8 \| -9>` | No | `-` | - |
|
|
84
|
+
| `marginTop` | `ResponsiveProp<0 \| -5 \| -10 \| -0.25 \| -0.5 \| -0.75 \| -1 \| -1.5 \| -2 \| -3 \| -4 \| -6 \| -7 \| -8 \| -9>` | No | `-` | - |
|
|
85
|
+
| `marginX` | `ResponsiveProp<0 \| -5 \| -10 \| -0.25 \| -0.5 \| -0.75 \| -1 \| -1.5 \| -2 \| -3 \| -4 \| -6 \| -7 \| -8 \| -9>` | No | `-` | - |
|
|
86
|
+
| `marginY` | `ResponsiveProp<0 \| -5 \| -10 \| -0.25 \| -0.5 \| -0.75 \| -1 \| -1.5 \| -2 \| -3 \| -4 \| -6 \| -7 \| -8 \| -9>` | No | `-` | - |
|
|
87
|
+
| `maxHeight` | `ResponsiveProp<MaxHeight<string \| number>>` | No | `-` | - |
|
|
88
|
+
| `maxWidth` | `ResponsiveProp<MaxWidth<string \| number>>` | No | `-` | - |
|
|
89
|
+
| `minHeight` | `ResponsiveProp<MinHeight<string \| number>>` | No | `-` | - |
|
|
90
|
+
| `minWidth` | `ResponsiveProp<MinWidth<string \| number>>` | No | `-` | - |
|
|
91
|
+
| `noScaleOnPress` | `boolean` | No | `-` | Dont scale element on press. |
|
|
92
|
+
| `opacity` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset` | No | `-` | - |
|
|
93
|
+
| `overflow` | `ResponsiveProp<hidden \| auto \| visible \| clip \| scroll>` | No | `-` | - |
|
|
94
|
+
| `padding` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `0` | - |
|
|
95
|
+
| `paddingBottom` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `-` | - |
|
|
96
|
+
| `paddingEnd` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `-` | - |
|
|
97
|
+
| `paddingStart` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `-` | - |
|
|
98
|
+
| `paddingTop` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `-` | - |
|
|
99
|
+
| `paddingX` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `-` | - |
|
|
100
|
+
| `paddingY` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `-` | - |
|
|
101
|
+
| `pin` | `top \| bottom \| left \| right \| all` | No | `-` | Direction in which to absolutely pin the box. |
|
|
102
|
+
| `position` | `ResponsiveProp<fixed \| static \| relative \| absolute \| sticky>` | No | `-` | - |
|
|
103
|
+
| `pressed` | `boolean` | No | `-` | Is the element being pressed. Primarily a mobile feature, but can be used on the web. |
|
|
104
|
+
| `ref` | `any` | No | `-` | - |
|
|
105
|
+
| `right` | `ResponsiveProp<Right<string \| number>>` | No | `-` | - |
|
|
106
|
+
| `rowGap` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `-` | - |
|
|
107
|
+
| `style` | `CSSProperties` | No | `-` | - |
|
|
108
|
+
| `testID` | `string` | No | `-` | Used to locate this element in unit and end-to-end tests. Under the hood, testID translates to data-testid on Web. On Mobile, testID stays the same - testID |
|
|
109
|
+
| `textAlign` | `ResponsiveProp<center \| start \| end \| justify>` | No | `-` | - |
|
|
110
|
+
| `textDecoration` | `ResponsiveProp<none \| underline \| overline \| line-through \| underline overline \| underline double>` | No | `-` | - |
|
|
111
|
+
| `textTransform` | `ResponsiveProp<capitalize \| lowercase \| none \| uppercase>` | No | `-` | - |
|
|
112
|
+
| `top` | `ResponsiveProp<Top<string \| number>>` | No | `-` | - |
|
|
113
|
+
| `transform` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| none` | No | `-` | - |
|
|
114
|
+
| `transparentWhileInactive` | `boolean` | No | `-` | Mark the background and border as transparent until the element is interacted with (hovered, pressed, etc). Must be used in conjunction with the pressed prop |
|
|
115
|
+
| `transparentWhilePressed` | `boolean` | No | `-` | Mark the background and border as transparent even while element is interacted with (elevation underlay issue). Must be used in conjunction with the pressed prop |
|
|
116
|
+
| `userSelect` | `ResponsiveProp<text \| none \| auto \| all>` | No | `-` | - |
|
|
117
|
+
| `visibility` | `ResponsiveProp<hidden \| visible>` | No | `-` | - |
|
|
118
|
+
| `width` | `ResponsiveProp<Width<string \| number>>` | No | `-` | - |
|
|
119
|
+
| `zIndex` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| auto` | No | `-` | - |
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
## Examples
|
|
123
|
+
|
|
124
|
+
### Basic Pressable
|
|
125
|
+
|
|
126
|
+
Pressables support an `onClick` prop for handling click/press interactions. When being pressed, the element will scale down to mimic a real-world button press. If this functionality is not desired, pass the `noScaleOnPress` prop.
|
|
127
|
+
|
|
128
|
+
```jsx live
|
|
129
|
+
<Pressable
|
|
130
|
+
onClick={console.log}
|
|
131
|
+
as="button"
|
|
132
|
+
background="bgAlternate"
|
|
133
|
+
borderColor="lineHeavy"
|
|
134
|
+
borderWidth={100}
|
|
135
|
+
borderRadius={300}
|
|
136
|
+
>
|
|
137
|
+
<Box as="span" padding={2}>
|
|
138
|
+
<Text font="headline" as="span">
|
|
139
|
+
Click me...
|
|
140
|
+
</Text>
|
|
141
|
+
</Box>
|
|
142
|
+
</Pressable>
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### Pressable with Transparent Background
|
|
146
|
+
|
|
147
|
+
```jsx live
|
|
148
|
+
<Pressable
|
|
149
|
+
onClick={console.log}
|
|
150
|
+
as="button"
|
|
151
|
+
background="transparent"
|
|
152
|
+
borderColor="lineHeavy"
|
|
153
|
+
borderWidth={100}
|
|
154
|
+
borderRadius={300}
|
|
155
|
+
>
|
|
156
|
+
<Box as="span" padding={2}>
|
|
157
|
+
<Text font="headline" as="span">
|
|
158
|
+
Click me...
|
|
159
|
+
</Text>
|
|
160
|
+
</Box>
|
|
161
|
+
</Pressable>
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### Block Pressable
|
|
165
|
+
|
|
166
|
+
Pressables expand to 100% width when the `block` prop is passed.
|
|
167
|
+
|
|
168
|
+
```jsx live
|
|
169
|
+
<Pressable
|
|
170
|
+
block
|
|
171
|
+
as="button"
|
|
172
|
+
onClick={console.log}
|
|
173
|
+
background="bgAlternate"
|
|
174
|
+
borderColor="lineHeavy"
|
|
175
|
+
borderWidth={100}
|
|
176
|
+
borderRadius={300}
|
|
177
|
+
>
|
|
178
|
+
<Box as="span" padding={2}>
|
|
179
|
+
<Text font="headline" as="span">
|
|
180
|
+
Click me...
|
|
181
|
+
</Text>
|
|
182
|
+
</Box>
|
|
183
|
+
</Pressable>
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### A11y
|
|
187
|
+
|
|
188
|
+
On mobile, all [AccessibilityProps](https://reactnative.dev/docs/accessibility#accessibility-properties) can be passed, with `accessibilityComponentType` and `accessibilityTraits` defaulting to `button`, and `accessibilityState` being set based on loading/disabled props.
|
|
189
|
+
|
|
190
|
+
On web, all [ARIA attributes](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) can be passed, with `aria-busy` being set based on loading/disabled props.
|
|
191
|
+
|
|
192
|
+
> The `as` prop allows any component to be used, but be sure you are using semantically correct elements! For example, no clickable divs.
|
|
193
|
+
|
|
194
|
+
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
# ProgressBar
|
|
2
|
+
|
|
3
|
+
A visual indicator of completion progress.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```jsx
|
|
8
|
+
import { ProgressBar } from '@coinbase/cds-web/visualizations/ProgressBar'
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Props
|
|
12
|
+
|
|
13
|
+
| Prop | Type | Required | Default | Description |
|
|
14
|
+
| --- | --- | --- | --- | --- |
|
|
15
|
+
| `progress` | `number` | Yes | `-` | Number between 0-1 representing the progress percentage |
|
|
16
|
+
| `className` | `string` | No | `-` | Custom class name for the progress bar root. |
|
|
17
|
+
| `classNames` | `{ root?: string; progress?: string \| undefined; } \| undefined` | No | `-` | Custom class names for the progress bar. |
|
|
18
|
+
| `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. |
|
|
19
|
+
| `disableAnimateOnMount` | `boolean` | No | `false` | Disable animation on component mount |
|
|
20
|
+
| `disabled` | `boolean` | No | `false` | Toggle used to show a disabled progress visualization |
|
|
21
|
+
| `key` | `Key \| null` | No | `-` | - |
|
|
22
|
+
| `onAnimationEnd` | `(() => void)` | No | `-` | Callback fired when the progress animation ends. |
|
|
23
|
+
| `onAnimationStart` | `(() => void)` | No | `-` | Callback fired when the progress animation starts. |
|
|
24
|
+
| `ref` | `RefObject<HTMLDivElement> \| ((instance: HTMLDivElement \| null) => void) \| null` | No | `-` | - |
|
|
25
|
+
| `style` | `CSSProperties` | No | `-` | Custom styles for the progress bar root. |
|
|
26
|
+
| `styles` | `{ root?: CSSProperties; progress?: CSSProperties \| undefined; } \| undefined` | No | `-` | Custom styles for the progress bar. |
|
|
27
|
+
| `testID` | `string` | No | `-` | Used to locate this element in unit and end-to-end tests. Under the hood, testID translates to data-testid on Web. On Mobile, testID stays the same - testID |
|
|
28
|
+
| `weight` | `normal \| heavy \| thin \| semiheavy` | No | `normal` | Toggle used to change thickness of progress visualization |
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
## Examples
|
|
32
|
+
|
|
33
|
+
#### Default
|
|
34
|
+
|
|
35
|
+
```tsx live
|
|
36
|
+
<VStack gap={2}>
|
|
37
|
+
<ProgressBar progress={0} />
|
|
38
|
+
<ProgressBar progress={0.5} />
|
|
39
|
+
<ProgressBar progress={1} />
|
|
40
|
+
</VStack>
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
#### Weights
|
|
44
|
+
|
|
45
|
+
```tsx live
|
|
46
|
+
<VStack gap={2}>
|
|
47
|
+
<ProgressBar weight="thin" progress={0.3} />
|
|
48
|
+
<ProgressBar weight="normal" progress={0.5} />
|
|
49
|
+
<ProgressBar weight="semiheavy" progress={0.7} />
|
|
50
|
+
<ProgressBar weight="heavy" progress={0.9} />
|
|
51
|
+
</VStack>
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
#### Disabled
|
|
55
|
+
|
|
56
|
+
```tsx live
|
|
57
|
+
<VStack gap={2}>
|
|
58
|
+
<ProgressBar disabled progress={0} />
|
|
59
|
+
<ProgressBar disabled progress={0.5} />
|
|
60
|
+
<ProgressBar disabled progress={1} />
|
|
61
|
+
</VStack>
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
#### Colors
|
|
65
|
+
|
|
66
|
+
```tsx live
|
|
67
|
+
<VStack gap={2}>
|
|
68
|
+
<ProgressBar color="bgPositive" progress={0.5} />
|
|
69
|
+
<ProgressBar color="bgNegative" progress={0.5} />
|
|
70
|
+
<ProgressBar color="bgPrimary" progress={0.5} />
|
|
71
|
+
<ProgressBar color="bgWarning" progress={0.5} />
|
|
72
|
+
<ProgressBar color="fg" progress={0.5} />
|
|
73
|
+
<ProgressBar disabled color="fg" progress={0.5} />
|
|
74
|
+
</VStack>
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
#### Custom Styles
|
|
78
|
+
|
|
79
|
+
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.
|
|
80
|
+
|
|
81
|
+
```tsx live
|
|
82
|
+
<VStack gap={2}>
|
|
83
|
+
<ProgressBar
|
|
84
|
+
progress={1}
|
|
85
|
+
styles={{
|
|
86
|
+
root: {
|
|
87
|
+
background: 'transparent',
|
|
88
|
+
},
|
|
89
|
+
progress: {
|
|
90
|
+
background: 'linear-gradient(to right, var(--color-bgPrimaryWash), var(--color-bgPrimary))',
|
|
91
|
+
},
|
|
92
|
+
}}
|
|
93
|
+
/>
|
|
94
|
+
<ProgressBar
|
|
95
|
+
progress={0.5}
|
|
96
|
+
styles={{
|
|
97
|
+
root: { height: 'var(--space-4)' },
|
|
98
|
+
}}
|
|
99
|
+
/>
|
|
100
|
+
<ProgressBar
|
|
101
|
+
progress={0.3}
|
|
102
|
+
styles={{
|
|
103
|
+
root: {
|
|
104
|
+
height: 'var(--space-8)',
|
|
105
|
+
borderRadius: 'var(--borderRadius-1000)',
|
|
106
|
+
},
|
|
107
|
+
progress: {
|
|
108
|
+
borderRadius: 'var(--borderRadius-1000)',
|
|
109
|
+
background: 'linear-gradient(to right, rgb(var(--teal40)), rgb(var(--green40)))',
|
|
110
|
+
},
|
|
111
|
+
}}
|
|
112
|
+
/>
|
|
113
|
+
</VStack>
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
#### Interactive Demo
|
|
117
|
+
|
|
118
|
+
This is for demo purposes. ProgressContainerWithButtons isn't designed for production usage.
|
|
119
|
+
|
|
120
|
+
```tsx live
|
|
121
|
+
<ProgressContainerWithButtons>
|
|
122
|
+
{({ calculateProgress }) => (
|
|
123
|
+
<VStack gap={2}>
|
|
124
|
+
<ProgressBar progress={calculateProgress(0)} />
|
|
125
|
+
<ProgressBar progress={calculateProgress(0.2)} />
|
|
126
|
+
</VStack>
|
|
127
|
+
)}
|
|
128
|
+
</ProgressContainerWithButtons>
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### Animation Callbacks
|
|
132
|
+
|
|
133
|
+
You can use the `onAnimationStart` and `onAnimationEnd` callbacks to track the progress of the animation.
|
|
134
|
+
|
|
135
|
+
```jsx live
|
|
136
|
+
function Example() {
|
|
137
|
+
const [animationStatus, setAnimationStatus] = React.useState('Ready');
|
|
138
|
+
|
|
139
|
+
const handleAnimationStart = useCallback(() => {
|
|
140
|
+
setAnimationStatus('Animating...');
|
|
141
|
+
}, []);
|
|
142
|
+
|
|
143
|
+
const handleAnimationEnd = useCallback(() => {
|
|
144
|
+
setAnimationStatus('Animation Ended');
|
|
145
|
+
}, []);
|
|
146
|
+
|
|
147
|
+
return (
|
|
148
|
+
<ProgressContainerWithButtons>
|
|
149
|
+
{({ calculateProgress }) => (
|
|
150
|
+
<VStack gap={2}>
|
|
151
|
+
<Text>Animation Status: {animationStatus}</Text>
|
|
152
|
+
<ProgressBar
|
|
153
|
+
onAnimationEnd={handleAnimationEnd}
|
|
154
|
+
onAnimationStart={handleAnimationStart}
|
|
155
|
+
progress={calculateProgress(0.2)}
|
|
156
|
+
/>
|
|
157
|
+
</VStack>
|
|
158
|
+
)}
|
|
159
|
+
</ProgressContainerWithButtons>
|
|
160
|
+
);
|
|
161
|
+
}
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
# ProgressBarWithFixedLabels
|
|
2
|
+
|
|
3
|
+
A ProgressBar with fixed labels at defined positions.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```jsx
|
|
8
|
+
import { ProgressBarWithFixedLabels } from '@coinbase/cds-web/visualizations/ProgressBarWithFixedLabels'
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Props
|
|
12
|
+
|
|
13
|
+
| Prop | Type | Required | Default | Description |
|
|
14
|
+
| --- | --- | --- | --- | --- |
|
|
15
|
+
| `className` | `string` | No | `-` | Custom class name for the progress bar with fixed labels root. |
|
|
16
|
+
| `classNames` | `{ root?: string; labelContainer?: string \| undefined; startLabel?: string \| undefined; endLabel?: string \| undefined; } \| undefined` | No | `-` | Custom class names for the progress bar with fixed labels. |
|
|
17
|
+
| `disabled` | `boolean` | No | `false` | Toggle used to show a disabled progress visualization |
|
|
18
|
+
| `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. |
|
|
19
|
+
| `labelPlacement` | `above \| below \| beside` | No | `beside` | Position of label relative to the bar |
|
|
20
|
+
| `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. |
|
|
21
|
+
| `style` | `CSSProperties` | No | `-` | Custom styles for the progress bar with fixed labels root. |
|
|
22
|
+
| `styles` | `{ root?: CSSProperties; labelContainer?: CSSProperties \| undefined; startLabel?: CSSProperties \| undefined; endLabel?: CSSProperties \| undefined; } \| undefined` | No | `-` | Custom styles for the progress bar with fixed labels. |
|
|
23
|
+
| `testID` | `string` | No | `-` | Used to locate this element in unit and end-to-end tests. Under the hood, testID translates to data-testid on Web. On Mobile, testID stays the same - testID |
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
## Examples
|
|
27
|
+
|
|
28
|
+
### Label Below
|
|
29
|
+
|
|
30
|
+
```jsx live
|
|
31
|
+
<VStack gap={2}>
|
|
32
|
+
<ProgressBarWithFixedLabels startLabel={0} endLabel={20} labelPlacement="below">
|
|
33
|
+
<ProgressBar progress={0.2} />
|
|
34
|
+
</ProgressBarWithFixedLabels>
|
|
35
|
+
<ProgressBarWithFixedLabels endLabel={20} labelPlacement="below">
|
|
36
|
+
<ProgressBar progress={0.2} />
|
|
37
|
+
</ProgressBarWithFixedLabels>
|
|
38
|
+
</VStack>
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Label Beside
|
|
42
|
+
|
|
43
|
+
```jsx live
|
|
44
|
+
<VStack gap={2}>
|
|
45
|
+
<ProgressBarWithFixedLabels startLabel={0} endLabel={20} labelPlacement="beside">
|
|
46
|
+
<ProgressBar progress={0.2} />
|
|
47
|
+
</ProgressBarWithFixedLabels>
|
|
48
|
+
<ProgressBarWithFixedLabels endLabel={20} labelPlacement="beside">
|
|
49
|
+
<ProgressBar progress={0.2} />
|
|
50
|
+
</ProgressBarWithFixedLabels>
|
|
51
|
+
</VStack>
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Disabled
|
|
55
|
+
|
|
56
|
+
```jsx live
|
|
57
|
+
<VStack gap={2}>
|
|
58
|
+
<ProgressBarWithFixedLabels startLabel={0} endLabel={20} disabled labelPlacement="beside">
|
|
59
|
+
<ProgressBar disabled progress={0.2} />
|
|
60
|
+
</ProgressBarWithFixedLabels>
|
|
61
|
+
<ProgressBarWithFixedLabels startLabel={0} endLabel={20} disabled labelPlacement="above">
|
|
62
|
+
<ProgressBar disabled progress={0.2} />
|
|
63
|
+
</ProgressBarWithFixedLabels>
|
|
64
|
+
</VStack>
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Custom Labels
|
|
68
|
+
|
|
69
|
+
```jsx live
|
|
70
|
+
function Example() {
|
|
71
|
+
const renderStartLabelNumStr = useCallback((num) => {
|
|
72
|
+
return `$${num.toLocaleString()}`;
|
|
73
|
+
}, []);
|
|
74
|
+
|
|
75
|
+
const renderEndLabelNumStr = useCallback((num) => {
|
|
76
|
+
return `${num.toLocaleString()} left`;
|
|
77
|
+
}, []);
|
|
78
|
+
|
|
79
|
+
const renderStartLabelNum = useCallback((num, disabled) => {
|
|
80
|
+
return (
|
|
81
|
+
<TextTitle3 disabled={disabled} as="span">
|
|
82
|
+
${num.toLocaleString()}
|
|
83
|
+
</TextTitle3>
|
|
84
|
+
);
|
|
85
|
+
}, []);
|
|
86
|
+
|
|
87
|
+
const renderEndLabelNum = useCallback((num, disabled) => {
|
|
88
|
+
return (
|
|
89
|
+
<TextLabel2 disabled={disabled} as="span" align="end" noWrap>
|
|
90
|
+
${num.toLocaleString()} left
|
|
91
|
+
</TextLabel2>
|
|
92
|
+
);
|
|
93
|
+
}, []);
|
|
94
|
+
|
|
95
|
+
return (
|
|
96
|
+
<VStack gap={2}>
|
|
97
|
+
<ProgressBarWithFixedLabels
|
|
98
|
+
startLabel={{ value: 12500, render: renderStartLabelNumStr }}
|
|
99
|
+
endLabel={{ value: 35500, render: renderEndLabelNumStr }}
|
|
100
|
+
labelPlacement="above"
|
|
101
|
+
>
|
|
102
|
+
<ProgressBar progress={0.6} />
|
|
103
|
+
</ProgressBarWithFixedLabels>
|
|
104
|
+
<ProgressBarWithFixedLabels
|
|
105
|
+
startLabel={{ value: 12500, render: renderStartLabelNum }}
|
|
106
|
+
endLabel={{ value: 35500, render: renderEndLabelNum }}
|
|
107
|
+
labelPlacement="above"
|
|
108
|
+
>
|
|
109
|
+
<ProgressBar progress={0.6} />
|
|
110
|
+
</ProgressBarWithFixedLabels>
|
|
111
|
+
|
|
112
|
+
<ProgressBarWithFixedLabels
|
|
113
|
+
startLabel={{ value: 12500, render: renderStartLabelNumStr }}
|
|
114
|
+
endLabel={{ value: 35500, render: renderEndLabelNumStr }}
|
|
115
|
+
labelPlacement="above"
|
|
116
|
+
disabled
|
|
117
|
+
>
|
|
118
|
+
<ProgressBar disabled progress={0.6} />
|
|
119
|
+
</ProgressBarWithFixedLabels>
|
|
120
|
+
<ProgressBarWithFixedLabels
|
|
121
|
+
startLabel={{ value: 12500, render: renderStartLabelNum }}
|
|
122
|
+
endLabel={{ value: 35500, render: renderEndLabelNum }}
|
|
123
|
+
labelPlacement="above"
|
|
124
|
+
disabled
|
|
125
|
+
>
|
|
126
|
+
<ProgressBar disabled progress={0.6} />
|
|
127
|
+
</ProgressBarWithFixedLabels>
|
|
128
|
+
</VStack>
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Custom Styles
|
|
134
|
+
|
|
135
|
+
You can customize the appearance of the progress bar and labels using the `styles` prop.
|
|
136
|
+
|
|
137
|
+
```tsx live
|
|
138
|
+
<ProgressContainerWithButtons>
|
|
139
|
+
{({ calculateProgress }) => (
|
|
140
|
+
<VStack gap={2}>
|
|
141
|
+
<ProgressBarWithFixedLabels
|
|
142
|
+
endLabel={Math.round(calculateProgress(0.7) * 100)}
|
|
143
|
+
labelPlacement="above"
|
|
144
|
+
startLabel={0}
|
|
145
|
+
styles={{
|
|
146
|
+
startLabel: {
|
|
147
|
+
color: 'var(--color-fgNegative)',
|
|
148
|
+
},
|
|
149
|
+
endLabel: {
|
|
150
|
+
color: 'var(--color-fgPositive)',
|
|
151
|
+
fontWeight: 'bold',
|
|
152
|
+
},
|
|
153
|
+
}}
|
|
154
|
+
>
|
|
155
|
+
<ProgressBar
|
|
156
|
+
color="bgPositive"
|
|
157
|
+
progress={calculateProgress(0.7)}
|
|
158
|
+
styles={{
|
|
159
|
+
container: {
|
|
160
|
+
height: 'var(--space-8)',
|
|
161
|
+
borderRadius: 'var(--borderRadius-1000)',
|
|
162
|
+
},
|
|
163
|
+
progress: {
|
|
164
|
+
borderRadius: 'var(--borderRadius-1000)',
|
|
165
|
+
},
|
|
166
|
+
}}
|
|
167
|
+
/>
|
|
168
|
+
</ProgressBarWithFixedLabels>
|
|
169
|
+
</VStack>
|
|
170
|
+
)}
|
|
171
|
+
</ProgressContainerWithButtons>
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### Interactive Demo
|
|
175
|
+
|
|
176
|
+
This is for demo purposes. ProgressContainerWithButtons isn't designed for production usage.
|
|
177
|
+
|
|
178
|
+
```jsx live
|
|
179
|
+
<ProgressContainerWithButtons>
|
|
180
|
+
{({ calculateProgress }) => (
|
|
181
|
+
<VStack gap={2}>
|
|
182
|
+
<ProgressBarWithFixedLabels
|
|
183
|
+
startLabel={0}
|
|
184
|
+
endLabel={Math.round(calculateProgress(0.2) * 100)}
|
|
185
|
+
labelPlacement="below"
|
|
186
|
+
>
|
|
187
|
+
<ProgressBar progress={calculateProgress(0.2)} />
|
|
188
|
+
</ProgressBarWithFixedLabels>
|
|
189
|
+
<ProgressBarWithFixedLabels
|
|
190
|
+
endLabel={Math.round(calculateProgress(0.2) * 100)}
|
|
191
|
+
labelPlacement="below"
|
|
192
|
+
>
|
|
193
|
+
<ProgressBar progress={calculateProgress(0.2)} />
|
|
194
|
+
</ProgressBarWithFixedLabels>
|
|
195
|
+
<ProgressBarWithFixedLabels
|
|
196
|
+
startLabel={0}
|
|
197
|
+
endLabel={Math.round(calculateProgress(0.2) * 100)}
|
|
198
|
+
labelPlacement="beside"
|
|
199
|
+
>
|
|
200
|
+
<ProgressBar progress={calculateProgress(0.2)} />
|
|
201
|
+
</ProgressBarWithFixedLabels>
|
|
202
|
+
<ProgressBarWithFixedLabels
|
|
203
|
+
endLabel={Math.round(calculateProgress(0.2) * 100)}
|
|
204
|
+
labelPlacement="beside"
|
|
205
|
+
>
|
|
206
|
+
<ProgressBar progress={calculateProgress(0.2)} />
|
|
207
|
+
</ProgressBarWithFixedLabels>
|
|
208
|
+
</VStack>
|
|
209
|
+
)}
|
|
210
|
+
</ProgressContainerWithButtons>
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
|