@toptal/picasso-avatar 2.0.7-alpha-fx-null-fix-button-e862ee8b7.0 → 3.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.
Files changed (80) hide show
  1. package/dist-package/src/Avatar/Avatar.d.ts.map +1 -1
  2. package/dist-package/src/Avatar/Avatar.js +2 -7
  3. package/dist-package/src/Avatar/Avatar.js.map +1 -1
  4. package/dist-package/src/Avatar/AvatarEditContainer/AvatarEditContainer.d.ts +2 -1
  5. package/dist-package/src/Avatar/AvatarEditContainer/AvatarEditContainer.d.ts.map +1 -1
  6. package/dist-package/src/Avatar/AvatarEditContainer/AvatarEditContainer.js +7 -14
  7. package/dist-package/src/Avatar/AvatarEditContainer/AvatarEditContainer.js.map +1 -1
  8. package/dist-package/src/Avatar/AvatarEditContainer/styles.d.ts +3 -3
  9. package/dist-package/src/Avatar/AvatarEditContainer/styles.d.ts.map +1 -1
  10. package/dist-package/src/Avatar/AvatarEditContainer/styles.js +13 -78
  11. package/dist-package/src/Avatar/AvatarEditContainer/styles.js.map +1 -1
  12. package/dist-package/src/Avatar/AvatarWrapper/AvatarWrapper.d.ts +4 -2
  13. package/dist-package/src/Avatar/AvatarWrapper/AvatarWrapper.d.ts.map +1 -1
  14. package/dist-package/src/Avatar/AvatarWrapper/AvatarWrapper.js +3 -10
  15. package/dist-package/src/Avatar/AvatarWrapper/AvatarWrapper.js.map +1 -1
  16. package/dist-package/src/Avatar/AvatarWrapper/styles.d.ts +3 -6
  17. package/dist-package/src/Avatar/AvatarWrapper/styles.d.ts.map +1 -1
  18. package/dist-package/src/Avatar/AvatarWrapper/styles.js +22 -50
  19. package/dist-package/src/Avatar/AvatarWrapper/styles.js.map +1 -1
  20. package/dist-package/src/Avatar/IconAvatar/IconAvatar.d.ts +1 -0
  21. package/dist-package/src/Avatar/IconAvatar/IconAvatar.d.ts.map +1 -1
  22. package/dist-package/src/Avatar/IconAvatar/IconAvatar.js +3 -8
  23. package/dist-package/src/Avatar/IconAvatar/IconAvatar.js.map +1 -1
  24. package/dist-package/src/Avatar/IconAvatar/styles.d.ts +2 -2
  25. package/dist-package/src/Avatar/IconAvatar/styles.d.ts.map +1 -1
  26. package/dist-package/src/Avatar/IconAvatar/styles.js +7 -14
  27. package/dist-package/src/Avatar/IconAvatar/styles.js.map +1 -1
  28. package/dist-package/src/Avatar/ImageAvatar/ImageAvatar.d.ts +2 -1
  29. package/dist-package/src/Avatar/ImageAvatar/ImageAvatar.d.ts.map +1 -1
  30. package/dist-package/src/Avatar/ImageAvatar/ImageAvatar.js +6 -12
  31. package/dist-package/src/Avatar/ImageAvatar/ImageAvatar.js.map +1 -1
  32. package/dist-package/src/Avatar/TextAvatar/TextAvatar.d.ts +4 -2
  33. package/dist-package/src/Avatar/TextAvatar/TextAvatar.d.ts.map +1 -1
  34. package/dist-package/src/Avatar/TextAvatar/TextAvatar.js +4 -19
  35. package/dist-package/src/Avatar/TextAvatar/TextAvatar.js.map +1 -1
  36. package/dist-package/src/Avatar/TextAvatar/styles.d.ts +3 -2
  37. package/dist-package/src/Avatar/TextAvatar/styles.d.ts.map +1 -1
  38. package/dist-package/src/Avatar/TextAvatar/styles.js +11 -21
  39. package/dist-package/src/Avatar/TextAvatar/styles.js.map +1 -1
  40. package/dist-package/src/AvatarDropzoneSvg/AvatarDropzoneSvg.d.ts +1 -0
  41. package/dist-package/src/AvatarDropzoneSvg/AvatarDropzoneSvg.d.ts.map +1 -1
  42. package/dist-package/src/AvatarDropzoneSvg/AvatarDropzoneSvg.js +7 -25
  43. package/dist-package/src/AvatarDropzoneSvg/AvatarDropzoneSvg.js.map +1 -1
  44. package/dist-package/src/AvatarDropzoneSvg/styles.d.ts +5 -3
  45. package/dist-package/src/AvatarDropzoneSvg/styles.d.ts.map +1 -1
  46. package/dist-package/src/AvatarDropzoneSvg/styles.js +34 -99
  47. package/dist-package/src/AvatarDropzoneSvg/styles.js.map +1 -1
  48. package/dist-package/src/AvatarGroup/AvatarGroup.d.ts.map +1 -1
  49. package/dist-package/src/AvatarGroup/AvatarGroup.js +2 -8
  50. package/dist-package/src/AvatarGroup/AvatarGroup.js.map +1 -1
  51. package/package.json +13 -14
  52. package/src/Avatar/Avatar.tsx +3 -10
  53. package/src/Avatar/AvatarEditContainer/AvatarEditContainer.tsx +17 -18
  54. package/src/Avatar/AvatarEditContainer/styles.ts +15 -86
  55. package/src/Avatar/AvatarWrapper/AvatarWrapper.tsx +13 -19
  56. package/src/Avatar/AvatarWrapper/styles.ts +28 -80
  57. package/src/Avatar/IconAvatar/IconAvatar.tsx +9 -11
  58. package/src/Avatar/IconAvatar/styles.ts +8 -15
  59. package/src/Avatar/ImageAvatar/ImageAvatar.tsx +14 -18
  60. package/src/Avatar/TextAvatar/TextAvatar.tsx +29 -35
  61. package/src/Avatar/TextAvatar/styles.ts +12 -23
  62. package/src/AvatarDropzoneSvg/AvatarDropzoneSvg.tsx +28 -28
  63. package/src/AvatarDropzoneSvg/styles.ts +40 -104
  64. package/src/AvatarGroup/AvatarGroup.tsx +2 -11
  65. package/LICENSE +0 -20
  66. package/dist-package/src/Avatar/ImageAvatar/styles.d.ts +0 -3
  67. package/dist-package/src/Avatar/ImageAvatar/styles.d.ts.map +0 -1
  68. package/dist-package/src/Avatar/ImageAvatar/styles.js +0 -25
  69. package/dist-package/src/Avatar/ImageAvatar/styles.js.map +0 -1
  70. package/dist-package/src/Avatar/styles.d.ts +0 -3
  71. package/dist-package/src/Avatar/styles.d.ts.map +0 -1
  72. package/dist-package/src/Avatar/styles.js +0 -9
  73. package/dist-package/src/Avatar/styles.js.map +0 -1
  74. package/dist-package/src/AvatarGroup/styles.d.ts +0 -3
  75. package/dist-package/src/AvatarGroup/styles.d.ts.map +0 -1
  76. package/dist-package/src/AvatarGroup/styles.js +0 -8
  77. package/dist-package/src/AvatarGroup/styles.js.map +0 -1
  78. package/src/Avatar/ImageAvatar/styles.ts +0 -26
  79. package/src/Avatar/styles.ts +0 -9
  80. package/src/AvatarGroup/styles.ts +0 -9
