@react-fabric/core 1.0.0-beta.60 → 1.0.0-beta.61

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.
Files changed (82) hide show
  1. package/css/components/_button.css +10 -2
  2. package/css/components/_icon.css +1 -1
  3. package/css/reset/_reset.css +1 -1
  4. package/css/reset/_theme.css +3 -3
  5. package/css/styles.css +2 -0
  6. package/css/theme/_colors.css +2 -2
  7. package/dist/cjs/components/animations/Animations.js +54 -49
  8. package/dist/cjs/components/button/Button.js +1 -1
  9. package/dist/cjs/components/callout/Callout.js +4 -4
  10. package/dist/cjs/components/collapsable/Collapsable.js +4 -5
  11. package/dist/cjs/components/dropdown/DropdownTool.js +1 -2
  12. package/dist/cjs/components/media/Media.js +9 -8
  13. package/dist/cjs/components/menu/Menu.js +1 -2
  14. package/dist/cjs/components/menu/MenuItem.js +0 -1
  15. package/dist/cjs/components/navigator/Navigator.js +2 -3
  16. package/dist/cjs/components/panel/Panel.js +7 -7
  17. package/dist/cjs/components/tabpanel/Tab.js +0 -1
  18. package/dist/cjs/core/aside/Aside.js +3 -4
  19. package/dist/cjs/core/page/Page.js +1 -1
  20. package/dist/cjs/hooks/useStepper.js +0 -1
  21. package/dist/cjs/index.js +3 -8
  22. package/dist/cjs/overlays/alert/Alert.js +1 -2
  23. package/dist/cjs/overlays/flyout/Flyout.js +2 -3
  24. package/dist/cjs/overlays/modal/Modal.js +2 -3
  25. package/dist/cjs/overlays/toast/Toast.js +2 -3
  26. package/dist/cjs/overlays/tooltip/Tooltip.js +1 -2
  27. package/dist/cjs/typography/Copy.js +1 -2
  28. package/dist/esm/components/animations/Animations.js +51 -47
  29. package/dist/esm/components/button/Button.js +1 -1
  30. package/dist/esm/components/callout/Callout.js +4 -4
  31. package/dist/esm/components/collapsable/Collapsable.js +4 -5
  32. package/dist/esm/components/dropdown/DropdownTool.js +1 -2
  33. package/dist/esm/components/media/Media.js +9 -8
  34. package/dist/esm/components/menu/Menu.js +1 -2
  35. package/dist/esm/components/menu/MenuItem.js +0 -1
  36. package/dist/esm/components/navigator/Navigator.js +2 -3
  37. package/dist/esm/components/panel/Panel.js +8 -8
  38. package/dist/esm/components/tabpanel/Tab.js +0 -1
  39. package/dist/esm/core/aside/Aside.js +4 -5
  40. package/dist/esm/core/page/Page.js +2 -2
  41. package/dist/esm/hooks/useStepper.js +0 -1
  42. package/dist/esm/index.js +1 -2
  43. package/dist/esm/overlays/alert/Alert.js +1 -2
  44. package/dist/esm/overlays/flyout/Flyout.js +3 -4
  45. package/dist/esm/overlays/modal/Modal.js +3 -4
  46. package/dist/esm/overlays/toast/Toast.js +2 -3
  47. package/dist/esm/overlays/tooltip/Tooltip.js +1 -2
  48. package/dist/esm/typography/Copy.js +1 -2
  49. package/dist/types/components/animations/Animations.d.ts +28 -9
  50. package/dist/types/components/collapsable/Collapsable.d.ts +2 -2
  51. package/dist/types/components/index.d.ts +1 -1
  52. package/dist/types/components/panel/Panel.d.ts +1 -1
  53. package/dist/types/core/aside/Aside.d.ts +1 -1
  54. package/dist/types/index.d.ts +0 -1
  55. package/dist/types/types/index.d.ts +9 -3
  56. package/package.json +6 -3
  57. package/src/components/animations/Animations.tsx +53 -45
  58. package/src/components/button/Button.tsx +1 -1
  59. package/src/components/callout/Callout.tsx +4 -5
  60. package/src/components/collapsable/Collapsable.tsx +4 -5
  61. package/src/components/dropdown/DropdownTool.tsx +1 -2
  62. package/src/components/index.ts +3 -3
  63. package/src/components/media/Media.tsx +7 -8
  64. package/src/components/menu/Menu.tsx +1 -2
  65. package/src/components/navigator/Navigator.tsx +2 -3
  66. package/src/components/panel/Panel.tsx +14 -8
  67. package/src/core/aside/Aside.tsx +4 -5
  68. package/src/core/page/Page.tsx +2 -2
  69. package/src/index.ts +0 -1
  70. package/src/overlays/alert/Alert.tsx +1 -2
  71. package/src/overlays/flyout/Flyout.tsx +3 -4
  72. package/src/overlays/modal/Modal.tsx +3 -4
  73. package/src/overlays/toast/Toast.tsx +2 -3
  74. package/src/overlays/tooltip/Tooltip.tsx +1 -2
  75. package/src/types/index.ts +32 -2
  76. package/src/typography/Copy.tsx +1 -2
  77. package/css/flags.rect.css +0 -1607
  78. package/css/flags.wavy.css +0 -1606
  79. package/dist/cjs/types/icons.js +0 -212
  80. package/dist/esm/types/icons.js +0 -214
  81. package/dist/types/types/icons.d.ts +0 -210
  82. package/src/types/icons.ts +0 -451
