@transferwise/components 0.0.0-experimental-75b7b1e → 0.0.0-experimental-c5ba52c

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 (53) hide show
  1. package/build/avatar/Avatar.js +3 -1
  2. package/build/avatar/Avatar.js.map +1 -1
  3. package/build/avatar/Avatar.mjs +3 -1
  4. package/build/avatar/Avatar.mjs.map +1 -1
  5. package/build/avatarWrapper/AvatarWrapper.js +16 -4
  6. package/build/avatarWrapper/AvatarWrapper.js.map +1 -1
  7. package/build/avatarWrapper/AvatarWrapper.mjs +16 -4
  8. package/build/avatarWrapper/AvatarWrapper.mjs.map +1 -1
  9. package/build/badge/Badge.js +2 -0
  10. package/build/badge/Badge.js.map +1 -1
  11. package/build/badge/Badge.mjs +2 -0
  12. package/build/badge/Badge.mjs.map +1 -1
  13. package/build/main.css +28 -20
  14. package/build/styles/main.css +28 -20
  15. package/build/styles/uploadInput/uploadButton/UploadButton.css +5 -0
  16. package/build/styles/uploadInput/uploadItem/UploadItem.css +23 -20
  17. package/build/types/avatar/Avatar.d.ts +1 -0
  18. package/build/types/avatar/Avatar.d.ts.map +1 -1
  19. package/build/types/avatarWrapper/AvatarWrapper.d.ts +2 -1
  20. package/build/types/avatarWrapper/AvatarWrapper.d.ts.map +1 -1
  21. package/build/types/badge/Badge.d.ts +2 -1
  22. package/build/types/badge/Badge.d.ts.map +1 -1
  23. package/build/types/uploadInput/uploadItem/UploadItem.d.ts.map +1 -1
  24. package/build/types/uploadInput/uploadItem/{UploadItemBody.d.ts → UploadItemLink.d.ts} +2 -2
  25. package/build/types/uploadInput/uploadItem/UploadItemLink.d.ts.map +1 -0
  26. package/build/uploadInput/uploadItem/UploadItem.js +14 -11
  27. package/build/uploadInput/uploadItem/UploadItem.js.map +1 -1
  28. package/build/uploadInput/uploadItem/UploadItem.mjs +15 -12
  29. package/build/uploadInput/uploadItem/UploadItem.mjs.map +1 -1
  30. package/build/uploadInput/uploadItem/UploadItemLink.js +32 -0
  31. package/build/uploadInput/uploadItem/UploadItemLink.js.map +1 -0
  32. package/build/uploadInput/uploadItem/{UploadItemBody.mjs → UploadItemLink.mjs} +5 -4
  33. package/build/uploadInput/uploadItem/UploadItemLink.mjs.map +1 -0
  34. package/package.json +4 -4
  35. package/src/avatar/Avatar.spec.tsx +10 -0
  36. package/src/avatar/Avatar.tsx +3 -0
  37. package/src/avatarWrapper/AvatarWrapper.spec.tsx +15 -4
  38. package/src/avatarWrapper/AvatarWrapper.story.tsx +2 -0
  39. package/src/avatarWrapper/AvatarWrapper.tsx +26 -7
  40. package/src/avatarWrapper/__snapshots__/AvatarWrapper.spec.tsx.snap +0 -64
  41. package/src/badge/Badge.spec.tsx +8 -0
  42. package/src/badge/Badge.tsx +3 -1
  43. package/src/main.css +28 -20
  44. package/src/uploadInput/uploadButton/UploadButton.css +5 -0
  45. package/src/uploadInput/uploadButton/UploadButton.less +6 -0
  46. package/src/uploadInput/uploadItem/UploadItem.css +23 -20
  47. package/src/uploadInput/uploadItem/UploadItem.less +16 -12
  48. package/src/uploadInput/uploadItem/UploadItem.tsx +12 -7
  49. package/src/uploadInput/uploadItem/{UploadItemBody.tsx → UploadItemLink.tsx} +6 -2
  50. package/build/types/uploadInput/uploadItem/UploadItemBody.d.ts.map +0 -1
  51. package/build/uploadInput/uploadItem/UploadItemBody.js +0 -27
  52. package/build/uploadInput/uploadItem/UploadItemBody.js.map +0 -1
  53. package/build/uploadInput/uploadItem/UploadItemBody.mjs.map +0 -1