@@ -1,24 +1,9 @@
1
1
  import React from 'react';
2
- import cx from 'classnames';
3
- import { makeStyles } from '@material-ui/core/styles';
4
2
  import { Typography } from '@toptal/picasso-typography';
5
- import styles from './styles';
6
- const useStyles = makeStyles(styles, {
7
- name: 'PicassoTextAvatar',
8
- });
9
- const TextAvatar = ({ children, className, style, 'data-testid': dataTestID, fontSize, size, 'data-private': dataPrivate, }) => {
10
- const classes = useStyles();
11
- const SIZE_TO_FONT_SIZE = {
12
- small: '!text-[0.666666667em]',
13
- large: '!text-[1em]',
14
- };
15
- return (React.createElement("div", {
16
- /* eslint-disable-next-line @typescript-eslint/no-non-null-assertion */
17
- className: cx(classes.root, className, classes[size]), style: style, "data-private": dataPrivate },
18
- React.createElement(Typography, { "data-testid": dataTestID,
19
- /* eslint-disable-next-line @typescript-eslint/no-non-null-assertion */
20
- className: SIZE_TO_FONT_SIZE[fontSize], invert: true }, children)));
21
- };
3
+ import { twJoin, twMerge } from '@toptal/picasso-tailwind-merge';
4
+ import { containerTextClassBySize, typographyTextClassBySize } from './styles';
5
+ const TextAvatar = ({ children, className, style, 'data-testid': dataTestID, fontSize, size, 'data-private': dataPrivate, }) => (React.createElement("div", { className: twMerge('uppercase absolute top-1/2 left-1/2 [transform:translate(-50%,-50%)]', containerTextClassBySize[size], className), style: style, "data-private": dataPrivate },
6
+ React.createElement(Typography, { "data-testid": dataTestID, className: twJoin(fontSize ? typographyTextClassBySize[fontSize] : '', 'leading-[1.5em]'), invert: true }, children)));
22
7
  TextAvatar.defaultProps = {
23
8
  size: 'large',
24
9
  };
