@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.
- package/css/components/_button.css +10 -2
- package/css/components/_icon.css +1 -1
- package/css/reset/_reset.css +1 -1
- package/css/reset/_theme.css +3 -3
- package/css/styles.css +2 -0
- package/css/theme/_colors.css +2 -2
- package/dist/cjs/components/animations/Animations.js +54 -49
- package/dist/cjs/components/button/Button.js +1 -1
- package/dist/cjs/components/callout/Callout.js +4 -4
- package/dist/cjs/components/collapsable/Collapsable.js +4 -5
- package/dist/cjs/components/dropdown/DropdownTool.js +1 -2
- package/dist/cjs/components/media/Media.js +9 -8
- package/dist/cjs/components/menu/Menu.js +1 -2
- package/dist/cjs/components/menu/MenuItem.js +0 -1
- package/dist/cjs/components/navigator/Navigator.js +2 -3
- package/dist/cjs/components/panel/Panel.js +7 -7
- package/dist/cjs/components/tabpanel/Tab.js +0 -1
- package/dist/cjs/core/aside/Aside.js +3 -4
- package/dist/cjs/core/page/Page.js +1 -1
- package/dist/cjs/hooks/useStepper.js +0 -1
- package/dist/cjs/index.js +3 -8
- package/dist/cjs/overlays/alert/Alert.js +1 -2
- package/dist/cjs/overlays/flyout/Flyout.js +2 -3
- package/dist/cjs/overlays/modal/Modal.js +2 -3
- package/dist/cjs/overlays/toast/Toast.js +2 -3
- package/dist/cjs/overlays/tooltip/Tooltip.js +1 -2
- package/dist/cjs/typography/Copy.js +1 -2
- package/dist/esm/components/animations/Animations.js +51 -47
- package/dist/esm/components/button/Button.js +1 -1
- package/dist/esm/components/callout/Callout.js +4 -4
- package/dist/esm/components/collapsable/Collapsable.js +4 -5
- package/dist/esm/components/dropdown/DropdownTool.js +1 -2
- package/dist/esm/components/media/Media.js +9 -8
- package/dist/esm/components/menu/Menu.js +1 -2
- package/dist/esm/components/menu/MenuItem.js +0 -1
- package/dist/esm/components/navigator/Navigator.js +2 -3
- package/dist/esm/components/panel/Panel.js +8 -8
- package/dist/esm/components/tabpanel/Tab.js +0 -1
- package/dist/esm/core/aside/Aside.js +4 -5
- package/dist/esm/core/page/Page.js +2 -2
- package/dist/esm/hooks/useStepper.js +0 -1
- package/dist/esm/index.js +1 -2
- package/dist/esm/overlays/alert/Alert.js +1 -2
- package/dist/esm/overlays/flyout/Flyout.js +3 -4
- package/dist/esm/overlays/modal/Modal.js +3 -4
- package/dist/esm/overlays/toast/Toast.js +2 -3
- package/dist/esm/overlays/tooltip/Tooltip.js +1 -2
- package/dist/esm/typography/Copy.js +1 -2
- package/dist/types/components/animations/Animations.d.ts +28 -9
- package/dist/types/components/collapsable/Collapsable.d.ts +2 -2
- package/dist/types/components/index.d.ts +1 -1
- package/dist/types/components/panel/Panel.d.ts +1 -1
- package/dist/types/core/aside/Aside.d.ts +1 -1
- package/dist/types/index.d.ts +0 -1
- package/dist/types/types/index.d.ts +9 -3
- package/package.json +6 -3
- package/src/components/animations/Animations.tsx +53 -45
- package/src/components/button/Button.tsx +1 -1
- package/src/components/callout/Callout.tsx +4 -5
- package/src/components/collapsable/Collapsable.tsx +4 -5
- package/src/components/dropdown/DropdownTool.tsx +1 -2
- package/src/components/index.ts +3 -3
- package/src/components/media/Media.tsx +7 -8
- package/src/components/menu/Menu.tsx +1 -2
- package/src/components/navigator/Navigator.tsx +2 -3
- package/src/components/panel/Panel.tsx +14 -8
- package/src/core/aside/Aside.tsx +4 -5
- package/src/core/page/Page.tsx +2 -2
- package/src/index.ts +0 -1
- package/src/overlays/alert/Alert.tsx +1 -2
- package/src/overlays/flyout/Flyout.tsx +3 -4
- package/src/overlays/modal/Modal.tsx +3 -4
- package/src/overlays/toast/Toast.tsx +2 -3
- package/src/overlays/tooltip/Tooltip.tsx +1 -2
- package/src/types/index.ts +32 -2
- package/src/typography/Copy.tsx +1 -2
- package/css/flags.rect.css +0 -1607
- package/css/flags.wavy.css +0 -1606
- package/dist/cjs/types/icons.js +0 -212
- package/dist/esm/types/icons.js +0 -214
- package/dist/types/types/icons.d.ts +0 -210
- 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-
|
|
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=
|
|
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=
|
|
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 ?
|
|
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 ?
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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 {
|
|
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=
|
|
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=
|
|
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={
|
|
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={
|
|
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=
|
|
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 && <
|
|
288
|
+
{loading && <LoadingLine />}
|
|
283
289
|
{children}
|
|
284
290
|
</div>
|
|
285
291
|
)}
|
package/src/core/aside/Aside.tsx
CHANGED
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
|
|
24
24
|
import classNames from "classnames";
|
|
25
25
|
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
26
|
-
import {
|
|
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=
|
|
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=
|
|
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 && <
|
|
273
|
+
{loading && <LoadingLine />}
|
|
275
274
|
{isCollapsed && (
|
|
276
275
|
<div
|
|
277
276
|
role="none"
|
package/src/core/page/Page.tsx
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
*/
|
|
23
23
|
|
|
24
24
|
import classNames from "classnames";
|
|
25
|
-
import {
|
|
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 && <
|
|
119
|
+
{loading && <LoadingLine />}
|
|
120
120
|
{children}
|
|
121
121
|
</div>
|
|
122
122
|
);
|
package/src/index.ts
CHANGED
|
@@ -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=
|
|
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 {
|
|
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=
|
|
238
|
+
icon="icon-[mdi--close]"
|
|
240
239
|
onClick={() => handleClose(false)}
|
|
241
240
|
/>
|
|
242
241
|
</Header>
|
|
243
|
-
{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 {
|
|
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=
|
|
228
|
+
icon="icon-[mdi--close]"
|
|
230
229
|
onClick={() => handleClose(false)}
|
|
231
230
|
/>
|
|
232
231
|
</Header>
|
|
233
|
-
{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=
|
|
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=
|
|
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=
|
|
161
|
+
<Icon icon="icon-[mdi--content-copy]" />
|
|
163
162
|
</span>
|
|
164
163
|
);
|
|
165
164
|
}
|
package/src/types/index.ts
CHANGED
|
@@ -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
|
|
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 =
|
|
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
|
+
: "";
|
package/src/typography/Copy.tsx
CHANGED
|
@@ -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=
|
|
65
|
+
icon="icon-[mdi--content-copy]"
|
|
67
66
|
aria-label="Copy text"
|
|
68
67
|
actionMessage={t("action.copied")}
|
|
69
68
|
variant="link"
|