@transferwise/components 0.0.0-experimental-ff43aa4 → 0.0.0-experimental-bee317b

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 (32) hide show
  1. package/build/card/Card.js.map +1 -1
  2. package/build/card/Card.mjs.map +1 -1
  3. package/build/main.css +20 -28
  4. package/build/styles/main.css +20 -28
  5. package/build/styles/uploadInput/uploadButton/UploadButton.css +0 -5
  6. package/build/styles/uploadInput/uploadItem/UploadItem.css +20 -23
  7. package/build/types/card/Card.d.ts +4 -0
  8. package/build/types/card/Card.d.ts.map +1 -1
  9. package/build/types/uploadInput/uploadItem/UploadItem.d.ts.map +1 -1
  10. package/build/types/uploadInput/uploadItem/{UploadItemLink.d.ts → UploadItemBody.d.ts} +2 -2
  11. package/build/types/uploadInput/uploadItem/UploadItemBody.d.ts.map +1 -0
  12. package/build/uploadInput/uploadItem/UploadItem.js +11 -14
  13. package/build/uploadInput/uploadItem/UploadItem.js.map +1 -1
  14. package/build/uploadInput/uploadItem/UploadItem.mjs +12 -15
  15. package/build/uploadInput/uploadItem/UploadItem.mjs.map +1 -1
  16. package/build/uploadInput/uploadItem/UploadItemBody.js +27 -0
  17. package/build/uploadInput/uploadItem/UploadItemBody.js.map +1 -0
  18. package/build/uploadInput/uploadItem/{UploadItemLink.mjs → UploadItemBody.mjs} +4 -5
  19. package/build/uploadInput/uploadItem/UploadItemBody.mjs.map +1 -0
  20. package/package.json +5 -5
  21. package/src/card/Card.tsx +4 -0
  22. package/src/main.css +20 -28
  23. package/src/uploadInput/uploadButton/UploadButton.css +0 -5
  24. package/src/uploadInput/uploadButton/UploadButton.less +0 -6
  25. package/src/uploadInput/uploadItem/UploadItem.css +20 -23
  26. package/src/uploadInput/uploadItem/UploadItem.less +12 -16
  27. package/src/uploadInput/uploadItem/UploadItem.tsx +7 -12
  28. package/src/uploadInput/uploadItem/{UploadItemLink.tsx → UploadItemBody.tsx} +2 -6
  29. package/build/types/uploadInput/uploadItem/UploadItemLink.d.ts.map +0 -1
  30. package/build/uploadInput/uploadItem/UploadItemLink.js +0 -32
  31. package/build/uploadInput/uploadItem/UploadItemLink.js.map +0 -1
  32. package/build/uploadInput/uploadItem/UploadItemLink.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Card.js","sources":["../../src/card/Card.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport { forwardRef } from 'react';\n\nimport Body from '../body';\nimport Chevron from '../chevron';\nimport { Position, Typography } from '../common';\nimport Option from '../common/Option';\n\nexport interface CardProps {\n 'aria-label'?: string;\n as?: React.ElementType;\n isExpanded?: boolean;\n title: React.ReactNode;\n details: React.ReactNode;\n icon?: React.ReactNode;\n children?: React.ReactNode;\n id?: string;\n className?: string;\n 'data-testid'?: string;\n onClick?: (nextIsExpanded: boolean) => void;\n}\n\nconst Card = forwardRef(function Card(\n {\n 'aria-label': ariaLabel,\n as: Element = 'div',\n isExpanded,\n title,\n details,\n children,\n onClick,\n icon,\n id,\n className,\n 'data-testid': dataTestId,\n }: CardProps,\n reference,\n) {\n const isOpen = !!(isExpanded && children);\n\n return (\n <Element\n ref={reference}\n className={classNames('np-card', className, {\n 'np-card--expanded': isOpen,\n 'np-card--inactive': !children,\n 'np-card--has-icon': !!icon,\n })}\n id={id}\n data-testid={dataTestId}\n >\n <Option\n aria-label={ariaLabel}\n as={children ? 'button' : 'div'}\n className={classNames('np-card__button')}\n media={icon}\n title={title}\n content={details}\n showMediaAtAllSizes\n button={children && <Chevron orientation={isOpen ? Position.TOP : Position.BOTTOM} />}\n onClick={children ? () => onClick?.(!isExpanded) : undefined}\n />\n <div\n className={classNames('np-card__divider', {\n 'np-card__divider--expanded': isOpen,\n })}\n />\n {isOpen && (\n <Body as=\"span\" type={Typography.BODY_LARGE} className=\"np-card__content d-block\">\n {children}\n </Body>\n )}\n </Element>\n );\n});\n\nexport default Card;\n"],"names":["Card","forwardRef","ariaLabel","as","Element","isExpanded","title","details","children","onClick","icon","id","className","dataTestId","reference","isOpen","_jsxs","ref","classNames","_jsx","Option","media","content","showMediaAtAllSizes","button","Chevron","orientation","Position","TOP","BOTTOM","undefined","Body","type","Typography","BODY_LARGE"],"mappings":";;;;;;;;;;;;;;;AAsBA,MAAMA,IAAI,gBAAGC,gBAAU,CAAC,SAASD,IAAIA,CACnC;AACE,EAAA,YAAY,EAAEE,SAAS;EACvBC,EAAE,EAAEC,OAAO,GAAG,KAAK;EACnBC,UAAU;EACVC,KAAK;EACLC,OAAO;EACPC,QAAQ;EACRC,OAAO;EACPC,IAAI;EACJC,EAAE;EACFC,SAAS;AACT,EAAA,aAAa,EAAEC,UAAAA;AAAU,CACf,EACZC,SAAS,EAAA;AAET,EAAA,MAAMC,MAAM,GAAG,CAAC,EAAEV,UAAU,IAAIG,QAAQ,CAAC,CAAA;EAEzC,oBACEQ,eAAA,CAACZ,OAAO,EAAA;AACNa,IAAAA,GAAG,EAAEH,SAAU;AACfF,IAAAA,SAAS,EAAEM,2BAAU,CAAC,SAAS,EAAEN,SAAS,EAAE;AAC1C,MAAA,mBAAmB,EAAEG,MAAM;MAC3B,mBAAmB,EAAE,CAACP,QAAQ;MAC9B,mBAAmB,EAAE,CAAC,CAACE,IAAAA;AACxB,KAAA,CAAE;AACHC,IAAAA,EAAE,EAAEA,EAAG;AACP,IAAA,aAAA,EAAaE,UAAW;IAAAL,QAAA,EAAA,cAExBW,cAAA,CAACC,MAAM,EAAA;AACL,MAAA,YAAA,EAAYlB,SAAU;AACtBC,MAAAA,EAAE,EAAEK,QAAQ,GAAG,QAAQ,GAAG,KAAM;AAChCI,MAAAA,SAAS,EAAEM,2BAAU,CAAC,iBAAiB,CAAE;AACzCG,MAAAA,KAAK,EAAEX,IAAK;AACZJ,MAAAA,KAAK,EAAEA,KAAM;AACbgB,MAAAA,OAAO,EAAEf,OAAQ;MACjBgB,mBAAmB,EAAA,IAAA;AACnBC,MAAAA,MAAM,EAAEhB,QAAQ,iBAAIW,cAAA,CAACM,OAAO,EAAA;QAACC,WAAW,EAAEX,MAAM,GAAGY,iBAAQ,CAACC,GAAG,GAAGD,iBAAQ,CAACE,MAAAA;AAAO,QAAI;MACtFpB,OAAO,EAAED,QAAQ,GAAG,MAAMC,OAAO,GAAG,CAACJ,UAAU,CAAC,GAAGyB,SAAAA;KAErD,CAAA,eAAAX,cAAA,CAAA,KAAA,EAAA;AACEP,MAAAA,SAAS,EAAEM,2BAAU,CAAC,kBAAkB,EAAE;AACxC,QAAA,4BAA4B,EAAEH,MAAAA;OAC/B,CAAA;AAAE,KAEL,CAAA,EAACA,MAAM,iBACLI,cAAA,CAACY,IAAI,EAAA;AAAC5B,MAAAA,EAAE,EAAC,MAAM;MAAC6B,IAAI,EAAEC,qBAAU,CAACC,UAAW;AAACtB,MAAAA,SAAS,EAAC,0BAA0B;AAAAJ,MAAAA,QAAA,EAC9EA,QAAAA;AAAQ,KACL,CACP,CAAA;AAAA,GACM,CAAC,CAAA;AAEd,CAAC;;;;"}
1
+ {"version":3,"file":"Card.js","sources":["../../src/card/Card.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport { forwardRef } from 'react';\n\nimport Body from '../body';\nimport Chevron from '../chevron';\nimport { Position, Typography } from '../common';\nimport Option from '../common/Option';\n\nexport interface CardProps {\n 'aria-label'?: string;\n as?: React.ElementType;\n isExpanded?: boolean;\n title: React.ReactNode;\n details: React.ReactNode;\n icon?: React.ReactNode;\n children?: React.ReactNode;\n id?: string;\n className?: string;\n 'data-testid'?: string;\n onClick?: (nextIsExpanded: boolean) => void;\n}\n\n/**\n * @deprecated use Navigation pattern (via `NavigationOption` component)\n * @see https://transferwise.atlassian.net/wiki/spaces/DS/pages/2387314550/Instructions+for+killing+expanding+cards+on+web+design+pattern\n */\nconst Card = forwardRef(function Card(\n {\n 'aria-label': ariaLabel,\n as: Element = 'div',\n isExpanded,\n title,\n details,\n children,\n onClick,\n icon,\n id,\n className,\n 'data-testid': dataTestId,\n }: CardProps,\n reference,\n) {\n const isOpen = !!(isExpanded && children);\n\n return (\n <Element\n ref={reference}\n className={classNames('np-card', className, {\n 'np-card--expanded': isOpen,\n 'np-card--inactive': !children,\n 'np-card--has-icon': !!icon,\n })}\n id={id}\n data-testid={dataTestId}\n >\n <Option\n aria-label={ariaLabel}\n as={children ? 'button' : 'div'}\n className={classNames('np-card__button')}\n media={icon}\n title={title}\n content={details}\n showMediaAtAllSizes\n button={children && <Chevron orientation={isOpen ? Position.TOP : Position.BOTTOM} />}\n onClick={children ? () => onClick?.(!isExpanded) : undefined}\n />\n <div\n className={classNames('np-card__divider', {\n 'np-card__divider--expanded': isOpen,\n })}\n />\n {isOpen && (\n <Body as=\"span\" type={Typography.BODY_LARGE} className=\"np-card__content d-block\">\n {children}\n </Body>\n )}\n </Element>\n );\n});\n\nexport default Card;\n"],"names":["Card","forwardRef","ariaLabel","as","Element","isExpanded","title","details","children","onClick","icon","id","className","dataTestId","reference","isOpen","_jsxs","ref","classNames","_jsx","Option","media","content","showMediaAtAllSizes","button","Chevron","orientation","Position","TOP","BOTTOM","undefined","Body","type","Typography","BODY_LARGE"],"mappings":";;;;;;;;;;;;;;;AA0BA,MAAMA,IAAI,gBAAGC,gBAAU,CAAC,SAASD,IAAIA,CACnC;AACE,EAAA,YAAY,EAAEE,SAAS;EACvBC,EAAE,EAAEC,OAAO,GAAG,KAAK;EACnBC,UAAU;EACVC,KAAK;EACLC,OAAO;EACPC,QAAQ;EACRC,OAAO;EACPC,IAAI;EACJC,EAAE;EACFC,SAAS;AACT,EAAA,aAAa,EAAEC,UAAAA;AAAU,CACf,EACZC,SAAS,EAAA;AAET,EAAA,MAAMC,MAAM,GAAG,CAAC,EAAEV,UAAU,IAAIG,QAAQ,CAAC,CAAA;EAEzC,oBACEQ,eAAA,CAACZ,OAAO,EAAA;AACNa,IAAAA,GAAG,EAAEH,SAAU;AACfF,IAAAA,SAAS,EAAEM,2BAAU,CAAC,SAAS,EAAEN,SAAS,EAAE;AAC1C,MAAA,mBAAmB,EAAEG,MAAM;MAC3B,mBAAmB,EAAE,CAACP,QAAQ;MAC9B,mBAAmB,EAAE,CAAC,CAACE,IAAAA;AACxB,KAAA,CAAE;AACHC,IAAAA,EAAE,EAAEA,EAAG;AACP,IAAA,aAAA,EAAaE,UAAW;IAAAL,QAAA,EAAA,cAExBW,cAAA,CAACC,MAAM,EAAA;AACL,MAAA,YAAA,EAAYlB,SAAU;AACtBC,MAAAA,EAAE,EAAEK,QAAQ,GAAG,QAAQ,GAAG,KAAM;AAChCI,MAAAA,SAAS,EAAEM,2BAAU,CAAC,iBAAiB,CAAE;AACzCG,MAAAA,KAAK,EAAEX,IAAK;AACZJ,MAAAA,KAAK,EAAEA,KAAM;AACbgB,MAAAA,OAAO,EAAEf,OAAQ;MACjBgB,mBAAmB,EAAA,IAAA;AACnBC,MAAAA,MAAM,EAAEhB,QAAQ,iBAAIW,cAAA,CAACM,OAAO,EAAA;QAACC,WAAW,EAAEX,MAAM,GAAGY,iBAAQ,CAACC,GAAG,GAAGD,iBAAQ,CAACE,MAAAA;AAAO,QAAI;MACtFpB,OAAO,EAAED,QAAQ,GAAG,MAAMC,OAAO,GAAG,CAACJ,UAAU,CAAC,GAAGyB,SAAAA;KAErD,CAAA,eAAAX,cAAA,CAAA,KAAA,EAAA;AACEP,MAAAA,SAAS,EAAEM,2BAAU,CAAC,kBAAkB,EAAE;AACxC,QAAA,4BAA4B,EAAEH,MAAAA;OAC/B,CAAA;AAAE,KAEL,CAAA,EAACA,MAAM,iBACLI,cAAA,CAACY,IAAI,EAAA;AAAC5B,MAAAA,EAAE,EAAC,MAAM;MAAC6B,IAAI,EAAEC,qBAAU,CAACC,UAAW;AAACtB,MAAAA,SAAS,EAAC,0BAA0B;AAAAJ,MAAAA,QAAA,EAC9EA,QAAAA;AAAQ,KACL,CACP,CAAA;AAAA,GACM,CAAC,CAAA;AAEd,CAAC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Card.mjs","sources":["../../src/card/Card.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport { forwardRef } from 'react';\n\nimport Body from '../body';\nimport Chevron from '../chevron';\nimport { Position, Typography } from '../common';\nimport Option from '../common/Option';\n\nexport interface CardProps {\n 'aria-label'?: string;\n as?: React.ElementType;\n isExpanded?: boolean;\n title: React.ReactNode;\n details: React.ReactNode;\n icon?: React.ReactNode;\n children?: React.ReactNode;\n id?: string;\n className?: string;\n 'data-testid'?: string;\n onClick?: (nextIsExpanded: boolean) => void;\n}\n\nconst Card = forwardRef(function Card(\n {\n 'aria-label': ariaLabel,\n as: Element = 'div',\n isExpanded,\n title,\n details,\n children,\n onClick,\n icon,\n id,\n className,\n 'data-testid': dataTestId,\n }: CardProps,\n reference,\n) {\n const isOpen = !!(isExpanded && children);\n\n return (\n <Element\n ref={reference}\n className={classNames('np-card', className, {\n 'np-card--expanded': isOpen,\n 'np-card--inactive': !children,\n 'np-card--has-icon': !!icon,\n })}\n id={id}\n data-testid={dataTestId}\n >\n <Option\n aria-label={ariaLabel}\n as={children ? 'button' : 'div'}\n className={classNames('np-card__button')}\n media={icon}\n title={title}\n content={details}\n showMediaAtAllSizes\n button={children && <Chevron orientation={isOpen ? Position.TOP : Position.BOTTOM} />}\n onClick={children ? () => onClick?.(!isExpanded) : undefined}\n />\n <div\n className={classNames('np-card__divider', {\n 'np-card__divider--expanded': isOpen,\n })}\n />\n {isOpen && (\n <Body as=\"span\" type={Typography.BODY_LARGE} className=\"np-card__content d-block\">\n {children}\n </Body>\n )}\n </Element>\n );\n});\n\nexport default Card;\n"],"names":["Card","forwardRef","ariaLabel","as","Element","isExpanded","title","details","children","onClick","icon","id","className","dataTestId","reference","isOpen","_jsxs","ref","classNames","_jsx","Option","media","content","showMediaAtAllSizes","button","Chevron","orientation","Position","TOP","BOTTOM","undefined","Body","type","Typography","BODY_LARGE"],"mappings":";;;;;;;;;AAsBA,MAAMA,IAAI,gBAAGC,UAAU,CAAC,SAASD,IAAIA,CACnC;AACE,EAAA,YAAY,EAAEE,SAAS;EACvBC,EAAE,EAAEC,OAAO,GAAG,KAAK;EACnBC,UAAU;EACVC,KAAK;EACLC,OAAO;EACPC,QAAQ;EACRC,OAAO;EACPC,IAAI;EACJC,EAAE;EACFC,SAAS;AACT,EAAA,aAAa,EAAEC,UAAAA;AAAU,CACf,EACZC,SAAS,EAAA;AAET,EAAA,MAAMC,MAAM,GAAG,CAAC,EAAEV,UAAU,IAAIG,QAAQ,CAAC,CAAA;EAEzC,oBACEQ,IAAA,CAACZ,OAAO,EAAA;AACNa,IAAAA,GAAG,EAAEH,SAAU;AACfF,IAAAA,SAAS,EAAEM,UAAU,CAAC,SAAS,EAAEN,SAAS,EAAE;AAC1C,MAAA,mBAAmB,EAAEG,MAAM;MAC3B,mBAAmB,EAAE,CAACP,QAAQ;MAC9B,mBAAmB,EAAE,CAAC,CAACE,IAAAA;AACxB,KAAA,CAAE;AACHC,IAAAA,EAAE,EAAEA,EAAG;AACP,IAAA,aAAA,EAAaE,UAAW;IAAAL,QAAA,EAAA,cAExBW,GAAA,CAACC,MAAM,EAAA;AACL,MAAA,YAAA,EAAYlB,SAAU;AACtBC,MAAAA,EAAE,EAAEK,QAAQ,GAAG,QAAQ,GAAG,KAAM;AAChCI,MAAAA,SAAS,EAAEM,UAAU,CAAC,iBAAiB,CAAE;AACzCG,MAAAA,KAAK,EAAEX,IAAK;AACZJ,MAAAA,KAAK,EAAEA,KAAM;AACbgB,MAAAA,OAAO,EAAEf,OAAQ;MACjBgB,mBAAmB,EAAA,IAAA;AACnBC,MAAAA,MAAM,EAAEhB,QAAQ,iBAAIW,GAAA,CAACM,OAAO,EAAA;QAACC,WAAW,EAAEX,MAAM,GAAGY,QAAQ,CAACC,GAAG,GAAGD,QAAQ,CAACE,MAAAA;AAAO,QAAI;MACtFpB,OAAO,EAAED,QAAQ,GAAG,MAAMC,OAAO,GAAG,CAACJ,UAAU,CAAC,GAAGyB,SAAAA;KAErD,CAAA,eAAAX,GAAA,CAAA,KAAA,EAAA;AACEP,MAAAA,SAAS,EAAEM,UAAU,CAAC,kBAAkB,EAAE;AACxC,QAAA,4BAA4B,EAAEH,MAAAA;OAC/B,CAAA;AAAE,KAEL,CAAA,EAACA,MAAM,iBACLI,GAAA,CAACY,IAAI,EAAA;AAAC5B,MAAAA,EAAE,EAAC,MAAM;MAAC6B,IAAI,EAAEC,UAAU,CAACC,UAAW;AAACtB,MAAAA,SAAS,EAAC,0BAA0B;AAAAJ,MAAAA,QAAA,EAC9EA,QAAAA;AAAQ,KACL,CACP,CAAA;AAAA,GACM,CAAC,CAAA;AAEd,CAAC;;;;"}
1
+ {"version":3,"file":"Card.mjs","sources":["../../src/card/Card.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport { forwardRef } from 'react';\n\nimport Body from '../body';\nimport Chevron from '../chevron';\nimport { Position, Typography } from '../common';\nimport Option from '../common/Option';\n\nexport interface CardProps {\n 'aria-label'?: string;\n as?: React.ElementType;\n isExpanded?: boolean;\n title: React.ReactNode;\n details: React.ReactNode;\n icon?: React.ReactNode;\n children?: React.ReactNode;\n id?: string;\n className?: string;\n 'data-testid'?: string;\n onClick?: (nextIsExpanded: boolean) => void;\n}\n\n/**\n * @deprecated use Navigation pattern (via `NavigationOption` component)\n * @see https://transferwise.atlassian.net/wiki/spaces/DS/pages/2387314550/Instructions+for+killing+expanding+cards+on+web+design+pattern\n */\nconst Card = forwardRef(function Card(\n {\n 'aria-label': ariaLabel,\n as: Element = 'div',\n isExpanded,\n title,\n details,\n children,\n onClick,\n icon,\n id,\n className,\n 'data-testid': dataTestId,\n }: CardProps,\n reference,\n) {\n const isOpen = !!(isExpanded && children);\n\n return (\n <Element\n ref={reference}\n className={classNames('np-card', className, {\n 'np-card--expanded': isOpen,\n 'np-card--inactive': !children,\n 'np-card--has-icon': !!icon,\n })}\n id={id}\n data-testid={dataTestId}\n >\n <Option\n aria-label={ariaLabel}\n as={children ? 'button' : 'div'}\n className={classNames('np-card__button')}\n media={icon}\n title={title}\n content={details}\n showMediaAtAllSizes\n button={children && <Chevron orientation={isOpen ? Position.TOP : Position.BOTTOM} />}\n onClick={children ? () => onClick?.(!isExpanded) : undefined}\n />\n <div\n className={classNames('np-card__divider', {\n 'np-card__divider--expanded': isOpen,\n })}\n />\n {isOpen && (\n <Body as=\"span\" type={Typography.BODY_LARGE} className=\"np-card__content d-block\">\n {children}\n </Body>\n )}\n </Element>\n );\n});\n\nexport default Card;\n"],"names":["Card","forwardRef","ariaLabel","as","Element","isExpanded","title","details","children","onClick","icon","id","className","dataTestId","reference","isOpen","_jsxs","ref","classNames","_jsx","Option","media","content","showMediaAtAllSizes","button","Chevron","orientation","Position","TOP","BOTTOM","undefined","Body","type","Typography","BODY_LARGE"],"mappings":";;;;;;;;;AA0BA,MAAMA,IAAI,gBAAGC,UAAU,CAAC,SAASD,IAAIA,CACnC;AACE,EAAA,YAAY,EAAEE,SAAS;EACvBC,EAAE,EAAEC,OAAO,GAAG,KAAK;EACnBC,UAAU;EACVC,KAAK;EACLC,OAAO;EACPC,QAAQ;EACRC,OAAO;EACPC,IAAI;EACJC,EAAE;EACFC,SAAS;AACT,EAAA,aAAa,EAAEC,UAAAA;AAAU,CACf,EACZC,SAAS,EAAA;AAET,EAAA,MAAMC,MAAM,GAAG,CAAC,EAAEV,UAAU,IAAIG,QAAQ,CAAC,CAAA;EAEzC,oBACEQ,IAAA,CAACZ,OAAO,EAAA;AACNa,IAAAA,GAAG,EAAEH,SAAU;AACfF,IAAAA,SAAS,EAAEM,UAAU,CAAC,SAAS,EAAEN,SAAS,EAAE;AAC1C,MAAA,mBAAmB,EAAEG,MAAM;MAC3B,mBAAmB,EAAE,CAACP,QAAQ;MAC9B,mBAAmB,EAAE,CAAC,CAACE,IAAAA;AACxB,KAAA,CAAE;AACHC,IAAAA,EAAE,EAAEA,EAAG;AACP,IAAA,aAAA,EAAaE,UAAW;IAAAL,QAAA,EAAA,cAExBW,GAAA,CAACC,MAAM,EAAA;AACL,MAAA,YAAA,EAAYlB,SAAU;AACtBC,MAAAA,EAAE,EAAEK,QAAQ,GAAG,QAAQ,GAAG,KAAM;AAChCI,MAAAA,SAAS,EAAEM,UAAU,CAAC,iBAAiB,CAAE;AACzCG,MAAAA,KAAK,EAAEX,IAAK;AACZJ,MAAAA,KAAK,EAAEA,KAAM;AACbgB,MAAAA,OAAO,EAAEf,OAAQ;MACjBgB,mBAAmB,EAAA,IAAA;AACnBC,MAAAA,MAAM,EAAEhB,QAAQ,iBAAIW,GAAA,CAACM,OAAO,EAAA;QAACC,WAAW,EAAEX,MAAM,GAAGY,QAAQ,CAACC,GAAG,GAAGD,QAAQ,CAACE,MAAAA;AAAO,QAAI;MACtFpB,OAAO,EAAED,QAAQ,GAAG,MAAMC,OAAO,GAAG,CAACJ,UAAU,CAAC,GAAGyB,SAAAA;KAErD,CAAA,eAAAX,GAAA,CAAA,KAAA,EAAA;AACEP,MAAAA,SAAS,EAAEM,UAAU,CAAC,kBAAkB,EAAE;AACxC,QAAA,4BAA4B,EAAEH,MAAAA;OAC/B,CAAA;AAAE,KAEL,CAAA,EAACA,MAAM,iBACLI,GAAA,CAACY,IAAI,EAAA;AAAC5B,MAAAA,EAAE,EAAC,MAAM;MAAC6B,IAAI,EAAEC,UAAU,CAACC,UAAW;AAACtB,MAAAA,SAAS,EAAC,0BAA0B;AAAAJ,MAAAA,QAAA,EAC9EA,QAAAA;AAAQ,KACL,CACP,CAAA;AAAA,GACM,CAAC,CAAA;AAEd,CAAC;;;;"}
package/build/main.css CHANGED
@@ -5472,11 +5472,6 @@ 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
- }
5480
5475
  .np-upload-input.form-control {
5481
5476
  height: auto;
5482
5477
  padding: 0;
@@ -5568,9 +5563,9 @@ label.np-upload-button:not(.disabled):active {
5568
5563
  border: 1px solid var(--color-interactive-secondary);
5569
5564
  position: relative;
5570
5565
  }
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 {
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 {
5574
5569
  display: block;
5575
5570
  position: absolute;
5576
5571
  height: 1px;
@@ -5582,27 +5577,27 @@ label.np-upload-button:not(.disabled):active {
5582
5577
  width: calc(100% - 2 * 16px);
5583
5578
  width: calc(100% - 2 * var(--size-16));
5584
5579
  }
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 {
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 {
5587
5582
  top: 0;
5588
5583
  }
5589
- .np-upload-item.np-upload-item--link:hover .np-upload-item__link:after {
5584
+ .np-upload-item.np-upload-item__link:hover .np-upload-item--link:after {
5590
5585
  bottom: -1px;
5591
5586
  }
5592
5587
  .np-upload-item:first-child ~ div {
5593
5588
  border-top: 1px;
5594
5589
  }
5595
- .np-upload-item:not(:first-child) .np-upload-item__link:hover {
5590
+ .np-upload-item:not(:first-child) .np-upload-item--link:hover {
5596
5591
  border-top-color: rgba(0,0,0,0.10196);
5597
5592
  border-top-color: var(--color-border-neutral);
5598
5593
  }
5599
5594
  .np-upload-item:not(:last-child) {
5600
5595
  border-bottom: 0;
5601
5596
  }
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 {
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 {
5606
5601
  display: none;
5607
5602
  }
5608
5603
  .np-upload-button-container:hover:before,
@@ -5617,41 +5612,38 @@ label.np-upload-button:not(.disabled):active {
5617
5612
  outline-offset: -3px;
5618
5613
  }
5619
5614
  .np-upload-item--single-file:focus-visible,
5620
- .np-upload-item__link:focus-visible,
5615
+ .np-upload-item--link:focus-visible,
5621
5616
  .np-upload-button-container:has(:focus-visible) {
5622
5617
  outline-width: 3px;
5623
5618
  }
5624
- .np-upload-item--link a {
5619
+ .np-upload-item__link a {
5625
5620
  flex: 1;
5626
5621
  -webkit-text-decoration: none;
5627
5622
  text-decoration: none;
5628
5623
  border-top: 1px solid transparent;
5629
5624
  border-radius: inherit;
5630
5625
  }
5631
- .np-upload-item--link a:focus-visible {
5626
+ .np-upload-item__link a:focus-visible {
5632
5627
  outline-offset: -2px;
5633
5628
  }
5634
- .np-upload-item--link a:hover:before {
5629
+ .np-upload-item__link a:hover:before {
5635
5630
  display: none !important;
5636
5631
  }
5637
- .np-upload-item--link a:hover:after {
5632
+ .np-upload-item__link a:hover:after {
5638
5633
  left: 0 !important;
5639
5634
  width: 100% !important;
5640
5635
  }
5641
- .np-upload-item--link a:hover,
5642
- .np-upload-item--link a:active {
5636
+ .np-upload-item__link a:hover,
5637
+ .np-upload-item__link a:active {
5643
5638
  -webkit-text-decoration: none;
5644
5639
  text-decoration: none;
5645
5640
  }
5646
- .np-upload-item--link a:hover .np-upload-button,
5647
- .np-upload-item--link a:active .np-upload-button {
5641
+ .np-upload-item__link a:hover .np-upload-button,
5642
+ .np-upload-item__link a:active .np-upload-button {
5648
5643
  background-color: rgba(134,167,189,0.10196);
5649
5644
  background-color: var(--color-background-neutral);
5650
5645
  border-radius: inherit;
5651
5646
  }
5652
- .np-upload-item--link:first-of-type a {
5653
- border-top: 0;
5654
- }
5655
5647
  .np-upload-item__body {
5656
5648
  display: flex;
5657
5649
  align-items: center;
@@ -5472,11 +5472,6 @@ 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
- }
5480
5475
  .np-upload-input.form-control {
5481
5476
  height: auto;
5482
5477
  padding: 0;
@@ -5568,9 +5563,9 @@ label.np-upload-button:not(.disabled):active {
5568
5563
  border: 1px solid var(--color-interactive-secondary);
5569
5564
  position: relative;
5570
5565
  }
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 {
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 {
5574
5569
  display: block;
5575
5570
  position: absolute;
5576
5571
  height: 1px;
@@ -5582,27 +5577,27 @@ label.np-upload-button:not(.disabled):active {
5582
5577
  width: calc(100% - 2 * 16px);
5583
5578
  width: calc(100% - 2 * var(--size-16));
5584
5579
  }
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 {
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 {
5587
5582
  top: 0;
5588
5583
  }
5589
- .np-upload-item.np-upload-item--link:hover .np-upload-item__link:after {
5584
+ .np-upload-item.np-upload-item__link:hover .np-upload-item--link:after {
5590
5585
  bottom: -1px;
5591
5586
  }
5592
5587
  .np-upload-item:first-child ~ div {
5593
5588
  border-top: 1px;
5594
5589
  }
5595
- .np-upload-item:not(:first-child) .np-upload-item__link:hover {
5590
+ .np-upload-item:not(:first-child) .np-upload-item--link:hover {
5596
5591
  border-top-color: rgba(0,0,0,0.10196);
5597
5592
  border-top-color: var(--color-border-neutral);
5598
5593
  }
5599
5594
  .np-upload-item:not(:last-child) {
5600
5595
  border-bottom: 0;
5601
5596
  }
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 {
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 {
5606
5601
  display: none;
5607
5602
  }
5608
5603
  .np-upload-button-container:hover:before,
@@ -5617,41 +5612,38 @@ label.np-upload-button:not(.disabled):active {
5617
5612
  outline-offset: -3px;
5618
5613
  }
5619
5614
  .np-upload-item--single-file:focus-visible,
5620
- .np-upload-item__link:focus-visible,
5615
+ .np-upload-item--link:focus-visible,
5621
5616
  .np-upload-button-container:has(:focus-visible) {
5622
5617
  outline-width: 3px;
5623
5618
  }
5624
- .np-upload-item--link a {
5619
+ .np-upload-item__link a {
5625
5620
  flex: 1;
5626
5621
  -webkit-text-decoration: none;
5627
5622
  text-decoration: none;
5628
5623
  border-top: 1px solid transparent;
5629
5624
  border-radius: inherit;
5630
5625
  }
5631
- .np-upload-item--link a:focus-visible {
5626
+ .np-upload-item__link a:focus-visible {
5632
5627
  outline-offset: -2px;
5633
5628
  }
5634
- .np-upload-item--link a:hover:before {
5629
+ .np-upload-item__link a:hover:before {
5635
5630
  display: none !important;
5636
5631
  }
5637
- .np-upload-item--link a:hover:after {
5632
+ .np-upload-item__link a:hover:after {
5638
5633
  left: 0 !important;
5639
5634
  width: 100% !important;
5640
5635
  }
5641
- .np-upload-item--link a:hover,
5642
- .np-upload-item--link a:active {
5636
+ .np-upload-item__link a:hover,
5637
+ .np-upload-item__link a:active {
5643
5638
  -webkit-text-decoration: none;
5644
5639
  text-decoration: none;
5645
5640
  }
5646
- .np-upload-item--link a:hover .np-upload-button,
5647
- .np-upload-item--link a:active .np-upload-button {
5641
+ .np-upload-item__link a:hover .np-upload-button,
5642
+ .np-upload-item__link a:active .np-upload-button {
5648
5643
  background-color: rgba(134,167,189,0.10196);
5649
5644
  background-color: var(--color-background-neutral);
5650
5645
  border-radius: inherit;
5651
5646
  }
5652
- .np-upload-item--link:first-of-type a {
5653
- border-top: 0;
5654
- }
5655
5647
  .np-upload-item__body {
5656
5648
  display: flex;
5657
5649
  align-items: center;
@@ -37,8 +37,3 @@ 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
- }
@@ -3,9 +3,9 @@
3
3
  border: 1px solid var(--color-interactive-secondary);
4
4
  position: relative;
5
5
  }
6
- .np-upload-item:first-child ~ div:not(.np-upload-item--link):before,
7
- .np-upload-item:not(:first-child).np-upload-item--link .np-upload-item__link:before,
8
- .np-upload-item.np-upload-item--link:hover .np-upload-item__link:after {
6
+ .np-upload-item:first-child ~ div:not(.np-upload-item__link):before,
7
+ .np-upload-item:not(:first-child).np-upload-item__link .np-upload-item--link:before,
8
+ .np-upload-item.np-upload-item__link:hover .np-upload-item--link:after {
9
9
  display: block;
10
10
  position: absolute;
11
11
  height: 1px;
@@ -17,27 +17,27 @@
17
17
  width: calc(100% - 2 * 16px);
18
18
  width: calc(100% - 2 * var(--size-16));
19
19
  }
20
- .np-upload-item:first-child ~ div:not(.np-upload-item--link):before,
21
- .np-upload-item:not(:first-child).np-upload-item--link .np-upload-item__link:before {
20
+ .np-upload-item:first-child ~ div:not(.np-upload-item__link):before,
21
+ .np-upload-item:not(:first-child).np-upload-item__link .np-upload-item--link:before {
22
22
  top: 0;
23
23
  }
24
- .np-upload-item.np-upload-item--link:hover .np-upload-item__link:after {
24
+ .np-upload-item.np-upload-item__link:hover .np-upload-item--link:after {
25
25
  bottom: -1px;
26
26
  }
27
27
  .np-upload-item:first-child ~ div {
28
28
  border-top: 1px;
29
29
  }
30
- .np-upload-item:not(:first-child) .np-upload-item__link:hover {
30
+ .np-upload-item:not(:first-child) .np-upload-item--link:hover {
31
31
  border-top-color: rgba(0,0,0,0.10196);
32
32
  border-top-color: var(--color-border-neutral);
33
33
  }
34
34
  .np-upload-item:not(:last-child) {
35
35
  border-bottom: 0;
36
36
  }
37
- .np-upload-item.np-upload-item--link:hover + .np-upload-item:before,
38
- .np-upload-item.np-upload-item--link:hover + .np-upload-button-container:before,
39
- .np-upload-item.np-upload-item--link:hover + .np-upload-item .np-upload-item__link:before,
40
- .np-upload-item.np-upload-item--link:hover + .np-upload-button-container .np-upload-item__link:before {
37
+ .np-upload-item.np-upload-item__link:hover + .np-upload-item:before,
38
+ .np-upload-item.np-upload-item__link:hover + .np-upload-button-container:before,
39
+ .np-upload-item.np-upload-item__link:hover + .np-upload-item .np-upload-item--link:before,
40
+ .np-upload-item.np-upload-item__link:hover + .np-upload-button-container .np-upload-item--link:before {
41
41
  display: none;
42
42
  }
43
43
  .np-upload-button-container:hover:before,
@@ -52,41 +52,38 @@
52
52
  outline-offset: -3px;
53
53
  }
54
54
  .np-upload-item--single-file:focus-visible,
55
- .np-upload-item__link:focus-visible,
55
+ .np-upload-item--link:focus-visible,
56
56
  .np-upload-button-container:has(:focus-visible) {
57
57
  outline-width: 3px;
58
58
  }
59
- .np-upload-item--link a {
59
+ .np-upload-item__link a {
60
60
  flex: 1;
61
61
  -webkit-text-decoration: none;
62
62
  text-decoration: none;
63
63
  border-top: 1px solid transparent;
64
64
  border-radius: inherit;
65
65
  }
66
- .np-upload-item--link a:focus-visible {
66
+ .np-upload-item__link a:focus-visible {
67
67
  outline-offset: -2px;
68
68
  }
69
- .np-upload-item--link a:hover:before {
69
+ .np-upload-item__link a:hover:before {
70
70
  display: none !important;
71
71
  }
72
- .np-upload-item--link a:hover:after {
72
+ .np-upload-item__link a:hover:after {
73
73
  left: 0 !important;
74
74
  width: 100% !important;
75
75
  }
76
- .np-upload-item--link a:hover,
77
- .np-upload-item--link a:active {
76
+ .np-upload-item__link a:hover,
77
+ .np-upload-item__link a:active {
78
78
  -webkit-text-decoration: none;
79
79
  text-decoration: none;
80
80
  }
81
- .np-upload-item--link a:hover .np-upload-button,
82
- .np-upload-item--link a:active .np-upload-button {
81
+ .np-upload-item__link a:hover .np-upload-button,
82
+ .np-upload-item__link a:active .np-upload-button {
83
83
  background-color: rgba(134,167,189,0.10196);
84
84
  background-color: var(--color-background-neutral);
85
85
  border-radius: inherit;
86
86
  }
87
- .np-upload-item--link:first-of-type a {
88
- border-top: 0;
89
- }
90
87
  .np-upload-item__body {
91
88
  display: flex;
92
89
  align-items: center;
@@ -11,6 +11,10 @@ export interface CardProps {
11
11
  'data-testid'?: string;
12
12
  onClick?: (nextIsExpanded: boolean) => void;
13
13
  }
14
+ /**
15
+ * @deprecated use Navigation pattern (via `NavigationOption` component)
16
+ * @see https://transferwise.atlassian.net/wiki/spaces/DS/pages/2387314550/Instructions+for+killing+expanding+cards+on+web+design+pattern
17
+ */
14
18
  declare const Card: import("react").ForwardRefExoticComponent<CardProps & import("react").RefAttributes<unknown>>;
15
19
  export default Card;
16
20
  //# sourceMappingURL=Card.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../src/card/Card.tsx"],"names":[],"mappings":"AAQA,MAAM,WAAW,SAAS;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,EAAE,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,CAAC,cAAc,EAAE,OAAO,KAAK,IAAI,CAAC;CAC7C;AAED,QAAA,MAAM,IAAI,+FAoDR,CAAC;AAEH,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../src/card/Card.tsx"],"names":[],"mappings":"AAQA,MAAM,WAAW,SAAS;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,EAAE,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,CAAC,cAAc,EAAE,OAAO,KAAK,IAAI,CAAC;CAC7C;AAED;;;GAGG;AACH,QAAA,MAAM,IAAI,+FAoDR,CAAC;AAEH,eAAe,IAAI,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"UploadItem.d.ts","sourceRoot":"","sources":["../../../../src/uploadInput/uploadItem/UploadItem.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,YAAY,EAAe,MAAM,UAAU,CAAC;AAKrD,MAAM,MAAM,eAAe,GAAG,GAAG,CAAC,mBAAmB,GAAG;IACtD,IAAI,EAAE,YAAY,CAAC;IACnB;;OAEG;IACH,gBAAgB,EAAE,OAAO,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAC;IAErB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;CAC3C,CAAC;AAEF,oBAAY,QAAQ;IAClB,UAAU,eAAe;IACzB,SAAS,cAAc;CACxB;AAED,QAAA,MAAM,UAAU,iEAMb,eAAe,gCA8HjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"UploadItem.d.ts","sourceRoot":"","sources":["../../../../src/uploadInput/uploadItem/UploadItem.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,YAAY,EAAe,MAAM,UAAU,CAAC;AAKrD,MAAM,MAAM,eAAe,GAAG,GAAG,CAAC,mBAAmB,GAAG;IACtD,IAAI,EAAE,YAAY,CAAC;IACnB;;OAEG;IACH,gBAAgB,EAAE,OAAO,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAC;IAErB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;CAC3C,CAAC;AAEF,oBAAY,QAAQ;IAClB,UAAU,eAAe;IACzB,SAAS,cAAc;CACxB;AAED,QAAA,MAAM,UAAU,iEAMb,eAAe,gCAyHjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -4,6 +4,6 @@ type UploadItemLinkProps = PropsWithChildren<{
4
4
  onDownload?: (event: MouseEvent) => void;
5
5
  singleFileUpload: boolean;
6
6
  }>;
7
- export declare const UploadItemLink: ({ children, url, onDownload, singleFileUpload, }: UploadItemLinkProps) => import("react").JSX.Element;
7
+ export declare const UploadItemBody: ({ children, url, onDownload, singleFileUpload, }: UploadItemLinkProps) => import("react").JSX.Element;
8
8
  export {};
9
- //# sourceMappingURL=UploadItemLink.d.ts.map
9
+ //# sourceMappingURL=UploadItemBody.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UploadItemBody.d.ts","sourceRoot":"","sources":["../../../../src/uploadInput/uploadItem/UploadItemBody.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEtD,KAAK,mBAAmB,GAAG,iBAAiB,CAAC;IAC3C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACzC,gBAAgB,EAAE,OAAO,CAAC;CAC3B,CAAC,CAAC;AAEH,eAAO,MAAM,cAAc,qDAKxB,mBAAmB,gCAgBrB,CAAC"}
@@ -7,9 +7,11 @@ var classNames = require('classnames');
7
7
  var reactIntl = require('react-intl');
8
8
  var Body = require('../../body/Body.js');
9
9
  var ProcessIndicator = require('../../processIndicator/ProcessIndicator.js');
10
+ var StatusIcon = require('../../statusIcon/StatusIcon.js');
10
11
  var UploadItem_messages = require('./UploadItem.messages.js');
11
- var UploadItemLink = require('./UploadItemLink.js');
12
+ var UploadItemBody = require('./UploadItemBody.js');
12
13
  var jsxRuntime = require('react/jsx-runtime');
14
+ var sentiment = require('../../common/propsValues/sentiment.js');
13
15
  var status = require('../../common/propsValues/status.js');
14
16
  var size = require('../../common/propsValues/size.js');
15
17
  var typography = require('../../common/propsValues/typography.js');
@@ -41,16 +43,11 @@ const UploadItem = ({
41
43
  url
42
44
  } = file;
43
45
  const isSucceeded = [status.Status.SUCCEEDED, undefined].includes(status$1) && !!url;
44
- /**
45
- * We're temporarily reverting to the regular icon components,
46
- * until the StatusIcon receives 24px sizing. Some misalignment
47
- * to be expected.
48
- */
49
46
  const getIcon = () => {
50
47
  if (error || errors?.length || status$1 === status.Status.FAILED) {
51
- return /*#__PURE__*/jsxRuntime.jsx(icons.CrossCircleFill, {
52
- size: 24,
53
- className: "emphasis--negative"
48
+ return /*#__PURE__*/jsxRuntime.jsx(StatusIcon, {
49
+ size: size.Size.SMALL,
50
+ sentiment: sentiment.Sentiment.NEGATIVE
54
51
  });
55
52
  }
56
53
  let processIndicator;
@@ -65,9 +62,9 @@ const UploadItem = ({
65
62
  case status.Status.SUCCEEDED:
66
63
  case status.Status.DONE:
67
64
  default:
68
- processIndicator = /*#__PURE__*/jsxRuntime.jsx(icons.CheckCircleFill, {
69
- size: 24,
70
- className: "emphasis--positive"
65
+ processIndicator = /*#__PURE__*/jsxRuntime.jsx(StatusIcon, {
66
+ size: size.Size.SMALL,
67
+ sentiment: sentiment.Sentiment.POSITIVE
71
68
  });
72
69
  }
73
70
  return processIndicator;
@@ -129,12 +126,12 @@ const UploadItem = ({
129
126
  };
130
127
  return /*#__PURE__*/jsxRuntime.jsx("div", {
131
128
  className: classNames__default.default('np-upload-item', {
132
- 'np-upload-item--link': isSucceeded
129
+ 'np-upload-item__link': isSucceeded
133
130
  }),
134
131
  "data-testid": exports.TEST_IDS.uploadItem,
135
132
  children: /*#__PURE__*/jsxRuntime.jsxs("div", {
136
133
  className: "np-upload-item__body",
137
- children: [/*#__PURE__*/jsxRuntime.jsx(UploadItemLink.UploadItemLink, {
134
+ children: [/*#__PURE__*/jsxRuntime.jsx(UploadItemBody.UploadItemBody, {
138
135
  url: isSucceeded ? url : undefined,
139
136
  singleFileUpload: singleFileUpload,
140
137
  onDownload: onDownloadFile,
@@ -1 +1 @@
1
- {"version":3,"file":"UploadItem.js","sources":["../../../src/uploadInput/uploadItem/UploadItem.tsx"],"sourcesContent":["import { Bin, CheckCircleFill, CrossCircleFill } from '@transferwise/icons';\nimport classNames from 'classnames';\nimport { useIntl } from 'react-intl';\n\nimport Body from '../../body';\nimport { Size, Status, Typography, Sentiment } from '../../common';\nimport ProcessIndicator from '../../processIndicator/ProcessIndicator';\nimport StatusIcon from '../../statusIcon/StatusIcon';\nimport { UploadedFile, UploadError } from '../types';\n\nimport MESSAGES from './UploadItem.messages';\nimport { UploadItemLink } from './UploadItemLink';\n\nexport type UploadItemProps = JSX.IntrinsicAttributes & {\n file: UploadedFile;\n /**\n * Is this Item part of a multiple- or single-file UploadInput\n */\n singleFileUpload: boolean;\n canDelete: boolean;\n onDelete: () => void;\n\n /**\n * Callback to be called when the file link is clicked.\n * When provided, you need to manually trigger actions to load/download the file.\n *\n * @param file\n */\n onDownload?: (file: UploadedFile) => void;\n};\n\nexport enum TEST_IDS {\n uploadItem = 'uploadItem',\n mediaBody = 'mediaBody',\n}\n\nconst UploadItem = ({\n file,\n canDelete,\n onDelete,\n onDownload,\n singleFileUpload,\n}: UploadItemProps) => {\n const { formatMessage } = useIntl();\n const { status, filename, error, errors, url } = file;\n\n const isSucceeded = [Status.SUCCEEDED, undefined].includes(status) && !!url;\n\n /**\n * We're temporarily reverting to the regular icon components,\n * until the StatusIcon receives 24px sizing. Some misalignment\n * to be expected.\n */\n const getIcon = () => {\n if (error || errors?.length || status === Status.FAILED) {\n return <CrossCircleFill size={24} className=\"emphasis--negative\" />;\n }\n\n let processIndicator: React.ReactNode;\n\n switch (status) {\n case Status.PROCESSING:\n case Status.PENDING:\n processIndicator = <ProcessIndicator size={Size.EXTRA_SMALL} status={Status.PROCESSING} />;\n break;\n case Status.SUCCEEDED:\n case Status.DONE:\n default:\n processIndicator = <CheckCircleFill size={24} className=\"emphasis--positive\" />;\n }\n\n return processIndicator;\n };\n\n const getErrorMessage = (error?: UploadError) =>\n typeof error === 'object' ? error.message : error || formatMessage(MESSAGES.uploadingFailed);\n\n const getMultipleErrors = (errors?: UploadError[]) => {\n if (!errors?.length) {\n return null;\n }\n\n if (errors?.length === 1) {\n return getErrorMessage(errors[0]);\n }\n\n return (\n <ul className=\"np-upload-input-errors m-b-0\">\n {errors.map((error, index) => {\n // eslint-disable-next-line react/no-array-index-key\n return <li key={index}>{getErrorMessage(error)}</li>;\n })}\n </ul>\n );\n };\n\n const getDescription = () => {\n if (error || errors?.length || status === Status.FAILED) {\n return (\n <Body type={Typography.BODY_DEFAULT_BOLD} className=\"text-negative\">\n {errors?.length ? getMultipleErrors(errors) : getErrorMessage(error)}\n </Body>\n );\n }\n\n switch (status) {\n case Status.PENDING:\n return <Body type={Typography.BODY_DEFAULT_BOLD}>{formatMessage(MESSAGES.uploading)}</Body>;\n case Status.PROCESSING:\n return <Body>{formatMessage(MESSAGES.deleting)}</Body>;\n case Status.SUCCEEDED:\n case Status.DONE:\n default:\n return (\n <Body type={Typography.BODY_DEFAULT_BOLD} className=\"text-positive\">\n {formatMessage(MESSAGES.uploaded)}\n </Body>\n );\n }\n };\n\n const getTitle = () => {\n return filename || formatMessage(MESSAGES.uploadedFile);\n };\n\n const onDownloadFile = (event: React.MouseEvent): void => {\n if (onDownload) {\n event.preventDefault();\n onDownload(file);\n }\n };\n\n return (\n <div\n className={classNames('np-upload-item', { 'np-upload-item--link': isSucceeded })}\n data-testid={TEST_IDS.uploadItem}\n >\n <div className=\"np-upload-item__body\">\n <UploadItemLink\n url={isSucceeded ? url : undefined}\n singleFileUpload={singleFileUpload}\n onDownload={onDownloadFile}\n >\n <div className=\"np-upload-button\" aria-live=\"polite\">\n <div className=\"media\">\n <div className=\"np-upload-icon media-left\">{getIcon()}</div>\n <div className=\"media-body text-xs-left\" data-testid={TEST_IDS.mediaBody}>\n <Body className=\"text-word-break d-block text-primary\">{getTitle()}</Body>\n {getDescription()}\n </div>\n </div>\n </div>\n </UploadItemLink>\n {canDelete && (\n <button\n aria-label={formatMessage(MESSAGES.removeFile, { filename })}\n className={classNames('btn', 'np-upload-item__remove-button', 'media-left', {\n 'np-upload-item--single-file': singleFileUpload,\n })}\n type=\"button\"\n onClick={() => onDelete()}\n >\n <Bin size={16} />\n </button>\n )}\n </div>\n </div>\n );\n};\n\nexport default UploadItem;\n"],"names":["TEST_IDS","UploadItem","file","canDelete","onDelete","onDownload","singleFileUpload","formatMessage","useIntl","status","filename","error","errors","url","isSucceeded","Status","SUCCEEDED","undefined","includes","getIcon","length","FAILED","_jsx","CrossCircleFill","size","className","processIndicator","PROCESSING","PENDING","ProcessIndicator","Size","EXTRA_SMALL","DONE","CheckCircleFill","getErrorMessage","message","MESSAGES","uploadingFailed","getMultipleErrors","children","map","index","getDescription","Body","type","Typography","BODY_DEFAULT_BOLD","uploading","deleting","uploaded","getTitle","uploadedFile","onDownloadFile","event","preventDefault","classNames","uploadItem","_jsxs","UploadItemLink","mediaBody","removeFile","onClick","Bin"],"mappings":";;;;;;;;;;;;;;;;;;;;AA+BYA,0BAGX;AAHD,CAAA,UAAYA,QAAQ,EAAA;AAClBA,EAAAA,QAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzBA,EAAAA,QAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACzB,CAAC,EAHWA,gBAAQ,KAARA,gBAAQ,GAGnB,EAAA,CAAA,CAAA,CAAA;AAEKC,MAAAA,UAAU,GAAGA,CAAC;EAClBC,IAAI;EACJC,SAAS;EACTC,QAAQ;EACRC,UAAU;AACVC,EAAAA,gBAAAA;AAAgB,CACA,KAAI;EACpB,MAAM;AAAEC,IAAAA,aAAAA;GAAe,GAAGC,iBAAO,EAAE,CAAA;EACnC,MAAM;YAAEC,QAAM;IAAEC,QAAQ;IAAEC,KAAK;IAAEC,MAAM;AAAEC,IAAAA,GAAAA;AAAK,GAAA,GAAGX,IAAI,CAAA;AAErD,EAAA,MAAMY,WAAW,GAAG,CAACC,aAAM,CAACC,SAAS,EAAEC,SAAS,CAAC,CAACC,QAAQ,CAACT,QAAM,CAAC,IAAI,CAAC,CAACI,GAAG,CAAA;AAE3E;;;;AAIG;EACH,MAAMM,OAAO,GAAGA,MAAK;IACnB,IAAIR,KAAK,IAAIC,MAAM,EAAEQ,MAAM,IAAIX,QAAM,KAAKM,aAAM,CAACM,MAAM,EAAE;MACvD,oBAAOC,cAAA,CAACC,qBAAe,EAAA;AAACC,QAAAA,IAAI,EAAE,EAAG;AAACC,QAAAA,SAAS,EAAC,oBAAA;AAAoB,QAAG,CAAA;AACrE,KAAA;AAEA,IAAA,IAAIC,gBAAiC,CAAA;AAErC,IAAA,QAAQjB,QAAM;MACZ,KAAKM,aAAM,CAACY,UAAU,CAAA;MACtB,KAAKZ,aAAM,CAACa,OAAO;QACjBF,gBAAgB,gBAAGJ,cAAA,CAACO,gBAAgB,EAAA;UAACL,IAAI,EAAEM,SAAI,CAACC,WAAY;UAACtB,MAAM,EAAEM,aAAM,CAACY,UAAAA;AAAW,UAAG,CAAA;AAC1F,QAAA,MAAA;MACF,KAAKZ,aAAM,CAACC,SAAS,CAAA;MACrB,KAAKD,aAAM,CAACiB,IAAI,CAAA;AAChB,MAAA;QACEN,gBAAgB,gBAAGJ,cAAA,CAACW,qBAAe,EAAA;AAACT,UAAAA,IAAI,EAAE,EAAG;AAACC,UAAAA,SAAS,EAAC,oBAAA;AAAoB,UAAG,CAAA;AACnF,KAAA;AAEA,IAAA,OAAOC,gBAAgB,CAAA;GACxB,CAAA;EAED,MAAMQ,eAAe,GAAIvB,KAAmB,IAC1C,OAAOA,KAAK,KAAK,QAAQ,GAAGA,KAAK,CAACwB,OAAO,GAAGxB,KAAK,IAAIJ,aAAa,CAAC6B,mBAAQ,CAACC,eAAe,CAAC,CAAA;EAE9F,MAAMC,iBAAiB,GAAI1B,MAAsB,IAAI;AACnD,IAAA,IAAI,CAACA,MAAM,EAAEQ,MAAM,EAAE;AACnB,MAAA,OAAO,IAAI,CAAA;AACb,KAAA;AAEA,IAAA,IAAIR,MAAM,EAAEQ,MAAM,KAAK,CAAC,EAAE;AACxB,MAAA,OAAOc,eAAe,CAACtB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AACnC,KAAA;AAEA,IAAA,oBACEU,cAAA,CAAA,IAAA,EAAA;AAAIG,MAAAA,SAAS,EAAC,8BAA8B;MAAAc,QAAA,EACzC3B,MAAM,CAAC4B,GAAG,CAAC,CAAC7B,KAAK,EAAE8B,KAAK,KAAI;AAC3B;AACA,QAAA,oBAAOnB,cAAA,CAAA,IAAA,EAAA;UAAAiB,QAAA,EAAiBL,eAAe,CAACvB,KAAK,CAAA;AAAC,SAAA,EAA9B8B,KAAmC,CAAC,CAAA;OACrD,CAAA;AAAC,KACA,CAAC,CAAA;GAER,CAAA;EAED,MAAMC,cAAc,GAAGA,MAAK;IAC1B,IAAI/B,KAAK,IAAIC,MAAM,EAAEQ,MAAM,IAAIX,QAAM,KAAKM,aAAM,CAACM,MAAM,EAAE;MACvD,oBACEC,cAAA,CAACqB,IAAI,EAAA;QAACC,IAAI,EAAEC,qBAAU,CAACC,iBAAkB;AAACrB,QAAAA,SAAS,EAAC,eAAe;AAAAc,QAAAA,QAAA,EAChE3B,MAAM,EAAEQ,MAAM,GAAGkB,iBAAiB,CAAC1B,MAAM,CAAC,GAAGsB,eAAe,CAACvB,KAAK,CAAA;AAAC,OAChE,CAAC,CAAA;AAEX,KAAA;AAEA,IAAA,QAAQF,QAAM;MACZ,KAAKM,aAAM,CAACa,OAAO;QACjB,oBAAON,cAAA,CAACqB,IAAI,EAAA;UAACC,IAAI,EAAEC,qBAAU,CAACC,iBAAkB;AAAAP,UAAAA,QAAA,EAAEhC,aAAa,CAAC6B,mBAAQ,CAACW,SAAS,CAAA;AAAC,SAAO,CAAC,CAAA;MAC7F,KAAKhC,aAAM,CAACY,UAAU;QACpB,oBAAOL,cAAA,CAACqB,IAAI,EAAA;AAAAJ,UAAAA,QAAA,EAAEhC,aAAa,CAAC6B,mBAAQ,CAACY,QAAQ,CAAA;AAAC,SAAO,CAAC,CAAA;MACxD,KAAKjC,aAAM,CAACC,SAAS,CAAA;MACrB,KAAKD,aAAM,CAACiB,IAAI,CAAA;AAChB,MAAA;QACE,oBACEV,cAAA,CAACqB,IAAI,EAAA;UAACC,IAAI,EAAEC,qBAAU,CAACC,iBAAkB;AAACrB,UAAAA,SAAS,EAAC,eAAe;AAAAc,UAAAA,QAAA,EAChEhC,aAAa,CAAC6B,mBAAQ,CAACa,QAAQ,CAAA;AAAC,SAC7B,CAAC,CAAA;AAEb,KAAA;GACD,CAAA;EAED,MAAMC,QAAQ,GAAGA,MAAK;AACpB,IAAA,OAAOxC,QAAQ,IAAIH,aAAa,CAAC6B,mBAAQ,CAACe,YAAY,CAAC,CAAA;GACxD,CAAA;EAED,MAAMC,cAAc,GAAIC,KAAuB,IAAU;AACvD,IAAA,IAAIhD,UAAU,EAAE;MACdgD,KAAK,CAACC,cAAc,EAAE,CAAA;MACtBjD,UAAU,CAACH,IAAI,CAAC,CAAA;AAClB,KAAA;GACD,CAAA;AAED,EAAA,oBACEoB,cAAA,CAAA,KAAA,EAAA;AACEG,IAAAA,SAAS,EAAE8B,2BAAU,CAAC,gBAAgB,EAAE;AAAE,MAAA,sBAAsB,EAAEzC,WAAAA;AAAW,KAAE,CAAE;IACjF,aAAad,EAAAA,gBAAQ,CAACwD,UAAW;AAAAjB,IAAAA,QAAA,eAEjCkB,eAAA,CAAA,KAAA,EAAA;AAAKhC,MAAAA,SAAS,EAAC,sBAAsB;MAAAc,QAAA,EAAA,cACnCjB,cAAA,CAACoC,6BAAc,EAAA;AACb7C,QAAAA,GAAG,EAAEC,WAAW,GAAGD,GAAG,GAAGI,SAAU;AACnCX,QAAAA,gBAAgB,EAAEA,gBAAiB;AACnCD,QAAAA,UAAU,EAAE+C,cAAe;AAAAb,QAAAA,QAAA,eAE3BjB,cAAA,CAAA,KAAA,EAAA;AAAKG,UAAAA,SAAS,EAAC,kBAAkB;AAAC,UAAA,WAAA,EAAU,QAAQ;AAAAc,UAAAA,QAAA,eAClDkB,eAAA,CAAA,KAAA,EAAA;AAAKhC,YAAAA,SAAS,EAAC,OAAO;AAAAc,YAAAA,QAAA,gBACpBjB,cAAA,CAAA,KAAA,EAAA;AAAKG,cAAAA,SAAS,EAAC,2BAA2B;cAAAc,QAAA,EAAEpB,OAAO,EAAE;aAAM,CAC3D,eAAAsC,eAAA,CAAA,KAAA,EAAA;AAAKhC,cAAAA,SAAS,EAAC,yBAAyB;cAAC,aAAazB,EAAAA,gBAAQ,CAAC2D,SAAU;cAAApB,QAAA,EAAA,cACvEjB,cAAA,CAACqB,IAAI,EAAA;AAAClB,gBAAAA,SAAS,EAAC,sCAAsC;gBAAAc,QAAA,EAAEW,QAAQ,EAAE;AAAA,eAAO,CACzE,EAACR,cAAc,EAAE,CAAA;AAAA,aACd,CACP,CAAA;WAAK,CAAA;SACF,CAAA;AACP,OAAgB,CAChB,EAACvC,SAAS,iBACRmB,cAAA,CAAA,QAAA,EAAA;AACE,QAAA,YAAA,EAAYf,aAAa,CAAC6B,mBAAQ,CAACwB,UAAU,EAAE;AAAElD,UAAAA,QAAAA;AAAU,SAAA,CAAE;QAC7De,SAAS,EAAE8B,2BAAU,CAAC,KAAK,EAAE,+BAA+B,EAAE,YAAY,EAAE;AAC1E,UAAA,6BAA6B,EAAEjD,gBAAAA;AAChC,SAAA,CAAE;AACHsC,QAAAA,IAAI,EAAC,QAAQ;AACbiB,QAAAA,OAAO,EAAEA,MAAMzD,QAAQ,EAAG;QAAAmC,QAAA,eAE1BjB,cAAA,CAACwC,SAAG,EAAA;AAACtC,UAAAA,IAAI,EAAE,EAAA;SACb,CAAA;AAAA,OAAQ,CACT,CAAA;KACE,CAAA;AACP,GAAK,CAAC,CAAA;AAEV;;;;"}
1
+ {"version":3,"file":"UploadItem.js","sources":["../../../src/uploadInput/uploadItem/UploadItem.tsx"],"sourcesContent":["import { Bin } from '@transferwise/icons';\nimport classNames from 'classnames';\nimport { useIntl } from 'react-intl';\n\nimport Body from '../../body';\nimport { Size, Status, Typography, Sentiment } from '../../common';\nimport ProcessIndicator from '../../processIndicator/ProcessIndicator';\nimport StatusIcon from '../../statusIcon/StatusIcon';\nimport { UploadedFile, UploadError } from '../types';\n\nimport MESSAGES from './UploadItem.messages';\nimport { UploadItemBody } from './UploadItemBody';\n\nexport type UploadItemProps = JSX.IntrinsicAttributes & {\n file: UploadedFile;\n /**\n * Is this Item part of a multiple- or single-file UploadInput\n */\n singleFileUpload: boolean;\n canDelete: boolean;\n onDelete: () => void;\n\n /**\n * Callback to be called when the file link is clicked.\n * When provided, you need to manually trigger actions to load/download the file.\n *\n * @param file\n */\n onDownload?: (file: UploadedFile) => void;\n};\n\nexport enum TEST_IDS {\n uploadItem = 'uploadItem',\n mediaBody = 'mediaBody',\n}\n\nconst UploadItem = ({\n file,\n canDelete,\n onDelete,\n onDownload,\n singleFileUpload,\n}: UploadItemProps) => {\n const { formatMessage } = useIntl();\n const { status, filename, error, errors, url } = file;\n\n const isSucceeded = [Status.SUCCEEDED, undefined].includes(status) && !!url;\n\n const getIcon = () => {\n if (error || errors?.length || status === Status.FAILED) {\n return <StatusIcon size={Size.SMALL} sentiment={Sentiment.NEGATIVE} />;\n }\n\n let processIndicator: React.ReactNode;\n\n switch (status) {\n case Status.PROCESSING:\n case Status.PENDING:\n processIndicator = <ProcessIndicator size={Size.EXTRA_SMALL} status={Status.PROCESSING} />;\n break;\n case Status.SUCCEEDED:\n case Status.DONE:\n default:\n processIndicator = <StatusIcon size={Size.SMALL} sentiment={Sentiment.POSITIVE} />;\n }\n\n return processIndicator;\n };\n\n const getErrorMessage = (error?: UploadError) =>\n typeof error === 'object' ? error.message : error || formatMessage(MESSAGES.uploadingFailed);\n\n const getMultipleErrors = (errors?: UploadError[]) => {\n if (!errors?.length) {\n return null;\n }\n\n if (errors?.length === 1) {\n return getErrorMessage(errors[0]);\n }\n\n return (\n <ul className=\"np-upload-input-errors m-b-0\">\n {errors.map((error, index) => {\n // eslint-disable-next-line react/no-array-index-key\n return <li key={index}>{getErrorMessage(error)}</li>;\n })}\n </ul>\n );\n };\n\n const getDescription = () => {\n if (error || errors?.length || status === Status.FAILED) {\n return (\n <Body type={Typography.BODY_DEFAULT_BOLD} className=\"text-negative\">\n {errors?.length ? getMultipleErrors(errors) : getErrorMessage(error)}\n </Body>\n );\n }\n\n switch (status) {\n case Status.PENDING:\n return <Body type={Typography.BODY_DEFAULT_BOLD}>{formatMessage(MESSAGES.uploading)}</Body>;\n case Status.PROCESSING:\n return <Body>{formatMessage(MESSAGES.deleting)}</Body>;\n case Status.SUCCEEDED:\n case Status.DONE:\n default:\n return (\n <Body type={Typography.BODY_DEFAULT_BOLD} className=\"text-positive\">\n {formatMessage(MESSAGES.uploaded)}\n </Body>\n );\n }\n };\n\n const getTitle = () => {\n return filename || formatMessage(MESSAGES.uploadedFile);\n };\n\n const onDownloadFile = (event: React.MouseEvent): void => {\n if (onDownload) {\n event.preventDefault();\n onDownload(file);\n }\n };\n\n return (\n <div\n className={classNames('np-upload-item', { 'np-upload-item__link': isSucceeded })}\n data-testid={TEST_IDS.uploadItem}\n >\n <div className=\"np-upload-item__body\">\n <UploadItemBody\n url={isSucceeded ? url : undefined}\n singleFileUpload={singleFileUpload}\n onDownload={onDownloadFile}\n >\n <div className=\"np-upload-button\" aria-live=\"polite\">\n <div className=\"media\">\n <div className=\"np-upload-icon media-left\">{getIcon()}</div>\n <div className=\"media-body text-xs-left\" data-testid={TEST_IDS.mediaBody}>\n <Body className=\"text-word-break d-block text-primary\">{getTitle()}</Body>\n {getDescription()}\n </div>\n </div>\n </div>\n </UploadItemBody>\n {canDelete && (\n <button\n aria-label={formatMessage(MESSAGES.removeFile, { filename })}\n className={classNames('btn', 'np-upload-item__remove-button', 'media-left', {\n 'np-upload-item--single-file': singleFileUpload,\n })}\n type=\"button\"\n onClick={() => onDelete()}\n >\n <Bin size={16} />\n </button>\n )}\n </div>\n </div>\n );\n};\n\nexport default UploadItem;\n"],"names":["TEST_IDS","UploadItem","file","canDelete","onDelete","onDownload","singleFileUpload","formatMessage","useIntl","status","filename","error","errors","url","isSucceeded","Status","SUCCEEDED","undefined","includes","getIcon","length","FAILED","_jsx","StatusIcon","size","Size","SMALL","sentiment","Sentiment","NEGATIVE","processIndicator","PROCESSING","PENDING","ProcessIndicator","EXTRA_SMALL","DONE","POSITIVE","getErrorMessage","message","MESSAGES","uploadingFailed","getMultipleErrors","className","children","map","index","getDescription","Body","type","Typography","BODY_DEFAULT_BOLD","uploading","deleting","uploaded","getTitle","uploadedFile","onDownloadFile","event","preventDefault","classNames","uploadItem","_jsxs","UploadItemBody","mediaBody","removeFile","onClick","Bin"],"mappings":"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"}
@@ -1,11 +1,13 @@
1
- import { Bin, CrossCircleFill, CheckCircleFill } from '@transferwise/icons';
1
+ import { Bin } from '@transferwise/icons';
2
2
  import classNames from 'classnames';
3
3
  import { useIntl } from 'react-intl';
4
4
  import Body from '../../body/Body.mjs';
5
5
  import ProcessIndicator from '../../processIndicator/ProcessIndicator.mjs';
6
+ import StatusIcon from '../../statusIcon/StatusIcon.mjs';
6
7
  import MESSAGES from './UploadItem.messages.mjs';
7
- import { UploadItemLink } from './UploadItemLink.mjs';
8
+ import { UploadItemBody } from './UploadItemBody.mjs';
8
9
  import { jsx, jsxs } from 'react/jsx-runtime';
10
+ import { Sentiment } from '../../common/propsValues/sentiment.mjs';
9
11
  import { Status } from '../../common/propsValues/status.mjs';
10
12
  import { Size } from '../../common/propsValues/size.mjs';
11
13
  import { Typography } from '../../common/propsValues/typography.mjs';
@@ -33,16 +35,11 @@ const UploadItem = ({
33
35
  url
34
36
  } = file;
35
37
  const isSucceeded = [Status.SUCCEEDED, undefined].includes(status) && !!url;
36
- /**
37
- * We're temporarily reverting to the regular icon components,
38
- * until the StatusIcon receives 24px sizing. Some misalignment
39
- * to be expected.
40
- */
41
38
  const getIcon = () => {
42
39
  if (error || errors?.length || status === Status.FAILED) {
43
- return /*#__PURE__*/jsx(CrossCircleFill, {
44
- size: 24,
45
- className: "emphasis--negative"
40
+ return /*#__PURE__*/jsx(StatusIcon, {
41
+ size: Size.SMALL,
42
+ sentiment: Sentiment.NEGATIVE
46
43
  });
47
44
  }
48
45
  let processIndicator;
@@ -57,9 +54,9 @@ const UploadItem = ({
57
54
  case Status.SUCCEEDED:
58
55
  case Status.DONE:
59
56
  default:
60
- processIndicator = /*#__PURE__*/jsx(CheckCircleFill, {
61
- size: 24,
62
- className: "emphasis--positive"
57
+ processIndicator = /*#__PURE__*/jsx(StatusIcon, {
58
+ size: Size.SMALL,
59
+ sentiment: Sentiment.POSITIVE
63
60
  });
64
61
  }
65
62
  return processIndicator;
@@ -121,12 +118,12 @@ const UploadItem = ({
121
118
  };
122
119
  return /*#__PURE__*/jsx("div", {
123
120
  className: classNames('np-upload-item', {
124
- 'np-upload-item--link': isSucceeded
121
+ 'np-upload-item__link': isSucceeded
125
122
  }),
126
123
  "data-testid": TEST_IDS.uploadItem,
127
124
  children: /*#__PURE__*/jsxs("div", {
128
125
  className: "np-upload-item__body",
129
- children: [/*#__PURE__*/jsx(UploadItemLink, {
126
+ children: [/*#__PURE__*/jsx(UploadItemBody, {
130
127
  url: isSucceeded ? url : undefined,
131
128
  singleFileUpload: singleFileUpload,
132
129
  onDownload: onDownloadFile,
@@ -1 +1 @@
1
- {"version":3,"file":"UploadItem.mjs","sources":["../../../src/uploadInput/uploadItem/UploadItem.tsx"],"sourcesContent":["import { Bin, CheckCircleFill, CrossCircleFill } from '@transferwise/icons';\nimport classNames from 'classnames';\nimport { useIntl } from 'react-intl';\n\nimport Body from '../../body';\nimport { Size, Status, Typography, Sentiment } from '../../common';\nimport ProcessIndicator from '../../processIndicator/ProcessIndicator';\nimport StatusIcon from '../../statusIcon/StatusIcon';\nimport { UploadedFile, UploadError } from '../types';\n\nimport MESSAGES from './UploadItem.messages';\nimport { UploadItemLink } from './UploadItemLink';\n\nexport type UploadItemProps = JSX.IntrinsicAttributes & {\n file: UploadedFile;\n /**\n * Is this Item part of a multiple- or single-file UploadInput\n */\n singleFileUpload: boolean;\n canDelete: boolean;\n onDelete: () => void;\n\n /**\n * Callback to be called when the file link is clicked.\n * When provided, you need to manually trigger actions to load/download the file.\n *\n * @param file\n */\n onDownload?: (file: UploadedFile) => void;\n};\n\nexport enum TEST_IDS {\n uploadItem = 'uploadItem',\n mediaBody = 'mediaBody',\n}\n\nconst UploadItem = ({\n file,\n canDelete,\n onDelete,\n onDownload,\n singleFileUpload,\n}: UploadItemProps) => {\n const { formatMessage } = useIntl();\n const { status, filename, error, errors, url } = file;\n\n const isSucceeded = [Status.SUCCEEDED, undefined].includes(status) && !!url;\n\n /**\n * We're temporarily reverting to the regular icon components,\n * until the StatusIcon receives 24px sizing. Some misalignment\n * to be expected.\n */\n const getIcon = () => {\n if (error || errors?.length || status === Status.FAILED) {\n return <CrossCircleFill size={24} className=\"emphasis--negative\" />;\n }\n\n let processIndicator: React.ReactNode;\n\n switch (status) {\n case Status.PROCESSING:\n case Status.PENDING:\n processIndicator = <ProcessIndicator size={Size.EXTRA_SMALL} status={Status.PROCESSING} />;\n break;\n case Status.SUCCEEDED:\n case Status.DONE:\n default:\n processIndicator = <CheckCircleFill size={24} className=\"emphasis--positive\" />;\n }\n\n return processIndicator;\n };\n\n const getErrorMessage = (error?: UploadError) =>\n typeof error === 'object' ? error.message : error || formatMessage(MESSAGES.uploadingFailed);\n\n const getMultipleErrors = (errors?: UploadError[]) => {\n if (!errors?.length) {\n return null;\n }\n\n if (errors?.length === 1) {\n return getErrorMessage(errors[0]);\n }\n\n return (\n <ul className=\"np-upload-input-errors m-b-0\">\n {errors.map((error, index) => {\n // eslint-disable-next-line react/no-array-index-key\n return <li key={index}>{getErrorMessage(error)}</li>;\n })}\n </ul>\n );\n };\n\n const getDescription = () => {\n if (error || errors?.length || status === Status.FAILED) {\n return (\n <Body type={Typography.BODY_DEFAULT_BOLD} className=\"text-negative\">\n {errors?.length ? getMultipleErrors(errors) : getErrorMessage(error)}\n </Body>\n );\n }\n\n switch (status) {\n case Status.PENDING:\n return <Body type={Typography.BODY_DEFAULT_BOLD}>{formatMessage(MESSAGES.uploading)}</Body>;\n case Status.PROCESSING:\n return <Body>{formatMessage(MESSAGES.deleting)}</Body>;\n case Status.SUCCEEDED:\n case Status.DONE:\n default:\n return (\n <Body type={Typography.BODY_DEFAULT_BOLD} className=\"text-positive\">\n {formatMessage(MESSAGES.uploaded)}\n </Body>\n );\n }\n };\n\n const getTitle = () => {\n return filename || formatMessage(MESSAGES.uploadedFile);\n };\n\n const onDownloadFile = (event: React.MouseEvent): void => {\n if (onDownload) {\n event.preventDefault();\n onDownload(file);\n }\n };\n\n return (\n <div\n className={classNames('np-upload-item', { 'np-upload-item--link': isSucceeded })}\n data-testid={TEST_IDS.uploadItem}\n >\n <div className=\"np-upload-item__body\">\n <UploadItemLink\n url={isSucceeded ? url : undefined}\n singleFileUpload={singleFileUpload}\n onDownload={onDownloadFile}\n >\n <div className=\"np-upload-button\" aria-live=\"polite\">\n <div className=\"media\">\n <div className=\"np-upload-icon media-left\">{getIcon()}</div>\n <div className=\"media-body text-xs-left\" data-testid={TEST_IDS.mediaBody}>\n <Body className=\"text-word-break d-block text-primary\">{getTitle()}</Body>\n {getDescription()}\n </div>\n </div>\n </div>\n </UploadItemLink>\n {canDelete && (\n <button\n aria-label={formatMessage(MESSAGES.removeFile, { filename })}\n className={classNames('btn', 'np-upload-item__remove-button', 'media-left', {\n 'np-upload-item--single-file': singleFileUpload,\n })}\n type=\"button\"\n onClick={() => onDelete()}\n >\n <Bin size={16} />\n </button>\n )}\n </div>\n </div>\n );\n};\n\nexport default UploadItem;\n"],"names":["TEST_IDS","UploadItem","file","canDelete","onDelete","onDownload","singleFileUpload","formatMessage","useIntl","status","filename","error","errors","url","isSucceeded","Status","SUCCEEDED","undefined","includes","getIcon","length","FAILED","_jsx","CrossCircleFill","size","className","processIndicator","PROCESSING","PENDING","ProcessIndicator","Size","EXTRA_SMALL","DONE","CheckCircleFill","getErrorMessage","message","MESSAGES","uploadingFailed","getMultipleErrors","children","map","index","getDescription","Body","type","Typography","BODY_DEFAULT_BOLD","uploading","deleting","uploaded","getTitle","uploadedFile","onDownloadFile","event","preventDefault","classNames","uploadItem","_jsxs","UploadItemLink","mediaBody","removeFile","onClick","Bin"],"mappings":";;;;;;;;;;;;IA+BYA,SAGX;AAHD,CAAA,UAAYA,QAAQ,EAAA;AAClBA,EAAAA,QAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzBA,EAAAA,QAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACzB,CAAC,EAHWA,QAAQ,KAARA,QAAQ,GAGnB,EAAA,CAAA,CAAA,CAAA;AAEKC,MAAAA,UAAU,GAAGA,CAAC;EAClBC,IAAI;EACJC,SAAS;EACTC,QAAQ;EACRC,UAAU;AACVC,EAAAA,gBAAAA;AAAgB,CACA,KAAI;EACpB,MAAM;AAAEC,IAAAA,aAAAA;GAAe,GAAGC,OAAO,EAAE,CAAA;EACnC,MAAM;IAAEC,MAAM;IAAEC,QAAQ;IAAEC,KAAK;IAAEC,MAAM;AAAEC,IAAAA,GAAAA;AAAK,GAAA,GAAGX,IAAI,CAAA;AAErD,EAAA,MAAMY,WAAW,GAAG,CAACC,MAAM,CAACC,SAAS,EAAEC,SAAS,CAAC,CAACC,QAAQ,CAACT,MAAM,CAAC,IAAI,CAAC,CAACI,GAAG,CAAA;AAE3E;;;;AAIG;EACH,MAAMM,OAAO,GAAGA,MAAK;IACnB,IAAIR,KAAK,IAAIC,MAAM,EAAEQ,MAAM,IAAIX,MAAM,KAAKM,MAAM,CAACM,MAAM,EAAE;MACvD,oBAAOC,GAAA,CAACC,eAAe,EAAA;AAACC,QAAAA,IAAI,EAAE,EAAG;AAACC,QAAAA,SAAS,EAAC,oBAAA;AAAoB,QAAG,CAAA;AACrE,KAAA;AAEA,IAAA,IAAIC,gBAAiC,CAAA;AAErC,IAAA,QAAQjB,MAAM;MACZ,KAAKM,MAAM,CAACY,UAAU,CAAA;MACtB,KAAKZ,MAAM,CAACa,OAAO;QACjBF,gBAAgB,gBAAGJ,GAAA,CAACO,gBAAgB,EAAA;UAACL,IAAI,EAAEM,IAAI,CAACC,WAAY;UAACtB,MAAM,EAAEM,MAAM,CAACY,UAAAA;AAAW,UAAG,CAAA;AAC1F,QAAA,MAAA;MACF,KAAKZ,MAAM,CAACC,SAAS,CAAA;MACrB,KAAKD,MAAM,CAACiB,IAAI,CAAA;AAChB,MAAA;QACEN,gBAAgB,gBAAGJ,GAAA,CAACW,eAAe,EAAA;AAACT,UAAAA,IAAI,EAAE,EAAG;AAACC,UAAAA,SAAS,EAAC,oBAAA;AAAoB,UAAG,CAAA;AACnF,KAAA;AAEA,IAAA,OAAOC,gBAAgB,CAAA;GACxB,CAAA;EAED,MAAMQ,eAAe,GAAIvB,KAAmB,IAC1C,OAAOA,KAAK,KAAK,QAAQ,GAAGA,KAAK,CAACwB,OAAO,GAAGxB,KAAK,IAAIJ,aAAa,CAAC6B,QAAQ,CAACC,eAAe,CAAC,CAAA;EAE9F,MAAMC,iBAAiB,GAAI1B,MAAsB,IAAI;AACnD,IAAA,IAAI,CAACA,MAAM,EAAEQ,MAAM,EAAE;AACnB,MAAA,OAAO,IAAI,CAAA;AACb,KAAA;AAEA,IAAA,IAAIR,MAAM,EAAEQ,MAAM,KAAK,CAAC,EAAE;AACxB,MAAA,OAAOc,eAAe,CAACtB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AACnC,KAAA;AAEA,IAAA,oBACEU,GAAA,CAAA,IAAA,EAAA;AAAIG,MAAAA,SAAS,EAAC,8BAA8B;MAAAc,QAAA,EACzC3B,MAAM,CAAC4B,GAAG,CAAC,CAAC7B,KAAK,EAAE8B,KAAK,KAAI;AAC3B;AACA,QAAA,oBAAOnB,GAAA,CAAA,IAAA,EAAA;UAAAiB,QAAA,EAAiBL,eAAe,CAACvB,KAAK,CAAA;AAAC,SAAA,EAA9B8B,KAAmC,CAAC,CAAA;OACrD,CAAA;AAAC,KACA,CAAC,CAAA;GAER,CAAA;EAED,MAAMC,cAAc,GAAGA,MAAK;IAC1B,IAAI/B,KAAK,IAAIC,MAAM,EAAEQ,MAAM,IAAIX,MAAM,KAAKM,MAAM,CAACM,MAAM,EAAE;MACvD,oBACEC,GAAA,CAACqB,IAAI,EAAA;QAACC,IAAI,EAAEC,UAAU,CAACC,iBAAkB;AAACrB,QAAAA,SAAS,EAAC,eAAe;AAAAc,QAAAA,QAAA,EAChE3B,MAAM,EAAEQ,MAAM,GAAGkB,iBAAiB,CAAC1B,MAAM,CAAC,GAAGsB,eAAe,CAACvB,KAAK,CAAA;AAAC,OAChE,CAAC,CAAA;AAEX,KAAA;AAEA,IAAA,QAAQF,MAAM;MACZ,KAAKM,MAAM,CAACa,OAAO;QACjB,oBAAON,GAAA,CAACqB,IAAI,EAAA;UAACC,IAAI,EAAEC,UAAU,CAACC,iBAAkB;AAAAP,UAAAA,QAAA,EAAEhC,aAAa,CAAC6B,QAAQ,CAACW,SAAS,CAAA;AAAC,SAAO,CAAC,CAAA;MAC7F,KAAKhC,MAAM,CAACY,UAAU;QACpB,oBAAOL,GAAA,CAACqB,IAAI,EAAA;AAAAJ,UAAAA,QAAA,EAAEhC,aAAa,CAAC6B,QAAQ,CAACY,QAAQ,CAAA;AAAC,SAAO,CAAC,CAAA;MACxD,KAAKjC,MAAM,CAACC,SAAS,CAAA;MACrB,KAAKD,MAAM,CAACiB,IAAI,CAAA;AAChB,MAAA;QACE,oBACEV,GAAA,CAACqB,IAAI,EAAA;UAACC,IAAI,EAAEC,UAAU,CAACC,iBAAkB;AAACrB,UAAAA,SAAS,EAAC,eAAe;AAAAc,UAAAA,QAAA,EAChEhC,aAAa,CAAC6B,QAAQ,CAACa,QAAQ,CAAA;AAAC,SAC7B,CAAC,CAAA;AAEb,KAAA;GACD,CAAA;EAED,MAAMC,QAAQ,GAAGA,MAAK;AACpB,IAAA,OAAOxC,QAAQ,IAAIH,aAAa,CAAC6B,QAAQ,CAACe,YAAY,CAAC,CAAA;GACxD,CAAA;EAED,MAAMC,cAAc,GAAIC,KAAuB,IAAU;AACvD,IAAA,IAAIhD,UAAU,EAAE;MACdgD,KAAK,CAACC,cAAc,EAAE,CAAA;MACtBjD,UAAU,CAACH,IAAI,CAAC,CAAA;AAClB,KAAA;GACD,CAAA;AAED,EAAA,oBACEoB,GAAA,CAAA,KAAA,EAAA;AACEG,IAAAA,SAAS,EAAE8B,UAAU,CAAC,gBAAgB,EAAE;AAAE,MAAA,sBAAsB,EAAEzC,WAAAA;AAAW,KAAE,CAAE;IACjF,aAAad,EAAAA,QAAQ,CAACwD,UAAW;AAAAjB,IAAAA,QAAA,eAEjCkB,IAAA,CAAA,KAAA,EAAA;AAAKhC,MAAAA,SAAS,EAAC,sBAAsB;MAAAc,QAAA,EAAA,cACnCjB,GAAA,CAACoC,cAAc,EAAA;AACb7C,QAAAA,GAAG,EAAEC,WAAW,GAAGD,GAAG,GAAGI,SAAU;AACnCX,QAAAA,gBAAgB,EAAEA,gBAAiB;AACnCD,QAAAA,UAAU,EAAE+C,cAAe;AAAAb,QAAAA,QAAA,eAE3BjB,GAAA,CAAA,KAAA,EAAA;AAAKG,UAAAA,SAAS,EAAC,kBAAkB;AAAC,UAAA,WAAA,EAAU,QAAQ;AAAAc,UAAAA,QAAA,eAClDkB,IAAA,CAAA,KAAA,EAAA;AAAKhC,YAAAA,SAAS,EAAC,OAAO;AAAAc,YAAAA,QAAA,gBACpBjB,GAAA,CAAA,KAAA,EAAA;AAAKG,cAAAA,SAAS,EAAC,2BAA2B;cAAAc,QAAA,EAAEpB,OAAO,EAAE;aAAM,CAC3D,eAAAsC,IAAA,CAAA,KAAA,EAAA;AAAKhC,cAAAA,SAAS,EAAC,yBAAyB;cAAC,aAAazB,EAAAA,QAAQ,CAAC2D,SAAU;cAAApB,QAAA,EAAA,cACvEjB,GAAA,CAACqB,IAAI,EAAA;AAAClB,gBAAAA,SAAS,EAAC,sCAAsC;gBAAAc,QAAA,EAAEW,QAAQ,EAAE;AAAA,eAAO,CACzE,EAACR,cAAc,EAAE,CAAA;AAAA,aACd,CACP,CAAA;WAAK,CAAA;SACF,CAAA;AACP,OAAgB,CAChB,EAACvC,SAAS,iBACRmB,GAAA,CAAA,QAAA,EAAA;AACE,QAAA,YAAA,EAAYf,aAAa,CAAC6B,QAAQ,CAACwB,UAAU,EAAE;AAAElD,UAAAA,QAAAA;AAAU,SAAA,CAAE;QAC7De,SAAS,EAAE8B,UAAU,CAAC,KAAK,EAAE,+BAA+B,EAAE,YAAY,EAAE;AAC1E,UAAA,6BAA6B,EAAEjD,gBAAAA;AAChC,SAAA,CAAE;AACHsC,QAAAA,IAAI,EAAC,QAAQ;AACbiB,QAAAA,OAAO,EAAEA,MAAMzD,QAAQ,EAAG;QAAAmC,QAAA,eAE1BjB,GAAA,CAACwC,GAAG,EAAA;AAACtC,UAAAA,IAAI,EAAE,EAAA;SACb,CAAA;AAAA,OAAQ,CACT,CAAA;KACE,CAAA;AACP,GAAK,CAAC,CAAA;AAEV;;;;"}
1
+ {"version":3,"file":"UploadItem.mjs","sources":["../../../src/uploadInput/uploadItem/UploadItem.tsx"],"sourcesContent":["import { Bin } from '@transferwise/icons';\nimport classNames from 'classnames';\nimport { useIntl } from 'react-intl';\n\nimport Body from '../../body';\nimport { Size, Status, Typography, Sentiment } from '../../common';\nimport ProcessIndicator from '../../processIndicator/ProcessIndicator';\nimport StatusIcon from '../../statusIcon/StatusIcon';\nimport { UploadedFile, UploadError } from '../types';\n\nimport MESSAGES from './UploadItem.messages';\nimport { UploadItemBody } from './UploadItemBody';\n\nexport type UploadItemProps = JSX.IntrinsicAttributes & {\n file: UploadedFile;\n /**\n * Is this Item part of a multiple- or single-file UploadInput\n */\n singleFileUpload: boolean;\n canDelete: boolean;\n onDelete: () => void;\n\n /**\n * Callback to be called when the file link is clicked.\n * When provided, you need to manually trigger actions to load/download the file.\n *\n * @param file\n */\n onDownload?: (file: UploadedFile) => void;\n};\n\nexport enum TEST_IDS {\n uploadItem = 'uploadItem',\n mediaBody = 'mediaBody',\n}\n\nconst UploadItem = ({\n file,\n canDelete,\n onDelete,\n onDownload,\n singleFileUpload,\n}: UploadItemProps) => {\n const { formatMessage } = useIntl();\n const { status, filename, error, errors, url } = file;\n\n const isSucceeded = [Status.SUCCEEDED, undefined].includes(status) && !!url;\n\n const getIcon = () => {\n if (error || errors?.length || status === Status.FAILED) {\n return <StatusIcon size={Size.SMALL} sentiment={Sentiment.NEGATIVE} />;\n }\n\n let processIndicator: React.ReactNode;\n\n switch (status) {\n case Status.PROCESSING:\n case Status.PENDING:\n processIndicator = <ProcessIndicator size={Size.EXTRA_SMALL} status={Status.PROCESSING} />;\n break;\n case Status.SUCCEEDED:\n case Status.DONE:\n default:\n processIndicator = <StatusIcon size={Size.SMALL} sentiment={Sentiment.POSITIVE} />;\n }\n\n return processIndicator;\n };\n\n const getErrorMessage = (error?: UploadError) =>\n typeof error === 'object' ? error.message : error || formatMessage(MESSAGES.uploadingFailed);\n\n const getMultipleErrors = (errors?: UploadError[]) => {\n if (!errors?.length) {\n return null;\n }\n\n if (errors?.length === 1) {\n return getErrorMessage(errors[0]);\n }\n\n return (\n <ul className=\"np-upload-input-errors m-b-0\">\n {errors.map((error, index) => {\n // eslint-disable-next-line react/no-array-index-key\n return <li key={index}>{getErrorMessage(error)}</li>;\n })}\n </ul>\n );\n };\n\n const getDescription = () => {\n if (error || errors?.length || status === Status.FAILED) {\n return (\n <Body type={Typography.BODY_DEFAULT_BOLD} className=\"text-negative\">\n {errors?.length ? getMultipleErrors(errors) : getErrorMessage(error)}\n </Body>\n );\n }\n\n switch (status) {\n case Status.PENDING:\n return <Body type={Typography.BODY_DEFAULT_BOLD}>{formatMessage(MESSAGES.uploading)}</Body>;\n case Status.PROCESSING:\n return <Body>{formatMessage(MESSAGES.deleting)}</Body>;\n case Status.SUCCEEDED:\n case Status.DONE:\n default:\n return (\n <Body type={Typography.BODY_DEFAULT_BOLD} className=\"text-positive\">\n {formatMessage(MESSAGES.uploaded)}\n </Body>\n );\n }\n };\n\n const getTitle = () => {\n return filename || formatMessage(MESSAGES.uploadedFile);\n };\n\n const onDownloadFile = (event: React.MouseEvent): void => {\n if (onDownload) {\n event.preventDefault();\n onDownload(file);\n }\n };\n\n return (\n <div\n className={classNames('np-upload-item', { 'np-upload-item__link': isSucceeded })}\n data-testid={TEST_IDS.uploadItem}\n >\n <div className=\"np-upload-item__body\">\n <UploadItemBody\n url={isSucceeded ? url : undefined}\n singleFileUpload={singleFileUpload}\n onDownload={onDownloadFile}\n >\n <div className=\"np-upload-button\" aria-live=\"polite\">\n <div className=\"media\">\n <div className=\"np-upload-icon media-left\">{getIcon()}</div>\n <div className=\"media-body text-xs-left\" data-testid={TEST_IDS.mediaBody}>\n <Body className=\"text-word-break d-block text-primary\">{getTitle()}</Body>\n {getDescription()}\n </div>\n </div>\n </div>\n </UploadItemBody>\n {canDelete && (\n <button\n aria-label={formatMessage(MESSAGES.removeFile, { filename })}\n className={classNames('btn', 'np-upload-item__remove-button', 'media-left', {\n 'np-upload-item--single-file': singleFileUpload,\n })}\n type=\"button\"\n onClick={() => onDelete()}\n >\n <Bin size={16} />\n </button>\n )}\n </div>\n </div>\n );\n};\n\nexport default UploadItem;\n"],"names":["TEST_IDS","UploadItem","file","canDelete","onDelete","onDownload","singleFileUpload","formatMessage","useIntl","status","filename","error","errors","url","isSucceeded","Status","SUCCEEDED","undefined","includes","getIcon","length","FAILED","_jsx","StatusIcon","size","Size","SMALL","sentiment","Sentiment","NEGATIVE","processIndicator","PROCESSING","PENDING","ProcessIndicator","EXTRA_SMALL","DONE","POSITIVE","getErrorMessage","message","MESSAGES","uploadingFailed","getMultipleErrors","className","children","map","index","getDescription","Body","type","Typography","BODY_DEFAULT_BOLD","uploading","deleting","uploaded","getTitle","uploadedFile","onDownloadFile","event","preventDefault","classNames","uploadItem","_jsxs","UploadItemBody","mediaBody","removeFile","onClick","Bin"],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+
5
+ const UploadItemBody = ({
6
+ children,
7
+ url,
8
+ onDownload,
9
+ singleFileUpload
10
+ }) => {
11
+ if (!url) {
12
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
13
+ children: children
14
+ });
15
+ }
16
+ return /*#__PURE__*/jsxRuntime.jsx("a", {
17
+ href: url,
18
+ target: "_blank",
19
+ rel: "noopener noreferrer",
20
+ className: singleFileUpload ? 'np-upload-item--single-file' : 'np-upload-item--link',
21
+ onClick: onDownload,
22
+ children: children
23
+ });
24
+ };
25
+
26
+ exports.UploadItemBody = UploadItemBody;
27
+ //# sourceMappingURL=UploadItemBody.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UploadItemBody.js","sources":["../../../src/uploadInput/uploadItem/UploadItemBody.tsx"],"sourcesContent":["import { PropsWithChildren, MouseEvent } from 'react';\n\ntype UploadItemLinkProps = PropsWithChildren<{\n url?: string;\n onDownload?: (event: MouseEvent) => void;\n singleFileUpload: boolean;\n}>;\n\nexport const UploadItemBody = ({\n children,\n url,\n onDownload,\n singleFileUpload,\n}: UploadItemLinkProps) => {\n if (!url) {\n return <div>{children}</div>;\n }\n\n return (\n <a\n href={url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={singleFileUpload ? 'np-upload-item--single-file' : 'np-upload-item--link'}\n onClick={onDownload}\n >\n {children}\n </a>\n );\n};\n"],"names":["UploadItemBody","children","url","onDownload","singleFileUpload","_jsx","href","target","rel","className","onClick"],"mappings":";;;;AAQO,MAAMA,cAAc,GAAGA,CAAC;EAC7BC,QAAQ;EACRC,GAAG;EACHC,UAAU;AACVC,EAAAA,gBAAAA;AAAgB,CACI,KAAI;EACxB,IAAI,CAACF,GAAG,EAAE;AACR,IAAA,oBAAOG,cAAA,CAAA,KAAA,EAAA;AAAAJ,MAAAA,QAAA,EAAMA,QAAAA;AAAQ,KAAM,CAAC,CAAA;AAC9B,GAAA;AAEA,EAAA,oBACEI,cAAA,CAAA,GAAA,EAAA;AACEC,IAAAA,IAAI,EAAEJ,GAAI;AACVK,IAAAA,MAAM,EAAC,QAAQ;AACfC,IAAAA,GAAG,EAAC,qBAAqB;AACzBC,IAAAA,SAAS,EAAEL,gBAAgB,GAAG,6BAA6B,GAAG,sBAAuB;AACrFM,IAAAA,OAAO,EAAEP,UAAW;AAAAF,IAAAA,QAAA,EAEnBA,QAAAA;AAAQ,GACR,CAAC,CAAA;AAER;;;;"}
@@ -1,7 +1,6 @@
1
- import classNames from 'classnames';
2
1
  import { jsx } from 'react/jsx-runtime';
3
2
 
4
- const UploadItemLink = ({
3
+ const UploadItemBody = ({
5
4
  children,
6
5
  url,
7
6
  onDownload,
@@ -16,11 +15,11 @@ const UploadItemLink = ({
16
15
  href: url,
17
16
  target: "_blank",
18
17
  rel: "noopener noreferrer",
19
- className: classNames('np-upload-item__link', singleFileUpload ? 'np-upload-item--single-file' : ''),
18
+ className: singleFileUpload ? 'np-upload-item--single-file' : 'np-upload-item--link',
20
19
  onClick: onDownload,
21
20
  children: children
22
21
  });
23
22
  };
24
23
 
25
- export { UploadItemLink };
26
- //# sourceMappingURL=UploadItemLink.mjs.map
24
+ export { UploadItemBody };
25
+ //# sourceMappingURL=UploadItemBody.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UploadItemBody.mjs","sources":["../../../src/uploadInput/uploadItem/UploadItemBody.tsx"],"sourcesContent":["import { PropsWithChildren, MouseEvent } from 'react';\n\ntype UploadItemLinkProps = PropsWithChildren<{\n url?: string;\n onDownload?: (event: MouseEvent) => void;\n singleFileUpload: boolean;\n}>;\n\nexport const UploadItemBody = ({\n children,\n url,\n onDownload,\n singleFileUpload,\n}: UploadItemLinkProps) => {\n if (!url) {\n return <div>{children}</div>;\n }\n\n return (\n <a\n href={url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={singleFileUpload ? 'np-upload-item--single-file' : 'np-upload-item--link'}\n onClick={onDownload}\n >\n {children}\n </a>\n );\n};\n"],"names":["UploadItemBody","children","url","onDownload","singleFileUpload","_jsx","href","target","rel","className","onClick"],"mappings":";;AAQO,MAAMA,cAAc,GAAGA,CAAC;EAC7BC,QAAQ;EACRC,GAAG;EACHC,UAAU;AACVC,EAAAA,gBAAAA;AAAgB,CACI,KAAI;EACxB,IAAI,CAACF,GAAG,EAAE;AACR,IAAA,oBAAOG,GAAA,CAAA,KAAA,EAAA;AAAAJ,MAAAA,QAAA,EAAMA,QAAAA;AAAQ,KAAM,CAAC,CAAA;AAC9B,GAAA;AAEA,EAAA,oBACEI,GAAA,CAAA,GAAA,EAAA;AACEC,IAAAA,IAAI,EAAEJ,GAAI;AACVK,IAAAA,MAAM,EAAC,QAAQ;AACfC,IAAAA,GAAG,EAAC,qBAAqB;AACzBC,IAAAA,SAAS,EAAEL,gBAAgB,GAAG,6BAA6B,GAAG,sBAAuB;AACrFM,IAAAA,OAAO,EAAEP,UAAW;AAAAF,IAAAA,QAAA,EAEnBA,QAAAA;AAAQ,GACR,CAAC,CAAA;AAER;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@transferwise/components",
3
- "version": "0.0.0-experimental-ff43aa4",
3
+ "version": "0.0.0-experimental-bee317b",
4
4
  "description": "Neptune React components",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -92,13 +92,13 @@
92
92
  "rollup": "^4.18.1",
93
93
  "rollup-preserve-directives": "^1.1.1",
94
94
  "storybook": "^8.2.2",
95
- "@transferwise/less-config": "3.1.0",
96
- "@transferwise/neptune-css": "0.0.0-experimental-ff43aa4",
97
- "@wise/components-theming": "1.4.0"
95
+ "@transferwise/neptune-css": "14.12.0",
96
+ "@wise/components-theming": "1.4.0",
97
+ "@transferwise/less-config": "3.1.0"
98
98
  },
99
99
  "peerDependencies": {
100
100
  "@transferwise/icons": "^3.7.0",
101
- "@transferwise/neptune-css": "0.0.0-experimental-ff43aa4",
101
+ "@transferwise/neptune-css": "^14.9.6",
102
102
  "@wise/art": "^2.7.0",
103
103
  "@wise/components-theming": "^1.0.0",
104
104
  "react": ">=18",
package/src/card/Card.tsx CHANGED
@@ -20,6 +20,10 @@ export interface CardProps {
20
20
  onClick?: (nextIsExpanded: boolean) => void;
21
21
  }
22
22
 
23
+ /**
24
+ * @deprecated use Navigation pattern (via `NavigationOption` component)
25
+ * @see https://transferwise.atlassian.net/wiki/spaces/DS/pages/2387314550/Instructions+for+killing+expanding+cards+on+web+design+pattern
26
+ */
23
27
  const Card = forwardRef(function Card(
24
28
  {
25
29
  'aria-label': ariaLabel,
package/src/main.css CHANGED
@@ -5472,11 +5472,6 @@ 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
- }
5480
5475
  .np-upload-input.form-control {
5481
5476
  height: auto;
5482
5477
  padding: 0;
@@ -5568,9 +5563,9 @@ label.np-upload-button:not(.disabled):active {
5568
5563
  border: 1px solid var(--color-interactive-secondary);
5569
5564
  position: relative;
5570
5565
  }
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 {
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 {
5574
5569
  display: block;
5575
5570
  position: absolute;
5576
5571
  height: 1px;
@@ -5582,27 +5577,27 @@ label.np-upload-button:not(.disabled):active {
5582
5577
  width: calc(100% - 2 * 16px);
5583
5578
  width: calc(100% - 2 * var(--size-16));
5584
5579
  }
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 {
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 {
5587
5582
  top: 0;
5588
5583
  }
5589
- .np-upload-item.np-upload-item--link:hover .np-upload-item__link:after {
5584
+ .np-upload-item.np-upload-item__link:hover .np-upload-item--link:after {
5590
5585
  bottom: -1px;
5591
5586
  }
5592
5587
  .np-upload-item:first-child ~ div {
5593
5588
  border-top: 1px;
5594
5589
  }
5595
- .np-upload-item:not(:first-child) .np-upload-item__link:hover {
5590
+ .np-upload-item:not(:first-child) .np-upload-item--link:hover {
5596
5591
  border-top-color: rgba(0,0,0,0.10196);
5597
5592
  border-top-color: var(--color-border-neutral);
5598
5593
  }
5599
5594
  .np-upload-item:not(:last-child) {
5600
5595
  border-bottom: 0;
5601
5596
  }
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 {
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 {
5606
5601
  display: none;
5607
5602
  }
5608
5603
  .np-upload-button-container:hover:before,
@@ -5617,41 +5612,38 @@ label.np-upload-button:not(.disabled):active {
5617
5612
  outline-offset: -3px;
5618
5613
  }
5619
5614
  .np-upload-item--single-file:focus-visible,
5620
- .np-upload-item__link:focus-visible,
5615
+ .np-upload-item--link:focus-visible,
5621
5616
  .np-upload-button-container:has(:focus-visible) {
5622
5617
  outline-width: 3px;
5623
5618
  }
5624
- .np-upload-item--link a {
5619
+ .np-upload-item__link a {
5625
5620
  flex: 1;
5626
5621
  -webkit-text-decoration: none;
5627
5622
  text-decoration: none;
5628
5623
  border-top: 1px solid transparent;
5629
5624
  border-radius: inherit;
5630
5625
  }
5631
- .np-upload-item--link a:focus-visible {
5626
+ .np-upload-item__link a:focus-visible {
5632
5627
  outline-offset: -2px;
5633
5628
  }
5634
- .np-upload-item--link a:hover:before {
5629
+ .np-upload-item__link a:hover:before {
5635
5630
  display: none !important;
5636
5631
  }
5637
- .np-upload-item--link a:hover:after {
5632
+ .np-upload-item__link a:hover:after {
5638
5633
  left: 0 !important;
5639
5634
  width: 100% !important;
5640
5635
  }
5641
- .np-upload-item--link a:hover,
5642
- .np-upload-item--link a:active {
5636
+ .np-upload-item__link a:hover,
5637
+ .np-upload-item__link a:active {
5643
5638
  -webkit-text-decoration: none;
5644
5639
  text-decoration: none;
5645
5640
  }
5646
- .np-upload-item--link a:hover .np-upload-button,
5647
- .np-upload-item--link a:active .np-upload-button {
5641
+ .np-upload-item__link a:hover .np-upload-button,
5642
+ .np-upload-item__link a:active .np-upload-button {
5648
5643
  background-color: rgba(134,167,189,0.10196);
5649
5644
  background-color: var(--color-background-neutral);
5650
5645
  border-radius: inherit;
5651
5646
  }
5652
- .np-upload-item--link:first-of-type a {
5653
- border-top: 0;
5654
- }
5655
5647
  .np-upload-item__body {
5656
5648
  display: flex;
5657
5649
  align-items: center;
@@ -37,8 +37,3 @@ 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
- }
@@ -47,9 +47,3 @@
47
47
  align-items: flex-start;
48
48
  }
49
49
  }
50
-
51
- .np-upload-icon{
52
- @media (max-width: 320px){
53
- padding-left: 0;
54
- }
55
- }
@@ -3,9 +3,9 @@
3
3
  border: 1px solid var(--color-interactive-secondary);
4
4
  position: relative;
5
5
  }
6
- .np-upload-item:first-child ~ div:not(.np-upload-item--link):before,
7
- .np-upload-item:not(:first-child).np-upload-item--link .np-upload-item__link:before,
8
- .np-upload-item.np-upload-item--link:hover .np-upload-item__link:after {
6
+ .np-upload-item:first-child ~ div:not(.np-upload-item__link):before,
7
+ .np-upload-item:not(:first-child).np-upload-item__link .np-upload-item--link:before,
8
+ .np-upload-item.np-upload-item__link:hover .np-upload-item--link:after {
9
9
  display: block;
10
10
  position: absolute;
11
11
  height: 1px;
@@ -17,27 +17,27 @@
17
17
  width: calc(100% - 2 * 16px);
18
18
  width: calc(100% - 2 * var(--size-16));
19
19
  }
20
- .np-upload-item:first-child ~ div:not(.np-upload-item--link):before,
21
- .np-upload-item:not(:first-child).np-upload-item--link .np-upload-item__link:before {
20
+ .np-upload-item:first-child ~ div:not(.np-upload-item__link):before,
21
+ .np-upload-item:not(:first-child).np-upload-item__link .np-upload-item--link:before {
22
22
  top: 0;
23
23
  }
24
- .np-upload-item.np-upload-item--link:hover .np-upload-item__link:after {
24
+ .np-upload-item.np-upload-item__link:hover .np-upload-item--link:after {
25
25
  bottom: -1px;
26
26
  }
27
27
  .np-upload-item:first-child ~ div {
28
28
  border-top: 1px;
29
29
  }
30
- .np-upload-item:not(:first-child) .np-upload-item__link:hover {
30
+ .np-upload-item:not(:first-child) .np-upload-item--link:hover {
31
31
  border-top-color: rgba(0,0,0,0.10196);
32
32
  border-top-color: var(--color-border-neutral);
33
33
  }
34
34
  .np-upload-item:not(:last-child) {
35
35
  border-bottom: 0;
36
36
  }
37
- .np-upload-item.np-upload-item--link:hover + .np-upload-item:before,
38
- .np-upload-item.np-upload-item--link:hover + .np-upload-button-container:before,
39
- .np-upload-item.np-upload-item--link:hover + .np-upload-item .np-upload-item__link:before,
40
- .np-upload-item.np-upload-item--link:hover + .np-upload-button-container .np-upload-item__link:before {
37
+ .np-upload-item.np-upload-item__link:hover + .np-upload-item:before,
38
+ .np-upload-item.np-upload-item__link:hover + .np-upload-button-container:before,
39
+ .np-upload-item.np-upload-item__link:hover + .np-upload-item .np-upload-item--link:before,
40
+ .np-upload-item.np-upload-item__link:hover + .np-upload-button-container .np-upload-item--link:before {
41
41
  display: none;
42
42
  }
43
43
  .np-upload-button-container:hover:before,
@@ -52,41 +52,38 @@
52
52
  outline-offset: -3px;
53
53
  }
54
54
  .np-upload-item--single-file:focus-visible,
55
- .np-upload-item__link:focus-visible,
55
+ .np-upload-item--link:focus-visible,
56
56
  .np-upload-button-container:has(:focus-visible) {
57
57
  outline-width: 3px;
58
58
  }
59
- .np-upload-item--link a {
59
+ .np-upload-item__link a {
60
60
  flex: 1;
61
61
  -webkit-text-decoration: none;
62
62
  text-decoration: none;
63
63
  border-top: 1px solid transparent;
64
64
  border-radius: inherit;
65
65
  }
66
- .np-upload-item--link a:focus-visible {
66
+ .np-upload-item__link a:focus-visible {
67
67
  outline-offset: -2px;
68
68
  }
69
- .np-upload-item--link a:hover:before {
69
+ .np-upload-item__link a:hover:before {
70
70
  display: none !important;
71
71
  }
72
- .np-upload-item--link a:hover:after {
72
+ .np-upload-item__link a:hover:after {
73
73
  left: 0 !important;
74
74
  width: 100% !important;
75
75
  }
76
- .np-upload-item--link a:hover,
77
- .np-upload-item--link a:active {
76
+ .np-upload-item__link a:hover,
77
+ .np-upload-item__link a:active {
78
78
  -webkit-text-decoration: none;
79
79
  text-decoration: none;
80
80
  }
81
- .np-upload-item--link a:hover .np-upload-button,
82
- .np-upload-item--link a:active .np-upload-button {
81
+ .np-upload-item__link a:hover .np-upload-button,
82
+ .np-upload-item__link a:active .np-upload-button {
83
83
  background-color: rgba(134,167,189,0.10196);
84
84
  background-color: var(--color-background-neutral);
85
85
  border-radius: inherit;
86
86
  }
87
- .np-upload-item--link:first-of-type a {
88
- border-top: 0;
89
- }
90
87
  .np-upload-item__body {
91
88
  display: flex;
92
89
  align-items: center;
@@ -5,9 +5,9 @@
5
5
  border: 1px solid var(--color-interactive-secondary);
6
6
  position: relative;
7
7
 
8
- &:first-child ~ div:not(.np-upload-item--link):before,
9
- &:not(:first-child).np-upload-item--link .np-upload-item__link:before,
10
- &.np-upload-item--link:hover .np-upload-item__link:after {
8
+ &:first-child ~ div:not(.np-upload-item__link):before,
9
+ &:not(:first-child).np-upload-item__link .np-upload-item--link:before,
10
+ &.np-upload-item__link:hover .np-upload-item--link:after {
11
11
  display: block;
12
12
  position: absolute;
13
13
  height: 1px;
@@ -17,12 +17,12 @@
17
17
  width: calc(100% - 2 * var(--size-16));
18
18
  }
19
19
 
20
- &:first-child ~ div:not(.np-upload-item--link):before,
21
- &:not(:first-child).np-upload-item--link .np-upload-item__link:before {
20
+ &:first-child ~ div:not(.np-upload-item__link):before,
21
+ &:not(:first-child).np-upload-item__link .np-upload-item--link:before {
22
22
  top: 0;
23
23
  }
24
24
 
25
- &.np-upload-item--link:hover .np-upload-item__link:after {
25
+ &.np-upload-item__link:hover .np-upload-item--link:after {
26
26
  bottom: -1px;
27
27
  }
28
28
 
@@ -33,7 +33,7 @@
33
33
  }
34
34
 
35
35
  &:not(:first-child) {
36
- .np-upload-item__link:hover {
36
+ .np-upload-item--link:hover {
37
37
  border-top-color: var(--color-border-neutral);
38
38
  }
39
39
  }
@@ -43,10 +43,10 @@
43
43
  }
44
44
 
45
45
 
46
- &.np-upload-item--link:hover + .np-upload-item,
47
- &.np-upload-item--link:hover + .np-upload-button-container {
46
+ &.np-upload-item__link:hover + .np-upload-item,
47
+ &.np-upload-item__link:hover + .np-upload-button-container {
48
48
  &:before,
49
- .np-upload-item__link:before {
49
+ .np-upload-item--link:before {
50
50
  display: none;
51
51
  }
52
52
  }
@@ -67,12 +67,12 @@
67
67
  }
68
68
 
69
69
  .np-upload-item--single-file:focus-visible,
70
- .np-upload-item__link:focus-visible,
70
+ .np-upload-item--link:focus-visible,
71
71
  .np-upload-button-container:has(:focus-visible) {
72
72
  outline-width: 3px;
73
73
  }
74
74
 
75
- .np-upload-item--link {
75
+ .np-upload-item__link {
76
76
  a {
77
77
  flex: 1;
78
78
  text-decoration: none;
@@ -103,10 +103,6 @@
103
103
  }
104
104
  }
105
105
  }
106
-
107
- &:first-of-type a {
108
- border-top: 0;
109
- }
110
106
  }
111
107
 
112
108
  .np-upload-item__body {
@@ -1,4 +1,4 @@
1
- import { Bin, CheckCircleFill, CrossCircleFill } from '@transferwise/icons';
1
+ import { Bin } from '@transferwise/icons';
2
2
  import classNames from 'classnames';
3
3
  import { useIntl } from 'react-intl';
4
4
 
@@ -9,7 +9,7 @@ import StatusIcon from '../../statusIcon/StatusIcon';
9
9
  import { UploadedFile, UploadError } from '../types';
10
10
 
11
11
  import MESSAGES from './UploadItem.messages';
12
- import { UploadItemLink } from './UploadItemLink';
12
+ import { UploadItemBody } from './UploadItemBody';
13
13
 
14
14
  export type UploadItemProps = JSX.IntrinsicAttributes & {
15
15
  file: UploadedFile;
@@ -46,14 +46,9 @@ const UploadItem = ({
46
46
 
47
47
  const isSucceeded = [Status.SUCCEEDED, undefined].includes(status) && !!url;
48
48
 
49
- /**
50
- * We're temporarily reverting to the regular icon components,
51
- * until the StatusIcon receives 24px sizing. Some misalignment
52
- * to be expected.
53
- */
54
49
  const getIcon = () => {
55
50
  if (error || errors?.length || status === Status.FAILED) {
56
- return <CrossCircleFill size={24} className="emphasis--negative" />;
51
+ return <StatusIcon size={Size.SMALL} sentiment={Sentiment.NEGATIVE} />;
57
52
  }
58
53
 
59
54
  let processIndicator: React.ReactNode;
@@ -66,7 +61,7 @@ const UploadItem = ({
66
61
  case Status.SUCCEEDED:
67
62
  case Status.DONE:
68
63
  default:
69
- processIndicator = <CheckCircleFill size={24} className="emphasis--positive" />;
64
+ processIndicator = <StatusIcon size={Size.SMALL} sentiment={Sentiment.POSITIVE} />;
70
65
  }
71
66
 
72
67
  return processIndicator;
@@ -132,11 +127,11 @@ const UploadItem = ({
132
127
 
133
128
  return (
134
129
  <div
135
- className={classNames('np-upload-item', { 'np-upload-item--link': isSucceeded })}
130
+ className={classNames('np-upload-item', { 'np-upload-item__link': isSucceeded })}
136
131
  data-testid={TEST_IDS.uploadItem}
137
132
  >
138
133
  <div className="np-upload-item__body">
139
- <UploadItemLink
134
+ <UploadItemBody
140
135
  url={isSucceeded ? url : undefined}
141
136
  singleFileUpload={singleFileUpload}
142
137
  onDownload={onDownloadFile}
@@ -150,7 +145,7 @@ const UploadItem = ({
150
145
  </div>
151
146
  </div>
152
147
  </div>
153
- </UploadItemLink>
148
+ </UploadItemBody>
154
149
  {canDelete && (
155
150
  <button
156
151
  aria-label={formatMessage(MESSAGES.removeFile, { filename })}
@@ -1,5 +1,4 @@
1
1
  import { PropsWithChildren, MouseEvent } from 'react';
2
- import classnames from 'classnames';
3
2
 
4
3
  type UploadItemLinkProps = PropsWithChildren<{
5
4
  url?: string;
@@ -7,7 +6,7 @@ type UploadItemLinkProps = PropsWithChildren<{
7
6
  singleFileUpload: boolean;
8
7
  }>;
9
8
 
10
- export const UploadItemLink = ({
9
+ export const UploadItemBody = ({
11
10
  children,
12
11
  url,
13
12
  onDownload,
@@ -22,10 +21,7 @@ export const UploadItemLink = ({
22
21
  href={url}
23
22
  target="_blank"
24
23
  rel="noopener noreferrer"
25
- className={classnames(
26
- 'np-upload-item__link',
27
- singleFileUpload ? 'np-upload-item--single-file' : '',
28
- )}
24
+ className={singleFileUpload ? 'np-upload-item--single-file' : 'np-upload-item--link'}
29
25
  onClick={onDownload}
30
26
  >
31
27
  {children}
@@ -1 +0,0 @@
1
- {"version":3,"file":"UploadItemLink.d.ts","sourceRoot":"","sources":["../../../../src/uploadInput/uploadItem/UploadItemLink.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAGtD,KAAK,mBAAmB,GAAG,iBAAiB,CAAC;IAC3C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACzC,gBAAgB,EAAE,OAAO,CAAC;CAC3B,CAAC,CAAC;AAEH,eAAO,MAAM,cAAc,qDAKxB,mBAAmB,gCAmBrB,CAAC"}
@@ -1,32 +0,0 @@
1
- 'use strict';
2
-
3
- var classNames = require('classnames');
4
- var jsxRuntime = require('react/jsx-runtime');
5
-
6
- function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
7
-
8
- var classNames__default = /*#__PURE__*/_interopDefault(classNames);
9
-
10
- const UploadItemLink = ({
11
- children,
12
- url,
13
- onDownload,
14
- singleFileUpload
15
- }) => {
16
- if (!url) {
17
- return /*#__PURE__*/jsxRuntime.jsx("div", {
18
- children: children
19
- });
20
- }
21
- return /*#__PURE__*/jsxRuntime.jsx("a", {
22
- href: url,
23
- target: "_blank",
24
- rel: "noopener noreferrer",
25
- className: classNames__default.default('np-upload-item__link', singleFileUpload ? 'np-upload-item--single-file' : ''),
26
- onClick: onDownload,
27
- children: children
28
- });
29
- };
30
-
31
- exports.UploadItemLink = UploadItemLink;
32
- //# sourceMappingURL=UploadItemLink.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"UploadItemLink.js","sources":["../../../src/uploadInput/uploadItem/UploadItemLink.tsx"],"sourcesContent":["import { PropsWithChildren, MouseEvent } from 'react';\nimport classnames from 'classnames';\n\ntype UploadItemLinkProps = PropsWithChildren<{\n url?: string;\n onDownload?: (event: MouseEvent) => void;\n singleFileUpload: boolean;\n}>;\n\nexport const UploadItemLink = ({\n children,\n url,\n onDownload,\n singleFileUpload,\n}: UploadItemLinkProps) => {\n if (!url) {\n return <div>{children}</div>;\n }\n\n return (\n <a\n href={url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={classnames(\n 'np-upload-item__link',\n singleFileUpload ? 'np-upload-item--single-file' : '',\n )}\n onClick={onDownload}\n >\n {children}\n </a>\n );\n};\n"],"names":["UploadItemLink","children","url","onDownload","singleFileUpload","_jsx","href","target","rel","className","classnames","onClick"],"mappings":";;;;;;;;;AASO,MAAMA,cAAc,GAAGA,CAAC;EAC7BC,QAAQ;EACRC,GAAG;EACHC,UAAU;AACVC,EAAAA,gBAAAA;AAAgB,CACI,KAAI;EACxB,IAAI,CAACF,GAAG,EAAE;AACR,IAAA,oBAAOG,cAAA,CAAA,KAAA,EAAA;AAAAJ,MAAAA,QAAA,EAAMA,QAAAA;AAAQ,KAAM,CAAC,CAAA;AAC9B,GAAA;AAEA,EAAA,oBACEI,cAAA,CAAA,GAAA,EAAA;AACEC,IAAAA,IAAI,EAAEJ,GAAI;AACVK,IAAAA,MAAM,EAAC,QAAQ;AACfC,IAAAA,GAAG,EAAC,qBAAqB;IACzBC,SAAS,EAAEC,2BAAU,CACnB,sBAAsB,EACtBN,gBAAgB,GAAG,6BAA6B,GAAG,EAAE,CACrD;AACFO,IAAAA,OAAO,EAAER,UAAW;AAAAF,IAAAA,QAAA,EAEnBA,QAAAA;AAAQ,GACR,CAAC,CAAA;AAER;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"UploadItemLink.mjs","sources":["../../../src/uploadInput/uploadItem/UploadItemLink.tsx"],"sourcesContent":["import { PropsWithChildren, MouseEvent } from 'react';\nimport classnames from 'classnames';\n\ntype UploadItemLinkProps = PropsWithChildren<{\n url?: string;\n onDownload?: (event: MouseEvent) => void;\n singleFileUpload: boolean;\n}>;\n\nexport const UploadItemLink = ({\n children,\n url,\n onDownload,\n singleFileUpload,\n}: UploadItemLinkProps) => {\n if (!url) {\n return <div>{children}</div>;\n }\n\n return (\n <a\n href={url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={classnames(\n 'np-upload-item__link',\n singleFileUpload ? 'np-upload-item--single-file' : '',\n )}\n onClick={onDownload}\n >\n {children}\n </a>\n );\n};\n"],"names":["UploadItemLink","children","url","onDownload","singleFileUpload","_jsx","href","target","rel","className","classnames","onClick"],"mappings":";;;AASO,MAAMA,cAAc,GAAGA,CAAC;EAC7BC,QAAQ;EACRC,GAAG;EACHC,UAAU;AACVC,EAAAA,gBAAAA;AAAgB,CACI,KAAI;EACxB,IAAI,CAACF,GAAG,EAAE;AACR,IAAA,oBAAOG,GAAA,CAAA,KAAA,EAAA;AAAAJ,MAAAA,QAAA,EAAMA,QAAAA;AAAQ,KAAM,CAAC,CAAA;AAC9B,GAAA;AAEA,EAAA,oBACEI,GAAA,CAAA,GAAA,EAAA;AACEC,IAAAA,IAAI,EAAEJ,GAAI;AACVK,IAAAA,MAAM,EAAC,QAAQ;AACfC,IAAAA,GAAG,EAAC,qBAAqB;IACzBC,SAAS,EAAEC,UAAU,CACnB,sBAAsB,EACtBN,gBAAgB,GAAG,6BAA6B,GAAG,EAAE,CACrD;AACFO,IAAAA,OAAO,EAAER,UAAW;AAAAF,IAAAA,QAAA,EAEnBA,QAAAA;AAAQ,GACR,CAAC,CAAA;AAER;;;;"}