@transferwise/components 46.117.1 → 46.119.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/build/dateLookup/dayCalendar/DayCalendar.js +4 -4
  2. package/build/dateLookup/dayCalendar/DayCalendar.js.map +1 -1
  3. package/build/dateLookup/dayCalendar/table/DayCalendarTable.js +4 -4
  4. package/build/dateLookup/dayCalendar/table/DayCalendarTable.js.map +1 -1
  5. package/build/dateLookup/monthCalendar/MonthCalendar.js +4 -4
  6. package/build/dateLookup/monthCalendar/MonthCalendar.js.map +1 -1
  7. package/build/dateLookup/yearCalendar/YearCalendar.js +4 -4
  8. package/build/dateLookup/yearCalendar/YearCalendar.js.map +1 -1
  9. package/build/dimmer/Dimmer.js +4 -4
  10. package/build/dimmer/Dimmer.js.map +1 -1
  11. package/build/index.js +4 -0
  12. package/build/index.js.map +1 -1
  13. package/build/index.mjs +2 -0
  14. package/build/index.mjs.map +1 -1
  15. package/build/inputs/SelectInput.js +4 -4
  16. package/build/inputs/SelectInput.js.map +1 -1
  17. package/build/inputs/SelectInput.mjs +4 -4
  18. package/build/inputs/SelectInput.mjs.map +1 -1
  19. package/build/listItem/Prompt/ListItemPrompt.js +2 -0
  20. package/build/listItem/Prompt/ListItemPrompt.js.map +1 -1
  21. package/build/listItem/Prompt/ListItemPrompt.mjs +2 -0
  22. package/build/listItem/Prompt/ListItemPrompt.mjs.map +1 -1
  23. package/build/moneyInput/MoneyInput.js +2 -2
  24. package/build/moneyInput/MoneyInput.js.map +1 -1
  25. package/build/moneyInput/MoneyInput.mjs +2 -2
  26. package/build/moneyInput/MoneyInput.mjs.map +1 -1
  27. package/build/promoCard/PromoCard.js +3 -3
  28. package/build/promoCard/PromoCard.js.map +1 -1
  29. package/build/promoCard/PromoCardGroup.js +2 -2
  30. package/build/promoCard/PromoCardGroup.js.map +1 -1
  31. package/build/promoCard/PromoCardGroup.mjs +2 -2
  32. package/build/promoCard/PromoCardGroup.mjs.map +1 -1
  33. package/build/prompt/InlinePrompt/InlinePrompt.js +8 -3
  34. package/build/prompt/InlinePrompt/InlinePrompt.js.map +1 -1
  35. package/build/prompt/InlinePrompt/InlinePrompt.mjs +8 -3
  36. package/build/prompt/InlinePrompt/InlinePrompt.mjs.map +1 -1
  37. package/build/typeahead/Typeahead.js +2 -2
  38. package/build/typeahead/Typeahead.js.map +1 -1
  39. package/build/typeahead/Typeahead.mjs +2 -2
  40. package/build/typeahead/Typeahead.mjs.map +1 -1
  41. package/build/types/index.d.ts +4 -0
  42. package/build/types/index.d.ts.map +1 -1
  43. package/build/types/inputs/SelectInput.d.ts.map +1 -1
  44. package/build/types/listItem/ListItem.d.ts +1 -1
  45. package/build/types/listItem/Prompt/ListItemPrompt.d.ts +2 -2
  46. package/build/types/listItem/Prompt/ListItemPrompt.d.ts.map +1 -1
  47. package/build/types/prompt/InlinePrompt/InlinePrompt.d.ts +9 -2
  48. package/build/types/prompt/InlinePrompt/InlinePrompt.d.ts.map +1 -1
  49. package/build/upload/Upload.js +2 -2
  50. package/build/upload/Upload.js.map +1 -1
  51. package/build/upload/Upload.mjs +2 -2
  52. package/build/upload/Upload.mjs.map +1 -1
  53. package/package.json +37 -37
  54. package/src/accordion/AccordionItem/__snapshots__/AccordionItem.spec.js.snap +1 -1
  55. package/src/accordion/__snapshots__/Accordion.spec.js.snap +1 -1
  56. package/src/actionButton/__snapshots__/ActionButton.spec.tsx.snap +1 -1
  57. package/src/alert/Alert.story.tsx +1 -1
  58. package/src/alert/Alert.tests.story.tsx +1 -1
  59. package/src/avatarWrapper/__snapshots__/AvatarWrapper.spec.tsx.snap +1 -1
  60. package/src/button/Button.vars.less +28 -7
  61. package/src/checkbox/__snapshots__/Checkbox.spec.tsx.snap +1 -1
  62. package/src/chevron/__snapshots__/Chevron.spec.tsx.snap +1 -1
  63. package/src/chips/__snapshots__/Chips.spec.tsx.snap +1 -1
  64. package/src/common/RadioButton/__snapshots__/RadioButton.spec.tsx.snap +1 -1
  65. package/src/common/bottomSheet/__snapshots__/BottomSheet.spec.tsx.snap +1 -1
  66. package/src/common/card/__snapshots__/Card.spec.tsx.snap +1 -1
  67. package/src/common/closeButton/__snapshots__/CloseButton.spec.tsx.snap +1 -1
  68. package/src/common/flowHeader/__snapshots__/FlowHeader.spec.tsx.snap +1 -1
  69. package/src/common/panel/__snapshots__/Panel.spec.tsx.snap +1 -1
  70. package/src/criticalBanner/CriticalCommsBanner.story.tsx +1 -1
  71. package/src/flowNavigation/__snapshots__/FlowNavigation.spec.js.snap +1 -1
  72. package/src/iconButton/IconButton.story.tsx +2 -2
  73. package/src/index.ts +4 -0
  74. package/src/inlineAlert/InlineAlert.story.tsx +1 -1
  75. package/src/inputs/SelectInput.tsx +21 -19
  76. package/src/link/Link.story.tsx +2 -2
  77. package/src/listItem/Prompt/ListItemPrompt.spec.tsx +48 -0
  78. package/src/listItem/Prompt/ListItemPrompt.story.tsx +1 -0
  79. package/src/listItem/Prompt/ListItemPrompt.tsx +7 -2
  80. package/src/logo/__snapshots__/Logo.spec.tsx.snap +1 -1
  81. package/src/nudge/Nudge.story.tsx +1 -1
  82. package/src/overlayHeader/__snapshots__/OverlayHeader.spec.tsx.snap +1 -1
  83. package/src/popover/__snapshots__/Popover.spec.tsx.snap +1 -1
  84. package/src/promoCard/__snapshots__/PromoCard.spec.tsx.snap +1 -1
  85. package/src/promoCard/__snapshots__/PromoCardGroup.spec.tsx.snap +1 -1
  86. package/src/prompt/InlinePrompt/InlinePrompt.spec.tsx +29 -1
  87. package/src/prompt/InlinePrompt/InlinePrompt.story.tsx +45 -4
  88. package/src/prompt/InlinePrompt/InlinePrompt.tsx +12 -4
  89. package/src/provider/theme/ThemeProvider.story.tsx +1 -1
  90. package/src/sentimentSurface/SentimentSurface.story.tsx +163 -102
  91. package/src/sentimentSurface/SentimentSurface.tests.story.tsx +6 -2
  92. package/src/tile/__snapshots__/Tile.spec.tsx.snap +1 -1
  93. package/src/{neptune-css/NeptuneCSS.story.tsx → tokens/tokens.story.tsx} +2 -2
  94. package/src/tooltip/__snapshots__/Tooltip.spec.tsx.snap +1 -1
  95. package/src/withId/withId.story.tsx +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"Upload.js","sources":["../../src/upload/Upload.tsx"],"sourcesContent":["import { Plus as PlusIcon } from '@transferwise/icons';\nimport { clsx } from 'clsx';\nimport { Component } from 'react';\nimport { injectIntl, WrappedComponentProps } from 'react-intl';\n\nimport { Size, Typography } from '../common';\nimport Title from '../title';\n\nimport messages from './Upload.messages';\nimport { UploadImageStep, ProcessingStep, CompleteStep } from './steps';\nimport { postData, asyncFileRead, isSizeValid, isTypeValid, getFileType } from './utils';\nimport { PostDataFetcher, PostDataHTTPOptions, ResponseError } from './utils/postData/postData';\n\nexport const MAX_SIZE_DEFAULT = 5000000;\n\nexport enum UploadStep {\n UPLOAD_IMAGE_STEP = 'uploadImageStep',\n}\n\nexport interface UploadProps extends WrappedComponentProps {\n animationDelay?: number;\n csButtonText?: string;\n csFailureText?: string;\n csSuccessText?: string;\n csTooLargeMessage?: string;\n csWrongTypeMessage?: string;\n httpOptions?: PostDataHTTPOptions & {\n fileInputName?: string;\n data?: Record<string, string | Blob>;\n };\n /**\n * You can provide a fetcher function with the same interface as the global fetch function, which is used by default.\n * `function fetcher(input: RequestInfo, init?: RequestInit): Promise<Response>`\n */\n fetcher?: PostDataFetcher;\n /**\n * Filesize expressed in B.<br />If set to `null`, no size limit will be applied.\n * @default 5000000 (5 MB)\n */\n maxSize?: number | null;\n psButtonText?: string;\n psButtonDisabled?: boolean;\n psProcessingText?: string;\n size?: `${Size.SMALL | Size.MEDIUM | Size.LARGE}`;\n /**\n * You can provide multiple rules separated by comma, e.g.: \"application/pdf,image/*\".\n * Using \"*\" will allow every file type to be uploaded.\n */\n usAccept?: string;\n usButtonText?: string;\n usButtonRetryText?: string;\n usDisabled?: boolean;\n usDropMessage?: string;\n usHelpImage?: React.ReactNode;\n usLabel?: string;\n usPlaceholder?: string;\n /**\n * Override for the [InlineAlert icon's default, accessible name](/?path=/docs/other-statusicon-accessibility--docs)\n * announced by the screen readers\n * */\n errorIconLabel?: string;\n /** @deprecated Only a single variant exists, please remove this prop. */\n uploadStep?: `${UploadStep}`;\n onCancel?: () => void;\n onFailure?: (error: unknown) => void;\n onStart?: (file: File) => void;\n onSuccess?: (response: string | Response, fileName: string) => void;\n}\n\ninterface UploadState {\n fileName: string;\n isDroppable: boolean;\n isComplete: boolean;\n isError: boolean;\n isImage: boolean;\n isProcessing: boolean;\n isSuccess: boolean;\n response: unknown;\n uploadedImage: string | undefined;\n}\n\nexport class Upload extends Component<UploadProps, UploadState> {\n declare props: UploadProps & Required<Pick<UploadProps, keyof typeof Upload.defaultProps>>;\n\n static defaultProps = {\n animationDelay: 300,\n maxSize: MAX_SIZE_DEFAULT,\n psButtonDisabled: false,\n size: 'md',\n usAccept: 'image/*',\n usDisabled: false,\n usLabel: '',\n } satisfies Partial<UploadProps>;\n\n dragCounter = 0;\n timeouts = 0;\n\n constructor(props: UploadProps) {\n super(props);\n\n this.state = {\n fileName: '',\n isDroppable: false,\n isComplete: false,\n isError: false,\n isImage: false,\n isProcessing: false,\n isSuccess: false,\n response: undefined,\n uploadedImage: undefined,\n };\n }\n\n getErrorMessage(status?: number) {\n const { csFailureText, csTooLargeMessage, csWrongTypeMessage, maxSize, intl } = this.props;\n switch (status) {\n case 413:\n return (\n csTooLargeMessage ||\n (typeof maxSize === 'number'\n ? intl.formatMessage(messages.csTooLargeMessage, { maxSize: roundFileSize(maxSize) })\n : intl.formatMessage(messages.csTooLargeNoLimitMessage))\n );\n case 415:\n return csWrongTypeMessage || intl.formatMessage(messages.csWrongTypeMessage);\n default:\n return csFailureText || intl.formatMessage(messages.csFailureText);\n }\n }\n\n onDragLeave(event: React.DragEvent<HTMLDivElement>) {\n event.preventDefault();\n this.dragCounter -= 1;\n if (this.dragCounter === 0) {\n this.setState({ isDroppable: false });\n }\n }\n\n onDragEnter(event: React.DragEvent<HTMLDivElement>) {\n event.preventDefault();\n this.dragCounter += 1;\n const { usDisabled } = this.props;\n const { isProcessing } = this.state;\n if (this.dragCounter === 1 && !usDisabled && !isProcessing) {\n this.setState({ isDroppable: true });\n }\n }\n\n async onDrop(event: React.DragEvent<HTMLDivElement>) {\n const { isProcessing } = this.state;\n event.preventDefault();\n if (!isProcessing) {\n this.reset();\n }\n\n if (event.dataTransfer?.files?.[0]) {\n await this.fileDropped(event.dataTransfer.files[0]);\n }\n }\n\n asyncPost = async (file: File) => {\n const { httpOptions, fetcher } = this.props;\n if (httpOptions == null) {\n throw new Error('Cannot find HTTP options');\n }\n\n const { fileInputName = file.name, data = {} } = httpOptions;\n\n const formData = new FormData();\n formData.append(fileInputName, file);\n Object.keys(data).forEach((key) => formData.append(key, data[key]));\n return postData(httpOptions, formData, fetcher);\n };\n\n handleUploadComplete = (type: 'success' | 'error', response: unknown) => {\n const { animationDelay, onSuccess, onFailure } = this.props;\n const { fileName } = this.state;\n\n window.clearTimeout(this.timeouts);\n this.timeouts = window.setTimeout(() => {\n this.setState(\n {\n isProcessing: false,\n isComplete: true,\n },\n () => {\n if (type === 'success') {\n onSuccess?.(response as string | Response, fileName);\n } else {\n onFailure?.(response);\n }\n },\n );\n }, animationDelay);\n };\n\n asyncResponse = (response: unknown, type: 'success' | 'error') => {\n this.setState(\n {\n response,\n isError: type === 'error',\n isSuccess: type === 'success',\n },\n () => this.handleUploadComplete(type, response),\n );\n };\n\n handleOnClear: React.MouseEventHandler<HTMLButtonElement> = (event) => {\n event.preventDefault();\n const { onCancel } = this.props;\n onCancel?.();\n\n this.reset();\n };\n\n reset = () => {\n this.dragCounter = 0;\n window.clearTimeout(this.timeouts);\n this.setState({\n isComplete: false,\n isError: false,\n isProcessing: false,\n isSuccess: false,\n });\n };\n\n showDataImage = (dataUrl: string) => {\n const { isImage } = this.state;\n if (isImage) {\n this.setState({\n uploadedImage: dataUrl,\n });\n }\n };\n\n fileDropped = async (file: File) => {\n const { httpOptions, maxSize, onStart, usDisabled, usAccept } = this.props;\n const { isProcessing } = this.state;\n\n if (usDisabled || isProcessing) {\n return false;\n }\n\n if (!file) {\n throw new Error('Could not retrieve file');\n }\n\n this.setState({\n fileName: file.name,\n isDroppable: false,\n isProcessing: true,\n });\n\n onStart?.(file);\n\n let file64 = null;\n\n try {\n file64 = await asyncFileRead(file);\n } catch (error) {\n this.asyncResponse(error, 'error');\n }\n\n if (!file64) {\n return false;\n }\n\n this.setState({\n isImage: getFileType(file, file64).includes('image'),\n });\n\n if (!isTypeValid(file, usAccept, file64)) {\n this.asyncResponse(\n new ResponseError(\n new Response(null, {\n status: 415,\n statusText: 'Unsupported Media Type',\n }),\n ),\n 'error',\n );\n return false;\n }\n\n if (typeof maxSize === 'number' && !isSizeValid(file, maxSize)) {\n this.asyncResponse(\n new ResponseError(\n new Response(null, {\n status: 413,\n statusText: 'Request Entity Too Large',\n }),\n ),\n 'error',\n );\n return false;\n }\n\n if (httpOptions) {\n // Post the file to provided endpoint\n let response;\n try {\n response = await this.asyncPost(file);\n } catch (error) {\n this.asyncResponse(error, 'error');\n return false;\n }\n this.asyncResponse(response, 'success');\n this.showDataImage(file64);\n return true;\n }\n // Post on form submit. And return the encoded image.\n this.showDataImage(file64);\n this.asyncResponse(file64, 'success');\n return true;\n };\n\n render() {\n const {\n maxSize,\n usDropMessage,\n usAccept,\n usButtonText,\n usButtonRetryText,\n usDisabled,\n usHelpImage,\n usLabel,\n usPlaceholder,\n psButtonText,\n psProcessingText,\n psButtonDisabled,\n csButtonText,\n csSuccessText,\n size,\n intl,\n errorIconLabel,\n } = this.props;\n\n const {\n response,\n fileName,\n isComplete,\n isDroppable,\n isError,\n isImage,\n isProcessing,\n isSuccess,\n uploadedImage,\n } = this.state;\n\n const placeholder = ((): string => {\n if (usPlaceholder) {\n return usPlaceholder;\n }\n\n if (typeof maxSize === 'number') {\n return intl.formatMessage(messages.usPlaceholder, { maxSize: roundFileSize(maxSize) });\n }\n\n return intl.formatMessage(messages.usPlaceholderNoLimit);\n })();\n\n return (\n <div\n className={clsx('droppable-area', {\n droppable: true,\n 'tw-droppable-sm droppable-sm': size === 'sm',\n 'tw-droppable-md droppable-md': size === 'md' || !size,\n 'tw-droppable-lg droppable-lg': size === 'lg',\n 'droppable-dropping': isDroppable,\n 'droppable-processing': isProcessing,\n 'droppable-complete': isComplete && !isError,\n 'droppable-negative': isError && !isProcessing,\n })}\n onDragEnter={(event) => this.onDragEnter(event)}\n onDragLeave={(event) => this.onDragLeave(event)}\n onDrop={async (event) => this.onDrop(event)}\n onDragOver={(event) => event.preventDefault()}\n >\n {!isProcessing && !isComplete && (\n <UploadImageStep\n fileDropped={async (file) => this.fileDropped(file)}\n isComplete={isComplete}\n usAccept={usAccept}\n usButtonText={usButtonText || intl.formatMessage(messages.usButtonText)}\n usDisabled={usDisabled}\n usHelpImage={usHelpImage}\n usLabel={usLabel}\n usPlaceholder={placeholder}\n />\n )}\n\n {(isSuccess || isComplete) && !isError && (\n <CompleteStep\n fileName={fileName}\n isComplete={isComplete}\n isImage={isImage}\n csButtonText={csButtonText || intl.formatMessage(messages.csButtonText)}\n csSuccessText={csSuccessText || intl.formatMessage(messages.csSuccessText)}\n uploadedImage={uploadedImage}\n onClear={(event) => this.handleOnClear(event)}\n />\n )}\n {isError && !isProcessing && (\n <UploadImageStep\n fileDropped={async (file) => {\n this.reset();\n await this.fileDropped(file);\n }}\n isComplete={!isError}\n usAccept={usAccept}\n usButtonText={usButtonRetryText || intl.formatMessage(messages.retry)}\n usDisabled={usDisabled}\n usHelpImage={null}\n usLabel={usLabel}\n usPlaceholder={placeholder}\n errorMessage={this.getErrorMessage(\n response != null &&\n typeof response === 'object' &&\n 'status' in response &&\n typeof response.status === 'number'\n ? response.status\n : undefined,\n )}\n errorIconLabel={errorIconLabel}\n />\n )}\n {isProcessing && (\n <ProcessingStep\n isComplete={isComplete}\n isError={isError}\n isSuccess={isSuccess}\n psButtonText={psButtonText || intl.formatMessage(messages.psButtonText)}\n psProcessingText={psProcessingText || intl.formatMessage(messages.psProcessingText)}\n psButtonDisabled={psButtonDisabled}\n onClear={(event) => this.handleOnClear(event)}\n />\n )}\n {!isProcessing && (\n <div className=\"droppable-dropping-card droppable-card\" aria-live=\"polite\">\n <div className=\"droppable-card-content\">\n <div className=\"circle circle-sm text-primary\">\n <PlusIcon size=\"16\" />\n </div>\n <Title type={Typography.TITLE_BODY} className=\"m-t-3\">\n {usDropMessage || intl.formatMessage(messages.usDropMessage)}\n </Title>\n </div>\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default injectIntl(Upload);\n\nconst roundFileSize = (bytes: number) => {\n const megabytes = bytes / 1000000;\n if (megabytes >= 0.1) {\n const isRound = Math.floor(megabytes) === megabytes;\n return isRound ? `${megabytes}` : megabytes.toFixed(1);\n }\n if (megabytes >= 0.01) {\n return megabytes.toFixed(2);\n }\n return megabytes.toFixed(3);\n};\n"],"names":["MAX_SIZE_DEFAULT","UploadStep","Upload","Component","defaultProps","animationDelay","maxSize","psButtonDisabled","size","usAccept","usDisabled","usLabel","dragCounter","timeouts","constructor","props","state","fileName","isDroppable","isComplete","isError","isImage","isProcessing","isSuccess","response","undefined","uploadedImage","getErrorMessage","status","csFailureText","csTooLargeMessage","csWrongTypeMessage","intl","formatMessage","messages","roundFileSize","csTooLargeNoLimitMessage","onDragLeave","event","preventDefault","setState","onDragEnter","onDrop","reset","dataTransfer","files","fileDropped","asyncPost","file","httpOptions","fetcher","Error","fileInputName","name","data","formData","FormData","append","Object","keys","forEach","key","postData","handleUploadComplete","type","onSuccess","onFailure","window","clearTimeout","setTimeout","asyncResponse","handleOnClear","onCancel","showDataImage","dataUrl","onStart","file64","asyncFileRead","error","getFileType","includes","isTypeValid","ResponseError","Response","statusText","isSizeValid","render","usDropMessage","usButtonText","usButtonRetryText","usHelpImage","usPlaceholder","psButtonText","psProcessingText","csButtonText","csSuccessText","errorIconLabel","placeholder","usPlaceholderNoLimit","_jsxs","className","clsx","droppable","onDragOver","children","_jsx","UploadImageStep","CompleteStep","onClear","retry","errorMessage","ProcessingStep","PlusIcon","Title","Typography","TITLE_BODY","injectIntl","bytes","megabytes","isRound","Math","floor","toFixed"],"mappings":"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"}
