Skip to content

feat(circuit-ui): add CopyButton component#3583

Open
matoous wants to merge 6 commits into
mainfrom
md/clipboard-text
Open

feat(circuit-ui): add CopyButton component#3583
matoous wants to merge 6 commits into
mainfrom
md/clipboard-text

Conversation

@matoous

@matoous matoous commented Apr 26, 2026

Copy link
Copy Markdown
Contributor

We have a few places in our dashboard where we render a text and allow user's to copy it into a clipboard using a button. Currently, those are implemented inconsistently, sometimes using the Input component, sometimes using custom styling of Body and IconButton.

This change introduces a new ClipboardText component that renders a copiable text.

Screenshot 2026-04-26 at 21 56 02
Screen.Recording.2026-04-26.at.21.57.13.mov

@matoous matoous self-assigned this Apr 26, 2026
@matoous matoous requested a review from a team as a code owner April 26, 2026 19:56
@matoous matoous requested a review from connor-baer April 26, 2026 19:56
@changeset-bot

changeset-bot Bot commented Apr 26, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 0f0ad3d

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@sumup-oss/circuit-ui Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@vercel

vercel Bot commented Apr 26, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
oss-circuit-ui Ready Ready Preview, Comment Jul 3, 2026 2:14pm

Request Review

@github-actions

github-actions Bot commented Apr 26, 2026

Copy link
Copy Markdown
Contributor

Size Change: +834 B (+0.1%)

Total Size: 837 kB

