@transferwise/components 46.113.1 → 46.114.1

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 (126) hide show
  1. package/build/common/hooks/useVirtualKeyboard.js +4 -3
  2. package/build/common/hooks/useVirtualKeyboard.js.map +1 -1
  3. package/build/common/hooks/useVirtualKeyboard.mjs +4 -3
  4. package/build/common/hooks/useVirtualKeyboard.mjs.map +1 -1
  5. package/build/i18n/cs.json +2 -0
  6. package/build/i18n/cs.json.js +2 -0
  7. package/build/i18n/cs.json.js.map +1 -1
  8. package/build/i18n/cs.json.mjs +2 -0
  9. package/build/i18n/cs.json.mjs.map +1 -1
  10. package/build/i18n/de.json +2 -0
  11. package/build/i18n/de.json.js +2 -0
  12. package/build/i18n/de.json.js.map +1 -1
  13. package/build/i18n/de.json.mjs +2 -0
  14. package/build/i18n/de.json.mjs.map +1 -1
  15. package/build/i18n/es.json +2 -0
  16. package/build/i18n/es.json.js +2 -0
  17. package/build/i18n/es.json.js.map +1 -1
  18. package/build/i18n/es.json.mjs +2 -0
  19. package/build/i18n/es.json.mjs.map +1 -1
  20. package/build/i18n/fr.json +2 -0
  21. package/build/i18n/fr.json.js +2 -0
  22. package/build/i18n/fr.json.js.map +1 -1
  23. package/build/i18n/fr.json.mjs +2 -0
  24. package/build/i18n/fr.json.mjs.map +1 -1
  25. package/build/i18n/hu.json +2 -0
  26. package/build/i18n/hu.json.js +2 -0
  27. package/build/i18n/hu.json.js.map +1 -1
  28. package/build/i18n/hu.json.mjs +2 -0
  29. package/build/i18n/hu.json.mjs.map +1 -1
  30. package/build/i18n/id.json +2 -0
  31. package/build/i18n/id.json.js +2 -0
  32. package/build/i18n/id.json.js.map +1 -1
  33. package/build/i18n/id.json.mjs +2 -0
  34. package/build/i18n/id.json.mjs.map +1 -1
  35. package/build/i18n/it.json +2 -0
  36. package/build/i18n/it.json.js +2 -0
  37. package/build/i18n/it.json.js.map +1 -1
  38. package/build/i18n/it.json.mjs +2 -0
  39. package/build/i18n/it.json.mjs.map +1 -1
  40. package/build/i18n/ja.json +2 -0
  41. package/build/i18n/ja.json.js +2 -0
  42. package/build/i18n/ja.json.js.map +1 -1
  43. package/build/i18n/ja.json.mjs +2 -0
  44. package/build/i18n/ja.json.mjs.map +1 -1
  45. package/build/i18n/nl.json +2 -0
  46. package/build/i18n/nl.json.js +2 -0
  47. package/build/i18n/nl.json.js.map +1 -1
  48. package/build/i18n/nl.json.mjs +2 -0
  49. package/build/i18n/nl.json.mjs.map +1 -1
  50. package/build/i18n/pl.json +2 -0
  51. package/build/i18n/pl.json.js +2 -0
  52. package/build/i18n/pl.json.js.map +1 -1
  53. package/build/i18n/pl.json.mjs +2 -0
  54. package/build/i18n/pl.json.mjs.map +1 -1
  55. package/build/i18n/pt.json +2 -0
  56. package/build/i18n/pt.json.js +2 -0
  57. package/build/i18n/pt.json.js.map +1 -1
  58. package/build/i18n/pt.json.mjs +2 -0
  59. package/build/i18n/pt.json.mjs.map +1 -1
  60. package/build/i18n/ro.json +2 -0
  61. package/build/i18n/ro.json.js +2 -0
  62. package/build/i18n/ro.json.js.map +1 -1
  63. package/build/i18n/ro.json.mjs +2 -0
  64. package/build/i18n/ro.json.mjs.map +1 -1
  65. package/build/i18n/ru.json +2 -0
  66. package/build/i18n/ru.json.js +2 -0
  67. package/build/i18n/ru.json.js.map +1 -1
  68. package/build/i18n/ru.json.mjs +2 -0
  69. package/build/i18n/ru.json.mjs.map +1 -1
  70. package/build/i18n/th.json +2 -0
  71. package/build/i18n/th.json.js +2 -0
  72. package/build/i18n/th.json.js.map +1 -1
  73. package/build/i18n/th.json.mjs +2 -0
  74. package/build/i18n/th.json.mjs.map +1 -1
  75. package/build/i18n/tr.json +2 -0
  76. package/build/i18n/tr.json.js +2 -0
  77. package/build/i18n/tr.json.js.map +1 -1
  78. package/build/i18n/tr.json.mjs +2 -0
  79. package/build/i18n/tr.json.mjs.map +1 -1
  80. package/build/i18n/zh-CN.json +2 -0
  81. package/build/i18n/zh-CN.json.js +2 -0
  82. package/build/i18n/zh-CN.json.js.map +1 -1
  83. package/build/i18n/zh-CN.json.mjs +2 -0
  84. package/build/i18n/zh-CN.json.mjs.map +1 -1
  85. package/build/i18n/zh-HK.json +2 -0
  86. package/build/i18n/zh-HK.json.js +2 -0
  87. package/build/i18n/zh-HK.json.js.map +1 -1
  88. package/build/i18n/zh-HK.json.mjs +2 -0
  89. package/build/i18n/zh-HK.json.mjs.map +1 -1
  90. package/build/inputs/_BottomSheet.js +1 -1
  91. package/build/inputs/_BottomSheet.js.map +1 -1
  92. package/build/inputs/_BottomSheet.mjs +1 -1
  93. package/build/inputs/_BottomSheet.mjs.map +1 -1
  94. package/build/table/TableCell.js +5 -4
  95. package/build/table/TableCell.js.map +1 -1
  96. package/build/table/TableCell.mjs +5 -4
  97. package/build/table/TableCell.mjs.map +1 -1
  98. package/build/types/common/hooks/useVirtualKeyboard.d.ts +2 -1
  99. package/build/types/common/hooks/useVirtualKeyboard.d.ts.map +1 -1
  100. package/build/types/table/TableCell.d.ts +6 -3
  101. package/build/types/table/TableCell.d.ts.map +1 -1
  102. package/package.json +5 -5
  103. package/src/common/hooks/useVirtualKeyboard.ts +4 -3
  104. package/src/i18n/cs.json +2 -0
  105. package/src/i18n/de.json +2 -0
  106. package/src/i18n/es.json +2 -0
  107. package/src/i18n/fr.json +2 -0
  108. package/src/i18n/hu.json +2 -0
  109. package/src/i18n/id.json +2 -0
  110. package/src/i18n/it.json +2 -0
  111. package/src/i18n/ja.json +2 -0
  112. package/src/i18n/nl.json +2 -0
  113. package/src/i18n/pl.json +2 -0
  114. package/src/i18n/pt.json +2 -0
  115. package/src/i18n/ro.json +2 -0
  116. package/src/i18n/ru.json +2 -0
  117. package/src/i18n/th.json +2 -0
  118. package/src/i18n/tr.json +2 -0
  119. package/src/i18n/zh-CN.json +2 -0
  120. package/src/i18n/zh-HK.json +2 -0
  121. package/src/inputs/_BottomSheet.tsx +1 -1
  122. package/src/provider/theme/ThemeProvider.story.tsx +23 -0
  123. package/src/table/Table.spec.tsx +0 -1
  124. package/src/table/Table.story.tsx +12 -1
  125. package/src/table/TableCell.spec.tsx +2 -2
  126. package/src/table/TableCell.tsx +11 -7
