@pagopa/io-app-design-system 1.11.3 → 1.12.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 (212) hide show
  1. package/lib/commonjs/components/Advice/__test__/__snapshots__/advice.test.tsx.snap +1 -0
  2. package/lib/commonjs/components/banner/__test__/__snapshots__/banner.test.tsx.snap +3 -0
  3. package/lib/commonjs/components/buttons/ButtonLink.js +3 -5
  4. package/lib/commonjs/components/buttons/ButtonLink.js.map +1 -1
  5. package/lib/commonjs/components/buttons/ButtonOutline.js +6 -6
  6. package/lib/commonjs/components/buttons/ButtonOutline.js.map +1 -1
  7. package/lib/commonjs/components/buttons/ButtonSolid.js +6 -6
  8. package/lib/commonjs/components/buttons/ButtonSolid.js.map +1 -1
  9. package/lib/commonjs/components/buttons/__test__/__snapshots__/button.test.tsx.snap +9 -0
  10. package/lib/commonjs/components/icons/Icon.js +6 -0
  11. package/lib/commonjs/components/icons/Icon.js.map +1 -1
  12. package/lib/commonjs/components/icons/svg/IconDocPaymentCode.js +31 -0
  13. package/lib/commonjs/components/icons/svg/IconDocPaymentCode.js.map +1 -0
  14. package/lib/commonjs/components/icons/svg/IconEntityCode.js +31 -0
  15. package/lib/commonjs/components/icons/svg/IconEntityCode.js.map +1 -0
  16. package/lib/commonjs/components/icons/svg/IconNotes.js +31 -0
  17. package/lib/commonjs/components/icons/svg/IconNotes.js.map +1 -0
  18. package/lib/commonjs/components/icons/svg/originals/IconDocPaymentCode.svg +3 -0
  19. package/lib/commonjs/components/icons/svg/originals/IconEntityCode.svg +3 -0
  20. package/lib/commonjs/components/icons/svg/originals/IconNotes.svg +3 -0
  21. package/lib/commonjs/components/index.js +11 -0
  22. package/lib/commonjs/components/index.js.map +1 -1
  23. package/lib/commonjs/components/layout/Dismissable.js +60 -0
  24. package/lib/commonjs/components/layout/Dismissable.js.map +1 -0
  25. package/lib/commonjs/components/layout/HeaderFirstLevel.js +14 -5
  26. package/lib/commonjs/components/layout/HeaderFirstLevel.js.map +1 -1
  27. package/lib/commonjs/components/layout/HeaderSecondLevel.js +10 -7
  28. package/lib/commonjs/components/layout/HeaderSecondLevel.js.map +1 -1
  29. package/lib/commonjs/components/layout/common.js +6 -0
  30. package/lib/commonjs/components/layout/common.js.map +1 -0
  31. package/lib/commonjs/components/layout/index.js +11 -0
  32. package/lib/commonjs/components/layout/index.js.map +1 -1
  33. package/lib/commonjs/components/listitems/ListItemTransaction.js +5 -4
  34. package/lib/commonjs/components/listitems/ListItemTransaction.js.map +1 -1
  35. package/lib/commonjs/components/listitems/__test__/__snapshots__/listitem.test.tsx.snap +2 -0
  36. package/lib/commonjs/components/logos/LogoPaymentCard.js +50 -0
  37. package/lib/commonjs/components/logos/LogoPaymentCard.js.map +1 -0
  38. package/lib/commonjs/components/logos/LogoPaymentExt.js +1 -1
  39. package/lib/commonjs/components/logos/LogoPaymentExt.js.map +1 -1
  40. package/lib/commonjs/components/logos/README.md +2 -1
  41. package/lib/commonjs/components/logos/index.js +20 -1
  42. package/lib/commonjs/components/logos/index.js.map +1 -1
  43. package/lib/commonjs/components/logos/svg/LogoPaymentCardBancomatPay.js +33 -0
  44. package/lib/commonjs/components/logos/svg/LogoPaymentCardBancomatPay.js.map +1 -0
  45. package/lib/commonjs/components/logos/svg/LogoPaymentCardPayPal.js +42 -0
  46. package/lib/commonjs/components/logos/svg/LogoPaymentCardPayPal.js.map +1 -0
  47. package/lib/commonjs/components/logos/svg/originals/LogoPaymentCardBancomatPay.svg +18 -0
  48. package/lib/commonjs/components/logos/svg/originals/LogoPaymentCardPayPal.svg +30 -0
  49. package/lib/commonjs/components/toast/ToastNotification.js +73 -0
  50. package/lib/commonjs/components/toast/ToastNotification.js.map +1 -0
  51. package/lib/commonjs/components/toast/ToastProvider.js +135 -0
  52. package/lib/commonjs/components/toast/ToastProvider.js.map +1 -0
  53. package/lib/commonjs/components/toast/context.js +14 -0
  54. package/lib/commonjs/components/toast/context.js.map +1 -0
  55. package/lib/commonjs/components/toast/index.js +39 -0
  56. package/lib/commonjs/components/toast/index.js.map +1 -0
  57. package/lib/commonjs/components/toast/types.js +6 -0
  58. package/lib/commonjs/components/toast/types.js.map +1 -0
  59. package/lib/commonjs/components/toast/useIOToast.js +94 -0
  60. package/lib/commonjs/components/toast/useIOToast.js.map +1 -0
  61. package/lib/commonjs/components/typography/BaseTypography.js +3 -1
  62. package/lib/commonjs/components/typography/BaseTypography.js.map +1 -1
  63. package/lib/commonjs/components/typography/__test__/__snapshots__/typography.test.tsx.snap +31 -0
  64. package/lib/module/components/Advice/__test__/__snapshots__/advice.test.tsx.snap +1 -0
  65. package/lib/module/components/banner/__test__/__snapshots__/banner.test.tsx.snap +3 -0
  66. package/lib/module/components/buttons/ButtonLink.js +3 -5
  67. package/lib/module/components/buttons/ButtonLink.js.map +1 -1
  68. package/lib/module/components/buttons/ButtonOutline.js +6 -6
  69. package/lib/module/components/buttons/ButtonOutline.js.map +1 -1
  70. package/lib/module/components/buttons/ButtonSolid.js +6 -6
  71. package/lib/module/components/buttons/ButtonSolid.js.map +1 -1
  72. package/lib/module/components/buttons/__test__/__snapshots__/button.test.tsx.snap +9 -0
  73. package/lib/module/components/icons/Icon.js +6 -0
  74. package/lib/module/components/icons/Icon.js.map +1 -1
  75. package/lib/module/components/icons/svg/IconDocPaymentCode.js +23 -0
  76. package/lib/module/components/icons/svg/IconDocPaymentCode.js.map +1 -0
  77. package/lib/module/components/icons/svg/IconEntityCode.js +23 -0
  78. package/lib/module/components/icons/svg/IconEntityCode.js.map +1 -0
  79. package/lib/module/components/icons/svg/IconNotes.js +23 -0
  80. package/lib/module/components/icons/svg/IconNotes.js.map +1 -0
  81. package/lib/module/components/icons/svg/originals/IconDocPaymentCode.svg +3 -0
  82. package/lib/module/components/icons/svg/originals/IconEntityCode.svg +3 -0
  83. package/lib/module/components/icons/svg/originals/IconNotes.svg +3 -0
  84. package/lib/module/components/index.js +1 -0
  85. package/lib/module/components/index.js.map +1 -1
  86. package/lib/module/components/layout/Dismissable.js +51 -0
  87. package/lib/module/components/layout/Dismissable.js.map +1 -0
  88. package/lib/module/components/layout/HeaderFirstLevel.js +14 -5
  89. package/lib/module/components/layout/HeaderFirstLevel.js.map +1 -1
  90. package/lib/module/components/layout/HeaderSecondLevel.js +10 -7
  91. package/lib/module/components/layout/HeaderSecondLevel.js.map +1 -1
  92. package/lib/module/components/layout/common.js +2 -0
  93. package/lib/module/components/layout/common.js.map +1 -0
  94. package/lib/module/components/layout/index.js +1 -0
  95. package/lib/module/components/layout/index.js.map +1 -1
  96. package/lib/module/components/listitems/ListItemTransaction.js +5 -4
  97. package/lib/module/components/listitems/ListItemTransaction.js.map +1 -1
  98. package/lib/module/components/listitems/__test__/__snapshots__/listitem.test.tsx.snap +2 -0
  99. package/lib/module/components/logos/LogoPaymentCard.js +43 -0
  100. package/lib/module/components/logos/LogoPaymentCard.js.map +1 -0
  101. package/lib/module/components/logos/LogoPaymentExt.js +1 -1
  102. package/lib/module/components/logos/LogoPaymentExt.js.map +1 -1
  103. package/lib/module/components/logos/README.md +2 -1
  104. package/lib/module/components/logos/index.js +2 -0
  105. package/lib/module/components/logos/index.js.map +1 -1
  106. package/lib/module/components/logos/svg/LogoPaymentCardBancomatPay.js +25 -0
  107. package/lib/module/components/logos/svg/LogoPaymentCardBancomatPay.js.map +1 -0
  108. package/lib/module/components/logos/svg/LogoPaymentCardPayPal.js +34 -0
  109. package/lib/module/components/logos/svg/LogoPaymentCardPayPal.js.map +1 -0
  110. package/lib/module/components/logos/svg/originals/LogoPaymentCardBancomatPay.svg +18 -0
  111. package/lib/module/components/logos/svg/originals/LogoPaymentCardPayPal.svg +30 -0
  112. package/lib/module/components/toast/ToastNotification.js +66 -0
  113. package/lib/module/components/toast/ToastNotification.js.map +1 -0
  114. package/lib/module/components/toast/ToastProvider.js +123 -0
  115. package/lib/module/components/toast/ToastProvider.js.map +1 -0
  116. package/lib/module/components/toast/context.js +7 -0
  117. package/lib/module/components/toast/context.js.map +1 -0
  118. package/lib/module/components/toast/index.js +4 -0
  119. package/lib/module/components/toast/index.js.map +1 -0
  120. package/lib/module/components/toast/types.js +2 -0
  121. package/lib/module/components/toast/types.js.map +1 -0
  122. package/lib/module/components/toast/useIOToast.js +84 -0
  123. package/lib/module/components/toast/useIOToast.js.map +1 -0
  124. package/lib/module/components/typography/BaseTypography.js +3 -1
  125. package/lib/module/components/typography/BaseTypography.js.map +1 -1
  126. package/lib/module/components/typography/__test__/__snapshots__/typography.test.tsx.snap +31 -0
  127. package/lib/typescript/components/buttons/ButtonLink.d.ts.map +1 -1
  128. package/lib/typescript/components/buttons/ButtonOutline.d.ts.map +1 -1
  129. package/lib/typescript/components/buttons/ButtonSolid.d.ts.map +1 -1
  130. package/lib/typescript/components/icons/Icon.d.ts +3 -0
  131. package/lib/typescript/components/icons/Icon.d.ts.map +1 -1
  132. package/lib/typescript/components/icons/svg/IconDocPaymentCode.d.ts +5 -0
  133. package/lib/typescript/components/icons/svg/IconDocPaymentCode.d.ts.map +1 -0
  134. package/lib/typescript/components/icons/svg/IconEntityCode.d.ts +5 -0
  135. package/lib/typescript/components/icons/svg/IconEntityCode.d.ts.map +1 -0
  136. package/lib/typescript/components/icons/svg/IconNotes.d.ts +5 -0
  137. package/lib/typescript/components/icons/svg/IconNotes.d.ts.map +1 -0
  138. package/lib/typescript/components/index.d.ts +1 -0
  139. package/lib/typescript/components/index.d.ts.map +1 -1
  140. package/lib/typescript/components/layout/Dismissable.d.ts +18 -0
  141. package/lib/typescript/components/layout/Dismissable.d.ts.map +1 -0
  142. package/lib/typescript/components/layout/HeaderFirstLevel.d.ts +28 -5
  143. package/lib/typescript/components/layout/HeaderFirstLevel.d.ts.map +1 -1
  144. package/lib/typescript/components/layout/HeaderSecondLevel.d.ts +8 -3
  145. package/lib/typescript/components/layout/HeaderSecondLevel.d.ts.map +1 -1
  146. package/lib/typescript/components/layout/common.d.ts +4 -0
  147. package/lib/typescript/components/layout/common.d.ts.map +1 -0
  148. package/lib/typescript/components/layout/index.d.ts +1 -0
  149. package/lib/typescript/components/layout/index.d.ts.map +1 -1
  150. package/lib/typescript/components/listitems/ListItemTransaction.d.ts +2 -1
  151. package/lib/typescript/components/listitems/ListItemTransaction.d.ts.map +1 -1
  152. package/lib/typescript/components/logos/LogoPaymentCard.d.ts +19 -0
  153. package/lib/typescript/components/logos/LogoPaymentCard.d.ts.map +1 -0
  154. package/lib/typescript/components/logos/index.d.ts +2 -0
  155. package/lib/typescript/components/logos/index.d.ts.map +1 -1
  156. package/lib/typescript/components/logos/svg/LogoPaymentCardBancomatPay.d.ts +5 -0
  157. package/lib/typescript/components/logos/svg/LogoPaymentCardBancomatPay.d.ts.map +1 -0
  158. package/lib/typescript/components/logos/svg/LogoPaymentCardPayPal.d.ts +5 -0
  159. package/lib/typescript/components/logos/svg/LogoPaymentCardPayPal.d.ts.map +1 -0
  160. package/lib/typescript/components/radio/RadioGroup.d.ts +2 -2
  161. package/lib/typescript/components/radio/RadioGroup.d.ts.map +1 -1
  162. package/lib/typescript/components/toast/ToastNotification.d.ts +6 -0
  163. package/lib/typescript/components/toast/ToastNotification.d.ts.map +1 -0
  164. package/lib/typescript/components/toast/ToastProvider.d.ts +22 -0
  165. package/lib/typescript/components/toast/ToastProvider.d.ts.map +1 -0
  166. package/lib/typescript/components/toast/context.d.ts +9 -0
  167. package/lib/typescript/components/toast/context.d.ts.map +1 -0
  168. package/lib/typescript/components/toast/index.d.ts +4 -0
  169. package/lib/typescript/components/toast/index.d.ts.map +1 -0
  170. package/lib/typescript/components/toast/types.d.ts +11 -0
  171. package/lib/typescript/components/toast/types.d.ts.map +1 -0
  172. package/lib/typescript/components/toast/useIOToast.d.ts +23 -0
  173. package/lib/typescript/components/toast/useIOToast.d.ts.map +1 -0
  174. package/package.json +3 -1
  175. package/src/components/Advice/__test__/__snapshots__/advice.test.tsx.snap +1 -0
  176. package/src/components/banner/__test__/__snapshots__/banner.test.tsx.snap +3 -0
  177. package/src/components/buttons/ButtonLink.tsx +2 -4
  178. package/src/components/buttons/ButtonOutline.tsx +3 -4
  179. package/src/components/buttons/ButtonSolid.tsx +3 -4
  180. package/src/components/buttons/__test__/__snapshots__/button.test.tsx.snap +9 -0
  181. package/src/components/icons/Icon.tsx +6 -0
  182. package/src/components/icons/svg/IconDocPaymentCode.tsx +16 -0
  183. package/src/components/icons/svg/IconEntityCode.tsx +16 -0
  184. package/src/components/icons/svg/IconNotes.tsx +16 -0
  185. package/src/components/icons/svg/originals/IconDocPaymentCode.svg +3 -0
  186. package/src/components/icons/svg/originals/IconEntityCode.svg +3 -0
  187. package/src/components/icons/svg/originals/IconNotes.svg +3 -0
  188. package/src/components/index.tsx +1 -0
  189. package/src/components/layout/Dismissable.tsx +76 -0
  190. package/src/components/layout/HeaderFirstLevel.tsx +42 -13
  191. package/src/components/layout/HeaderSecondLevel.tsx +22 -18
  192. package/src/components/layout/common.ts +7 -0
  193. package/src/components/layout/index.tsx +1 -0
  194. package/src/components/listitems/ListItemTransaction.tsx +7 -5
  195. package/src/components/listitems/__test__/__snapshots__/listitem.test.tsx.snap +2 -0
  196. package/src/components/logos/LogoPaymentCard.tsx +62 -0
  197. package/src/components/logos/LogoPaymentExt.tsx +1 -1
  198. package/src/components/logos/README.md +2 -1
  199. package/src/components/logos/index.tsx +2 -0
  200. package/src/components/logos/svg/LogoPaymentCardBancomatPay.tsx +28 -0
  201. package/src/components/logos/svg/LogoPaymentCardPayPal.tsx +38 -0
  202. package/src/components/logos/svg/originals/LogoPaymentCardBancomatPay.svg +18 -0
  203. package/src/components/logos/svg/originals/LogoPaymentCardPayPal.svg +30 -0
  204. package/src/components/radio/RadioGroup.tsx +2 -2
  205. package/src/components/toast/ToastNotification.tsx +76 -0
  206. package/src/components/toast/ToastProvider.tsx +153 -0
  207. package/src/components/toast/context.ts +14 -0
  208. package/src/components/toast/index.ts +3 -0
  209. package/src/components/toast/types.ts +13 -0
  210. package/src/components/toast/useIOToast.ts +88 -0
  211. package/src/components/typography/BaseTypography.tsx +1 -1
  212. package/src/components/typography/__test__/__snapshots__/typography.test.tsx.snap +31 -0