@@ -30,7 +30,8 @@ const Avatar = ({
30
30
  outlined = false,
31
31
  size: sizeFromProps = 48,
32
32
  theme: theme$1 = theme.Theme.LIGHT,
33
- type = 'thumbnail'
33
+ type = 'thumbnail',
34
+ 'aria-label': ariaLabel
34
35
  }) => {
35
36
  const backgroundColorFromSeed = React.useMemo(() => !backgroundColor && backgroundColorSeed ? `var(${colors.getAvatarColorFromSeed(backgroundColorSeed)})` : undefined, [backgroundColor, backgroundColorSeed]);
36
37
  const size = backwardsCompatibleSize(sizeFromProps);
@@ -40,6 +41,7 @@ const Avatar = ({
40
41
  'tw-avatar--branded': Boolean(backgroundColorFromSeed),
41
42
  'np-text-title-body': type === 'initials'
42
43
  }),
44
+ "aria-label": ariaLabel,
43
45
  children: /*#__PURE__*/jsxRuntime.jsx("div", {
44
46
  className: "tw-avatar__content",
45
47
  style: {
@@ -1 +1 @@
1
- {"version":3,"file":"Avatar.js","sources":["../../src/avatar/Avatar.tsx"],"sourcesContent":["import classnames from 'classnames';\nimport { useMemo } from 'react';\n\nimport { Theme } from '../common';\n\nimport { getAvatarColorFromSeed } from './colors';\n\ntype NumericAvatarSize = 24 | 40 | 48 | 56 | 72;\n\ntype LegacyAvatarSize = 'sm' | 'md' | 'lg';\n\nexport type AvatarSize = NumericAvatarSize | LegacyAvatarSize;\n\nexport type AvatarTheme = 'light' | 'dark';\n\nexport type AvatarType = 'thumbnail' | 'icon' | 'emoji' | 'initials';\n\nexport interface AvatarProps {\n backgroundColor?: string;\n backgroundColorSeed?: string;\n children?: React.ReactNode;\n className?: string;\n outlined?: boolean;\n size?: AvatarSize;\n theme?: AvatarTheme;\n type?: AvatarType;\n}\n\nconst backwardsCompatibleSize = (size: AvatarSize): NumericAvatarSize => {\n switch (size) {\n case 'sm':\n return 24;\n\n case 'md':\n return 48;\n\n case 'lg':\n return 72;\n\n default:\n return size;\n }\n};\n\nconst Avatar: React.FC<AvatarProps> = ({\n backgroundColor = null,\n backgroundColorSeed = null,\n children = null,\n className,\n outlined = false,\n size: sizeFromProps = 48,\n theme = Theme.LIGHT,\n type = 'thumbnail',\n}) => {\n const backgroundColorFromSeed = useMemo<string | undefined>(\n () =>\n !backgroundColor && backgroundColorSeed\n ? `var(${getAvatarColorFromSeed(backgroundColorSeed)})`\n : undefined,\n [backgroundColor, backgroundColorSeed],\n );\n\n const size = backwardsCompatibleSize(sizeFromProps);\n\n return (\n <div\n className={classnames('tw-avatar', className, `tw-avatar--${size}`, `tw-avatar--${type}`, {\n 'tw-avatar--outlined': outlined,\n 'tw-avatar--branded': Boolean(backgroundColorFromSeed),\n 'np-text-title-body': type === 'initials',\n })}\n >\n <div\n className=\"tw-avatar__content\"\n style={{\n backgroundColor: backgroundColor || backgroundColorFromSeed,\n }}\n >\n {children}\n </div>\n </div>\n );\n};\n\nexport default Avatar;\n"],"names":["backwardsCompatibleSize","size","Avatar","backgroundColor","backgroundColorSeed","children","className","outlined","sizeFromProps","theme","Theme","LIGHT","type","backgroundColorFromSeed","useMemo","getAvatarColorFromSeed","undefined","_jsx","classnames","Boolean","style"],"mappings":";;;;;;;;;;;;AA4BA,MAAMA,uBAAuB,GAAIC,IAAgB,IAAuB;AACtE,EAAA,QAAQA,IAAI;AACV,IAAA,KAAK,IAAI;AACP,MAAA,OAAO,EAAE,CAAA;AAEX,IAAA,KAAK,IAAI;AACP,MAAA,OAAO,EAAE,CAAA;AAEX,IAAA,KAAK,IAAI;AACP,MAAA,OAAO,EAAE,CAAA;AAEX,IAAA;AACE,MAAA,OAAOA,IAAI,CAAA;AACf,GAAA;AACF,CAAC,CAAA;AAEKC,MAAAA,MAAM,GAA0BA,CAAC;AACrCC,EAAAA,eAAe,GAAG,IAAI;AACtBC,EAAAA,mBAAmB,GAAG,IAAI;AAC1BC,EAAAA,QAAQ,GAAG,IAAI;EACfC,SAAS;AACTC,EAAAA,QAAQ,GAAG,KAAK;EAChBN,IAAI,EAAEO,aAAa,GAAG,EAAE;SACxBC,OAAK,GAAGC,WAAK,CAACC,KAAK;AACnBC,EAAAA,IAAI,GAAG,WAAA;AAAW,CACnB,KAAI;EACH,MAAMC,uBAAuB,GAAGC,aAAO,CACrC,MACE,CAACX,eAAe,IAAIC,mBAAmB,GACnC,CAAOW,IAAAA,EAAAA,6BAAsB,CAACX,mBAAmB,CAAC,CAAG,CAAA,CAAA,GACrDY,SAAS,EACf,CAACb,eAAe,EAAEC,mBAAmB,CAAC,CACvC,CAAA;AAED,EAAA,MAAMH,IAAI,GAAGD,uBAAuB,CAACQ,aAAa,CAAC,CAAA;AAEnD,EAAA,oBACES,cAAA,CAAA,KAAA,EAAA;AACEX,IAAAA,SAAS,EAAEY,2BAAU,CAAC,WAAW,EAAEZ,SAAS,EAAE,CAAcL,WAAAA,EAAAA,IAAI,CAAE,CAAA,EAAE,CAAcW,WAAAA,EAAAA,IAAI,EAAE,EAAE;AACxF,MAAA,qBAAqB,EAAEL,QAAQ;AAC/B,MAAA,oBAAoB,EAAEY,OAAO,CAACN,uBAAuB,CAAC;MACtD,oBAAoB,EAAED,IAAI,KAAK,UAAA;AAChC,KAAA,CAAE;AAAAP,IAAAA,QAAA,eAEHY,cAAA,CAAA,KAAA,EAAA;AACEX,MAAAA,SAAS,EAAC,oBAAoB;AAC9Bc,MAAAA,KAAK,EAAE;QACLjB,eAAe,EAAEA,eAAe,IAAIU,uBAAAA;OACpC;AAAAR,MAAAA,QAAA,EAEDA,QAAAA;KACE,CAAA;AACP,GAAK,CAAC,CAAA;AAEV;;;;"}
1
+ {"version":3,"file":"Avatar.js","sources":["../../src/avatar/Avatar.tsx"],"sourcesContent":["import classnames from 'classnames';\nimport { useMemo } from 'react';\n\nimport { Theme } from '../common';\n\nimport { getAvatarColorFromSeed } from './colors';\n\ntype NumericAvatarSize = 24 | 40 | 48 | 56 | 72;\n\ntype LegacyAvatarSize = 'sm' | 'md' | 'lg';\n\nexport type AvatarSize = NumericAvatarSize | LegacyAvatarSize;\n\nexport type AvatarTheme = 'light' | 'dark';\n\nexport type AvatarType = 'thumbnail' | 'icon' | 'emoji' | 'initials';\n\nexport interface AvatarProps {\n backgroundColor?: string;\n backgroundColorSeed?: string;\n children?: React.ReactNode;\n className?: string;\n outlined?: boolean;\n size?: AvatarSize;\n theme?: AvatarTheme;\n type?: AvatarType;\n 'aria-label'?: string;\n}\n\nconst backwardsCompatibleSize = (size: AvatarSize): NumericAvatarSize => {\n switch (size) {\n case 'sm':\n return 24;\n\n case 'md':\n return 48;\n\n case 'lg':\n return 72;\n\n default:\n return size;\n }\n};\n\nconst Avatar: React.FC<AvatarProps> = ({\n backgroundColor = null,\n backgroundColorSeed = null,\n children = null,\n className,\n outlined = false,\n size: sizeFromProps = 48,\n theme = Theme.LIGHT,\n type = 'thumbnail',\n 'aria-label': ariaLabel,\n}) => {\n const backgroundColorFromSeed = useMemo<string | undefined>(\n () =>\n !backgroundColor && backgroundColorSeed\n ? `var(${getAvatarColorFromSeed(backgroundColorSeed)})`\n : undefined,\n [backgroundColor, backgroundColorSeed],\n );\n\n const size = backwardsCompatibleSize(sizeFromProps);\n\n return (\n <div\n className={classnames('tw-avatar', className, `tw-avatar--${size}`, `tw-avatar--${type}`, {\n 'tw-avatar--outlined': outlined,\n 'tw-avatar--branded': Boolean(backgroundColorFromSeed),\n 'np-text-title-body': type === 'initials',\n })}\n aria-label={ariaLabel}\n >\n <div\n className=\"tw-avatar__content\"\n style={{\n backgroundColor: backgroundColor || backgroundColorFromSeed,\n }}\n >\n {children}\n </div>\n </div>\n );\n};\n\nexport default Avatar;\n"],"names":["backwardsCompatibleSize","size","Avatar","backgroundColor","backgroundColorSeed","children","className","outlined","sizeFromProps","theme","Theme","LIGHT","type","ariaLabel","backgroundColorFromSeed","useMemo","getAvatarColorFromSeed","undefined","_jsx","classnames","Boolean","style"],"mappings":";;;;;;;;;;;;AA6BA,MAAMA,uBAAuB,GAAIC,IAAgB,IAAuB;AACtE,EAAA,QAAQA,IAAI;AACV,IAAA,KAAK,IAAI;AACP,MAAA,OAAO,EAAE,CAAA;AAEX,IAAA,KAAK,IAAI;AACP,MAAA,OAAO,EAAE,CAAA;AAEX,IAAA,KAAK,IAAI;AACP,MAAA,OAAO,EAAE,CAAA;AAEX,IAAA;AACE,MAAA,OAAOA,IAAI,CAAA;AACf,GAAA;AACF,CAAC,CAAA;AAEKC,MAAAA,MAAM,GAA0BA,CAAC;AACrCC,EAAAA,eAAe,GAAG,IAAI;AACtBC,EAAAA,mBAAmB,GAAG,IAAI;AAC1BC,EAAAA,QAAQ,GAAG,IAAI;EACfC,SAAS;AACTC,EAAAA,QAAQ,GAAG,KAAK;EAChBN,IAAI,EAAEO,aAAa,GAAG,EAAE;SACxBC,OAAK,GAAGC,WAAK,CAACC,KAAK;AACnBC,EAAAA,IAAI,GAAG,WAAW;AAClB,EAAA,YAAY,EAAEC,SAAAA;AAAS,CACxB,KAAI;EACH,MAAMC,uBAAuB,GAAGC,aAAO,CACrC,MACE,CAACZ,eAAe,IAAIC,mBAAmB,GACnC,CAAOY,IAAAA,EAAAA,6BAAsB,CAACZ,mBAAmB,CAAC,CAAG,CAAA,CAAA,GACrDa,SAAS,EACf,CAACd,eAAe,EAAEC,mBAAmB,CAAC,CACvC,CAAA;AAED,EAAA,MAAMH,IAAI,GAAGD,uBAAuB,CAACQ,aAAa,CAAC,CAAA;AAEnD,EAAA,oBACEU,cAAA,CAAA,KAAA,EAAA;AACEZ,IAAAA,SAAS,EAAEa,2BAAU,CAAC,WAAW,EAAEb,SAAS,EAAE,CAAcL,WAAAA,EAAAA,IAAI,CAAE,CAAA,EAAE,CAAcW,WAAAA,EAAAA,IAAI,EAAE,EAAE;AACxF,MAAA,qBAAqB,EAAEL,QAAQ;AAC/B,MAAA,oBAAoB,EAAEa,OAAO,CAACN,uBAAuB,CAAC;MACtD,oBAAoB,EAAEF,IAAI,KAAK,UAAA;AAChC,KAAA,CAAE;AACH,IAAA,YAAA,EAAYC,SAAU;AAAAR,IAAAA,QAAA,eAEtBa,cAAA,CAAA,KAAA,EAAA;AACEZ,MAAAA,SAAS,EAAC,oBAAoB;AAC9Be,MAAAA,KAAK,EAAE;QACLlB,eAAe,EAAEA,eAAe,IAAIW,uBAAAA;OACpC;AAAAT,MAAAA,QAAA,EAEDA,QAAAA;KACE,CAAA;AACP,GAAK,CAAC,CAAA;AAEV;;;;"}
@@ -24,7 +24,8 @@ const Avatar = ({
24
24
  outlined = false,
25
25
  size: sizeFromProps = 48,
26
26
  theme = Theme.LIGHT,
27
- type = 'thumbnail'
27
+ type = 'thumbnail',
28
+ 'aria-label': ariaLabel
28
29
  }) => {
29
30
  const backgroundColorFromSeed = useMemo(() => !backgroundColor && backgroundColorSeed ? `var(${getAvatarColorFromSeed(backgroundColorSeed)})` : undefined, [backgroundColor, backgroundColorSeed]);
30
31
  const size = backwardsCompatibleSize(sizeFromProps);
@@ -34,6 +35,7 @@ const Avatar = ({
34
35
  'tw-avatar--branded': Boolean(backgroundColorFromSeed),
35
36
  'np-text-title-body': type === 'initials'
36
37
  }),
38
+ "aria-label": ariaLabel,
37
39
  children: /*#__PURE__*/jsx("div", {
38
40
  className: "tw-avatar__content",
39
41
  style: {
@@ -1 +1 @@
1
- {"version":3,"file":"Avatar.mjs","sources":["../../src/avatar/Avatar.tsx"],"sourcesContent":["import classnames from 'classnames';\nimport { useMemo } from 'react';\n\nimport { Theme } from '../common';\n\nimport { getAvatarColorFromSeed } from './colors';\n\ntype NumericAvatarSize = 24 | 40 | 48 | 56 | 72;\n\ntype LegacyAvatarSize = 'sm' | 'md' | 'lg';\n\nexport type AvatarSize = NumericAvatarSize | LegacyAvatarSize;\n\nexport type AvatarTheme = 'light' | 'dark';\n\nexport type AvatarType = 'thumbnail' | 'icon' | 'emoji' | 'initials';\n\nexport interface AvatarProps {\n backgroundColor?: string;\n backgroundColorSeed?: string;\n children?: React.ReactNode;\n className?: string;\n outlined?: boolean;\n size?: AvatarSize;\n theme?: AvatarTheme;\n type?: AvatarType;\n}\n\nconst backwardsCompatibleSize = (size: AvatarSize): NumericAvatarSize => {\n switch (size) {\n case 'sm':\n return 24;\n\n case 'md':\n return 48;\n\n case 'lg':\n return 72;\n\n default:\n return size;\n }\n};\n\nconst Avatar: React.FC<AvatarProps> = ({\n backgroundColor = null,\n backgroundColorSeed = null,\n children = null,\n className,\n outlined = false,\n size: sizeFromProps = 48,\n theme = Theme.LIGHT,\n type = 'thumbnail',\n}) => {\n const backgroundColorFromSeed = useMemo<string | undefined>(\n () =>\n !backgroundColor && backgroundColorSeed\n ? `var(${getAvatarColorFromSeed(backgroundColorSeed)})`\n : undefined,\n [backgroundColor, backgroundColorSeed],\n );\n\n const size = backwardsCompatibleSize(sizeFromProps);\n\n return (\n <div\n className={classnames('tw-avatar', className, `tw-avatar--${size}`, `tw-avatar--${type}`, {\n 'tw-avatar--outlined': outlined,\n 'tw-avatar--branded': Boolean(backgroundColorFromSeed),\n 'np-text-title-body': type === 'initials',\n })}\n >\n <div\n className=\"tw-avatar__content\"\n style={{\n backgroundColor: backgroundColor || backgroundColorFromSeed,\n }}\n >\n {children}\n </div>\n </div>\n );\n};\n\nexport default Avatar;\n"],"names":["backwardsCompatibleSize","size","Avatar","backgroundColor","backgroundColorSeed","children","className","outlined","sizeFromProps","theme","Theme","LIGHT","type","backgroundColorFromSeed","useMemo","getAvatarColorFromSeed","undefined","_jsx","classnames","Boolean","style"],"mappings":";;;;;;AA4BA,MAAMA,uBAAuB,GAAIC,IAAgB,IAAuB;AACtE,EAAA,QAAQA,IAAI;AACV,IAAA,KAAK,IAAI;AACP,MAAA,OAAO,EAAE,CAAA;AAEX,IAAA,KAAK,IAAI;AACP,MAAA,OAAO,EAAE,CAAA;AAEX,IAAA,KAAK,IAAI;AACP,MAAA,OAAO,EAAE,CAAA;AAEX,IAAA;AACE,MAAA,OAAOA,IAAI,CAAA;AACf,GAAA;AACF,CAAC,CAAA;AAEKC,MAAAA,MAAM,GAA0BA,CAAC;AACrCC,EAAAA,eAAe,GAAG,IAAI;AACtBC,EAAAA,mBAAmB,GAAG,IAAI;AAC1BC,EAAAA,QAAQ,GAAG,IAAI;EACfC,SAAS;AACTC,EAAAA,QAAQ,GAAG,KAAK;EAChBN,IAAI,EAAEO,aAAa,GAAG,EAAE;EACxBC,KAAK,GAAGC,KAAK,CAACC,KAAK;AACnBC,EAAAA,IAAI,GAAG,WAAA;AAAW,CACnB,KAAI;EACH,MAAMC,uBAAuB,GAAGC,OAAO,CACrC,MACE,CAACX,eAAe,IAAIC,mBAAmB,GACnC,CAAOW,IAAAA,EAAAA,sBAAsB,CAACX,mBAAmB,CAAC,CAAG,CAAA,CAAA,GACrDY,SAAS,EACf,CAACb,eAAe,EAAEC,mBAAmB,CAAC,CACvC,CAAA;AAED,EAAA,MAAMH,IAAI,GAAGD,uBAAuB,CAACQ,aAAa,CAAC,CAAA;AAEnD,EAAA,oBACES,GAAA,CAAA,KAAA,EAAA;AACEX,IAAAA,SAAS,EAAEY,UAAU,CAAC,WAAW,EAAEZ,SAAS,EAAE,CAAcL,WAAAA,EAAAA,IAAI,CAAE,CAAA,EAAE,CAAcW,WAAAA,EAAAA,IAAI,EAAE,EAAE;AACxF,MAAA,qBAAqB,EAAEL,QAAQ;AAC/B,MAAA,oBAAoB,EAAEY,OAAO,CAACN,uBAAuB,CAAC;MACtD,oBAAoB,EAAED,IAAI,KAAK,UAAA;AAChC,KAAA,CAAE;AAAAP,IAAAA,QAAA,eAEHY,GAAA,CAAA,KAAA,EAAA;AACEX,MAAAA,SAAS,EAAC,oBAAoB;AAC9Bc,MAAAA,KAAK,EAAE;QACLjB,eAAe,EAAEA,eAAe,IAAIU,uBAAAA;OACpC;AAAAR,MAAAA,QAAA,EAEDA,QAAAA;KACE,CAAA;AACP,GAAK,CAAC,CAAA;AAEV;;;;"}
1
+ {"version":3,"file":"Avatar.mjs","sources":["../../src/avatar/Avatar.tsx"],"sourcesContent":["import classnames from 'classnames';\nimport { useMemo } from 'react';\n\nimport { Theme } from '../common';\n\nimport { getAvatarColorFromSeed } from './colors';\n\ntype NumericAvatarSize = 24 | 40 | 48 | 56 | 72;\n\ntype LegacyAvatarSize = 'sm' | 'md' | 'lg';\n\nexport type AvatarSize = NumericAvatarSize | LegacyAvatarSize;\n\nexport type AvatarTheme = 'light' | 'dark';\n\nexport type AvatarType = 'thumbnail' | 'icon' | 'emoji' | 'initials';\n\nexport interface AvatarProps {\n backgroundColor?: string;\n backgroundColorSeed?: string;\n children?: React.ReactNode;\n className?: string;\n outlined?: boolean;\n size?: AvatarSize;\n theme?: AvatarTheme;\n type?: AvatarType;\n 'aria-label'?: string;\n}\n\nconst backwardsCompatibleSize = (size: AvatarSize): NumericAvatarSize => {\n switch (size) {\n case 'sm':\n return 24;\n\n case 'md':\n return 48;\n\n case 'lg':\n return 72;\n\n default:\n return size;\n }\n};\n\nconst Avatar: React.FC<AvatarProps> = ({\n backgroundColor = null,\n backgroundColorSeed = null,\n children = null,\n className,\n outlined = false,\n size: sizeFromProps = 48,\n theme = Theme.LIGHT,\n type = 'thumbnail',\n 'aria-label': ariaLabel,\n}) => {\n const backgroundColorFromSeed = useMemo<string | undefined>(\n () =>\n !backgroundColor && backgroundColorSeed\n ? `var(${getAvatarColorFromSeed(backgroundColorSeed)})`\n : undefined,\n [backgroundColor, backgroundColorSeed],\n );\n\n const size = backwardsCompatibleSize(sizeFromProps);\n\n return (\n <div\n className={classnames('tw-avatar', className, `tw-avatar--${size}`, `tw-avatar--${type}`, {\n 'tw-avatar--outlined': outlined,\n 'tw-avatar--branded': Boolean(backgroundColorFromSeed),\n 'np-text-title-body': type === 'initials',\n })}\n aria-label={ariaLabel}\n >\n <div\n className=\"tw-avatar__content\"\n style={{\n backgroundColor: backgroundColor || backgroundColorFromSeed,\n }}\n >\n {children}\n </div>\n </div>\n );\n};\n\nexport default Avatar;\n"],"names":["backwardsCompatibleSize","size","Avatar","backgroundColor","backgroundColorSeed","children","className","outlined","sizeFromProps","theme","Theme","LIGHT","type","ariaLabel","backgroundColorFromSeed","useMemo","getAvatarColorFromSeed","undefined","_jsx","classnames","Boolean","style"],"mappings":";;;;;;AA6BA,MAAMA,uBAAuB,GAAIC,IAAgB,IAAuB;AACtE,EAAA,QAAQA,IAAI;AACV,IAAA,KAAK,IAAI;AACP,MAAA,OAAO,EAAE,CAAA;AAEX,IAAA,KAAK,IAAI;AACP,MAAA,OAAO,EAAE,CAAA;AAEX,IAAA,KAAK,IAAI;AACP,MAAA,OAAO,EAAE,CAAA;AAEX,IAAA;AACE,MAAA,OAAOA,IAAI,CAAA;AACf,GAAA;AACF,CAAC,CAAA;AAEKC,MAAAA,MAAM,GAA0BA,CAAC;AACrCC,EAAAA,eAAe,GAAG,IAAI;AACtBC,EAAAA,mBAAmB,GAAG,IAAI;AAC1BC,EAAAA,QAAQ,GAAG,IAAI;EACfC,SAAS;AACTC,EAAAA,QAAQ,GAAG,KAAK;EAChBN,IAAI,EAAEO,aAAa,GAAG,EAAE;EACxBC,KAAK,GAAGC,KAAK,CAACC,KAAK;AACnBC,EAAAA,IAAI,GAAG,WAAW;AAClB,EAAA,YAAY,EAAEC,SAAAA;AAAS,CACxB,KAAI;EACH,MAAMC,uBAAuB,GAAGC,OAAO,CACrC,MACE,CAACZ,eAAe,IAAIC,mBAAmB,GACnC,CAAOY,IAAAA,EAAAA,sBAAsB,CAACZ,mBAAmB,CAAC,CAAG,CAAA,CAAA,GACrDa,SAAS,EACf,CAACd,eAAe,EAAEC,mBAAmB,CAAC,CACvC,CAAA;AAED,EAAA,MAAMH,IAAI,GAAGD,uBAAuB,CAACQ,aAAa,CAAC,CAAA;AAEnD,EAAA,oBACEU,GAAA,CAAA,KAAA,EAAA;AACEZ,IAAAA,SAAS,EAAEa,UAAU,CAAC,WAAW,EAAEb,SAAS,EAAE,CAAcL,WAAAA,EAAAA,IAAI,CAAE,CAAA,EAAE,CAAcW,WAAAA,EAAAA,IAAI,EAAE,EAAE;AACxF,MAAA,qBAAqB,EAAEL,QAAQ;AAC/B,MAAA,oBAAoB,EAAEa,OAAO,CAACN,uBAAuB,CAAC;MACtD,oBAAoB,EAAEF,IAAI,KAAK,UAAA;AAChC,KAAA,CAAE;AACH,IAAA,YAAA,EAAYC,SAAU;AAAAR,IAAAA,QAAA,eAEtBa,GAAA,CAAA,KAAA,EAAA;AACEZ,MAAAA,SAAS,EAAC,oBAAoB;AAC9Be,MAAAA,KAAK,EAAE;QACLlB,eAAe,EAAEA,eAAe,IAAIW,uBAAAA;OACpC;AAAAT,MAAAA,QAAA,EAEDA,QAAAA;KACE,CAAA;AACP,GAAK,CAAC,CAAA;AAEV;;;;"}
@@ -15,10 +15,12 @@ const OptionalBadge = ({
15
15
  altText,
16
16
  statusIcon,
17
17
  children,
18
+ ariaLabel,
18
19
  ...rest
19
20
  }) => {
20
21
  if (url) {
21
22
  return /*#__PURE__*/jsxRuntime.jsx(Badge, {
23
+ "aria-label": ariaLabel,
22
24
  badge: /*#__PURE__*/jsxRuntime.jsx("img", {
23
25
  src: url,
24
26
  alt: altText
@@ -29,6 +31,7 @@ const OptionalBadge = ({
29
31
  }
30
32
  if (statusIcon) {
31
33
  return /*#__PURE__*/jsxRuntime.jsx(Badge, {
34
+ "aria-label": ariaLabel,
32
35
  badge: /*#__PURE__*/jsxRuntime.jsx(StatusIcon, {
33
36
  sentiment: statusIcon,
34
37
  size: size.Size.SMALL
@@ -43,6 +46,7 @@ const OptionalBadge = ({
43
46
  };
44
47
  const AvatarWrapper = ({
45
48
  url,
49
+ 'aria-label': ariaLabel,
46
50
  profileType: profileType$1,
47
51
  profileId,
48
52
  badgeUrl,
@@ -57,6 +61,13 @@ const AvatarWrapper = ({
57
61
  // Reset the errored state when url changes
58
62
  React.useEffect(() => setImageLoadError(false), [url]);
59
63
  const getAvatarProps = () => {
64
+ let updatedAvatarProps = avatarProps;
65
+ if (!badgeUrl && !badgeStatusIcon && ariaLabel) {
66
+ updatedAvatarProps = {
67
+ ...updatedAvatarProps,
68
+ 'aria-label': ariaLabel
69
+ };
70
+ }
60
71
  if (url && !hasImageLoadError) {
61
72
  return {
62
73
  type: avatarTypes.AvatarType.THUMBNAIL,
@@ -65,7 +76,7 @@ const AvatarWrapper = ({
65
76
  alt: "",
66
77
  onError: () => setImageLoadError(true)
67
78
  }),
68
- ...avatarProps
79
+ ...updatedAvatarProps
69
80
  };
70
81
  }
71
82
  if (profileType$1) {
@@ -76,7 +87,7 @@ const AvatarWrapper = ({
76
87
  }) : /*#__PURE__*/jsxRuntime.jsx(icons.Person, {
77
88
  size: "24"
78
89
  }),
79
- ...avatarProps
90
+ ...updatedAvatarProps
80
91
  };
81
92
  }
82
93
  if (name) {
@@ -86,7 +97,7 @@ const AvatarWrapper = ({
86
97
  children: getInitials(name)
87
98
  }),
88
99
  backgroundColorSeed: profileId?.toString(),
89
- ...avatarProps
100
+ ...updatedAvatarProps
90
101
  };
91
102
  }
92
103
  return {
@@ -94,11 +105,12 @@ const AvatarWrapper = ({
94
105
  children: /*#__PURE__*/jsxRuntime.jsx(icons.Person, {
95
106
  size: "24"
96
107
  }),
97
- ...avatarProps
108
+ ...updatedAvatarProps
98
109
  };
99
110
  };
100
111
  return /*#__PURE__*/jsxRuntime.jsx(OptionalBadge, {
101
112
  url: badgeUrl,
113
+ ariaLabel: ariaLabel,
102
114
  altText: badgeAltText,
103
115
  statusIcon: badgeStatusIcon,
104
116
  ...badgeProps,
@@ -1 +1 @@
1
- {"version":3,"file":"AvatarWrapper.js","sources":["../../src/avatarWrapper/AvatarWrapper.tsx"],"sourcesContent":["import { Person as ProfileIcon, Briefcase as BriefcaseIcon } from '@transferwise/icons';\nimport { useState, useEffect } from 'react';\n\nimport Avatar, { AvatarProps, AvatarType } from '../avatar';\nimport Badge, { BadgeProps } from '../badge';\nimport { ProfileType, ProfileTypePersonal, ProfileTypeBusiness, Size, Sentiment } from '../common';\nimport StatusIcon from '../statusIcon/StatusIcon';\n\ninterface OptionalBadgeProps extends Omit<BadgeProps, 'badge'> {\n url?: string;\n altText?: string;\n statusIcon?: Sentiment;\n}\n\nconst OptionalBadge = ({ url, altText, statusIcon, children, ...rest }: OptionalBadgeProps) => {\n if (url) {\n return (\n <Badge badge={<img src={url} alt={altText} />} {...rest}>\n {children}\n </Badge>\n );\n }\n if (statusIcon) {\n return (\n <Badge badge={<StatusIcon sentiment={statusIcon} size={Size.SMALL} />} {...rest}>\n {children}\n </Badge>\n );\n }\n return <>{children}</>;\n};\n\nexport type AvatarWrapperProps = {\n url?: string;\n profileType?: ProfileTypeBusiness | ProfileTypePersonal;\n profileId?: string;\n name?: string;\n avatarProps?: AvatarProps;\n badgeProps?: BadgeProps;\n} & (\n | {\n badgeUrl: string;\n badgeAltText: string;\n badgeStatusIcon?: never;\n }\n | {\n badgeUrl?: never;\n badgeAltText?: never;\n badgeStatusIcon: Sentiment;\n }\n | {\n badgeUrl?: never;\n badgeAltText?: never;\n badgeStatusIcon?: never;\n }\n);\n\nconst AvatarWrapper = ({\n url,\n profileType,\n profileId,\n badgeUrl,\n badgeAltText,\n badgeStatusIcon,\n name,\n avatarProps,\n badgeProps,\n}: AvatarWrapperProps) => {\n const [hasImageLoadError, setImageLoadError] = useState(false);\n const isBusinessProfile = profileType === ProfileType.BUSINESS;\n\n // Reset the errored state when url changes\n useEffect(() => setImageLoadError(false), [url]);\n\n const getAvatarProps = () => {\n if (url && !hasImageLoadError) {\n return {\n type: AvatarType.THUMBNAIL,\n children: <img src={url} alt=\"\" onError={() => setImageLoadError(true)} />,\n ...avatarProps,\n };\n }\n if (profileType) {\n return {\n type: AvatarType.ICON,\n children: isBusinessProfile ? <BriefcaseIcon size=\"24\" /> : <ProfileIcon size=\"24\" />,\n ...avatarProps,\n };\n }\n if (name) {\n return {\n type: AvatarType.INITIALS,\n children: <>{getInitials(name)}</>,\n backgroundColorSeed: profileId?.toString(),\n ...avatarProps,\n };\n }\n return {\n type: AvatarType.ICON,\n children: <ProfileIcon size=\"24\" />,\n ...avatarProps,\n };\n };\n\n return (\n <OptionalBadge\n url={badgeUrl}\n altText={badgeAltText}\n statusIcon={badgeStatusIcon}\n {...badgeProps}\n >\n <Avatar size={Size.MEDIUM} {...getAvatarProps()} />\n </OptionalBadge>\n );\n};\n\nfunction getInitials(name: string) {\n const allInitials = name\n .split(' ')\n .map((part) => part[0])\n .join('')\n .toUpperCase();\n\n if (allInitials.length === 1) {\n return allInitials[0];\n }\n\n return allInitials[0] + allInitials.slice(-1);\n}\n\nexport default AvatarWrapper;\n"],"names":["OptionalBadge","url","altText","statusIcon","children","rest","_jsx","Badge","badge","src","alt","StatusIcon","sentiment","size","Size","SMALL","_Fragment","AvatarWrapper","profileType","profileId","badgeUrl","badgeAltText","badgeStatusIcon","name","avatarProps","badgeProps","hasImageLoadError","setImageLoadError","useState","isBusinessProfile","ProfileType","BUSINESS","useEffect","getAvatarProps","type","AvatarType","THUMBNAIL","onError","ICON","BriefcaseIcon","ProfileIcon","INITIALS","getInitials","backgroundColorSeed","toString","Avatar","MEDIUM","allInitials","split","map","part","join","toUpperCase","length","slice"],"mappings":"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"}
1
+ {"version":3,"file":"AvatarWrapper.js","sources":["../../src/avatarWrapper/AvatarWrapper.tsx"],"sourcesContent":["import { Person as ProfileIcon, Briefcase as BriefcaseIcon } from '@transferwise/icons';\nimport { useState, useEffect } from 'react';\n\nimport Avatar, { AvatarProps, AvatarType } from '../avatar';\nimport Badge, { BadgeProps } from '../badge';\nimport { ProfileType, ProfileTypePersonal, ProfileTypeBusiness, Size, Sentiment } from '../common';\nimport StatusIcon from '../statusIcon/StatusIcon';\n\ninterface OptionalBadgeProps extends Omit<BadgeProps, 'badge'> {\n url?: string;\n ariaLabel?: string;\n altText?: string;\n statusIcon?: Sentiment;\n}\n\nconst OptionalBadge = ({\n url,\n altText,\n statusIcon,\n children,\n ariaLabel,\n ...rest\n}: OptionalBadgeProps) => {\n if (url) {\n return (\n <Badge aria-label={ariaLabel} badge={<img src={url} alt={altText} />} {...rest}>\n {children}\n </Badge>\n );\n }\n if (statusIcon) {\n return (\n <Badge\n aria-label={ariaLabel}\n badge={<StatusIcon sentiment={statusIcon} size={Size.SMALL} />}\n {...rest}\n >\n {children}\n </Badge>\n );\n }\n return <>{children}</>;\n};\n\nexport type AvatarWrapperProps = {\n url?: string;\n 'aria-label'?: string;\n profileType?: ProfileTypeBusiness | ProfileTypePersonal;\n profileId?: string;\n name?: string;\n avatarProps?: AvatarProps;\n badgeProps?: BadgeProps;\n} & (\n | {\n badgeUrl: string;\n badgeAltText: string;\n badgeStatusIcon?: never;\n }\n | {\n badgeUrl?: never;\n badgeAltText?: never;\n badgeStatusIcon: Sentiment;\n }\n | {\n badgeUrl?: never;\n badgeAltText?: never;\n badgeStatusIcon?: never;\n }\n);\n\nconst AvatarWrapper = ({\n url,\n 'aria-label': ariaLabel,\n profileType,\n profileId,\n badgeUrl,\n badgeAltText,\n badgeStatusIcon,\n name,\n avatarProps,\n badgeProps,\n}: AvatarWrapperProps) => {\n const [hasImageLoadError, setImageLoadError] = useState(false);\n const isBusinessProfile = profileType === ProfileType.BUSINESS;\n\n // Reset the errored state when url changes\n useEffect(() => setImageLoadError(false), [url]);\n\n const getAvatarProps = () => {\n let updatedAvatarProps = avatarProps;\n if (!badgeUrl && !badgeStatusIcon && ariaLabel) {\n updatedAvatarProps = { ...updatedAvatarProps, 'aria-label': ariaLabel };\n }\n if (url && !hasImageLoadError) {\n return {\n type: AvatarType.THUMBNAIL,\n children: <img src={url} alt=\"\" onError={() => setImageLoadError(true)} />,\n ...updatedAvatarProps,\n };\n }\n if (profileType) {\n return {\n type: AvatarType.ICON,\n children: isBusinessProfile ? <BriefcaseIcon size=\"24\" /> : <ProfileIcon size=\"24\" />,\n ...updatedAvatarProps,\n };\n }\n if (name) {\n return {\n type: AvatarType.INITIALS,\n children: <>{getInitials(name)}</>,\n backgroundColorSeed: profileId?.toString(),\n ...updatedAvatarProps,\n };\n }\n return {\n type: AvatarType.ICON,\n children: <ProfileIcon size=\"24\" />,\n ...updatedAvatarProps,\n };\n };\n\n return (\n <OptionalBadge\n url={badgeUrl}\n ariaLabel={ariaLabel}\n altText={badgeAltText}\n statusIcon={badgeStatusIcon}\n {...badgeProps}\n >\n <Avatar size={Size.MEDIUM} {...getAvatarProps()} />\n </OptionalBadge>\n );\n};\n\nfunction getInitials(name: string) {\n const allInitials = name\n .split(' ')\n .map((part) => part[0])\n .join('')\n .toUpperCase();\n\n if (allInitials.length === 1) {\n return allInitials[0];\n }\n\n return allInitials[0] + allInitials.slice(-1);\n}\n\nexport default AvatarWrapper;\n"],"names":["OptionalBadge","url","altText","statusIcon","children","ariaLabel","rest","_jsx","Badge","badge","src","alt","StatusIcon","sentiment","size","Size","SMALL","_Fragment","AvatarWrapper","profileType","profileId","badgeUrl","badgeAltText","badgeStatusIcon","name","avatarProps","badgeProps","hasImageLoadError","setImageLoadError","useState","isBusinessProfile","ProfileType","BUSINESS","useEffect","getAvatarProps","updatedAvatarProps","type","AvatarType","THUMBNAIL","onError","ICON","BriefcaseIcon","ProfileIcon","INITIALS","getInitials","backgroundColorSeed","toString","Avatar","MEDIUM","allInitials","split","map","part","join","toUpperCase","length","slice"],"mappings":"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"}
@@ -13,10 +13,12 @@ const OptionalBadge = ({
13
13
  altText,
14
14
  statusIcon,
15
15
  children,
16
+ ariaLabel,
16
17
  ...rest
17
18
  }) => {
18
19
  if (url) {
19
20
  return /*#__PURE__*/jsx(Badge, {
21
+ "aria-label": ariaLabel,
20
22
  badge: /*#__PURE__*/jsx("img", {
21
23
  src: url,
22
24
  alt: altText
@@ -27,6 +29,7 @@ const OptionalBadge = ({
27
29
  }
28
30
  if (statusIcon) {
29
31
  return /*#__PURE__*/jsx(Badge, {
32
+ "aria-label": ariaLabel,
30
33
  badge: /*#__PURE__*/jsx(StatusIcon, {
31
34
  sentiment: statusIcon,
32
35
  size: Size.SMALL
@@ -41,6 +44,7 @@ const OptionalBadge = ({
41
44
  };
42
45
  const AvatarWrapper = ({
43
46
  url,
47
+ 'aria-label': ariaLabel,
44
48
  profileType,
45
49
  profileId,
46
50
  badgeUrl,
@@ -55,6 +59,13 @@ const AvatarWrapper = ({
55
59
  // Reset the errored state when url changes
56
60
  useEffect(() => setImageLoadError(false), [url]);
57
61
  const getAvatarProps = () => {
62
+ let updatedAvatarProps = avatarProps;
63
+ if (!badgeUrl && !badgeStatusIcon && ariaLabel) {
64
+ updatedAvatarProps = {
65
+ ...updatedAvatarProps,
66
+ 'aria-label': ariaLabel
67
+ };
68
+ }
58
69
  if (url && !hasImageLoadError) {
59
70
  return {
60
71
  type: AvatarType.THUMBNAIL,
@@ -63,7 +74,7 @@ const AvatarWrapper = ({
63
74
  alt: "",
64
75
  onError: () => setImageLoadError(true)
65
76
  }),
66
- ...avatarProps
77
+ ...updatedAvatarProps
67
78
  };
68
79
  }
69
80
  if (profileType) {
@@ -74,7 +85,7 @@ const AvatarWrapper = ({
74
85
  }) : /*#__PURE__*/jsx(Person, {
75
86
  size: "24"
76
87
  }),
77
- ...avatarProps
88
+ ...updatedAvatarProps
78
89
  };
79
90
  }
80
91
  if (name) {
@@ -84,7 +95,7 @@ const AvatarWrapper = ({
84
95
  children: getInitials(name)
85
96
  }),
86
97
  backgroundColorSeed: profileId?.toString(),
87
- ...avatarProps
98
+ ...updatedAvatarProps
88
99
  };
89
100
  }
90
101
  return {
@@ -92,11 +103,12 @@ const AvatarWrapper = ({
92
103
  children: /*#__PURE__*/jsx(Person, {
93
104
  size: "24"
94
105
  }),
95
- ...avatarProps
106
+ ...updatedAvatarProps
96
107
  };
97
108
  };
98
109
  return /*#__PURE__*/jsx(OptionalBadge, {
99
110
  url: badgeUrl,
111
+ ariaLabel: ariaLabel,
100
112
  altText: badgeAltText,
101
113
  statusIcon: badgeStatusIcon,
102
114
  ...badgeProps,
@@ -1 +1 @@
1
- {"version":3,"file":"AvatarWrapper.mjs","sources":["../../src/avatarWrapper/AvatarWrapper.tsx"],"sourcesContent":["import { Person as ProfileIcon, Briefcase as BriefcaseIcon } from '@transferwise/icons';\nimport { useState, useEffect } from 'react';\n\nimport Avatar, { AvatarProps, AvatarType } from '../avatar';\nimport Badge, { BadgeProps } from '../badge';\nimport { ProfileType, ProfileTypePersonal, ProfileTypeBusiness, Size, Sentiment } from '../common';\nimport StatusIcon from '../statusIcon/StatusIcon';\n\ninterface OptionalBadgeProps extends Omit<BadgeProps, 'badge'> {\n url?: string;\n altText?: string;\n statusIcon?: Sentiment;\n}\n\nconst OptionalBadge = ({ url, altText, statusIcon, children, ...rest }: OptionalBadgeProps) => {\n if (url) {\n return (\n <Badge badge={<img src={url} alt={altText} />} {...rest}>\n {children}\n </Badge>\n );\n }\n if (statusIcon) {\n return (\n <Badge badge={<StatusIcon sentiment={statusIcon} size={Size.SMALL} />} {...rest}>\n {children}\n </Badge>\n );\n }\n return <>{children}</>;\n};\n\nexport type AvatarWrapperProps = {\n url?: string;\n profileType?: ProfileTypeBusiness | ProfileTypePersonal;\n profileId?: string;\n name?: string;\n avatarProps?: AvatarProps;\n badgeProps?: BadgeProps;\n} & (\n | {\n badgeUrl: string;\n badgeAltText: string;\n badgeStatusIcon?: never;\n }\n | {\n badgeUrl?: never;\n badgeAltText?: never;\n badgeStatusIcon: Sentiment;\n }\n | {\n badgeUrl?: never;\n badgeAltText?: never;\n badgeStatusIcon?: never;\n }\n);\n\nconst AvatarWrapper = ({\n url,\n profileType,\n profileId,\n badgeUrl,\n badgeAltText,\n badgeStatusIcon,\n name,\n avatarProps,\n badgeProps,\n}: AvatarWrapperProps) => {\n const [hasImageLoadError, setImageLoadError] = useState(false);\n const isBusinessProfile = profileType === ProfileType.BUSINESS;\n\n // Reset the errored state when url changes\n useEffect(() => setImageLoadError(false), [url]);\n\n const getAvatarProps = () => {\n if (url && !hasImageLoadError) {\n return {\n type: AvatarType.THUMBNAIL,\n children: <img src={url} alt=\"\" onError={() => setImageLoadError(true)} />,\n ...avatarProps,\n };\n }\n if (profileType) {\n return {\n type: AvatarType.ICON,\n children: isBusinessProfile ? <BriefcaseIcon size=\"24\" /> : <ProfileIcon size=\"24\" />,\n ...avatarProps,\n };\n }\n if (name) {\n return {\n type: AvatarType.INITIALS,\n children: <>{getInitials(name)}</>,\n backgroundColorSeed: profileId?.toString(),\n ...avatarProps,\n };\n }\n return {\n type: AvatarType.ICON,\n children: <ProfileIcon size=\"24\" />,\n ...avatarProps,\n };\n };\n\n return (\n <OptionalBadge\n url={badgeUrl}\n altText={badgeAltText}\n statusIcon={badgeStatusIcon}\n {...badgeProps}\n >\n <Avatar size={Size.MEDIUM} {...getAvatarProps()} />\n </OptionalBadge>\n );\n};\n\nfunction getInitials(name: string) {\n const allInitials = name\n .split(' ')\n .map((part) => part[0])\n .join('')\n .toUpperCase();\n\n if (allInitials.length === 1) {\n return allInitials[0];\n }\n\n return allInitials[0] + allInitials.slice(-1);\n}\n\nexport default AvatarWrapper;\n"],"names":["OptionalBadge","url","altText","statusIcon","children","rest","_jsx","Badge","badge","src","alt","StatusIcon","sentiment","size","Size","SMALL","_Fragment","AvatarWrapper","profileType","profileId","badgeUrl","badgeAltText","badgeStatusIcon","name","avatarProps","badgeProps","hasImageLoadError","setImageLoadError","useState","isBusinessProfile","ProfileType","BUSINESS","useEffect","getAvatarProps","type","AvatarType","THUMBNAIL","onError","ICON","BriefcaseIcon","ProfileIcon","INITIALS","getInitials","backgroundColorSeed","toString","Avatar","MEDIUM","allInitials","split","map","part","join","toUpperCase","length","slice"],"mappings":"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"}
1
+ {"version":3,"file":"AvatarWrapper.mjs","sources":["../../src/avatarWrapper/AvatarWrapper.tsx"],"sourcesContent":["import { Person as ProfileIcon, Briefcase as BriefcaseIcon } from '@transferwise/icons';\nimport { useState, useEffect } from 'react';\n\nimport Avatar, { AvatarProps, AvatarType } from '../avatar';\nimport Badge, { BadgeProps } from '../badge';\nimport { ProfileType, ProfileTypePersonal, ProfileTypeBusiness, Size, Sentiment } from '../common';\nimport StatusIcon from '../statusIcon/StatusIcon';\n\ninterface OptionalBadgeProps extends Omit<BadgeProps, 'badge'> {\n url?: string;\n ariaLabel?: string;\n altText?: string;\n statusIcon?: Sentiment;\n}\n\nconst OptionalBadge = ({\n url,\n altText,\n statusIcon,\n children,\n ariaLabel,\n ...rest\n}: OptionalBadgeProps) => {\n if (url) {\n return (\n <Badge aria-label={ariaLabel} badge={<img src={url} alt={altText} />} {...rest}>\n {children}\n </Badge>\n );\n }\n if (statusIcon) {\n return (\n <Badge\n aria-label={ariaLabel}\n badge={<StatusIcon sentiment={statusIcon} size={Size.SMALL} />}\n {...rest}\n >\n {children}\n </Badge>\n );\n }\n return <>{children}</>;\n};\n\nexport type AvatarWrapperProps = {\n url?: string;\n 'aria-label'?: string;\n profileType?: ProfileTypeBusiness | ProfileTypePersonal;\n profileId?: string;\n name?: string;\n avatarProps?: AvatarProps;\n badgeProps?: BadgeProps;\n} & (\n | {\n badgeUrl: string;\n badgeAltText: string;\n badgeStatusIcon?: never;\n }\n | {\n badgeUrl?: never;\n badgeAltText?: never;\n badgeStatusIcon: Sentiment;\n }\n | {\n badgeUrl?: never;\n badgeAltText?: never;\n badgeStatusIcon?: never;\n }\n);\n\nconst AvatarWrapper = ({\n url,\n 'aria-label': ariaLabel,\n profileType,\n profileId,\n badgeUrl,\n badgeAltText,\n badgeStatusIcon,\n name,\n avatarProps,\n badgeProps,\n}: AvatarWrapperProps) => {\n const [hasImageLoadError, setImageLoadError] = useState(false);\n const isBusinessProfile = profileType === ProfileType.BUSINESS;\n\n // Reset the errored state when url changes\n useEffect(() => setImageLoadError(false), [url]);\n\n const getAvatarProps = () => {\n let updatedAvatarProps = avatarProps;\n if (!badgeUrl && !badgeStatusIcon && ariaLabel) {\n updatedAvatarProps = { ...updatedAvatarProps, 'aria-label': ariaLabel };\n }\n if (url && !hasImageLoadError) {\n return {\n type: AvatarType.THUMBNAIL,\n children: <img src={url} alt=\"\" onError={() => setImageLoadError(true)} />,\n ...updatedAvatarProps,\n };\n }\n if (profileType) {\n return {\n type: AvatarType.ICON,\n children: isBusinessProfile ? <BriefcaseIcon size=\"24\" /> : <ProfileIcon size=\"24\" />,\n ...updatedAvatarProps,\n };\n }\n if (name) {\n return {\n type: AvatarType.INITIALS,\n children: <>{getInitials(name)}</>,\n backgroundColorSeed: profileId?.toString(),\n ...updatedAvatarProps,\n };\n }\n return {\n type: AvatarType.ICON,\n children: <ProfileIcon size=\"24\" />,\n ...updatedAvatarProps,\n };\n };\n\n return (\n <OptionalBadge\n url={badgeUrl}\n ariaLabel={ariaLabel}\n altText={badgeAltText}\n statusIcon={badgeStatusIcon}\n {...badgeProps}\n >\n <Avatar size={Size.MEDIUM} {...getAvatarProps()} />\n </OptionalBadge>\n );\n};\n\nfunction getInitials(name: string) {\n const allInitials = name\n .split(' ')\n .map((part) => part[0])\n .join('')\n .toUpperCase();\n\n if (allInitials.length === 1) {\n return allInitials[0];\n }\n\n return allInitials[0] + allInitials.slice(-1);\n}\n\nexport default AvatarWrapper;\n"],"names":["OptionalBadge","url","altText","statusIcon","children","ariaLabel","rest","_jsx","Badge","badge","src","alt","StatusIcon","sentiment","size","Size","SMALL","_Fragment","AvatarWrapper","profileType","profileId","badgeUrl","badgeAltText","badgeStatusIcon","name","avatarProps","badgeProps","hasImageLoadError","setImageLoadError","useState","isBusinessProfile","ProfileType","BUSINESS","useEffect","getAvatarProps","updatedAvatarProps","type","AvatarType","THUMBNAIL","onError","ICON","BriefcaseIcon","ProfileIcon","INITIALS","getInitials","backgroundColorSeed","toString","Avatar","MEDIUM","allInitials","split","map","part","join","toUpperCase","length","slice"],"mappings":"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"}
@@ -14,6 +14,7 @@ const Badge = ({
14
14
  className = undefined,
15
15
  size: size$1 = size.Size.SMALL,
16
16
  border = theme.Theme.LIGHT,
17
+ 'aria-label': ariaLabel,
17
18
  children
18
19
  }) => {
19
20
  const classes = classNames__default.default('tw-badge', {
@@ -21,6 +22,7 @@ const Badge = ({
21
22
  [`tw-badge-${size$1}`]: size$1
22
23
  }, className);
23
24
  return /*#__PURE__*/jsxRuntime.jsxs("div", {
25
+ "aria-label": ariaLabel,
24
26
  className: classes,
25
27
  children: [/*#__PURE__*/jsxRuntime.jsx("div", {
26
28
  className: "tw-badge__children",
@@ -1 +1 @@
1
- {"version":3,"file":"Badge.js","sources":["../../src/badge/Badge.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport { ReactNode } from 'react';\n\nimport {\n Size,\n Theme,\n SizeSmall,\n SizeMedium,\n SizeLarge,\n ThemeDark,\n ThemeLight,\n CommonProps,\n} from '../common';\n\nexport type BadgeProps = {\n badge: ReactNode;\n children: ReactNode;\n size?: SizeSmall | SizeMedium | SizeLarge;\n border?: ThemeDark | ThemeLight;\n} & CommonProps;\n\nconst Badge = ({\n badge,\n className = undefined,\n size = Size.SMALL,\n border = Theme.LIGHT,\n children,\n}: BadgeProps) => {\n const classes: string = classNames(\n 'tw-badge',\n {\n [`tw-badge-border-${border}`]: border,\n [`tw-badge-${size}`]: size,\n },\n className,\n );\n\n return (\n <div className={classes}>\n <div className=\"tw-badge__children\">{children}</div>\n <div className=\"tw-badge__content\">{badge}</div>\n </div>\n );\n};\n\nexport default Badge;\n"],"names":["Badge","badge","className","undefined","size","Size","SMALL","border","Theme","LIGHT","children","classes","classNames","_jsxs","_jsx"],"mappings":";;;;;;;;;;;AAqBMA,MAAAA,KAAK,GAAGA,CAAC;EACbC,KAAK;AACLC,EAAAA,SAAS,GAAGC,SAAS;QACrBC,MAAI,GAAGC,SAAI,CAACC,KAAK;EACjBC,MAAM,GAAGC,WAAK,CAACC,KAAK;AACpBC,EAAAA,QAAAA;AACW,CAAA,KAAI;AACf,EAAA,MAAMC,OAAO,GAAWC,2BAAU,CAChC,UAAU,EACV;AACE,IAAA,CAAC,CAAmBL,gBAAAA,EAAAA,MAAM,CAAE,CAAA,GAAGA,MAAM;IACrC,CAAC,CAAA,SAAA,EAAYH,MAAI,CAAA,CAAE,GAAGA,MAAAA;GACvB,EACDF,SAAS,CACV,CAAA;AAED,EAAA,oBACEW,eAAA,CAAA,KAAA,EAAA;AAAKX,IAAAA,SAAS,EAAES,OAAQ;AAAAD,IAAAA,QAAA,gBACtBI,cAAA,CAAA,KAAA,EAAA;AAAKZ,MAAAA,SAAS,EAAC,oBAAoB;AAAAQ,MAAAA,QAAA,EAAEA,QAAAA;KAAc,CACnD,eAAAI,cAAA,CAAA,KAAA,EAAA;AAAKZ,MAAAA,SAAS,EAAC,mBAAmB;AAAAQ,MAAAA,QAAA,EAAET,KAAAA;AAAK,KAAM,CACjD,CAAA;AAAA,GAAK,CAAC,CAAA;AAEV;;;;"}
1
+ {"version":3,"file":"Badge.js","sources":["../../src/badge/Badge.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport { ReactNode } from 'react';\n\nimport {\n Size,\n Theme,\n SizeSmall,\n SizeMedium,\n SizeLarge,\n ThemeDark,\n ThemeLight,\n CommonProps,\n} from '../common';\n\nexport type BadgeProps = {\n badge: ReactNode;\n children: ReactNode;\n size?: SizeSmall | SizeMedium | SizeLarge;\n border?: ThemeDark | ThemeLight;\n 'aria-label'?: string;\n} & CommonProps;\n\nconst Badge = ({\n badge,\n className = undefined,\n size = Size.SMALL,\n border = Theme.LIGHT,\n 'aria-label': ariaLabel,\n children,\n}: BadgeProps) => {\n const classes: string = classNames(\n 'tw-badge',\n {\n [`tw-badge-border-${border}`]: border,\n [`tw-badge-${size}`]: size,\n },\n className,\n );\n\n return (\n <div aria-label={ariaLabel} className={classes}>\n <div className=\"tw-badge__children\">{children}</div>\n <div className=\"tw-badge__content\">{badge}</div>\n </div>\n );\n};\n\nexport default Badge;\n"],"names":["Badge","badge","className","undefined","size","Size","SMALL","border","Theme","LIGHT","ariaLabel","children","classes","classNames","_jsxs","_jsx"],"mappings":";;;;;;;;;;;AAsBMA,MAAAA,KAAK,GAAGA,CAAC;EACbC,KAAK;AACLC,EAAAA,SAAS,GAAGC,SAAS;QACrBC,MAAI,GAAGC,SAAI,CAACC,KAAK;EACjBC,MAAM,GAAGC,WAAK,CAACC,KAAK;AACpB,EAAA,YAAY,EAAEC,SAAS;AACvBC,EAAAA,QAAAA;AAAQ,CACG,KAAI;AACf,EAAA,MAAMC,OAAO,GAAWC,2BAAU,CAChC,UAAU,EACV;AACE,IAAA,CAAC,CAAmBN,gBAAAA,EAAAA,MAAM,CAAE,CAAA,GAAGA,MAAM;IACrC,CAAC,CAAA,SAAA,EAAYH,MAAI,CAAA,CAAE,GAAGA,MAAAA;GACvB,EACDF,SAAS,CACV,CAAA;AAED,EAAA,oBACEY,eAAA,CAAA,KAAA,EAAA;AAAK,IAAA,YAAA,EAAYJ,SAAU;AAACR,IAAAA,SAAS,EAAEU,OAAQ;AAAAD,IAAAA,QAAA,gBAC7CI,cAAA,CAAA,KAAA,EAAA;AAAKb,MAAAA,SAAS,EAAC,oBAAoB;AAAAS,MAAAA,QAAA,EAAEA,QAAAA;KAAc,CACnD,eAAAI,cAAA,CAAA,KAAA,EAAA;AAAKb,MAAAA,SAAS,EAAC,mBAAmB;AAAAS,MAAAA,QAAA,EAAEV,KAAAA;AAAK,KAAM,CACjD,CAAA;AAAA,GAAK,CAAC,CAAA;AAEV;;;;"}
@@ -8,6 +8,7 @@ const Badge = ({
8
8
  className = undefined,
9
9
  size = Size.SMALL,
10
10
  border = Theme.LIGHT,
11
+ 'aria-label': ariaLabel,
11
12
  children
12
13
  }) => {
13
14
  const classes = classNames('tw-badge', {
@@ -15,6 +16,7 @@ const Badge = ({
15
16
  [`tw-badge-${size}`]: size
16
17
  }, className);
17
18
  return /*#__PURE__*/jsxs("div", {
19
+ "aria-label": ariaLabel,
18
20
  className: classes,
19
21
  children: [/*#__PURE__*/jsx("div", {
20
22
  className: "tw-badge__children",
@@ -1 +1 @@
1
- {"version":3,"file":"Badge.mjs","sources":["../../src/badge/Badge.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport { ReactNode } from 'react';\n\nimport {\n Size,\n Theme,\n SizeSmall,\n SizeMedium,\n SizeLarge,\n ThemeDark,\n ThemeLight,\n CommonProps,\n} from '../common';\n\nexport type BadgeProps = {\n badge: ReactNode;\n children: ReactNode;\n size?: SizeSmall | SizeMedium | SizeLarge;\n border?: ThemeDark | ThemeLight;\n} & CommonProps;\n\nconst Badge = ({\n badge,\n className = undefined,\n size = Size.SMALL,\n border = Theme.LIGHT,\n children,\n}: BadgeProps) => {\n const classes: string = classNames(\n 'tw-badge',\n {\n [`tw-badge-border-${border}`]: border,\n [`tw-badge-${size}`]: size,\n },\n className,\n );\n\n return (\n <div className={classes}>\n <div className=\"tw-badge__children\">{children}</div>\n <div className=\"tw-badge__content\">{badge}</div>\n </div>\n );\n};\n\nexport default Badge;\n"],"names":["Badge","badge","className","undefined","size","Size","SMALL","border","Theme","LIGHT","children","classes","classNames","_jsxs","_jsx"],"mappings":";;;;;AAqBMA,MAAAA,KAAK,GAAGA,CAAC;EACbC,KAAK;AACLC,EAAAA,SAAS,GAAGC,SAAS;EACrBC,IAAI,GAAGC,IAAI,CAACC,KAAK;EACjBC,MAAM,GAAGC,KAAK,CAACC,KAAK;AACpBC,EAAAA,QAAAA;AACW,CAAA,KAAI;AACf,EAAA,MAAMC,OAAO,GAAWC,UAAU,CAChC,UAAU,EACV;AACE,IAAA,CAAC,CAAmBL,gBAAAA,EAAAA,MAAM,CAAE,CAAA,GAAGA,MAAM;IACrC,CAAC,CAAA,SAAA,EAAYH,IAAI,CAAA,CAAE,GAAGA,IAAAA;GACvB,EACDF,SAAS,CACV,CAAA;AAED,EAAA,oBACEW,IAAA,CAAA,KAAA,EAAA;AAAKX,IAAAA,SAAS,EAAES,OAAQ;AAAAD,IAAAA,QAAA,gBACtBI,GAAA,CAAA,KAAA,EAAA;AAAKZ,MAAAA,SAAS,EAAC,oBAAoB;AAAAQ,MAAAA,QAAA,EAAEA,QAAAA;KAAc,CACnD,eAAAI,GAAA,CAAA,KAAA,EAAA;AAAKZ,MAAAA,SAAS,EAAC,mBAAmB;AAAAQ,MAAAA,QAAA,EAAET,KAAAA;AAAK,KAAM,CACjD,CAAA;AAAA,GAAK,CAAC,CAAA;AAEV;;;;"}
1
+ {"version":3,"file":"Badge.mjs","sources":["../../src/badge/Badge.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport { ReactNode } from 'react';\n\nimport {\n Size,\n Theme,\n SizeSmall,\n SizeMedium,\n SizeLarge,\n ThemeDark,\n ThemeLight,\n CommonProps,\n} from '../common';\n\nexport type BadgeProps = {\n badge: ReactNode;\n children: ReactNode;\n size?: SizeSmall | SizeMedium | SizeLarge;\n border?: ThemeDark | ThemeLight;\n 'aria-label'?: string;\n} & CommonProps;\n\nconst Badge = ({\n badge,\n className = undefined,\n size = Size.SMALL,\n border = Theme.LIGHT,\n 'aria-label': ariaLabel,\n children,\n}: BadgeProps) => {\n const classes: string = classNames(\n 'tw-badge',\n {\n [`tw-badge-border-${border}`]: border,\n [`tw-badge-${size}`]: size,\n },\n className,\n );\n\n return (\n <div aria-label={ariaLabel} className={classes}>\n <div className=\"tw-badge__children\">{children}</div>\n <div className=\"tw-badge__content\">{badge}</div>\n </div>\n );\n};\n\nexport default Badge;\n"],"names":["Badge","badge","className","undefined","size","Size","SMALL","border","Theme","LIGHT","ariaLabel","children","classes","classNames","_jsxs","_jsx"],"mappings":";;;;;AAsBMA,MAAAA,KAAK,GAAGA,CAAC;EACbC,KAAK;AACLC,EAAAA,SAAS,GAAGC,SAAS;EACrBC,IAAI,GAAGC,IAAI,CAACC,KAAK;EACjBC,MAAM,GAAGC,KAAK,CAACC,KAAK;AACpB,EAAA,YAAY,EAAEC,SAAS;AACvBC,EAAAA,QAAAA;AAAQ,CACG,KAAI;AACf,EAAA,MAAMC,OAAO,GAAWC,UAAU,CAChC,UAAU,EACV;AACE,IAAA,CAAC,CAAmBN,gBAAAA,EAAAA,MAAM,CAAE,CAAA,GAAGA,MAAM;IACrC,CAAC,CAAA,SAAA,EAAYH,IAAI,CAAA,CAAE,GAAGA,IAAAA;GACvB,EACDF,SAAS,CACV,CAAA;AAED,EAAA,oBACEY,IAAA,CAAA,KAAA,EAAA;AAAK,IAAA,YAAA,EAAYJ,SAAU;AAACR,IAAAA,SAAS,EAAEU,OAAQ;AAAAD,IAAAA,QAAA,gBAC7CI,GAAA,CAAA,KAAA,EAAA;AAAKb,MAAAA,SAAS,EAAC,oBAAoB;AAAAS,MAAAA,QAAA,EAAEA,QAAAA;KAAc,CACnD,eAAAI,GAAA,CAAA,KAAA,EAAA;AAAKb,MAAAA,SAAS,EAAC,mBAAmB;AAAAS,MAAAA,QAAA,EAAEV,KAAAA;AAAK,KAAM,CACjD,CAAA;AAAA,GAAK,CAAC,CAAA;AAEV;;;;"}
package/build/main.css CHANGED
@@ -5472,6 +5472,11 @@ label.np-upload-button:not(.disabled):active {
5472
5472
  .np-upload-button .media {
5473
5473
  align-items: flex-start;
5474
5474
  }
5475
+ @media (max-width: 320px) {
5476
+ .np-upload-icon {
5477
+ padding-left: 0;
5478
+ }
5479
+ }
5475
5480
  .np-upload-input.form-control {
5476
5481
  height: auto;
5477
5482
  padding: 0;
@@ -5563,9 +5568,9 @@ label.np-upload-button:not(.disabled):active {
5563
5568
  border: 1px solid var(--color-interactive-secondary);
5564
5569
  position: relative;
5565
5570
  }
5566
- .np-upload-item:first-child ~ div:not(.np-upload-item__link):before,
5567
- .np-upload-item:not(:first-child).np-upload-item__link .np-upload-item--link:before,
5568
- .np-upload-item.np-upload-item__link:hover .np-upload-item--link:after {
5571
+ .np-upload-item:first-child ~ div:not(.np-upload-item--link):before,
5572
+ .np-upload-item:not(:first-child).np-upload-item--link .np-upload-item__link:before,
5573
+ .np-upload-item.np-upload-item--link:hover .np-upload-item__link:after {
5569
5574
  display: block;
5570
5575
  position: absolute;
5571
5576
  height: 1px;
@@ -5577,27 +5582,27 @@ label.np-upload-button:not(.disabled):active {
5577
5582
  width: calc(100% - 2 * 16px);
5578
5583
  width: calc(100% - 2 * var(--size-16));
5579
5584
  }
5580
- .np-upload-item:first-child ~ div:not(.np-upload-item__link):before,
5581
- .np-upload-item:not(:first-child).np-upload-item__link .np-upload-item--link:before {
5585
+ .np-upload-item:first-child ~ div:not(.np-upload-item--link):before,
5586
+ .np-upload-item:not(:first-child).np-upload-item--link .np-upload-item__link:before {
5582
5587
  top: 0;
5583
5588
  }
5584
- .np-upload-item.np-upload-item__link:hover .np-upload-item--link:after {
5589
+ .np-upload-item.np-upload-item--link:hover .np-upload-item__link:after {
5585
5590
  bottom: -1px;
5586
5591
  }
5587
5592
  .np-upload-item:first-child ~ div {
5588
5593
  border-top: 1px;
5589
5594
  }
5590
- .np-upload-item:not(:first-child) .np-upload-item--link:hover {
5595
+ .np-upload-item:not(:first-child) .np-upload-item__link:hover {
5591
5596
  border-top-color: rgba(0,0,0,0.10196);
5592
5597
  border-top-color: var(--color-border-neutral);
5593
5598
  }
5594
5599
  .np-upload-item:not(:last-child) {
5595
5600
  border-bottom: 0;
5596
5601
  }
5597
- .np-upload-item.np-upload-item__link:hover + .np-upload-item:before,
5598
- .np-upload-item.np-upload-item__link:hover + .np-upload-button-container:before,
5599
- .np-upload-item.np-upload-item__link:hover + .np-upload-item .np-upload-item--link:before,
5600
- .np-upload-item.np-upload-item__link:hover + .np-upload-button-container .np-upload-item--link:before {
5602
+ .np-upload-item.np-upload-item--link:hover + .np-upload-item:before,
5603
+ .np-upload-item.np-upload-item--link:hover + .np-upload-button-container:before,
5604
+ .np-upload-item.np-upload-item--link:hover + .np-upload-item .np-upload-item__link:before,
5605
+ .np-upload-item.np-upload-item--link:hover + .np-upload-button-container .np-upload-item__link:before {
5601
5606
  display: none;
5602
5607
  }
5603
5608
  .np-upload-button-container:hover:before,
@@ -5612,38 +5617,41 @@ label.np-upload-button:not(.disabled):active {
5612
5617
  outline-offset: -3px;
5613
5618
  }
5614
5619
  .np-upload-item--single-file:focus-visible,
5615
- .np-upload-item--link:focus-visible,
5620
+ .np-upload-item__link:focus-visible,
5616
5621
  .np-upload-button-container:has(:focus-visible) {
5617
5622
  outline-width: 3px;
5618
5623
  }
5619
- .np-upload-item__link a {
5624
+ .np-upload-item--link a {
5620
5625
  flex: 1;
5621
5626
  -webkit-text-decoration: none;
5622
5627
  text-decoration: none;
5623
5628
  border-top: 1px solid transparent;
5624
5629
  border-radius: inherit;
5625
5630
  }
5626
- .np-upload-item__link a:focus-visible {
5631
+ .np-upload-item--link a:focus-visible {
5627
5632
  outline-offset: -2px;
5628
5633
  }
5629
- .np-upload-item__link a:hover:before {
5634
+ .np-upload-item--link a:hover:before {
5630
5635
  display: none !important;
5631
5636
  }
5632
- .np-upload-item__link a:hover:after {
5637
+ .np-upload-item--link a:hover:after {
5633
5638
  left: 0 !important;
5634
5639
  width: 100% !important;
5635
5640
  }
5636
- .np-upload-item__link a:hover,
5637
- .np-upload-item__link a:active {
5641
+ .np-upload-item--link a:hover,
5642
+ .np-upload-item--link a:active {
5638
5643
  -webkit-text-decoration: none;
5639
5644
  text-decoration: none;
5640
5645
  }
5641
- .np-upload-item__link a:hover .np-upload-button,
5642
- .np-upload-item__link a:active .np-upload-button {
5646
+ .np-upload-item--link a:hover .np-upload-button,
5647
+ .np-upload-item--link a:active .np-upload-button {
5643
5648
  background-color: rgba(134,167,189,0.10196);
5644
5649
  background-color: var(--color-background-neutral);
5645
5650
  border-radius: inherit;
5646
5651
  }
5652
+ .np-upload-item--link:first-of-type a {
5653
+ border-top: 0;
5654
+ }
5647
5655
  .np-upload-item__body {
5648
5656
  display: flex;
5649
5657
  align-items: center;
@@ -5472,6 +5472,11 @@ label.np-upload-button:not(.disabled):active {
5472
5472
  .np-upload-button .media {
5473
5473
  align-items: flex-start;
5474
5474
  }
5475
+ @media (max-width: 320px) {
5476
+ .np-upload-icon {
5477
+ padding-left: 0;
5478
+ }
5479
+ }
5475
5480
  .np-upload-input.form-control {
5476
5481
  height: auto;
5477
5482
  padding: 0;
@@ -5563,9 +5568,9 @@ label.np-upload-button:not(.disabled):active {
5563
5568
  border: 1px solid var(--color-interactive-secondary);
5564
5569
  position: relative;
5565
5570
  }
5566
- .np-upload-item:first-child ~ div:not(.np-upload-item__link):before,
5567
- .np-upload-item:not(:first-child).np-upload-item__link .np-upload-item--link:before,
5568
- .np-upload-item.np-upload-item__link:hover .np-upload-item--link:after {
5571
+ .np-upload-item:first-child ~ div:not(.np-upload-item--link):before,
5572
+ .np-upload-item:not(:first-child).np-upload-item--link .np-upload-item__link:before,
5573
+ .np-upload-item.np-upload-item--link:hover .np-upload-item__link:after {
5569
5574
  display: block;
5570
5575
  position: absolute;
5571
5576
  height: 1px;
@@ -5577,27 +5582,27 @@ label.np-upload-button:not(.disabled):active {
5577
5582
  width: calc(100% - 2 * 16px);
5578
5583
  width: calc(100% - 2 * var(--size-16));
5579
5584
  }
5580
- .np-upload-item:first-child ~ div:not(.np-upload-item__link):before,
5581
- .np-upload-item:not(:first-child).np-upload-item__link .np-upload-item--link:before {
5585
+ .np-upload-item:first-child ~ div:not(.np-upload-item--link):before,
5586
+ .np-upload-item:not(:first-child).np-upload-item--link .np-upload-item__link:before {
5582
5587
  top: 0;
5583
5588
  }
5584
- .np-upload-item.np-upload-item__link:hover .np-upload-item--link:after {
5589
+ .np-upload-item.np-upload-item--link:hover .np-upload-item__link:after {
5585
5590
  bottom: -1px;
5586
5591
  }
5587
5592
  .np-upload-item:first-child ~ div {
5588
5593
  border-top: 1px;
5589
5594
  }
5590
- .np-upload-item:not(:first-child) .np-upload-item--link:hover {
5595
+ .np-upload-item:not(:first-child) .np-upload-item__link:hover {
5591
5596
  border-top-color: rgba(0,0,0,0.10196);
5592
5597
  border-top-color: var(--color-border-neutral);
5593
5598
  }
5594
5599
  .np-upload-item:not(:last-child) {
5595
5600
  border-bottom: 0;
5596
5601
  }
5597
- .np-upload-item.np-upload-item__link:hover + .np-upload-item:before,
5598
- .np-upload-item.np-upload-item__link:hover + .np-upload-button-container:before,
5599
- .np-upload-item.np-upload-item__link:hover + .np-upload-item .np-upload-item--link:before,
5600
- .np-upload-item.np-upload-item__link:hover + .np-upload-button-container .np-upload-item--link:before {
5602
+ .np-upload-item.np-upload-item--link:hover + .np-upload-item:before,
5603
+ .np-upload-item.np-upload-item--link:hover + .np-upload-button-container:before,
5604
+ .np-upload-item.np-upload-item--link:hover + .np-upload-item .np-upload-item__link:before,
5605
+ .np-upload-item.np-upload-item--link:hover + .np-upload-button-container .np-upload-item__link:before {
5601
5606
  display: none;
5602
5607
  }
5603
5608
  .np-upload-button-container:hover:before,
@@ -5612,38 +5617,41 @@ label.np-upload-button:not(.disabled):active {
5612
5617
  outline-offset: -3px;
5613
5618
  }
5614
5619
  .np-upload-item--single-file:focus-visible,
5615
- .np-upload-item--link:focus-visible,
5620
+ .np-upload-item__link:focus-visible,
5616
5621
  .np-upload-button-container:has(:focus-visible) {
5617
5622
  outline-width: 3px;
5618
5623
  }
5619
- .np-upload-item__link a {
5624
+ .np-upload-item--link a {
5620
5625
  flex: 1;
5621
5626
  -webkit-text-decoration: none;
5622
5627
  text-decoration: none;
5623
5628
  border-top: 1px solid transparent;
5624
5629
  border-radius: inherit;
5625
5630
  }
5626
- .np-upload-item__link a:focus-visible {
5631
+ .np-upload-item--link a:focus-visible {
5627
5632
  outline-offset: -2px;
5628
5633
  }
5629
- .np-upload-item__link a:hover:before {
5634
+ .np-upload-item--link a:hover:before {
5630
5635
  display: none !important;
5631
5636
  }
5632
- .np-upload-item__link a:hover:after {
5637
+ .np-upload-item--link a:hover:after {
5633
5638
  left: 0 !important;
5634
5639
  width: 100% !important;
5635
5640
  }
5636
- .np-upload-item__link a:hover,
5637
- .np-upload-item__link a:active {
5641
+ .np-upload-item--link a:hover,
5642
+ .np-upload-item--link a:active {
5638
5643
  -webkit-text-decoration: none;
5639
5644
  text-decoration: none;
5640
5645
  }
5641
- .np-upload-item__link a:hover .np-upload-button,
5642
- .np-upload-item__link a:active .np-upload-button {
5646
+ .np-upload-item--link a:hover .np-upload-button,
5647
+ .np-upload-item--link a:active .np-upload-button {
5643
5648
  background-color: rgba(134,167,189,0.10196);
5644
5649
  background-color: var(--color-background-neutral);
5645
5650
  border-radius: inherit;
5646
5651
  }
5652
+ .np-upload-item--link:first-of-type a {
5653
+ border-top: 0;
5654
+ }
5647
5655
  .np-upload-item__body {
5648
5656
  display: flex;
5649
5657
  align-items: center;
@@ -37,3 +37,8 @@ label.np-upload-button:not(.disabled):active {
37
37
  .np-upload-button .media {
38
38
  align-items: flex-start;
39
39
  }
40
+ @media (max-width: 320px) {
41
+ .np-upload-icon {
42
+ padding-left: 0;
43
+ }
44
+ }