@@ -1 +1 @@
1
- {"version":3,"file":"TextAvatar.js","sourceRoot":"","sources":["../../../../src/Avatar/TextAvatar/TextAvatar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,MAAM,YAAY,CAAA;AAE3B,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAErD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAEvD,OAAO,MAAM,MAAM,UAAU,CAAA;AAQ7B,MAAM,SAAS,GAAG,UAAU,CAAQ,MAAM,EAAE;IAC1C,IAAI,EAAE,mBAAmB;CAC1B,CAAC,CAAA;AAEF,MAAM,UAAU,GAAG,CAAC,EAClB,QAAQ,EACR,SAAS,EACT,KAAK,EACL,aAAa,EAAE,UAAU,EACzB,QAAQ,EACR,IAAI,EACJ,cAAc,EAAE,WAAW,GACrB,EAAE,EAAE;IACV,MAAM,OAAO,GAAG,SAAS,EAAE,CAAA;IAE3B,MAAM,iBAAiB,GAAG;QACxB,KAAK,EAAE,uBAAuB;QAC9B,KAAK,EAAE,aAAa;KACrB,CAAA;IAED,OAAO,CACL;QACE,uEAAuE;QACvE,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,IAAK,CAAC,CAAC,EACtD,KAAK,EAAE,KAAK,kBACE,WAAW;QAEzB,oBAAC,UAAU,mBACI,UAAU;YACvB,uEAAuE;YACvE,SAAS,EAAE,iBAAiB,CAAC,QAAS,CAAC,EACvC,MAAM,UAEL,QAAQ,CACE,CACT,CACP,CAAA;AACH,CAAC,CAAA;AAED,UAAU,CAAC,YAAY,GAAG;IACxB,IAAI,EAAE,OAAO;CACd,CAAA;AAED,eAAe,UAAU,CAAA"}
1
+ {"version":3,"file":"TextAvatar.js","sourceRoot":"","sources":["../../../../src/Avatar/TextAvatar/TextAvatar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAEhE,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAA;AAY9E,MAAM,UAAU,GAAG,CAAC,EAClB,QAAQ,EACR,SAAS,EACT,KAAK,EACL,aAAa,EAAE,UAAU,EACzB,QAAQ,EACR,IAAI,EACJ,cAAc,EAAE,WAAW,GACrB,EAAE,EAAE,CAAC,CACX,6BACE,SAAS,EAAE,OAAO,CAChB,sEAAsE,EACtE,wBAAwB,CAAC,IAAI,CAAC,EAC9B,SAAS,CACV,EACD,KAAK,EAAE,KAAK,kBACE,WAAW;IAEzB,oBAAC,UAAU,mBACI,UAAU,EACvB,SAAS,EAAE,MAAM,CACf,QAAQ,CAAC,CAAC,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EACnD,iBAAiB,CAClB,EACD,MAAM,UAEL,QAAQ,CACE,CACT,CACP,CAAA;AAED,UAAU,CAAC,YAAY,GAAG;IACxB,IAAI,EAAE,OAAO;CACd,CAAA;AAED,eAAe,UAAU,CAAA"}
@@ -1,3 +1,4 @@
1
- declare const _default: () => import("@material-ui/styles").StyleRules<{}, "medium" | "large" | "small" | "xxsmall" | "xsmall" | "root" | "smallFont" | "largeFont">;
2
- export default _default;
1
+ import type { FontSize, Size } from './TextAvatar';
2
+ export declare const containerTextClassBySize: Record<Size, string>;
3
+ export declare const typographyTextClassBySize: Record<FontSize, string>;
3
4
  //# sourceMappingURL=styles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../src/Avatar/TextAvatar/styles.ts"],"names":[],"mappings":";AAEA,wBAsBI"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../src/Avatar/TextAvatar/styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAElD,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAMzD,CAAA;AAED,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAG9D,CAAA"}
@@ -1,22 +1,12 @@
1
- import { createStyles } from '@material-ui/core/styles';
2
- export default () => createStyles({
3
- root: {
4
- textTransform: 'uppercase',
5
- position: 'absolute',
6
- top: '50%',
7
- left: '50%',
8
- transform: 'translate(-50%, -50%)',
9
- },
10
- xxsmall: { fontSize: '1em' },
11
- xsmall: { fontSize: '1em' },
12
- small: { fontSize: '2em' },
13
- medium: { fontSize: '3em' },
14
- large: { fontSize: '5em' },
15
- smallFont: {
16
- fontSize: '0.666666667em',
17
- },
18
- largeFont: {
19
- fontSize: '1em',
20
- },
21
- });
1
+ export const containerTextClassBySize = {
2
+ xxsmall: 'text-[1em]',
3
+ xsmall: 'text-[1em]',
4
+ small: 'text-[2em]',
5
+ medium: 'text-[3em]',
6
+ large: 'text-[5em]',
7
+ };
8
+ export const typographyTextClassBySize = {
9
+ small: 'text-[0.666666667em]',
10
+ large: 'text-[1em]',
11
+ };
22
12
  //# sourceMappingURL=styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../src/Avatar/TextAvatar/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAEvD,eAAe,GAAG,EAAE,CAClB,YAAY,CAAC;IACX,IAAI,EAAE;QACJ,aAAa,EAAE,WAAW;QAC1B,QAAQ,EAAE,UAAU;QACpB,GAAG,EAAE,KAAK;QACV,IAAI,EAAE,KAAK;QACX,SAAS,EAAE,uBAAuB;KACnC;IAED,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC5B,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC3B,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC1B,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC3B,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;IAE1B,SAAS,EAAE;QACT,QAAQ,EAAE,eAAe;KAC1B;IACD,SAAS,EAAE;QACT,QAAQ,EAAE,KAAK;KAChB;CACF,CAAC,CAAA"}
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../src/Avatar/TextAvatar/styles.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,wBAAwB,GAAyB;IAC5D,OAAO,EAAE,YAAY;IACrB,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,YAAY;CACpB,CAAA;AAED,MAAM,CAAC,MAAM,yBAAyB,GAA6B;IACjE,KAAK,EAAE,sBAAsB;IAC7B,KAAK,EAAE,YAAY;CACpB,CAAA"}
@@ -27,6 +27,7 @@ export declare const AVATAR_DROPZONE_SVG_SHAPES: {
27
27
  borders: string;
28
28
  };
29
29
  };
30
+ export declare type Size = SizeType<'xxsmall' | 'xsmall' | 'small' | 'medium' | 'large'>;
30
31
  export interface Props extends BaseProps {
31
32
  size?: SizeType<'xxsmall' | 'xsmall' | 'small' | 'medium' | 'large'>;
32
33
  isDragActive?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"AvatarDropzoneSvg.d.ts","sourceRoot":"","sources":["../../../src/AvatarDropzoneSvg/AvatarDropzoneSvg.tsx"],"names":[],"mappings":";AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAkCjE,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;CAM7B,CAAA;AAEV,MAAM,WAAW,KAAM,SAAQ,SAAS;IACtC,IAAI,CAAC,EAAE,QAAQ,CAAC,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC,CAAA;IACpE,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAMD,eAAO,MAAM,WAAW;YAAW,KAAK;;;;;CAgEvC,CAAA;AAQD,eAAe,WAAW,CAAA"}
1
+ {"version":3,"file":"AvatarDropzoneSvg.d.ts","sourceRoot":"","sources":["../../../src/AvatarDropzoneSvg/AvatarDropzoneSvg.tsx"],"names":[],"mappings":";AACA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAuCjE,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;CAM7B,CAAA;AAEV,oBAAY,IAAI,GAAG,QAAQ,CAAC,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC,CAAA;AAEhF,MAAM,WAAW,KAAM,SAAQ,SAAS;IACtC,IAAI,CAAC,EAAE,QAAQ,CAAC,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC,CAAA;IACpE,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,eAAO,MAAM,WAAW;YAAW,KAAK;;;;;CA+DvC,CAAA;AAQD,eAAe,WAAW,CAAA"}
@@ -1,7 +1,6 @@
1
1
  import React from 'react';
2
- import { capitalize, makeStyles } from '@material-ui/core';
3
- import cx from 'classnames';
4
- import styles from './styles';
2
+ import { twJoin } from '@toptal/picasso-tailwind-merge';
3
+ import { getBackgroundFillClass, getBordersStrokeClass, rootClassBySize, svgClassBySize, } from './styles';
5
4
  import { getShapes } from './utils';
6
5
  /**
7
6
  * For measuring, pixel values are used because SVG's "d" attribute works with percentages and pixels only
@@ -36,32 +35,15 @@ export const AVATAR_DROPZONE_SVG_SHAPES = {
36
35
  medium: getShapes(SETTINGS.medium),
37
36
  large: getShapes(SETTINGS.large),
38
37
  };
39
- const useStyles = makeStyles(styles, {
40
- name: 'PicassoDropzoneSvg',
41
- });
42
38
  export const DropzoneSvg = (props) => {
43
39
  const { size = 'small', disabled, error, focused, hovered, isDragActive, 'data-testid': dataTestId, } = props;
44
40
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
45
41
  const shapes = AVATAR_DROPZONE_SVG_SHAPES[size];
46
- const classes = useStyles();
47
- return (React.createElement("div", { className: cx(classes.root, classes[`root${capitalize(size)}`]), "data-testid": dataTestId },
48
- React.createElement("svg", { className: cx(classes.svg, classes[`svg${capitalize(size)}`]), fill: 'none', xmlns: 'http://www.w3.org/2000/svg' },
49
- React.createElement("path", { className: cx(classes.background, {
50
- [classes.dragActive]: isDragActive,
51
- [classes.disabled]: disabled,
52
- [classes.error]: error,
53
- [classes.focused]: focused,
54
- [classes.hovered]: hovered,
55
- }), fillRule: 'evenodd', clipRule: 'evenodd', d: shapes.background }),
56
- React.createElement("path", { className: cx(classes.outline, {
57
- [classes.focused]: focused,
58
- [classes.error]: error,
59
- }), fillRule: 'evenodd', clipRule: 'evenodd', d: shapes.outline, strokeOpacity: '.48', strokeWidth: '3', strokeLinejoin: 'round' }),
60
- React.createElement("path", { className: cx(classes.border, {
61
- [classes.error]: error,
62
- [classes.focused]: focused,
63
- [classes.hovered]: hovered,
64
- }), fillRule: 'evenodd', clipRule: 'evenodd', d: shapes.borders, strokeDasharray: '3 3' }))));
42
+ return (React.createElement("div", { className: twJoin('[pointer-events:unset] relative bg-transparent', rootClassBySize[size]), "data-testid": dataTestId },
43
+ React.createElement("svg", { className: twJoin('m-[-3px]', svgClassBySize[size]), fill: 'none', xmlns: 'http://www.w3.org/2000/svg' },
44
+ React.createElement("path", { className: twJoin('transition-colors duration-350 ease-out', 'active:fill-blue-500/[0.24]', getBackgroundFillClass({ hovered, isDragActive, disabled })), fillRule: 'evenodd', clipRule: 'evenodd', d: shapes.background }),
45
+ React.createElement("path", { className: twJoin('hidden', focused && !isDragActive && '[display:initial]', error ? 'stroke-red-500' : 'stroke-blue-500'), fillRule: 'evenodd', clipRule: 'evenodd', d: shapes.outline, strokeOpacity: '.48', strokeWidth: '3', strokeLinejoin: 'round' }),
46
+ React.createElement("path", { className: twJoin('transition-[stroke] duration-350', getBordersStrokeClass({ hovered, error })), fillRule: 'evenodd', clipRule: 'evenodd', d: shapes.borders, strokeDasharray: '3 3' }))));
65
47
  };
66
48
  DropzoneSvg.displayName = 'DropzoneSvg';
67
49
  DropzoneSvg.defaultProps = {
@@ -1 +1 @@
1
- {"version":3,"file":"AvatarDropzoneSvg.js","sourceRoot":"","sources":["../../../src/AvatarDropzoneSvg/AvatarDropzoneSvg.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE1D,OAAO,EAAE,MAAM,YAAY,CAAA;AAE3B,OAAO,MAAM,MAAM,UAAU,CAAA;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAEnC;;GAEG;AACH,MAAM,cAAc,GAAG,EAAE,CAAA;AAEzB,MAAM,QAAQ,GAAG;IACf,OAAO,EAAE;QACP,UAAU,EAAE,CAAC,GAAG,cAAc;QAC9B,UAAU,EAAE,GAAG,GAAG,cAAc;KACjC;IACD,MAAM,EAAE;QACN,UAAU,EAAE,GAAG,GAAG,cAAc;QAChC,UAAU,EAAE,GAAG,GAAG,cAAc;KACjC;IACD,KAAK,EAAE;QACL,UAAU,EAAE,CAAC,GAAG,cAAc;QAC9B,UAAU,EAAE,CAAC,GAAG,cAAc;KAC/B;IACD,MAAM,EAAE;QACN,UAAU,EAAE,GAAG,GAAG,cAAc;QAChC,UAAU,EAAE,GAAG,GAAG,cAAc;KACjC;IACD,KAAK,EAAE;QACL,UAAU,EAAE,EAAE,GAAG,cAAc;QAC/B,UAAU,EAAE,GAAG,GAAG,cAAc;KACjC;CACO,CAAA;AAEV,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;IACpC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;IAClC,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;IAChC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;IAClC,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;CACxB,CAAA;AAWV,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,EACJ,IAAI,GAAG,OAAO,EACd,QAAQ,EACR,KAAK,EACL,OAAO,EACP,OAAO,EACP,YAAY,EACZ,aAAa,EAAE,UAAU,GAC1B,GAAG,KAAK,CAAA;IAET,oEAAoE;IACpE,MAAM,MAAM,GAAG,0BAA0B,CAAC,IAAK,CAAC,CAAA;IAEhD,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,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE;oBAChC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,YAAY;oBAClC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,QAAQ;oBAC5B,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK;oBACtB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO;oBAC1B,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO;iBAC3B,CAAC,EACF,QAAQ,EAAC,SAAS,EAClB,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAE,MAAM,CAAC,UAAU,GACpB;YACF,8BACE,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE;oBAC7B,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO;oBAC1B,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK;iBACvB,CAAC,EACF,QAAQ,EAAC,SAAS,EAClB,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAE,MAAM,CAAC,OAAO,EACjB,aAAa,EAAC,KAAK,EACnB,WAAW,EAAC,GAAG,EACf,cAAc,EAAC,OAAO,GACtB;YACF,8BACE,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE;oBAC5B,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK;oBACtB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO;oBAC1B,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO;iBAC3B,CAAC,EACF,QAAQ,EAAC,SAAS,EAClB,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAE,MAAM,CAAC,OAAO,EACjB,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":"AvatarDropzoneSvg.js","sourceRoot":"","sources":["../../../src/AvatarDropzoneSvg/AvatarDropzoneSvg.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
- import type { Theme } from '@material-ui/core/styles';
2
- declare const _default: ({ palette, transitions }: Theme) => import("@material-ui/styles").StyleRules<{}, "background" | "border" | "outline" | "disabled" | "svg" | "root" | "rootXxsmall" | "rootXsmall" | "rootSmall" | "rootMedium" | "rootLarge" | "svgXxsmall" | "svgXsmall" | "svgSmall" | "svgMedium" | "svgLarge" | "focused" | "dragActive" | "error" | "hovered">;
3
- export default _default;
1
+ import type { Props, Size } from './AvatarDropzoneSvg';
2
+ export declare const rootClassBySize: Record<Size, string>;
3
+ export declare const svgClassBySize: Record<Size, string>;
4
+ export declare const getBackgroundFillClass: ({ hovered, isDragActive, disabled, }: Props) => "fill-gray-100" | "fill-blue-500/[0.24]" | "fill-blue-100/[0.84]" | "fill-blue-100";
5
+ export declare const getBordersStrokeClass: ({ hovered, error }: Props) => "stroke-red-500" | "stroke-blue-500/[0.84]" | "stroke-blue-500";
4
6
  //# sourceMappingURL=styles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/AvatarDropzoneSvg/styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;mDAIX,KAAK;AAA/C,wBA4GC"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/AvatarDropzoneSvg/styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAEtD,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAMhD,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAM/C,CAAA;AAED,eAAO,MAAM,sBAAsB,yCAIhC,KAAK,wFAcP,CAAA;AAED,eAAO,MAAM,qBAAqB,uBAAwB,KAAK,oEAU9D,CAAA"}
@@ -1,101 +1,36 @@
1
- import { createStyles } from '@material-ui/core/styles';
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
- rootXxsmall: {
15
- width: '32px',
16
- height: '32px',
17
- },
18
- rootXsmall: {
19
- width: '40px',
20
- height: '40px',
21
- },
22
- rootSmall: {
23
- width: '80px',
24
- height: '80px',
25
- },
26
- rootMedium: {
27
- width: '120px',
28
- height: '120px',
29
- },
30
- rootLarge: {
31
- width: '160px',
32
- height: '160px',
33
- },
34
- svg: {
35
- margin: '-3px', // to center the svg
36
- },
37
- svgXxsmall: {
38
- width: '38px',
39
- height: '38px', // +6px for outline
40
- },
41
- svgXsmall: {
42
- width: '46px',
43
- height: '46px', // +6px for outline
44
- },
45
- svgSmall: {
46
- width: '86px',
47
- height: '86px', // +6px for outline
48
- },
49
- svgMedium: {
50
- width: '126px',
51
- height: '126px', // +6px for outline
52
- },
53
- svgLarge: {
54
- width: '166px',
55
- height: '166px', // +6px for outline
56
- },
57
- background: {
58
- fill: palette.blue.lighter,
59
- transition: `all ${transitions.duration.short}ms ${transitions.easing.easeOut}`,
60
- transitionProperty: 'fill',
61
- '&$hovered': {
62
- fill: hoverBackgroundColor,
63
- },
64
- '&$dragActive,&:active': {
65
- fill: dragActiveColor,
66
- },
67
- '&$disabled': {
68
- fill: palette.grey.lighter,
69
- '&$hovered': {
70
- fill: palette.grey.light2,
71
- },
72
- },
73
- },
74
- border: {
75
- stroke: palette.blue.main,
76
- transition: `stroke ${transitions.duration.short}ms`,
77
- '&$hovered': {
78
- stroke: hoverBorderColor,
79
- },
80
- '&$error': {
81
- stroke: palette.red.main,
82
- },
83
- },
84
- outline: {
85
- display: 'none',
86
- stroke: palette.blue.main,
87
- '&$focused:not($dragActive)': {
88
- display: 'initial',
89
- },
90
- '&$error': {
91
- stroke: palette.red.main,
92
- },
93
- },
94
- dragActive: {},
95
- disabled: {},
96
- error: {},
97
- focused: {},
98
- hovered: {},
99
- });
1
+ export const rootClassBySize = {
2
+ xxsmall: 'w-[32px] h-[32px]',
3
+ xsmall: 'w-[40px] h-[40px]',
4
+ small: 'w-[80px] h-[80px]',
5
+ medium: 'w-[120px] h-[120px]',
6
+ large: 'w-[160px] h-[160px]',
7
+ };
8
+ export const svgClassBySize = {
9
+ xxsmall: 'w-[39px] h-[38px]',
10
+ xsmall: 'w-[46px] h-[46px]',
11
+ small: 'w-[86px] h-[86px]',
12
+ medium: 'w-[126px] h-[126px]',
13
+ large: 'w-[166px] h-[166px]',
14
+ };
15
+ export const getBackgroundFillClass = ({ hovered, isDragActive, disabled, }) => {
16
+ if (disabled) {
17
+ return 'fill-gray-100';
18
+ }
19
+ if (isDragActive) {
20
+ return 'fill-blue-500/[0.24]';
21
+ }
22
+ if (hovered) {
23
+ return 'fill-blue-100/[0.84]';
24
+ }
25
+ return 'fill-blue-100';
26
+ };
27
+ export const getBordersStrokeClass = ({ hovered, error }) => {
28
+ if (error) {
29
+ return 'stroke-red-500';
30
+ }
31
+ if (hovered) {
32
+ return 'stroke-blue-500/[0.84]';
33
+ }
34
+ return 'stroke-blue-500';
100
35
  };
101
36
  //# sourceMappingURL=styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/AvatarDropzoneSvg/styles.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/AvatarDropzoneSvg/styles.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,eAAe,GAAyB;IACnD,OAAO,EAAE,mBAAmB;IAC5B,MAAM,EAAE,mBAAmB;IAC3B,KAAK,EAAE,mBAAmB;IAC1B,MAAM,EAAE,qBAAqB;IAC7B,KAAK,EAAE,qBAAqB;CAC7B,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAyB;IAClD,OAAO,EAAE,mBAAmB;IAC5B,MAAM,EAAE,mBAAmB;IAC3B,KAAK,EAAE,mBAAmB;IAC1B,MAAM,EAAE,qBAAqB;IAC7B,KAAK,EAAE,qBAAqB;CAC7B,CAAA;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,EACrC,OAAO,EACP,YAAY,EACZ,QAAQ,GACF,EAAE,EAAE;IACV,IAAI,QAAQ,EAAE;QACZ,OAAO,eAAe,CAAA;KACvB;IAED,IAAI,YAAY,EAAE;QAChB,OAAO,sBAAsB,CAAA;KAC9B;IAED,IAAI,OAAO,EAAE;QACX,OAAO,sBAAsB,CAAA;KAC9B;IAED,OAAO,eAAe,CAAA;AACxB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,EAAS,EAAE,EAAE;IACjE,IAAI,KAAK,EAAE;QACT,OAAO,gBAAgB,CAAA;KACxB;IAED,IAAI,OAAO,EAAE;QACX,OAAO,wBAAwB,CAAA;KAChC;IAED,OAAO,iBAAiB,CAAA;AAC1B,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"AvatarGroup.d.ts","sourceRoot":"","sources":["../../../src/AvatarGroup/AvatarGroup.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAYjE,aAAK,QAAQ,GAAG;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,WAAW,KAAM,SAAQ,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC;IAC3D,gCAAgC;IAChC,KAAK,EAAE,QAAQ,EAAE,CAAA;IACjB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW;IACX,IAAI,CAAC,EAAE,QAAQ,CAAC,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC,CAAA;IACpE,4CAA4C;IAC5C,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,CAAA;CACF;AAMD,QAAA,MAAM,WAAW;yDAOd,KAAK;;;;;CAmDP,CAAA;AAOD,eAAe,WAAW,CAAA"}
1
+ {"version":3,"file":"AvatarGroup.d.ts","sourceRoot":"","sources":["../../../src/AvatarGroup/AvatarGroup.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AASjE,aAAK,QAAQ,GAAG;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,WAAW,KAAM,SAAQ,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC;IAC3D,gCAAgC;IAChC,KAAK,EAAE,QAAQ,EAAE,CAAA;IACjB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW;IACX,IAAI,CAAC,EAAE,QAAQ,CAAC,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC,CAAA;IACpE,4CAA4C;IAC5C,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,CAAA;CACF;AAED,QAAA,MAAM,WAAW;yDAOd,KAAK;;;;;CAiDP,CAAA;AAOD,eAAe,WAAW,CAAA"}
@@ -1,16 +1,10 @@
1
1
  import React, { useMemo } from 'react';
2
- import cx from 'classnames';
3
- import { makeStyles } from '@material-ui/core/styles';
4
2
  import { Container } from '@toptal/picasso-container';
3
+ import { twMerge } from '@toptal/picasso-tailwind-merge';
5
4
  import { Avatar } from '../Avatar';
6
5
  import AvatarWrapper from '../Avatar/AvatarWrapper/AvatarWrapper';
7
6
  import TextAvatar from '../Avatar/TextAvatar/TextAvatar';
8
- import styles from './styles';
9
- const useStyles = makeStyles(styles, {
10
- name: 'PicassoAvatarGroup',
11
- });
12
7
  const AvatarGroup = ({ className, style, testIds, items, limit, size, }) => {
13
- const classes = useStyles();
14
8
  /* eslint-disable-next-line @typescript-eslint/no-non-null-assertion */
15
9
  const isOverLimit = items.length > limit;
16
10
  // we need to add +1 for the last item that is going to be transformed to numbered Avatar
@@ -22,7 +16,7 @@ const AvatarGroup = ({ className, style, testIds, items, limit, size, }) => {
22
16
  if (items.length === 0) {
23
17
  return null;
24
18
  }
25
- return (React.createElement(Container, { className: cx(classes.root, className), "data-testid": testIds === null || testIds === void 0 ? void 0 : testIds.container, flex: true, gap: 'xsmall', style: style },
19
+ return (React.createElement(Container, { className: twMerge('max-w-full overflow-x-auto', className), "data-testid": testIds === null || testIds === void 0 ? void 0 : testIds.container, flex: true, gap: 'xsmall', style: style },
26
20
  avatarsToRender.map(({ alt, name, src, 'data-testid': avatarTestId }, index) => (React.createElement(Avatar, { alt: alt, key: `${name}-${alt}-${String(index)}`, name: name,
27
21
  /* eslint-disable-next-line @typescript-eslint/no-non-null-assertion */
28
22
  size: size, src: src, "data-testid": avatarTestId }))),
@@ -1 +1 @@
1
- {"version":3,"file":"AvatarGroup.js","sourceRoot":"","sources":["../../../src/AvatarGroup/AvatarGroup.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,EAAE,MAAM,YAAY,CAAA;AAE3B,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAErD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClC,OAAO,aAAa,MAAM,uCAAuC,CAAA;AACjE,OAAO,UAAU,MAAM,iCAAiC,CAAA;AACxD,OAAO,MAAM,MAAM,UAAU,CAAA;AAuB7B,MAAM,SAAS,GAAG,UAAU,CAAQ,MAAM,EAAE;IAC1C,IAAI,EAAE,oBAAoB;CAC3B,CAAC,CAAA;AAEF,MAAM,WAAW,GAAG,CAAC,EACnB,SAAS,EACT,KAAK,EACL,OAAO,EACP,KAAK,EACL,KAAK,EACL,IAAI,GACE,EAAE,EAAE;IACV,MAAM,OAAO,GAAG,SAAS,EAAE,CAAA;IAE3B,uEAAuE;IACvE,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,GAAG,KAAM,CAAA;IACzC,yFAAyF;IACzF,uEAAuE;IACvE,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,GAAG,KAAM,GAAG,CAAC,CAAA;IAChD,MAAM,eAAe,GAAG,OAAO,CAC7B,GAAG,EAAE;IACH,uEAAuE;IACvE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAClD,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,CAC5B,CAAA;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QACtB,OAAO,IAAI,CAAA;KACZ;IAED,OAAO,CACL,oBAAC,SAAS,IACR,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,iBACzB,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,EAC/B,IAAI,QACJ,GAAG,EAAC,QAAQ,EACZ,KAAK,EAAE,KAAK;QAEX,eAAe,CAAC,GAAG,CAClB,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,aAAa,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAC1D,oBAAC,MAAM,IACL,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,EACtC,IAAI,EAAE,IAAI;YACV,uEAAuE;YACvE,IAAI,EAAE,IAAK,EACX,GAAG,EAAE,GAAG,iBACK,YAAY,GACzB,CACH,CACF;QACA,WAAW,CAAC,CAAC,CAAC;QACb,uEAAuE;QACvE,oBAAC,aAAa,IAAC,IAAI,EAAE,IAAK,EAAE,OAAO,EAAC,QAAQ;YAE1C,oBAAC,UAAU,mBAAc,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,EAAE,IAAI,EAAE,IAAK;;gBACpD,cAAc,CACL,CACC,CACjB,CAAC,CAAC,CAAC,IAAI,CACE,CACb,CAAA;AACH,CAAC,CAAA;AAED,WAAW,CAAC,YAAY,GAAG;IACzB,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,QAAQ;CACf,CAAA;AAED,eAAe,WAAW,CAAA"}
1
+ {"version":3,"file":"AvatarGroup.js","sourceRoot":"","sources":["../../../src/AvatarGroup/AvatarGroup.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAExD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClC,OAAO,aAAa,MAAM,uCAAuC,CAAA;AACjE,OAAO,UAAU,MAAM,iCAAiC,CAAA;AAuBxD,MAAM,WAAW,GAAG,CAAC,EACnB,SAAS,EACT,KAAK,EACL,OAAO,EACP,KAAK,EACL,KAAK,EACL,IAAI,GACE,EAAE,EAAE;IACV,uEAAuE;IACvE,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,GAAG,KAAM,CAAA;IACzC,yFAAyF;IACzF,uEAAuE;IACvE,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,GAAG,KAAM,GAAG,CAAC,CAAA;IAChD,MAAM,eAAe,GAAG,OAAO,CAC7B,GAAG,EAAE;IACH,uEAAuE;IACvE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAClD,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,CAC5B,CAAA;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QACtB,OAAO,IAAI,CAAA;KACZ;IAED,OAAO,CACL,oBAAC,SAAS,IACR,SAAS,EAAE,OAAO,CAAC,4BAA4B,EAAE,SAAS,CAAC,iBAC9C,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,EAC/B,IAAI,QACJ,GAAG,EAAC,QAAQ,EACZ,KAAK,EAAE,KAAK;QAEX,eAAe,CAAC,GAAG,CAClB,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,aAAa,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAC1D,oBAAC,MAAM,IACL,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,EACtC,IAAI,EAAE,IAAI;YACV,uEAAuE;YACvE,IAAI,EAAE,IAAK,EACX,GAAG,EAAE,GAAG,iBACK,YAAY,GACzB,CACH,CACF;QACA,WAAW,CAAC,CAAC,CAAC;QACb,uEAAuE;QACvE,oBAAC,aAAa,IAAC,IAAI,EAAE,IAAK,EAAE,OAAO,EAAC,QAAQ;YAE1C,oBAAC,UAAU,mBAAc,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,EAAE,IAAI,EAAE,IAAK;;gBACpD,cAAc,CACL,CACC,CACjB,CAAC,CAAC,CAAC,IAAI,CACE,CACb,CAAA;AACH,CAAC,CAAA;AAED,WAAW,CAAC,YAAY,GAAG;IACzB,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,QAAQ;CACf,CAAA;AAED,eAAe,WAAW,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@toptal/picasso-avatar",
3
- "version": "2.0.7-alpha-fx-null-fix-button-e862ee8b7.0+e862ee8b7",
3
+ "version": "3.0.0",
4
4
  "description": "Toptal UI components library - Avatar",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -22,34 +22,33 @@
22
22
  },
23
23
  "homepage": "https://github.com/toptal/picasso/tree/master/packages/picasso#readme",
24
24
  "dependencies": {
25
- "@toptal/picasso-container": "1.0.4-alpha-fx-null-fix-button-e862ee8b7.34+e862ee8b7",
26
- "@toptal/picasso-icons": "1.4.1-alpha-fx-null-fix-button-e862ee8b7.0+e862ee8b7",
27
- "@toptal/picasso-image": "1.0.4-alpha-fx-null-fix-button-e862ee8b7.34+e862ee8b7",
28
- "@toptal/picasso-logo": "1.0.8-alpha-fx-null-fix-button-e862ee8b7.0+e862ee8b7",
29
- "@toptal/picasso-shared": "15.0.1-alpha-fx-null-fix-button-e862ee8b7.34+e862ee8b7",
30
- "@toptal/picasso-typography": "2.0.3-alpha-fx-null-fix-button-e862ee8b7.16+e862ee8b7",
31
- "@toptal/picasso-utils": "1.0.4-alpha-fx-null-fix-button-e862ee8b7.34+e862ee8b7",
32
- "classnames": "^2.5.1"
25
+ "@toptal/picasso-container": "1.0.3",
26
+ "@toptal/picasso-icons": "1.4.0",
27
+ "@toptal/picasso-image": "1.0.3",
28
+ "@toptal/picasso-logo": "1.0.7",
29
+ "@toptal/picasso-shared": "15.0.0",
30
+ "@toptal/picasso-typography": "2.0.2",
31
+ "@toptal/picasso-utils": "1.0.3"
33
32
  },
34
33
  "sideEffects": [
35
34
  "**/styles.ts",
36
35
  "**/styles.js"
37
36
  ],
38
37
  "peerDependencies": {
39
- "@material-ui/core": "4.12.4",
38
+ "tailwindcss": ">=3",
40
39
  "react": ">=16.12.0 < 19.0.0",
41
- "tailwindcss": ">=3"
40
+ "@toptal/picasso-tailwind-merge": "^1.1.1"
42
41
  },
43
42
  "exports": {
44
43
  ".": "./dist-package/src/index.js"
45
44
  },
46
45
  "devDependencies": {
47
- "@toptal/picasso-test-utils": "1.1.2-alpha-fx-null-fix-button-e862ee8b7.34+e862ee8b7"
46
+ "@toptal/picasso-test-utils": "1.1.1",
47
+ "@toptal/picasso-tailwind-merge": "1.1.0"
48
48
  },
49
49
  "files": [
50
50
  "dist-package/**",
51
51
  "!dist-package/tsconfig.tsbuildinfo",
52
52
  "src"
53
- ],
54
- "gitHead": "e862ee8b7dd480b508f5258999f409fe0ab1611c"
53
+ ]
55
54
  }
@@ -1,16 +1,13 @@
1
1
  import type { HTMLAttributes } from 'react'
2
2
  import React, { useCallback } from 'react'
3
3
  import type { StandardProps, SizeType } from '@toptal/picasso-shared'
4
- import type { Theme } from '@material-ui/core/styles'
5
- import { makeStyles } from '@material-ui/core/styles'
6
- import { AVATAR_INITIALS_LIMIT , getNameInitials } from '@toptal/picasso-utils'
4
+ import { AVATAR_INITIALS_LIMIT, getNameInitials } from '@toptal/picasso-utils'
7
5
 
8
6
  import ImageAvatar from './ImageAvatar/ImageAvatar'
9
7
  import TextAvatar from './TextAvatar/TextAvatar'
10
8
  import IconAvatar from './IconAvatar/IconAvatar'
11
9
  import AvatarWrapper from './AvatarWrapper/AvatarWrapper'
12
10
  import AvatarEditContainer from './AvatarEditContainer/AvatarEditContainer'
13
- import styles from './styles'
14
11
 
15
12
  export interface Props extends StandardProps, HTMLAttributes<HTMLDivElement> {
16
13
  /** Alt text */
@@ -34,10 +31,6 @@ export interface Props extends StandardProps, HTMLAttributes<HTMLDivElement> {
34
31
  }
35
32
  }
36
33
 
37
- const useStyles = makeStyles<Theme, Props>(styles, {
38
- name: 'PicassoAvatarWrapper',
39
- })
40
-
41
34
  export const Avatar = (props: Props) => {
42
35
  const {
43
36
  alt,
@@ -106,9 +99,9 @@ export const Avatar = (props: Props) => {
106
99
  testIds?.text,
107
100
  name,
108
101
  style,
102
+ dataPrivate,
109
103
  ])
110
104
 
111
- const classes = useStyles(props)
112
105
  const isEditable = Boolean(onEdit)
113
106
 
114
107
  const avatar = (
@@ -126,7 +119,7 @@ export const Avatar = (props: Props) => {
126
119
 
127
120
  if (isEditable) {
128
121
  return (
129
- <div className={classes.editableAvatarContainer}>
122
+ <div className='relative'>
130
123
  {avatar}
131
124
  {isEditable && (
132
125
  <AvatarEditContainer
@@ -1,23 +1,19 @@
1
1
  import React, { useState } from 'react'
2
- import type { Theme } from '@material-ui/core'
3
- import { capitalize, makeStyles } from '@material-ui/core'
4
2
  import type { BaseProps, SizeType } from '@toptal/picasso-shared'
5
- import cx from 'classnames'
6
3
  import { Pencil16, Pencil24 } from '@toptal/picasso-icons'
4
+ import { twJoin } from '@toptal/picasso-tailwind-merge'
7
5
 
8
- import styles from './styles'
6
+ import { rootClassBySize, svgClassBySize } from './styles'
9
7
  import { AVATAR_DROPZONE_SVG_SHAPES } from '../../AvatarDropzoneSvg'
10
8
 
9
+ export type Size = SizeType<'xxsmall' | 'xsmall' | 'small' | 'medium' | 'large'>
10
+
11
11
  export interface Props extends BaseProps {
12
- size?: SizeType<'xxsmall' | 'xsmall' | 'small' | 'medium' | 'large'>
12
+ size?: Size
13
13
  disabled?: boolean
14
14
  onClick?: (event: React.MouseEvent) => void
15
15
  }
16
16
 
17
- const useStyles = makeStyles<Theme>(styles, {
18
- name: 'PicassoDropzoneSvg',
19
- })
20
-
21
17
  export const AvatarEditContainer = (props: Props) => {
22
18
  const { size = 'small', onClick, 'data-testid': dataTestId } = props
23
19
  const [focused, setFocused] = useState(false)
@@ -25,8 +21,6 @@ export const AvatarEditContainer = (props: Props) => {
25
21
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
26
22
  const shapes = AVATAR_DROPZONE_SVG_SHAPES[size!]
27
23
 
28
- const classes = useStyles()
29
-
30
24
  const PencilIconComponent =
31
25
  size === 'xxsmall' || size === 'xsmall' ? Pencil16 : Pencil24
32
26
 
@@ -40,27 +34,32 @@ export const AvatarEditContainer = (props: Props) => {
40
34
 
41
35
  return (
42
36
  <button
43
- className={cx(classes.root, classes[`root${capitalize(size)}`])}
37
+ className={twJoin(
38
+ 'border-none cursor-pointer absolute left-0 top-0 flex justify-center',
39
+ 'items-center outline-none bg-transparent',
40
+ rootClassBySize[size]
41
+ )}
44
42
  data-testid={dataTestId}
45
43
  onClick={onClick}
46
44
  onFocus={handleFocus}
47
45
  onBlur={handleBlur}
48
46
  >
49
47
  <svg
50
- className={cx(classes.svg, classes[`svg${capitalize(size)}`])}
48
+ className={twJoin('-m-[3px] absolute', svgClassBySize[size])}
51
49
  fill='none'
52
50
  xmlns='http://www.w3.org/2000/svg'
53
51
  >
54
52
  <path
55
- className={classes.background}
53
+ className={'fill-graphite-800/70'}
56
54
  fillRule='evenodd'
57
55
  clipRule='evenodd'
58
56
  d={shapes.background}
59
57
  />
60
58
  <path
61
- className={cx(classes.outline, {
62
- [classes.focused]: focused,
63
- })}
59
+ className={twJoin(
60
+ 'stroke-blue-500',
61
+ focused ? '[display:initial]' : 'hidden'
62
+ )}
64
63
  fillRule='evenodd'
65
64
  clipRule='evenodd'
66
65
  d={shapes.outline}
@@ -69,7 +68,7 @@ export const AvatarEditContainer = (props: Props) => {
69
68
  strokeLinejoin='round'
70
69
  />
71
70
  </svg>
72
- <PencilIconComponent className={classes.pencilIcon} />
71
+ <PencilIconComponent className='text-white z-modal' />
73
72
  </button>
74
73
  )
75
74
  }