@@ -14,12 +14,12 @@ import {
14
14
  useIOTheme
15
15
  } from "../../core";
16
16
 
17
- import { LogoPaymentWithFallback } from "../common/LogoPaymentWithFallback";
18
- import { isImageUri } from "../../utils/url";
19
- import { WithTestID } from "../../utils/types";
20
17
  import { getAccessibleAmountText } from "../../utils/accessibility";
18
+ import { WithTestID } from "../../utils/types";
19
+ import { isImageUri } from "../../utils/url";
21
20
  import { Avatar } from "../avatar/Avatar";
22
21
  import { Badge } from "../badge/Badge";
22
+ import { LogoPaymentWithFallback } from "../common/LogoPaymentWithFallback";
23
23
  import { IOIconSizeScale, Icon } from "../icons";
24
24
  import { IOLogoPaymentType } from "../logos";
25
25
  import { VSpacer } from "../spacer";
@@ -64,6 +64,7 @@ export type ListItemTransaction = WithTestID<
64
64
  paymentLogoIcon?: ListItemTransactionLogo;
65
65
  subtitle: string;
66
66
  title: string;
67
+ accessible?: boolean;
67
68
  } & (
68
69
  | {
69
70
  transactionStatus: ListItemTransactionStatusWithoutBadge;
@@ -114,7 +115,8 @@ export const ListItemTransaction = ({
114
115
  title,
115
116
  transactionAmount,
116
117
  badgeText,
117
- transactionStatus = "success"
118
+ transactionStatus = "success",
119
+ accessible
118
120
  }: ListItemTransaction) => {
119
121
  const theme = useIOTheme();
120
122
 
@@ -203,7 +205,7 @@ export const ListItemTransaction = ({
203
205
  <View
204
206
  style={IOListItemStyles.listItem}
205
207
  testID={testID}
206
- accessible={true}
208
+ accessible={accessible}
207
209
  accessibilityLabel={accessibilityLabel}
208
210
  >
209
211
  <View style={IOListItemStyles.listItemInner}>
@@ -224,6 +224,7 @@ exports[`Test List Item Components ListItemInfo Snapshot 1`] = `
224
224
  }
225
225
  >
226
226
  <Text
227
+ allowFontScaling={false}
227
228
  color="bluegrey"
228
229
  defaultColor="bluegrey"
229
230
  defaultWeight="Regular"
@@ -350,6 +351,7 @@ exports[`Test List Item Components ListItemInfoCopy Snapshot 1`] = `
350
351
  }
351
352
  >
352
353
  <Text
354
+ allowFontScaling={false}
353
355
  color="bluegrey"
354
356
  defaultColor="bluegrey"
355
357
  defaultWeight="Regular"
@@ -0,0 +1,62 @@
1
+ import React from "react";
2
+ import { View, StyleSheet } from "react-native";
3
+ import { hexToRgba, IOColors } from "../../core";
4
+
5
+ /* Logos */
6
+ import LogoPaymentCardPayPal from "./svg/LogoPaymentCardPayPal";
7
+ import LogoPaymentCardBancomatPay from "./svg/LogoPaymentCardBancomatPay";
8
+
9
+ export const IOPaymentCardLogos = {
10
+ payPal: LogoPaymentCardPayPal,
11
+ bancomatPay: LogoPaymentCardBancomatPay
12
+ } as const;
13
+
14
+ export type IOLogoPaymentCardType = keyof typeof IOPaymentCardLogos;
15
+
16
+ type IOPaymentLogos = {
17
+ name: IOLogoPaymentCardType;
18
+ align: "start" | "center" | "end";
19
+ width?: "100%" | number;
20
+ height?: number;
21
+ debugMode?: boolean;
22
+ };
23
+
24
+ export type SVGCardLogoProps = {
25
+ preserveAspectRatio: "xMinYMin meet" | "xMidYMid meet" | "xMaxYMax meet";
26
+ };
27
+
28
+ const preserveAspectRatioValues: Record<
29
+ IOPaymentLogos["align"],
30
+ SVGCardLogoProps["preserveAspectRatio"]
31
+ > = {
32
+ start: "xMinYMin meet",
33
+ center: "xMidYMid meet",
34
+ end: "xMaxYMax meet"
35
+ };
36
+
37
+ const styles = StyleSheet.create({
38
+ debugMode: {
39
+ backgroundColor: hexToRgba(IOColors["error-500"], 0.2)
40
+ }
41
+ });
42
+
43
+ const LogoPaymentCard = ({
44
+ name,
45
+ width = "100%",
46
+ height = 32,
47
+ align = "center",
48
+ debugMode = false,
49
+ ...props
50
+ }: IOPaymentLogos) => {
51
+ const LogoElement = IOPaymentCardLogos[name];
52
+ return (
53
+ <View style={[{ width, height }, debugMode && styles.debugMode]}>
54
+ <LogoElement
55
+ preserveAspectRatio={preserveAspectRatioValues[align]}
56
+ {...props}
57
+ />
58
+ </View>
59
+ );
60
+ };
61
+
62
+ export default LogoPaymentCard;
@@ -1,5 +1,4 @@
1
1
  import React from "react";
2
- import LogoPaymentExtAmex from "./svg/LogoPaymentExtAmex";
3
2
 
4
3
  /* Logos */
5
4
  import LogoPaymentExtMaestro from "./svg/LogoPaymentExtMaestro";
@@ -15,6 +14,7 @@ import LogoPaymentExtBancomatPay from "./svg/LogoPaymentExtBancomatPay";
15
14
  import LogoPaymentExtPostepay from "./svg/LogoPaymentExtPostepay";
16
15
  import LogoPaymentExtPagoBancomat from "./svg/LogoPaymentExtPagoBancomat";
17
16
  import LogoPaymentExtApplePay from "./svg/LogoPaymentExtApplePay";
17
+ import LogoPaymentExtAmex from "./svg/LogoPaymentExtAmex";
18
18
 
19
19
  export const IOPaymentExtLogos = {
20
20
  maestro: LogoPaymentExtMaestro,
@@ -5,7 +5,8 @@ There are different sets:
5
5
 
6
6
  ## Prefixes
7
7
  - **Payment Logos**: `LogoPayment…`
8
- - **Payment Logos (extended)**: `LogoPaymentExt…`
8
+ - **Payment Logos**: `LogoPaymentExt…`
9
+ - **Payment Card Logos**: `LogoPaymentCard…`
9
10
 
10
11
  ## Add a new logo
11
12
  First of all, follow the instructions stated in the main README (`Vector graphics` section).
@@ -2,3 +2,5 @@ export { default as LogoPayment } from "./LogoPayment";
2
2
  export * from "./LogoPayment";
3
3
  export { default as LogoPaymentExt } from "./LogoPaymentExt";
4
4
  export * from "./LogoPaymentExt";
5
+ export { default as LogoPaymentCard } from "./LogoPaymentCard";
6
+ export * from "./LogoPaymentCard";
@@ -0,0 +1,28 @@
1
+ import React from "react";
2
+ import { Svg, Path } from "react-native-svg";
3
+ import { SVGCardLogoProps } from "../LogoPaymentCard";
4
+
5
+ const LogoPaymentCardBancomatPay = ({
6
+ preserveAspectRatio
7
+ }: SVGCardLogoProps) => (
8
+ <Svg viewBox="0 0 137 24" preserveAspectRatio={preserveAspectRatio}>
9
+ <Path
10
+ fill="#3FBDEE"
11
+ d="M104.986 10.8594 94.6035.4745c-.6327-.63267-1.6562-.63267-2.2889 0L81.9323 10.8568c-.6327.6327-.6327 1.6563 0 2.2864l10.3823 10.3823c.6327.6327 1.6562.6327 2.2889 0l10.3825-10.3823c.632-.6327.632-1.6563 0-2.2864v.0026Zm-7.0932 3.634c-.2674 2.1757-1.8465 3.225-4.4209 3.225H88.246l.3035-2.4226h5.1873c.6635 0 1.021-.4012 1.1085-1.1111.0102-.0771.0128-.1466.0128-.216h3.0733c-.0051.1646-.0154.3369-.0386.5247Zm2.0806-1.376H88.817l.27-2.186h5.0381c.7381 0 .9696-.5092 1.0442-1.12643.0746-.61723-.0309-1.003-.787-1.003h-5.033l.3035-2.51521h5.1487c2.9319 0 3.7188 1.24989 3.508 2.9627-.0849.69953-.2855 1.25764-.571 1.68194h.3009c1.1728 0 2.0806 1.0236 1.9366 2.1886l-.0026-.0026Z"
12
+ />
13
+ <Path
14
+ fill="#223264"
15
+ d="M1.4042 6.28671h4.56494c2.93184 0 3.71881 1.2499 3.50793 2.96271-.16203 1.32708-.72525 2.14488-1.54051 2.49978 1.00043.4012 1.31676 1.219 1.12902 2.7467-.26747 2.1757-1.84655 3.225-4.42092 3.225H0L1.4042 6.28671Zm3.88856 4.64209c.74067 0 .97213-.5092 1.04929-1.12644.07458-.61723-.03086-1.003-.78697-1.003H4.10459l-.26233 2.12944h1.4505Zm-.38063 4.3643c.66352 0 1.021-.4012 1.10844-1.111.08745-.7098-.16202-1.0647-.8564-1.0647H3.5748l-.26747 2.1757h1.6048ZM61.772 6.28672 60.3678 17.7158H57.436l.7844-6.3858.0257-.2186-.0849.2032-2.7029 6.4012H53.55l-1.1625-6.3961-.036-.198-.0257.2006-.7844 6.3935h-2.6515l1.4042-11.42908h2.1706c.9927 0 1.8363.70982 2.006 1.68967l.7638 4.44151.018.1029.0412-.0978 2.5949-6.13885h3.8834M67.4454 6.28672c.9695 0 1.8054.69181 1.9854 1.64338l1.8543 9.7857h-3.0939l-.2572-1.6022-.0051-.0258h-3.3742l-.0077.018-.6533 1.6074H60.895l4.9739-11.42905h1.5765v.00257ZM65.55 13.5289h1.9983l-.0052-.036-.5632-3.1633-.018-.1003-.0412.0951-1.3527 3.1634-.018.0437M30.3394 6.28671 28.9352 17.7158h-2.775l-2.8264-5.9512-.0463-.0951-.0128.1054-.7304 5.9434h-2.8522l1.4042-11.42902h1.8852c.7844 0 1.5096.46036 1.8414 1.17017l1.9365 4.13035.0463.0977.0129-.1055.6506-5.29272h2.8702M36.3806 6.14787c1.2653 0 2.3634.30348 3.1813.87442l-1.9212 2.51007c-.4526-.29833-1.0518-.45521-1.7359-.45521-1.3116 0-1.9906.45264-2.3069 3.01925-.1723 1.4094-.0798 2.2272.3009 2.6593.2571.2906.6455.414 1.2962.414.7072 0 1.2576-.162 1.9519-.576l1.1985 2.3326c-.967.5581-1.9623.9284-3.6571.9284-1.5354 0-2.6181-.3806-3.3125-1.1676-.8229-.931-1.093-2.4612-.8204-4.6781.2392-1.9546.7253-3.29962 1.5277-4.23318.9438-1.09816 2.3506-1.63309 4.2975-1.63309"
16
+ />
17
+ <Path
18
+ fill="#223264"
19
+ d="M44.3918 6.14786c1.6228 0 2.7595.39348 3.4745 1.2036.8307.9387 1.075 2.37377.7947 4.65494-.2263 1.8491-.6738 3.1453-1.4094 4.0763-.9438 1.1959-2.3506 1.7745-4.3077 1.7745-1.6254 0-2.7673-.396-3.4874-1.2087-.8204-.9284-1.075-2.3995-.8024-4.6344.2289-1.8568.6764-3.15557 1.4119-4.08913.9439-1.19589 2.3584-1.77711 4.3207-1.77711h.0051Zm-1.1161 9.05784c1.7925 0 2.0985-1.3347 2.3146-3.081.1543-1.2499.1594-2.1243-.2855-2.62836-.2649-.3009-.6841-.4475-1.2782-.4475-.8152 0-1.3605.2649-1.7205.83069-.3601.56577-.5041 1.40937-.6044 2.23747-.1543 1.255-.1594 2.1346.2855 2.6412.2674.3035.6918.4501 1.2936.4501M80.7261 6.28671l-.337 2.74668h-3.423l-1.0622 8.68491h-3.0398l1.0621-8.68491h-3.0038l.3369-2.74668h9.4668ZM8.76221 17.7158h2.99869l.6533-1.6073.0077-.018h3.3742l.0051.0257.2572 1.6022h3.0939L17.298 7.93271c-.18-.95413-1.0159-1.64337-1.9854-1.64337h-1.5765L8.76221 17.7184v-.0026Zm6.61719-4.1843h-1.9622l.018-.0437 1.3527-3.1633.0412-.0952.018.1003.5632 3.1633.0051.036h-.036v.0026Z"
20
+ />
21
+ <Path
22
+ fill="#3EBEEF"
23
+ d="M121.736 6.28672c.969 0 1.805.69181 1.985 1.64338l1.855 9.7857h-3.094l-.257-1.6022-.006-.0258h-3.374l-.008.018-.653 1.6074h-2.998l4.973-11.42905h1.577v.00257Zm-1.895 7.24218h1.998l-.005-.036-.564-3.1633-.018-.1003-.041.0951-1.353 3.1634-.017.0437M116.279 7.26657c-.577-.65067-1.556-.97986-2.917-.97986h-4.765l-1.405 11.42909h2.963l.414-3.3691v-.0283h1.736c1.433 0 2.554-.4089 3.333-1.2164.671-.697 1.091-1.6871 1.245-2.9422.159-1.30643-.039-2.25286-.604-2.89323Zm-2.367 3.08873c-.123 1.0107-.511 1.4222-1.334 1.4222h-1.695l.005-.0334.347-2.8213v-.02829h1.69c.378 0 .64.09002.802.27261.198.22375.257.6018.185 1.18818ZM136.014 6.28671l-4.685 7.78479v.0052l-.005.0077-.445 3.6339h-3.009l.452-3.6879v-.0129l-2.754-7.72822h3.207l1.486 4.49292.021.0643.033-.0591 2.608-4.49812h3.091M135.66 17.3609c-.237.2366-.522.3549-.857.3549-.334 0-.619-.1183-.856-.3549-.234-.2366-.35-.5221-.35-.859s.118-.6172.355-.8538c.234-.2341.52-.3524.851-.3524.332 0 .62.1183.857.3524.236.2366.355.5195.355.8538 0 .3344-.119.6224-.355.859Zm-1.592-1.5945c-.203.2032-.304.45-.304.7381 0 .288.101.5375.301.7432.203.2058.448.3061.738.3061.291 0 .535-.1029.736-.3061.203-.2057.303-.4526.303-.7432 0-.2906-.1-.5324-.303-.7381-.203-.2058-.45-.3061-.736-.3061-.285 0-.532.1029-.735.3061Zm.712.0669c.165 0 .286.0154.363.0488.136.0566.206.1698.206.3369 0 .1183-.044.2058-.129.2623-.046.0309-.111.0515-.193.0643.103.0155.18.0592.229.1286.049.0695.072.1389.072.2058v.0977c0 .0309 0 .0643.003.1003 0 .036.005.0566.01.0694l.008.0155h-.219V17.15s-.005-.0103-.005-.0154l-.005-.0437v-.1055c0-.1543-.041-.2546-.126-.3035-.049-.0282-.137-.0437-.26-.0437h-.185v.5221h-.234v-1.3296h.465v.0026Zm.252.2083c-.059-.0335-.154-.0489-.283-.0489h-.2v.4809h.211c.1 0 .175-.0103.223-.0308.09-.036.137-.1055.137-.2083 0-.0978-.029-.1621-.088-.1955v.0026Z"
24
+ />
25
+ </Svg>
26
+ );
27
+
28
+ export default LogoPaymentCardBancomatPay;
@@ -0,0 +1,38 @@
1
+ import React from "react";
2
+ import { Svg, Path } from "react-native-svg";
3
+ import { SVGCardLogoProps } from "../LogoPaymentCard";
4
+
5
+ const LogoPaymentCardPayPal = ({ preserveAspectRatio }: SVGCardLogoProps) => (
6
+ <Svg viewBox="0 0 170 48" preserveAspectRatio={preserveAspectRatio}>
7
+ <Path
8
+ fill="#003087"
9
+ d="M62.56 28.672a10.111 10.111 0 0 0 9.983-8.56c.78-4.967-3.101-9.303-8.6-9.303H55.08a.689.689 0 0 0-.69.585l-3.95 25.072a.643.643 0 0 0 .634.742h4.69a.689.689 0 0 0 .688-.585l1.162-7.365a.689.689 0 0 1 .689-.586h4.257Zm3.925-8.786c-.29 1.836-1.709 3.189-4.425 3.189h-3.474l1.053-6.68h3.411c2.81.006 3.723 1.663 3.435 3.496v-.005Zm26.378-1.18H88.41a.69.69 0 0 0-.69.585l-.144.924s-3.457-3.775-9.575-1.225c-3.51 1.461-5.194 4.48-5.91 6.69 0 0-2.277 6.718 2.87 10.417 0 0 4.771 3.556 10.145-.22l-.093.589a.642.642 0 0 0 .634.742h4.451a.689.689 0 0 0 .69-.585l2.708-17.175a.643.643 0 0 0-.634-.742Zm-6.547 9.492a4.996 4.996 0 0 1-4.996 4.276 4.513 4.513 0 0 1-1.397-.205c-1.92-.616-3.015-2.462-2.7-4.462a4.996 4.996 0 0 1 5.014-4.277c.474-.005.946.065 1.398.206 1.913.614 3.001 2.46 2.686 4.462h-.005Z"
10
+ />
11
+ <Path
12
+ fill="#0070E0"
13
+ d="M126.672 28.672a10.115 10.115 0 0 0 9.992-8.56c.779-4.967-3.101-9.303-8.602-9.303h-8.86a.69.69 0 0 0-.689.585l-3.962 25.079a.637.637 0 0 0 .365.683.64.64 0 0 0 .269.06h4.691a.69.69 0 0 0 .689-.586l1.163-7.365a.688.688 0 0 1 .689-.586l4.255-.007Zm3.925-8.786c-.29 1.836-1.709 3.189-4.426 3.189h-3.473l1.054-6.68h3.411c2.808.006 3.723 1.663 3.434 3.496v-.005Zm26.377-1.18h-4.448a.69.69 0 0 0-.689.585l-.146.924s-3.456-3.775-9.574-1.225c-3.509 1.461-5.194 4.48-5.911 6.69 0 0-2.276 6.718 2.87 10.417 0 0 4.772 3.556 10.146-.22l-.093.589a.637.637 0 0 0 .365.683c.084.04.176.06.269.06h4.451a.686.686 0 0 0 .689-.586l2.709-17.175a.657.657 0 0 0-.148-.518.632.632 0 0 0-.49-.224Zm-6.546 9.492a4.986 4.986 0 0 1-4.996 4.276 4.513 4.513 0 0 1-1.399-.205c-1.921-.616-3.017-2.462-2.702-4.462a4.996 4.996 0 0 1 4.996-4.277c.475-.005.947.064 1.399.206 1.933.614 3.024 2.46 2.707 4.462h-.005Z"
14
+ />
15
+ <Path
16
+ fill="#003087"
17
+ d="m109.205 19.131-5.367 9.059-2.723-8.992a.69.69 0 0 0-.664-.492h-4.842a.516.516 0 0 0-.496.689l4.88 15.146-4.413 7.138a.517.517 0 0 0 .442.794h5.217a.858.858 0 0 0 .741-.418l13.632-22.552a.516.516 0 0 0-.446-.789h-5.215a.858.858 0 0 0-.746.417Z"
18
+ />
19
+ <Path
20
+ fill="#0070E0"
21
+ d="m161.982 11.387-3.962 25.079a.637.637 0 0 0 .365.683c.084.04.176.06.269.06h4.689a.688.688 0 0 0 .689-.586l3.963-25.079a.637.637 0 0 0-.146-.517.645.645 0 0 0-.488-.225h-4.69a.69.69 0 0 0-.689.585Z"
22
+ />
23
+ <Path
24
+ fill="#001C64"
25
+ d="M37.146 22.26c-1.006 5.735-5.685 10.07-11.825 10.07h-3.898c-.795 0-1.596.736-1.723 1.55l-1.707 10.835c-.099.617-.388.822-1.013.822h-6.27c-.634 0-.784-.212-.689-.837l.72-7.493-7.526-.389c-.633 0-.862-.345-.772-.977l5.135-32.56c.099-.617.483-.882 1.106-.882h13.023c6.269 0 10.235 4.22 10.72 9.692 3.73 2.52 5.474 5.873 4.72 10.168Z"
26
+ />
27
+ <Path
28
+ fill="#0070E0"
29
+ d="m12.649 25.075-1.907 12.133-1.206 7.612a1.034 1.034 0 0 0 1.016 1.19h6.622a1.27 1.27 0 0 0 1.253-1.072l1.743-11.06a1.27 1.27 0 0 1 1.253-1.071h3.898A12.46 12.46 0 0 0 37.617 22.26c.675-4.307-1.492-8.228-5.201-10.165a9.96 9.96 0 0 1-.12 1.37 12.461 12.461 0 0 1-12.295 10.54h-6.1a1.268 1.268 0 0 0-1.252 1.07Z"
30
+ />
31
+ <Path
32
+ fill="#003087"
33
+ d="M10.741 37.208H3.03a1.035 1.035 0 0 1-1.018-1.192L7.208 3.072A1.268 1.268 0 0 1 8.46 2H21.7c6.269 0 10.827 4.562 10.72 10.089a11.567 11.567 0 0 0-5.399-1.287H15.983a1.27 1.27 0 0 0-1.254 1.071l-2.08 13.202-1.908 12.133Z"
34
+ />
35
+ </Svg>
36
+ );
37
+
38
+ export default LogoPaymentCardPayPal;
@@ -0,0 +1,18 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 137 24">
2
+ <path
3
+ fill="#3FBDEE"
4
+ d="M104.986 10.8594 94.6035.4745c-.6327-.63267-1.6562-.63267-2.2889 0L81.9323 10.8568c-.6327.6327-.6327 1.6563 0 2.2864l10.3823 10.3823c.6327.6327 1.6562.6327 2.2889 0l10.3825-10.3823c.632-.6327.632-1.6563 0-2.2864v.0026Zm-7.0932 3.634c-.2674 2.1757-1.8465 3.225-4.4209 3.225H88.246l.3035-2.4226h5.1873c.6635 0 1.021-.4012 1.1085-1.1111.0102-.0771.0128-.1466.0128-.216h3.0733c-.0051.1646-.0154.3369-.0386.5247Zm2.0806-1.376H88.817l.27-2.186h5.0381c.7381 0 .9696-.5092 1.0442-1.12643.0746-.61723-.0309-1.003-.787-1.003h-5.033l.3035-2.51521h5.1487c2.9319 0 3.7188 1.24989 3.508 2.9627-.0849.69953-.2855 1.25764-.571 1.68194h.3009c1.1728 0 2.0806 1.0236 1.9366 2.1886l-.0026-.0026Z"
5
+ />
6
+ <path
7
+ fill="#223264"
8
+ d="M1.4042 6.28671h4.56494c2.93184 0 3.71881 1.2499 3.50793 2.96271-.16203 1.32708-.72525 2.14488-1.54051 2.49978 1.00043.4012 1.31676 1.219 1.12902 2.7467-.26747 2.1757-1.84655 3.225-4.42092 3.225H0L1.4042 6.28671Zm3.88856 4.64209c.74067 0 .97213-.5092 1.04929-1.12644.07458-.61723-.03086-1.003-.78697-1.003H4.10459l-.26233 2.12944h1.4505Zm-.38063 4.3643c.66352 0 1.021-.4012 1.10844-1.111.08745-.7098-.16202-1.0647-.8564-1.0647H3.5748l-.26747 2.1757h1.6048ZM61.772 6.28672 60.3678 17.7158H57.436l.7844-6.3858.0257-.2186-.0849.2032-2.7029 6.4012H53.55l-1.1625-6.3961-.036-.198-.0257.2006-.7844 6.3935h-2.6515l1.4042-11.42908h2.1706c.9927 0 1.8363.70982 2.006 1.68967l.7638 4.44151.018.1029.0412-.0978 2.5949-6.13885h3.8834M67.4454 6.28672c.9695 0 1.8054.69181 1.9854 1.64338l1.8543 9.7857h-3.0939l-.2572-1.6022-.0051-.0258h-3.3742l-.0077.018-.6533 1.6074H60.895l4.9739-11.42905h1.5765v.00257ZM65.55 13.5289h1.9983l-.0052-.036-.5632-3.1633-.018-.1003-.0412.0951-1.3527 3.1634-.018.0437M30.3394 6.28671 28.9352 17.7158h-2.775l-2.8264-5.9512-.0463-.0951-.0128.1054-.7304 5.9434h-2.8522l1.4042-11.42902h1.8852c.7844 0 1.5096.46036 1.8414 1.17017l1.9365 4.13035.0463.0977.0129-.1055.6506-5.29272h2.8702M36.3806 6.14787c1.2653 0 2.3634.30348 3.1813.87442l-1.9212 2.51007c-.4526-.29833-1.0518-.45521-1.7359-.45521-1.3116 0-1.9906.45264-2.3069 3.01925-.1723 1.4094-.0798 2.2272.3009 2.6593.2571.2906.6455.414 1.2962.414.7072 0 1.2576-.162 1.9519-.576l1.1985 2.3326c-.967.5581-1.9623.9284-3.6571.9284-1.5354 0-2.6181-.3806-3.3125-1.1676-.8229-.931-1.093-2.4612-.8204-4.6781.2392-1.9546.7253-3.29962 1.5277-4.23318.9438-1.09816 2.3506-1.63309 4.2975-1.63309"
9
+ />
10
+ <path
11
+ fill="#223264"
12
+ d="M44.3918 6.14786c1.6228 0 2.7595.39348 3.4745 1.2036.8307.9387 1.075 2.37377.7947 4.65494-.2263 1.8491-.6738 3.1453-1.4094 4.0763-.9438 1.1959-2.3506 1.7745-4.3077 1.7745-1.6254 0-2.7673-.396-3.4874-1.2087-.8204-.9284-1.075-2.3995-.8024-4.6344.2289-1.8568.6764-3.15557 1.4119-4.08913.9439-1.19589 2.3584-1.77711 4.3207-1.77711h.0051Zm-1.1161 9.05784c1.7925 0 2.0985-1.3347 2.3146-3.081.1543-1.2499.1594-2.1243-.2855-2.62836-.2649-.3009-.6841-.4475-1.2782-.4475-.8152 0-1.3605.2649-1.7205.83069-.3601.56577-.5041 1.40937-.6044 2.23747-.1543 1.255-.1594 2.1346.2855 2.6412.2674.3035.6918.4501 1.2936.4501M80.7261 6.28671l-.337 2.74668h-3.423l-1.0622 8.68491h-3.0398l1.0621-8.68491h-3.0038l.3369-2.74668h9.4668ZM8.76221 17.7158h2.99869l.6533-1.6073.0077-.018h3.3742l.0051.0257.2572 1.6022h3.0939L17.298 7.93271c-.18-.95413-1.0159-1.64337-1.9854-1.64337h-1.5765L8.76221 17.7184v-.0026Zm6.61719-4.1843h-1.9622l.018-.0437 1.3527-3.1633.0412-.0952.018.1003.5632 3.1633.0051.036h-.036v.0026Z"
13
+ />
14
+ <path
15
+ fill="#3EBEEF"
16
+ d="M121.736 6.28672c.969 0 1.805.69181 1.985 1.64338l1.855 9.7857h-3.094l-.257-1.6022-.006-.0258h-3.374l-.008.018-.653 1.6074h-2.998l4.973-11.42905h1.577v.00257Zm-1.895 7.24218h1.998l-.005-.036-.564-3.1633-.018-.1003-.041.0951-1.353 3.1634-.017.0437M116.279 7.26657c-.577-.65067-1.556-.97986-2.917-.97986h-4.765l-1.405 11.42909h2.963l.414-3.3691v-.0283h1.736c1.433 0 2.554-.4089 3.333-1.2164.671-.697 1.091-1.6871 1.245-2.9422.159-1.30643-.039-2.25286-.604-2.89323Zm-2.367 3.08873c-.123 1.0107-.511 1.4222-1.334 1.4222h-1.695l.005-.0334.347-2.8213v-.02829h1.69c.378 0 .64.09002.802.27261.198.22375.257.6018.185 1.18818ZM136.014 6.28671l-4.685 7.78479v.0052l-.005.0077-.445 3.6339h-3.009l.452-3.6879v-.0129l-2.754-7.72822h3.207l1.486 4.49292.021.0643.033-.0591 2.608-4.49812h3.091M135.66 17.3609c-.237.2366-.522.3549-.857.3549-.334 0-.619-.1183-.856-.3549-.234-.2366-.35-.5221-.35-.859s.118-.6172.355-.8538c.234-.2341.52-.3524.851-.3524.332 0 .62.1183.857.3524.236.2366.355.5195.355.8538 0 .3344-.119.6224-.355.859Zm-1.592-1.5945c-.203.2032-.304.45-.304.7381 0 .288.101.5375.301.7432.203.2058.448.3061.738.3061.291 0 .535-.1029.736-.3061.203-.2057.303-.4526.303-.7432 0-.2906-.1-.5324-.303-.7381-.203-.2058-.45-.3061-.736-.3061-.285 0-.532.1029-.735.3061Zm.712.0669c.165 0 .286.0154.363.0488.136.0566.206.1698.206.3369 0 .1183-.044.2058-.129.2623-.046.0309-.111.0515-.193.0643.103.0155.18.0592.229.1286.049.0695.072.1389.072.2058v.0977c0 .0309 0 .0643.003.1003 0 .036.005.0566.01.0694l.008.0155h-.219V17.15s-.005-.0103-.005-.0154l-.005-.0437v-.1055c0-.1543-.041-.2546-.126-.3035-.049-.0282-.137-.0437-.26-.0437h-.185v.5221h-.234v-1.3296h.465v.0026Zm.252.2083c-.059-.0335-.154-.0489-.283-.0489h-.2v.4809h.211c.1 0 .175-.0103.223-.0308.09-.036.137-.1055.137-.2083 0-.0978-.029-.1621-.088-.1955v.0026Z"
17
+ />
18
+ </svg>
@@ -0,0 +1,30 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 170 48">
2
+ <path
3
+ fill="#003087"
4
+ d="M62.56 28.672a10.111 10.111 0 0 0 9.983-8.56c.78-4.967-3.101-9.303-8.6-9.303H55.08a.689.689 0 0 0-.69.585l-3.95 25.072a.643.643 0 0 0 .634.742h4.69a.689.689 0 0 0 .688-.585l1.162-7.365a.689.689 0 0 1 .689-.586h4.257Zm3.925-8.786c-.29 1.836-1.709 3.189-4.425 3.189h-3.474l1.053-6.68h3.411c2.81.006 3.723 1.663 3.435 3.496v-.005Zm26.378-1.18H88.41a.69.69 0 0 0-.69.585l-.144.924s-3.457-3.775-9.575-1.225c-3.51 1.461-5.194 4.48-5.91 6.69 0 0-2.277 6.718 2.87 10.417 0 0 4.771 3.556 10.145-.22l-.093.589a.642.642 0 0 0 .634.742h4.451a.689.689 0 0 0 .69-.585l2.708-17.175a.643.643 0 0 0-.634-.742Zm-6.547 9.492a4.996 4.996 0 0 1-4.996 4.276 4.513 4.513 0 0 1-1.397-.205c-1.92-.616-3.015-2.462-2.7-4.462a4.996 4.996 0 0 1 5.014-4.277c.474-.005.946.065 1.398.206 1.913.614 3.001 2.46 2.686 4.462h-.005Z"
5
+ />
6
+ <path
7
+ fill="#0070E0"
8
+ d="M126.672 28.672a10.115 10.115 0 0 0 9.992-8.56c.779-4.967-3.101-9.303-8.602-9.303h-8.86a.69.69 0 0 0-.689.585l-3.962 25.079a.637.637 0 0 0 .365.683.64.64 0 0 0 .269.06h4.691a.69.69 0 0 0 .689-.586l1.163-7.365a.688.688 0 0 1 .689-.586l4.255-.007Zm3.925-8.786c-.29 1.836-1.709 3.189-4.426 3.189h-3.473l1.054-6.68h3.411c2.808.006 3.723 1.663 3.434 3.496v-.005Zm26.377-1.18h-4.448a.69.69 0 0 0-.689.585l-.146.924s-3.456-3.775-9.574-1.225c-3.509 1.461-5.194 4.48-5.911 6.69 0 0-2.276 6.718 2.87 10.417 0 0 4.772 3.556 10.146-.22l-.093.589a.637.637 0 0 0 .365.683c.084.04.176.06.269.06h4.451a.686.686 0 0 0 .689-.586l2.709-17.175a.657.657 0 0 0-.148-.518.632.632 0 0 0-.49-.224Zm-6.546 9.492a4.986 4.986 0 0 1-4.996 4.276 4.513 4.513 0 0 1-1.399-.205c-1.921-.616-3.017-2.462-2.702-4.462a4.996 4.996 0 0 1 4.996-4.277c.475-.005.947.064 1.399.206 1.933.614 3.024 2.46 2.707 4.462h-.005Z"
9
+ />
10
+ <path
11
+ fill="#003087"
12
+ d="m109.205 19.131-5.367 9.059-2.723-8.992a.69.69 0 0 0-.664-.492h-4.842a.516.516 0 0 0-.496.689l4.88 15.146-4.413 7.138a.517.517 0 0 0 .442.794h5.217a.858.858 0 0 0 .741-.418l13.632-22.552a.516.516 0 0 0-.446-.789h-5.215a.858.858 0 0 0-.746.417Z"
13
+ />
14
+ <path
15
+ fill="#0070E0"
16
+ d="m161.982 11.387-3.962 25.079a.637.637 0 0 0 .365.683c.084.04.176.06.269.06h4.689a.688.688 0 0 0 .689-.586l3.963-25.079a.637.637 0 0 0-.146-.517.645.645 0 0 0-.488-.225h-4.69a.69.69 0 0 0-.689.585Z"
17
+ />
18
+ <path
19
+ fill="#001C64"
20
+ d="M37.146 22.26c-1.006 5.735-5.685 10.07-11.825 10.07h-3.898c-.795 0-1.596.736-1.723 1.55l-1.707 10.835c-.099.617-.388.822-1.013.822h-6.27c-.634 0-.784-.212-.689-.837l.72-7.493-7.526-.389c-.633 0-.862-.345-.772-.977l5.135-32.56c.099-.617.483-.882 1.106-.882h13.023c6.269 0 10.235 4.22 10.72 9.692 3.73 2.52 5.474 5.873 4.72 10.168Z"
21
+ />
22
+ <path
23
+ fill="#0070E0"
24
+ d="m12.649 25.075-1.907 12.133-1.206 7.612a1.034 1.034 0 0 0 1.016 1.19h6.622a1.27 1.27 0 0 0 1.253-1.072l1.743-11.06a1.27 1.27 0 0 1 1.253-1.071h3.898A12.46 12.46 0 0 0 37.617 22.26c.675-4.307-1.492-8.228-5.201-10.165a9.96 9.96 0 0 1-.12 1.37 12.461 12.461 0 0 1-12.295 10.54h-6.1a1.268 1.268 0 0 0-1.252 1.07Z"
25
+ />
26
+ <path
27
+ fill="#003087"
28
+ d="M10.741 37.208H3.03a1.035 1.035 0 0 1-1.018-1.192L7.208 3.072A1.268 1.268 0 0 1 8.46 2H21.7c6.269 0 10.827 4.562 10.72 10.089a11.567 11.567 0 0 0-5.399-1.287H15.983a1.27 1.27 0 0 0-1.254 1.071l-2.08 13.202-1.908 12.133Z"
29
+ />
30
+ </svg>
@@ -4,7 +4,7 @@ import { Divider } from "../divider";
4
4
  import { IOIcons } from "../icons";
5
5
  import { ListItemRadio } from "../listitems/ListItemRadio";
6
6
 
7
- export type NewRadioItem<T> = {
7
+ export type RadioItem<T> = {
8
8
  id: T;
9
9
  value: string;
10
10
  description?: string;
@@ -13,7 +13,7 @@ export type NewRadioItem<T> = {
13
13
  };
14
14
 
15
15
  type Props<T> = {
16
- items: ReadonlyArray<NewRadioItem<T>>;
16
+ items: ReadonlyArray<RadioItem<T>>;
17
17
  selectedItem?: T;
18
18
  onPress: (selected: T) => void;
19
19
  };
@@ -0,0 +1,76 @@
1
+ import React from "react";
2
+ import { StyleSheet, View } from "react-native";
3
+ import { Icon } from "../icons";
4
+ import { IOColors, IOAlertRadius } from "../../core";
5
+ import { ButtonText } from "../typography";
6
+ import { Toast, ToastVariant } from "./types";
7
+
8
+ type ColorVariant = {
9
+ background: IOColors;
10
+ stroke: IOColors;
11
+ };
12
+
13
+ const toastColorVariants: Record<ToastVariant, ColorVariant> = {
14
+ neutral: {
15
+ background: "turquoise-150",
16
+ stroke: "turquoise-850"
17
+ },
18
+ error: {
19
+ background: "error-100",
20
+ stroke: "error-850"
21
+ },
22
+ info: {
23
+ background: "info-100",
24
+ stroke: "info-850"
25
+ },
26
+ success: {
27
+ background: "success-100",
28
+ stroke: "success-850"
29
+ },
30
+ warning: {
31
+ background: "warning-100",
32
+ stroke: "warning-850"
33
+ }
34
+ };
35
+
36
+ type Props = Pick<Toast, "message" | "variant" | "icon">;
37
+
38
+ const ToastNotification = ({ message, variant = "neutral", icon }: Props) => {
39
+ const colors = toastColorVariants[variant];
40
+
41
+ return (
42
+ <View
43
+ style={[
44
+ styles.toast,
45
+ {
46
+ backgroundColor: IOColors[colors.background],
47
+ borderColor: IOColors[colors.stroke]
48
+ }
49
+ ]}
50
+ accessible={true}
51
+ accessibilityRole={"alert"}
52
+ accessibilityLabel={message}
53
+ >
54
+ <ButtonText color={colors.stroke} style={styles.content}>
55
+ {message}
56
+ </ButtonText>
57
+ {icon && <Icon name={icon} size={24} color={colors.stroke} />}
58
+ </View>
59
+ );
60
+ };
61
+
62
+ const styles = StyleSheet.create({
63
+ toast: {
64
+ borderRadius: IOAlertRadius,
65
+ borderWidth: 1,
66
+ padding: 16,
67
+ flexDirection: "row",
68
+ alignItems: "center",
69
+ justifyContent: "space-between"
70
+ },
71
+ content: {
72
+ paddingVertical: 2
73
+ }
74
+ });
75
+
76
+ export { ToastNotification };
@@ -0,0 +1,153 @@
1
+ import { throttle } from "lodash";
2
+ import React from "react";
3
+ import { SafeAreaView, StyleSheet, View } from "react-native";
4
+ import Animated, {
5
+ Easing,
6
+ SequencedTransition,
7
+ SlideInUp,
8
+ SlideOutUp
9
+ } from "react-native-reanimated";
10
+ import { Dismissable } from "../layout/Dismissable";
11
+ import { triggerHaptic } from "../../functions";
12
+ import { ToastNotification } from "./ToastNotification";
13
+ import { Toast } from "./types";
14
+ import { IOToastRef, useIOToast } from "./useIOToast";
15
+ import { ToastContext } from "./context";
16
+
17
+ /**
18
+ * The maximum number of toasts that can be displayed at the same time
19
+ * If the number of the toasts exceeds this number, the oldest one will be removed
20
+ */
21
+ export const MAX_TOAST_STACK_SIZE = 3;
22
+
23
+ /**
24
+ * The time in milliseconds that a toast notification will be displayed
25
+ */
26
+ export const TOAST_DURATION_TIME = 5000;
27
+
28
+ /**
29
+ * This is the time in milliseconds between two toast notifications.
30
+ * This will throttle the toast notifications to avoid displaying too many of them at the same time
31
+ * and causing visual glitches.
32
+ */
33
+ export const TOAST_THROTTLE_TIME = 500;
34
+
35
+ type ToastNotificationStackItem = Toast & { id: number };
36
+ type ToastNotificationStackItemProps = ToastNotificationStackItem &
37
+ Pick<Dismissable, "onDismiss">;
38
+
39
+ /**
40
+ * A toast notification item that can be swiped to the right to dismiss it, with enter and exit animations
41
+ */
42
+ const ToastNotificationStackItem = ({
43
+ onDismiss,
44
+ ...toast
45
+ }: ToastNotificationStackItemProps) => (
46
+ <Animated.View
47
+ entering={SlideInUp.duration(300).easing(Easing.inOut(Easing.exp))}
48
+ exiting={SlideOutUp.duration(300).easing(Easing.inOut(Easing.exp))}
49
+ layout={SequencedTransition.duration(300)}
50
+ style={{ paddingBottom: 8 }}
51
+ >
52
+ <Dismissable onDismiss={onDismiss}>
53
+ <ToastNotification {...toast} />
54
+ </Dismissable>
55
+ </Animated.View>
56
+ );
57
+
58
+ type ToastProviderProps = {
59
+ children: React.ReactNode;
60
+ };
61
+
62
+ export const ToastProvider = ({ children }: ToastProviderProps) => {
63
+ const toastId = React.useRef(1);
64
+ const [toasts, setToasts] = React.useState<
65
+ ReadonlyArray<ToastNotificationStackItem>
66
+ >([]);
67
+
68
+ const addToast = React.useCallback((toast: Toast): number => {
69
+ const id = (toastId.current ?? 0) + 1;
70
+ setToasts(prevToasts => [{ id, ...toast }, ...prevToasts]);
71
+
72
+ setTimeout(() => {
73
+ setToasts(prevToasts => prevToasts.filter(t => t.id !== id));
74
+ }, TOAST_DURATION_TIME);
75
+
76
+ if (toast.hapticFeedback) {
77
+ triggerHaptic(toast.hapticFeedback);
78
+ }
79
+
80
+ return id;
81
+ }, []);
82
+
83
+ const removeToast = React.useCallback((id: number) => {
84
+ setToasts(prevToasts => prevToasts.filter(t => t.id !== id));
85
+ }, []);
86
+
87
+ const removeToastAtIndex = (index: number) => {
88
+ setToasts(prevToasts => [
89
+ ...prevToasts.slice(0, index),
90
+ ...prevToasts.slice(index + 1)
91
+ ]);
92
+ };
93
+
94
+ // If stack size exceed the maximum, remove the oldest toast
95
+ React.useEffect(() => {
96
+ if (toasts.length > MAX_TOAST_STACK_SIZE) {
97
+ removeToastAtIndex(MAX_TOAST_STACK_SIZE);
98
+ }
99
+ }, [toasts]);
100
+
101
+ const removeAllToasts = React.useCallback(() => {
102
+ setToasts([]);
103
+ }, []);
104
+
105
+ const contextValue = React.useMemo(
106
+ () => ({
107
+ addToast: throttle(addToast, TOAST_THROTTLE_TIME),
108
+ removeToast: throttle(removeToast, TOAST_THROTTLE_TIME),
109
+ removeAllToasts
110
+ }),
111
+ [addToast, removeToast, removeAllToasts]
112
+ );
113
+
114
+ return (
115
+ <ToastContext.Provider value={contextValue as ToastContext}>
116
+ <InitializeToastRef />
117
+ <SafeAreaView style={styles.container} pointerEvents="box-none">
118
+ <View style={styles.list} pointerEvents="box-none">
119
+ {toasts.map(toast => (
120
+ <ToastNotificationStackItem
121
+ key={toast.id}
122
+ {...toast}
123
+ onDismiss={() => removeToast(toast.id)}
124
+ />
125
+ ))}
126
+ </View>
127
+ </SafeAreaView>
128
+ {children}
129
+ </ToastContext.Provider>
130
+ );
131
+ };
132
+
133
+ const InitializeToastRef = () => {
134
+ const toast = useIOToast();
135
+ // eslint-disable-next-line functional/immutable-data
136
+ IOToastRef.current = toast;
137
+ return null;
138
+ };
139
+
140
+ const styles = StyleSheet.create({
141
+ container: {
142
+ zIndex: 1000,
143
+ position: "absolute",
144
+ bottom: 0,
145
+ left: 0,
146
+ right: 0,
147
+ top: 0,
148
+ overflow: "visible"
149
+ },
150
+ list: {
151
+ padding: 24
152
+ }
153
+ });
@@ -0,0 +1,14 @@
1
+ import { createContext } from "react";
2
+ import { Toast } from "./types";
3
+
4
+ export type ToastContext = {
5
+ addToast: (props: Toast) => number;
6
+ removeToast: (id: number) => void;
7
+ removeAllToasts: () => void;
8
+ };
9
+
10
+ export const ToastContext = createContext<ToastContext>({
11
+ addToast: () => 0,
12
+ removeToast: () => undefined,
13
+ removeAllToasts: () => undefined
14
+ });
@@ -0,0 +1,3 @@
1
+ export * from "./ToastNotification";
2
+ export * from "./ToastProvider";
3
+ export * from "./useIOToast";
@@ -0,0 +1,13 @@
1
+ import { HapticFeedbackTypes } from "react-native-haptic-feedback";
2
+ import { IOIcons } from "@pagopa/io-app-design-system";
3
+
4
+ export type ToastVariant = "neutral" | "error" | "info" | "success" | "warning";
5
+
6
+ export type Toast = {
7
+ message: string;
8
+ variant?: ToastVariant;
9
+ icon?: IOIcons;
10
+ hapticFeedback?: keyof typeof HapticFeedbackTypes;
11
+ };
12
+
13
+ export type ToastOptions = Omit<Toast, "message">;
@@ -0,0 +1,88 @@
1
+ import React, { MutableRefObject } from "react";
2
+ import { ToastOptions } from "./types";
3
+ import { ToastContext } from "./context";
4
+
5
+ export const useIOToast = () => {
6
+ const { addToast, removeToast, removeAllToasts } =
7
+ React.useContext(ToastContext);
8
+
9
+ const show = React.useCallback(
10
+ (message: string, options?: ToastOptions) => {
11
+ addToast({ message, ...options });
12
+ },
13
+ [addToast]
14
+ );
15
+
16
+ const error = React.useCallback(
17
+ (message: string) => {
18
+ show(message, {
19
+ variant: "error",
20
+ icon: "errorFilled",
21
+ hapticFeedback: "notificationError"
22
+ });
23
+ },
24
+ [show]
25
+ );
26
+
27
+ const info = React.useCallback(
28
+ (message: string) => {
29
+ show(message, {
30
+ variant: "info",
31
+ icon: "infoFilled",
32
+ hapticFeedback: "impactMedium"
33
+ });
34
+ },
35
+ [show]
36
+ );
37
+
38
+ const success = React.useCallback(
39
+ (message: string) => {
40
+ show(message, {
41
+ variant: "success",
42
+ icon: "success",
43
+ hapticFeedback: "notificationSuccess"
44
+ });
45
+ },
46
+ [show]
47
+ );
48
+
49
+ const warning = React.useCallback(
50
+ (message: string) => {
51
+ show(message, {
52
+ variant: "warning",
53
+ icon: "warningFilled",
54
+ hapticFeedback: "notificationWarning"
55
+ });
56
+ },
57
+ [show]
58
+ );
59
+
60
+ return React.useMemo(
61
+ () => ({
62
+ show,
63
+ error,
64
+ info,
65
+ success,
66
+ warning,
67
+ hide: removeToast,
68
+ hideAll: removeAllToasts
69
+ }),
70
+ [show, error, info, success, warning, removeToast, removeAllToasts]
71
+ );
72
+ };
73
+
74
+ export type IOToast = ReturnType<typeof useIOToast>;
75
+
76
+ export const IOToastRef =
77
+ React.createRef<IOToast>() as MutableRefObject<IOToast>;
78
+
79
+ export const IOToast: IOToast = {
80
+ show: (message: string, options?: ToastOptions) =>
81
+ IOToastRef.current?.show(message, options),
82
+ error: (message: string) => IOToastRef.current?.error(message),
83
+ warning: (message: string) => IOToastRef.current?.warning(message),
84
+ success: (message: string) => IOToastRef.current?.success(message),
85
+ info: (message: string) => IOToastRef.current?.info(message),
86
+ hideAll: () => IOToastRef.current?.hideAll(),
87
+ hide: (id: number) => IOToastRef.current?.hide(id)
88
+ };