📦 View Changed
Filename Size Change
packages/circuit-ui/dist/components/CopyButton/CopyButton.js 905 B +905 B (new file) 🆕
packages/circuit-ui/dist/index.js 1.54 kB +13 B (+0.85%)
packages/circuit-ui/dist/styles.css 26.8 kB -84 B (-0.31%)
ℹ️ View Unchanged
Filename Size
packages/circuit-ui/dist/components/ActionMenu/ActionMenu.js 946 B
packages/circuit-ui/dist/components/ActionMenu/components/ActionMenuItem.js 426 B
packages/circuit-ui/dist/components/Anchor/Anchor.js 860 B
packages/circuit-ui/dist/components/AspectRatio/AspectRatio.js 427 B
packages/circuit-ui/dist/components/AutocompleteInput/AutocompleteInput.js 3.69 kB
packages/circuit-ui/dist/components/AutocompleteInput/AutocompleteInputService.js 429 B
packages/circuit-ui/dist/components/AutocompleteInput/components/ComboboxInput/ComboboxInput.js 1.61 kB
packages/circuit-ui/dist/components/AutocompleteInput/components/Option/Option.js 1.07 kB
packages/circuit-ui/dist/components/AutocompleteInput/components/Options/Options.js 1.43 kB
packages/circuit-ui/dist/components/AutocompleteInput/components/Results/Results.js 839 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/bg-BG.json.js 269 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/cs-CZ.json.js 248 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/da-DK.json.js 213 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/de-AT.json.js 227 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/de-CH.json.js 227 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/de-DE.json.js 226 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/de-LU.json.js 227 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/el-CY.json.js 291 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/el-GR.json.js 291 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/en-AU.json.js 199 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/en-GB.json.js 198 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/en-IE.json.js 199 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/en-MT.json.js 198 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/en-US.json.js 198 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/es-CL.json.js 219 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/es-CO.json.js 220 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/es-ES.json.js 219 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/es-MX.json.js 220 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/es-PE.json.js 219 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/es-US.json.js 220 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/et-EE.json.js 218 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/fi-FI.json.js 224 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/fr-BE.json.js 232 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/fr-CH.json.js 232 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/fr-FR.json.js 232 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/fr-LU.json.js 232 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/hr-HR.json.js 227 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/hu-HU.json.js 236 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/index.js 800 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/it-CH.json.js 217 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/it-IT.json.js 217 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/lt-LT.json.js 234 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/lv-LV.json.js 234 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/nb-NO.json.js 216 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/nl-BE.json.js 214 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/nl-NL.json.js 215 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/pl-PL.json.js 237 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/pt-BR.json.js 216 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/pt-PT.json.js 216 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/ro-RO.json.js 239 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/sk-SK.json.js 250 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/sl-SI.json.js 226 B
packages/circuit-ui/dist/components/AutocompleteInput/translations/sv-SE.json.js 211 B
packages/circuit-ui/dist/components/Avatar/Avatar.js 956 B
packages/circuit-ui/dist/components/Badge/Badge.js 462 B
packages/circuit-ui/dist/components/Body/Body.js 751 B
packages/circuit-ui/dist/components/BodyLarge/BodyLarge.js 325 B
packages/circuit-ui/dist/components/Button/base.js 1.18 kB
packages/circuit-ui/dist/components/Button/Button.js 547 B
packages/circuit-ui/dist/components/Button/IconButton.js 726 B
packages/circuit-ui/dist/components/Button/translations/bg-BG.json.js 107 B
packages/circuit-ui/dist/components/Button/translations/cs-CZ.json.js 98 B
packages/circuit-ui/dist/components/Button/translations/da-DK.json.js 93 B
packages/circuit-ui/dist/components/Button/translations/de-AT.json.js 91 B
packages/circuit-ui/dist/components/Button/translations/de-CH.json.js 91 B
packages/circuit-ui/dist/components/Button/translations/de-DE.json.js 91 B
packages/circuit-ui/dist/components/Button/translations/de-LU.json.js 91 B
packages/circuit-ui/dist/components/Button/translations/el-CY.json.js 102 B
packages/circuit-ui/dist/components/Button/translations/el-GR.json.js 102 B
packages/circuit-ui/dist/components/Button/translations/en-AU.json.js 90 B
packages/circuit-ui/dist/components/Button/translations/en-GB.json.js 90 B
packages/circuit-ui/dist/components/Button/translations/en-IE.json.js 90 B
packages/circuit-ui/dist/components/Button/translations/en-MT.json.js 90 B
packages/circuit-ui/dist/components/Button/translations/en-US.json.js 90 B
packages/circuit-ui/dist/components/Button/translations/es-CL.json.js 95 B
packages/circuit-ui/dist/components/Button/translations/es-CO.json.js 95 B
packages/circuit-ui/dist/components/Button/translations/es-ES.json.js 95 B
packages/circuit-ui/dist/components/Button/translations/es-MX.json.js 95 B
packages/circuit-ui/dist/components/Button/translations/es-PE.json.js 95 B
packages/circuit-ui/dist/components/Button/translations/es-US.json.js 95 B
packages/circuit-ui/dist/components/Button/translations/et-EE.json.js 91 B
packages/circuit-ui/dist/components/Button/translations/fi-FI.json.js 95 B
packages/circuit-ui/dist/components/Button/translations/fr-BE.json.js 97 B
packages/circuit-ui/dist/components/Button/translations/fr-CH.json.js 97 B
packages/circuit-ui/dist/components/Button/translations/fr-FR.json.js 97 B
packages/circuit-ui/dist/components/Button/translations/fr-LU.json.js 97 B
packages/circuit-ui/dist/components/Button/translations/hr-HR.json.js 98 B
packages/circuit-ui/dist/components/Button/translations/hu-HU.json.js 97 B
packages/circuit-ui/dist/components/Button/translations/index.js 800 B
packages/circuit-ui/dist/components/Button/translations/it-CH.json.js 101 B
packages/circuit-ui/dist/components/Button/translations/it-IT.json.js 101 B
packages/circuit-ui/dist/components/Button/translations/lt-LT.json.js 95 B
packages/circuit-ui/dist/components/Button/translations/lv-LV.json.js 94 B
packages/circuit-ui/dist/components/Button/translations/nb-NO.json.js 93 B
packages/circuit-ui/dist/components/Button/translations/nl-BE.json.js 92 B
packages/circuit-ui/dist/components/Button/translations/nl-NL.json.js 92 B
packages/circuit-ui/dist/components/Button/translations/pl-PL.json.js 100 B
packages/circuit-ui/dist/components/Button/translations/pt-BR.json.js 97 B
packages/circuit-ui/dist/components/Button/translations/pt-PT.json.js 97 B
packages/circuit-ui/dist/components/Button/translations/ro-RO.json.js 99 B
packages/circuit-ui/dist/components/Button/translations/sk-SK.json.js 113 B
packages/circuit-ui/dist/components/Button/translations/sl-SI.json.js 96 B
packages/circuit-ui/dist/components/Button/translations/sv-SE.json.js 94 B
packages/circuit-ui/dist/components/ButtonGroup/ButtonGroup.js 631 B
packages/circuit-ui/dist/components/Calendar/Calendar.js 2.92 kB
packages/circuit-ui/dist/components/Calendar/CalendarService.js 1.63 kB
packages/circuit-ui/dist/components/Calendar/translations/bg-BG.json.js 158 B
packages/circuit-ui/dist/components/Calendar/translations/cs-CZ.json.js 139 B
packages/circuit-ui/dist/components/Calendar/translations/da-DK.json.js 133 B
packages/circuit-ui/dist/components/Calendar/translations/de-AT.json.js 137 B
packages/circuit-ui/dist/components/Calendar/translations/de-CH.json.js 137 B
packages/circuit-ui/dist/components/Calendar/translations/de-DE.json.js 137 B
packages/circuit-ui/dist/components/Calendar/translations/de-LU.json.js 136 B
packages/circuit-ui/dist/components/Calendar/translations/el-CY.json.js 158 B
packages/circuit-ui/dist/components/Calendar/translations/el-GR.json.js 158 B
packages/circuit-ui/dist/components/Calendar/translations/en-AU.json.js 130 B
packages/circuit-ui/dist/components/Calendar/translations/en-GB.json.js 129 B
packages/circuit-ui/dist/components/Calendar/translations/en-IE.json.js 130 B
packages/circuit-ui/dist/components/Calendar/translations/en-MT.json.js 129 B
packages/circuit-ui/dist/components/Calendar/translations/en-US.json.js 130 B
packages/circuit-ui/dist/components/Calendar/translations/es-CL.json.js 128 B
packages/circuit-ui/dist/components/Calendar/translations/es-CO.json.js 129 B
packages/circuit-ui/dist/components/Calendar/translations/es-ES.json.js 130 B
packages/circuit-ui/dist/components/Calendar/translations/es-MX.json.js 128 B
packages/circuit-ui/dist/components/Calendar/translations/es-PE.json.js 130 B
packages/circuit-ui/dist/components/Calendar/translations/es-US.json.js 130 B
packages/circuit-ui/dist/components/Calendar/translations/et-EE.json.js 130 B
packages/circuit-ui/dist/components/Calendar/translations/fi-FI.json.js 135 B
packages/circuit-ui/dist/components/Calendar/translations/fr-BE.json.js 135 B
packages/circuit-ui/dist/components/Calendar/translations/fr-CH.json.js 135 B
packages/circuit-ui/dist/components/Calendar/translations/fr-FR.json.js 135 B
packages/circuit-ui/dist/components/Calendar/translations/fr-LU.json.js 135 B
packages/circuit-ui/dist/components/Calendar/translations/hr-HR.json.js 138 B
packages/circuit-ui/dist/components/Calendar/translations/hu-HU.json.js 137 B
packages/circuit-ui/dist/components/Calendar/translations/index.js 800 B
packages/circuit-ui/dist/components/Calendar/translations/it-CH.json.js 132 B
packages/circuit-ui/dist/components/Calendar/translations/it-IT.json.js 132 B
packages/circuit-ui/dist/components/Calendar/translations/lt-LT.json.js 134 B
packages/circuit-ui/dist/components/Calendar/translations/lv-LV.json.js 145 B
packages/circuit-ui/dist/components/Calendar/translations/nb-NO.json.js 131 B
packages/circuit-ui/dist/components/Calendar/translations/nl-BE.json.js 126 B
packages/circuit-ui/dist/components/Calendar/translations/nl-NL.json.js 126 B
packages/circuit-ui/dist/components/Calendar/translations/pl-PL.json.js 141 B
packages/circuit-ui/dist/components/Calendar/translations/pt-BR.json.js 133 B
packages/circuit-ui/dist/components/Calendar/translations/pt-PT.json.js 134 B
packages/circuit-ui/dist/components/Calendar/translations/ro-RO.json.js 135 B
packages/circuit-ui/dist/components/Calendar/translations/sk-SK.json.js 144 B
packages/circuit-ui/dist/components/Calendar/translations/sl-SI.json.js 135 B
packages/circuit-ui/dist/components/Calendar/translations/sv-SE.json.js 140 B
packages/circuit-ui/dist/components/Card/Card.js 284 B
packages/circuit-ui/dist/components/Card/components/Footer/Footer.js 301 B
packages/circuit-ui/dist/components/Card/components/Header/Header.js 426 B
packages/circuit-ui/dist/components/Carousel/Carousel.js 1.23 kB
packages/circuit-ui/dist/components/Carousel/components/Buttons/Buttons.js 377 B
packages/circuit-ui/dist/components/Carousel/components/Container/Container.js 204 B
packages/circuit-ui/dist/components/Carousel/components/Controls/Controls.js 203 B
packages/circuit-ui/dist/components/Carousel/components/Slide/Slide.js 608 B
packages/circuit-ui/dist/components/Carousel/components/Slide/SlideService.js 337 B
packages/circuit-ui/dist/components/Carousel/components/SlideImage/SlideImage.js 294 B
packages/circuit-ui/dist/components/Carousel/components/Slides/Slides.js 224 B
packages/circuit-ui/dist/components/Carousel/components/Status/Status.js 279 B
packages/circuit-ui/dist/components/Carousel/constants.js 230 B
packages/circuit-ui/dist/components/Carousel/index.js 235 B
packages/circuit-ui/dist/components/CarouselPagination/CarouselPagination.js 553 B
packages/circuit-ui/dist/components/Checkbox/Checkbox.js 702 B
packages/circuit-ui/dist/components/Checkbox/CheckboxInput.js 859 B
packages/circuit-ui/dist/components/Checkbox/IndeterminateIcon.js 275 B
packages/circuit-ui/dist/components/CheckboxGroup/CheckboxGroup.js 892 B
packages/circuit-ui/dist/components/CloseButton/CloseButton.js 286 B
packages/circuit-ui/dist/components/ColorInput/ColorInput.js 1.45 kB
packages/circuit-ui/dist/components/ColorInput/ColorInputService.js 291 B
packages/circuit-ui/dist/components/Compact/Compact.js 317 B
packages/circuit-ui/dist/components/ComparisonTable/ComparisonTable.js 813 B
packages/circuit-ui/dist/components/ComparisonTable/components/BooleanValue/BooleanValue.js 614 B
packages/circuit-ui/dist/components/ComparisonTable/components/PlanPicker/PlanPicker.js 549 B
packages/circuit-ui/dist/components/ComparisonTable/components/PlanTable/PlanTable.js 2.09 kB
packages/circuit-ui/dist/components/ComparisonTable/components/RowHeader/RowHeader.js 745 B
packages/circuit-ui/dist/components/ComparisonTable/components/TableCell/TableCell.js 402 B
packages/circuit-ui/dist/components/ComparisonTable/components/TableHeader/TableHeader.js 487 B
packages/circuit-ui/dist/components/ComparisonTable/utils.js 294 B
packages/circuit-ui/dist/components/ComponentsContext/components/Link/Link.js 191 B
packages/circuit-ui/dist/components/ComponentsContext/ComponentsContext.js 154 B
packages/circuit-ui/dist/components/ComponentsContext/useComponents.js 172 B
packages/circuit-ui/dist/components/CurrencyInput/CurrencyInput.js 933 B
packages/circuit-ui/dist/components/CurrencyInput/CurrencyInputService.js 165 B
packages/circuit-ui/dist/components/DateInput/components/DateSegment.js 1.37 kB
packages/circuit-ui/dist/components/DateInput/DateInput.js 2.56 kB
packages/circuit-ui/dist/components/DateInput/DateInputService.js 333 B
packages/circuit-ui/dist/components/DateInput/hooks/usePlainDateState.js 1.16 kB
packages/circuit-ui/dist/components/DateInput/hooks/useSegmentFocus.js 391 B
packages/circuit-ui/dist/components/DateInput/translations/bg-BG.json.js 258 B
packages/circuit-ui/dist/components/DateInput/translations/cs-CZ.json.js 214 B
packages/circuit-ui/dist/components/DateInput/translations/da-DK.json.js 202 B
packages/circuit-ui/dist/components/DateInput/translations/de-AT.json.js 207 B
packages/circuit-ui/dist/components/DateInput/translations/de-CH.json.js 207 B
packages/circuit-ui/dist/components/DateInput/translations/de-DE.json.js 207 B
packages/circuit-ui/dist/components/DateInput/translations/de-LU.json.js 207 B
packages/circuit-ui/dist/components/DateInput/translations/el-CY.json.js 262 B
packages/circuit-ui/dist/components/DateInput/translations/el-GR.json.js 263 B
packages/circuit-ui/dist/components/DateInput/translations/en-AU.json.js 193 B
packages/circuit-ui/dist/components/DateInput/translations/en-GB.json.js 193 B
packages/circuit-ui/dist/components/DateInput/translations/en-IE.json.js 193 B
packages/circuit-ui/dist/components/DateInput/translations/en-MT.json.js 193 B
packages/circuit-ui/dist/components/DateInput/translations/en-US.json.js 194 B
packages/circuit-ui/dist/components/DateInput/translations/es-CL.json.js 206 B
packages/circuit-ui/dist/components/DateInput/translations/es-CO.json.js 204 B
packages/circuit-ui/dist/components/DateInput/translations/es-ES.json.js 205 B
packages/circuit-ui/dist/components/DateInput/translations/es-MX.json.js 204 B
packages/circuit-ui/dist/components/DateInput/translations/es-PE.json.js 205 B
packages/circuit-ui/dist/components/DateInput/translations/es-US.json.js 205 B
packages/circuit-ui/dist/components/DateInput/translations/et-EE.json.js 214 B
packages/circuit-ui/dist/components/DateInput/translations/fi-FI.json.js 222 B
packages/circuit-ui/dist/components/DateInput/translations/fr-BE.json.js 211 B
packages/circuit-ui/dist/components/DateInput/translations/fr-CH.json.js 211 B
packages/circuit-ui/dist/components/DateInput/translations/fr-FR.json.js 211 B
packages/circuit-ui/dist/components/DateInput/translations/fr-LU.json.js 211 B
packages/circuit-ui/dist/components/DateInput/translations/hr-HR.json.js 207 B
packages/circuit-ui/dist/components/DateInput/translations/hu-HU.json.js 222 B
packages/circuit-ui/dist/components/DateInput/translations/index.js 800 B
packages/circuit-ui/dist/components/DateInput/translations/it-CH.json.js 202 B
packages/circuit-ui/dist/components/DateInput/translations/it-IT.json.js 203 B
packages/circuit-ui/dist/components/DateInput/translations/lt-LT.json.js 209 B
packages/circuit-ui/dist/components/DateInput/translations/lv-LV.json.js 215 B
packages/circuit-ui/dist/components/DateInput/translations/nb-NO.json.js 202 B
packages/circuit-ui/dist/components/DateInput/translations/nl-BE.json.js 198 B
packages/circuit-ui/dist/components/DateInput/translations/nl-NL.json.js 198 B
packages/circuit-ui/dist/components/DateInput/translations/pl-PL.json.js 212 B
packages/circuit-ui/dist/components/DateInput/translations/pt-BR.json.js 199 B
packages/circuit-ui/dist/components/DateInput/translations/pt-PT.json.js 200 B
packages/circuit-ui/dist/components/DateInput/translations/ro-RO.json.js 207 B
packages/circuit-ui/dist/components/DateInput/translations/sk-SK.json.js 214 B
packages/circuit-ui/dist/components/DateInput/translations/sl-SI.json.js 206 B
packages/circuit-ui/dist/components/DateInput/translations/sv-SE.json.js 207 B
packages/circuit-ui/dist/components/Dialog/Dialog.js 2.29 kB
packages/circuit-ui/dist/components/Dialog/translations/bg-BG.json.js 108 B
packages/circuit-ui/dist/components/Dialog/translations/cs-CZ.json.js 100 B
packages/circuit-ui/dist/components/Dialog/translations/da-DK.json.js 96 B
packages/circuit-ui/dist/components/Dialog/translations/de-AT.json.js 103 B
packages/circuit-ui/dist/components/Dialog/translations/de-CH.json.js 103 B
packages/circuit-ui/dist/components/Dialog/translations/de-DE.json.js 103 B
packages/circuit-ui/dist/components/Dialog/translations/de-LU.json.js 103 B
packages/circuit-ui/dist/components/Dialog/translations/el-CY.json.js 111 B
packages/circuit-ui/dist/components/Dialog/translations/el-GR.json.js 111 B
packages/circuit-ui/dist/components/Dialog/translations/en-AU.json.js 96 B
packages/circuit-ui/dist/components/Dialog/translations/en-GB.json.js 96 B
packages/circuit-ui/dist/components/Dialog/translations/en-IE.json.js 96 B
packages/circuit-ui/dist/components/Dialog/translations/en-MT.json.js 96 B
packages/circuit-ui/dist/components/Dialog/translations/en-US.json.js 96 B
packages/circuit-ui/dist/components/Dialog/translations/es-CL.json.js 99 B
packages/circuit-ui/dist/components/Dialog/translations/es-CO.json.js 99 B
packages/circuit-ui/dist/components/Dialog/translations/es-ES.json.js 99 B
packages/circuit-ui/dist/components/Dialog/translations/es-MX.json.js 99 B
packages/circuit-ui/dist/components/Dialog/translations/es-PE.json.js 99 B
packages/circuit-ui/dist/components/Dialog/translations/es-US.json.js 99 B
packages/circuit-ui/dist/components/Dialog/translations/et-EE.json.js 98 B
packages/circuit-ui/dist/components/Dialog/translations/fi-FI.json.js 98 B
packages/circuit-ui/dist/components/Dialog/translations/fr-BE.json.js 99 B
packages/circuit-ui/dist/components/Dialog/translations/fr-CH.json.js 99 B
packages/circuit-ui/dist/components/Dialog/translations/fr-FR.json.js 99 B
packages/circuit-ui/dist/components/Dialog/translations/fr-LU.json.js 99 B
packages/circuit-ui/dist/components/Dialog/translations/hr-HR.json.js 100 B
packages/circuit-ui/dist/components/Dialog/translations/hu-HU.json.js 102 B
packages/circuit-ui/dist/components/Dialog/translations/index.js 800 B
packages/circuit-ui/dist/components/Dialog/translations/it-CH.json.js 99 B
packages/circuit-ui/dist/components/Dialog/translations/it-IT.json.js 99 B
packages/circuit-ui/dist/components/Dialog/translations/lt-LT.json.js 102 B
packages/circuit-ui/dist/components/Dialog/translations/lv-LV.json.js 101 B
packages/circuit-ui/dist/components/Dialog/translations/nb-NO.json.js 97 B
packages/circuit-ui/dist/components/Dialog/translations/nl-BE.json.js 98 B
packages/circuit-ui/dist/components/Dialog/translations/nl-NL.json.js 100 B
packages/circuit-ui/dist/components/Dialog/translations/pl-PL.json.js 100 B
packages/circuit-ui/dist/components/Dialog/translations/pt-BR.json.js 99 B
packages/circuit-ui/dist/components/Dialog/translations/pt-PT.json.js 99 B
packages/circuit-ui/dist/components/Dialog/translations/ro-RO.json.js 101 B
packages/circuit-ui/dist/components/Dialog/translations/sk-SK.json.js 102 B
packages/circuit-ui/dist/components/Dialog/translations/sl-SI.json.js 98 B
packages/circuit-ui/dist/components/Dialog/translations/sv-SE.json.js 99 B
packages/circuit-ui/dist/components/Display/Display.js 730 B
packages/circuit-ui/dist/components/Field/Field.js 1.05 kB
packages/circuit-ui/dist/components/Field/FieldService.js 173 B
packages/circuit-ui/dist/components/Flag/Flag.js 718 B
packages/circuit-ui/dist/components/Hamburger/Hamburger.js 772 B
packages/circuit-ui/dist/components/Headline/Headline.js 596 B
packages/circuit-ui/dist/components/Hr/Hr.js 290 B
packages/circuit-ui/dist/components/Image/Image.js 320 B
packages/circuit-ui/dist/components/ImageInput/ImageInput.js 1.65 kB
packages/circuit-ui/dist/components/Input/Input.js 1.16 kB
packages/circuit-ui/dist/components/legacy/Grid/Col/Col.js 672 B
packages/circuit-ui/dist/components/legacy/Grid/constants.js 93 B
packages/circuit-ui/dist/components/legacy/Grid/Grid/Grid.js 325 B
packages/circuit-ui/dist/components/legacy/Grid/Row/Row.js 319 B
packages/circuit-ui/dist/components/legacy/Grid/utils.js 499 B
packages/circuit-ui/dist/components/legacy/InlineElements/InlineElements.js 720 B
packages/circuit-ui/dist/components/legacy/Tooltip/Tooltip.js 750 B
packages/circuit-ui/dist/components/List/List.js 476 B
packages/circuit-ui/dist/components/ListItem/ListItem.js 1.12 kB
packages/circuit-ui/dist/components/ListItemGroup/ListItemGroup.js 1.05 kB
packages/circuit-ui/dist/components/Modal/createUseModal.js 351 B
packages/circuit-ui/dist/components/Modal/index.js 114 B
packages/circuit-ui/dist/components/Modal/Modal.js 867 B
packages/circuit-ui/dist/components/Modal/ModalContext.js 664 B
packages/circuit-ui/dist/components/Notification/constants.js 222 B
packages/circuit-ui/dist/components/Notification/NotificationService.js 175 B
packages/circuit-ui/dist/components/NotificationBanner/NotificationBanner.js 1.17 kB
packages/circuit-ui/dist/components/NotificationFullscreen/NotificationFullscreen.js 626 B
packages/circuit-ui/dist/components/NotificationInline/NotificationInline.js 1.06 kB
packages/circuit-ui/dist/components/NotificationModal/NotificationModal.js 1.19 kB
packages/circuit-ui/dist/components/NotificationModal/useNotificationModal.js 131 B
packages/circuit-ui/dist/components/NotificationToast/NotificationToast.js 1.01 kB
packages/circuit-ui/dist/components/Numeral/Numeral.js 336 B
packages/circuit-ui/dist/components/Pagination/components/PageList/PageList.js 418 B
packages/circuit-ui/dist/components/Pagination/components/PageSelect/PageSelect.js 505 B
packages/circuit-ui/dist/components/Pagination/Pagination.js 834 B
packages/circuit-ui/dist/components/Pagination/PaginationService.js 133 B
packages/circuit-ui/dist/components/PercentageInput/PercentageInput.js 824 B
packages/circuit-ui/dist/components/PercentageInput/PercentageInputService.js 165 B
packages/circuit-ui/dist/components/PhoneNumberInput/PhoneNumberInput.js 2.09 kB
packages/circuit-ui/dist/components/PhoneNumberInput/PhoneNumberInputService.js 922 B
packages/circuit-ui/dist/components/Popover/Popover.js 1.65 kB
packages/circuit-ui/dist/components/ProgressBar/ProgressBar.js 1 kB
packages/circuit-ui/dist/components/RadioButton/RadioButton.js 710 B
packages/circuit-ui/dist/components/RadioButtonGroup/RadioButtonGroup.js 1.03 kB
packages/circuit-ui/dist/components/RadioButtonGroup/RadioButtonInput.js 595 B
packages/circuit-ui/dist/components/SearchInput/SearchInput.js 851 B
packages/circuit-ui/dist/components/SearchInput/translations/bg-BG.json.js 109 B
packages/circuit-ui/dist/components/SearchInput/translations/cs-CZ.json.js 92 B
packages/circuit-ui/dist/components/SearchInput/translations/da-DK.json.js 90 B
packages/circuit-ui/dist/components/SearchInput/translations/de-AT.json.js 103 B
packages/circuit-ui/dist/components/SearchInput/translations/de-CH.json.js 103 B
packages/circuit-ui/dist/components/SearchInput/translations/de-DE.json.js 103 B
packages/circuit-ui/dist/components/SearchInput/translations/de-LU.json.js 103 B
packages/circuit-ui/dist/components/SearchInput/translations/el-CY.json.js 109 B
packages/circuit-ui/dist/components/SearchInput/translations/el-GR.json.js 109 B
packages/circuit-ui/dist/components/SearchInput/translations/en-AU.json.js 89 B
packages/circuit-ui/dist/components/SearchInput/translations/en-GB.json.js 89 B
packages/circuit-ui/dist/components/SearchInput/translations/en-IE.json.js 89 B
packages/circuit-ui/dist/components/SearchInput/translations/en-MT.json.js 89 B
packages/circuit-ui/dist/components/SearchInput/translations/en-US.json.js 89 B
packages/circuit-ui/dist/components/SearchInput/translations/es-CL.json.js 93 B
packages/circuit-ui/dist/components/SearchInput/translations/es-CO.json.js 93 B
packages/circuit-ui/dist/components/SearchInput/translations/es-ES.json.js 93 B
packages/circuit-ui/dist/components/SearchInput/translations/es-MX.json.js 93 B
packages/circuit-ui/dist/components/SearchInput/translations/es-PE.json.js 93 B
packages/circuit-ui/dist/components/SearchInput/translations/es-US.json.js 93 B
packages/circuit-ui/dist/components/SearchInput/translations/et-EE.json.js 96 B
packages/circuit-ui/dist/components/SearchInput/translations/fi-FI.json.js 96 B
packages/circuit-ui/dist/components/SearchInput/translations/fr-BE.json.js 101 B
packages/circuit-ui/dist/components/SearchInput/translations/fr-CH.json.js 101 B
packages/circuit-ui/dist/components/SearchInput/translations/fr-FR.json.js 101 B
packages/circuit-ui/dist/components/SearchInput/translations/fr-LU.json.js 101 B
packages/circuit-ui/dist/components/SearchInput/translations/hr-HR.json.js 94 B
packages/circuit-ui/dist/components/SearchInput/translations/hu-HU.json.js 95 B
packages/circuit-ui/dist/components/SearchInput/translations/index.js 800 B
packages/circuit-ui/dist/components/SearchInput/translations/it-CH.json.js 95 B
packages/circuit-ui/dist/components/SearchInput/translations/it-IT.json.js 95 B
packages/circuit-ui/dist/components/SearchInput/translations/lt-LT.json.js 96 B
packages/circuit-ui/dist/components/SearchInput/translations/lv-LV.json.js 96 B
packages/circuit-ui/dist/components/SearchInput/translations/nb-NO.json.js 91 B
packages/circuit-ui/dist/components/SearchInput/translations/nl-BE.json.js 93 B
packages/circuit-ui/dist/components/SearchInput/translations/nl-NL.json.js 93 B
packages/circuit-ui/dist/components/SearchInput/translations/pl-PL.json.js 96 B
packages/circuit-ui/dist/components/SearchInput/translations/pt-BR.json.js 93 B
packages/circuit-ui/dist/components/SearchInput/translations/pt-PT.json.js 93 B
packages/circuit-ui/dist/components/SearchInput/translations/ro-RO.json.js 98 B
packages/circuit-ui/dist/components/SearchInput/translations/sk-SK.json.js 95 B
packages/circuit-ui/dist/components/SearchInput/translations/sl-SI.json.js 95 B
packages/circuit-ui/dist/components/SearchInput/translations/sv-SE.json.js 92 B
packages/circuit-ui/dist/components/Select/Select.js 1.2 kB
packages/circuit-ui/dist/components/Selector/Selector.js 1.08 kB
packages/circuit-ui/dist/components/SelectorGroup/SelectorGroup.js 1.06 kB
packages/circuit-ui/dist/components/SideNavigation/components/DesktopNavigation/DesktopNavigation.js 721 B
packages/circuit-ui/dist/components/SideNavigation/components/MobileNavigation/MobileNavigation.js 1.18 kB
packages/circuit-ui/dist/components/SideNavigation/components/PrimaryLink/PrimaryLink.js 1.11 kB
packages/circuit-ui/dist/components/SideNavigation/components/SecondaryLinks/SecondaryLinks.js 1.03 kB
packages/circuit-ui/dist/components/SideNavigation/SideNavigation.js 561 B
packages/circuit-ui/dist/components/SidePanel/components/Header/Header.js 466 B
packages/circuit-ui/dist/components/SidePanel/constants.js 114 B
packages/circuit-ui/dist/components/SidePanel/SidePanel.js 971 B
packages/circuit-ui/dist/components/SidePanel/SidePanelContext.js 1.44 kB
packages/circuit-ui/dist/components/SidePanel/translations/bg-BG.json.js 102 B
packages/circuit-ui/dist/components/SidePanel/translations/cs-CZ.json.js 99 B
packages/circuit-ui/dist/components/SidePanel/translations/da-DK.json.js 99 B
packages/circuit-ui/dist/components/SidePanel/translations/de-AT.json.js 99 B
packages/circuit-ui/dist/components/SidePanel/translations/de-CH.json.js 99 B
packages/circuit-ui/dist/components/SidePanel/translations/de-DE.json.js 99 B
packages/circuit-ui/dist/components/SidePanel/translations/de-LU.json.js 99 B
packages/circuit-ui/dist/components/SidePanel/translations/el-CY.json.js 101 B
packages/circuit-ui/dist/components/SidePanel/translations/el-GR.json.js 101 B
packages/circuit-ui/dist/components/SidePanel/translations/en-AU.json.js 96 B
packages/circuit-ui/dist/components/SidePanel/translations/en-GB.json.js 96 B
packages/circuit-ui/dist/components/SidePanel/translations/en-IE.json.js 96 B
packages/circuit-ui/dist/components/SidePanel/translations/en-MT.json.js 96 B
packages/circuit-ui/dist/components/SidePanel/translations/en-US.json.js 96 B
packages/circuit-ui/dist/components/SidePanel/translations/es-CL.json.js 100 B
packages/circuit-ui/dist/components/SidePanel/translations/es-CO.json.js 100 B
packages/circuit-ui/dist/components/SidePanel/translations/es-ES.json.js 100 B
packages/circuit-ui/dist/components/SidePanel/translations/es-MX.json.js 100 B
packages/circuit-ui/dist/components/SidePanel/translations/es-PE.json.js 100 B
packages/circuit-ui/dist/components/SidePanel/translations/es-US.json.js 100 B
packages/circuit-ui/dist/components/SidePanel/translations/et-EE.json.js 98 B
packages/circuit-ui/dist/components/SidePanel/translations/fi-FI.json.js 97 B
packages/circuit-ui/dist/components/SidePanel/translations/fr-BE.json.js 98 B
packages/circuit-ui/dist/components/SidePanel/translations/fr-CH.json.js 98 B
packages/circuit-ui/dist/components/SidePanel/translations/fr-FR.json.js 98 B
packages/circuit-ui/dist/components/SidePanel/translations/fr-LU.json.js 98 B
packages/circuit-ui/dist/components/SidePanel/translations/hr-HR.json.js 98 B
packages/circuit-ui/dist/components/SidePanel/translations/hu-HU.json.js 98 B
packages/circuit-ui/dist/components/SidePanel/translations/index.js 800 B
packages/circuit-ui/dist/components/SidePanel/translations/it-CH.json.js 100 B
packages/circuit-ui/dist/components/SidePanel/translations/it-IT.json.js 100 B
packages/circuit-ui/dist/components/SidePanel/translations/lt-LT.json.js 100 B
packages/circuit-ui/dist/components/SidePanel/translations/lv-LV.json.js 100 B
packages/circuit-ui/dist/components/SidePanel/translations/nb-NO.json.js 99 B
packages/circuit-ui/dist/components/SidePanel/translations/nl-BE.json.js 97 B
packages/circuit-ui/dist/components/SidePanel/translations/nl-NL.json.js 97 B
packages/circuit-ui/dist/components/SidePanel/translations/pl-PL.json.js 98 B
packages/circuit-ui/dist/components/SidePanel/translations/pt-BR.json.js 98 B
packages/circuit-ui/dist/components/SidePanel/translations/pt-PT.json.js 98 B
packages/circuit-ui/dist/components/SidePanel/translations/ro-RO.json.js 99 B
packages/circuit-ui/dist/components/SidePanel/translations/sk-SK.json.js 98 B
packages/circuit-ui/dist/components/SidePanel/translations/sl-SI.json.js 97 B
packages/circuit-ui/dist/components/SidePanel/translations/sv-SE.json.js 100 B
packages/circuit-ui/dist/components/SidePanel/useSidePanel.js 528 B
packages/circuit-ui/dist/components/Skeleton/Skeleton.js 522 B
packages/circuit-ui/dist/components/SkipLink/SkipLink.js 225 B
packages/circuit-ui/dist/components/Spinner/Spinner.js 458 B
packages/circuit-ui/dist/components/Status/Status.js 577 B
packages/circuit-ui/dist/components/Step/hooks/useStep.js 1.16 kB
packages/circuit-ui/dist/components/Step/Step.js 248 B
packages/circuit-ui/dist/components/Step/StepService.js 625 B
packages/circuit-ui/dist/components/SumUpLogo/SumUpLogo.js 1.72 kB
packages/circuit-ui/dist/components/Table/components/SortArrow/SortArrow.js 405 B
packages/circuit-ui/dist/components/Table/components/TableBody/TableBody.js 521 B
packages/circuit-ui/dist/components/Table/components/TableCell/TableCell.js 383 B
packages/circuit-ui/dist/components/Table/components/TableHead/TableHead.js 654 B
packages/circuit-ui/dist/components/Table/components/TableHeader/TableHeader.js 650 B
packages/circuit-ui/dist/components/Table/components/TableRow/TableRow.js 389 B
packages/circuit-ui/dist/components/Table/Table.js 1.43 kB
packages/circuit-ui/dist/components/Table/utils.js 675 B
packages/circuit-ui/dist/components/Tabs/components/Tab/Tab.js 476 B
packages/circuit-ui/dist/components/Tabs/components/TabList/TabList.js 1.83 kB
packages/circuit-ui/dist/components/Tabs/components/TabPanel/TabPanel.js 208 B
packages/circuit-ui/dist/components/Tabs/helper.js 513 B
packages/circuit-ui/dist/components/Tabs/Tabs.js 500 B
packages/circuit-ui/dist/components/Tag/Tag.js 917 B
packages/circuit-ui/dist/components/TextArea/TextArea.js 388 B
packages/circuit-ui/dist/components/TextArea/useAutoExpand.js 576 B
packages/circuit-ui/dist/components/TierIndicator/TierIndicator.js 377 B
packages/circuit-ui/dist/components/TimeInput/TimeInput.js 499 B
packages/circuit-ui/dist/components/Timestamp/Timestamp.js 680 B
packages/circuit-ui/dist/components/Timestamp/TimestampService.js 831 B
packages/circuit-ui/dist/components/ToastContext/createUseToast.js 256 B
packages/circuit-ui/dist/components/ToastContext/ToastContext.js 1.29 kB
packages/circuit-ui/dist/components/Toggle/Toggle.js 895 B
packages/circuit-ui/dist/components/Toggletip/Toggletip.js 1.44 kB
packages/circuit-ui/dist/components/Tooltip/Tooltip.js 1.68 kB
packages/circuit-ui/dist/components/TopNavigation/components/UtilityLinks/UtilityLinks.js 646 B
packages/circuit-ui/dist/components/TopNavigation/TopNavigation.js 670 B
packages/circuit-ui/dist/experimental.js 158 B
packages/circuit-ui/dist/hooks/useAnimation/useAnimation.js 311 B
packages/circuit-ui/dist/hooks/useClickOutside/useClickOutside.js 412 B
packages/circuit-ui/dist/hooks/useCollapsible/useCollapsible.js 730 B
packages/circuit-ui/dist/hooks/useComponentSize/useComponentSize.js 472 B
packages/circuit-ui/dist/hooks/useEscapeKey/useEscapeKey.js 278 B
packages/circuit-ui/dist/hooks/useFocusList/useFocusList.js 436 B
packages/circuit-ui/dist/hooks/useI18n/useI18n.js 297 B
packages/circuit-ui/dist/hooks/useLatest/useLatest.js 211 B
packages/circuit-ui/dist/hooks/useLocale/useLocale.js 389 B
packages/circuit-ui/dist/hooks/useMedia/useMedia.js 254 B
packages/circuit-ui/dist/hooks/usePrevious/usePrevious.js 219 B
packages/circuit-ui/dist/hooks/useScrollLock/useScrollLock.js 411 B
packages/circuit-ui/dist/hooks/useStack/useStack.js 620 B
packages/circuit-ui/dist/hooks/useSwipe/useSwipe.js 452 B
packages/circuit-ui/dist/internal.js 149 B
packages/circuit-ui/dist/legacy.js 323 B
packages/circuit-ui/dist/styles/clsx.js 126 B
packages/circuit-ui/dist/styles/is-prop-valid.js 114 B
packages/circuit-ui/dist/styles/shared.js 235 B
packages/circuit-ui/dist/styles/style-mixins.js 1.38 kB
packages/circuit-ui/dist/styles/styled.js 100 B
packages/circuit-ui/dist/styles/utility.js 682 B
packages/circuit-ui/dist/util/date.js 685 B
packages/circuit-ui/dist/util/env.js 166 B
packages/circuit-ui/dist/util/errors.js 714 B
packages/circuit-ui/dist/util/helpers.js 750 B
packages/circuit-ui/dist/util/i18n.js 706 B
packages/circuit-ui/dist/util/id.js 127 B
packages/circuit-ui/dist/util/idx.js 122 B
packages/circuit-ui/dist/util/input-value.js 254 B
packages/circuit-ui/dist/util/key-codes.js 208 B
packages/circuit-ui/dist/util/logger.js 237 B
packages/circuit-ui/dist/util/promises.js 93 B
packages/circuit-ui/dist/util/refs.js 176 B
packages/circuit-ui/dist/util/type-check.js 324 B
packages/circuit-ui/dist/vendor/dialog-polyfill/index.js 5.76 kB
packages/circuit-ui/dist/vendor/react-number-format/index.js 7.71 kB
packages/design-tokens/dist/cjs/index.js 1.23 kB
packages/design-tokens/dist/cjs/scripts/build.js 1.91 kB
packages/design-tokens/dist/cjs/themes/consumer.js 1.95 kB
packages/design-tokens/dist/cjs/themes/dark.js 1.96 kB
packages/design-tokens/dist/cjs/themes/fonts.js 1.76 kB
packages/design-tokens/dist/cjs/themes/legacy/light.js 1.53 kB
packages/design-tokens/dist/cjs/themes/light.js 2 kB
packages/design-tokens/dist/cjs/themes/schema.js 2.21 kB
packages/design-tokens/dist/cjs/themes/shared.js 1.7 kB
packages/design-tokens/dist/cjs/types/index.js 439 B
packages/design-tokens/dist/es/index.js 649 B
packages/design-tokens/dist/es/scripts/build.js 1.72 kB
packages/design-tokens/dist/es/themes/consumer.js 1.89 kB
packages/design-tokens/dist/es/themes/dark.js 1.9 kB
packages/design-tokens/dist/es/themes/fonts.js 1.7 kB
packages/design-tokens/dist/es/themes/legacy/light.js 1.42 kB
packages/design-tokens/dist/es/themes/light.js 1.95 kB
packages/design-tokens/dist/es/themes/schema.js 2.15 kB
packages/design-tokens/dist/es/themes/shared.js 1.64 kB
packages/design-tokens/dist/es/types/index.js 392 B
packages/icons/dist/Accessibility.js 1.04 kB
packages/icons/dist/Account.js 1.03 kB
packages/icons/dist/AccountFilled.js 994 B
packages/icons/dist/Accounting.js 1.03 kB
packages/icons/dist/AccountingFilled.js 1.01 kB
packages/icons/dist/ActivateCard.js 974 B
packages/icons/dist/Active.js 1.28 kB
packages/icons/dist/Add.js 1.06 kB
packages/icons/dist/AddEmployees.js 1.12 kB
packages/icons/dist/AddItems.js 933 B
packages/icons/dist/Alarm.js 1.12 kB
packages/icons/dist/Alelo.js 1.79 kB
packages/icons/dist/Alert.js 1.3 kB
packages/icons/dist/AlternativePaymentMethod.js 1.2 kB
packages/icons/dist/AmericanExpress.js 2.9 kB
packages/icons/dist/Apm.js 1.1 kB
packages/icons/dist/ApplePay.js 2.5 kB
packages/icons/dist/Apps.js 946 B
packages/icons/dist/Archive.js 1.05 kB
packages/icons/dist/Area.js 941 B
packages/icons/dist/ArrowDown.js 861 B
packages/icons/dist/ArrowLeft.js 959 B
packages/icons/dist/ArrowRight.js 974 B
packages/icons/dist/ArrowSlanted.js 954 B
packages/icons/dist/ArrowUp.js 864 B
packages/icons/dist/Article.js 1.19 kB
packages/icons/dist/Atm.js 1.15 kB
packages/icons/dist/Attachment.js 1.23 kB
packages/icons/dist/AutomaticBalanceTransfer.js 898 B
packages/icons/dist/BancoEstado.js 2.6 kB
packages/icons/dist/Bancomat.js 1.24 kB
packages/icons/dist/Bancontact.js 4.9 kB
packages/icons/dist/Bank.js 1.02 kB
packages/icons/dist/Barcode.js 1.11 kB
packages/icons/dist/Basket.js 1.15 kB
packages/icons/dist/Battery.js 1.16 kB
packages/icons/dist/BatteryAlert.js 1.4 kB
packages/icons/dist/Bitcoin.js 1.49 kB
packages/icons/dist/Blik.js 2.38 kB
packages/icons/dist/Bluetooth.js 1.14 kB
packages/icons/dist/Boleto.js 3.22 kB
packages/icons/dist/Bookings.js 1.07 kB
packages/icons/dist/BookingsFilled.js 1.03 kB
packages/icons/dist/Briefcase.js 1.18 kB
packages/icons/dist/BrowserSecure.js 1.28 kB
packages/icons/dist/BulkTransfer.js 1.01 kB
packages/icons/dist/Cafe.js 950 B
packages/icons/dist/Calendar.js 1.07 kB
packages/icons/dist/Callback.js 1.11 kB
packages/icons/dist/Camera.js 1.33 kB
packages/icons/dist/CardIn.js 1 kB
packages/icons/dist/CardOut.js 1 kB
packages/icons/dist/CardReaderAir.js 1.03 kB
packages/icons/dist/CardReaderSolo.js 909 B
packages/icons/dist/CardReaderSoloLite.js 930 B
packages/icons/dist/CardSecurity.js 1.01 kB
packages/icons/dist/CardUnknown.js 1.88 kB
packages/icons/dist/Cash.js 1.05 kB
packages/icons/dist/CashAdvance.js 1.08 kB
packages/icons/dist/CashAdvanceFilled.js 1.03 kB
packages/icons/dist/CashDrawer.js 1.46 kB
packages/icons/dist/CashStack.js 1.08 kB
packages/icons/dist/Challenge.js 1.04 kB
packages/icons/dist/Checkmark.js 1.08 kB
packages/icons/dist/Checkout.js 1.18 kB
packages/icons/dist/Cheque.js 1.13 kB
packages/icons/dist/ChevronDown.js 943 B
packages/icons/dist/ChevronLeft.js 938 B
packages/icons/dist/ChevronRight.js 974 B
packages/icons/dist/ChevronUp.js 968 B
packages/icons/dist/Close.js 977 B
packages/icons/dist/Clothing.js 1.27 kB
packages/icons/dist/Code.js 945 B
packages/icons/dist/ColorCorrection.js 1.19 kB
packages/icons/dist/ColorInversion.js 1.24 kB
packages/icons/dist/ColorPicker.js 1.15 kB
packages/icons/dist/Company.js 1.19 kB
packages/icons/dist/Conecs.js 2.67 kB
packages/icons/dist/Confirm.js 1.29 kB
packages/icons/dist/ContactPicker.js 1.27 kB
packages/icons/dist/Contractor.js 1.45 kB
packages/icons/dist/Contractors.js 1.49 kB
packages/icons/dist/Controls.js 918 B
packages/icons/dist/Cookie.js 1.02 kB
packages/icons/dist/CookiePreferences.js 1.07 kB
packages/icons/dist/Copy.js 935 B
packages/icons/dist/CopyPaste.js 900 B
packages/icons/dist/CreditNote.js 1.17 kB
packages/icons/dist/Crop.js 892 B
packages/icons/dist/CustomAmount.js 998 B
packages/icons/dist/Customers.js 1.25 kB
packages/icons/dist/CustomersFilled.js 1.22 kB
packages/icons/dist/Customise.js 1.38 kB
packages/icons/dist/Customize.js 1.42 kB
packages/icons/dist/Dankort.js 1.21 kB
packages/icons/dist/DayView.js 921 B
packages/icons/dist/Delete.js 1.47 kB
packages/icons/dist/DeliveryNote.js 1.16 kB
packages/icons/dist/Deposit.js 1.09 kB
packages/icons/dist/DinersClub.js 8.48 kB
packages/icons/dist/DirectDebit.js 1.25 kB
packages/icons/dist/Discount.js 1.28 kB
packages/icons/dist/Discover.js 2.7 kB
packages/icons/dist/Download.js 1.13 kB
packages/icons/dist/DownloadCloud.js 1.22 kB
packages/icons/dist/Drag.js 1.08 kB
packages/icons/dist/DriverLicense.js 1.2 kB
packages/icons/dist/Ec.js 2.88 kB
packages/icons/dist/Edit.js 1.4 kB
packages/icons/dist/Eftpos.js 3.82 kB
packages/icons/dist/ElectronicInvoice.js 1.29 kB
packages/icons/dist/Elo.js 2.19 kB
packages/icons/dist/Elv.js 1.68 kB
packages/icons/dist/Email.js 1.01 kB
packages/icons/dist/EmailChat.js 1.05 kB
packages/icons/dist/Employees.js 1.26 kB
packages/icons/dist/EmployeesFilled.js 1.16 kB
packages/icons/dist/Eps.js 4.18 kB
packages/icons/dist/Expenses.js 1.46 kB
packages/icons/dist/ExpensesFilled.js 1.33 kB
packages/icons/dist/ExternalLink.js 1.15 kB
packages/icons/dist/Facebook.js 1.02 kB
packages/icons/dist/FacebookMessenger.js 1 kB
packages/icons/dist/FasterPayments.js 2.46 kB
packages/icons/dist/Favorite.js 2 kB
packages/icons/dist/Favourite.js 1.93 kB
packages/icons/dist/FeeCalculator.js 1.13 kB
packages/icons/dist/FeesSummary.js 1.27 kB
packages/icons/dist/File.js 1.08 kB
packages/icons/dist/Filter.js 1.16 kB
packages/icons/dist/FilterApplied.js 1.19 kB
packages/icons/dist/FlagAe.js 1.18 kB
packages/icons/dist/FlagAr.js 3.58 kB
packages/icons/dist/FlagAt.js 1.16 kB
packages/icons/dist/FlagAu.js 1.64 kB
packages/icons/dist/FlagBe.js 1.17 kB
packages/icons/dist/FlagBg.js 1.16 kB
packages/icons/dist/FlagBr.js 1.38 kB
packages/icons/dist/FlagCa.js 1.43 kB
packages/icons/dist/FlagCh.js 1.22 kB
packages/icons/dist/FlagCl.js 1.22 kB
packages/icons/dist/FlagCo.js 1.13 kB
packages/icons/dist/FlagCy.js 2.16 kB
packages/icons/dist/FlagCz.js 1.2 kB
packages/icons/dist/FlagDe.js 1.18 kB
packages/icons/dist/FlagDk.js 1.16 kB
packages/icons/dist/FlagEe.js 1.16 kB
packages/icons/dist/FlagEs.js 1.15 kB
packages/icons/dist/FlagFi.js 1.16 kB
packages/icons/dist/FlagFr.js 1.18 kB
packages/icons/dist/FlagGb.js 1.8 kB
packages/icons/dist/FlagGr.js 1.17 kB
packages/icons/dist/FlagHk.js 1.45 kB
packages/icons/dist/FlagHr.js 3.34 kB
packages/icons/dist/FlagHu.js 1.16 kB
packages/icons/dist/FlagIe.js 1.17 kB
packages/icons/dist/FlagIt.js 1.18 kB
packages/icons/dist/FlagJa.js 1.12 kB
packages/icons/dist/FlagJp.js 1.12 kB
packages/icons/dist/FlagLt.js 1.17 kB
packages/icons/dist/FlagLu.js 1.16 kB
packages/icons/dist/FlagLv.js 1.13 kB
packages/icons/dist/FlagMt.js 1.64 kB
packages/icons/dist/FlagMx.js 1.21 kB
packages/icons/dist/FlagMy.js 1.27 kB
packages/icons/dist/FlagNl.js 1.17 kB
packages/icons/dist/FlagNo.js 1.27 kB
packages/icons/dist/FlagNz.js 1.38 kB
packages/icons/dist/FlagPe.js 1.08 kB
packages/icons/dist/FlagPl.js 1.15 kB
packages/icons/dist/FlagPt.js 1.38 kB
packages/icons/dist/FlagRo.js 1.12 kB
packages/icons/dist/FlagSe.js 1.23 kB
packages/icons/dist/FlagSg.js 1.18 kB
packages/icons/dist/FlagSi.js 1.68 kB
packages/icons/dist/FlagSk.js 1.6 kB
packages/icons/dist/FlagUs.js 1.98 kB
packages/icons/dist/Flashlight.js 1.2 kB
packages/icons/dist/FlashOff.js 1.2 kB
packages/icons/dist/FlashOn.js 1.24 kB
packages/icons/dist/FlipCamera.js 971 B
packages/icons/dist/Freeze.js 1.17 kB
packages/icons/dist/FullReturn.js 940 B
packages/icons/dist/Gauge.js 1.64 kB
packages/icons/dist/GeneralPreferences.js 913 B
packages/icons/dist/GeneralSettings.js 1.91 kB
packages/icons/dist/GiftCard.js 1.31 kB
packages/icons/dist/GiftCards.js 1.26 kB
packages/icons/dist/GiftCardsFilled.js 1.14 kB
packages/icons/dist/Girocard.js 4.17 kB
packages/icons/dist/Giropay.js 2.42 kB
packages/icons/dist/Globe.js 1.02 kB
packages/icons/dist/GooglePay.js 2.7 kB
packages/icons/dist/Grid.js 928 B
packages/icons/dist/HamburgerMenu.js 947 B
packages/icons/dist/Health.js 1.42 kB
packages/icons/dist/Help.js 2.2 kB
packages/icons/dist/helpers.js 144 B
packages/icons/dist/Hide.js 1.14 kB
packages/icons/dist/Hiper.js 1.62 kB
packages/icons/dist/Hipercard.js 4 kB
packages/icons/dist/History.js 913 B
packages/icons/dist/Home.js 972 B
packages/icons/dist/HomeFilled.js 1.13 kB
packages/icons/dist/Hospitality.js 1.13 kB
packages/icons/dist/Id.js 1.18 kB
packages/icons/dist/Ideal.js 3.36 kB
packages/icons/dist/Image.js 1.02 kB
packages/icons/dist/index.js 3.26 kB
packages/icons/dist/Info.js 1.03 kB
packages/icons/dist/Instagram.js 1.21 kB
packages/icons/dist/Insurance.js 1.25 kB
packages/icons/dist/Interac.js 9.12 kB
packages/icons/dist/InterestOnBalance.js 914 B
packages/icons/dist/Inventory.js 1.02 kB
packages/icons/dist/Investments.js 992 B
packages/icons/dist/InvestmentsFilled.js 951 B
packages/icons/dist/Invoice.js 1.11 kB
packages/icons/dist/InvoiceFilled.js 1 kB
packages/icons/dist/Iris.js 2.73 kB
packages/icons/dist/Items.js 1.14 kB
packages/icons/dist/ItemsFilled.js 931 B
packages/icons/dist/Jcb.js 2.69 kB
packages/icons/dist/Key.js 1.22 kB
packages/icons/dist/Kiosk.js 928 B
packages/icons/dist/KioskFilled.js 911 B
packages/icons/dist/Klarna.js 2.14 kB
packages/icons/dist/Language.js 1.26 kB
packages/icons/dist/Laptop.js 1.11 kB
packages/icons/dist/Legal.js 933 B
packages/icons/dist/Like.js 1.24 kB
packages/icons/dist/Link.js 1.13 kB
packages/icons/dist/Linkedin.js 1.06 kB
packages/icons/dist/List.js 848 B
packages/icons/dist/LiveChat.js 1.06 kB
packages/icons/dist/Location.js 1.58 kB
packages/icons/dist/Login.js 1.03 kB
packages/icons/dist/Logout.js 1.04 kB
packages/icons/dist/Loja.js 1.05 kB
packages/icons/dist/Loyalty.js 1.56 kB
packages/icons/dist/LoyaltyFilled.js 1.3 kB
packages/icons/dist/Maestro.js 3.08 kB
packages/icons/dist/Manage.js 992 B
packages/icons/dist/Mastercard.js 2.68 kB
packages/icons/dist/Mcc.js 1.23 kB
packages/icons/dist/MealVoucher.js 1.09 kB
packages/icons/dist/Messenger.js 1.04 kB
packages/icons/dist/Minus.js 911 B
packages/icons/dist/Mobile.js 963 B
packages/icons/dist/MobilePhone.js 1 kB
packages/icons/dist/MonthView.js 927 B
packages/icons/dist/Moon.js 958 B
packages/icons/dist/More.js 967 B
packages/icons/dist/MoreCircle.js 1.43 kB
packages/icons/dist/Motorbike.js 1.35 kB
packages/icons/dist/Move.js 1.24 kB
packages/icons/dist/Mybank.js 2.64 kB
packages/icons/dist/Nfc.js 1.12 kB
packages/icons/dist/NfcPayment.js 2.71 kB
packages/icons/dist/NoCosts.js 1.11 kB
packages/icons/dist/NoSim.js 1.29 kB
packages/icons/dist/NoSimcard.js 1.24 kB
packages/icons/dist/NotificationCenter.js 1.29 kB
packages/icons/dist/Notify.js 1.75 kB
packages/icons/dist/NotifyCircle.js 1.02 kB
packages/icons/dist/OnlinePayments.js 1.05 kB
packages/icons/dist/OnlineStore.js 1.35 kB
packages/icons/dist/OnlineStoreFilled.js 1.16 kB
packages/icons/dist/OpenOrders.js 1.13 kB
packages/icons/dist/OpenOrdersFilled.js 1.08 kB
packages/icons/dist/OrderPlaced.js 1.04 kB
packages/icons/dist/Orders.js 1.15 kB
packages/icons/dist/Package.js 1.15 kB
packages/icons/dist/PaidOut.js 1.13 kB
packages/icons/dist/ParcelLocker.js 1.08 kB
packages/icons/dist/PartialReturn.js 1.05 kB
packages/icons/dist/Passport.js 921 B
packages/icons/dist/Pause.js 1.12 kB
packages/icons/dist/Paused.js 1.02 kB
packages/icons/dist/PaymentLink.js 1.5 kB
packages/icons/dist/PaymentLinks.js 1.47 kB
packages/icons/dist/PaymentLinksFilled.js 1.42 kB
packages/icons/dist/PaymentMethods.js 1.1 kB
packages/icons/dist/Payouts.js 1.03 kB
packages/icons/dist/PayoutSettings.js 1.21 kB
packages/icons/dist/PayoutsFilled.js 981 B
packages/icons/dist/PayPal.js 6.46 kB
packages/icons/dist/Percentage.js 1.28 kB
packages/icons/dist/Phone.js 1.05 kB
packages/icons/dist/PhoneChat.js 1.09 kB
packages/icons/dist/PiggyBank.js 1.91 kB
packages/icons/dist/Pinterest.js 1.19 kB
packages/icons/dist/Pix.js 1.84 kB
packages/icons/dist/PixFull.js 4.08 kB
packages/icons/dist/Play.js 1.13 kB
packages/icons/dist/Plus.js 943 B
packages/icons/dist/PlusTier.js 2.74 kB
packages/icons/dist/Pluxee.js 1.53 kB
packages/icons/dist/Pos.js 935 B
packages/icons/dist/PosFilled.js 932 B
packages/icons/dist/PostFinance.js 2.42 kB
packages/icons/dist/Printer.js 991 B
packages/icons/dist/PrinterFailed.js 1.35 kB
packages/icons/dist/PrintFailed.js 1.39 kB
packages/icons/dist/Profile.js 1.34 kB
packages/icons/dist/ProfileFilled.js 952 B
packages/icons/dist/Promote.js 1.23 kB
packages/icons/dist/PromoteFilled.js 1.17 kB
packages/icons/dist/Przelewy24.js 2.4 kB
packages/icons/dist/QrCode.js 1.19 kB
packages/icons/dist/Random.js 1.06 kB
packages/icons/dist/Receipt.js 1.03 kB
packages/icons/dist/ReceiptAttached.js 957 B
packages/icons/dist/ReceiptFilled.js 896 B
packages/icons/dist/ReceiptMissing.js 1.24 kB
packages/icons/dist/ReceiptSmart.js 992 B
packages/icons/dist/ReceiptUnreviewed.js 947 B
packages/icons/dist/Receivables.js 916 B
packages/icons/dist/ReceivablesFilled.js 909 B
packages/icons/dist/RecurringInvoice.js 1.23 kB
packages/icons/dist/RedCompra.js 4.52 kB
packages/icons/dist/Refer.js 1.42 kB
packages/icons/dist/ReferAFriend.js 1.51 kB
packages/icons/dist/Refresh.js 1.09 kB
packages/icons/dist/Refunded.js 1.86 kB
packages/icons/dist/Remove.js 976 B
packages/icons/dist/Reports.js 1.01 kB
packages/icons/dist/ReportsFilled.js 1.11 kB
packages/icons/dist/ResidencePermit.js 1.2 kB
packages/icons/dist/Reward.js 1.37 kB
packages/icons/dist/Sales.js 1.07 kB
packages/icons/dist/SamsungPay.js 2.53 kB
packages/icons/dist/Satispay.js 3.24 kB
packages/icons/dist/Search.js 1.17 kB
packages/icons/dist/Secure.js 1.25 kB
packages/icons/dist/SecurePayments.js 1.22 kB
packages/icons/dist/SelectAll.js 966 B
packages/icons/dist/Send.js 1.29 kB
packages/icons/dist/Sepa.js 2.06 kB
packages/icons/dist/Services.js 1.32 kB
packages/icons/dist/Settings.js 1.86 kB
packages/icons/dist/SettingsFilled.js 1.36 kB
packages/icons/dist/Share.js 1.51 kB
packages/icons/dist/Shop.js 1.03 kB
packages/icons/dist/ShopFilled.js 988 B
packages/icons/dist/SimCard.js 1.16 kB
packages/icons/dist/Sodexo.js 2.2 kB
packages/icons/dist/Sofort.js 2.45 kB
packages/icons/dist/Sort.js 1.09 kB
packages/icons/dist/Sparkles.js 1.52 kB
packages/icons/dist/Split.js 1.28 kB
packages/icons/dist/Stop.js 969 B
packages/icons/dist/Stopped.js 1.07 kB
packages/icons/dist/StoreEditor.js 1.11 kB
packages/icons/dist/SumupCard.js 1.46 kB
packages/icons/dist/SumUpConnect.js 1.29 kB
packages/icons/dist/SumUpConnectFilled.js 1.21 kB
packages/icons/dist/SumUpLogo.js 1.94 kB
packages/icons/dist/SumUpLogomark.js 1.13 kB
packages/icons/dist/SumupPay.js 1.41 kB
packages/icons/dist/SumupScheme.js 1.14 kB
packages/icons/dist/Sun.js 1.04 kB
packages/icons/dist/Support.js 1.5 kB
packages/icons/dist/Swile.js 3.46 kB
packages/icons/dist/Tablet.js 958 B
packages/icons/dist/TapToPay.js 1.13 kB
packages/icons/dist/Taxes.js 996 B
packages/icons/dist/ThumbDown.js 1.2 kB
packages/icons/dist/ThumbUp.js 1.2 kB
packages/icons/dist/ThumbUpFilled.js 1.1 kB
packages/icons/dist/Ticket.js 1.95 kB
packages/icons/dist/Time.js 1.04 kB
packages/icons/dist/Tipping.js 1.06 kB
packages/icons/dist/Tools.js 991 B
packages/icons/dist/ToolsFilled.js 971 B
packages/icons/dist/Transactions.js 952 B
packages/icons/dist/TransferIn.js 1.14 kB
packages/icons/dist/TransferOut.js 1.16 kB
packages/icons/dist/Transit.js 1.09 kB
packages/icons/dist/Truck.js 1.21 kB
packages/icons/dist/Twint.js 1.43 kB
packages/icons/dist/Twitter.js 912 B
packages/icons/dist/Unfavorite.js 1.38 kB
packages/icons/dist/Unfavourite.js 1.34 kB
packages/icons/dist/UnionPay.js 7.03 kB
packages/icons/dist/Unsplash.js 915 B
packages/icons/dist/Upgrade.js 1.47 kB
packages/icons/dist/Upload.js 1.05 kB
packages/icons/dist/UploadCloud.js 1.19 kB
packages/icons/dist/UsPosBackoffice.js 1.12 kB
packages/icons/dist/UsPosBackofficeFilled.js 1.09 kB
packages/icons/dist/View.js 1.48 kB
packages/icons/dist/VirtualTerminal.js 1.03 kB
packages/icons/dist/VirtualTerminalFilled.js 966 B
packages/icons/dist/Visa.js 1.86 kB
packages/icons/dist/VisaElectron.js 3.81 kB
packages/icons/dist/Volume.js 1.35 kB
packages/icons/dist/Vpay.js 1.88 kB
packages/icons/dist/Vr.js 1.33 kB
packages/icons/dist/Wealth.js 1.79 kB
packages/icons/dist/Webspace.js 1.11 kB
packages/icons/dist/WeekView.js 935 B
packages/icons/dist/WhatsApp.js 1.33 kB
packages/icons/dist/Wifi.js 1.1 kB
packages/icons/dist/WireTransfer.js 1.09 kB
packages/icons/dist/Youtube.js 1.35 kB
packages/icons/dist/ZipFile.js 1.17 kB
packages/icons/dist/ZoomIn.js 977 B
packages/icons/dist/ZoomOut.js 950 B

