@transferwise/components 0.0.0-experimental-4c79cff → 0.0.0-experimental-28a3dd5

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 (183) hide show
  1. package/build/avatarLayout/AvatarLayout.js +10 -4
  2. package/build/avatarLayout/AvatarLayout.js.map +1 -1
  3. package/build/avatarLayout/AvatarLayout.mjs +10 -4
  4. package/build/avatarLayout/AvatarLayout.mjs.map +1 -1
  5. package/build/button/Button.js +86 -79
  6. package/build/button/Button.js.map +1 -1
  7. package/build/button/Button.mjs +87 -80
  8. package/build/button/Button.mjs.map +1 -1
  9. package/build/button/Button.resolver.js +74 -0
  10. package/build/button/Button.resolver.js.map +1 -0
  11. package/build/button/Button.resolver.mjs +72 -0
  12. package/build/button/Button.resolver.mjs.map +1 -0
  13. package/build/button/LegacyButton.js +114 -0
  14. package/build/button/LegacyButton.js.map +1 -0
  15. package/build/button/LegacyButton.mjs +112 -0
  16. package/build/button/LegacyButton.mjs.map +1 -0
  17. package/build/criticalBanner/CriticalCommsBanner.js +2 -2
  18. package/build/criticalBanner/CriticalCommsBanner.js.map +1 -1
  19. package/build/criticalBanner/CriticalCommsBanner.mjs +1 -1
  20. package/build/header/Header.js +2 -2
  21. package/build/header/Header.js.map +1 -1
  22. package/build/header/Header.mjs +1 -1
  23. package/build/i18n/ja.json +0 -1
  24. package/build/i18n/ja.json.js +0 -1
  25. package/build/i18n/ja.json.js.map +1 -1
  26. package/build/i18n/ja.json.mjs +0 -1
  27. package/build/i18n/ja.json.mjs.map +1 -1
  28. package/build/i18n/pt.json +0 -1
  29. package/build/i18n/pt.json.js +0 -1
  30. package/build/i18n/pt.json.js.map +1 -1
  31. package/build/i18n/pt.json.mjs +0 -1
  32. package/build/i18n/pt.json.mjs.map +1 -1
  33. package/build/i18n/ru.json +0 -1
  34. package/build/i18n/ru.json.js +0 -1
  35. package/build/i18n/ru.json.js.map +1 -1
  36. package/build/i18n/ru.json.mjs +0 -1
  37. package/build/i18n/ru.json.mjs.map +1 -1
  38. package/build/i18n/zh-HK.json +0 -1
  39. package/build/i18n/zh-HK.json.js +0 -1
  40. package/build/i18n/zh-HK.json.js.map +1 -1
  41. package/build/i18n/zh-HK.json.mjs +0 -1
  42. package/build/i18n/zh-HK.json.mjs.map +1 -1
  43. package/build/index.js +2 -4
  44. package/build/index.js.map +1 -1
  45. package/build/index.mjs +1 -2
  46. package/build/index.mjs.map +1 -1
  47. package/build/link/Link.js +8 -3
  48. package/build/link/Link.js.map +1 -1
  49. package/build/link/Link.mjs +8 -3
  50. package/build/link/Link.mjs.map +1 -1
  51. package/build/main.css +227 -13
  52. package/build/nudge/Nudge.js.map +1 -1
  53. package/build/nudge/Nudge.mjs.map +1 -1
  54. package/build/primitives/PrimitiveAnchor/src/PrimitiveAnchor.js +2 -4
  55. package/build/primitives/PrimitiveAnchor/src/PrimitiveAnchor.js.map +1 -1
  56. package/build/primitives/PrimitiveAnchor/src/PrimitiveAnchor.mjs +2 -4
  57. package/build/primitives/PrimitiveAnchor/src/PrimitiveAnchor.mjs.map +1 -1
  58. package/build/primitives/PrimitiveButton/src/PrimitiveButton.js +3 -5
  59. package/build/primitives/PrimitiveButton/src/PrimitiveButton.js.map +1 -1
  60. package/build/primitives/PrimitiveButton/src/PrimitiveButton.mjs +3 -5
  61. package/build/primitives/PrimitiveButton/src/PrimitiveButton.mjs.map +1 -1
  62. package/build/select/Select.js +2 -2
  63. package/build/select/Select.js.map +1 -1
  64. package/build/select/Select.mjs +1 -1
  65. package/build/styles/avatarLayout/AvatarLayout.css +12 -2
  66. package/build/styles/button/Button.css +207 -15
  67. package/build/styles/button/Button.vars.css +46 -0
  68. package/build/styles/button/LegacyButton.css +23 -0
  69. package/build/styles/main.css +227 -13
  70. package/build/styles/nudge/Nudge.css +0 -11
  71. package/build/types/avatarLayout/AvatarLayout.d.ts.map +1 -1
  72. package/build/types/button/Button.d.ts +2 -23
  73. package/build/types/button/Button.d.ts.map +1 -1
  74. package/build/types/button/Button.resolver.d.ts +33 -0
  75. package/build/types/button/Button.resolver.d.ts.map +1 -0
  76. package/build/types/button/Button.types.d.ts +67 -0
  77. package/build/types/button/Button.types.d.ts.map +1 -0
  78. package/build/types/button/LegacyButton.d.ts +30 -0
  79. package/build/types/button/LegacyButton.d.ts.map +1 -0
  80. package/build/types/button/index.d.ts +2 -2
  81. package/build/types/button/index.d.ts.map +1 -1
  82. package/build/types/index.d.ts +0 -2
  83. package/build/types/index.d.ts.map +1 -1
  84. package/build/types/link/Link.d.ts +2 -2
  85. package/build/types/link/Link.d.ts.map +1 -1
  86. package/build/types/nudge/Nudge.d.ts +1 -1
  87. package/build/types/nudge/Nudge.d.ts.map +1 -1
  88. package/build/types/primitives/PrimitiveAnchor/src/PrimitiveAnchor.d.ts.map +1 -1
  89. package/build/types/primitives/PrimitiveAnchor/src/PrimitiveAnchor.types.d.ts +6 -2
  90. package/build/types/primitives/PrimitiveAnchor/src/PrimitiveAnchor.types.d.ts.map +1 -1
  91. package/build/types/primitives/PrimitiveButton/src/PrimitiveButton.d.ts.map +1 -1
  92. package/build/types/test-utils/story-config.d.ts +1 -1
  93. package/build/types/test-utils/story-config.d.ts.map +1 -1
  94. package/build/types/uploadInput/uploadButton/getAllowedFileTypes.d.ts.map +1 -1
  95. package/build/upload/steps/completeStep/completeStep.js +2 -2
  96. package/build/upload/steps/completeStep/completeStep.js.map +1 -1
  97. package/build/upload/steps/completeStep/completeStep.mjs +1 -1
  98. package/build/upload/steps/processingStep/processingStep.js +2 -2
  99. package/build/upload/steps/processingStep/processingStep.js.map +1 -1
  100. package/build/upload/steps/processingStep/processingStep.mjs +1 -1
  101. package/build/uploadInput/UploadInput.js +3 -3
  102. package/build/uploadInput/UploadInput.js.map +1 -1
  103. package/build/uploadInput/UploadInput.mjs +1 -1
  104. package/build/uploadInput/uploadButton/getAllowedFileTypes.js +3 -23
  105. package/build/uploadInput/uploadButton/getAllowedFileTypes.js.map +1 -1
  106. package/build/uploadInput/uploadButton/getAllowedFileTypes.mjs +3 -23
  107. package/build/uploadInput/uploadButton/getAllowedFileTypes.mjs.map +1 -1
  108. package/package.json +3 -3
  109. package/src/alert/Alert.tests.story.tsx +1 -1
  110. package/src/avatarLayout/AvatarLayout.css +12 -2
  111. package/src/avatarLayout/AvatarLayout.less +19 -2
  112. package/src/avatarLayout/AvatarLayout.tsx +10 -3
  113. package/src/button/Button.css +207 -15
  114. package/src/button/Button.less +214 -14
  115. package/src/button/Button.resolver.tsx +73 -0
  116. package/src/button/Button.spec.tsx +188 -224
  117. package/src/button/Button.story.tsx +701 -135
  118. package/src/button/Button.tests.story.tsx +27 -0
  119. package/src/button/Button.tsx +99 -131
  120. package/src/button/Button.types.ts +94 -0
  121. package/src/button/Button.vars.css +46 -0
  122. package/src/button/Button.vars.less +60 -0
  123. package/src/button/LegacyButton.css +23 -0
  124. package/src/button/LegacyButton.less +24 -0
  125. package/src/button/LegacyButton.spec.tsx +147 -0
  126. package/src/button/LegacyButton.story.tsx +220 -0
  127. package/src/button/LegacyButton.tsx +160 -0
  128. package/src/button/index.ts +2 -3
  129. package/src/drawer/Drawer.rtl.spec.tsx +59 -0
  130. package/src/drawer/Drawer.spec.js +101 -0
  131. package/src/drawer/__snapshots__/Drawer.rtl.spec.tsx.snap +55 -0
  132. package/src/field/Field.story.tsx +1 -1
  133. package/src/flowNavigation/__snapshots__/FlowNavigation.spec.js.snap +1 -2
  134. package/src/i18n/ja.json +0 -1
  135. package/src/i18n/pt.json +0 -1
  136. package/src/i18n/ru.json +0 -1
  137. package/src/i18n/zh-HK.json +0 -1
  138. package/src/index.ts +0 -12
  139. package/src/inputs/SelectInput.story.tsx +1 -1
  140. package/src/label/Label.story.tsx +1 -1
  141. package/src/link/Link.tsx +15 -6
  142. package/src/main.css +227 -13
  143. package/src/main.less +1 -0
  144. package/src/nudge/Nudge.css +0 -11
  145. package/src/nudge/Nudge.less +0 -3
  146. package/src/nudge/Nudge.story.tsx +0 -10
  147. package/src/nudge/Nudge.tsx +1 -2
  148. package/src/primitives/PrimitiveAnchor/src/PrimitiveAnchor.tsx +2 -8
  149. package/src/primitives/PrimitiveAnchor/src/PrimitiveAnchor.types.ts +7 -2
  150. package/src/primitives/PrimitiveAnchor/test/PrimitiveAnchor.spec.tsx +1 -3
  151. package/src/primitives/PrimitiveButton/src/PrimitiveButton.tsx +4 -12
  152. package/src/primitives/PrimitiveButton/test/PrimitiveButton.spec.tsx +16 -13
  153. package/src/test-utils/Parameters.d.ts +9 -1
  154. package/src/test-utils/story-config.ts +10 -1
  155. package/src/uploadInput/UploadInput.tests.story.tsx +5 -5
  156. package/src/uploadInput/uploadButton/getAllowedFileTypes.spec.ts +0 -12
  157. package/src/uploadInput/uploadButton/getAllowedFileTypes.ts +7 -33
  158. package/build/table/Table.js +0 -166
  159. package/build/table/Table.js.map +0 -1
  160. package/build/table/Table.messages.js +0 -24
  161. package/build/table/Table.messages.js.map +0 -1
  162. package/build/table/Table.messages.mjs +0 -22
  163. package/build/table/Table.messages.mjs.map +0 -1
  164. package/build/table/Table.mjs +0 -164
  165. package/build/table/Table.mjs.map +0 -1
  166. package/build/table/TableCell.js +0 -86
  167. package/build/table/TableCell.js.map +0 -1
  168. package/build/table/TableCell.mjs +0 -84
  169. package/build/table/TableCell.mjs.map +0 -1
  170. package/build/table/TableHeader.js +0 -57
  171. package/build/table/TableHeader.js.map +0 -1
  172. package/build/table/TableHeader.mjs +0 -55
  173. package/build/table/TableHeader.mjs.map +0 -1
  174. package/build/table/TableRow.js +0 -85
  175. package/build/table/TableRow.js.map +0 -1
  176. package/build/table/TableRow.mjs +0 -83
  177. package/build/table/TableRow.mjs.map +0 -1
  178. package/build/table/TableStatusText.js +0 -54
  179. package/build/table/TableStatusText.js.map +0 -1
  180. package/build/table/TableStatusText.mjs +0 -52
  181. package/build/table/TableStatusText.mjs.map +0 -1
  182. package/src/button/__snapshots__/Button.spec.tsx.snap +0 -309
  183. package/src/drawer/Drawer.spec.tsx +0 -93