package/src/i18n/hu.json CHANGED
@@ -16,6 +16,8 @@
16
16
  "neptune.DateLookup.selected": "kiválasztva",
17
17
  "neptune.DateLookup.twentyYears": "20 év",
18
18
  "neptune.DateLookup.year": "év",
19
+ "neptune.ExpressiveMoneyInput.currency.search.placeholder": "Írj be egy pénznemet/országot",
20
+ "neptune.ExpressiveMoneyInput.currency.select.currency": "Pénznem kiválasztása",
19
21
  "neptune.FlowNavigation.back": "vissza az előző lépéshez",
20
22
  "neptune.Info.ariaLabel": "További információ",
21
23
  "neptune.Label.optional": "(Válaszható)",
package/src/i18n/id.json CHANGED
@@ -16,6 +16,8 @@
16
16
  "neptune.DateLookup.selected": "terpilih",
17
17
  "neptune.DateLookup.twentyYears": "20 tahun",
18
18
  "neptune.DateLookup.year": "tahun",
19
+ "neptune.ExpressiveMoneyInput.currency.search.placeholder": "Ketik mata uang/negara",
20
+ "neptune.ExpressiveMoneyInput.currency.select.currency": "Pilih mata uang",
19
21
  "neptune.FlowNavigation.back": "kembali ke langkah sebelumnya",