compressed-size-action

@codecov

codecov Bot commented Apr 26, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 93.76%. Comparing base (7f47525) to head (0f0ad3d).
⚠️ Report is 69 commits behind head on main.

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main    #3583      +/-   ##
==========================================
+ Coverage   93.73%   93.76%   +0.02%     
==========================================
  Files         199      200       +1     
  Lines        4486     4506      +20     
  Branches     1763     1767       +4     
==========================================
+ Hits         4205     4225      +20     
  Misses        254      254              
  Partials       27       27              
Files with missing lines Coverage Δ
...es/circuit-ui/components/CopyButton/CopyButton.tsx 100.00% <100.00%> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@sirineJ

sirineJ commented May 6, 2026

Copy link
Copy Markdown
Contributor

Hi Mat 👋
We ❤️ this component and after discussing it, we have some suggestions:

  • Naming Change the name to CopyButton, the copy action of the button being the main functionality of the component
  • Variants we identified other implementations for the same functionality with buttons, so we are suggesting the component has 3 variants:
    • a read-only input (your implementation) inheriting from the Input component
    • a full button (with icon and text) inheriting from the Button component
    • an icon button
  • Use a NotificationToast as a way to show feedback about the copy action instead of displaying the checkmark icon, as it already provides feedback in an accessible manner.