@@ -25,7 +25,6 @@ import { getImageColorset } from "@react-fabric/utilities";
25
25
  import classNames from "classnames";
26
26
  import { Fragment, useEffect, useRef, useState } from "react";
27
27
  import { type AriaProps, type CssProp, type TestProps } from "../../types";
28
- import { CoreIcons } from "../../types/icons";
29
28
  import { Button } from "../button/Button";
30
29
  import { Icon } from "../icon/Icon";
31
30
 
@@ -75,10 +74,10 @@ const loadIndicator = (
75
74
  <div
76
75
  className={classNames(
77
76
  "fabric-mediaPlaceholder",
78
- "absolute z-1 top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 text-4xl text-gray animate-pulse",
77
+ "absolute z-1 top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 text-sm text-gray",
79
78
  )}
80
79
  >
81
- ●●●
80
+ <i className="icon-[svg-spinners--pulse-rings-2]" />
82
81
  </div>
83
82
  );
84
83
 
@@ -156,7 +155,7 @@ export const Image = ({
156
155
  <Icon
157
156
  size="2rem"
158
157
  className="absolute text-tint-300 top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2"
159
- icon={CoreIcons.mediaImageBroken}
158
+ icon="icon-[mdi--image-off-outline]"
160
159
  />
161
160
  )}
162
161
  </div>
@@ -272,7 +271,7 @@ export const Video = ({
272
271
  rounded
273
272
  variant="link"
274
273
  className={"fabric-mediaControlPlaceholder"}
275
- icon={CoreIcons.ellipsis}
274
+ icon="icon-[mdi--dots-vertical]"
276
275
  aria-label="controls"
277
276
  />
278
277
  <Button
@@ -284,7 +283,7 @@ export const Video = ({
284
283
  videoRef.current &&
285
284
  (videoRef.current.volume = videoRef.current.volume ? 0 : 1);
286
285
  }}
287
- icon={volume ? CoreIcons.volumeOn : CoreIcons.volumeOff}
286
+ icon={volume ? "icon-[mdi--volume]" : "icon-[mdi--volume-mute]"}
288
287
  />
289
288
  <Button
290
289
  rounded
@@ -296,7 +295,7 @@ export const Video = ({
296
295
  ? videoRef.current?.play()
297
296
  : videoRef.current?.pause();
298
297
  }}
299
- icon={state ? CoreIcons.pause : CoreIcons.play}
298
+ icon={state ? "icon-[mdi--pause]" : "icon-[mdi--play]"}
300
299
  />
301
300
  </div>
302
301
  </Fragment>
@@ -305,7 +304,7 @@ export const Video = ({
305
304
  <Icon
306
305
  size="2rem"
307
306
  className="absolute text-tint-300 top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2"
308
- icon={CoreIcons.mediaVideoBroken}
307
+ icon="icon-[mdi--video-off-outline]"
309
308
  />
310
309
  )}
311
310
  </div>
@@ -56,7 +56,6 @@ import {
56
56
  useState,
57
57
  } from "react";
58
58
  import { HotKeyWrapper } from "../../hotkeys/HotKeyWrapper";
59
- import { CoreIcons } from "../../types/icons";
60
59
  import { cloneChildren, nodeCheck } from "../../utils";
61
60
  import { MenuItem } from "./MenuItem";
62
61
  import { type MenuProps } from "./types";
@@ -218,7 +217,7 @@ const MenuComponent = ({
218
217
  } as AnyObject) as AnyObject)}