20
22
  "neptune.Info.ariaLabel": "Informasi lebih lanjut",
21
23
  "neptune.Label.optional": "(Opsional)",
package/src/i18n/it.json CHANGED
@@ -16,6 +16,8 @@
16
16
  "neptune.DateLookup.selected": "selezionata",
17
17
  "neptune.DateLookup.twentyYears": "20 anni",
18
18
  "neptune.DateLookup.year": "anno",
19
+ "neptune.ExpressiveMoneyInput.currency.search.placeholder": "Digita una valuta / paese",
20
+ "neptune.ExpressiveMoneyInput.currency.select.currency": "Scegli la valuta",
19
21
  "neptune.FlowNavigation.back": "torna al passaggio precedente",
20
22
  "neptune.Info.ariaLabel": "Maggiori informazioni",
21
23
  "neptune.Label.optional": "(Facoltativo)",
package/src/i18n/ja.json CHANGED
@@ -16,6 +16,8 @@
16
16
  "neptune.DateLookup.selected": "選択済み",
17
17
  "neptune.DateLookup.twentyYears": "20年",
18
18
  "neptune.DateLookup.year": "年",
19
+ "neptune.ExpressiveMoneyInput.currency.search.placeholder": "通貨または国をご入力ください",
20
+ "neptune.ExpressiveMoneyInput.currency.select.currency": "通貨の選択",
19
21
  "neptune.FlowNavigation.back": "前のステップに戻る",
20
22
  "neptune.Info.ariaLabel": "詳細",
21
23
  "neptune.Label.optional": "(任意)",
package/src/i18n/nl.json CHANGED
@@ -16,6 +16,8 @@
16
16
  "neptune.DateLookup.selected": "geselecteerd",
17
17
  "neptune.DateLookup.twentyYears": "20 jaar",
18
18
  "neptune.DateLookup.year": "jaar",
19
+ "neptune.ExpressiveMoneyInput.currency.search.placeholder": "Voer een valuta / land in",
20
+ "neptune.ExpressiveMoneyInput.currency.select.currency": "Selecteer valuta",
19
21
  "neptune.FlowNavigation.back": "terug naar vorige stap",
20
22
  "neptune.Info.ariaLabel": "Meer informatie",
21
23
  "neptune.Label.optional": "(Optioneel)",
package/src/i18n/pl.json CHANGED
@@ -16,6 +16,8 @@
16
16
  "neptune.DateLookup.selected": "wybrano",
17
17
  "neptune.DateLookup.twentyYears": "20 lat",
18
18
  "neptune.DateLookup.year": "rok",
19
+ "neptune.ExpressiveMoneyInput.currency.search.placeholder": "Wpisz walutę / kraj",
20
+ "neptune.ExpressiveMoneyInput.currency.select.currency": "Wybierz walutę",
19
21
  "neptune.FlowNavigation.back": "wróć do poprzedniego kroku",