We will add the component to Figma and in the meantime don't hesitate to ask questions directly to the team :)

Comment thread packages/circuit-ui/components/ClipboardText/ClipboardText.tsx Outdated
Comment thread packages/circuit-ui/components/ClipboardText/ClipboardText.tsx Outdated
Comment thread packages/circuit-ui/components/ClipboardText/ClipboardText.tsx Outdated
*
* @default input
*/
copyVariant?: 'input';

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

note: variant would be consistent with other components but would also mean we can't use variant when rendering the CopyButton and Button.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

At first I thought: "Let's use size!" and then I realized that it would have the same issue 😅

How about style? The TimeInput uses formatStyles with "long", "short", and "narrow" values.

Comment thread packages/circuit-ui/components/CopyButton/CopyButton.tsx Outdated
@matoous matoous marked this pull request as ready for review May 20, 2026 07:02
@matoous matoous force-pushed the md/clipboard-text branch from 562ad42 to 317025c Compare May 20, 2026 07:03
@matoous

matoous commented May 20, 2026

Copy link
Copy Markdown
Contributor Author

@matoous matoous changed the title feat(circuit-ui): add ClipboardText component (experimental) feat(circuit-ui): add CopyButton component May 20, 2026
Comment thread .changeset/green-snakes-sit.md Outdated
Comment thread packages/circuit-ui/components/CopyButton/CopyButton.tsx Outdated
Comment thread packages/circuit-ui/components/CopyButton/CopyButton.spec.tsx Outdated
).toHaveAttribute('aria-disabled', 'true');
});