219
218
  data-open={isOpen}
220
219
  minimal={minimal}
221
- altIcon={CoreIcons.chevronRight}
220
+ altIcon="icon-[mdi--menu-right]"
222
221
  ref={mergeRefs(refs.setReference, ref)}
223
222
  />
224
223
  )}
@@ -32,7 +32,6 @@ import {
32
32
  type PaletteType,
33
33
  type TestProps,
34
34
  } from "../../types";
35
- import { CoreIcons } from "../../types/icons";
36
35
  import { Icon } from "../icon/Icon";
37
36
  import { isEmpty } from "@react-fabric/utilities";
38
37
 
@@ -108,7 +107,7 @@ export const Navigator = ({
108
107
  className="text-[1em] p-1"
109
108
  aria-label="previous"
110
109
  data-ref="previous"
111
- icon={CoreIcons.chevronLeft}
110
+ icon="icon-[mdi--chevron-left]"
112
111
  disabled={!isEmpty(current) && current === 0}
113
112
  onClick={(e) => [e.stopPropagation(), navPrev()]}
114
113
  />
@@ -119,7 +118,7 @@ export const Navigator = ({
119
118
  color={color}
120
119
  aria-label="next"
121
120
  data-ref="next"
122
- icon={CoreIcons.chevronRight}
121
+ icon="icon-[mdi--chevron-right]"
123
122
  disabled={!isEmpty(current) && current + 1 === length}
124
123
  onClick={(e) => [e.stopPropagation(), navNext()]}
125
124
  />
@@ -35,8 +35,7 @@ import {
35
35
  type ExpandProps,
36
36
  type TestProps,
37
37
  } from "../../types";
38
- import { CoreIcons } from "../../types/icons";
39
- import { Loading } from "../animations/Animations";
38
+ import { LoadingLine } from "../animations/Animations";
40
39
  import { getIconProps, Icon, type IconProps } from "../icon/Icon";
41
40
 
42
41
  export interface PanelProps
@@ -119,7 +118,7 @@ export interface PanelProps
119
118
  * ```jsx
120
119
  * <Panel
121
120
  * title="Panel Title"
122
- * icon={CoreIcons.info}
121
+ * icon="icon-[mdi--info]"
123
122
  * actions={<button>Action</button>}
124
123
  * expandable
125
124
  * collapsable
@@ -216,9 +215,10 @@ export const Panel = ({
216
215
  >
217
216
  {onBack && (
218
217
  <Icon
218
+ rtlFlip
219
219
  data-ref="panelBack"
220
220
  className={classNames("fabric-panelAction", "cursor-pointer")}
221
- icon={CoreIcons.chevronLeft}
221
+ icon="icon-[mdi--chevron-left]"
222
222
  onClick={onBack}
223
223
  />
224
224
  )}
@@ -248,7 +248,11 @@ export const Panel = ({
248
248
  <Icon
249
249
  data-ref="panelExpand"
250
250
  className={classNames("fabric-panelAction", "cursor-pointer")}
251
- icon={expanded ? CoreIcons.minimize : CoreIcons.maximize}
251
+ icon={
252
+ expanded
253
+ ? "icon-[mdi--fullscreen-exit]"
254
+ : "icon-[mdi--fullscreen]"
255
+ }
252
256
  onClick={toggleExpand}
253
257
  />
254
258
  )}
@@ -256,7 +260,9 @@ export const Panel = ({
256
260
  <Icon
257
261
  data-ref="panelCollapse"
258
262
  className={classNames("fabric-panelAction", "cursor-pointer")}
259
- icon={collapsed ? CoreIcons.expand : CoreIcons.collapse}
263
+ icon={
264
+ collapsed ? "icon-[mdi--plus-box]" : "icon-[mdi--minus-box]"
265
+ }
260
266
  onClick={toggleCollapse}
261
267
  />
262
268
  )}
@@ -264,7 +270,7 @@ export const Panel = ({
264
270
  <Icon
265
271
  data-ref="panelClose"
266
272
  className={classNames("fabric-panelAction", "cursor-pointer")}
267
- icon={CoreIcons.close}
273
+ icon="icon-[mdi--close]"
268
274
  onClick={onClose}
269
275
  />
270
276
  )}
@@ -279,7 +285,7 @@ export const Panel = ({
279
285
  "area-content grid overflow-hidden",
280
286
  )}
281
287
  >
282
- {loading && <Loading />}
288
+ {loading && <LoadingLine />}
283
289
  {children}
284
290
  </div>
285
291
  )}
@@ -23,7 +23,7 @@
23
23
 
24
24
  import classNames from "classnames";
25
25
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
26
- import { Loading } from "../../components/animations/Animations";
26
+ import { LoadingLine } from "../../components/animations/Animations";
27
27
  import { getIconProps, Icon, type IconProps } from "../../components/icon/Icon";
28
28
  import { useLayoutEffectDebugger } from "../../hooks/useEffectDebugger";
29
29
  import { usePropToggle } from "../../hooks/usePropToggle";
@@ -35,7 +35,6 @@ import {
35
35
  type Elements,
36
36
  type TestProps,
37
37
  } from "../../types";
38
- import { CoreIcons } from "../../types/icons";
39
38
  import { ErrorBoundary } from "../boundary/ErrorBoundary";
40
39
 
41
40
  export interface AsideProps
@@ -111,7 +110,7 @@ export interface AsideProps
111
110
  * ```jsx
112
111
  * <Aside
113
112
  * title="Sidebar Title"
114
- * icon={CoreIcons.menu}
113
+ * icon=icon-[mdi--menu]
115
114
  * rtlFlip={true}
116
115
  * className="custom-aside"
117
116
  * bodyClassName="custom-aside-body"
@@ -254,7 +253,7 @@ export const Aside = ({
254
253
  <Icon
255
254
  aria-label={isCollapsed ? "expand" : "collapse"}
256
255
  className={classNames("fabric-asideCollapse", "p-2 select-none")}
257
- icon={CoreIcons.chevronLeft}
256
+ icon="icon-[mdi--chevron-left]"
258
257
  rtlFlip
259
258
  onClick={toggleCollapse}
260
259
  data-ref="asideToggle"
@@ -271,7 +270,7 @@ export const Aside = ({
271
270
  )}
272
271
  {actions && <div className={"fabric-asideActions"}>{actions}</div>}
273
272
  </header>
274
- {loading && <Loading />}
273
+ {loading && <LoadingLine />}
275
274
  {isCollapsed && (
276
275
  <div
277
276
  role="none"
@@ -22,7 +22,7 @@
22
22
  */
23
23
 
24
24
  import classNames from "classnames";
25
- import { Loading } from "../../components/animations/Animations";
25
+ import { LoadingLine } from "../../components/animations/Animations";
26
26
  import { getIconProps, Icon, type IconProps } from "../../components/icon/Icon";
27
27
  import { type ChildrenProp, type RefProp, type TestProps } from "../../types";
28
28
 
@@ -116,7 +116,7 @@ export const Page = ({
116
116
  {title}
117
117
  </div>
118
118
  )}
119
- {loading && <Loading />}
119
+ {loading && <LoadingLine />}
120
120
  {children}
121
121
  </div>
122
122
  );
package/src/index.ts CHANGED
@@ -44,7 +44,6 @@ export { HotKeyLabel } from "./hotkeys/HotKeyLabel";
44
44
  export { HotKeyWrapper } from "./hotkeys/HotKeyWrapper";
45
45
 
46
46
  export { type ModalProps } from "./types";
47
- export { CoreIcons } from "./types/icons";
48
47
 
49
48
  export { cloneChildren } from "./utils";
50
49
 
@@ -37,7 +37,6 @@ import { AnimationIndicator } from "../../components/animations/Animations";
37
37
  import { Button } from "../../components/button/Button";
38
38
  import { Icon } from "../../components/icon/Icon";
39
39
  import { type ColorState, type Elements } from "../../types";
40
- import { CoreIcons } from "../../types/icons";
41
40
  import { Title } from "../../typography/Title";
42
41
  import { getColor } from "../../utils";
43
42
 
@@ -256,7 +255,7 @@ export const Alert = ({
256
255
  className="m-0"
257
256
  color={color}
258
257
  onClick={() => handleClose(false)}
259
- icon={CoreIcons.close}
258
+ icon="icon-[mdi--close]"
260
259
  aria-label="close"
261
260
  />
262
261
  </div>
@@ -33,7 +33,7 @@ import {
33
33
  import { isString } from "@react-fabric/utilities";
34
34
  import classNames from "classnames";
35
35
  import { isValidElement, useCallback, useEffect } from "react";
36
- import { Loading } from "../../components/animations/Animations";
36
+ import { LoadingLine } from "../../components/animations/Animations";
37
37
  import { getIconProps, Icon, type IconProps } from "../../components/icon/Icon";
38
38
  import { Header } from "../../core/headfoot/HeadFoot";
39
39
  import { HotKeyWrapper } from "../../hotkeys/HotKeyWrapper";
@@ -44,7 +44,6 @@ import {
44
44
  type Elements,
45
45
  type TestProps,
46
46
  } from "../../types";
47
- import { CoreIcons } from "../../types/icons";
48
47
 
49
48
  export interface FlyoutProps extends AriaProps, TestProps, ChildrenProp {
50
49
  icon?: IconProps;
@@ -236,11 +235,11 @@ export const Flyout = ({
236
235
  "fabric-panelAction",
237
236
  "cursor-pointer p-1 text-xl self-center",
238
237
  )}
239
- icon={CoreIcons.close}
238
+ icon="icon-[mdi--close]"
240
239
  onClick={() => handleClose(false)}
241
240
  />
242
241
  </Header>
243
- {loading && <Loading />}
242
+ {loading && <LoadingLine />}
244
243
  <div
245
244
  role="dialog"
246
245
  className={classNames(
@@ -33,7 +33,7 @@ import {
33
33
  import { isString } from "@react-fabric/utilities";
34
34
  import classNames from "classnames";
35
35
  import { isValidElement, useCallback, useEffect } from "react";
36
- import { Loading } from "../../components/animations/Animations";
36
+ import { LoadingLine } from "../../components/animations/Animations";
37
37
  import { getIconProps, Icon, type IconProps } from "../../components/icon/Icon";
38
38
  import { Header } from "../../core/headfoot/HeadFoot";
39
39
  import { HotKeyWrapper } from "../../hotkeys/HotKeyWrapper";
@@ -44,7 +44,6 @@ import {
44
44
  type Elements,
45
45
  type TestProps,
46
46
  } from "../../types";
47
- import { CoreIcons } from "../../types/icons";
48
47
 
49
48
  export interface ModalProps extends AriaProps, TestProps, ChildrenProp {
50
49
  icon?: IconProps;
@@ -226,11 +225,11 @@ export const Modal = ({
226
225
  "fabric-panelAction",
227
226
  "cursor-pointer p-1 text-xl self-center",
228
227
  )}
229
- icon={CoreIcons.close}
228
+ icon="icon-[mdi--close]"
230
229
  onClick={() => handleClose(false)}
231
230
  />
232
231
  </Header>
233
- {loading && <Loading />}
232
+ {loading && <LoadingLine />}
234
233
  <div
235
234
  role="dialog"
236
235
  className={classNames(
@@ -28,7 +28,6 @@ import { AnimationIndicator } from "../../components/animations/Animations";
28
28
  import { Button } from "../../components/button/Button";
29
29
  import { Icon } from "../../components/icon/Icon";
30
30
  import { type ColorState, type Elements } from "../../types";
31
- import { CoreIcons } from "../../types/icons";
32
31
  import { getColor } from "../../utils";
33
32
 
34
33
  export interface ToastProps {
@@ -175,7 +174,7 @@ export const Toast = ({
175
174
  variant="link"
176
175
  className="m-0"
177
176
  color={color}
178
- icon={CoreIcons.closeAll}
177
+ icon="icon-[mdi--close-box-multiple-outline]"
179
178
  aria-label="close-all"
180
179
  onClick={onCloseAll}
181
180
  />
@@ -184,7 +183,7 @@ export const Toast = ({
184
183
  variant="link"
185
184
  className="m-0"
186
185
  color={color}
187
- icon={CoreIcons.close}
186
+ icon="icon-[mdi--close]"
188
187
  aria-label="close"
189
188
  onClick={() => handleClose(false)}
190
189
  />
@@ -51,7 +51,6 @@ import {
51
51
  import { Icon } from "../../components/icon/Icon";
52
52
  import { useIsRtl } from "../../hooks/useIsRtl";
53
53
  import { type RefProp, type TooltipType } from "../../types";
54
- import { CoreIcons } from "../../types/icons";
55
54
  import { getColor } from "../../utils";
56
55
 
57
56
  export interface TooltipProps extends TooltipType, RefProp {
@@ -159,7 +158,7 @@ export const Tooltip = ({
159
158
  className="ms-2 cursor-pointer text-dimmed flex-content opacity-75 hover:opacity-90 active:opacity-60"
160
159
  onClick={handler}
161
160
  >
162
- <Icon icon={CoreIcons.copy} />
161
+ <Icon icon="icon-[mdi--content-copy]" />
163
162
  </span>
164
163
  );
165
164
  }
@@ -34,8 +34,10 @@ export type SizeType = "xs" | "sm" | "md" | "lg" | "xl";
34
34
  export type SizeTypeWithZero = "xs" | "sm" | "md" | "lg" | "xl" | 0;
35
35
 
36
36
  export type ColorState =
37
+ | "default"
37
38
  | "primary"
38
39
  | "accent"
40
+ | "muted"
39
41
  | "info"
40
42
  | "danger"
41
43
  | "success"
@@ -425,11 +427,22 @@ export interface TooltipProp {
425
427
  tooltip?: string | TooltipType;
426
428
  }
427
429
 
428
- export interface ChildProp<T = JSX.Element> {
430
+ export type ReactElement =
431
+ | React.ReactElement
432
+ | string
433
+ | number
434
+ | bigint
435
+ | Iterable<React.ReactNode>
436
+ | React.ReactPortal
437
+ | boolean
438
+ | null
439
+ | undefined;
440
+
441
+ export interface ChildProp<T = ReactElement> {
429
442
  children: Elements<T>;
430
443
  }
431
444
 
432
- export interface ChildrenProp<T = JSX.Element> {
445
+ export interface ChildrenProp<T = ReactElement> {
433
446
  children: Elements<T> | Array<Elements<T>>;
434
447
  }
435
448
 
@@ -460,3 +473,20 @@ export type Complete<T> = {
460
473
  ? T[P]
461
474
  : T[P] | undefined;
462
475
  };
476
+
477
+ export type NestedKeys<T> = T extends object
478
+ ? {
479
+ [K in keyof T]: K extends string | number
480
+ ? T[K] extends object
481
+ ? // Check for array type explicitly and handle it
482
+ T[K] extends readonly any[]
483
+ ? T[K][number] extends object
484
+ ? // Array of objects/items: return key with array index notation and recurse
485
+ `${K}.${NestedKeys<T[K][number]>}` | `${K}`
486
+ : `${K}`
487
+ : // Standard object: return key with dot notation and recurse
488
+ `${K}.${NestedKeys<T[K]>}` | `${K}`
489
+ : `${K}`
490
+ : never;
491
+ }[keyof T]
492
+ : "";
@@ -27,7 +27,6 @@ import { useTranslation } from "react-i18next";
27
27
  import { Button } from "../components/button/Button";
28
28
  import { Tooltip } from "../overlays/tooltip/Tooltip";
29
29
  import { type CssProp, type SizeType } from "../types";
30
- import { CoreIcons } from "../types/icons";
31
30
 
32
31
  /**
33
32
  * A component that provides a button to copy text to the clipboard.
@@ -63,7 +62,7 @@ export const Copy = ({ text, size, className }: CopyProps) => {
63
62
  return (
64
63
  <Tooltip content={t("action.copy")}>
65
64
  <Button
66
- icon={CoreIcons.copy}
65
+ icon="icon-[mdi--content-copy]"
67
66
  aria-label="Copy text"
68
67
  actionMessage={t("action.copied")}
69
68
  variant="link"