1
+ {"version":3,"file":"Upload.js","sources":["../../src/upload/Upload.tsx"],"sourcesContent":["import { Plus as PlusIcon } from '@transferwise/icons';\nimport { clsx } from 'clsx';\nimport { Component } from 'react';\nimport { injectIntl, WrappedComponentProps } from 'react-intl';\n\nimport { Size, Typography } from '../common';\nimport Title from '../title';\n\nimport messages from './Upload.messages';\nimport { UploadImageStep, ProcessingStep, CompleteStep } from './steps';\nimport { postData, asyncFileRead, isSizeValid, isTypeValid, getFileType } from './utils';\nimport { PostDataFetcher, PostDataHTTPOptions, ResponseError } from './utils/postData/postData';\n\nexport const MAX_SIZE_DEFAULT = 5000000;\n\nexport enum UploadStep {\n UPLOAD_IMAGE_STEP = 'uploadImageStep',\n}\n\nexport interface UploadProps extends WrappedComponentProps {\n animationDelay?: number;\n csButtonText?: string;\n csFailureText?: string;\n csSuccessText?: string;\n csTooLargeMessage?: string;\n csWrongTypeMessage?: string;\n httpOptions?: PostDataHTTPOptions & {\n fileInputName?: string;\n data?: Record<string, string | Blob>;\n };\n /**\n * You can provide a fetcher function with the same interface as the global fetch function, which is used by default.\n * `function fetcher(input: RequestInfo, init?: RequestInit): Promise<Response>`\n */\n fetcher?: PostDataFetcher;\n /**\n * Filesize expressed in B.<br />If set to `null`, no size limit will be applied.\n * @default 5000000 (5 MB)\n */\n maxSize?: number | null;\n psButtonText?: string;\n psButtonDisabled?: boolean;\n psProcessingText?: string;\n size?: `${Size.SMALL | Size.MEDIUM | Size.LARGE}`;\n /**\n * You can provide multiple rules separated by comma, e.g.: \"application/pdf,image/*\".\n * Using \"*\" will allow every file type to be uploaded.\n */\n usAccept?: string;\n usButtonText?: string;\n usButtonRetryText?: string;\n usDisabled?: boolean;\n usDropMessage?: string;\n usHelpImage?: React.ReactNode;\n usLabel?: string;\n usPlaceholder?: string;\n /**\n * Override for the [InlineAlert icon's default, accessible name](/?path=/docs/other-statusicon-accessibility--docs)\n * announced by the screen readers\n * */\n errorIconLabel?: string;\n /** @deprecated Only a single variant exists, please remove this prop. */\n uploadStep?: `${UploadStep}`;\n onCancel?: () => void;\n onFailure?: (error: unknown) => void;\n onStart?: (file: File) => void;\n onSuccess?: (response: string | Response, fileName: string) => void;\n}\n\ninterface UploadState {\n fileName: string;\n isDroppable: boolean;\n isComplete: boolean;\n isError: boolean;\n isImage: boolean;\n isProcessing: boolean;\n isSuccess: boolean;\n response: unknown;\n uploadedImage: string | undefined;\n}\n\nexport class Upload extends Component<UploadProps, UploadState> {\n declare props: UploadProps & Required<Pick<UploadProps, keyof typeof Upload.defaultProps>>;\n\n static defaultProps = {\n animationDelay: 300,\n maxSize: MAX_SIZE_DEFAULT,\n psButtonDisabled: false,\n size: 'md',\n usAccept: 'image/*',\n usDisabled: false,\n usLabel: '',\n } satisfies Partial<UploadProps>;\n\n dragCounter = 0;\n timeouts = 0;\n\n constructor(props: UploadProps) {\n super(props);\n\n this.state = {\n fileName: '',\n isDroppable: false,\n isComplete: false,\n isError: false,\n isImage: false,\n isProcessing: false,\n isSuccess: false,\n response: undefined,\n uploadedImage: undefined,\n };\n }\n\n getErrorMessage(status?: number) {\n const { csFailureText, csTooLargeMessage, csWrongTypeMessage, maxSize, intl } = this.props;\n switch (status) {\n case 413:\n return (\n csTooLargeMessage ||\n (typeof maxSize === 'number'\n ? intl.formatMessage(messages.csTooLargeMessage, { maxSize: roundFileSize(maxSize) })\n : intl.formatMessage(messages.csTooLargeNoLimitMessage))\n );\n case 415:\n return csWrongTypeMessage || intl.formatMessage(messages.csWrongTypeMessage);\n default:\n return csFailureText || intl.formatMessage(messages.csFailureText);\n }\n }\n\n onDragLeave(event: React.DragEvent<HTMLDivElement>) {\n event.preventDefault();\n this.dragCounter -= 1;\n if (this.dragCounter === 0) {\n this.setState({ isDroppable: false });\n }\n }\n\n onDragEnter(event: React.DragEvent<HTMLDivElement>) {\n event.preventDefault();\n this.dragCounter += 1;\n const { usDisabled } = this.props;\n const { isProcessing } = this.state;\n if (this.dragCounter === 1 && !usDisabled && !isProcessing) {\n this.setState({ isDroppable: true });\n }\n }\n\n async onDrop(event: React.DragEvent<HTMLDivElement>) {\n const { isProcessing } = this.state;\n event.preventDefault();\n if (!isProcessing) {\n this.reset();\n }\n\n if (event.dataTransfer?.files?.[0]) {\n await this.fileDropped(event.dataTransfer.files[0]);\n }\n }\n\n asyncPost = async (file: File) => {\n const { httpOptions, fetcher } = this.props;\n if (httpOptions == null) {\n throw new Error('Cannot find HTTP options');\n }\n\n const { fileInputName = file.name, data = {} } = httpOptions;\n\n const formData = new FormData();\n formData.append(fileInputName, file);\n Object.keys(data).forEach((key) => formData.append(key, data[key]));\n return postData(httpOptions, formData, fetcher);\n };\n\n handleUploadComplete = (type: 'success' | 'error', response: unknown) => {\n const { animationDelay, onSuccess, onFailure } = this.props;\n const { fileName } = this.state;\n\n window.clearTimeout(this.timeouts);\n this.timeouts = window.setTimeout(() => {\n this.setState(\n {\n isProcessing: false,\n isComplete: true,\n },\n () => {\n if (type === 'success') {\n onSuccess?.(response as string | Response, fileName);\n } else {\n onFailure?.(response);\n }\n },\n );\n }, animationDelay);\n };\n\n asyncResponse = (response: unknown, type: 'success' | 'error') => {\n this.setState(\n {\n response,\n isError: type === 'error',\n isSuccess: type === 'success',\n },\n () => this.handleUploadComplete(type, response),\n );\n };\n\n handleOnClear: React.MouseEventHandler<HTMLButtonElement> = (event) => {\n event.preventDefault();\n const { onCancel } = this.props;\n onCancel?.();\n\n this.reset();\n };\n\n reset = () => {\n this.dragCounter = 0;\n window.clearTimeout(this.timeouts);\n this.setState({\n isComplete: false,\n isError: false,\n isProcessing: false,\n isSuccess: false,\n });\n };\n\n showDataImage = (dataUrl: string) => {\n const { isImage } = this.state;\n if (isImage) {\n this.setState({\n uploadedImage: dataUrl,\n });\n }\n };\n\n fileDropped = async (file: File) => {\n const { httpOptions, maxSize, onStart, usDisabled, usAccept } = this.props;\n const { isProcessing } = this.state;\n\n if (usDisabled || isProcessing) {\n return false;\n }\n\n if (!file) {\n throw new Error('Could not retrieve file');\n }\n\n this.setState({\n fileName: file.name,\n isDroppable: false,\n isProcessing: true,\n });\n\n onStart?.(file);\n\n let file64 = null;\n\n try {\n file64 = await asyncFileRead(file);\n } catch (error) {\n this.asyncResponse(error, 'error');\n }\n\n if (!file64) {\n return false;\n }\n\n this.setState({\n isImage: getFileType(file, file64).includes('image'),\n });\n\n if (!isTypeValid(file, usAccept, file64)) {\n this.asyncResponse(\n new ResponseError(\n new Response(null, {\n status: 415,\n statusText: 'Unsupported Media Type',\n }),\n ),\n 'error',\n );\n return false;\n }\n\n if (typeof maxSize === 'number' && !isSizeValid(file, maxSize)) {\n this.asyncResponse(\n new ResponseError(\n new Response(null, {\n status: 413,\n statusText: 'Request Entity Too Large',\n }),\n ),\n 'error',\n );\n return false;\n }\n\n if (httpOptions) {\n // Post the file to provided endpoint\n let response;\n try {\n response = await this.asyncPost(file);\n } catch (error) {\n this.asyncResponse(error, 'error');\n return false;\n }\n this.asyncResponse(response, 'success');\n this.showDataImage(file64);\n return true;\n }\n // Post on form submit. And return the encoded image.\n this.showDataImage(file64);\n this.asyncResponse(file64, 'success');\n return true;\n };\n\n render() {\n const {\n maxSize,\n usDropMessage,\n usAccept,\n usButtonText,\n usButtonRetryText,\n usDisabled,\n usHelpImage,\n usLabel,\n usPlaceholder,\n psButtonText,\n psProcessingText,\n psButtonDisabled,\n csButtonText,\n csSuccessText,\n size,\n intl,\n errorIconLabel,\n } = this.props;\n\n const {\n response,\n fileName,\n isComplete,\n isDroppable,\n isError,\n isImage,\n isProcessing,\n isSuccess,\n uploadedImage,\n } = this.state;\n\n const placeholder = ((): string => {\n if (usPlaceholder) {\n return usPlaceholder;\n }\n\n if (typeof maxSize === 'number') {\n return intl.formatMessage(messages.usPlaceholder, { maxSize: roundFileSize(maxSize) });\n }\n\n return intl.formatMessage(messages.usPlaceholderNoLimit);\n })();\n\n return (\n <div\n className={clsx('droppable-area', {\n droppable: true,\n 'tw-droppable-sm droppable-sm': size === 'sm',\n 'tw-droppable-md droppable-md': size === 'md' || !size,\n 'tw-droppable-lg droppable-lg': size === 'lg',\n 'droppable-dropping': isDroppable,\n 'droppable-processing': isProcessing,\n 'droppable-complete': isComplete && !isError,\n 'droppable-negative': isError && !isProcessing,\n })}\n onDragEnter={(event) => this.onDragEnter(event)}\n onDragLeave={(event) => this.onDragLeave(event)}\n onDrop={async (event) => this.onDrop(event)}\n onDragOver={(event) => event.preventDefault()}\n >\n {!isProcessing && !isComplete && (\n <UploadImageStep\n fileDropped={async (file) => this.fileDropped(file)}\n isComplete={isComplete}\n usAccept={usAccept}\n usButtonText={usButtonText || intl.formatMessage(messages.usButtonText)}\n usDisabled={usDisabled}\n usHelpImage={usHelpImage}\n usLabel={usLabel}\n usPlaceholder={placeholder}\n />\n )}\n\n {(isSuccess || isComplete) && !isError && (\n <CompleteStep\n fileName={fileName}\n isComplete={isComplete}\n isImage={isImage}\n csButtonText={csButtonText || intl.formatMessage(messages.csButtonText)}\n csSuccessText={csSuccessText || intl.formatMessage(messages.csSuccessText)}\n uploadedImage={uploadedImage}\n onClear={(event) => this.handleOnClear(event)}\n />\n )}\n {isError && !isProcessing && (\n <UploadImageStep\n fileDropped={async (file) => {\n this.reset();\n await this.fileDropped(file);\n }}\n isComplete={!isError}\n usAccept={usAccept}\n usButtonText={usButtonRetryText || intl.formatMessage(messages.retry)}\n usDisabled={usDisabled}\n usHelpImage={null}\n usLabel={usLabel}\n usPlaceholder={placeholder}\n errorMessage={this.getErrorMessage(\n response != null &&\n typeof response === 'object' &&\n 'status' in response &&\n typeof response.status === 'number'\n ? response.status\n : undefined,\n )}\n errorIconLabel={errorIconLabel}\n />\n )}\n {isProcessing && (\n <ProcessingStep\n isComplete={isComplete}\n isError={isError}\n isSuccess={isSuccess}\n psButtonText={psButtonText || intl.formatMessage(messages.psButtonText)}\n psProcessingText={psProcessingText || intl.formatMessage(messages.psProcessingText)}\n psButtonDisabled={psButtonDisabled}\n onClear={(event) => this.handleOnClear(event)}\n />\n )}\n {!isProcessing && (\n <div className=\"droppable-dropping-card droppable-card\" aria-live=\"polite\">\n <div className=\"droppable-card-content\">\n <div className=\"circle circle-sm text-primary\">\n <PlusIcon size=\"16\" />\n </div>\n <Title type={Typography.TITLE_BODY} className=\"m-t-3\">\n {usDropMessage || intl.formatMessage(messages.usDropMessage)}\n </Title>\n </div>\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default injectIntl(Upload);\n\nconst roundFileSize = (bytes: number) => {\n const megabytes = bytes / 1000000;\n if (megabytes >= 0.1) {\n const isRound = Math.floor(megabytes) === megabytes;\n return isRound ? `${megabytes}` : megabytes.toFixed(1);\n }\n if (megabytes >= 0.01) {\n return megabytes.toFixed(2);\n }\n return megabytes.toFixed(3);\n};\n"],"names":["MAX_SIZE_DEFAULT","UploadStep","Upload","Component","defaultProps","animationDelay","maxSize","psButtonDisabled","size","usAccept","usDisabled","usLabel","dragCounter","timeouts","constructor","props","state","fileName","isDroppable","isComplete","isError","isImage","isProcessing","isSuccess","response","undefined","uploadedImage","getErrorMessage","status","csFailureText","csTooLargeMessage","csWrongTypeMessage","intl","formatMessage","messages","roundFileSize","csTooLargeNoLimitMessage","onDragLeave","event","preventDefault","setState","onDragEnter","onDrop","reset","dataTransfer","files","fileDropped","asyncPost","file","httpOptions","fetcher","Error","fileInputName","name","data","formData","FormData","append","Object","keys","forEach","key","postData","handleUploadComplete","type","onSuccess","onFailure","window","clearTimeout","setTimeout","asyncResponse","handleOnClear","onCancel","showDataImage","dataUrl","onStart","file64","asyncFileRead","error","getFileType","includes","isTypeValid","ResponseError","Response","statusText","isSizeValid","render","usDropMessage","usButtonText","usButtonRetryText","usHelpImage","usPlaceholder","psButtonText","psProcessingText","csButtonText","csSuccessText","errorIconLabel","placeholder","usPlaceholderNoLimit","_jsxs","className","clsx","droppable","onDragOver","children","_jsx","UploadImageStep","CompleteStep","onClear","retry","errorMessage","ProcessingStep","PlusIcon","Title","Typography","TITLE_BODY","injectIntl","bytes","megabytes","isRound","Math","floor","toFixed"],"mappings":"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"}
@@ -378,7 +378,7 @@ class Upload extends Component {
378
378
  });