@@ -1,38 +1,12 @@
1
1
  import { FileType } from '../../common';
2
2
 
3
- const parseFileType = (fileType: string): string => {
4
- if (fileType?.includes('.')) {
5
- return fileType.replace('.', '').toUpperCase();
6
- }
7
-
8
- const mimeType = fileType?.split('/');
9
- if (mimeType?.length > 1) {
10
- let parsedType = mimeType[1];
11
-
12
- if (parsedType.toLocaleLowerCase() === 'jpeg') {
13
- parsedType = 'jpg, '.concat(parsedType).toUpperCase();
14
- }
15
-
16
- return parsedType.toUpperCase();
17
- }
18
-
19
- return fileType;
20
- };
21
-
22
3
  const getAllowedFileTypes = (fileTypes: readonly FileType[] | readonly string[]): string[] =>
23
- fileTypes.map((fileType: string) => {
24
- const splittedFileTypes = fileType?.split(',');
25
-
26
- if (splittedFileTypes?.length > 1) {
27
- // If `fileType` contains `format` and `mime` types, remove mime types, proceed only with format types
28
- return splittedFileTypes
29
- .filter((splittedFileType: string) => !splittedFileType?.includes('/'))
30
- .map((splittedFileType: string) => parseFileType(splittedFileType))
31
- .join(', ');
32
- }
33
-
34
- // If `fileType` contains only `format` or `mime` type, parse the type
35
- return parseFileType(fileType);
36
- });
4
+ fileTypes.map((fileTypeDefinition: string) =>
5
+ fileTypeDefinition
6
+ .split(',')
7
+ .filter((extension) => !extension.includes('/')) // Filter out mime types
8
+ .map((extension) => extension.replace('.', '').toUpperCase()) // Remove dot and convert extensions to uppercase to be displayed in the instructions
9
+ .join(', '),
10
+ );
37
11
 
