@toptal/picasso-button 1.0.13-alpha-fx-4594-migrate-griditem-c9028d1d9.30 → 2.0.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-package/src/Button/Button.d.ts.map +1 -1
- package/dist-package/src/Button/Button.js +39 -47
- package/dist-package/src/Button/Button.js.map +1 -1
- package/dist-package/src/Button/styles.d.ts +19 -45
- package/dist-package/src/Button/styles.d.ts.map +1 -1
- package/dist-package/src/Button/styles.js +161 -178
- package/dist-package/src/Button/styles.js.map +1 -1
- package/dist-package/src/ButtonAction/ButtonAction.d.ts.map +1 -1
- package/dist-package/src/ButtonAction/ButtonAction.js +20 -28
- package/dist-package/src/ButtonAction/ButtonAction.js.map +1 -1
- package/dist-package/src/ButtonAction/styles.d.ts +11 -3
- package/dist-package/src/ButtonAction/styles.d.ts.map +1 -1
- package/dist-package/src/ButtonAction/styles.js +36 -55
- package/dist-package/src/ButtonAction/styles.js.map +1 -1
- package/dist-package/src/ButtonBase/ButtonBase.d.ts +29 -0
- package/dist-package/src/ButtonBase/ButtonBase.d.ts.map +1 -0
- package/dist-package/src/ButtonBase/ButtonBase.js +82 -0
- package/dist-package/src/ButtonBase/ButtonBase.js.map +1 -0
- package/dist-package/src/ButtonBase/index.d.ts +5 -0
- package/dist-package/src/ButtonBase/index.d.ts.map +1 -0
- package/dist-package/src/ButtonBase/index.js +2 -0
- package/dist-package/src/ButtonBase/index.js.map +1 -0
- package/dist-package/src/ButtonBase/styles.d.ts +6 -0
- package/dist-package/src/ButtonBase/styles.d.ts.map +1 -0
- package/dist-package/src/ButtonBase/styles.js +29 -0
- package/dist-package/src/ButtonBase/styles.js.map +1 -0
- package/dist-package/src/ButtonCircular/ButtonCircular.d.ts.map +1 -1
- package/dist-package/src/ButtonCircular/ButtonCircular.js +12 -26
- package/dist-package/src/ButtonCircular/ButtonCircular.js.map +1 -1
- package/dist-package/src/ButtonCircular/styles.d.ts +15 -3
- package/dist-package/src/ButtonCircular/styles.d.ts.map +1 -1
- package/dist-package/src/ButtonCircular/styles.js +92 -57
- package/dist-package/src/ButtonCircular/styles.js.map +1 -1
- package/dist-package/src/ButtonCompound/index.d.ts +1 -1
- package/dist-package/src/ButtonControlLabel/ButtonControlLabel.d.ts.map +1 -1
- package/dist-package/src/ButtonControlLabel/ButtonControlLabel.js +4 -13
- package/dist-package/src/ButtonControlLabel/ButtonControlLabel.js.map +1 -1
- package/dist-package/src/ButtonControlLabel/styles.d.ts +2 -2
- package/dist-package/src/ButtonControlLabel/styles.d.ts.map +1 -1
- package/dist-package/src/ButtonControlLabel/styles.js +16 -25
- package/dist-package/src/ButtonControlLabel/styles.js.map +1 -1
- package/dist-package/src/ButtonGroup/ButtonGroup.d.ts +1 -1
- package/dist-package/src/ButtonGroup/ButtonGroup.d.ts.map +1 -1
- package/dist-package/src/ButtonGroup/ButtonGroup.js +5 -27
- package/dist-package/src/ButtonGroup/ButtonGroup.js.map +1 -1
- package/dist-package/src/ButtonGroup/styles.d.ts +1 -2
- package/dist-package/src/ButtonGroup/styles.d.ts.map +1 -1
- package/dist-package/src/ButtonGroup/styles.js +20 -47
- package/dist-package/src/ButtonGroup/styles.js.map +1 -1
- package/dist-package/src/ButtonGroupItem/ButtonGroupItem.d.ts +1 -1
- package/dist-package/src/ButtonGroupItem/ButtonGroupItem.d.ts.map +1 -1
- package/dist-package/src/ButtonGroupItem/ButtonGroupItem.js +17 -12
- package/dist-package/src/ButtonGroupItem/ButtonGroupItem.js.map +1 -1
- package/dist-package/src/ButtonGroupItem/styles.d.ts +13 -3
- package/dist-package/src/ButtonGroupItem/styles.d.ts.map +1 -1
- package/dist-package/src/ButtonGroupItem/styles.js +39 -17
- package/dist-package/src/ButtonGroupItem/styles.js.map +1 -1
- package/dist-package/src/ButtonSplit/ButtonSplit.d.ts.map +1 -1
- package/dist-package/src/ButtonSplit/ButtonSplit.js +28 -24
- package/dist-package/src/ButtonSplit/ButtonSplit.js.map +1 -1
- package/dist-package/src/ButtonSplit/styles.d.ts +9 -3
- package/dist-package/src/ButtonSplit/styles.d.ts.map +1 -1
- package/dist-package/src/ButtonSplit/styles.js +13 -50
- package/dist-package/src/ButtonSplit/styles.js.map +1 -1
- package/package.json +19 -16
- package/src/Button/Button.tsx +69 -100
- package/src/Button/__snapshots__/test.tsx.snap +8 -4
- package/src/Button/styles.ts +214 -221
- package/src/Button/test.tsx +3 -1
- package/src/ButtonAction/ButtonAction.tsx +36 -48
- package/src/ButtonAction/styles.ts +57 -57
- package/src/ButtonBase/ButtonBase.tsx +186 -0
- package/src/ButtonBase/__snapshots__/test.tsx.snap +286 -0
- package/src/ButtonBase/index.ts +5 -0
- package/src/ButtonBase/styles.ts +36 -0
- package/src/ButtonBase/test.tsx +230 -0
- package/src/ButtonCheckbox/__snapshots__/test.tsx.snap +4 -3
- package/src/ButtonCircular/ButtonCircular.tsx +22 -37
- package/src/ButtonCircular/styles.ts +127 -75
- package/src/ButtonControlLabel/ButtonControlLabel.tsx +7 -16
- package/src/ButtonControlLabel/styles.ts +30 -26
- package/src/ButtonGroup/ButtonGroup.tsx +9 -44
- package/src/ButtonGroup/__snapshots__/test.tsx.snap +13 -7
- package/src/ButtonGroup/styles.ts +21 -63
- package/src/ButtonGroupItem/ButtonGroupItem.tsx +24 -15
- package/src/ButtonGroupItem/styles.ts +62 -28
- package/src/ButtonRadio/__snapshots__/test.tsx.snap +4 -3
- package/src/ButtonSplit/ButtonSplit.tsx +46 -42
- package/src/ButtonSplit/__snapshots__/test.tsx.snap +13 -9
- package/src/ButtonSplit/styles.ts +37 -56
- package/LICENSE +0 -20
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ButtonAction.d.ts","sourceRoot":"","sources":["../../../src/ButtonAction/ButtonAction.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"ButtonAction.d.ts","sourceRoot":"","sources":["../../../src/ButtonAction/ButtonAction.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAa,MAAM,OAAO,CAAA;AAG7E,OAAO,KAAK,EACV,SAAS,EACT,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,wBAAwB,CAAA;AAG/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AA0BjD,MAAM,WAAW,KAAM,SAAQ,SAAS,EAAE,mBAAmB;IAC3D,+DAA+D;IAC/D,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,iGAAiG;IACjG,EAAE,CAAC,EAAE,WAAW,CAAA;IAChB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,gDAAgD;IAChD,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB,kDAAkD;IAClD,YAAY,CAAC,EAAE,gBAAgB,CAAA;IAC/B,0DAA0D;IAC1D,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,iDAAiD;IACjD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,KAAK,IAAI,CAAA;IAC5E,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CACxB;AAID,eAAO,MAAM,YAAY,EAAE,oBAAoB,CAAC,KAAK,CA0CnD,CAAA;AAQF,eAAe,YAAY,CAAA"}
|
|
@@ -11,40 +11,32 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
11
11
|
};
|
|
12
12
|
import React, { forwardRef } from 'react';
|
|
13
13
|
import cx from 'classnames';
|
|
14
|
-
import { makeStyles } from '@material-ui/core/styles';
|
|
15
14
|
import { Loader } from '@toptal/picasso-loader';
|
|
16
|
-
import {
|
|
17
|
-
import
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
});
|
|
15
|
+
import { ButtonBase } from '../ButtonBase';
|
|
16
|
+
import { createRootClassNames, createIconClassNames } from './styles';
|
|
17
|
+
const getIcon = ({ children, icon, iconPosition, }) => {
|
|
18
|
+
if (!icon) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
const iconClassNames = createIconClassNames({
|
|
22
|
+
iconPosition: children && iconPosition ? iconPosition : undefined,
|
|
23
|
+
});
|
|
24
|
+
return React.cloneElement(icon, {
|
|
25
|
+
className: cx(iconClassNames, icon.props.className),
|
|
26
|
+
});
|
|
27
|
+
};
|
|
25
28
|
const loaderIcon = React.createElement(Loader, { size: 'small', variant: 'inherit' });
|
|
26
29
|
export const ButtonAction = forwardRef(function ButtonAction(props, ref) {
|
|
27
30
|
const { className, active, focused, hovered, disabled, loading, icon, iconPosition, onClick } = props, rest = __rest(props, ["className", "active", "focused", "hovered", "disabled", "loading", "icon", "iconPosition", "onClick"]);
|
|
28
|
-
const classes = useStyles();
|
|
29
|
-
const { root: rootClass, content, icon: iconClassName, iconLeft, iconRight, small, } = classes;
|
|
30
|
-
const rootClassName = cx({
|
|
31
|
-
[classes.active]: active,
|
|
32
|
-
[classes.focused]: focused,
|
|
33
|
-
[classes.hovered]: hovered,
|
|
34
|
-
[classes.disabled]: disabled,
|
|
35
|
-
[classes.loading]: loading,
|
|
36
|
-
[classes.iconless]: !icon,
|
|
37
|
-
}, rootClass);
|
|
38
31
|
const usedIcon = loading ? loaderIcon : icon;
|
|
39
32
|
const usedIconPosition = icon ? iconPosition : 'right';
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
}, className: className, size: 'small', active: active, hovered: hovered, focused: focused, disabled: disabled })));
|
|
33
|
+
const finalClassName = cx(createRootClassNames(props), className);
|
|
34
|
+
const finalIcon = getIcon({
|
|
35
|
+
children: rest.children,
|
|
36
|
+
icon: usedIcon,
|
|
37
|
+
iconPosition: usedIconPosition,
|
|
38
|
+
});
|
|
39
|
+
return (React.createElement(ButtonBase, Object.assign({}, rest, { ref: ref, icon: finalIcon, iconPosition: usedIconPosition, onClick: loading ? undefined : onClick, className: finalClassName, contentClassName: 'font-semibold text-blue-500 text-md', active: active, hovered: hovered, focused: focused, disabled: disabled })));
|
|
48
40
|
});
|
|
49
41
|
ButtonAction.defaultProps = {
|
|
50
42
|
iconPosition: 'left',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ButtonAction.js","sourceRoot":"","sources":["../../../src/ButtonAction/ButtonAction.tsx"],"names":[],"mappings":";;;;;;;;;;;AACA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AACzC,OAAO,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"ButtonAction.js","sourceRoot":"","sources":["../../../src/ButtonAction/ButtonAction.tsx"],"names":[],"mappings":";;;;;;;;;;;AACA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AACzC,OAAO,EAAE,MAAM,YAAY,CAAA;AAM3B,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAG/C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAErE,MAAM,OAAO,GAAG,CAAC,EACf,QAAQ,EACR,IAAI,EACJ,YAAY,GAKb,EAAE,EAAE;IACH,IAAI,CAAC,IAAI,EAAE;QACT,OAAO,IAAI,CAAA;KACZ;IAED,MAAM,cAAc,GAAG,oBAAoB,CAAC;QAC1C,YAAY,EAAE,QAAQ,IAAI,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;KAClE,CAAC,CAAA;IAEF,OAAO,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE;QAC9B,SAAS,EAAE,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;KACpD,CAAC,CAAA;AACJ,CAAC,CAAA;AAyBD,MAAM,UAAU,GAAG,oBAAC,MAAM,IAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,SAAS,GAAG,CAAA;AAE5D,MAAM,CAAC,MAAM,YAAY,GAAgC,UAAU,CAGjE,SAAS,YAAY,CAAC,KAAK,EAAE,GAAG;IAChC,MAAM,EACJ,SAAS,EACT,MAAM,EACN,OAAO,EACP,OAAO,EACP,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,OAAO,KAEL,KAAK,EADJ,IAAI,UACL,KAAK,EAXH,uGAWL,CAAQ,CAAA;IAET,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAA;IAC5C,MAAM,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAA;IAEtD,MAAM,cAAc,GAAG,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAAA;IACjE,MAAM,SAAS,GAAG,OAAO,CAAC;QACxB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,gBAAgB;KAC/B,CAAC,CAAA;IAEF,OAAO,CACL,oBAAC,UAAU,oBACL,IAAI,IACR,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,SAAS,EACf,YAAY,EAAE,gBAAgB,EAC9B,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EACtC,SAAS,EAAE,cAAc,EACzB,gBAAgB,EAAC,qCAAqC,EACtD,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,IAClB,CACH,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,YAAY,CAAC,YAAY,GAAG;IAC1B,YAAY,EAAE,MAAM;CACrB,CAAA;AAED,YAAY,CAAC,WAAW,GAAG,cAAc,CAAA;AAEzC,eAAe,YAAY,CAAA"}
|
|
@@ -1,4 +1,12 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
declare const
|
|
3
|
-
|
|
1
|
+
import type { IconPositionType } from '../ButtonBase';
|
|
2
|
+
export declare const createRootClassNames: ({ disabled, focused, hovered, active, loading, }: {
|
|
3
|
+
disabled?: boolean | undefined;
|
|
4
|
+
focused?: boolean | undefined;
|
|
5
|
+
hovered?: boolean | undefined;
|
|
6
|
+
active?: boolean | undefined;
|
|
7
|
+
loading?: boolean | undefined;
|
|
8
|
+
}) => string[];
|
|
9
|
+
export declare const createIconClassNames: ({ iconPosition, }: {
|
|
10
|
+
iconPosition?: IconPositionType | undefined;
|
|
11
|
+
}) => string[];
|
|
4
12
|
//# sourceMappingURL=styles.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/ButtonAction/styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/ButtonAction/styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAErD,eAAO,MAAM,oBAAoB;;;;;;cAyChC,CAAA;AAED,eAAO,MAAM,oBAAoB;;MAI7B,MAAM,EAQT,CAAA"}
|
|
@@ -1,56 +1,37 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
'
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
'
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
},
|
|
38
|
-
},
|
|
39
|
-
icon: {
|
|
40
|
-
width: '1rem',
|
|
41
|
-
height: '1rem',
|
|
42
|
-
color: palette.grey.dark,
|
|
43
|
-
},
|
|
44
|
-
iconLeft: {
|
|
45
|
-
marginRight: '0.5rem',
|
|
46
|
-
},
|
|
47
|
-
iconRight: {
|
|
48
|
-
marginLeft: '0.5rem',
|
|
49
|
-
},
|
|
50
|
-
active: {},
|
|
51
|
-
disabled: {},
|
|
52
|
-
hovered: {},
|
|
53
|
-
focused: {},
|
|
54
|
-
loading: {},
|
|
55
|
-
});
|
|
1
|
+
export const createRootClassNames = ({ disabled, focused, hovered, active, loading, }) => {
|
|
2
|
+
const classNames = ['border-none', 'px-0', 'bg-transparent', 'h-[1.5em]'];
|
|
3
|
+
if (disabled) {
|
|
4
|
+
classNames.push('opacity-[.48]');
|
|
5
|
+
}
|
|
6
|
+
else if (loading) {
|
|
7
|
+
classNames.push('no-underline');
|
|
8
|
+
classNames.push('!cursor-default');
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
classNames.push('hover:text-blue-500');
|
|
12
|
+
classNames.push('hover:underline');
|
|
13
|
+
classNames.push('active:text-blue-500');
|
|
14
|
+
classNames.push('active:underline');
|
|
15
|
+
if (hovered || active) {
|
|
16
|
+
classNames.push('text-blue-500');
|
|
17
|
+
classNames.push('underline');
|
|
18
|
+
}
|
|
19
|
+
classNames.push('focus-visible:shadow-[0_0_0_3px_rgba(32,78,207,0.48)]');
|
|
20
|
+
classNames.push('focus-visible:rounded-sm');
|
|
21
|
+
if (focused) {
|
|
22
|
+
classNames.push('shadow-[0_0_0_3px_rgba(32,78,207,0.48)]');
|
|
23
|
+
classNames.push('rounded-sm');
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return classNames;
|
|
27
|
+
};
|
|
28
|
+
export const createIconClassNames = ({ iconPosition, }) => {
|
|
29
|
+
return [
|
|
30
|
+
'w-4',
|
|
31
|
+
'h-4',
|
|
32
|
+
'text-graphite-700',
|
|
33
|
+
iconPosition === 'left' ? 'mr-[0.5rem]' : '',
|
|
34
|
+
iconPosition === 'right' ? 'ml-[0.5rem]' : '',
|
|
35
|
+
];
|
|
36
|
+
};
|
|
56
37
|
//# sourceMappingURL=styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/ButtonAction/styles.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/ButtonAction/styles.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EACnC,QAAQ,EACR,OAAO,EACP,OAAO,EACP,MAAM,EACN,OAAO,GAOR,EAAE,EAAE;IACH,MAAM,UAAU,GAAG,CAAC,aAAa,EAAE,MAAM,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAAA;IAEzE,IAAI,QAAQ,EAAE;QACZ,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;KACjC;SAAM,IAAI,OAAO,EAAE;QAClB,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAC/B,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;KACnC;SAAM;QACL,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;QACtC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;QAClC,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;QACvC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;QAEnC,IAAI,OAAO,IAAI,MAAM,EAAE;YACrB,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;YAChC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;SAC7B;QAED,UAAU,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAA;QACxE,UAAU,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;QAE3C,IAAI,OAAO,EAAE;YACX,UAAU,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAA;YAC1D,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;SAC9B;KACF;IAED,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EACnC,YAAY,GAGb,EAAY,EAAE;IACb,OAAO;QACL,KAAK;QACL,KAAK;QACL,mBAAmB;QACnB,YAAY,KAAK,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;QAC5C,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;KAC9C,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { ReactNode, ReactElement, MouseEvent, ElementType } from 'react';
|
|
2
|
+
import type { StandardProps, ButtonOrAnchorProps, OverridableComponent, TextLabelProps } from '@toptal/picasso-shared';
|
|
3
|
+
export declare type IconPositionType = 'left' | 'right';
|
|
4
|
+
export interface Props extends StandardProps, TextLabelProps, ButtonOrAnchorProps {
|
|
5
|
+
as?: ElementType;
|
|
6
|
+
/** Disables button */
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
/** Content of Button component */
|
|
9
|
+
children?: ReactNode;
|
|
10
|
+
/** ClassName for the content */
|
|
11
|
+
contentClassName?: string;
|
|
12
|
+
/** Add an `<Icon />` along Button's children */
|
|
13
|
+
icon?: ReactElement;
|
|
14
|
+
/** Icon can be positioned on the left or right */
|
|
15
|
+
iconPosition?: IconPositionType;
|
|
16
|
+
/** Shows a loading indicator and disables click events */
|
|
17
|
+
loading?: boolean;
|
|
18
|
+
/** Callback invoked when component is clicked */
|
|
19
|
+
onClick?: (event: MouseEvent<HTMLButtonElement & HTMLAnchorElement>) => void;
|
|
20
|
+
/** HTML Value of Button component */
|
|
21
|
+
value?: string | number;
|
|
22
|
+
/** HTML title of Button component */
|
|
23
|
+
title?: string;
|
|
24
|
+
/** HTML type of Button component */
|
|
25
|
+
type?: 'button' | 'reset' | 'submit';
|
|
26
|
+
}
|
|
27
|
+
export declare const ButtonBase: OverridableComponent<Props>;
|
|
28
|
+
export default ButtonBase;
|
|
29
|
+
//# sourceMappingURL=ButtonBase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ButtonBase.d.ts","sourceRoot":"","sources":["../../../src/ButtonBase/ButtonBase.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,UAAU,EACV,WAAW,EAEZ,MAAM,OAAO,CAAA;AAGd,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACf,MAAM,wBAAwB,CAAA;AAS/B,oBAAY,gBAAgB,GAAG,MAAM,GAAG,OAAO,CAAA;AAE/C,MAAM,WAAW,KACf,SAAQ,aAAa,EACnB,cAAc,EACd,mBAAmB;IACrB,EAAE,CAAC,EAAE,WAAW,CAAA;IAChB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,gCAAgC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,gDAAgD;IAChD,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB,kDAAkD;IAClD,YAAY,CAAC,EAAE,gBAAgB,CAAA;IAC/B,0DAA0D;IAC1D,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,iDAAiD;IACjD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,KAAK,IAAI,CAAA;IAC5E,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,oCAAoC;IACpC,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAA;CACrC;AAyBD,eAAO,MAAM,UAAU,EAAE,oBAAoB,CAAC,KAAK,CAgGjD,CAAA;AAcF,eAAe,UAAU,CAAA"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import React, { forwardRef } from 'react';
|
|
13
|
+
import { twMerge } from 'tailwind-merge';
|
|
14
|
+
import { useTitleCase } from '@toptal/picasso-shared';
|
|
15
|
+
import { Button as MUIButtonBase } from '@mui/base/Button';
|
|
16
|
+
import { Loader } from '@toptal/picasso-loader';
|
|
17
|
+
import { Container } from '@toptal/picasso-container';
|
|
18
|
+
import { noop, toTitleCase } from '@toptal/picasso-utils';
|
|
19
|
+
import { createCoreClassNames } from './styles';
|
|
20
|
+
const getClickHandler = (loading, handler) => loading ? noop : handler;
|
|
21
|
+
const getIcon = ({ icon }) => {
|
|
22
|
+
if (!icon) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
return React.cloneElement(icon, {
|
|
26
|
+
className: twMerge('text-[1.2em] flex-1', icon.props.className),
|
|
27
|
+
key: 'button-icon',
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
31
|
+
const isReactComponent = (component) => {
|
|
32
|
+
return (component &&
|
|
33
|
+
(component.$$typeof === Symbol.for('react.forward_ref') ||
|
|
34
|
+
typeof component === 'function'));
|
|
35
|
+
};
|
|
36
|
+
export const ButtonBase = forwardRef(function ButtonBase(props, ref) {
|
|
37
|
+
var _a, _b;
|
|
38
|
+
const { icon, iconPosition, loading, children, className, contentClassName, style, disabled, onClick, title, value, type, as = 'button', titleCase: propsTitleCase } = props, rest = __rest(props, ["icon", "iconPosition", "loading", "children", "className", "contentClassName", "style", "disabled", "onClick", "title", "value", "type", "as", "titleCase"]);
|
|
39
|
+
let RootElement = as;
|
|
40
|
+
if (isReactComponent(RootElement)) {
|
|
41
|
+
RootElement = forwardRef(
|
|
42
|
+
// We don't need to pass ownerState to the root component
|
|
43
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
44
|
+
(_a, rootRef) => {
|
|
45
|
+
var { ownerState } = _a, restProps = __rest(_a, ["ownerState"]);
|
|
46
|
+
const Root = as;
|
|
47
|
+
return React.createElement(Root, Object.assign({ ref: rootRef }, restProps));
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
const titleCase = useTitleCase(propsTitleCase);
|
|
51
|
+
const finalChildren = [titleCase ? toTitleCase(children) : children];
|
|
52
|
+
/*
|
|
53
|
+
Workaround for the case: <Button as={Link} href='' /> (with empty href!), we have to determine "rootElementName" like below
|
|
54
|
+
Mui/base throws an error when "href" or "to" are empty
|
|
55
|
+
*/
|
|
56
|
+
const rootElementName = as !== 'button' && ('href' in props || 'to' in props) ? 'a' : undefined;
|
|
57
|
+
if (icon) {
|
|
58
|
+
const iconComponent = getIcon({ icon });
|
|
59
|
+
if (iconPosition === 'left') {
|
|
60
|
+
finalChildren.unshift(iconComponent);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
finalChildren.push(iconComponent);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
const finalClassName = twMerge(createCoreClassNames({ disabled }), className);
|
|
67
|
+
return (React.createElement(MUIButtonBase, Object.assign({}, rest, { ref: ref, onClick: getClickHandler(loading, onClick), className: finalClassName, style: style, "aria-disabled": disabled, disabled: disabled, title: title, value: value, type: type, "data-component-type": 'button', tabIndex: ((_a = rest.tabIndex) !== null && _a !== void 0 ? _a : disabled) ? -1 : 0, role: (_b = rest.role) !== null && _b !== void 0 ? _b : 'button', rootElementName: rootElementName, slots: { root: RootElement } }),
|
|
68
|
+
React.createElement(Container, { as: 'span', inline: true, flex: true, direction: 'row', alignItems: 'center', className: contentClassName }, finalChildren),
|
|
69
|
+
loading && (React.createElement(Loader, { variant: 'inherit', className: 'absolute top-1/2 left-1/2 translate-x-[-50%] translate-y-[-50%]', inline: true, size: 'small' }))));
|
|
70
|
+
});
|
|
71
|
+
ButtonBase.defaultProps = {
|
|
72
|
+
as: 'button',
|
|
73
|
+
children: null,
|
|
74
|
+
disabled: false,
|
|
75
|
+
iconPosition: 'left',
|
|
76
|
+
loading: false,
|
|
77
|
+
onClick: noop,
|
|
78
|
+
type: 'button',
|
|
79
|
+
};
|
|
80
|
+
ButtonBase.displayName = 'ButtonBase';
|
|
81
|
+
export default ButtonBase;
|
|
82
|
+
//# sourceMappingURL=ButtonBase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ButtonBase.js","sourceRoot":"","sources":["../../../src/ButtonBase/ButtonBase.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ButtonBase/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAEzC,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAA;AACpD,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AACpD,oBAAY,eAAe,GAAG,KAAK,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ButtonBase/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/ButtonBase/styles.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB;;;;MAO7B,MAAM,EA4BT,CAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export const createCoreClassNames = ({ disabled, loading, }) => {
|
|
2
|
+
const classNames = [
|
|
3
|
+
'text-lg',
|
|
4
|
+
'inline-flex',
|
|
5
|
+
'items-center',
|
|
6
|
+
'justify-center',
|
|
7
|
+
'select-none',
|
|
8
|
+
'appearance-none',
|
|
9
|
+
'm-0',
|
|
10
|
+
'relative',
|
|
11
|
+
'normal-case',
|
|
12
|
+
'align-middle',
|
|
13
|
+
'transition-colors',
|
|
14
|
+
'duration-350',
|
|
15
|
+
'ease-out',
|
|
16
|
+
'shrink-0',
|
|
17
|
+
'outline-none',
|
|
18
|
+
'[&+&]:ml-4',
|
|
19
|
+
];
|
|
20
|
+
if (!disabled && !loading) {
|
|
21
|
+
classNames.push('cursor-pointer');
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
classNames.push('cursor-default');
|
|
25
|
+
classNames.push('pointer-events-none');
|
|
26
|
+
}
|
|
27
|
+
return classNames;
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/ButtonBase/styles.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EACnC,QAAQ,EACR,OAAO,GAKR,EAAY,EAAE;IACb,MAAM,UAAU,GAAG;QACjB,SAAS;QACT,aAAa;QACb,cAAc;QACd,gBAAgB;QAChB,aAAa;QACb,iBAAiB;QACjB,KAAK;QACL,UAAU;QACV,aAAa;QACb,cAAc;QACd,mBAAmB;QACnB,cAAc;QACd,UAAU;QACV,UAAU;QACV,cAAc;QACd,YAAY;KACb,CAAA;IAED,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,EAAE;QACzB,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;KAClC;SAAM;QACL,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QACjC,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;KACvC;IAED,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ButtonCircular.d.ts","sourceRoot":"","sources":["../../../src/ButtonCircular/ButtonCircular.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"ButtonCircular.d.ts","sourceRoot":"","sources":["../../../src/ButtonCircular/ButtonCircular.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAGlE,OAAO,KAAK,EACV,SAAS,EACT,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,wBAAwB,CAAA;AAK/B,oBAAY,WAAW,GAAG,SAAS,GAAG,MAAM,GAAG,aAAa,CAAA;AAE5D,MAAM,WAAW,KAAM,SAAQ,SAAS,EAAE,mBAAmB;IAC3D,+DAA+D;IAC/D,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,iGAAiG;IACjG,EAAE,CAAC,EAAE,WAAW,CAAA;IAChB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,gDAAgD;IAChD,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,iDAAiD;IACjD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,KAAK,IAAI,CAAA;IAC5E,yBAAyB;IACzB,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,eAAO,MAAM,cAAc,EAAE,oBAAoB,CAAC,KAAK,CA4CrD,CAAA;AAQF,eAAe,cAAc,CAAA"}
|
|
@@ -11,33 +11,19 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
11
11
|
};
|
|
12
12
|
import React, { forwardRef } from 'react';
|
|
13
13
|
import cx from 'classnames';
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import { Button } from '../Button';
|
|
17
|
-
import styles from './styles';
|
|
18
|
-
// Using { index: -1 } to inject CSS link to the bottom of the head
|
|
19
|
-
// in order to prevent Button's styles to override ButtonCircular's ones
|
|
20
|
-
// Related Jira issue: https://toptal-core.atlassian.net/browse/FX-1520
|
|
21
|
-
const useStyles = makeStyles(styles, {
|
|
22
|
-
name: 'PicassoButtonCircular',
|
|
23
|
-
index: -1,
|
|
24
|
-
});
|
|
14
|
+
import { ButtonBase } from '../ButtonBase';
|
|
15
|
+
import { createRootClassNames, createVariantClassNames } from './styles';
|
|
25
16
|
export const ButtonCircular = forwardRef(function ButtonCircular(props, ref) {
|
|
26
|
-
const { className, variant = 'primary', active, focused, hovered, disabled, responsive } = props, rest = __rest(props, ["className", "variant", "active", "focused", "hovered", "disabled", "responsive"]);
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}, variantClassName, rootClass);
|
|
37
|
-
return (React.createElement(Button, Object.assign({}, rest, { ref: ref, classes: {
|
|
38
|
-
root: rootClassName,
|
|
39
|
-
focusVisible: focusVisibleClass,
|
|
40
|
-
}, className: className, size: 'small', active: active, hovered: hovered, focused: focused, disabled: disabled })));
|
|
17
|
+
const { className, variant = 'primary', active, focused, hovered, disabled, responsive, loading } = props, rest = __rest(props, ["className", "variant", "active", "focused", "hovered", "disabled", "responsive", "loading"]);
|
|
18
|
+
const variantClassNames = createVariantClassNames(variant, {
|
|
19
|
+
disabled,
|
|
20
|
+
focused,
|
|
21
|
+
hovered,
|
|
22
|
+
active,
|
|
23
|
+
});
|
|
24
|
+
const finalClassName = cx(createRootClassNames({ responsive, active, disabled, focused, hovered }), variantClassNames, className);
|
|
25
|
+
const contentClassName = cx('font-semibold whitespace-nowrap', 'text-button-small', loading ? 'opacity-0' : '');
|
|
26
|
+
return (React.createElement(ButtonBase, Object.assign({}, rest, { ref: ref, loading: loading, className: finalClassName, contentClassName: contentClassName, disabled: disabled })));
|
|
41
27
|
});
|
|
42
28
|
ButtonCircular.defaultProps = {
|
|
43
29
|
variant: 'primary',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ButtonCircular.js","sourceRoot":"","sources":["../../../src/ButtonCircular/ButtonCircular.tsx"],"names":[],"mappings":";;;;;;;;;;;AACA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AACzC,OAAO,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"ButtonCircular.js","sourceRoot":"","sources":["../../../src/ButtonCircular/ButtonCircular.tsx"],"names":[],"mappings":";;;;;;;;;;;AACA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AACzC,OAAO,EAAE,MAAM,YAAY,CAAA;AAO3B,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAA;AA6BxE,MAAM,CAAC,MAAM,cAAc,GAAgC,UAAU,CAGnE,SAAS,cAAc,CAAC,KAAK,EAAE,GAAG;IAClC,MAAM,EACJ,SAAS,EACT,OAAO,GAAG,SAAS,EACnB,MAAM,EACN,OAAO,EACP,OAAO,EACP,QAAQ,EACR,UAAU,EACV,OAAO,KAEL,KAAK,EADJ,IAAI,UACL,KAAK,EAVH,6FAUL,CAAQ,CAAA;IACT,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,OAAO,EAAE;QACzD,QAAQ;QACR,OAAO;QACP,OAAO;QACP,MAAM;KACP,CAAC,CAAA;IAEF,MAAM,cAAc,GAAG,EAAE,CACvB,oBAAoB,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EACxE,iBAAiB,EACjB,SAAS,CACV,CAAA;IAED,MAAM,gBAAgB,GAAG,EAAE,CACzB,iCAAiC,EACjC,mBAAmB,EACnB,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAC3B,CAAA;IAED,OAAO,CACL,oBAAC,UAAU,oBACL,IAAI,IACR,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,cAAc,EACzB,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,EAAE,QAAQ,IAClB,CACH,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,cAAc,CAAC,YAAY,GAAG;IAC5B,OAAO,EAAE,SAAS;CACnB,CAAA;AAED,cAAc,CAAC,WAAW,GAAG,gBAAgB,CAAA;AAE7C,eAAe,cAAc,CAAA"}
|
|
@@ -1,4 +1,16 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
declare const
|
|
3
|
-
|
|
1
|
+
import type { VariantType } from './ButtonCircular';
|
|
2
|
+
export declare const createRootClassNames: ({ responsive, }: {
|
|
3
|
+
disabled?: boolean | undefined;
|
|
4
|
+
focused?: boolean | undefined;
|
|
5
|
+
hovered?: boolean | undefined;
|
|
6
|
+
active?: boolean | undefined;
|
|
7
|
+
loading?: boolean | undefined;
|
|
8
|
+
responsive?: boolean | undefined;
|
|
9
|
+
}) => string[];
|
|
10
|
+
export declare const createVariantClassNames: (variant: VariantType, { disabled, focused, hovered, active, }: {
|
|
11
|
+
disabled?: boolean | undefined;
|
|
12
|
+
focused?: boolean | undefined;
|
|
13
|
+
hovered?: boolean | undefined;
|
|
14
|
+
active?: boolean | undefined;
|
|
15
|
+
}) => string[];
|
|
4
16
|
//# sourceMappingURL=styles.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/ButtonCircular/styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/ButtonCircular/styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnD,eAAO,MAAM,oBAAoB;;;;;;;cAmBhC,CAAA;AAED,eAAO,MAAM,uBAAuB,YACzB,WAAW;;;;;MAYnB,MAAM,EA0FR,CAAA"}
|