20
22
  "neptune.Info.ariaLabel": "Więcej informacji",
21
23
  "neptune.Label.optional": "(opcjonalne)",
package/src/i18n/pt.json CHANGED
@@ -16,6 +16,8 @@
16
16
  "neptune.DateLookup.selected": "selecionada",
17
17
  "neptune.DateLookup.twentyYears": "20 anos",
18
18
  "neptune.DateLookup.year": "ano",
19
+ "neptune.ExpressiveMoneyInput.currency.search.placeholder": "Digite uma moeda / país",
20
+ "neptune.ExpressiveMoneyInput.currency.select.currency": "Selecione a moeda",
19
21
  "neptune.FlowNavigation.back": "voltar à etapa anterior",
20
22
  "neptune.Info.ariaLabel": "Mais informações",
21
23
  "neptune.Label.optional": "(Opcional)",
package/src/i18n/ro.json CHANGED
@@ -16,6 +16,8 @@
16
16
  "neptune.DateLookup.selected": "selectată",
17
17
  "neptune.DateLookup.twentyYears": "20 de ani",
18
18
  "neptune.DateLookup.year": "an",
19
+ "neptune.ExpressiveMoneyInput.currency.search.placeholder": "Tastează o monedă / țară",
20
+ "neptune.ExpressiveMoneyInput.currency.select.currency": "Selectează moneda",
19
21
  "neptune.FlowNavigation.back": "înapoi la pasul anterior",
20
22
  "neptune.Info.ariaLabel": "Mai multe informații",
21
23
  "neptune.Label.optional": "(Opțional)",
package/src/i18n/ru.json CHANGED
@@ -16,6 +16,8 @@
16
16
  "neptune.DateLookup.selected": "выбрано",
17
17
  "neptune.DateLookup.twentyYears": "20 лет",
18
18
  "neptune.DateLookup.year": "год",
19
+ "neptune.ExpressiveMoneyInput.currency.search.placeholder": "Введите валюту/страну",
20
+ "neptune.ExpressiveMoneyInput.currency.select.currency": "Выберите валюту",
19
21
  "neptune.FlowNavigation.back": "вернуться к предыдущему шагу",
20
22
  "neptune.Info.ariaLabel": "Подробнее",
21
23
  "neptune.Label.optional": "(необязательно)",
package/src/i18n/th.json CHANGED
@@ -16,6 +16,8 @@
16
16
  "neptune.DateLookup.selected": "เลือกแล้ว",
17
17
  "neptune.DateLookup.twentyYears": "20 ปี",
18
18
  "neptune.DateLookup.year": "ปี",
19
+ "neptune.ExpressiveMoneyInput.currency.search.placeholder": "ป้อนสกุลเงิน / ประเทศ",
20
+ "neptune.ExpressiveMoneyInput.currency.select.currency": "เลือกสกุลเงิน",
19
21
  "neptune.FlowNavigation.back": "กลับไปที่ขั้นก่อนหน้า",
20
22
  "neptune.Info.ariaLabel": "ข้อมูลเพิ่มเติม",
21
23
  "neptune.Label.optional": "(ไม่บังคับ)",
package/src/i18n/tr.json CHANGED
@@ -16,6 +16,8 @@
16
16
  "neptune.DateLookup.selected": "seçili",
17
17
  "neptune.DateLookup.twentyYears": "20 yıl",
18
18
  "neptune.DateLookup.year": "yıl",
19
+ "neptune.ExpressiveMoneyInput.currency.search.placeholder": "Bir para birimi / ülke girin",
20
+ "neptune.ExpressiveMoneyInput.currency.select.currency": "Para birimi seçin",
19
21
  "neptune.FlowNavigation.back": "önceki adıma dön",
20
22
  "neptune.Info.ariaLabel": "Daha fazla bilgi",
21
23
  "neptune.Label.optional": "(İsteğe bağlı)",
@@ -16,6 +16,8 @@
16
16
  "neptune.DateLookup.selected": "已选",
17
17
  "neptune.DateLookup.twentyYears": "20 年",
18
18
  "neptune.DateLookup.year": "年",
19
+ "neptune.ExpressiveMoneyInput.currency.search.placeholder": "输入货币/国家/地区",
20
+ "neptune.ExpressiveMoneyInput.currency.select.currency": "选择货币",
19
21
  "neptune.FlowNavigation.back": "返回上一步",
20
22
  "neptune.Info.ariaLabel": "更多信息",
21
23
  "neptune.Label.optional": "(可选)",
@@ -16,6 +16,8 @@
16
16
  "neptune.DateLookup.selected": "已選",
17
17
  "neptune.DateLookup.twentyYears": "20年",
18
18
  "neptune.DateLookup.year": "年",
19
+ "neptune.ExpressiveMoneyInput.currency.search.placeholder": "輸入貨幣或國家/地區",
20
+ "neptune.ExpressiveMoneyInput.currency.select.currency": "選擇貨幣",
19
21
  "neptune.FlowNavigation.back": "返回上一個步驟",
20
22
  "neptune.Info.ariaLabel": "更多資訊",
21
23
  "neptune.Label.optional": "(可選)",
@@ -43,7 +43,7 @@ export function BottomSheet({
43
43
  onClose,
44
44
  onCloseEnd,
45
45
  }: BottomSheetProps) {
46
- useVirtualKeyboard();
46
+ useVirtualKeyboard(open);
47
47
 
48
48
  const { refs, context } = useFloating<Element>({
49
49
  open,
@@ -2,6 +2,10 @@ import { Meta, StoryObj } from '@storybook/react-webpack5';
2
2
  import { ThemeProvider } from '@wise/components-theming';
3
3
 
4
4
  import Button from '../../button';
5
+ import { lorem100 } from '../../test-utils';
6
+ import Display from '../../display';
7
+ import Logo from '../../logo';
8
+ import Body from '../../body';
5
9
 
6
10
  export default {
7
11
  component: ThemeProvider,
@@ -17,3 +21,22 @@ export const PlatformTheme: Story = {
17
21
  </ThemeProvider>
18
22
  ),
19
23
  };
24
+
25
+ export const BusinessLandingPage: Story = {
26
+ render: () => (
27
+ <ThemeProvider theme="business">
28
+ <Display type="display-large">Wise Business</Display>
29
+ <Body type="body-large-bold">
30
+ {lorem100}
31
+ </Body>
32
+ <ThemeProvider theme="business--forest-green">
33
+ <Body type="body-large">
34
+ {lorem100}
35
+ </Body>
36
+ </ThemeProvider>
37
+ <Body type="body-large">
38
+ {lorem100}
39
+ </Body>
40
+ </ThemeProvider>
41
+ ),
42
+ };
@@ -1,4 +1,3 @@
1
- import React from 'react';
2
1
  import { render, screen, mockMatchMedia } from '../test-utils';
3
2
  import { userEvent } from '@testing-library/user-event';
4
3
  import '@testing-library/jest-dom';
@@ -2,6 +2,7 @@ import { Meta, StoryObj } from '@storybook/react-webpack5';
2
2
  import Table from './Table';
3
3
  import { TableHeaderType } from './TableHeader';
4
4
  import { TableRowType, TableRowClickableType } from './TableRow';
5
+ import { DirectDebits } from '@transferwise/icons';
5
6
 
6
7
  export default {
7
8
  component: Table,
@@ -46,6 +47,9 @@ const tableData = {
46
47
  secondaryText: 'Software Engineer',
47
48
  avatar: {
48
49
  profileName: 'Bob Brown',
50
+ badge: {
51
+ flagCode: 'GBP',
52
+ },
49
53
  },
50
54
  },
51
55
  },
@@ -105,7 +109,10 @@ const tableData = {
105
109
  primaryText: 'Jan Kowalski',
106
110
  secondaryText: 'Product Manager',
107
111
  avatar: {
108
- profileName: 'Jan Kowalski',
112
+ asset: <DirectDebits />,
113
+ badge: {
114
+ status: 'warning',
115
+ },
109
116
  },
110
117
  },
111
118
  },
@@ -124,6 +131,7 @@ const tableData = {
124
131
  {
125
132
  cell: {
126
133
  type: 'currency',
134
+ flag: false,
127
135
  primaryCurrency: {
128
136
  amount: 23456.78,
129
137
  currency: 'usd',
@@ -166,6 +174,9 @@ const tableData = {
166
174
  secondaryText: 'Data Scientist',
167
175
  avatar: {
168
176
  profileName: 'William Davis',
177
+ badge: {
178
+ type: 'reference',
179
+ },
169
180
  },
170
181
  },
171
182
  },
@@ -107,12 +107,12 @@ describe('TableCell Component', () => {
107
107
  expect(screen.getByText('Frontend Developer')).toBeInTheDocument();
108
108
  });
109
109
 
110
- it('renders `leading` cell type without media content when `profileName` is not provided', () => {
110
+ it('renders `leading` cell type without media content when `avatar` is not provided', () => {
111
111
  render(
112
112
  <TableCell
113
113
  cell={{
114
114
  ...cellContentMocks.leading,
115
- avatar: { profileName: undefined },
115
+ avatar: undefined,
116
116
  }}
117
117
  />,
118
118
  );
@@ -5,7 +5,7 @@ import React, { ImgHTMLAttributes } from 'react';
5
5
  import { clsx } from 'clsx';
6
6
  import Body from '../body';
7
7
  import Money, { MoneyProps } from '../money';
8
- import AvatarView from '../avatarView';
8
+ import AvatarView, { AvatarViewProps } from '../avatarView';
9
9
 
10
10
  interface TableCellTypeProp {
11
11
  type: 'leading' | 'text' | 'currency' | 'status' | 'media';
@@ -30,9 +30,10 @@ export interface TableCellLeading
30
30
  extends TableCellTypeProp,
31
31
  TableCellTextProps,
32
32
  TableCellStatusProp {
33
- avatar?: {
34
- src?: string;
35
- profileName?: string | null;
33
+ avatar?: Pick<AvatarViewProps, 'badge' | 'imgSrc' | 'profileName' | 'profileType'> & {
34
+ asset?: AvatarViewProps['children'];
35
+ /** @deprecated Use `"imgSrc" instead. */
36
+ src?: AvatarViewProps['imgSrc'];
36
37
  };
37
38
  }
38
39
 
@@ -43,6 +44,7 @@ export interface TableCellText extends TableCellTypeProp, TableCellStatusProp {
43
44
  export interface TableCellCurrency extends TableCellTypeProp, TableCellStatusProp {
44
45
  primaryCurrency?: MoneyProps;
45
46
  secondaryCurrency?: MoneyProps;
47
+ flag?: boolean;
46
48
  }
47
49
 
48
50
  export interface TableCellStatus extends TableCellTypeProp, TableCellTextProps {
@@ -65,13 +67,15 @@ const TableCell = ({ cell, alignment = 'left', className, colSpan, children }: T
65
67
  const getContentMedia = () => {
66
68
  let mediaContent = null;
67
69
 
68
- if (cell?.type === 'leading' && (cell?.avatar?.src || cell?.avatar?.profileName)) {
70
+ if (cell?.type === 'leading' && cell?.avatar) {
69
71
  mediaContent = (
70
- <AvatarView profileName={cell?.avatar?.profileName} size={40} imgSrc={cell?.avatar?.src} />
72
+ <AvatarView size={40} {...cell.avatar} imgSrc={cell.avatar.imgSrc ?? cell.avatar.src}>
73
+ {cell.avatar.asset}
74
+ </AvatarView>
71
75
  );
72
76
  }
73
77
 
74
- if (cell?.type === 'currency' && cell?.primaryCurrency?.currency) {
78
+ if (cell?.type === 'currency' && cell?.primaryCurrency?.currency && cell?.flag !== false) {
75
79
  mediaContent = (
76
80
  <Flag code={cell?.primaryCurrency?.currency?.toLowerCase()} intrinsicSize={24} />
77
81
  );