379
379
  }
380
380
  }
381
- var Upload$1 = injectIntl(Upload);
381
+ var Upload_default = injectIntl(Upload);
382
382
  const roundFileSize = bytes => {
383
383
  const megabytes = bytes / 1000000;
384
384
  if (megabytes >= 0.1) {
@@ -391,5 +391,5 @@ const roundFileSize = bytes => {
391
391
  return megabytes.toFixed(3);
392
392
  };
393
393
 
394
- export { MAX_SIZE_DEFAULT, Upload, UploadStep, Upload$1 as default };
394
+ export { MAX_SIZE_DEFAULT, Upload, UploadStep, Upload_default as default };
395
395
  //# sourceMappingURL=Upload.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Upload.mjs","sources":["../../src/upload/Upload.tsx"],"sourcesContent":["import { Plus as PlusIcon } from '@transferwise/icons';\nimport { clsx } from 'clsx';\nimport { Component } from 'react';\nimport { injectIntl, WrappedComponentProps } from 'react-intl';\n\nimport { Size, Typography } from '../common';\nimport Title from '../title';\n\nimport messages from './Upload.messages';\nimport { UploadImageStep, ProcessingStep, CompleteStep } from './steps';\nimport { postData, asyncFileRead, isSizeValid, isTypeValid, getFileType } from './utils';\nimport { PostDataFetcher, PostDataHTTPOptions, ResponseError } from './utils/postData/postData';\n\nexport const MAX_SIZE_DEFAULT = 5000000;\n\nexport enum UploadStep {\n UPLOAD_IMAGE_STEP = 'uploadImageStep',\n}\n\nexport interface UploadProps extends WrappedComponentProps {\n animationDelay?: number;\n csButtonText?: string;\n csFailureText?: string;\n csSuccessText?: string;\n csTooLargeMessage?: string;\n csWrongTypeMessage?: string;\n httpOptions?: PostDataHTTPOptions & {\n fileInputName?: string;\n data?: Record<string, string | Blob>;\n };\n /**\n * You can provide a fetcher function with the same interface as the global fetch function, which is used by default.\n * `function fetcher(input: RequestInfo, init?: RequestInit): Promise<Response>`\n */\n fetcher?: PostDataFetcher;\n /**\n * Filesize expressed in B.<br />If set to `null`, no size limit will be applied.\n * @default 5000000 (5 MB)\n */\n maxSize?: number | null;\n psButtonText?: string;\n psButtonDisabled?: boolean;\n psProcessingText?: string;\n size?: `${Size.SMALL | Size.MEDIUM | Size.LARGE}`;\n /**\n * You can provide multiple rules separated by comma, e.g.: \"application/pdf,image/*\".\n * Using \"*\" will allow every file type to be uploaded.\n */\n usAccept?: string;\n usButtonText?: string;\n usButtonRetryText?: string;\n usDisabled?: boolean;\n usDropMessage?: string;\n usHelpImage?: React.ReactNode;\n usLabel?: string;\n usPlaceholder?: string;\n /**\n * Override for the [InlineAlert icon's default, accessible name](/?path=/docs/other-statusicon-accessibility--docs)\n * announced by the screen readers\n * */\n errorIconLabel?: string;\n /** @deprecated Only a single variant exists, please remove this prop. */\n uploadStep?: `${UploadStep}`;\n onCancel?: () => void;\n onFailure?: (error: unknown) => void;\n onStart?: (file: File) => void;\n onSuccess?: (response: string | Response, fileName: string) => void;\n}\n\ninterface UploadState {\n fileName: string;\n isDroppable: boolean;\n isComplete: boolean;\n isError: boolean;\n isImage: boolean;\n isProcessing: boolean;\n isSuccess: boolean;\n response: unknown;\n uploadedImage: string | undefined;\n}\n\nexport class Upload extends Component<UploadProps, UploadState> {\n declare props: UploadProps & Required<Pick<UploadProps, keyof typeof Upload.defaultProps>>;\n\n static defaultProps = {\n animationDelay: 300,\n maxSize: MAX_SIZE_DEFAULT,\n psButtonDisabled: false,\n size: 'md',\n usAccept: 'image/*',\n usDisabled: false,\n usLabel: '',\n } satisfies Partial<UploadProps>;\n\n dragCounter = 0;\n timeouts = 0;\n\n constructor(props: UploadProps) {\n super(props);\n\n this.state = {\n fileName: '',\n isDroppable: false,\n isComplete: false,\n isError: false,\n isImage: false,\n isProcessing: false,\n isSuccess: false,\n response: undefined,\n uploadedImage: undefined,\n };\n }\n\n getErrorMessage(status?: number) {\n const { csFailureText, csTooLargeMessage, csWrongTypeMessage, maxSize, intl } = this.props;\n switch (status) {\n case 413:\n return (\n csTooLargeMessage ||\n (typeof maxSize === 'number'\n ? intl.formatMessage(messages.csTooLargeMessage, { maxSize: roundFileSize(maxSize) })\n : intl.formatMessage(messages.csTooLargeNoLimitMessage))\n );\n case 415:\n return csWrongTypeMessage || intl.formatMessage(messages.csWrongTypeMessage);\n default:\n return csFailureText || intl.formatMessage(messages.csFailureText);\n }\n }\n\n onDragLeave(event: React.DragEvent<HTMLDivElement>) {\n event.preventDefault();\n this.dragCounter -= 1;\n if (this.dragCounter === 0) {\n this.setState({ isDroppable: false });\n }\n }\n\n onDragEnter(event: React.DragEvent<HTMLDivElement>) {\n event.preventDefault();\n this.dragCounter += 1;\n const { usDisabled } = this.props;\n const { isProcessing } = this.state;\n if (this.dragCounter === 1 && !usDisabled && !isProcessing) {\n this.setState({ isDroppable: true });\n }\n }\n\n async onDrop(event: React.DragEvent<HTMLDivElement>) {\n const { isProcessing } = this.state;\n event.preventDefault();\n if (!isProcessing) {\n this.reset();\n }\n\n if (event.dataTransfer?.files?.[0]) {\n await this.fileDropped(event.dataTransfer.files[0]);\n }\n }\n\n asyncPost = async (file: File) => {\n const { httpOptions, fetcher } = this.props;\n if (httpOptions == null) {\n throw new Error('Cannot find HTTP options');\n }\n\n const { fileInputName = file.name, data = {} } = httpOptions;\n\n const formData = new FormData();\n formData.append(fileInputName, file);\n Object.keys(data).forEach((key) => formData.append(key, data[key]));\n return postData(httpOptions, formData, fetcher);\n };\n\n handleUploadComplete = (type: 'success' | 'error', response: unknown) => {\n const { animationDelay, onSuccess, onFailure } = this.props;\n const { fileName } = this.state;\n\n window.clearTimeout(this.timeouts);\n this.timeouts = window.setTimeout(() => {\n this.setState(\n {\n isProcessing: false,\n isComplete: true,\n },\n () => {\n if (type === 'success') {\n onSuccess?.(response as string | Response, fileName);\n } else {\n onFailure?.(response);\n }\n },\n );\n }, animationDelay);\n };\n\n asyncResponse = (response: unknown, type: 'success' | 'error') => {\n this.setState(\n {\n response,\n isError: type === 'error',\n isSuccess: type === 'success',\n },\n () => this.handleUploadComplete(type, response),\n );\n };\n\n handleOnClear: React.MouseEventHandler<HTMLButtonElement> = (event) => {\n event.preventDefault();\n const { onCancel } = this.props;\n onCancel?.();\n\n this.reset();\n };\n\n reset = () => {\n this.dragCounter = 0;\n window.clearTimeout(this.timeouts);\n this.setState({\n isComplete: false,\n isError: false,\n isProcessing: false,\n isSuccess: false,\n });\n };\n\n showDataImage = (dataUrl: string) => {\n const { isImage } = this.state;\n if (isImage) {\n this.setState({\n uploadedImage: dataUrl,\n });\n }\n };\n\n fileDropped = async (file: File) => {\n const { httpOptions, maxSize, onStart, usDisabled, usAccept } = this.props;\n const { isProcessing } = this.state;\n\n if (usDisabled || isProcessing) {\n return false;\n }\n\n if (!file) {\n throw new Error('Could not retrieve file');\n }\n\n this.setState({\n fileName: file.name,\n isDroppable: false,\n isProcessing: true,\n });\n\n onStart?.(file);\n\n let file64 = null;\n\n try {\n file64 = await asyncFileRead(file);\n } catch (error) {\n this.asyncResponse(error, 'error');\n }\n\n if (!file64) {\n return false;\n }\n\n this.setState({\n isImage: getFileType(file, file64).includes('image'),\n });\n\n if (!isTypeValid(file, usAccept, file64)) {\n this.asyncResponse(\n new ResponseError(\n new Response(null, {\n status: 415,\n statusText: 'Unsupported Media Type',\n }),\n ),\n 'error',\n );\n return false;\n }\n\n if (typeof maxSize === 'number' && !isSizeValid(file, maxSize)) {\n this.asyncResponse(\n new ResponseError(\n new Response(null, {\n status: 413,\n statusText: 'Request Entity Too Large',\n }),\n ),\n 'error',\n );\n return false;\n }\n\n if (httpOptions) {\n // Post the file to provided endpoint\n let response;\n try {\n response = await this.asyncPost(file);\n } catch (error) {\n this.asyncResponse(error, 'error');\n return false;\n }\n this.asyncResponse(response, 'success');\n this.showDataImage(file64);\n return true;\n }\n // Post on form submit. And return the encoded image.\n this.showDataImage(file64);\n this.asyncResponse(file64, 'success');\n return true;\n };\n\n render() {\n const {\n maxSize,\n usDropMessage,\n usAccept,\n usButtonText,\n usButtonRetryText,\n usDisabled,\n usHelpImage,\n usLabel,\n usPlaceholder,\n psButtonText,\n psProcessingText,\n psButtonDisabled,\n csButtonText,\n csSuccessText,\n size,\n intl,\n errorIconLabel,\n } = this.props;\n\n const {\n response,\n fileName,\n isComplete,\n isDroppable,\n isError,\n isImage,\n isProcessing,\n isSuccess,\n uploadedImage,\n } = this.state;\n\n const placeholder = ((): string => {\n if (usPlaceholder) {\n return usPlaceholder;\n }\n\n if (typeof maxSize === 'number') {\n return intl.formatMessage(messages.usPlaceholder, { maxSize: roundFileSize(maxSize) });\n }\n\n return intl.formatMessage(messages.usPlaceholderNoLimit);\n })();\n\n return (\n <div\n className={clsx('droppable-area', {\n droppable: true,\n 'tw-droppable-sm droppable-sm': size === 'sm',\n 'tw-droppable-md droppable-md': size === 'md' || !size,\n 'tw-droppable-lg droppable-lg': size === 'lg',\n 'droppable-dropping': isDroppable,\n 'droppable-processing': isProcessing,\n 'droppable-complete': isComplete && !isError,\n 'droppable-negative': isError && !isProcessing,\n })}\n onDragEnter={(event) => this.onDragEnter(event)}\n onDragLeave={(event) => this.onDragLeave(event)}\n onDrop={async (event) => this.onDrop(event)}\n onDragOver={(event) => event.preventDefault()}\n >\n {!isProcessing && !isComplete && (\n <UploadImageStep\n fileDropped={async (file) => this.fileDropped(file)}\n isComplete={isComplete}\n usAccept={usAccept}\n usButtonText={usButtonText || intl.formatMessage(messages.usButtonText)}\n usDisabled={usDisabled}\n usHelpImage={usHelpImage}\n usLabel={usLabel}\n usPlaceholder={placeholder}\n />\n )}\n\n {(isSuccess || isComplete) && !isError && (\n <CompleteStep\n fileName={fileName}\n isComplete={isComplete}\n isImage={isImage}\n csButtonText={csButtonText || intl.formatMessage(messages.csButtonText)}\n csSuccessText={csSuccessText || intl.formatMessage(messages.csSuccessText)}\n uploadedImage={uploadedImage}\n onClear={(event) => this.handleOnClear(event)}\n />\n )}\n {isError && !isProcessing && (\n <UploadImageStep\n fileDropped={async (file) => {\n this.reset();\n await this.fileDropped(file);\n }}\n isComplete={!isError}\n usAccept={usAccept}\n usButtonText={usButtonRetryText || intl.formatMessage(messages.retry)}\n usDisabled={usDisabled}\n usHelpImage={null}\n usLabel={usLabel}\n usPlaceholder={placeholder}\n errorMessage={this.getErrorMessage(\n response != null &&\n typeof response === 'object' &&\n 'status' in response &&\n typeof response.status === 'number'\n ? response.status\n : undefined,\n )}\n errorIconLabel={errorIconLabel}\n />\n )}\n {isProcessing && (\n <ProcessingStep\n isComplete={isComplete}\n isError={isError}\n isSuccess={isSuccess}\n psButtonText={psButtonText || intl.formatMessage(messages.psButtonText)}\n psProcessingText={psProcessingText || intl.formatMessage(messages.psProcessingText)}\n psButtonDisabled={psButtonDisabled}\n onClear={(event) => this.handleOnClear(event)}\n />\n )}\n {!isProcessing && (\n <div className=\"droppable-dropping-card droppable-card\" aria-live=\"polite\">\n <div className=\"droppable-card-content\">\n <div className=\"circle circle-sm text-primary\">\n <PlusIcon size=\"16\" />\n </div>\n <Title type={Typography.TITLE_BODY} className=\"m-t-3\">\n {usDropMessage || intl.formatMessage(messages.usDropMessage)}\n </Title>\n </div>\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default injectIntl(Upload);\n\nconst roundFileSize = (bytes: number) => {\n const megabytes = bytes / 1000000;\n if (megabytes >= 0.1) {\n const isRound = Math.floor(megabytes) === megabytes;\n return isRound ? `${megabytes}` : megabytes.toFixed(1);\n }\n if (megabytes >= 0.01) {\n return megabytes.toFixed(2);\n }\n return megabytes.toFixed(3);\n};\n"],"names":["MAX_SIZE_DEFAULT","UploadStep","Upload","Component","defaultProps","animationDelay","maxSize","psButtonDisabled","size","usAccept","usDisabled","usLabel","dragCounter","timeouts","constructor","props","state","fileName","isDroppable","isComplete","isError","isImage","isProcessing","isSuccess","response","undefined","uploadedImage","getErrorMessage","status","csFailureText","csTooLargeMessage","csWrongTypeMessage","intl","formatMessage","messages","roundFileSize","csTooLargeNoLimitMessage","onDragLeave","event","preventDefault","setState","onDragEnter","onDrop","reset","dataTransfer","files","fileDropped","asyncPost","file","httpOptions","fetcher","Error","fileInputName","name","data","formData","FormData","append","Object","keys","forEach","key","postData","handleUploadComplete","type","onSuccess","onFailure","window","clearTimeout","setTimeout","asyncResponse","handleOnClear","onCancel","showDataImage","dataUrl","onStart","file64","asyncFileRead","error","getFileType","includes","isTypeValid","ResponseError","Response","statusText","isSizeValid","render","usDropMessage","usButtonText","usButtonRetryText","usHelpImage","usPlaceholder","psButtonText","psProcessingText","csButtonText","csSuccessText","errorIconLabel","placeholder","usPlaceholderNoLimit","_jsxs","className","clsx","droppable","onDragOver","children","_jsx","UploadImageStep","CompleteStep","onClear","retry","errorMessage","ProcessingStep","PlusIcon","Title","Typography","TITLE_BODY","injectIntl","bytes","megabytes","isRound","Math","floor","toFixed"],"mappings":"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"}
1
+ {"version":3,"file":"Upload.mjs","sources":["../../src/upload/Upload.tsx"],"sourcesContent":["import { Plus as PlusIcon } from '@transferwise/icons';\nimport { clsx } from 'clsx';\nimport { Component } from 'react';\nimport { injectIntl, WrappedComponentProps } from 'react-intl';\n\nimport { Size, Typography } from '../common';\nimport Title from '../title';\n\nimport messages from './Upload.messages';\nimport { UploadImageStep, ProcessingStep, CompleteStep } from './steps';\nimport { postData, asyncFileRead, isSizeValid, isTypeValid, getFileType } from './utils';\nimport { PostDataFetcher, PostDataHTTPOptions, ResponseError } from './utils/postData/postData';\n\nexport const MAX_SIZE_DEFAULT = 5000000;\n\nexport enum UploadStep {\n UPLOAD_IMAGE_STEP = 'uploadImageStep',\n}\n\nexport interface UploadProps extends WrappedComponentProps {\n animationDelay?: number;\n csButtonText?: string;\n csFailureText?: string;\n csSuccessText?: string;\n csTooLargeMessage?: string;\n csWrongTypeMessage?: string;\n httpOptions?: PostDataHTTPOptions & {\n fileInputName?: string;\n data?: Record<string, string | Blob>;\n };\n /**\n * You can provide a fetcher function with the same interface as the global fetch function, which is used by default.\n * `function fetcher(input: RequestInfo, init?: RequestInit): Promise<Response>`\n */\n fetcher?: PostDataFetcher;\n /**\n * Filesize expressed in B.<br />If set to `null`, no size limit will be applied.\n * @default 5000000 (5 MB)\n */\n maxSize?: number | null;\n psButtonText?: string;\n psButtonDisabled?: boolean;\n psProcessingText?: string;\n size?: `${Size.SMALL | Size.MEDIUM | Size.LARGE}`;\n /**\n * You can provide multiple rules separated by comma, e.g.: \"application/pdf,image/*\".\n * Using \"*\" will allow every file type to be uploaded.\n */\n usAccept?: string;\n usButtonText?: string;\n usButtonRetryText?: string;\n usDisabled?: boolean;\n usDropMessage?: string;\n usHelpImage?: React.ReactNode;\n usLabel?: string;\n usPlaceholder?: string;\n /**\n * Override for the [InlineAlert icon's default, accessible name](/?path=/docs/other-statusicon-accessibility--docs)\n * announced by the screen readers\n * */\n errorIconLabel?: string;\n /** @deprecated Only a single variant exists, please remove this prop. */\n uploadStep?: `${UploadStep}`;\n onCancel?: () => void;\n onFailure?: (error: unknown) => void;\n onStart?: (file: File) => void;\n onSuccess?: (response: string | Response, fileName: string) => void;\n}\n\ninterface UploadState {\n fileName: string;\n isDroppable: boolean;\n isComplete: boolean;\n isError: boolean;\n isImage: boolean;\n isProcessing: boolean;\n isSuccess: boolean;\n response: unknown;\n uploadedImage: string | undefined;\n}\n\nexport class Upload extends Component<UploadProps, UploadState> {\n declare props: UploadProps & Required<Pick<UploadProps, keyof typeof Upload.defaultProps>>;\n\n static defaultProps = {\n animationDelay: 300,\n maxSize: MAX_SIZE_DEFAULT,\n psButtonDisabled: false,\n size: 'md',\n usAccept: 'image/*',\n usDisabled: false,\n usLabel: '',\n } satisfies Partial<UploadProps>;\n\n dragCounter = 0;\n timeouts = 0;\n\n constructor(props: UploadProps) {\n super(props);\n\n this.state = {\n fileName: '',\n isDroppable: false,\n isComplete: false,\n isError: false,\n isImage: false,\n isProcessing: false,\n isSuccess: false,\n response: undefined,\n uploadedImage: undefined,\n };\n }\n\n getErrorMessage(status?: number) {\n const { csFailureText, csTooLargeMessage, csWrongTypeMessage, maxSize, intl } = this.props;\n switch (status) {\n case 413:\n return (\n csTooLargeMessage ||\n (typeof maxSize === 'number'\n ? intl.formatMessage(messages.csTooLargeMessage, { maxSize: roundFileSize(maxSize) })\n : intl.formatMessage(messages.csTooLargeNoLimitMessage))\n );\n case 415:\n return csWrongTypeMessage || intl.formatMessage(messages.csWrongTypeMessage);\n default:\n return csFailureText || intl.formatMessage(messages.csFailureText);\n }\n }\n\n onDragLeave(event: React.DragEvent<HTMLDivElement>) {\n event.preventDefault();\n this.dragCounter -= 1;\n if (this.dragCounter === 0) {\n this.setState({ isDroppable: false });\n }\n }\n\n onDragEnter(event: React.DragEvent<HTMLDivElement>) {\n event.preventDefault();\n this.dragCounter += 1;\n const { usDisabled } = this.props;\n const { isProcessing } = this.state;\n if (this.dragCounter === 1 && !usDisabled && !isProcessing) {\n this.setState({ isDroppable: true });\n }\n }\n\n async onDrop(event: React.DragEvent<HTMLDivElement>) {\n const { isProcessing } = this.state;\n event.preventDefault();\n if (!isProcessing) {\n this.reset();\n }\n\n if (event.dataTransfer?.files?.[0]) {\n await this.fileDropped(event.dataTransfer.files[0]);\n }\n }\n\n asyncPost = async (file: File) => {\n const { httpOptions, fetcher } = this.props;\n if (httpOptions == null) {\n throw new Error('Cannot find HTTP options');\n }\n\n const { fileInputName = file.name, data = {} } = httpOptions;\n\n const formData = new FormData();\n formData.append(fileInputName, file);\n Object.keys(data).forEach((key) => formData.append(key, data[key]));\n return postData(httpOptions, formData, fetcher);\n };\n\n handleUploadComplete = (type: 'success' | 'error', response: unknown) => {\n const { animationDelay, onSuccess, onFailure } = this.props;\n const { fileName } = this.state;\n\n window.clearTimeout(this.timeouts);\n this.timeouts = window.setTimeout(() => {\n this.setState(\n {\n isProcessing: false,\n isComplete: true,\n },\n () => {\n if (type === 'success') {\n onSuccess?.(response as string | Response, fileName);\n } else {\n onFailure?.(response);\n }\n },\n );\n }, animationDelay);\n };\n\n asyncResponse = (response: unknown, type: 'success' | 'error') => {\n this.setState(\n {\n response,\n isError: type === 'error',\n isSuccess: type === 'success',\n },\n () => this.handleUploadComplete(type, response),\n );\n };\n\n handleOnClear: React.MouseEventHandler<HTMLButtonElement> = (event) => {\n event.preventDefault();\n const { onCancel } = this.props;\n onCancel?.();\n\n this.reset();\n };\n\n reset = () => {\n this.dragCounter = 0;\n window.clearTimeout(this.timeouts);\n this.setState({\n isComplete: false,\n isError: false,\n isProcessing: false,\n isSuccess: false,\n });\n };\n\n showDataImage = (dataUrl: string) => {\n const { isImage } = this.state;\n if (isImage) {\n this.setState({\n uploadedImage: dataUrl,\n });\n }\n };\n\n fileDropped = async (file: File) => {\n const { httpOptions, maxSize, onStart, usDisabled, usAccept } = this.props;\n const { isProcessing } = this.state;\n\n if (usDisabled || isProcessing) {\n return false;\n }\n\n if (!file) {\n throw new Error('Could not retrieve file');\n }\n\n this.setState({\n fileName: file.name,\n isDroppable: false,\n isProcessing: true,\n });\n\n onStart?.(file);\n\n let file64 = null;\n\n try {\n file64 = await asyncFileRead(file);\n } catch (error) {\n this.asyncResponse(error, 'error');\n }\n\n if (!file64) {\n return false;\n }\n\n this.setState({\n isImage: getFileType(file, file64).includes('image'),\n });\n\n if (!isTypeValid(file, usAccept, file64)) {\n this.asyncResponse(\n new ResponseError(\n new Response(null, {\n status: 415,\n statusText: 'Unsupported Media Type',\n }),\n ),\n 'error',\n );\n return false;\n }\n\n if (typeof maxSize === 'number' && !isSizeValid(file, maxSize)) {\n this.asyncResponse(\n new ResponseError(\n new Response(null, {\n status: 413,\n statusText: 'Request Entity Too Large',\n }),\n ),\n 'error',\n );\n return false;\n }\n\n if (httpOptions) {\n // Post the file to provided endpoint\n let response;\n try {\n response = await this.asyncPost(file);\n } catch (error) {\n this.asyncResponse(error, 'error');\n return false;\n }\n this.asyncResponse(response, 'success');\n this.showDataImage(file64);\n return true;\n }\n // Post on form submit. And return the encoded image.\n this.showDataImage(file64);\n this.asyncResponse(file64, 'success');\n return true;\n };\n\n render() {\n const {\n maxSize,\n usDropMessage,\n usAccept,\n usButtonText,\n usButtonRetryText,\n usDisabled,\n usHelpImage,\n usLabel,\n usPlaceholder,\n psButtonText,\n psProcessingText,\n psButtonDisabled,\n csButtonText,\n csSuccessText,\n size,\n intl,\n errorIconLabel,\n } = this.props;\n\n const {\n response,\n fileName,\n isComplete,\n isDroppable,\n isError,\n isImage,\n isProcessing,\n isSuccess,\n uploadedImage,\n } = this.state;\n\n const placeholder = ((): string => {\n if (usPlaceholder) {\n return usPlaceholder;\n }\n\n if (typeof maxSize === 'number') {\n return intl.formatMessage(messages.usPlaceholder, { maxSize: roundFileSize(maxSize) });\n }\n\n return intl.formatMessage(messages.usPlaceholderNoLimit);\n })();\n\n return (\n <div\n className={clsx('droppable-area', {\n droppable: true,\n 'tw-droppable-sm droppable-sm': size === 'sm',\n 'tw-droppable-md droppable-md': size === 'md' || !size,\n 'tw-droppable-lg droppable-lg': size === 'lg',\n 'droppable-dropping': isDroppable,\n 'droppable-processing': isProcessing,\n 'droppable-complete': isComplete && !isError,\n 'droppable-negative': isError && !isProcessing,\n })}\n onDragEnter={(event) => this.onDragEnter(event)}\n onDragLeave={(event) => this.onDragLeave(event)}\n onDrop={async (event) => this.onDrop(event)}\n onDragOver={(event) => event.preventDefault()}\n >\n {!isProcessing && !isComplete && (\n <UploadImageStep\n fileDropped={async (file) => this.fileDropped(file)}\n isComplete={isComplete}\n usAccept={usAccept}\n usButtonText={usButtonText || intl.formatMessage(messages.usButtonText)}\n usDisabled={usDisabled}\n usHelpImage={usHelpImage}\n usLabel={usLabel}\n usPlaceholder={placeholder}\n />\n )}\n\n {(isSuccess || isComplete) && !isError && (\n <CompleteStep\n fileName={fileName}\n isComplete={isComplete}\n isImage={isImage}\n csButtonText={csButtonText || intl.formatMessage(messages.csButtonText)}\n csSuccessText={csSuccessText || intl.formatMessage(messages.csSuccessText)}\n uploadedImage={uploadedImage}\n onClear={(event) => this.handleOnClear(event)}\n />\n )}\n {isError && !isProcessing && (\n <UploadImageStep\n fileDropped={async (file) => {\n this.reset();\n await this.fileDropped(file);\n }}\n isComplete={!isError}\n usAccept={usAccept}\n usButtonText={usButtonRetryText || intl.formatMessage(messages.retry)}\n usDisabled={usDisabled}\n usHelpImage={null}\n usLabel={usLabel}\n usPlaceholder={placeholder}\n errorMessage={this.getErrorMessage(\n response != null &&\n typeof response === 'object' &&\n 'status' in response &&\n typeof response.status === 'number'\n ? response.status\n : undefined,\n )}\n errorIconLabel={errorIconLabel}\n />\n )}\n {isProcessing && (\n <ProcessingStep\n isComplete={isComplete}\n isError={isError}\n isSuccess={isSuccess}\n psButtonText={psButtonText || intl.formatMessage(messages.psButtonText)}\n psProcessingText={psProcessingText || intl.formatMessage(messages.psProcessingText)}\n psButtonDisabled={psButtonDisabled}\n onClear={(event) => this.handleOnClear(event)}\n />\n )}\n {!isProcessing && (\n <div className=\"droppable-dropping-card droppable-card\" aria-live=\"polite\">\n <div className=\"droppable-card-content\">\n <div className=\"circle circle-sm text-primary\">\n <PlusIcon size=\"16\" />\n </div>\n <Title type={Typography.TITLE_BODY} className=\"m-t-3\">\n {usDropMessage || intl.formatMessage(messages.usDropMessage)}\n </Title>\n </div>\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default injectIntl(Upload);\n\nconst roundFileSize = (bytes: number) => {\n const megabytes = bytes / 1000000;\n if (megabytes >= 0.1) {\n const isRound = Math.floor(megabytes) === megabytes;\n return isRound ? `${megabytes}` : megabytes.toFixed(1);\n }\n if (megabytes >= 0.01) {\n return megabytes.toFixed(2);\n }\n return megabytes.toFixed(3);\n};\n"],"names":["MAX_SIZE_DEFAULT","UploadStep","Upload","Component","defaultProps","animationDelay","maxSize","psButtonDisabled","size","usAccept","usDisabled","usLabel","dragCounter","timeouts","constructor","props","state","fileName","isDroppable","isComplete","isError","isImage","isProcessing","isSuccess","response","undefined","uploadedImage","getErrorMessage","status","csFailureText","csTooLargeMessage","csWrongTypeMessage","intl","formatMessage","messages","roundFileSize","csTooLargeNoLimitMessage","onDragLeave","event","preventDefault","setState","onDragEnter","onDrop","reset","dataTransfer","files","fileDropped","asyncPost","file","httpOptions","fetcher","Error","fileInputName","name","data","formData","FormData","append","Object","keys","forEach","key","postData","handleUploadComplete","type","onSuccess","onFailure","window","clearTimeout","setTimeout","asyncResponse","handleOnClear","onCancel","showDataImage","dataUrl","onStart","file64","asyncFileRead","error","getFileType","includes","isTypeValid","ResponseError","Response","statusText","isSizeValid","render","usDropMessage","usButtonText","usButtonRetryText","usHelpImage","usPlaceholder","psButtonText","psProcessingText","csButtonText","csSuccessText","errorIconLabel","placeholder","usPlaceholderNoLimit","_jsxs","className","clsx","droppable","onDragOver","children","_jsx","UploadImageStep","CompleteStep","onClear","retry","errorMessage","ProcessingStep","PlusIcon","Title","Typography","TITLE_BODY","injectIntl","bytes","megabytes","isRound","Math","floor","toFixed"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@transferwise/components",
3
- "version": "46.117.1",
3
+ "version": "46.119.0",
4
4
  "description": "Neptune React components",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -38,87 +38,87 @@
38
38
  "!**/*.tsbuildinfo"
39
39
  ],
40
40
  "devDependencies": {
41
- "@babel/core": "^7.28.3",
42
- "@babel/plugin-transform-runtime": "^7.28.3",
43
- "@babel/preset-env": "^7.28.3",
44
- "@babel/preset-react": "^7.27.1",
45
- "@babel/preset-typescript": "^7.27.1",
46
- "@formatjs/cli": "^6.7.2",
47
- "@rollup/plugin-babel": "^6.0.4",
41
+ "@babel/core": "^7.28.5",
42
+ "@babel/plugin-transform-runtime": "^7.28.5",
43
+ "@babel/preset-env": "^7.28.5",
44
+ "@babel/preset-react": "^7.28.5",
45
+ "@babel/preset-typescript": "^7.28.5",
46
+ "@formatjs/cli": "^6.8.4",
47
+ "@rollup/plugin-babel": "^6.1.0",
48
48
  "@rollup/plugin-json": "^6.1.0",
49
- "@rollup/plugin-node-resolve": "^16.0.1",
50
- "@rollup/plugin-typescript": "^12.1.4",
49
+ "@rollup/plugin-node-resolve": "^16.0.3",
50
+ "@rollup/plugin-typescript": "^12.3.0",
51
51
  "@rollup/plugin-url": "^8.0.2",
52
- "@storybook/addon-a11y": "^10.1.4",
53
- "@storybook/addon-docs": "^10.1.4",
52
+ "@storybook/addon-a11y": "^10.1.10",
53
+ "@storybook/addon-docs": "^10.1.10",
54
54
  "@storybook/addon-webpack5-compiler-babel": "^4.0.0",
55
- "@storybook/react-webpack5": "^10.1.4",
55
+ "@storybook/react-webpack5": "^10.1.10",
56
56
  "@testing-library/dom": "^10.4.1",
57
- "@testing-library/jest-dom": "^6.8.0",
58
- "@testing-library/react": "^16.3.0",
57
+ "@testing-library/jest-dom": "^6.9.1",
58
+ "@testing-library/react": "^16.3.1",
59
59
  "@testing-library/user-event": "^14.6.1",
60
- "@transferwise/icons": "^4.0.0",
61
- "@tsconfig/recommended": "^1.0.10",
60
+ "@transferwise/icons": "^4.0.1",
61
+ "@tsconfig/recommended": "^1.0.13",
62
62
  "@types/babel__core": "^7.20.5",
63
63
  "@types/commonmark": "^0.27.10",
64
64
  "@types/jest": "^30.0.0",
65
- "@types/lodash": "4.17.20",
65
+ "@types/lodash": "4.17.21",
66
66
  "@types/lodash.clamp": "^4.0.9",
67
67
  "@types/lodash.debounce": "^4.0.9",
68
68
  "@types/react": "^18.3.23",
69
69
  "@types/react-dom": "^18.3.7",
70
70
  "@types/react-transition-group": "4.4.12",
71
- "@wise/art": "^2.24.4",
72
- "@wise/eslint-config": "^13.1.0",
71
+ "@wise/art": "^2.25.0",
72
+ "@wise/eslint-config": "^13.3.0",
73
73
  "babel-plugin-formatjs": "^10.5.39",
74
- "eslint": "^9.33.0",
75
- "eslint-plugin-storybook": "10.1.4",
74
+ "eslint": "^9.39.2",
75
+ "eslint-plugin-storybook": "10.1.10",
76
76
  "gulp": "^5.0.1",
77
- "jest": "^30.0.5",
77
+ "jest": "^30.2.0",
78
78
  "jest-environment-jsdom": "^29.7.0",
79
79
  "jest-fetch-mock": "^3.0.3",
80
80
  "lodash.times": "^4.3.2",
81
81
  "react-intl": "^7.1.11",
82
- "rollup": "^4.47.1",
82
+ "rollup": "^4.54.0",
83
83
  "rollup-preserve-directives": "^1.1.3",
84
84
  "storybook": "^10.1.10",
85
85
  "storybook-addon-tag-badges": "^3.0.4",
86
86
  "storybook-addon-test-codegen": "^3.0.1",
87
87
  "@transferwise/less-config": "3.1.2",
88
+ "@transferwise/neptune-css": "14.26.0",
88
89
  "@wise/wds-configs": "0.0.0",
89
- "@wise/components-theming": "1.9.1",
90
- "@transferwise/neptune-css": "14.26.0"
90
+ "@wise/components-theming": "1.9.2"
91
91
  },
92
92
  "peerDependencies": {
93
93
  "@transferwise/icons": "^3 || ^4",
94
- "@transferwise/neptune-css": "^14.24",
95
- "@wise/art": "^2.24.4",
96
- "@wise/components-theming": "^1.6.2",
97
- "framer-motion": "^12.23.22",
94
+ "@transferwise/neptune-css": "^14.26",
95
+ "@wise/art": "^2.25.0",
96
+ "@wise/components-theming": "^1.9.1",
97
+ "framer-motion": "^12.23.26",
98
98
  "react": ">=18",
99
99
  "react-dom": ">=18",
100
100
  "react-intl": "^5.10.0 || ^6 || ^7"
101
101
  },
102
102
  "dependencies": {
103
- "@babel/runtime": "^7.28.3",
103
+ "@babel/runtime": "^7.28.4",
104
104
  "@floating-ui/react": "^0.27.16",
105
105
  "@headlessui/react": "^1.7.19",
106
106
  "@popperjs/core": "^2.11.8",
107
- "@react-aria/focus": "^3.21.0",
108
- "@react-aria/overlays": "^3.28.0",
109
- "@react-spring/web": "~10.0.1",
107
+ "@react-aria/focus": "^3.21.3",
108
+ "@react-aria/overlays": "^3.31.0",
109
+ "@react-spring/web": "~10.0.3",
110
110
  "@transferwise/formatting": "^2.13.4",
111
111
  "@transferwise/neptune-validation": "^3.3.1",
112
112
  "clsx": "^2.1.1",
113
113
  "commonmark": "^0.31.2",
114
- "core-js": "^3.45.1",
115
- "framer-motion": "^12.23.22",
114
+ "core-js": "^3.47.0",
115
+ "framer-motion": "^12.23.26",
116
116
  "lodash.clamp": "^4.0.3",
117
117
  "lodash.debounce": "^4.0.8",
118
118
  "merge-props": "^6.0.0",
119
119
  "react-popper": "^2.3.0",
120
120
  "react-transition-group": "^4.4.5",
121
- "virtua": "^0.41.5"
121
+ "virtua": "^0.48.2"
122
122
  },
123
123
  "publishConfig": {
124
124
  "access": "public"
@@ -1,4 +1,4 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
1
+ // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
2
2
 
3
3
  exports[`AccordionItem open / close renders an item closed 1`] = `
4
4
  <div>
@@ -1,3 +1,3 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
1
+ // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
2
2
 
3
3
  exports[`Accordion defaults renders an empty list when no items are passed 1`] = `<div />`;
@@ -1,4 +1,4 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
1
+ // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
2
2
 
3
3
  exports[`ActionButton by default renders the button 1`] = `
4
4
  <div>
@@ -10,7 +10,7 @@ import Alert, { AlertArrowPosition, type AlertProps as FullAlertProps } from './
10
10
 
11
11
  export default {
12
12
  component: Alert,
13
- title: 'Feedback/Alert',
13
+ title: 'Prompts/Alert',
14
14
  args: {
15
15
  type: Sentiment.POSITIVE,
16
16
  message:
@@ -5,7 +5,7 @@ import { Button, Field, SelectInput, Sentiment } from '..';
5
5
  import Alert, { type AlertProps } from './Alert';
6
6
 
7
7
  const meta = {
8
- title: 'Feedback/Alert/Tests',
8
+ title: 'Prompts/Alert/Tests',
9
9
  component: Alert,
10
10
  argTypes: {},
11
11
  args: {
@@ -1,4 +1,4 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
1
+ // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
2
2
 
3
3
  exports[`FlowNavigationAvatar with a name AND profileType FlowNavigationAvatar with a name AND profileType AND avatar url renders the image 1`] = `
4
4
  <div
@@ -1,5 +1,8 @@
1
1
  .wds-Button {
2
- --Button-background: var(--color-sentiment-interactive-primary, var(--color-interactive-accent));
2
+ --Button-background: var(
3
+ --color-sentiment-interactive-primary,
4
+ var(--color-interactive-accent)
5
+ );
3
6
  --Button-background-hover: var(
4
7
  --color-sentiment-interactive-primary-hover,
5
8
  var(--color-interactive-accent-hover)
@@ -8,7 +11,10 @@
8
11
  --color-sentiment-interactive-primary-active,
9
12
  var(--color-interactive-accent-active)
10
13
  );
11
- --Button-color: var(--color-sentiment-interactive-control, var(--color-interactive-control));
14
+ --Button-color: var(
15
+ --color-sentiment-interactive-control,
16
+ var(--color-interactive-control)
17
+ );
12
18
  --Button-color-hover: var(
13
19
  --color-sentiment-interactive-control-hover,
14
20
  var(--color-interactive-control-hover)
@@ -71,11 +77,26 @@
71
77
  );
72
78
 
73
79
  --Button-tertiary-background: transparent;
74
- --Button-tertiary-background-hover: var(--color-sentiment-interactive-secondary-neutral, var(--color-background-screen-hover));
75
- --Button-tertiary-background-active: var(--color-sentiment-interactive-secondary-neutral-hover, var(--color-background-screen-active));
76
- --Button-tertiary-color: var(--color-sentiment-content-primary, var(--color-interactive-primary));
77
- --Button-tertiary-color-hover: var(--color-sentiment-content-primary-hover, var(--color-interactive-primary-hover));
78
- --Button-tertiary-color-active: var(--color-sentiment-content-primary-active, var(--color-interactive-primary-active));
80
+ --Button-tertiary-background-hover: var(
81
+ --color-sentiment-interactive-secondary-neutral,
82
+ var(--color-background-screen-hover)
83
+ );
84
+ --Button-tertiary-background-active: var(
85
+ --color-sentiment-interactive-secondary-neutral-hover,
86
+ var(--color-background-screen-active)
87
+ );
88
+ --Button-tertiary-color: var(
89
+ --color-sentiment-content-primary,
90
+ var(--color-interactive-primary)
91
+ );
92
+ --Button-tertiary-color-hover: var(
93
+ --color-sentiment-content-primary-hover,
94
+ var(--color-interactive-primary-hover)
95
+ );
96
+ --Button-tertiary-color-active: var(
97
+ --color-sentiment-content-primary-active,
98
+ var(--color-interactive-primary-active)
99
+ );
79
100
 
80
101
  --Button-primary-negative-background: var(--color-sentiment-negative-primary);
81
102
  --Button-primary-negative-background-hover: var(--color-sentiment-negative-primary-hover);
@@ -1,4 +1,4 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
1
+ // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
2
2
 
3
3
  exports[`Checkbox renders the given label 1`] = `
4
4
  <div>
@@ -1,4 +1,4 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
1
+ // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
2
2
 
3
3
  exports[`Chevron custom xs icon renders 1`] = `
4
4
  <div>
@@ -1,4 +1,4 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
1
+ // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
2
2
 
3
3
  exports[`Chips Choice Chips renders as expected 1`] = `
4
4
  <div>
@@ -1,4 +1,4 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
1
+ // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
2
2
 
3
3
  exports[`Radio button renders checked state correctly 1`] = `
4
4
  <div>
@@ -1,4 +1,4 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
1
+ // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
2
2
 
3
3
  exports[`BottomSheet renders content when open 1`] = `
4
4
  <body>
@@ -1,4 +1,4 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
1
+ // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
2
2
 
3
3
  exports[`Card matches snapshot 1`] = `
4
4
  <div
@@ -1,4 +1,4 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
1
+ // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
2
2
 
3
3
  exports[`CloseButton renders as expected 1`] = `
4
4
  <div>
@@ -1,4 +1,4 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
1
+ // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
2
2
 
3
3
  exports[`FlowHeader renders as expected 1`] = `
4
4
  <div>
@@ -1,3 +1,3 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
1
+ // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
2
2
 
3
3
  exports[`Panel renders 1`] = `<div />`;
@@ -5,7 +5,7 @@ import { storyConfig } from '../test-utils';
5
5
 
6
6
  export default {
7
7
  component: CriticalCommsBanner,
8
- title: 'Feedback/CriticalCommsBanner',
8
+ title: 'Prompts/CriticalCommsBanner',
9
9
  } satisfies Meta<typeof CriticalCommsBanner>;
10
10
 
11
11
  export const Basic = {
@@ -1,4 +1,4 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
1
+ // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
2
2
 
3
3
  exports[`FlowNavigation on mobile renders as expected 1`] = `
4
4
  <div>
@@ -109,8 +109,8 @@ export const Basic: Story = {
109
109
  };
110
110
 
111
111
  /**
112
- * `IconButton` is sentiment-aware and will automatically adjust its
113
- * colours if wrapped inside the [SentimentSurface](/?path=/docs/content-sentimentsurface--docs) component
112
+ * `IconButton` is sentiment-aware and will automatically adjust its colours if wrapped inside
113
+ * the [SentimentSurface](?path=/docs/foundations-sentimentsurface--docs) component
114
114
  */
115
115
  export const SentimentAwareness: Story = {
116
116
  render: () => {