it('should have no accessibility violations', async () => {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add an accessibility test for each of the variants.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added, thank you. Wasn't sure how to structure it in the tests so please take a look if my solution matches your idea.

Comment thread packages/circuit-ui/components/CopyButton/CopyButton.tsx Outdated
} = props;
const fieldId = customId || generatedId;
const displayText = text ?? value;
const buttonLabel = `${copyLabel}: ${props.label}`;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the intention behind merging these labels together?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So I wasn't sure how this should behave from the accessibility perspective - we render an input with a value and then inside it a button to copy the value. Will it be clear from the hierarchy and the button being described with e.g. "Copy to clipboard" that the input is what it will copy?

variant="tertiary"
disabled={isCopyDisabled}
onClick={handleCopy}
aria-label={buttonLabel}

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The label for an IconButton should be passed as its children. I'm also confused why the aria-label and children props differ?

Comment thread packages/circuit-ui/components/CopyButton/CopyButton.tsx Outdated
Comment thread packages/circuit-ui/components/CopyButton/CopyButton.tsx Outdated
type="button"
disabled={isCopyDisabled}
onClick={handleCopy}
icon={CopyPaste}

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Idea: We could add a tooltip with the value to the "button" and "icon-button" variants. Alternatively, we could render it in a visually hidden element and associate it with the button via the aria-describedby attribute.

What do you think?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Opted for aria-describedby as the simpler approach for now.

matoous and others added 5 commits May 28, 2026 18:10
We have a few places in our dashboard where we render a text and allow
user's to copy it into a clipboard using a button. Currently, those
are implemented inconsistency, sometimes using the `Input` component,
sometimes using custom styling of `Body` and `IconButton`.

This change introduces a new ClipboardText component that render
a copiable text.
Co-authored-by: Connor Bär <connor-baer@users.noreply.github.com>
@matoous matoous force-pushed the md/clipboard-text branch from 1d16abc to d949561 Compare May 28, 2026 16:14
type InputCopyButtonProps = CommonCopyButtonProps &
Omit<
InputProps,
'defaultValue' | 'onCopy' | 'renderSuffix' | 'showValid' | 'type' | 'value'

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we can also omit readOnly as its true by default

Suggested change
'defaultValue' | 'onCopy' | 'renderSuffix' | 'showValid' | 'type' | 'value'
'defaultValue' | 'onCopy' | 'renderSuffix' | 'showValid' | 'type' | 'value' | 'readOnly' | 'passwordManagerIgnore'

},
disabled: { control: 'boolean' },
hideLabel: { control: 'boolean' },
text: { control: 'text' },

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

