@@ -35,6 +35,7 @@ import { clsx } from '../../packages/circuit-ui/styles/clsx.js';
35
35
import { utilClasses } from '../../packages/circuit-ui/styles/utility.js' ;
36
36
import { slugify } from '../slugify.js' ;
37
37
import classes from './Icons.module.css' ;
38
+ import { IconButton } from '@sumup-oss/circuit-ui' ;
38
39
39
40
function groupBy (
40
41
icons : IconsManifest [ 'icons' ] ,
@@ -77,7 +78,7 @@ export function Icons() {
77
78
78
79
const handleChange =
79
80
( setState : Dispatch < SetStateAction < string > > ) =>
80
- ( event : ChangeEvent < any > ) => {
81
+ ( event : ChangeEvent < HTMLInputElement | HTMLSelectElement > ) => {
81
82
setState ( event . target . value ) ;
82
83
} ;
83
84
@@ -160,6 +161,10 @@ export function Icons() {
160
161
icon . name ,
161
162
) as keyof typeof iconComponents ;
162
163
const Icon = iconComponents [ componentName ] as IconComponentType ;
164
+ const copyIconURL = ( ) => {
165
+ const iconURL = `https://circuit.sumup.com/icons/v2/${ icon . name } _${ icon . size } .svg` ;
166
+ navigator . clipboard . writeText ( iconURL ) ;
167
+ } ;
163
168
return (
164
169
< div key = { id } className = { classes . wrapper } >
165
170
< div
@@ -180,9 +185,7 @@ export function Icons() {
180
185
</ div >
181
186
< span id = { id } className = { classes . label } >
182
187
{ componentName }
183
- { size === 'all' && (
184
- < span className = { classes . size } > { icon . size } </ span >
185
- ) }
188
+ < span className = { classes . size } > { icon . size } </ span >
186
189
</ span >
187
190
{ icon . deprecation && (
188
191
< Tooltip
@@ -200,6 +203,15 @@ export function Icons() {
200
203
) }
201
204
/>
202
205
) }
206
+ < IconButton
207
+ variant = "tertiary"
208
+ size = "s"
209
+ icon = { iconComponents . Link }
210
+ className = { classes . copy }
211
+ onClick = { copyIconURL }
212
+ >
213
+ Copy URL
214
+ </ IconButton >
203
215
</ div >
204
216
) ;
205
217
} ) }
0 commit comments