38
12
  export default getAllowedFileTypes;
@@ -1,166 +0,0 @@
1
- 'use strict';
2
-
3
- var reactIntl = require('react-intl');
4
- var TableCell = require('./TableCell.js');
5
- var TableHeader = require('./TableHeader.js');
6
- var TableRow = require('./TableRow.js');
7
- var Alert = require('../alert/Alert.js');
8
- var Table_messages = require('./Table.messages.js');
9
- var Loader = require('../loader/Loader.js');
10
- require('../common/theme.js');
11
- require('../common/direction.js');
12
- require('../common/propsValues/control.js');
13
- require('../common/propsValues/breakpoint.js');
14
- var size = require('../common/propsValues/size.js');
15
- require('../common/propsValues/typography.js');
16
- require('../common/propsValues/width.js');
17
- require('../common/propsValues/type.js');
18
- require('../common/propsValues/dateMode.js');
19
- require('../common/propsValues/monthFormat.js');
20
- require('../common/propsValues/position.js');
21
- require('../common/propsValues/layouts.js');
22
- require('../common/propsValues/status.js');
23
- var sentiment = require('../common/propsValues/sentiment.js');
24
- require('../common/propsValues/profileType.js');
25
- require('../common/propsValues/variant.js');
26
- require('../common/propsValues/scroll.js');
27
- require('../common/propsValues/markdownNodeType.js');
28
- require('../common/fileType.js');
29
- require('@transferwise/icons');
30
- var clsx = require('clsx');
31
- require('react');
32
- require('../common/closeButton/CloseButton.messages.js');
33
- var jsxRuntime = require('react/jsx-runtime');
34
- var StatusIcon = require('../statusIcon/StatusIcon.js');
35
- var componentsTheming = require('@wise/components-theming');
36
- var Body = require('../body/Body.js');
37
-
38
- const Table = ({
39
- 'aria-labelledby': ariaLabelledBy,
40
- data,
41
- loading,
42
- className,
43
- fullWidth = true,
44
- error
45
- }) => {
46
- const {
47
- formatMessage
48
- } = reactIntl.useIntl();
49
- const {
50
- theme
51
- } = componentsTheming.useTheme();
52
- const isEmptyHeader = loading ?? (data?.headers && !data?.headers.length);
53
- const getRowLength = () => {
54
- const columnsLength = data?.headers?.length ?? 0;
55
- return data?.onRowClick ? columnsLength + 1 : columnsLength;
56
- };
57
- const getTableContent = () => {
58
- if (loading) {
59
- return /*#__PURE__*/jsxRuntime.jsx(TableRow, {
60
- children: /*#__PURE__*/jsxRuntime.jsx(TableCell, {
61
- children: /*#__PURE__*/jsxRuntime.jsx(Loader, {
62
- "data-testid": "np-table-loader"
63
- })
64
- })
65
- });
66
- }
67
- // Shows the `emptyData` message when there is no data to display
68
- if (!data?.rows?.length) {
69
- return /*#__PURE__*/jsxRuntime.jsx(TableRow, {
70
- children: /*#__PURE__*/jsxRuntime.jsx(TableCell, {
71
- colSpan: data?.headers?.length,
72
- children: /*#__PURE__*/jsxRuntime.jsxs("div", {
73
- className: "np-table-empty-data",
74
- "data-testid": "np-table-empty-data",
75
- children: [/*#__PURE__*/jsxRuntime.jsx(StatusIcon, {
76
- sentiment: sentiment.Sentiment.WARNING,
77
- size: size.Size.MEDIUM
78
- }), /*#__PURE__*/jsxRuntime.jsx(Body, {
79
- type: "body-default-bold",
80
- children: formatMessage(Table_messages.emptyData)
81
- })]
82
- })
83
- })
84
- });
85
- }
86
- return data?.rows?.map((rowData, rowIndex) => {
87
- return /*#__PURE__*/jsxRuntime.jsx(TableRow, {
88
- rowData: rowData,
89
- hasSeparator: data?.rows?.length ? data.rows.length - 1 !== rowIndex : false,
90
- onRowClick: data?.onRowClick
91
- }, 'table-row-'.concat(rowIndex.toString()));
92
- });
93
- };
94
- if (error) {
95
- return /*#__PURE__*/jsxRuntime.jsx(Alert.default, {
96
- className: "np-table-error",
97
- message: error.message,
98
- type: sentiment.Sentiment.NEGATIVE,
99
- action: {
100
- href: error?.action?.href ?? '/',
101
- text: error?.action?.text ?? formatMessage(Table_messages.refreshPage)
102
- },
103
- "data-testid": "np-table-error"
104
- });
105
- }
106
- return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
107
- children: [/*#__PURE__*/jsxRuntime.jsx("div", {
108
- "aria-live": "polite",
109
- className: "sr-only",
110
- children: formatMessage(Table_messages[loading ? 'loading' : 'loaded'])
111
- }), /*#__PURE__*/jsxRuntime.jsx("div", {
112
- role: loading ? 'presentation' : 'region',
113
- "aria-labelledby": ariaLabelledBy,
114
- className: clsx.clsx('np-table-outer-container', className, {
115
- 'np-theme-personal': theme === 'bright-green',
116
- 'np-table-outer-container--center': !fullWidth,
117
- 'np-table-outer-container--full-width': fullWidth
118
- })
119
- // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex
120
- ,
121
- tabIndex: 0,
122
- "data-testid": "np-table-outer-container",
123
- children: /*#__PURE__*/jsxRuntime.jsx("div", {
124
- className: clsx.clsx('np-table-container', {
125
- 'np-table-container--loading': loading
126
- }),
127
- "data-testid": "np-table-container",
128
- children: /*#__PURE__*/jsxRuntime.jsx("div", {
129
- className: "np-table-inner-container",
130
- children: /*#__PURE__*/jsxRuntime.jsxs("table", {
131
- className: "np-table",
132
- children: [/*#__PURE__*/jsxRuntime.jsx("thead", {
133
- "aria-hidden": isEmptyHeader,
134
- children: /*#__PURE__*/jsxRuntime.jsxs("tr", {
135
- children: [isEmptyHeader ? /*#__PURE__*/jsxRuntime.jsx(TableHeader, {}) : data?.headers?.map((headerItem, index) => /*#__PURE__*/jsxRuntime.jsx(TableHeader, {
136
- ...headerItem
137
- }, headerItem.header?.concat(index.toString()))), data?.onRowClick && /*#__PURE__*/jsxRuntime.jsx(TableHeader, {
138
- isActionHeader: true
139
- })]
140
- })
141
- }), /*#__PURE__*/jsxRuntime.jsxs("tbody", {
142
- children: [/*#__PURE__*/jsxRuntime.jsx("tr", {
143
- "aria-hidden": "true",
144
- className: "np-table-row np-table-row--cosmetic",
145
- children: /*#__PURE__*/jsxRuntime.jsx("td", {
146
- className: "np-table-cell",
147
- colSpan: getRowLength()
148
- })
149
- }, "first-np-table-row--cosmetic"), getTableContent(), /*#__PURE__*/jsxRuntime.jsx("tr", {
150
- "aria-hidden": "true",
151
- className: "np-table-row np-table-row--cosmetic",
152
- children: /*#__PURE__*/jsxRuntime.jsx("td", {
153
- className: "np-table-cell",
154
- colSpan: getRowLength()
155
- })
156
- }, "last-np-table-row--cosmetic")]
157
- })]
158
- })
159
- })
160
- })
161
- })]
162
- });
163
- };
164
-
165
- module.exports = Table;
166
- //# sourceMappingURL=Table.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Table.js","sources":["../../src/table/Table.tsx"],"sourcesContent":["import { useIntl } from 'react-intl';\nimport TableCell from './TableCell';\nimport TableHeader, { TableHeaderType } from './TableHeader';\nimport TableRow, { TableRowClickableType, TableRowType } from './TableRow';\nimport Alert from '../alert';\n\nimport messages from './Table.messages';\nimport Loader from '../loader';\nimport { Sentiment, Size } from '../common';\nimport StatusIcon from '../statusIcon';\nimport { clsx } from 'clsx';\nimport { useTheme } from '@wise/components-theming';\nimport Body from '../body';\n\nexport interface TableProps {\n 'aria-labelledby'?: string;\n data: {\n headers?: TableHeaderType[];\n rows?: TableRowType[] | TableRowClickableType[];\n onRowClick?: (rowData: TableRowType | TableRowClickableType) => void;\n };\n loading?: boolean;\n className?: string | undefined;\n fullWidth?: boolean;\n error?: {\n message?: string;\n action?: {\n href?: string;\n text?: string;\n };\n };\n}\n\nconst Table = ({\n 'aria-labelledby': ariaLabelledBy,\n data,\n loading,\n className,\n fullWidth = true,\n error,\n}: TableProps) => {\n const { formatMessage } = useIntl();\n const { theme } = useTheme();\n const isEmptyHeader = loading ?? (data?.headers && !data?.headers.length);\n\n const getRowLength = () => {\n const columnsLength = data?.headers?.length ?? 0;\n return data?.onRowClick ? columnsLength + 1 : columnsLength;\n };\n\n const getTableContent = () => {\n if (loading) {\n return (\n <TableRow>\n <TableCell>\n <Loader data-testid=\"np-table-loader\" />\n </TableCell>\n </TableRow>\n );\n }\n\n // Shows the `emptyData` message when there is no data to display\n if (!data?.rows?.length) {\n return (\n <TableRow>\n <TableCell colSpan={data?.headers?.length}>\n <div className=\"np-table-empty-data\" data-testid=\"np-table-empty-data\">\n <StatusIcon sentiment={Sentiment.WARNING} size={Size.MEDIUM} />\n <Body type=\"body-default-bold\">{formatMessage(messages.emptyData)}</Body>\n </div>\n </TableCell>\n </TableRow>\n );\n }\n\n return data?.rows?.map((rowData, rowIndex) => {\n return (\n <TableRow\n key={'table-row-'.concat(rowIndex.toString())}\n rowData={rowData}\n hasSeparator={data?.rows?.length ? data.rows.length - 1 !== rowIndex : false}\n onRowClick={data?.onRowClick}\n />\n );\n });\n };\n\n if (error) {\n return (\n <Alert\n className=\"np-table-error\"\n message={error.message}\n type={Sentiment.NEGATIVE}\n action={{\n href: error?.action?.href ?? '/',\n text: error?.action?.text ?? formatMessage(messages.refreshPage),\n }}\n data-testid=\"np-table-error\"\n />\n );\n }\n\n return (\n <>\n <div aria-live=\"polite\" className=\"sr-only\">\n {formatMessage(messages[loading ? 'loading' : 'loaded'])}\n </div>\n <div\n role={loading ? 'presentation' : 'region'}\n aria-labelledby={ariaLabelledBy}\n className={clsx('np-table-outer-container', className, {\n 'np-theme-personal': theme === 'bright-green',\n 'np-table-outer-container--center': !fullWidth,\n 'np-table-outer-container--full-width': fullWidth,\n })}\n // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n tabIndex={0}\n data-testid=\"np-table-outer-container\"\n >\n <div\n className={clsx('np-table-container', {\n 'np-table-container--loading': loading,\n })}\n data-testid=\"np-table-container\"\n >\n <div className=\"np-table-inner-container\">\n <table className=\"np-table\">\n <thead aria-hidden={isEmptyHeader}>\n <tr>\n {isEmptyHeader ? (\n <TableHeader />\n ) : (\n data?.headers?.map((headerItem: TableHeaderType, index) => (\n <TableHeader\n key={headerItem.header?.concat(index.toString())}\n {...headerItem}\n />\n ))\n )}\n {data?.onRowClick && <TableHeader isActionHeader />}\n </tr>\n </thead>\n <tbody>\n <tr\n key=\"first-np-table-row--cosmetic\"\n aria-hidden=\"true\"\n className=\"np-table-row np-table-row--cosmetic\"\n >\n <td className=\"np-table-cell\" colSpan={getRowLength()} />\n </tr>\n {getTableContent()}\n <tr\n key=\"last-np-table-row--cosmetic\"\n aria-hidden=\"true\"\n className=\"np-table-row np-table-row--cosmetic\"\n >\n <td className=\"np-table-cell\" colSpan={getRowLength()} />\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n </div>\n </>\n );\n};\n\nexport default Table;\n"],"names":["Table","ariaLabelledBy","data","loading","className","fullWidth","error","formatMessage","useIntl","theme","useTheme","isEmptyHeader","headers","length","getRowLength","columnsLength","onRowClick","getTableContent","_jsx","TableRow","children","TableCell","Loader","rows","colSpan","_jsxs","StatusIcon","sentiment","Sentiment","WARNING","size","Size","MEDIUM","Body","type","messages","emptyData","map","rowData","rowIndex","hasSeparator","concat","toString","Alert","message","NEGATIVE","action","href","text","refreshPage","_Fragment","role","clsx","tabIndex","TableHeader","headerItem","index","header","isActionHeader"],"mappings":"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"}
@@ -1,24 +0,0 @@
1
- 'use strict';
2
-
3
- var reactIntl = require('react-intl');
4
-
5
- var messages = reactIntl.defineMessages({
6
- loading: {
7
- id: "neptune.Table.loading"
8
- },
9
- loaded: {
10
- id: "neptune.Table.loaded"
11
- },
12
- emptyData: {
13
- id: "neptune.Table.emptyData"
14
- },
15
- refreshPage: {
16
- id: "neptune.Table.refreshPage"
17
- },
18
- actionHeader: {
19
- id: "neptune.Table.actionHeader"
20
- }
21
- });
22
-
23
- module.exports = messages;
24
- //# sourceMappingURL=Table.messages.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Table.messages.js","sources":["../../src/table/Table.messages.ts"],"sourcesContent":["import { defineMessages } from 'react-intl';\n\nexport default defineMessages({\n loading: {\n id: 'neptune.Table.loading',\n defaultMessage: 'Table data is loading',\n },\n loaded: {\n id: 'neptune.Table.loaded',\n defaultMessage: 'Table data has loaded',\n },\n emptyData: {\n id: 'neptune.Table.emptyData',\n defaultMessage: 'No results found',\n },\n refreshPage: {\n id: 'neptune.Table.refreshPage',\n defaultMessage: 'Refresh page',\n },\n actionHeader: {\n id: 'neptune.Table.actionHeader',\n defaultMessage: 'Action',\n },\n});\n"],"names":["defineMessages","loading","id","loaded","emptyData","refreshPage","actionHeader"],"mappings":";;;;AAEA,eAAeA,wBAAc,CAAC;AAC5BC,EAAAA,OAAO,EAAE;IACPC,EAAE,EAAA,uBAAA;GAEH;AACDC,EAAAA,MAAM,EAAE;IACND,EAAE,EAAA,sBAAA;GAEH;AACDE,EAAAA,SAAS,EAAE;IACTF,EAAE,EAAA,yBAAA;GAEH;AACDG,EAAAA,WAAW,EAAE;IACXH,EAAE,EAAA,2BAAA;GAEH;AACDI,EAAAA,YAAY,EAAE;IACZJ,EAAE,EAAA,4BAAA;AAEH,GAAA;AACF,CAAA,CAAC;;;;"}
@@ -1,22 +0,0 @@
1
- import { defineMessages } from 'react-intl';
2
-
3
- var messages = defineMessages({
4
- loading: {
5
- id: "neptune.Table.loading"
6
- },
7
- loaded: {
8
- id: "neptune.Table.loaded"
9
- },
10
- emptyData: {
11
- id: "neptune.Table.emptyData"
12
- },
13
- refreshPage: {
14
- id: "neptune.Table.refreshPage"
15
- },
16
- actionHeader: {
17
- id: "neptune.Table.actionHeader"
18
- }
19
- });
20
-
21
- export { messages as default };
22
- //# sourceMappingURL=Table.messages.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Table.messages.mjs","sources":["../../src/table/Table.messages.ts"],"sourcesContent":["import { defineMessages } from 'react-intl';\n\nexport default defineMessages({\n loading: {\n id: 'neptune.Table.loading',\n defaultMessage: 'Table data is loading',\n },\n loaded: {\n id: 'neptune.Table.loaded',\n defaultMessage: 'Table data has loaded',\n },\n emptyData: {\n id: 'neptune.Table.emptyData',\n defaultMessage: 'No results found',\n },\n refreshPage: {\n id: 'neptune.Table.refreshPage',\n defaultMessage: 'Refresh page',\n },\n actionHeader: {\n id: 'neptune.Table.actionHeader',\n defaultMessage: 'Action',\n },\n});\n"],"names":["defineMessages","loading","id","loaded","emptyData","refreshPage","actionHeader"],"mappings":";;AAEA,eAAeA,cAAc,CAAC;AAC5BC,EAAAA,OAAO,EAAE;IACPC,EAAE,EAAA,uBAAA;GAEH;AACDC,EAAAA,MAAM,EAAE;IACND,EAAE,EAAA,sBAAA;GAEH;AACDE,EAAAA,SAAS,EAAE;IACTF,EAAE,EAAA,yBAAA;GAEH;AACDG,EAAAA,WAAW,EAAE;IACXH,EAAE,EAAA,2BAAA;GAEH;AACDI,EAAAA,YAAY,EAAE;IACZJ,EAAE,EAAA,4BAAA;AAEH,GAAA;AACF,CAAA,CAAC;;;;"}
@@ -1,164 +0,0 @@
1
- import { useIntl } from 'react-intl';
2
- import TableCell from './TableCell.mjs';
3
- import TableHeader from './TableHeader.mjs';
4
- import TableRow from './TableRow.mjs';
5
- import Alert from '../alert/Alert.mjs';
6
- import messages from './Table.messages.mjs';
7
- import Loader from '../loader/Loader.mjs';
8
- import '../common/theme.mjs';
9
- import '../common/direction.mjs';
10
- import '../common/propsValues/control.mjs';
11
- import '../common/propsValues/breakpoint.mjs';
12
- import { Size } from '../common/propsValues/size.mjs';
13
- import '../common/propsValues/typography.mjs';
14
- import '../common/propsValues/width.mjs';
15
- import '../common/propsValues/type.mjs';
16
- import '../common/propsValues/dateMode.mjs';
17
- import '../common/propsValues/monthFormat.mjs';
18
- import '../common/propsValues/position.mjs';
19
- import '../common/propsValues/layouts.mjs';
20
- import '../common/propsValues/status.mjs';
21
- import { Sentiment } from '../common/propsValues/sentiment.mjs';
22
- import '../common/propsValues/profileType.mjs';
23
- import '../common/propsValues/variant.mjs';
24
- import '../common/propsValues/scroll.mjs';
25
- import '../common/propsValues/markdownNodeType.mjs';
26
- import '../common/fileType.mjs';
27
- import '@transferwise/icons';
28
- import { clsx } from 'clsx';
29
- import 'react';
30
- import '../common/closeButton/CloseButton.messages.mjs';
31
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
32
- import StatusIcon from '../statusIcon/StatusIcon.mjs';
33
- import { useTheme } from '@wise/components-theming';
34
- import Body from '../body/Body.mjs';
35
-
36
- const Table = ({
37
- 'aria-labelledby': ariaLabelledBy,
38
- data,
39
- loading,
40
- className,
41
- fullWidth = true,
42
- error
43
- }) => {
44
- const {
45
- formatMessage
46
- } = useIntl();
47
- const {
48
- theme
49
- } = useTheme();
50
- const isEmptyHeader = loading ?? (data?.headers && !data?.headers.length);
51
- const getRowLength = () => {
52
- const columnsLength = data?.headers?.length ?? 0;
53
- return data?.onRowClick ? columnsLength + 1 : columnsLength;
54
- };
55
- const getTableContent = () => {
56
- if (loading) {
57
- return /*#__PURE__*/jsx(TableRow, {
58
- children: /*#__PURE__*/jsx(TableCell, {
59
- children: /*#__PURE__*/jsx(Loader, {
60
- "data-testid": "np-table-loader"
61
- })
62
- })
63
- });
64
- }
65
- // Shows the `emptyData` message when there is no data to display
66
- if (!data?.rows?.length) {
67
- return /*#__PURE__*/jsx(TableRow, {
68
- children: /*#__PURE__*/jsx(TableCell, {
69
- colSpan: data?.headers?.length,
70
- children: /*#__PURE__*/jsxs("div", {
71
- className: "np-table-empty-data",
72
- "data-testid": "np-table-empty-data",
73
- children: [/*#__PURE__*/jsx(StatusIcon, {
74
- sentiment: Sentiment.WARNING,
75
- size: Size.MEDIUM
76
- }), /*#__PURE__*/jsx(Body, {
77
- type: "body-default-bold",
78
- children: formatMessage(messages.emptyData)
79
- })]
80
- })
81
- })
82
- });
83
- }
84
- return data?.rows?.map((rowData, rowIndex) => {
85
- return /*#__PURE__*/jsx(TableRow, {
86
- rowData: rowData,
87
- hasSeparator: data?.rows?.length ? data.rows.length - 1 !== rowIndex : false,
88
- onRowClick: data?.onRowClick
89
- }, 'table-row-'.concat(rowIndex.toString()));
90
- });
91
- };
92
- if (error) {
93
- return /*#__PURE__*/jsx(Alert, {
94
- className: "np-table-error",
95
- message: error.message,
96
- type: Sentiment.NEGATIVE,
97
- action: {
98
- href: error?.action?.href ?? '/',
99
- text: error?.action?.text ?? formatMessage(messages.refreshPage)
100
- },
101
- "data-testid": "np-table-error"
102
- });
103
- }
104
- return /*#__PURE__*/jsxs(Fragment, {
105
- children: [/*#__PURE__*/jsx("div", {
106
- "aria-live": "polite",
107
- className: "sr-only",
108
- children: formatMessage(messages[loading ? 'loading' : 'loaded'])
109
- }), /*#__PURE__*/jsx("div", {
110
- role: loading ? 'presentation' : 'region',
111
- "aria-labelledby": ariaLabelledBy,
112
- className: clsx('np-table-outer-container', className, {
113
- 'np-theme-personal': theme === 'bright-green',
114
- 'np-table-outer-container--center': !fullWidth,
115
- 'np-table-outer-container--full-width': fullWidth
116
- })
117
- // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex
118
- ,
119
- tabIndex: 0,
120
- "data-testid": "np-table-outer-container",
121
- children: /*#__PURE__*/jsx("div", {
122
- className: clsx('np-table-container', {
123
- 'np-table-container--loading': loading
124
- }),
125
- "data-testid": "np-table-container",
126
- children: /*#__PURE__*/jsx("div", {
127
- className: "np-table-inner-container",
128
- children: /*#__PURE__*/jsxs("table", {
129
- className: "np-table",
130
- children: [/*#__PURE__*/jsx("thead", {
131
- "aria-hidden": isEmptyHeader,
132
- children: /*#__PURE__*/jsxs("tr", {
133
- children: [isEmptyHeader ? /*#__PURE__*/jsx(TableHeader, {}) : data?.headers?.map((headerItem, index) => /*#__PURE__*/jsx(TableHeader, {
134
- ...headerItem
135
- }, headerItem.header?.concat(index.toString()))), data?.onRowClick && /*#__PURE__*/jsx(TableHeader, {
136
- isActionHeader: true
137
- })]
138
- })
139
- }), /*#__PURE__*/jsxs("tbody", {
140
- children: [/*#__PURE__*/jsx("tr", {
141
- "aria-hidden": "true",
142
- className: "np-table-row np-table-row--cosmetic",
143
- children: /*#__PURE__*/jsx("td", {
144
- className: "np-table-cell",
145
- colSpan: getRowLength()
146
- })
147
- }, "first-np-table-row--cosmetic"), getTableContent(), /*#__PURE__*/jsx("tr", {
148
- "aria-hidden": "true",
149
- className: "np-table-row np-table-row--cosmetic",
150
- children: /*#__PURE__*/jsx("td", {
151
- className: "np-table-cell",
152
- colSpan: getRowLength()
153
- })
154
- }, "last-np-table-row--cosmetic")]
155
- })]
156
- })
157
- })
158
- })
159
- })]
160
- });
161
- };
162
-
163
- export { Table as default };
164
- //# sourceMappingURL=Table.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Table.mjs","sources":["../../src/table/Table.tsx"],"sourcesContent":["import { useIntl } from 'react-intl';\nimport TableCell from './TableCell';\nimport TableHeader, { TableHeaderType } from './TableHeader';\nimport TableRow, { TableRowClickableType, TableRowType } from './TableRow';\nimport Alert from '../alert';\n\nimport messages from './Table.messages';\nimport Loader from '../loader';\nimport { Sentiment, Size } from '../common';\nimport StatusIcon from '../statusIcon';\nimport { clsx } from 'clsx';\nimport { useTheme } from '@wise/components-theming';\nimport Body from '../body';\n\nexport interface TableProps {\n 'aria-labelledby'?: string;\n data: {\n headers?: TableHeaderType[];\n rows?: TableRowType[] | TableRowClickableType[];\n onRowClick?: (rowData: TableRowType | TableRowClickableType) => void;\n };\n loading?: boolean;\n className?: string | undefined;\n fullWidth?: boolean;\n error?: {\n message?: string;\n action?: {\n href?: string;\n text?: string;\n };\n };\n}\n\nconst Table = ({\n 'aria-labelledby': ariaLabelledBy,\n data,\n loading,\n className,\n fullWidth = true,\n error,\n}: TableProps) => {\n const { formatMessage } = useIntl();\n const { theme } = useTheme();\n const isEmptyHeader = loading ?? (data?.headers && !data?.headers.length);\n\n const getRowLength = () => {\n const columnsLength = data?.headers?.length ?? 0;\n return data?.onRowClick ? columnsLength + 1 : columnsLength;\n };\n\n const getTableContent = () => {\n if (loading) {\n return (\n <TableRow>\n <TableCell>\n <Loader data-testid=\"np-table-loader\" />\n </TableCell>\n </TableRow>\n );\n }\n\n // Shows the `emptyData` message when there is no data to display\n if (!data?.rows?.length) {\n return (\n <TableRow>\n <TableCell colSpan={data?.headers?.length}>\n <div className=\"np-table-empty-data\" data-testid=\"np-table-empty-data\">\n <StatusIcon sentiment={Sentiment.WARNING} size={Size.MEDIUM} />\n <Body type=\"body-default-bold\">{formatMessage(messages.emptyData)}</Body>\n </div>\n </TableCell>\n </TableRow>\n );\n }\n\n return data?.rows?.map((rowData, rowIndex) => {\n return (\n <TableRow\n key={'table-row-'.concat(rowIndex.toString())}\n rowData={rowData}\n hasSeparator={data?.rows?.length ? data.rows.length - 1 !== rowIndex : false}\n onRowClick={data?.onRowClick}\n />\n );\n });\n };\n\n if (error) {\n return (\n <Alert\n className=\"np-table-error\"\n message={error.message}\n type={Sentiment.NEGATIVE}\n action={{\n href: error?.action?.href ?? '/',\n text: error?.action?.text ?? formatMessage(messages.refreshPage),\n }}\n data-testid=\"np-table-error\"\n />\n );\n }\n\n return (\n <>\n <div aria-live=\"polite\" className=\"sr-only\">\n {formatMessage(messages[loading ? 'loading' : 'loaded'])}\n </div>\n <div\n role={loading ? 'presentation' : 'region'}\n aria-labelledby={ariaLabelledBy}\n className={clsx('np-table-outer-container', className, {\n 'np-theme-personal': theme === 'bright-green',\n 'np-table-outer-container--center': !fullWidth,\n 'np-table-outer-container--full-width': fullWidth,\n })}\n // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n tabIndex={0}\n data-testid=\"np-table-outer-container\"\n >\n <div\n className={clsx('np-table-container', {\n 'np-table-container--loading': loading,\n })}\n data-testid=\"np-table-container\"\n >\n <div className=\"np-table-inner-container\">\n <table className=\"np-table\">\n <thead aria-hidden={isEmptyHeader}>\n <tr>\n {isEmptyHeader ? (\n <TableHeader />\n ) : (\n data?.headers?.map((headerItem: TableHeaderType, index) => (\n <TableHeader\n key={headerItem.header?.concat(index.toString())}\n {...headerItem}\n />\n ))\n )}\n {data?.onRowClick && <TableHeader isActionHeader />}\n </tr>\n </thead>\n <tbody>\n <tr\n key=\"first-np-table-row--cosmetic\"\n aria-hidden=\"true\"\n className=\"np-table-row np-table-row--cosmetic\"\n >\n <td className=\"np-table-cell\" colSpan={getRowLength()} />\n </tr>\n {getTableContent()}\n <tr\n key=\"last-np-table-row--cosmetic\"\n aria-hidden=\"true\"\n className=\"np-table-row np-table-row--cosmetic\"\n >\n <td className=\"np-table-cell\" colSpan={getRowLength()} />\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n </div>\n </>\n );\n};\n\nexport default Table;\n"],"names":["Table","ariaLabelledBy","data","loading","className","fullWidth","error","formatMessage","useIntl","theme","useTheme","isEmptyHeader","headers","length","getRowLength","columnsLength","onRowClick","getTableContent","_jsx","TableRow","children","TableCell","Loader","rows","colSpan","_jsxs","StatusIcon","sentiment","Sentiment","WARNING","size","Size","MEDIUM","Body","type","messages","emptyData","map","rowData","rowIndex","hasSeparator","concat","toString","Alert","message","NEGATIVE","action","href","text","refreshPage","_Fragment","role","clsx","tabIndex","TableHeader","headerItem","index","header","isActionHeader"],"mappings":"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"}
@@ -1,86 +0,0 @@
1
- 'use strict';
2
-
3
- var TableStatusText = require('./TableStatusText.js');
4
- var StatusIcon = require('../statusIcon/StatusIcon.js');
5
- var art = require('@wise/art');
6
- require('react');
7
- var clsx = require('clsx');
8
- var Body = require('../body/Body.js');
9
- var Money = require('../money/Money.js');
10
- var AvatarView = require('../avatarView/AvatarView.js');
11
- var jsxRuntime = require('react/jsx-runtime');
12
-
13
- const TableCell = ({
14
- cell,
15
- alignment = 'left',
16
- className,
17
- colSpan,
18
- children
19
- }) => {
20
- const getContentMedia = () => {
21
- let mediaContent = null;
22
- if (cell?.type === 'leading' && (cell?.avatar?.src || cell?.avatar?.profileName)) {
23
- mediaContent = /*#__PURE__*/jsxRuntime.jsx(AvatarView, {
24
- profileName: cell?.avatar?.profileName,
25
- size: 40,
26
- imgSrc: cell?.avatar?.src
27
- });
28
- }
29
- if (cell?.type === 'currency' && cell?.primaryCurrency?.currency) {
30
- mediaContent = /*#__PURE__*/jsxRuntime.jsx(art.Flag, {
31
- code: cell?.primaryCurrency?.currency?.toLowerCase(),
32
- intrinsicSize: 24
33
- });
34
- }
35
- if (cell?.type === 'status') {
36
- mediaContent = /*#__PURE__*/jsxRuntime.jsx(StatusIcon, {
37
- size: 24,
38
- sentiment: cell?.sentiment ?? 'neutral'
39
- });
40
- }
41
- if (mediaContent) {
42
- return /*#__PURE__*/jsxRuntime.jsx("div", {
43
- "aria-hidden": "true",
44
- className: "np-table-content-media",
45
- "data-testid": "np-table-content-media",
46
- children: mediaContent
47
- });
48
- }
49
- };
50
- const formatCurrencyValue = currency => {
51
- if (currency) {
52
- return /*#__PURE__*/jsxRuntime.jsx(Money, {
53
- amount: currency.amount,
54
- currency: currency.currency,
55
- alwaysShowDecimals: true
56
- });
57
- }
58
- return '';
59
- };
60
- return /*#__PURE__*/jsxRuntime.jsxs("td", {
61
- className: clsx.clsx('np-table-cell', cell?.type ? `np-table-cell--${cell?.type}` : '', `np-table-cell--${alignment}`, className),
62
- colSpan: colSpan,
63
- children: [cell?.type === 'text' && cell?.text && /*#__PURE__*/jsxRuntime.jsx(TableStatusText, {
64
- text: cell?.text,
65
- status: cell?.status
66
- }), cell?.type && ['leading', 'currency', 'status'].includes(cell?.type) && /*#__PURE__*/jsxRuntime.jsxs("div", {
67
- className: clsx.clsx('np-table-content', {
68
- 'np-table-content--reversed': alignment === 'right'
69
- }),
70
- "data-testid": "np-table-content",
71
- children: [getContentMedia(), /*#__PURE__*/jsxRuntime.jsxs("div", {
72
- className: "np-table-content-body",
73
- children: [(cell?.primaryCurrency ?? cell?.primaryText) && /*#__PURE__*/jsxRuntime.jsx(TableStatusText, {
74
- text: cell?.type === 'currency' ? formatCurrencyValue(cell?.primaryCurrency) : cell?.primaryText ?? '',
75
- status: cell?.type !== 'status' ? cell?.status : undefined,
76
- typography: "default-bold"
77
- }), (cell?.secondaryCurrency ?? cell?.secondaryText) && /*#__PURE__*/jsxRuntime.jsx(Body, {
78
- children: cell?.type === 'currency' ? formatCurrencyValue(cell?.secondaryCurrency) : cell?.secondaryText
79
- })]
80
- })]
81
- }), children]
82
- });
83
- };
84
-
85
- module.exports = TableCell;
86
- //# sourceMappingURL=TableCell.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TableCell.js","sources":["../../src/table/TableCell.tsx"],"sourcesContent":["import TableStatusText from './TableStatusText';\nimport StatusIcon from '../statusIcon';\nimport { Flag } from '@wise/art';\nimport React from 'react';\nimport { clsx } from 'clsx';\nimport Body from '../body';\nimport Money, { MoneyProps } from '../money';\nimport AvatarView from '../avatarView';\n\ninterface TableCellTypeProp {\n type: 'leading' | 'text' | 'currency' | 'status';\n}\n\n// `Leading` and `Status` cell types have 2 text fields: `primaryText` and `secondaryText`\ninterface TableCellTextProps {\n primaryText?: string;\n secondaryText?: string;\n}\n\n// `Leading`, `Text` and `Currency` cells' types can have a status indicator with `error` or `success` values\ninterface TableCellStatusProp {\n status?: 'error' | 'success';\n}\n\nexport interface TableCellLeading\n extends TableCellTypeProp,\n TableCellTextProps,\n TableCellStatusProp {\n avatar?: {\n src?: string;\n profileName?: string | null;\n };\n}\n\nexport interface TableCellText extends TableCellTypeProp, TableCellStatusProp {\n text?: string;\n}\n\nexport interface TableCellCurrency extends TableCellTypeProp, TableCellStatusProp {\n primaryCurrency?: MoneyProps;\n secondaryCurrency?: MoneyProps;\n}\n\nexport interface TableCellStatus extends TableCellTypeProp, TableCellTextProps {\n sentiment?: 'negative' | 'neutral' | 'positive' | 'warning' | 'pending';\n}\n\nexport interface TableCellType {\n cell?: TableCellLeading & TableCellText & TableCellCurrency & TableCellStatus;\n alignment?: 'left' | 'right';\n}\n\n// These properties should be exported only on the lib level to prevent visual issues because of incorrect usage.\nexport interface TableCellProps extends TableCellType {\n className?: string;\n colSpan?: number;\n children?: React.ReactNode;\n}\n\nconst TableCell = ({ cell, alignment = 'left', className, colSpan, children }: TableCellProps) => {\n const getContentMedia = () => {\n let mediaContent = null;\n\n if (cell?.type === 'leading' && (cell?.avatar?.src || cell?.avatar?.profileName)) {\n mediaContent = (\n <AvatarView profileName={cell?.avatar?.profileName} size={40} imgSrc={cell?.avatar?.src} />\n );\n }\n\n if (cell?.type === 'currency' && cell?.primaryCurrency?.currency) {\n mediaContent = (\n <Flag code={cell?.primaryCurrency?.currency?.toLowerCase()} intrinsicSize={24} />\n );\n }\n\n if (cell?.type === 'status') {\n mediaContent = <StatusIcon size={24} sentiment={cell?.sentiment ?? 'neutral'} />;\n }\n\n if (mediaContent) {\n return (\n <div\n aria-hidden=\"true\"\n className=\"np-table-content-media\"\n data-testid=\"np-table-content-media\"\n >\n {mediaContent}\n </div>\n );\n }\n };\n\n const formatCurrencyValue = (currency?: MoneyProps) => {\n if (currency) {\n return <Money amount={currency.amount} currency={currency.currency} alwaysShowDecimals />;\n }\n\n return '';\n };\n\n return (\n <td\n className={clsx(\n 'np-table-cell',\n cell?.type ? `np-table-cell--${cell?.type}` : '',\n `np-table-cell--${alignment}`,\n className,\n )}\n colSpan={colSpan}\n >\n {cell?.type === 'text' && cell?.text && (\n <TableStatusText text={cell?.text} status={cell?.status} />\n )}\n {cell?.type && ['leading', 'currency', 'status'].includes(cell?.type) && (\n <div\n className={clsx('np-table-content', {\n 'np-table-content--reversed': alignment === 'right',\n })}\n data-testid=\"np-table-content\"\n >\n {getContentMedia()}\n <div className=\"np-table-content-body\">\n {(cell?.primaryCurrency ?? cell?.primaryText) && (\n <TableStatusText\n text={\n cell?.type === 'currency'\n ? formatCurrencyValue(cell?.primaryCurrency)\n : (cell?.primaryText ?? '')\n }\n status={cell?.type !== 'status' ? cell?.status : undefined}\n typography=\"default-bold\"\n />\n )}\n {(cell?.secondaryCurrency ?? cell?.secondaryText) && (\n <Body>\n {cell?.type === 'currency'\n ? formatCurrencyValue(cell?.secondaryCurrency)\n : cell?.secondaryText}\n </Body>\n )}\n </div>\n </div>\n )}\n {children}\n </td>\n );\n};\n\nexport default TableCell;\n"],"names":["TableCell","cell","alignment","className","colSpan","children","getContentMedia","mediaContent","type","avatar","src","profileName","_jsx","AvatarView","size","imgSrc","primaryCurrency","currency","Flag","code","toLowerCase","intrinsicSize","StatusIcon","sentiment","formatCurrencyValue","Money","amount","alwaysShowDecimals","_jsxs","clsx","text","TableStatusText","status","includes","primaryText","undefined","typography","secondaryCurrency","secondaryText","Body"],"mappings":"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"}