text doesn't seem to be a valid prop of the component 🤔

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, same as below, forgot to update after refactor 🙈 fixed

};

type ButtonCopyButtonProps = CommonCopyButtonProps &
Omit<ButtonProps, 'children' | 'icon' | 'onClick' | 'type'> & {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Omit<ButtonProps, 'children' | 'icon' | 'onClick' | 'type'> & {
Omit<ButtonProps, 'children' | 'icon' | 'onClick' | 'type' | 'navigationIcon' | 'destructive' > & {

</ToastProvider>
),
],
argTypes: {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since we have very different props depending on the variant, can we classify them in categories to make them more understandable ? See the example from the autocomplete input.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, done!


MaskedInput.args = {
...inputArgs,
text: 'sk_live_******',

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
text: 'sk_live_******',
visibleValue: 'sk_live_******',

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated to visibleValue.


## Content

Keep the visible label clear and specific so users understand what will be copied. Use concise copy such as `"Copy token"` or `"Copy secret"`, and customize `copiedBody` when the success message should refer to a specific object.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't see any references of copiedBody in the code, did you mean successLabel maybe ?

@matoous matoous Jul 3, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, forgot to update docs after updating the component. Fixed.


Keep the visible label clear and specific so users understand what will be copied. Use concise copy such as `"Copy token"` or `"Copy secret"`, and customize `copiedBody` when the success message should refer to a specific object.

For longer strings, the input variant truncates the visible text while preserving the full copied value.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The LongValue story actually shows the entire value, which scenario did you intend to keep ?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed, it was a copy paste mistake.

/>,
);

fireEvent.click(

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

prefer await userEvent.click over fireEvent.click

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done, thanks!

{copyLabel}
</Button>
<span id={valueDescriptionId} className={utilClasses.hideVisually}>
{value}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

currently value is of type string | (string & readonly string[]) (the latter inherited from ButtonHTMLAttributes. Can we override it to string ?

});

describe('as input', async () => {
it('should have no accessibility violations', async () => {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

how about refactoring tests with describe.each to test the behaviours and accessibility on all variants ?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done, thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants