@toptal/picasso 26.12.0 → 26.13.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.
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import { BaseProps, SizeType } from '@toptal/picasso-shared';
3
3
  import { AvatarUploadOptions } from './types';
4
+ import { Status } from '../OutlinedInput';
4
5
  export interface Props extends BaseProps {
5
6
  /**
6
7
  * Set accepted file types. See https://github.com/okonet/attr-accept for more information.
@@ -42,8 +43,14 @@ export interface Props extends BaseProps {
42
43
  * (file: File) => FileError | FileError[] | null
43
44
  */
44
45
  validator?: AvatarUploadOptions['validator'];
46
+ /** Indicate `AvatarUpload` is in `error` or `default` state */
47
+ status?: Extract<Status, 'error' | 'default'>;
45
48
  /** Indicate whether the selected file is being uploaded */
46
49
  uploading?: boolean;
50
+ /** Indicate whether component has focused state as default */
51
+ autoFocus?: boolean;
52
+ autoHover?: boolean;
53
+ defaultActive?: boolean;
47
54
  testIds?: {
48
55
  avatar?: string;
49
56
  dropzoneSvg?: string;
@@ -51,5 +58,5 @@ export interface Props extends BaseProps {
51
58
  loader?: string;
52
59
  };
53
60
  }
54
- export declare const AvatarUpload: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLDivElement>>;
61
+ export declare const AvatarUpload: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLElement>>;
55
62
  export default AvatarUpload;
@@ -1,4 +1,4 @@
1
- import React, { forwardRef, useCallback } from 'react';
1
+ import React, { forwardRef, useCallback, useEffect, useImperativeHandle, useState, } from 'react';
2
2
  import { capitalize, makeStyles } from '@material-ui/core';
3
3
  import { useDropzone } from 'react-dropzone';
4
4
  import cx from 'classnames';
@@ -10,10 +10,17 @@ import { Upload24 } from '../Icon';
10
10
  const useStyles = makeStyles(styles, {
11
11
  name: 'PicassoAvatarUpload',
12
12
  });
13
- export const AvatarUpload = forwardRef(function AvatarUpload(props, ref) {
14
- const { uploading, size = 'small', onEdit, 'data-testid': dataTestId, testIds, src, alt,
13
+ export const AvatarUpload = forwardRef(
14
+ // eslint-disable-next-line complexity
15
+ function AvatarUpload(props, ref) {
16
+ const { autoFocus, autoHover, defaultActive, uploading = false, size = 'small', onEdit, status, 'data-testid': dataTestId, testIds, src, alt,
15
17
  // dropzoneOptions
16
18
  accept, minSize, maxSize, disabled, onDrop, onDropAccepted, onDropRejected, validator, } = props;
19
+ const [{ initiallyFocused, initiallyActive, hovered }, setVisualStates] = useState({
20
+ hovered: autoHover,
21
+ initiallyFocused: autoFocus,
22
+ initiallyActive: defaultActive,
23
+ });
17
24
  // callback overrides to return only one file to the parent component
18
25
  const handleDrop = useCallback((acceptedFiles, fileRejections, event) => {
19
26
  var _a, _b;
@@ -38,17 +45,27 @@ export const AvatarUpload = forwardRef(function AvatarUpload(props, ref) {
38
45
  onEdit(event);
39
46
  }
40
47
  };
41
- const showLoader = Boolean(uploading);
42
- const showAvatar = !showLoader && Boolean(src);
43
- const showUploadIcon = !showAvatar && !showLoader;
44
- const showEditIcon = Boolean(onEdit);
45
- // after showing avatar, only way to change the file selection is to use 'onEdit'
46
- const disableDropzoneClick = showAvatar && !showEditIcon;
47
- const disableDropzoneDragAndKeyboard = showAvatar;
48
+ const onMouseEnter = () => {
49
+ setVisualStates(oldState => (Object.assign(Object.assign({}, oldState), { hovered: true })));
50
+ };
51
+ const onMouseLeave = () => {
52
+ setVisualStates(oldState => (Object.assign(Object.assign({}, oldState), { hovered: false })));
53
+ };
54
+ const showAvatar = !uploading && Boolean(src);
55
+ const showUploadIcon = !(showAvatar || uploading);
56
+ // after showing avatar, only way to change the file selection is to use 'onEdit' by clicking
57
+ const disableDropzoneClick = (showAvatar && !onEdit) || uploading;
58
+ const disableKeyboardAndDragging = showAvatar || uploading;
48
59
  const classes = useStyles();
49
- const loadingIcon = showLoader && (React.createElement(Loader, { className: classes.icon, size: 'small', variant: 'inherit', "data-testid": testIds === null || testIds === void 0 ? void 0 : testIds.loader }));
50
- const uploadIcon = showUploadIcon && (React.createElement(Upload24, { className: classes.icon, "data-testid": testIds === null || testIds === void 0 ? void 0 : testIds.uploadIcon }));
51
- const { getInputProps, getRootProps } = useDropzone({
60
+ const loadingIcon = uploading && (React.createElement(Loader, { className: cx(classes.icon, {
61
+ [classes.hovered]: hovered,
62
+ [classes.error]: status === 'error',
63
+ }), size: 'small', variant: 'inherit', "data-testid": testIds === null || testIds === void 0 ? void 0 : testIds.loader }));
64
+ const uploadIcon = showUploadIcon && (React.createElement(Upload24, { className: cx(classes.icon, {
65
+ [classes.hovered]: hovered,
66
+ [classes.error]: status === 'error',
67
+ }), "data-testid": testIds === null || testIds === void 0 ? void 0 : testIds.uploadIcon }));
68
+ const { getInputProps, getRootProps, isDragActive, isFocused, rootRef } = useDropzone({
52
69
  accept,
53
70
  minSize,
54
71
  maxSize,
@@ -59,19 +76,35 @@ export const AvatarUpload = forwardRef(function AvatarUpload(props, ref) {
59
76
  onDropRejected: handleDropRejected,
60
77
  validator,
61
78
  noClick: disableDropzoneClick,
62
- noDrag: disableDropzoneDragAndKeyboard,
63
- noKeyboard: disableDropzoneDragAndKeyboard,
79
+ noDrag: disableKeyboardAndDragging,
80
+ noKeyboard: disableKeyboardAndDragging,
64
81
  });
82
+ useEffect(() => {
83
+ if (initiallyActive && isDragActive) {
84
+ setVisualStates(oldState => (Object.assign(Object.assign({}, oldState), { initiallyActive: false })));
85
+ }
86
+ }, [initiallyActive, isDragActive]);
87
+ useEffect(() => {
88
+ if (initiallyFocused && isFocused) {
89
+ setVisualStates(oldState => (Object.assign(Object.assign({}, oldState), { initiallyFocused: false })));
90
+ }
91
+ }, [initiallyFocused, isFocused]);
92
+ // exposing the rootRef from react-dropzone to the parent component
93
+ useImperativeHandle(ref, () => { var _a; return (_a = rootRef.current) !== null && _a !== void 0 ? _a : {}; }, [
94
+ rootRef,
95
+ ]);
65
96
  return (React.createElement("div", Object.assign({}, getRootProps({
66
- ref,
67
- className: cx(classes.root, classes[`size${capitalize(size)}`]),
97
+ className: cx(classes.root, classes[`size${capitalize(size)}`], {
98
+ [classes.disabled]: disabled,
99
+ [classes.readonlyAvatar]: showAvatar,
100
+ }),
68
101
  'data-testid': dataTestId,
69
- })),
102
+ }), { onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave }),
70
103
  React.createElement("input", Object.assign({}, getInputProps())),
71
- showAvatar ? (React.createElement(Avatar, { size: size, onEdit: showEditIcon ? handleEdit : undefined,
104
+ showAvatar ? (React.createElement(Avatar, { size: size, onEdit: onEdit ? handleEdit : undefined,
72
105
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
73
106
  src: src, alt: alt, "data-testid": testIds === null || testIds === void 0 ? void 0 : testIds.avatar, variant: 'square' })) : (React.createElement(React.Fragment, null,
74
- React.createElement(DropzoneSvg, { size: size, "data-testid": testIds === null || testIds === void 0 ? void 0 : testIds.dropzoneSvg }),
107
+ React.createElement(DropzoneSvg, { disabled: disabled, error: status === 'error', size: size, hovered: hovered, focused: initiallyFocused || isFocused, isDragActive: initiallyActive || isDragActive, "data-testid": testIds === null || testIds === void 0 ? void 0 : testIds.dropzoneSvg }),
75
108
  loadingIcon,
76
109
  uploadIcon))));
77
110
  });
@@ -79,6 +112,7 @@ AvatarUpload.displayName = 'AvatarUpload';
79
112
  AvatarUpload.defaultProps = {
80
113
  size: 'small',
81
114
  disabled: false,
115
+ uploading: false,
82
116
  maxSize: 104857600,
83
117
  minSize: 0,
84
118
  accept: 'image/*',
@@ -1 +1 @@
1
- {"version":3,"file":"AvatarUpload.js","sourceRoot":"","sources":["../../src/AvatarUpload/AvatarUpload.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AvatarUpload.js","sourceRoot":"","sources":["../../src/AvatarUpload/AvatarUpload.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,11 @@
1
1
  import { BaseProps, SizeType } from '@toptal/picasso-shared';
2
2
  export interface Props extends BaseProps {
3
3
  size?: SizeType<'small' | 'large'>;
4
+ isDragActive?: boolean;
5
+ disabled?: boolean;
6
+ error?: boolean;
7
+ focused?: boolean;
8
+ hovered?: boolean;
4
9
  }
5
10
  export declare const DropzoneSvg: {
6
11
  (props: Props): JSX.Element;
@@ -33,15 +33,28 @@ const useStyles = makeStyles(styles, {
33
33
  name: 'PicassoDropzoneSvg',
34
34
  });
35
35
  export const DropzoneSvg = (props) => {
36
- const { size = 'small', 'data-testid': dataTestId } = props;
36
+ const { size = 'small', disabled, error, focused, hovered, isDragActive, 'data-testid': dataTestId, } = props;
37
37
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
38
38
  const shapes = SHAPES[size];
39
39
  const classes = useStyles();
40
40
  return (React.createElement("div", { className: cx(classes.root, classes[`root${capitalize(size)}`]), "data-testid": dataTestId },
41
41
  React.createElement("svg", { className: cx(classes.svg, classes[`svg${capitalize(size)}`]), fill: 'none', xmlns: 'http://www.w3.org/2000/svg' },
42
- React.createElement("path", { className: classes.background, fillRule: 'evenodd', clipRule: 'evenodd', d: shapes.backgroundShape }),
43
- React.createElement("path", { className: classes.outline, fillRule: 'evenodd', clipRule: 'evenodd', d: shapes.outlineShape, strokeOpacity: '.48', strokeWidth: '3', strokeLinejoin: 'round' }),
44
- React.createElement("path", { className: classes.border, fillRule: 'evenodd', clipRule: 'evenodd', d: shapes.bordersShape, strokeDasharray: '3 3' }))));
42
+ React.createElement("path", { className: cx(classes.background, {
43
+ [classes.dragActive]: isDragActive,
44
+ [classes.disabled]: disabled,
45
+ [classes.error]: error,
46
+ [classes.focused]: focused,
47
+ [classes.hovered]: hovered,
48
+ }), fillRule: 'evenodd', clipRule: 'evenodd', d: shapes.backgroundShape }),
49
+ React.createElement("path", { className: cx(classes.outline, {
50
+ [classes.focused]: focused,
51
+ [classes.error]: error,
52
+ }), fillRule: 'evenodd', clipRule: 'evenodd', d: shapes.outlineShape, strokeOpacity: '.48', strokeWidth: '3', strokeLinejoin: 'round' }),
53
+ React.createElement("path", { className: cx(classes.border, {
54
+ [classes.error]: error,
55
+ [classes.focused]: focused,
56
+ [classes.hovered]: hovered,
57
+ }), fillRule: 'evenodd', clipRule: 'evenodd', d: shapes.bordersShape, strokeDasharray: '3 3' }))));
45
58
  };
46
59
  DropzoneSvg.displayName = 'DropzoneSvg';
47
60
  DropzoneSvg.defaultProps = {
@@ -1 +1 @@
1
- {"version":3,"file":"DropzoneSvg.js","sourceRoot":"","sources":["../../../src/AvatarUpload/DropzoneSvg/DropzoneSvg.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAS,MAAM,mBAAmB,CAAA;AAEjE,OAAO,EAAE,MAAM,YAAY,CAAA;AAE3B,OAAO,MAAM,MAAM,UAAU,CAAA;AAC7B,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9E;;GAEG;AACH,MAAM,cAAc,GAAG,EAAE,CAAA;AACzB,MAAM,QAAQ,GAAG;IACf,KAAK,EAAE;QACL,UAAU,EAAE,CAAC,GAAG,cAAc;QAC9B,UAAU,EAAE,CAAC,GAAG,cAAc;KAC/B;IACD,KAAK,EAAE;QACL,UAAU,EAAE,EAAE,GAAG,cAAc;QAC/B,UAAU,EAAE,GAAG,GAAG,cAAc;KACjC;CACO,CAAA;AAEV,MAAM,MAAM,GAAG;IACb,KAAK,EAAE;QACL,eAAe,EAAE,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC;QACnD,YAAY,EAAE,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC7C,YAAY,EAAE,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC;KAC9C;IACD,KAAK,EAAE;QACL,eAAe,EAAE,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC;QACnD,YAAY,EAAE,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC7C,YAAY,EAAE,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC;KAC9C;CACO,CAAA;AAMV,MAAM,SAAS,GAAG,UAAU,CAAQ,MAAM,EAAE;IAC1C,IAAI,EAAE,oBAAoB;CAC3B,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAY,EAAE,EAAE;IAC1C,MAAM,EAAE,IAAI,GAAG,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,KAAK,CAAA;IAE3D,oEAAoE;IACpE,MAAM,MAAM,GAAG,MAAM,CAAC,IAAK,CAAC,CAAA;IAE5B,MAAM,OAAO,GAAG,SAAS,EAAE,CAAA;IAE3B,OAAO,CACL,6BACE,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,iBAClD,UAAU;QAEvB,6BACE,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAC7D,IAAI,EAAC,MAAM,EACX,KAAK,EAAC,4BAA4B;YAElC,8BACE,SAAS,EAAE,OAAO,CAAC,UAAU,EAC7B,QAAQ,EAAC,SAAS,EAClB,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAE,MAAM,CAAC,eAAe,GACzB;YACF,8BACE,SAAS,EAAE,OAAO,CAAC,OAAO,EAC1B,QAAQ,EAAC,SAAS,EAClB,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAE,MAAM,CAAC,YAAY,EACtB,aAAa,EAAC,KAAK,EACnB,WAAW,EAAC,GAAG,EACf,cAAc,EAAC,OAAO,GACtB;YACF,8BACE,SAAS,EAAE,OAAO,CAAC,MAAM,EACzB,QAAQ,EAAC,SAAS,EAClB,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAE,MAAM,CAAC,YAAY,EACtB,eAAe,EAAC,KAAK,GACrB,CACE,CACF,CACP,CAAA;AACH,CAAC,CAAA;AAED,WAAW,CAAC,WAAW,GAAG,aAAa,CAAA;AAEvC,WAAW,CAAC,YAAY,GAAG;IACzB,IAAI,EAAE,OAAO;CACd,CAAA;AAED,eAAe,WAAW,CAAA"}
1
+ {"version":3,"file":"DropzoneSvg.js","sourceRoot":"","sources":["../../../src/AvatarUpload/DropzoneSvg/DropzoneSvg.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  import { Theme } from '@material-ui/core/styles';
2
- declare const _default: ({ palette, transitions }: Theme) => import("@material-ui/styles").StyleRules<{}, "background" | "border" | "outline" | "root" | "svg" | "rootSmall" | "rootLarge" | "svgSmall" | "svgLarge">;
2
+ declare const _default: ({ palette, transitions }: Theme) => import("@material-ui/styles").StyleRules<{}, "background" | "border" | "outline" | "disabled" | "error" | "root" | "svg" | "focused" | "hovered" | "rootSmall" | "rootLarge" | "dragActive" | "svgSmall" | "svgLarge">;
3
3
  export default _default;
@@ -1,40 +1,77 @@
1
1
  import { createStyles } from '@material-ui/core/styles';
2
- export default ({ palette, transitions }) => createStyles({
3
- root: {
4
- position: 'relative',
5
- background: 'transparent',
6
- },
7
- rootSmall: {
8
- width: '80px',
9
- height: '80px',
10
- },
11
- rootLarge: {
12
- width: '160px',
13
- height: '160px',
14
- },
15
- svg: {
16
- margin: '-3px', // to center the svg
17
- },
18
- svgSmall: {
19
- width: '86px',
20
- height: '86px', // 6px for the outline stroke
21
- },
22
- svgLarge: {
23
- width: '166px',
24
- height: '166px', // 6px for the outline stroke
25
- },
26
- background: {
27
- fill: palette.blue.lighter,
28
- transition: `all ${transitions.duration.short}ms ${transitions.easing.easeOut}`,
29
- transitionProperty: 'fill',
30
- },
31
- border: {
32
- stroke: palette.blue.main,
33
- transition: `stroke ${transitions.duration.short}`,
34
- },
35
- outline: {
36
- display: 'none',
37
- stroke: palette.blue.main,
38
- },
39
- });
2
+ import { alpha } from '@toptal/picasso-shared';
3
+ export default ({ palette, transitions }) => {
4
+ const dragActiveColor = alpha(palette.blue.main, 0.24);
5
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
6
+ const hoverBackgroundColor = alpha(palette.blue.lighter, 0.84);
7
+ const hoverBorderColor = alpha(palette.blue.main, 0.84);
8
+ return createStyles({
9
+ root: {
10
+ pointerEvents: 'unset',
11
+ position: 'relative',
12
+ background: 'transparent',
13
+ },
14
+ rootSmall: {
15
+ width: '80px',
16
+ height: '80px',
17
+ },
18
+ rootLarge: {
19
+ width: '160px',
20
+ height: '160px',
21
+ },
22
+ svg: {
23
+ margin: '-3px', // to center the svg
24
+ },
25
+ svgSmall: {
26
+ width: '86px',
27
+ height: '86px', // 6px for the outline stroke
28
+ },
29
+ svgLarge: {
30
+ width: '166px',
31
+ height: '166px', // 6px for the outline stroke
32
+ },
33
+ background: {
34
+ fill: palette.blue.lighter,
35
+ transition: `all ${transitions.duration.short}ms ${transitions.easing.easeOut}`,
36
+ transitionProperty: 'fill',
37
+ '&$hovered': {
38
+ fill: hoverBackgroundColor,
39
+ },
40
+ '&$dragActive,&:active': {
41
+ fill: dragActiveColor,
42
+ },
43
+ '&$disabled': {
44
+ fill: palette.grey.lighter,
45
+ '&$hovered': {
46
+ fill: palette.grey.light2,
47
+ },
48
+ },
49
+ },
50
+ border: {
51
+ stroke: palette.blue.main,
52
+ transition: `stroke ${transitions.duration.short}`,
53
+ '&$hovered': {
54
+ stroke: hoverBorderColor,
55
+ },
56
+ '&$error': {
57
+ stroke: palette.red.main,
58
+ },
59
+ },
60
+ outline: {
61
+ display: 'none',
62
+ stroke: palette.blue.main,
63
+ '&$focused:not($dragActive)': {
64
+ display: 'initial',
65
+ },
66
+ '&$error': {
67
+ stroke: palette.red.main,
68
+ },
69
+ },
70
+ dragActive: {},
71
+ disabled: {},
72
+ error: {},
73
+ focused: {},
74
+ hovered: {},
75
+ });
76
+ };
40
77
  //# sourceMappingURL=styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/AvatarUpload/DropzoneSvg/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAS,MAAM,0BAA0B,CAAA;AAE9D,eAAe,CAAC,EAAE,OAAO,EAAE,WAAW,EAAS,EAAE,EAAE,CACjD,YAAY,CAAC;IACX,IAAI,EAAE;QACJ,QAAQ,EAAE,UAAU;QACpB,UAAU,EAAE,aAAa;KAC1B;IACD,SAAS,EAAE;QACT,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,MAAM;KACf;IACD,SAAS,EAAE;QACT,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,OAAO;KAChB;IAED,GAAG,EAAE;QACH,MAAM,EAAE,MAAM,EAAE,oBAAoB;KACrC;IACD,QAAQ,EAAE;QACR,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,MAAM,EAAE,6BAA6B;KAC9C;IACD,QAAQ,EAAE;QACR,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,OAAO,EAAE,6BAA6B;KAC/C;IAED,UAAU,EAAE;QACV,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO;QAC1B,UAAU,EAAE,OAAO,WAAW,CAAC,QAAQ,CAAC,KAAK,MAAM,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE;QAC/E,kBAAkB,EAAE,MAAM;KAC3B;IACD,MAAM,EAAE;QACN,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI;QACzB,UAAU,EAAE,UAAU,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE;KACnD;IACD,OAAO,EAAE;QACP,OAAO,EAAE,MAAM;QACf,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI;KAC1B;CACF,CAAC,CAAA"}
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/AvatarUpload/DropzoneSvg/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAS,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAE9C,eAAe,CAAC,EAAE,OAAO,EAAE,WAAW,EAAS,EAAE,EAAE;IACjD,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IACtD,oEAAoE;IACpE,MAAM,oBAAoB,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAQ,EAAE,IAAI,CAAC,CAAA;IAC/D,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAEvD,OAAO,YAAY,CAAC;QAClB,IAAI,EAAE;YACJ,aAAa,EAAE,OAAO;YACtB,QAAQ,EAAE,UAAU;YACpB,UAAU,EAAE,aAAa;SAC1B;QACD,SAAS,EAAE;YACT,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,MAAM;SACf;QACD,SAAS,EAAE;YACT,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,OAAO;SAChB;QAED,GAAG,EAAE;YACH,MAAM,EAAE,MAAM,EAAE,oBAAoB;SACrC;QACD,QAAQ,EAAE;YACR,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,MAAM,EAAE,6BAA6B;SAC9C;QACD,QAAQ,EAAE;YACR,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,OAAO,EAAE,6BAA6B;SAC/C;QAED,UAAU,EAAE;YACV,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO;YAC1B,UAAU,EAAE,OAAO,WAAW,CAAC,QAAQ,CAAC,KAAK,MAAM,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE;YAC/E,kBAAkB,EAAE,MAAM;YAE1B,WAAW,EAAE;gBACX,IAAI,EAAE,oBAAoB;aAC3B;YAED,uBAAuB,EAAE;gBACvB,IAAI,EAAE,eAAe;aACtB;YAED,YAAY,EAAE;gBACZ,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO;gBAC1B,WAAW,EAAE;oBACX,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM;iBAC1B;aACF;SACF;QACD,MAAM,EAAE;YACN,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI;YACzB,UAAU,EAAE,UAAU,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE;YAElD,WAAW,EAAE;gBACX,MAAM,EAAE,gBAAgB;aACzB;YAED,SAAS,EAAE;gBACT,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI;aACzB;SACF;QACD,OAAO,EAAE;YACP,OAAO,EAAE,MAAM;YACf,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI;YAEzB,4BAA4B,EAAE;gBAC5B,OAAO,EAAE,SAAS;aACnB;YAED,SAAS,EAAE;gBACT,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI;aACzB;SACF;QAED,UAAU,EAAE,EAAE;QACd,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE,EAAE;QACT,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,EAAE;KACZ,CAAC,CAAA;AACJ,CAAC,CAAA"}
@@ -1,3 +1,3 @@
1
1
  import { Theme } from '@material-ui/core/styles';
2
- declare const _default: ({ palette }: Theme) => import("@material-ui/styles").StyleRules<{}, "icon" | "root" | "sizeSmall" | "sizeLarge">;
2
+ declare const _default: ({ palette }: Theme) => import("@material-ui/styles").StyleRules<{}, "icon" | "disabled" | "error" | "root" | "sizeSmall" | "sizeLarge" | "hovered" | "readonlyAvatar">;
3
3
  export default _default;
@@ -1,24 +1,49 @@
1
1
  import { createStyles } from '@material-ui/core/styles';
2
- export default ({ palette }) => createStyles({
3
- root: {
4
- position: 'relative',
5
- display: 'flex',
6
- justifyContent: 'center',
7
- alignItems: 'center',
8
- color: palette.blue.main,
9
- outline: 'none',
10
- },
11
- sizeSmall: {
12
- width: '5rem',
13
- height: '5rem',
14
- },
15
- sizeLarge: {
16
- width: '10rem',
17
- height: '10rem',
18
- },
19
- icon: {
20
- position: 'absolute',
21
- cursor: 'pointer',
22
- },
23
- });
2
+ import { alpha } from '@toptal/picasso-shared';
3
+ export default ({ palette }) => {
4
+ const iconHoverColor = alpha(palette.blue.main, 0.84);
5
+ const iconHoverErrorColor = alpha(palette.red.main, 0.84);
6
+ return createStyles({
7
+ root: {
8
+ position: 'relative',
9
+ display: 'flex',
10
+ justifyContent: 'center',
11
+ alignItems: 'center',
12
+ color: palette.blue.main,
13
+ outline: 'none',
14
+ cursor: 'pointer',
15
+ '&$disabled': {
16
+ cursor: 'no-drop',
17
+ },
18
+ '&$readonlyAvatar': {
19
+ cursor: 'default',
20
+ },
21
+ },
22
+ sizeSmall: {
23
+ width: '5rem',
24
+ height: '5rem',
25
+ },
26
+ sizeLarge: {
27
+ width: '10rem',
28
+ height: '10rem',
29
+ },
30
+ icon: {
31
+ position: 'absolute',
32
+ pointerEvents: 'none',
33
+ '&$error': {
34
+ color: palette.red.main,
35
+ },
36
+ '&$hovered': {
37
+ color: iconHoverColor,
38
+ '&$error': {
39
+ color: iconHoverErrorColor,
40
+ },
41
+ },
42
+ },
43
+ error: {},
44
+ disabled: {},
45
+ hovered: {},
46
+ readonlyAvatar: {},
47
+ });
48
+ };
24
49
  //# sourceMappingURL=styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/AvatarUpload/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAS,MAAM,0BAA0B,CAAA;AAE9D,eAAe,CAAC,EAAE,OAAO,EAAS,EAAE,EAAE,CACpC,YAAY,CAAC;IACX,IAAI,EAAE;QACJ,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,MAAM;QACf,cAAc,EAAE,QAAQ;QACxB,UAAU,EAAE,QAAQ;QACpB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI;QACxB,OAAO,EAAE,MAAM;KAChB;IAED,SAAS,EAAE;QACT,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,MAAM;KACf;IAED,SAAS,EAAE;QACT,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,OAAO;KAChB;IAED,IAAI,EAAE;QACJ,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,SAAS;KAClB;CACF,CAAC,CAAA"}
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/AvatarUpload/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAS,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAE9C,eAAe,CAAC,EAAE,OAAO,EAAS,EAAE,EAAE;IACpC,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IACrD,MAAM,mBAAmB,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAEzD,OAAO,YAAY,CAAC;QAClB,IAAI,EAAE;YACJ,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,MAAM;YACf,cAAc,EAAE,QAAQ;YACxB,UAAU,EAAE,QAAQ;YACpB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI;YACxB,OAAO,EAAE,MAAM;YACf,MAAM,EAAE,SAAS;YAEjB,YAAY,EAAE;gBACZ,MAAM,EAAE,SAAS;aAClB;YAED,kBAAkB,EAAE;gBAClB,MAAM,EAAE,SAAS;aAClB;SACF;QAED,SAAS,EAAE;YACT,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,MAAM;SACf;QAED,SAAS,EAAE;YACT,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,OAAO;SAChB;QAED,IAAI,EAAE;YACJ,QAAQ,EAAE,UAAU;YACpB,aAAa,EAAE,MAAM;YAErB,SAAS,EAAE;gBACT,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI;aACxB;YAED,WAAW,EAAE;gBACX,KAAK,EAAE,cAAc;gBAErB,SAAS,EAAE;oBACT,KAAK,EAAE,mBAAmB;iBAC3B;aACF;SACF;QAED,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,EAAE;QACX,cAAc,EAAE,EAAE;KACnB,CAAC,CAAA;AACJ,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@toptal/picasso",
3
- "version": "26.12.0",
3
+ "version": "26.13.0",
4
4
  "description": "Toptal UI components library",
5
5
  "publishConfig": {
6
6
  "access": "public",