@scaleflex/ui-tw 0.0.74 → 0.0.76
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/alert/alert.component.d.ts +17 -0
- package/alert/alert.component.js +106 -0
- package/alert/alert.constants.d.ts +16 -0
- package/alert/alert.constants.js +10 -0
- package/alert/alert.types.d.ts +18 -0
- package/alert/alert.types.js +1 -0
- package/alert/index.d.ts +2 -0
- package/alert/index.js +1 -0
- package/button/button.component.d.ts +2 -2
- package/button/components/start-icon.d.ts +2 -2
- package/dialog/dialog.component.js +1 -1
- package/input/input.component.d.ts +1 -1
- package/package.json +2 -2
- package/pill/pill.component.d.ts +1 -1
- package/pill/pill.component.js +1 -0
- package/pill/pill.utils.d.ts +1 -1
- package/select/select.component.d.ts +2 -2
- package/styles/theme-map.css +1 -0
- package/styles/variables.css +2 -0
- package/textarea/textarea.component.d.ts +1 -1
- package/tooltip/tooltip.component.js +1 -1
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React, { type HTMLAttributes } from 'react';
|
|
2
|
+
import { AlertProps, AlertTitleProps, VariantlessProps } from './alert.types';
|
|
3
|
+
export declare const alertVariants: (props?: ({
|
|
4
|
+
variant?: "info" | "success" | "warning" | "error" | null | undefined;
|
|
5
|
+
size?: "sm" | "md" | "lg" | null | undefined;
|
|
6
|
+
} & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
|
|
7
|
+
export declare const alertIconVariants: (props?: ({
|
|
8
|
+
size?: "sm" | "md" | "lg" | null | undefined;
|
|
9
|
+
} & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
|
|
10
|
+
declare function Alert({ className, variant, size, children, icon: Icon, removable, onRemove, noSubstrate, ...props }: AlertProps): React.JSX.Element;
|
|
11
|
+
declare const AlertTitle: ({ ...props }: AlertTitleProps) => React.JSX.Element;
|
|
12
|
+
declare const AlertDescription: (props: HTMLAttributes<HTMLDivElement>) => React.JSX.Element;
|
|
13
|
+
declare const InfoAlert: (props: VariantlessProps) => React.JSX.Element;
|
|
14
|
+
declare const SuccessAlert: (props: VariantlessProps) => React.JSX.Element;
|
|
15
|
+
declare const WarningAlert: (props: VariantlessProps) => React.JSX.Element;
|
|
16
|
+
declare const ErrorAlert: (props: VariantlessProps) => React.JSX.Element;
|
|
17
|
+
export { Alert, InfoAlert, SuccessAlert, WarningAlert, ErrorAlert, AlertTitle, AlertDescription };
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import _objectDestructuringEmpty from "@babel/runtime/helpers/objectDestructuringEmpty";
|
|
2
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
3
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
4
|
+
var _excluded = ["className", "variant", "size", "children", "icon", "removable", "onRemove", "noSubstrate"];
|
|
5
|
+
import { alertIconSizeOptions, alertSizeOptions, alertVariantOptions } from '@scaleflex/ui-tw/alert/alert.constants';
|
|
6
|
+
import { removePillSizeOptions } from '@scaleflex/ui-tw/pill/pill.constants';
|
|
7
|
+
import { getPillCrossIconClassName } from '@scaleflex/ui-tw/pill/pill.utils';
|
|
8
|
+
import { focusRingClassNames } from '@scaleflex/ui-tw/styles/shared-classes';
|
|
9
|
+
import { FormSize } from '@scaleflex/ui-tw/types/form-size';
|
|
10
|
+
import { cn } from '@scaleflex/ui-tw/utils/cn';
|
|
11
|
+
import { cva } from 'class-variance-authority';
|
|
12
|
+
import { AlertTriangle, CircleCheck, Info, X, XCircle } from 'lucide-react';
|
|
13
|
+
import React from 'react';
|
|
14
|
+
export var alertVariants = cva('', {
|
|
15
|
+
variants: {
|
|
16
|
+
variant: alertVariantOptions,
|
|
17
|
+
size: alertSizeOptions
|
|
18
|
+
},
|
|
19
|
+
defaultVariants: {
|
|
20
|
+
variant: 'info',
|
|
21
|
+
size: FormSize.Md
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
var crossIconVariants = cva('', {
|
|
25
|
+
variants: {
|
|
26
|
+
size: removePillSizeOptions
|
|
27
|
+
},
|
|
28
|
+
defaultVariants: {
|
|
29
|
+
size: FormSize.Md
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
export var alertIconVariants = cva('', {
|
|
33
|
+
variants: {
|
|
34
|
+
size: alertIconSizeOptions
|
|
35
|
+
},
|
|
36
|
+
defaultVariants: {
|
|
37
|
+
size: FormSize.Md
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
function Alert(_ref) {
|
|
41
|
+
var className = _ref.className,
|
|
42
|
+
_ref$variant = _ref.variant,
|
|
43
|
+
variant = _ref$variant === void 0 ? 'info' : _ref$variant,
|
|
44
|
+
size = _ref.size,
|
|
45
|
+
children = _ref.children,
|
|
46
|
+
Icon = _ref.icon,
|
|
47
|
+
removable = _ref.removable,
|
|
48
|
+
onRemove = _ref.onRemove,
|
|
49
|
+
noSubstrate = _ref.noSubstrate,
|
|
50
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
|
51
|
+
return /*#__PURE__*/React.createElement("div", _extends({
|
|
52
|
+
role: "alert",
|
|
53
|
+
"data-slot": "alert",
|
|
54
|
+
className: cn('relative flex w-full flex-col items-start rounded-lg border p-4 text-sm', alertVariants({
|
|
55
|
+
variant: variant,
|
|
56
|
+
size: size
|
|
57
|
+
}), !!Icon && 'pl-11', removable && !noSubstrate && 'pr-11', noSubstrate && 'border-0 bg-transparent pl-7', className)
|
|
58
|
+
}, props), Icon && /*#__PURE__*/React.createElement(Icon, {
|
|
59
|
+
className: cn('absolute', alertIconVariants({
|
|
60
|
+
size: size
|
|
61
|
+
}), noSubstrate && 'left-0')
|
|
62
|
+
}), children, removable && !noSubstrate && /*#__PURE__*/React.createElement("button", {
|
|
63
|
+
type: "button",
|
|
64
|
+
onClick: onRemove,
|
|
65
|
+
className: cn('absolute right-3 shrink-0 cursor-pointer opacity-60 transition-transform duration-150 ease-in-out hover:opacity-80 active:scale-85', crossIconVariants({
|
|
66
|
+
size: size
|
|
67
|
+
}), focusRingClassNames),
|
|
68
|
+
"aria-label": "Remove"
|
|
69
|
+
}, /*#__PURE__*/React.createElement(X, {
|
|
70
|
+
className: getPillCrossIconClassName(size)
|
|
71
|
+
})));
|
|
72
|
+
}
|
|
73
|
+
var AlertTitle = function AlertTitle(_ref2) {
|
|
74
|
+
var props = _extends({}, (_objectDestructuringEmpty(_ref2), _ref2));
|
|
75
|
+
return /*#__PURE__*/React.createElement("div", _extends({
|
|
76
|
+
className: cn('font-medium')
|
|
77
|
+
}, props));
|
|
78
|
+
};
|
|
79
|
+
var AlertDescription = function AlertDescription(props) {
|
|
80
|
+
return /*#__PURE__*/React.createElement("div", props);
|
|
81
|
+
};
|
|
82
|
+
var InfoAlert = function InfoAlert(props) {
|
|
83
|
+
return /*#__PURE__*/React.createElement(Alert, _extends({}, props, {
|
|
84
|
+
icon: Info,
|
|
85
|
+
variant: "info"
|
|
86
|
+
}));
|
|
87
|
+
};
|
|
88
|
+
var SuccessAlert = function SuccessAlert(props) {
|
|
89
|
+
return /*#__PURE__*/React.createElement(Alert, _extends({}, props, {
|
|
90
|
+
icon: CircleCheck,
|
|
91
|
+
variant: "success"
|
|
92
|
+
}));
|
|
93
|
+
};
|
|
94
|
+
var WarningAlert = function WarningAlert(props) {
|
|
95
|
+
return /*#__PURE__*/React.createElement(Alert, _extends({}, props, {
|
|
96
|
+
icon: AlertTriangle,
|
|
97
|
+
variant: "warning"
|
|
98
|
+
}));
|
|
99
|
+
};
|
|
100
|
+
var ErrorAlert = function ErrorAlert(props) {
|
|
101
|
+
return /*#__PURE__*/React.createElement(Alert, _extends({}, props, {
|
|
102
|
+
icon: XCircle,
|
|
103
|
+
variant: "error"
|
|
104
|
+
}));
|
|
105
|
+
};
|
|
106
|
+
export { Alert, InfoAlert, SuccessAlert, WarningAlert, ErrorAlert, AlertTitle, AlertDescription };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare const alertVariantOptions: {
|
|
2
|
+
info: string;
|
|
3
|
+
success: string;
|
|
4
|
+
warning: string;
|
|
5
|
+
error: string;
|
|
6
|
+
};
|
|
7
|
+
export declare const alertSizeOptions: {
|
|
8
|
+
sm: string;
|
|
9
|
+
md: string;
|
|
10
|
+
lg: string;
|
|
11
|
+
};
|
|
12
|
+
export declare const alertIconSizeOptions: {
|
|
13
|
+
sm: string;
|
|
14
|
+
md: string;
|
|
15
|
+
lg: string;
|
|
16
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
import { FormSize } from '@scaleflex/ui-tw/types/form-size';
|
|
3
|
+
export var alertVariantOptions = {
|
|
4
|
+
info: 'bg-info/5 text-info-foreground border-info/5',
|
|
5
|
+
success: 'bg-success/5 text-success-foreground border-success/5',
|
|
6
|
+
warning: 'bg-warning/5 text-warning-foreground border-warning/5',
|
|
7
|
+
error: 'bg-destructive/5 text-destructive-foreground border-destructive/5'
|
|
8
|
+
};
|
|
9
|
+
export var alertSizeOptions = _defineProperty(_defineProperty(_defineProperty({}, FormSize.Sm, 'text-xs gap-1.5 py-2 px-3'), FormSize.Md, 'text-sm gap-1.5 py-3 px-4'), FormSize.Lg, 'text-base gap-2 py-4 px-5');
|
|
10
|
+
export var alertIconSizeOptions = _defineProperty(_defineProperty(_defineProperty({}, FormSize.Sm, 'top-1.5 left-3.5 size-4.5'), FormSize.Md, 'top-3 left-3 size-5'), FormSize.Lg, 'top-4 left-2.5 size-6');
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { alertVariants } from '@scaleflex/ui-tw/alert/alert.component';
|
|
2
|
+
import { FormSizeType } from '@scaleflex/ui-tw/types/form-size';
|
|
3
|
+
import { VariantProps } from 'class-variance-authority';
|
|
4
|
+
import type { LucideIcon } from 'lucide-react';
|
|
5
|
+
import type { HTMLAttributes, MouseEvent } from 'react';
|
|
6
|
+
export type AlertVariant = 'info' | 'success' | 'warning' | 'error';
|
|
7
|
+
export interface AlertProps extends HTMLAttributes<HTMLDivElement>, VariantProps<typeof alertVariants> {
|
|
8
|
+
variant?: AlertVariant;
|
|
9
|
+
size?: FormSizeType;
|
|
10
|
+
icon?: LucideIcon;
|
|
11
|
+
removable?: boolean;
|
|
12
|
+
noSubstrate?: boolean;
|
|
13
|
+
onRemove?: (event: MouseEvent<HTMLButtonElement>) => void;
|
|
14
|
+
}
|
|
15
|
+
export interface AlertTitleProps extends HTMLAttributes<HTMLDivElement> {
|
|
16
|
+
size?: FormSizeType;
|
|
17
|
+
}
|
|
18
|
+
export type VariantlessProps = Omit<AlertProps, 'variant' | 'icon'>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/alert/index.d.ts
ADDED
package/alert/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Alert, InfoAlert, SuccessAlert, WarningAlert, ErrorAlert } from './alert.component';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { ButtonProps } from './button.types';
|
|
3
3
|
declare const buttonVariants: (props?: ({
|
|
4
|
-
variant?: "
|
|
5
|
-
size?: "
|
|
4
|
+
variant?: "outline" | "primary" | "secondary" | "ghost-primary" | "ghost-secondary" | "error-primary" | "warning-primary" | null | undefined;
|
|
5
|
+
size?: "sm" | "md" | "lg" | "xs" | "icon-xs" | "icon-sm" | "icon-md" | "icon-lg" | null | undefined;
|
|
6
6
|
} & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
|
|
7
7
|
declare const Button: React.ForwardRefExoticComponent<Omit<ButtonProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
8
8
|
export { Button, buttonVariants };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { StartIconProps } from '@scaleflex/ui-tw/button/button.types';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
declare const startIconVariants: (props?: ({
|
|
4
|
-
variant?: "
|
|
5
|
-
size?: "
|
|
4
|
+
variant?: "outline" | "primary" | "secondary" | "ghost-primary" | "ghost-secondary" | "error-primary" | "warning-primary" | null | undefined;
|
|
5
|
+
size?: "sm" | "md" | "lg" | "xs" | "icon-xs" | "icon-sm" | "icon-md" | "icon-lg" | null | undefined;
|
|
6
6
|
} & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
|
|
7
7
|
declare const StartIcon: (props: StartIconProps) => React.JSX.Element | null;
|
|
8
8
|
export { StartIcon, startIconVariants };
|
|
@@ -160,7 +160,7 @@ function DialogFormIcon(_ref15) {
|
|
|
160
160
|
var className = _ref15.className,
|
|
161
161
|
props = _objectWithoutProperties(_ref15, _excluded11);
|
|
162
162
|
return /*#__PURE__*/React.createElement("div", _extends({
|
|
163
|
-
className: cn('bg-accent mb-2 flex h-16 w-16 items-center justify-center rounded-full', "[&_svg:not([class*='text-'])]:text-primary [&_svg:not([class*='size-'])]:size-
|
|
163
|
+
className: cn('bg-accent mb-2 flex h-16 w-16 items-center justify-center rounded-full', "[&_svg:not([class*='text-'])]:text-primary [&_svg:not([class*='size-'])]:size-9", className)
|
|
164
164
|
}, props));
|
|
165
165
|
}
|
|
166
166
|
function DialogFormWarningIcon(_ref16) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { InputProps } from './input.types';
|
|
3
3
|
declare const inputVariants: (props?: ({
|
|
4
|
-
size?: "
|
|
4
|
+
size?: "sm" | "md" | "lg" | null | undefined;
|
|
5
5
|
} & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
|
|
6
6
|
declare function Input({ className, type, size, disabled, readOnly, ...props }: InputProps): React.JSX.Element;
|
|
7
7
|
export { Input, inputVariants };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@scaleflex/ui-tw",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.76",
|
|
4
4
|
"author": "scaleflex",
|
|
5
5
|
"repository": "github:scaleflex/ui",
|
|
6
6
|
"homepage": "https://github.com/scaleflex/ui/blob/master/README.md",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"@radix-ui/react-slot": "^1.1.2",
|
|
24
24
|
"@radix-ui/react-switch": "^1.0.1",
|
|
25
25
|
"@radix-ui/react-tooltip": "^1.2.6",
|
|
26
|
-
"@scaleflex/icons-tw": "^0.0.
|
|
26
|
+
"@scaleflex/icons-tw": "^0.0.76",
|
|
27
27
|
"@tanstack/react-table": "^8.21.3",
|
|
28
28
|
"@types/lodash.merge": "^4.6.9",
|
|
29
29
|
"class-variance-authority": "^0.7.1",
|
package/pill/pill.component.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { PillProps } from '@scaleflex/ui-tw/pill/pill.types';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
declare const pillVariants: (props?: ({
|
|
4
|
-
size?: "
|
|
4
|
+
size?: "sm" | "md" | "lg" | null | undefined;
|
|
5
5
|
variant?: "default" | "outline" | null | undefined;
|
|
6
6
|
} & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
|
|
7
7
|
declare function Pill({ className, size, variant, removable, onRemove, ...props }: PillProps): React.JSX.Element;
|
package/pill/pill.component.js
CHANGED
|
@@ -37,6 +37,7 @@ function Pill(_ref) {
|
|
|
37
37
|
onRemove = _ref.onRemove,
|
|
38
38
|
props = _objectWithoutProperties(_ref, _excluded);
|
|
39
39
|
return /*#__PURE__*/React.createElement("div", _extends({
|
|
40
|
+
"aria-label": "pill",
|
|
40
41
|
className: cn('border-input text-foreground border', 'inline-flex items-center rounded-full text-sm font-medium whitespace-nowrap shadow-xs transition-colors', pillVariants({
|
|
41
42
|
size: size,
|
|
42
43
|
variant: variant
|
package/pill/pill.utils.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { FormSizeType } from '@scaleflex/ui-tw/types/form-size';
|
|
2
|
-
export declare const getPillCrossIconClassName: (size?: FormSizeType | null) => "size-4" | "size-
|
|
2
|
+
export declare const getPillCrossIconClassName: (size?: FormSizeType | null) => "size-4" | "size-3" | "size-5";
|
|
@@ -5,10 +5,10 @@ declare function Select({ ...props }: ComponentProps<typeof SelectPrimitive.Root
|
|
|
5
5
|
declare function SelectGroup({ ...props }: ComponentProps<typeof SelectPrimitive.Group>): React.JSX.Element;
|
|
6
6
|
declare function SelectValue({ ...props }: ComponentProps<typeof SelectPrimitive.Value>): React.JSX.Element;
|
|
7
7
|
export declare const selectTriggerVariants: (props?: ({
|
|
8
|
-
size?: "
|
|
8
|
+
size?: "sm" | "md" | "lg" | null | undefined;
|
|
9
9
|
} & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
|
|
10
10
|
export declare const selectItemVariants: (props?: ({
|
|
11
|
-
size?: "
|
|
11
|
+
size?: "sm" | "md" | "lg" | null | undefined;
|
|
12
12
|
} & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
|
|
13
13
|
declare function SelectTrigger({ className, size, children, readOnly, icon, ...props }: SelectTriggerProps): React.JSX.Element;
|
|
14
14
|
declare function SelectContent({ className, children, position, ...props }: ComponentProps<typeof SelectPrimitive.Content>): React.JSX.Element;
|
package/styles/theme-map.css
CHANGED
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
--color-success-10: var(--success-10);
|
|
37
37
|
--color-info: var(--info);
|
|
38
38
|
--color-info-foreground: var(--info-foreground);
|
|
39
|
+
--color-info-10: var(--info-10);
|
|
39
40
|
--color-warning: var(--warning);
|
|
40
41
|
--color-warning-10: var(--warning-10);
|
|
41
42
|
--color-warning-foreground: var(--warning-foreground);
|
package/styles/variables.css
CHANGED
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
--destructive-10: oklch(0.967 0.016 17.438);
|
|
23
23
|
--info: oklch(0.632 0.161 245.564);
|
|
24
24
|
--info-foreground: oklch(0.391 0.091 241.289);
|
|
25
|
+
--info-10: oklch(0.978 0.025 248.61);
|
|
25
26
|
--warning: oklch(0.734 0.157 69.419);
|
|
26
27
|
--warning-foreground: oklch(0.456 0.095 58.822);
|
|
27
28
|
--warning-10: oklch(0.978 0.025 86.868);
|
|
@@ -81,6 +82,7 @@
|
|
|
81
82
|
--destructive-10: oklch(0.2 0.01 17.438);
|
|
82
83
|
--info: oklch(0.65 0.2 241.34);
|
|
83
84
|
--info-foreground: oklch(0.95 0.01 248.61);
|
|
85
|
+
--info-10: oklch(0.2 0.01 17.438);
|
|
84
86
|
--warning: oklch(0.7 0.15 69.419);
|
|
85
87
|
--warning-foreground: oklch(0.756 0.114 77.312);
|
|
86
88
|
--warning-10: oklch(0.3 0.01 86.868);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { TextareaProps } from './textarea.types';
|
|
3
3
|
declare const textareaVariants: (props?: ({
|
|
4
|
-
size?: "
|
|
4
|
+
size?: "sm" | "md" | "lg" | null | undefined;
|
|
5
5
|
} & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
|
|
6
6
|
declare function Textarea({ className, size, disabled, readOnly, ...props }: TextareaProps): React.JSX.Element;
|
|
7
7
|
export { Textarea, textareaVariants };
|
|
@@ -49,7 +49,7 @@ function TooltipContent(_ref4) {
|
|
|
49
49
|
return /*#__PURE__*/React.createElement(TooltipPrimitive.Portal, null, /*#__PURE__*/React.createElement(TooltipPrimitive.Content, _extends({
|
|
50
50
|
"data-slot": "tooltip-content",
|
|
51
51
|
sideOffset: sideOffset,
|
|
52
|
-
className: cn('animate-in fade-in-0 zoom-in-95 text-md shadow-shadow z-
|
|
52
|
+
className: cn('animate-in fade-in-0 zoom-in-95 text-md shadow-shadow z-1999 w-fit max-w-lg origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-2 shadow-sm', 'data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2', 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95', tooltipVariants({
|
|
53
53
|
variant: variant
|
|
54
54
|
}), className)
|
|
55
55
|
}, props), children));
|