@ultraviolet/ui 1.56.0 → 1.57.0
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/dist/components/Alert/index.cjs +1 -2
- package/dist/components/Alert/index.js +1 -2
- package/dist/components/Avatar/index.cjs +1 -2
- package/dist/components/Avatar/index.js +1 -2
- package/dist/components/Banner/index.cjs +1 -2
- package/dist/components/Banner/index.js +1 -2
- package/dist/components/Bullet/index.d.ts +1 -1
- package/dist/components/Button/index.d.ts +14 -14
- package/dist/components/Checkbox/index.cjs +1 -2
- package/dist/components/Checkbox/index.js +1 -2
- package/dist/components/Dialog/Context.d.ts +0 -1
- package/dist/components/Dialog/index.d.ts +46 -46
- package/dist/components/Dialog/subComponents/Text.d.ts +0 -1
- package/dist/components/Expandable/index.d.ts +2 -2
- package/dist/components/GlobalAlert/GlobalAlertLink.d.ts +1 -1
- package/dist/components/GlobalAlert/index.cjs +1 -2
- package/dist/components/GlobalAlert/index.d.ts +1 -17
- package/dist/components/GlobalAlert/index.js +1 -2
- package/dist/components/LineChart/helpers.cjs +5 -10
- package/dist/components/LineChart/helpers.js +5 -10
- package/dist/components/Link/index.cjs +2 -4
- package/dist/components/Link/index.js +2 -4
- package/dist/components/List/Cell.cjs +1 -1
- package/dist/components/List/Cell.d.ts +2 -0
- package/dist/components/List/Cell.js +1 -1
- package/dist/components/List/Row.cjs +4 -4
- package/dist/components/List/Row.d.ts +2 -2
- package/dist/components/List/Row.js +4 -4
- package/dist/components/List/constants.cjs +1 -1
- package/dist/components/List/constants.d.ts +1 -1
- package/dist/components/List/constants.js +1 -1
- package/dist/components/List/index.d.ts +9 -9
- package/dist/components/Menu/index.d.ts +4 -4
- package/dist/components/MenuV2/index.d.ts +41 -36
- package/dist/components/Modal/Dialog.d.ts +0 -1
- package/dist/components/Modal/Disclosure.d.ts +0 -1
- package/dist/components/NumberInput/index.cjs +6 -12
- package/dist/components/NumberInput/index.js +6 -12
- package/dist/components/NumberInputV2/index.cjs +19 -14
- package/dist/components/NumberInputV2/index.d.ts +20 -13
- package/dist/components/NumberInputV2/index.js +19 -14
- package/dist/components/Popover/index.d.ts +35 -30
- package/dist/components/Popup/index.cjs +4 -8
- package/dist/components/Popup/index.js +4 -8
- package/dist/components/Row/index.d.ts +2 -2
- package/dist/components/SearchInput/Key.cjs +30 -0
- package/dist/components/SearchInput/Key.d.ts +6 -0
- package/dist/components/SearchInput/Key.js +28 -0
- package/dist/components/SearchInput/KeyGroup.cjs +10 -0
- package/dist/components/SearchInput/KeyGroup.d.ts +8 -0
- package/dist/components/SearchInput/KeyGroup.js +10 -0
- package/dist/components/SearchInput/index.cjs +38 -7
- package/dist/components/SearchInput/index.d.ts +23 -22
- package/dist/components/SearchInput/index.js +40 -9
- package/dist/components/SearchInput/types.d.ts +5 -1
- package/dist/components/SelectInput/index.cjs +4 -8
- package/dist/components/SelectInput/index.js +4 -8
- package/dist/components/SelectInputV2/SelectBar.cjs +6 -5
- package/dist/components/SelectInputV2/SelectBar.d.ts +2 -1
- package/dist/components/SelectInputV2/SelectBar.js +6 -5
- package/dist/components/SelectInputV2/index.cjs +4 -4
- package/dist/components/SelectInputV2/index.d.ts +1 -1
- package/dist/components/SelectInputV2/index.js +4 -4
- package/dist/components/SelectableCard/index.cjs +4 -4
- package/dist/components/SelectableCard/index.d.ts +1 -2
- package/dist/components/SelectableCard/index.js +4 -4
- package/dist/components/SelectableCardGroup/index.cjs +2 -2
- package/dist/components/SelectableCardGroup/index.d.ts +1 -1
- package/dist/components/SelectableCardGroup/index.js +2 -2
- package/dist/components/Skeleton/IconSkeleton.d.ts +2 -3
- package/dist/components/Skeleton/Line.d.ts +2 -3
- package/dist/components/Skeleton/Square.d.ts +2 -3
- package/dist/components/Skeleton/index.d.ts +13 -14
- package/dist/components/Stack/index.d.ts +2 -2
- package/dist/components/Status/index.d.ts +1 -1
- package/dist/components/Stepper/Step.cjs +38 -20
- package/dist/components/Stepper/Step.js +38 -20
- package/dist/components/Stepper/index.cjs +9 -11
- package/dist/components/Stepper/index.d.ts +5 -8
- package/dist/components/Stepper/index.js +9 -11
- package/dist/components/SwitchButton/FocusOverlay.cjs +1 -2
- package/dist/components/SwitchButton/FocusOverlay.js +1 -2
- package/dist/components/SwitchButton/index.cjs +1 -2
- package/dist/components/SwitchButton/index.js +1 -2
- package/dist/components/Table/index.d.ts +8 -8
- package/dist/components/Tabs/Tab.cjs +1 -2
- package/dist/components/Tabs/Tab.d.ts +2 -2
- package/dist/components/Tabs/Tab.js +1 -2
- package/dist/components/Tabs/TabMenu.d.ts +2 -2
- package/dist/components/Tabs/TabMenuItem.d.ts +5 -5
- package/dist/components/Tabs/TabsContext.d.ts +0 -1
- package/dist/components/Tabs/index.cjs +1 -2
- package/dist/components/Tabs/index.d.ts +16 -16
- package/dist/components/Tabs/index.js +1 -2
- package/dist/components/Text/index.d.ts +1 -1
- package/dist/components/TextArea/index.cjs +4 -4
- package/dist/components/TextArea/index.js +4 -4
- package/dist/components/TextInput/index.d.ts +1 -1
- package/dist/components/TextInputV2/index.cjs +12 -9
- package/dist/components/TextInputV2/index.d.ts +57 -15
- package/dist/components/TextInputV2/index.js +12 -9
- package/dist/components/Toggle/index.cjs +2 -4
- package/dist/components/Toggle/index.d.ts +11 -11
- package/dist/components/Toggle/index.js +2 -4
- package/dist/components/index.d.ts +9 -9
- package/dist/helpers/recursivelyGetChildrenString.cjs +3 -6
- package/dist/helpers/recursivelyGetChildrenString.js +3 -6
- package/dist/index.cjs +119 -119
- package/dist/index.js +9 -9
- package/dist/mocks/list.d.ts +1 -1
- package/dist/theme/index.d.ts +31 -799
- package/dist/utils/responsive/Breakpoint.d.ts +5 -5
- package/dist/utils/responsive/utilities.cjs +2 -4
- package/dist/utils/responsive/utilities.js +2 -4
- package/package.json +5 -5
|
@@ -95,8 +95,7 @@ const Alert = ({
|
|
|
95
95
|
"data-testid": dataTestId
|
|
96
96
|
}) => {
|
|
97
97
|
const [opened, setOpened] = React.useState(true);
|
|
98
|
-
if (!opened)
|
|
99
|
-
return null;
|
|
98
|
+
if (!opened) return null;
|
|
100
99
|
return /* @__PURE__ */ jsxRuntime.jsxs(StyledStackContainer, { gap: 1, direction: "row", sentiment, className, "data-testid": dataTestId, children: [
|
|
101
100
|
/* @__PURE__ */ jsxRuntime.jsxs(WrapStack, { direction: "row", alignItems: "center", justifyContent: "space-between", gap: 2, children: [
|
|
102
101
|
/* @__PURE__ */ jsxRuntime.jsxs(index.Stack, { alignItems: "start", direction: "row", gap: 2, children: [
|
|
@@ -91,8 +91,7 @@ const Alert = ({
|
|
|
91
91
|
"data-testid": dataTestId
|
|
92
92
|
}) => {
|
|
93
93
|
const [opened, setOpened] = useState(true);
|
|
94
|
-
if (!opened)
|
|
95
|
-
return null;
|
|
94
|
+
if (!opened) return null;
|
|
96
95
|
return /* @__PURE__ */ jsxs(StyledStackContainer, { gap: 1, direction: "row", sentiment, className, "data-testid": dataTestId, children: [
|
|
97
96
|
/* @__PURE__ */ jsxs(WrapStack, { direction: "row", alignItems: "center", justifyContent: "space-between", gap: 2, children: [
|
|
98
97
|
/* @__PURE__ */ jsxs(Stack, { alignItems: "start", direction: "row", gap: 2, children: [
|
|
@@ -6,8 +6,7 @@ const icons = require("@ultraviolet/icons");
|
|
|
6
6
|
const _interopDefaultCompat = (e) => e && typeof e === "object" && "default" in e ? e : { default: e };
|
|
7
7
|
const _styled__default = /* @__PURE__ */ _interopDefaultCompat(_styled);
|
|
8
8
|
const formatTextToAvatar = (text) => {
|
|
9
|
-
if (!text)
|
|
10
|
-
return "";
|
|
9
|
+
if (!text) return "";
|
|
11
10
|
const textCleaned = text.replace(/\s+/g, " ").trim();
|
|
12
11
|
if (textCleaned.length <= 2) {
|
|
13
12
|
return textCleaned.toUpperCase();
|
|
@@ -2,8 +2,7 @@ import { jsx } from "@emotion/react/jsx-runtime";
|
|
|
2
2
|
import _styled from "@emotion/styled/base";
|
|
3
3
|
import { Icon } from "@ultraviolet/icons";
|
|
4
4
|
const formatTextToAvatar = (text) => {
|
|
5
|
-
if (!text)
|
|
6
|
-
return "";
|
|
5
|
+
if (!text) return "";
|
|
7
6
|
const textCleaned = text.replace(/\s+/g, " ").trim();
|
|
8
7
|
if (textCleaned.length <= 2) {
|
|
9
8
|
return textCleaned.toUpperCase();
|
|
@@ -91,8 +91,7 @@ const Banner = ({
|
|
|
91
91
|
} = react.useTheme();
|
|
92
92
|
const defaultImage$1 = size === "small" ? defaultImageSmall : defaultImage;
|
|
93
93
|
const [opened, setOpened] = React.useState(true);
|
|
94
|
-
if (!opened)
|
|
95
|
-
return null;
|
|
94
|
+
if (!opened) return null;
|
|
96
95
|
return /* @__PURE__ */ jsxRuntime.jsxs(Container, { variant, size, className, "data-testid": dataTestId, children: [
|
|
97
96
|
/* @__PURE__ */ jsxRuntime.jsx(ImageStack, { size, justifyContent: "center", children: image ?? /* @__PURE__ */ jsxRuntime.jsx("img", { src: defaultImage$1, alt: "" }) }),
|
|
98
97
|
/* @__PURE__ */ jsxRuntime.jsxs(index.Stack, { direction, gap: 2, justifyContent: "space-between", alignItems: direction === "column" ? "start" : "center", style: {
|
|
@@ -87,8 +87,7 @@ const Banner = ({
|
|
|
87
87
|
} = useTheme();
|
|
88
88
|
const defaultImage = size === "small" ? defaultIllustrationSmall : defaultIllustration;
|
|
89
89
|
const [opened, setOpened] = useState(true);
|
|
90
|
-
if (!opened)
|
|
91
|
-
return null;
|
|
90
|
+
if (!opened) return null;
|
|
92
91
|
return /* @__PURE__ */ jsxs(Container, { variant, size, className, "data-testid": dataTestId, children: [
|
|
93
92
|
/* @__PURE__ */ jsx(ImageStack, { size, justifyContent: "center", children: image ?? /* @__PURE__ */ jsx("img", { src: defaultImage, alt: "" }) }),
|
|
94
93
|
/* @__PURE__ */ jsxs(Stack, { direction, gap: 2, justifyContent: "space-between", alignItems: direction === "column" ? "start" : "center", style: {
|
|
@@ -13,7 +13,7 @@ declare const sizes: {
|
|
|
13
13
|
readonly small: "\n width: 24px;\n height: 24px;\n font-size: 14px;\n ";
|
|
14
14
|
};
|
|
15
15
|
type BulletSize = keyof typeof sizes;
|
|
16
|
-
export declare const bulletSizes:
|
|
16
|
+
export declare const bulletSizes: BulletSize[];
|
|
17
17
|
type ContentProps = XOR<[
|
|
18
18
|
{
|
|
19
19
|
icon: ComponentProps<typeof Icon>['name'];
|
|
@@ -10,53 +10,53 @@ export declare const SIZE_HEIGHT: {
|
|
|
10
10
|
readonly xsmall: 24;
|
|
11
11
|
};
|
|
12
12
|
type ButtonSize = keyof typeof SIZE_HEIGHT;
|
|
13
|
-
export declare const buttonSizes:
|
|
13
|
+
export declare const buttonSizes: ButtonSize[];
|
|
14
14
|
declare const VARIANTS_COMPONENTS: {
|
|
15
15
|
filled: {
|
|
16
16
|
button: import("@emotion/styled").StyledComponent<{
|
|
17
|
-
theme?: Theme
|
|
18
|
-
as?: import("react").ElementType
|
|
17
|
+
theme?: Theme;
|
|
18
|
+
as?: import("react").ElementType;
|
|
19
19
|
} & Required<Pick<FinalProps, "size" | "sentiment" | "disabled" | "iconPosition" | "fullWidth">> & {
|
|
20
20
|
iconOnly: boolean;
|
|
21
21
|
}, import("react").DetailedHTMLProps<ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, {}>;
|
|
22
22
|
link: import("@emotion/styled").StyledComponent<{
|
|
23
|
-
theme?: Theme
|
|
24
|
-
as?: import("react").ElementType
|
|
23
|
+
theme?: Theme;
|
|
24
|
+
as?: import("react").ElementType;
|
|
25
25
|
} & Required<Pick<FinalProps, "size" | "sentiment" | "disabled" | "iconPosition" | "fullWidth">> & {
|
|
26
26
|
iconOnly: boolean;
|
|
27
27
|
}, import("react").DetailedHTMLProps<import("react").AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, {}>;
|
|
28
28
|
};
|
|
29
29
|
outlined: {
|
|
30
30
|
button: import("@emotion/styled").StyledComponent<{
|
|
31
|
-
theme?: Theme
|
|
32
|
-
as?: import("react").ElementType
|
|
31
|
+
theme?: Theme;
|
|
32
|
+
as?: import("react").ElementType;
|
|
33
33
|
} & Required<Pick<FinalProps, "size" | "sentiment" | "disabled" | "iconPosition" | "fullWidth">> & {
|
|
34
34
|
iconOnly: boolean;
|
|
35
35
|
}, import("react").DetailedHTMLProps<ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, {}>;
|
|
36
36
|
link: import("@emotion/styled").StyledComponent<{
|
|
37
|
-
theme?: Theme
|
|
38
|
-
as?: import("react").ElementType
|
|
37
|
+
theme?: Theme;
|
|
38
|
+
as?: import("react").ElementType;
|
|
39
39
|
} & Required<Pick<FinalProps, "size" | "sentiment" | "disabled" | "iconPosition" | "fullWidth">> & {
|
|
40
40
|
iconOnly: boolean;
|
|
41
41
|
}, import("react").DetailedHTMLProps<import("react").AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, {}>;
|
|
42
42
|
};
|
|
43
43
|
ghost: {
|
|
44
44
|
button: import("@emotion/styled").StyledComponent<{
|
|
45
|
-
theme?: Theme
|
|
46
|
-
as?: import("react").ElementType
|
|
45
|
+
theme?: Theme;
|
|
46
|
+
as?: import("react").ElementType;
|
|
47
47
|
} & Required<Pick<FinalProps, "size" | "sentiment" | "disabled" | "iconPosition" | "fullWidth">> & {
|
|
48
48
|
iconOnly: boolean;
|
|
49
49
|
}, import("react").DetailedHTMLProps<ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, {}>;
|
|
50
50
|
link: import("@emotion/styled").StyledComponent<{
|
|
51
|
-
theme?: Theme
|
|
52
|
-
as?: import("react").ElementType
|
|
51
|
+
theme?: Theme;
|
|
52
|
+
as?: import("react").ElementType;
|
|
53
53
|
} & Required<Pick<FinalProps, "size" | "sentiment" | "disabled" | "iconPosition" | "fullWidth">> & {
|
|
54
54
|
iconOnly: boolean;
|
|
55
55
|
}, import("react").DetailedHTMLProps<import("react").AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, {}>;
|
|
56
56
|
};
|
|
57
57
|
};
|
|
58
58
|
type ButtonVariant = keyof typeof VARIANTS_COMPONENTS;
|
|
59
|
-
export declare const buttonVariants:
|
|
59
|
+
export declare const buttonVariants: ButtonVariant[];
|
|
60
60
|
type CommonProps = {
|
|
61
61
|
type?: ButtonHTMLAttributes<HTMLButtonElement>['type'];
|
|
62
62
|
autoFocus?: ButtonHTMLAttributes<HTMLButtonElement>['autoFocus'];
|
|
@@ -243,8 +243,7 @@ const Checkbox = React.forwardRef(({
|
|
|
243
243
|
setState(checked);
|
|
244
244
|
}, [checked]);
|
|
245
245
|
const onLocalChange = React.useCallback((event) => {
|
|
246
|
-
if (!progress)
|
|
247
|
-
onChange?.(event);
|
|
246
|
+
if (!progress) onChange?.(event);
|
|
248
247
|
setState((current) => current === "indeterminate" ? false : event.target.checked);
|
|
249
248
|
}, [onChange, progress, setState]);
|
|
250
249
|
return /* @__PURE__ */ jsxRuntime.jsx(index$1.Tooltip, { text: tooltip, children: /* @__PURE__ */ jsxRuntime.jsxs(CheckboxContainer, { className, "aria-disabled": disabled, "data-visibility": dataVisibility, "data-checked": state, "data-error": !!error, "data-testid": dataTestId, children: [
|
|
@@ -239,8 +239,7 @@ const Checkbox = forwardRef(({
|
|
|
239
239
|
setState(checked);
|
|
240
240
|
}, [checked]);
|
|
241
241
|
const onLocalChange = useCallback((event) => {
|
|
242
|
-
if (!progress)
|
|
243
|
-
onChange?.(event);
|
|
242
|
+
if (!progress) onChange?.(event);
|
|
244
243
|
setState((current) => current === "indeterminate" ? false : event.target.checked);
|
|
245
244
|
}, [onChange, progress, setState]);
|
|
246
245
|
return /* @__PURE__ */ jsx(Tooltip, { text: tooltip, children: /* @__PURE__ */ jsxs(CheckboxContainer, { className, "aria-disabled": disabled, "data-visibility": dataVisibility, "data-checked": state, "data-error": !!error, "data-testid": dataTestId, children: [
|
|
@@ -19,68 +19,68 @@ export declare const Dialog: (({ ariaLabel, className, children, "data-testid":
|
|
|
19
19
|
Button: ({ children, onClick, disabled, tooltip, }: {
|
|
20
20
|
children: import("react").ReactNode;
|
|
21
21
|
} & Pick<({
|
|
22
|
-
type?: "
|
|
23
|
-
autoFocus?:
|
|
24
|
-
variant?: "filled" | "outlined" | "ghost"
|
|
25
|
-
role?: import("react").AriaRole
|
|
26
|
-
size?: "large" | "medium" | "small" | "xsmall"
|
|
27
|
-
className?: string
|
|
28
|
-
'data-testid'?: string
|
|
29
|
-
sentiment?: "primary" | "secondary" | "neutral" | "success" | "danger" | "warning" | "info"
|
|
30
|
-
disabled?: boolean
|
|
31
|
-
iconPosition?: "left" | "right"
|
|
32
|
-
iconVariant?: "
|
|
33
|
-
fullWidth?: boolean
|
|
34
|
-
isLoading?: boolean
|
|
35
|
-
'aria-label'?: string
|
|
36
|
-
'aria-current'?: boolean
|
|
37
|
-
'aria-controls'?: string
|
|
38
|
-
'aria-expanded'?: boolean
|
|
39
|
-
'aria-haspopup'?: boolean
|
|
40
|
-
onClick?: import("react").MouseEventHandler<HTMLElement
|
|
41
|
-
tooltip?: string
|
|
42
|
-
tabIndex?:
|
|
43
|
-
onMouseDown?: import("react").MouseEventHandler<HTMLElement
|
|
44
|
-
onMouseUp?: import("react").MouseEventHandler<HTMLElement
|
|
45
|
-
onMouseOut?: import("react").MouseEventHandler<HTMLElement
|
|
22
|
+
type?: import("react").ButtonHTMLAttributes<HTMLButtonElement>["type"];
|
|
23
|
+
autoFocus?: import("react").ButtonHTMLAttributes<HTMLButtonElement>["autoFocus"];
|
|
24
|
+
variant?: "filled" | "outlined" | "ghost";
|
|
25
|
+
role?: import("react").AriaRole;
|
|
26
|
+
size?: "large" | "medium" | "small" | "xsmall";
|
|
27
|
+
className?: string;
|
|
28
|
+
'data-testid'?: string;
|
|
29
|
+
sentiment?: "primary" | "secondary" | "neutral" | "success" | "danger" | "warning" | "info";
|
|
30
|
+
disabled?: boolean;
|
|
31
|
+
iconPosition?: "left" | "right";
|
|
32
|
+
iconVariant?: ComponentProps<typeof import("@ultraviolet/icons").Icon>["variant"];
|
|
33
|
+
fullWidth?: boolean;
|
|
34
|
+
isLoading?: boolean;
|
|
35
|
+
'aria-label'?: string;
|
|
36
|
+
'aria-current'?: boolean;
|
|
37
|
+
'aria-controls'?: string;
|
|
38
|
+
'aria-expanded'?: boolean;
|
|
39
|
+
'aria-haspopup'?: boolean;
|
|
40
|
+
onClick?: import("react").MouseEventHandler<HTMLElement>;
|
|
41
|
+
tooltip?: string;
|
|
42
|
+
tabIndex?: import("react").ButtonHTMLAttributes<HTMLButtonElement>["tabIndex"];
|
|
43
|
+
onMouseDown?: import("react").MouseEventHandler<HTMLElement>;
|
|
44
|
+
onMouseUp?: import("react").MouseEventHandler<HTMLElement>;
|
|
45
|
+
onMouseOut?: import("react").MouseEventHandler<HTMLElement>;
|
|
46
46
|
} & ({
|
|
47
47
|
children: import("react").ReactNode;
|
|
48
|
-
icon?:
|
|
49
|
-
name?: string
|
|
50
|
-
href?:
|
|
51
|
-
target?:
|
|
52
|
-
download?:
|
|
48
|
+
icon?: ComponentProps<typeof import("@ultraviolet/icons").Icon>["name"];
|
|
49
|
+
name?: string;
|
|
50
|
+
href?: never;
|
|
51
|
+
target?: never;
|
|
52
|
+
download?: never;
|
|
53
53
|
} | {
|
|
54
|
-
children?:
|
|
55
|
-
icon:
|
|
56
|
-
name?: string
|
|
57
|
-
href?:
|
|
58
|
-
target?:
|
|
59
|
-
download?:
|
|
54
|
+
children?: never;
|
|
55
|
+
icon: ComponentProps<typeof import("@ultraviolet/icons").Icon>["name"];
|
|
56
|
+
name?: string;
|
|
57
|
+
href?: never;
|
|
58
|
+
target?: never;
|
|
59
|
+
download?: never;
|
|
60
60
|
} | {
|
|
61
61
|
children: import("react").ReactNode;
|
|
62
|
-
icon?:
|
|
63
|
-
name?:
|
|
62
|
+
icon?: ComponentProps<typeof import("@ultraviolet/icons").Icon>["name"];
|
|
63
|
+
name?: never;
|
|
64
64
|
href: string;
|
|
65
|
-
target?: string
|
|
66
|
-
download?: string
|
|
65
|
+
target?: string;
|
|
66
|
+
download?: string;
|
|
67
67
|
} | {
|
|
68
|
-
children?:
|
|
69
|
-
icon:
|
|
70
|
-
name?:
|
|
68
|
+
children?: never;
|
|
69
|
+
icon: ComponentProps<typeof import("@ultraviolet/icons").Icon>["name"];
|
|
70
|
+
name?: never;
|
|
71
71
|
href: string;
|
|
72
|
-
target?: string
|
|
73
|
-
download?: string
|
|
72
|
+
target?: string;
|
|
73
|
+
download?: string;
|
|
74
74
|
})) & import("react").RefAttributes<Element>, "tooltip" | "onClick" | "disabled">) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
75
75
|
CancelButton: ({ children, onClick, }: {
|
|
76
76
|
children: import("react").ReactNode;
|
|
77
|
-
onClick: import("
|
|
77
|
+
onClick: ComponentProps<typeof import("..").Button>["onClick"];
|
|
78
78
|
}) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
79
79
|
Stack: ({ children }: {
|
|
80
80
|
children: import("react").ReactNode;
|
|
81
81
|
}) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
82
82
|
Text: ({ children }: {
|
|
83
|
-
children:
|
|
83
|
+
children: React.ReactNode;
|
|
84
84
|
}) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
85
85
|
useDialogContext: () => DialogContextType;
|
|
86
86
|
};
|
|
@@ -17,8 +17,8 @@ type ExpandableProps = {
|
|
|
17
17
|
animationDuration?: number;
|
|
18
18
|
};
|
|
19
19
|
export declare const StyledExpandable: import("@emotion/styled").StyledComponent<{
|
|
20
|
-
theme?: import("@emotion/react").Theme
|
|
21
|
-
as?: import("react").ElementType
|
|
20
|
+
theme?: import("@emotion/react").Theme;
|
|
21
|
+
as?: import("react").ElementType;
|
|
22
22
|
} & {
|
|
23
23
|
animationDuration: number;
|
|
24
24
|
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { ComponentProps } from 'react';
|
|
2
2
|
import { Link } from '../Link';
|
|
3
|
-
export declare const GlobalAlertLink: ({ children, href, target, download, rel, className, onClick, "aria-label": ariaLabel, oneLine, "data-testid": dataTestId, }: Omit<ComponentProps<typeof Link>,
|
|
3
|
+
export declare const GlobalAlertLink: ({ children, href, target, download, rel, className, onClick, "aria-label": ariaLabel, oneLine, "data-testid": dataTestId, }: Omit<ComponentProps<typeof Link>, "sentiment" | "prominence" | "size">) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
@@ -44,8 +44,7 @@ const GlobalAlert = ({
|
|
|
44
44
|
theme
|
|
45
45
|
} = react.useTheme();
|
|
46
46
|
const [opened, toggleOpened] = React.useReducer((value) => !value, true);
|
|
47
|
-
if (!opened)
|
|
48
|
-
return null;
|
|
47
|
+
if (!opened) return null;
|
|
49
48
|
return /* @__PURE__ */ jsxRuntime.jsxs(Container, { justifyContent: "center", alignItems: "center", direction: "row", "data-variant": variant, "data-testid": dataTestId, className, children: [
|
|
50
49
|
/* @__PURE__ */ jsxRuntime.jsxs(index$1.Stack, { gap: 2, direction: "row", justifyContent: "center", alignItems: "center", children: [
|
|
51
50
|
/* @__PURE__ */ jsxRuntime.jsx(index$2.Text, { variant: "bodySmall", as: "p", sentiment: "neutral", prominence: theme === "light" ? "stronger" : "strong", children }),
|
|
@@ -15,22 +15,6 @@ type GlobalAlertProps = {
|
|
|
15
15
|
*/
|
|
16
16
|
export declare const GlobalAlert: {
|
|
17
17
|
({ children, variant, onClose, closable, buttonText, onClickButton, className, "data-testid": dataTestId, }: GlobalAlertProps): import("@emotion/react/jsx-runtime").JSX.Element | null;
|
|
18
|
-
Link: ({ children, href, target, download, rel, className, onClick, "aria-label": ariaLabel, oneLine, "data-testid": dataTestId, }: Omit<
|
|
19
|
-
children: ReactNode;
|
|
20
|
-
target?: import("react").HTMLAttributeAnchorTarget | undefined;
|
|
21
|
-
download?: string | boolean | undefined;
|
|
22
|
-
sentiment?: import("../../theme").Color | undefined;
|
|
23
|
-
prominence?: "strong" | "default" | "stronger" | "weak" | undefined;
|
|
24
|
-
size?: ("large" | "small" | "xsmall") | undefined;
|
|
25
|
-
iconPosition?: ("left" | "right") | undefined;
|
|
26
|
-
rel?: string | undefined;
|
|
27
|
-
className?: string | undefined;
|
|
28
|
-
href: string;
|
|
29
|
-
onClick?: import("react").MouseEventHandler<HTMLAnchorElement> | undefined;
|
|
30
|
-
'aria-label'?: string | undefined;
|
|
31
|
-
oneLine?: boolean | undefined;
|
|
32
|
-
'data-testid'?: string | undefined;
|
|
33
|
-
variant?: "inline" | "standalone" | undefined;
|
|
34
|
-
} & import("react").RefAttributes<HTMLAnchorElement>, "size" | "sentiment" | "prominence">) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
18
|
+
Link: ({ children, href, target, download, rel, className, onClick, "aria-label": ariaLabel, oneLine, "data-testid": dataTestId, }: Omit<import("react").ComponentProps<typeof import("..").Link>, "sentiment" | "prominence" | "size">) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
35
19
|
};
|
|
36
20
|
export {};
|
|
@@ -40,8 +40,7 @@ const GlobalAlert = ({
|
|
|
40
40
|
theme
|
|
41
41
|
} = useTheme();
|
|
42
42
|
const [opened, toggleOpened] = useReducer((value) => !value, true);
|
|
43
|
-
if (!opened)
|
|
44
|
-
return null;
|
|
43
|
+
if (!opened) return null;
|
|
45
44
|
return /* @__PURE__ */ jsxs(Container, { justifyContent: "center", alignItems: "center", direction: "row", "data-variant": variant, "data-testid": dataTestId, className, children: [
|
|
46
45
|
/* @__PURE__ */ jsxs(Stack, { gap: 2, direction: "row", justifyContent: "center", alignItems: "center", children: [
|
|
47
46
|
/* @__PURE__ */ jsx(Text, { variant: "bodySmall", as: "p", sentiment: "neutral", prominence: theme === "light" ? "stronger" : "strong", children }),
|
|
@@ -1,20 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const parse = (data) => {
|
|
4
|
-
if (typeof data === "number")
|
|
5
|
-
|
|
6
|
-
if (
|
|
7
|
-
return parseFloat(data) || 0;
|
|
8
|
-
if (data instanceof Date)
|
|
9
|
-
return data.getTime();
|
|
4
|
+
if (typeof data === "number") return data || 0;
|
|
5
|
+
if (typeof data === "string") return parseFloat(data) || 0;
|
|
6
|
+
if (data instanceof Date) return data.getTime();
|
|
10
7
|
return 0;
|
|
11
8
|
};
|
|
12
9
|
const getMin = (values = []) => values.length ? Math.min(...values.map(parse)) : 0;
|
|
13
10
|
const getMax = (values = []) => values.length ? Math.max(...values.map(parse)) : 0;
|
|
14
11
|
const getAverage = (values = []) => values.length ? Math.round(values.reduce((sum, curr) => sum + parse(curr), 0) / values.length * 100) / 100 : 0;
|
|
15
12
|
const getMaxChartValue = (preppedData) => {
|
|
16
|
-
if (!preppedData?.length)
|
|
17
|
-
return 0;
|
|
13
|
+
if (!preppedData?.length) return 0;
|
|
18
14
|
const maximum = Math.max(...preppedData.map(({
|
|
19
15
|
data
|
|
20
16
|
}) => getMax(data.map(({
|
|
@@ -23,8 +19,7 @@ const getMaxChartValue = (preppedData) => {
|
|
|
23
19
|
return Math.ceil(maximum + maximum * 0.1);
|
|
24
20
|
};
|
|
25
21
|
const getMinChartValue = (preppedData) => {
|
|
26
|
-
if (!preppedData?.length)
|
|
27
|
-
return 0;
|
|
22
|
+
if (!preppedData?.length) return 0;
|
|
28
23
|
const minimum = Math.min(...preppedData.map(({
|
|
29
24
|
data
|
|
30
25
|
}) => getMin(data.map(({
|
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
const parse = (data) => {
|
|
2
|
-
if (typeof data === "number")
|
|
3
|
-
|
|
4
|
-
if (
|
|
5
|
-
return parseFloat(data) || 0;
|
|
6
|
-
if (data instanceof Date)
|
|
7
|
-
return data.getTime();
|
|
2
|
+
if (typeof data === "number") return data || 0;
|
|
3
|
+
if (typeof data === "string") return parseFloat(data) || 0;
|
|
4
|
+
if (data instanceof Date) return data.getTime();
|
|
8
5
|
return 0;
|
|
9
6
|
};
|
|
10
7
|
const getMin = (values = []) => values.length ? Math.min(...values.map(parse)) : 0;
|
|
11
8
|
const getMax = (values = []) => values.length ? Math.max(...values.map(parse)) : 0;
|
|
12
9
|
const getAverage = (values = []) => values.length ? Math.round(values.reduce((sum, curr) => sum + parse(curr), 0) / values.length * 100) / 100 : 0;
|
|
13
10
|
const getMaxChartValue = (preppedData) => {
|
|
14
|
-
if (!preppedData?.length)
|
|
15
|
-
return 0;
|
|
11
|
+
if (!preppedData?.length) return 0;
|
|
16
12
|
const maximum = Math.max(...preppedData.map(({
|
|
17
13
|
data
|
|
18
14
|
}) => getMax(data.map(({
|
|
@@ -21,8 +17,7 @@ const getMaxChartValue = (preppedData) => {
|
|
|
21
17
|
return Math.ceil(maximum + maximum * 0.1);
|
|
22
18
|
};
|
|
23
19
|
const getMinChartValue = (preppedData) => {
|
|
24
|
-
if (!preppedData?.length)
|
|
25
|
-
return 0;
|
|
20
|
+
if (!preppedData?.length) return 0;
|
|
26
21
|
const minimum = Math.min(...preppedData.map(({
|
|
27
22
|
data
|
|
28
23
|
}) => getMin(data.map(({
|
|
@@ -108,10 +108,8 @@ const Link = React.forwardRef(({
|
|
|
108
108
|
const usedRef = ref ?? elementRef;
|
|
109
109
|
const finalStringChildren = recursivelyGetChildrenString(children);
|
|
110
110
|
const textVariant = React.useMemo(() => {
|
|
111
|
-
if (size === "xsmall")
|
|
112
|
-
|
|
113
|
-
if (size === "small")
|
|
114
|
-
return "bodySmallStrong";
|
|
111
|
+
if (size === "xsmall") return "captionStrong";
|
|
112
|
+
if (size === "small") return "bodySmallStrong";
|
|
115
113
|
return "bodyStrong";
|
|
116
114
|
}, [size]);
|
|
117
115
|
React.useEffect(() => {
|
|
@@ -104,10 +104,8 @@ const Link = forwardRef(({
|
|
|
104
104
|
const usedRef = ref ?? elementRef;
|
|
105
105
|
const finalStringChildren = recursivelyGetChildrenString(children);
|
|
106
106
|
const textVariant = useMemo(() => {
|
|
107
|
-
if (size === "xsmall")
|
|
108
|
-
|
|
109
|
-
if (size === "small")
|
|
110
|
-
return "bodySmallStrong";
|
|
107
|
+
if (size === "xsmall") return "captionStrong";
|
|
108
|
+
if (size === "small") return "bodySmallStrong";
|
|
111
109
|
return "bodyStrong";
|
|
112
110
|
}, [size]);
|
|
113
111
|
useEffect(() => {
|
|
@@ -19,7 +19,7 @@ const StyledCell = /* @__PURE__ */ _styled__default.default("div", process.env.N
|
|
|
19
19
|
} : {
|
|
20
20
|
name: "humxtf",
|
|
21
21
|
styles: "display:flex;justify-content:center;flex-direction:column;min-height:60px",
|
|
22
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
22
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL0xpc3QvQ2VsbC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUzZCIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL0xpc3QvQ2VsbC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCdcbmltcG9ydCB0eXBlIHtcbiAgRm9yd2FyZGVkUmVmLFxuICBLZXlib2FyZEV2ZW50SGFuZGxlcixcbiAgTW91c2VFdmVudEhhbmRsZXIsXG4gIFJlYWN0Tm9kZSxcbn0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnXG5cbmNvbnN0IFN0eWxlZENlbGwgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgbWluLWhlaWdodDogNjBweDtcbmBcblxudHlwZSBDZWxsUHJvcHMgPSB7XG4gIGNoaWxkcmVuPzogUmVhY3ROb2RlXG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICAvKipcbiAgICogIEBkZXByZWNhdGVkOiBUaGlzIHByb3Agd29uJ3QgYmUgbmVlZGVkIGluIHRoZSBmdXR1cmUgYXMgZXhwYW5kYWJsZSB3aWxsIGJlIHRyaWdnZXJlZCBvbmx5IHZpYSBhIGJ1dHRvbi5cbiAgICpcbiAgICogIFVzZSB0aGlzIGlmIHlvdSB3YW50IHRvIHByZXZlbnQgb25DbGljayB0byBiZSBoYW5kbGVkIGJ5IHBhcmVudHMgKExpa2Ugd2hlbiB5b3UgaGF2ZSBhbiBleHBhbmRhYmxlIGNvbnRlbnQpXG4gICAqICovXG4gIHByZXZlbnRDbGljaz86IGJvb2xlYW5cbiAgJ2RhdGEtdGVzdGlkJz86IHN0cmluZ1xufVxuXG5leHBvcnQgY29uc3QgQ2VsbCA9IGZvcndhcmRSZWYoXG4gIChcbiAgICB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHByZXZlbnRDbGljaywgJ2RhdGEtdGVzdGlkJzogZGF0YVRlc3RpZCB9OiBDZWxsUHJvcHMsXG4gICAgcmVmOiBGb3J3YXJkZWRSZWY8SFRNTERpdkVsZW1lbnQ+LFxuICApID0+IHtcbiAgICBjb25zdCBoYW5kbGVDbGljazogTW91c2VFdmVudEhhbmRsZXI8SFRNTERpdkVsZW1lbnQ+ID0gZXZlbnQgPT4ge1xuICAgICAgaWYgKHByZXZlbnRDbGljaykge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZUtleURvd246IEtleWJvYXJkRXZlbnRIYW5kbGVyPEhUTUxEaXZFbGVtZW50PiA9IGV2ZW50ID0+IHtcbiAgICAgIGlmIChwcmV2ZW50Q2xpY2spIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFN0eWxlZENlbGxcbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgIHJvbGU9XCJjZWxsXCJcbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsaWNrfVxuICAgICAgICBvbktleURvd249e2hhbmRsZUtleURvd259XG4gICAgICAgIGRhdGEtdGVzdGlkPXtkYXRhVGVzdGlkfVxuICAgICAgPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L1N0eWxlZENlbGw+XG4gICAgKVxuICB9LFxuKVxuIl19 */",
|
|
23
23
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
24
24
|
});
|
|
25
25
|
const Cell = React.forwardRef(({
|
|
@@ -3,6 +3,8 @@ type CellProps = {
|
|
|
3
3
|
children?: ReactNode;
|
|
4
4
|
className?: string;
|
|
5
5
|
/**
|
|
6
|
+
* @deprecated: This prop won't be needed in the future as expandable will be triggered only via a button.
|
|
7
|
+
*
|
|
6
8
|
* Use this if you want to prevent onClick to be handled by parents (Like when you have an expandable content)
|
|
7
9
|
* */
|
|
8
10
|
preventClick?: boolean;
|
|
@@ -15,7 +15,7 @@ const StyledCell = /* @__PURE__ */ _styled("div", process.env.NODE_ENV === "prod
|
|
|
15
15
|
} : {
|
|
16
16
|
name: "humxtf",
|
|
17
17
|
styles: "display:flex;justify-content:center;flex-direction:column;min-height:60px",
|
|
18
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
18
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL0xpc3QvQ2VsbC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUzZCIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL0xpc3QvQ2VsbC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCdcbmltcG9ydCB0eXBlIHtcbiAgRm9yd2FyZGVkUmVmLFxuICBLZXlib2FyZEV2ZW50SGFuZGxlcixcbiAgTW91c2VFdmVudEhhbmRsZXIsXG4gIFJlYWN0Tm9kZSxcbn0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnXG5cbmNvbnN0IFN0eWxlZENlbGwgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgbWluLWhlaWdodDogNjBweDtcbmBcblxudHlwZSBDZWxsUHJvcHMgPSB7XG4gIGNoaWxkcmVuPzogUmVhY3ROb2RlXG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICAvKipcbiAgICogIEBkZXByZWNhdGVkOiBUaGlzIHByb3Agd29uJ3QgYmUgbmVlZGVkIGluIHRoZSBmdXR1cmUgYXMgZXhwYW5kYWJsZSB3aWxsIGJlIHRyaWdnZXJlZCBvbmx5IHZpYSBhIGJ1dHRvbi5cbiAgICpcbiAgICogIFVzZSB0aGlzIGlmIHlvdSB3YW50IHRvIHByZXZlbnQgb25DbGljayB0byBiZSBoYW5kbGVkIGJ5IHBhcmVudHMgKExpa2Ugd2hlbiB5b3UgaGF2ZSBhbiBleHBhbmRhYmxlIGNvbnRlbnQpXG4gICAqICovXG4gIHByZXZlbnRDbGljaz86IGJvb2xlYW5cbiAgJ2RhdGEtdGVzdGlkJz86IHN0cmluZ1xufVxuXG5leHBvcnQgY29uc3QgQ2VsbCA9IGZvcndhcmRSZWYoXG4gIChcbiAgICB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHByZXZlbnRDbGljaywgJ2RhdGEtdGVzdGlkJzogZGF0YVRlc3RpZCB9OiBDZWxsUHJvcHMsXG4gICAgcmVmOiBGb3J3YXJkZWRSZWY8SFRNTERpdkVsZW1lbnQ+LFxuICApID0+IHtcbiAgICBjb25zdCBoYW5kbGVDbGljazogTW91c2VFdmVudEhhbmRsZXI8SFRNTERpdkVsZW1lbnQ+ID0gZXZlbnQgPT4ge1xuICAgICAgaWYgKHByZXZlbnRDbGljaykge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZUtleURvd246IEtleWJvYXJkRXZlbnRIYW5kbGVyPEhUTUxEaXZFbGVtZW50PiA9IGV2ZW50ID0+IHtcbiAgICAgIGlmIChwcmV2ZW50Q2xpY2spIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFN0eWxlZENlbGxcbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgIHJvbGU9XCJjZWxsXCJcbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsaWNrfVxuICAgICAgICBvbktleURvd249e2hhbmRsZUtleURvd259XG4gICAgICAgIGRhdGEtdGVzdGlkPXtkYXRhVGVzdGlkfVxuICAgICAgPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L1N0eWxlZENlbGw+XG4gICAgKVxuICB9LFxuKVxuIl19 */",
|
|
19
19
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
20
20
|
});
|
|
21
21
|
const Cell = forwardRef(({
|