@btndprojects/loam-ui-native 0.1.0 → 0.2.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 (263) hide show
  1. package/README.md +56 -0
  2. package/dist/accordion/index.js +5 -3
  3. package/dist/adaptive/index.js +6 -2
  4. package/dist/alert/index.js +5 -2
  5. package/dist/analyzer/index.js +9 -6
  6. package/dist/announcement/index.js +8 -5
  7. package/dist/audio-player/index.js +5 -3
  8. package/dist/avatar/index.js +5 -2
  9. package/dist/avatar-group/index.js +7 -3
  10. package/dist/badge/index.js +7 -4
  11. package/dist/banner/index.js +5 -2
  12. package/dist/board/index.js +11 -6
  13. package/dist/button/index.js +6 -3
  14. package/dist/camera-permission/index.js +15 -12
  15. package/dist/capture-result/index.js +19 -16
  16. package/dist/card/index.js +6 -3
  17. package/dist/card-form/index.js +12 -8
  18. package/dist/carousel/index.js +4 -2
  19. package/dist/chart/index.js +8 -5
  20. package/dist/charts/index.js +8 -6
  21. package/dist/chat/index.js +16 -0
  22. package/dist/checkbox/index.js +6 -4
  23. package/dist/checklist/index.js +11 -8
  24. package/dist/checkout/index.js +16 -11
  25. package/dist/chip/index.js +7 -4
  26. package/dist/{chunk-XNUVB5OL.js → chunk-2OLKPG4E.js} +92 -28
  27. package/dist/{chunk-RUZHTGKB.js → chunk-2PKYGLQ6.js} +71 -40
  28. package/dist/{chunk-UC2WGUP3.js → chunk-2SWKL3AJ.js} +91 -252
  29. package/dist/{chunk-AI4DWZCD.js → chunk-2SY63FCH.js} +63 -16
  30. package/dist/{chunk-F5XNPWS7.js → chunk-2TXERVVA.js} +92 -35
  31. package/dist/chunk-36EC2T6P.js +581 -0
  32. package/dist/chunk-3DUWIYV5.js +437 -0
  33. package/dist/{chunk-RGQWWKLA.js → chunk-3QMEOFW5.js} +275 -71
  34. package/dist/chunk-3WEZCGHX.js +265 -0
  35. package/dist/chunk-46MMSDGL.js +194 -0
  36. package/dist/{chunk-7O2FMUPT.js → chunk-4IZXHVFJ.js} +297 -92
  37. package/dist/{chunk-LAECSR4H.js → chunk-5LAAAXFP.js} +14 -8
  38. package/dist/{chunk-2A5NIQAK.js → chunk-5RENVKBQ.js} +134 -46
  39. package/dist/{chunk-2ZZ7TDJ4.js → chunk-5UTRIXQ6.js} +37 -31
  40. package/dist/{chunk-LOE5YNN3.js → chunk-5VFZRGVD.js} +37 -10
  41. package/dist/{chunk-52X2VYTD.js → chunk-67IZZ2MJ.js} +115 -60
  42. package/dist/{chunk-UYG5L34B.js → chunk-6YAQBXB3.js} +10 -4
  43. package/dist/{chunk-BTTFCMKG.js → chunk-74FLKD24.js} +94 -23
  44. package/dist/{chunk-ITTYJZWX.js → chunk-7BUIKDD6.js} +73 -18
  45. package/dist/{chunk-FOKG57CR.js → chunk-7OVVSVEZ.js} +273 -109
  46. package/dist/chunk-AEB7KCHQ.js +287 -0
  47. package/dist/chunk-APCWFOZW.js +28 -0
  48. package/dist/chunk-AWKQIE5I.js +139 -0
  49. package/dist/{chunk-VCDBXW5H.js → chunk-B7N4ASYE.js} +86 -42
  50. package/dist/{chunk-IVNRBPGC.js → chunk-C4GTDLRC.js} +104 -20
  51. package/dist/{chunk-4ZAHCY44.js → chunk-C6APNDVA.js} +12 -5
  52. package/dist/{chunk-4SZYY6AN.js → chunk-CMTVNF3D.js} +18 -13
  53. package/dist/{chunk-WVKKJA6U.js → chunk-CPTOADB2.js} +151 -96
  54. package/dist/chunk-D5N5QWI7.js +1325 -0
  55. package/dist/{chunk-IIQTAY3J.js → chunk-DN7MNQIP.js} +113 -29
  56. package/dist/{chunk-47FWHGUN.js → chunk-DVGBZ3TX.js} +84 -23
  57. package/dist/chunk-DW3L54DQ.js +305 -0
  58. package/dist/{chunk-3ARE4TES.js → chunk-E2E3I5W2.js} +69 -18
  59. package/dist/{chunk-DHWADYZX.js → chunk-EDCBJV7J.js} +41 -28
  60. package/dist/{chunk-WSW6ZFAQ.js → chunk-ENP3BMZU.js} +4 -4
  61. package/dist/{chunk-OOPPQH27.js → chunk-EVOIGUBI.js} +43 -19
  62. package/dist/{chunk-VEAYTRPX.js → chunk-EY4DD67D.js} +165 -97
  63. package/dist/{chunk-223Q2T2Q.js → chunk-F3H33DQX.js} +132 -61
  64. package/dist/{chunk-CYRBHQQZ.js → chunk-F5B3UINI.js} +68 -35
  65. package/dist/{chunk-6X6PQ443.js → chunk-FAJI7BSC.js} +20 -9
  66. package/dist/{chunk-MOUJOP55.js → chunk-FUMHAAF3.js} +96 -29
  67. package/dist/{chunk-6HT2LP62.js → chunk-FV6HMP7W.js} +192 -73
  68. package/dist/{chunk-S7F6XLTK.js → chunk-FYWNRX4F.js} +76 -47
  69. package/dist/{chunk-YG3ZJHGU.js → chunk-FZGAAOKS.js} +30 -8
  70. package/dist/{chunk-YDGVJETP.js → chunk-G3AFC24V.js} +1 -1
  71. package/dist/{chunk-EJBDRVIH.js → chunk-G6UESEVN.js} +15 -8
  72. package/dist/chunk-GDKVKNR2.js +339 -0
  73. package/dist/chunk-GEIGMWNF.js +10 -0
  74. package/dist/{chunk-JUAMLEHX.js → chunk-H7DWSL4O.js} +24 -12
  75. package/dist/chunk-HJFFOOJ4.js +1 -0
  76. package/dist/{chunk-RW6ZL2FQ.js → chunk-HJLPZA4X.js} +106 -21
  77. package/dist/chunk-HYEOQWT7.js +647 -0
  78. package/dist/chunk-I2KLQ2HA.js +19 -0
  79. package/dist/{chunk-CJ5EOYZE.js → chunk-I4FHVKEC.js} +11 -5
  80. package/dist/{chunk-JNH2TYIN.js → chunk-IDM7JJMO.js} +19 -5
  81. package/dist/{chunk-O4AEHWII.js → chunk-IPUNJMAQ.js} +141 -49
  82. package/dist/{chunk-J7Q7VCVC.js → chunk-IT6FUXXG.js} +13 -6
  83. package/dist/{chunk-QJJ6MADV.js → chunk-IVKMZ7BB.js} +80 -28
  84. package/dist/{chunk-Z7H7VSFZ.js → chunk-IXKWIFWZ.js} +17 -6
  85. package/dist/chunk-J64KGCGX.js +55 -0
  86. package/dist/chunk-JBMLWFSJ.js +270 -0
  87. package/dist/{chunk-4BXMXBJO.js → chunk-JJLPBRVZ.js} +22 -11
  88. package/dist/chunk-JLC6PM5S.js +406 -0
  89. package/dist/chunk-JUYWSSKW.js +335 -0
  90. package/dist/{chunk-7CFF4HXS.js → chunk-JV5YOTOB.js} +49 -11
  91. package/dist/{chunk-LZLHELAG.js → chunk-KFJGFLMW.js} +29 -8
  92. package/dist/{chunk-O7AE6DAF.js → chunk-KQZ3GLHR.js} +18 -8
  93. package/dist/{chunk-N32RGOA5.js → chunk-LKFC4CS7.js} +80 -24
  94. package/dist/{chunk-YC6WORFL.js → chunk-LMPHCVJJ.js} +82 -50
  95. package/dist/{chunk-3WPW4KUN.js → chunk-LQP4KEXZ.js} +45 -13
  96. package/dist/{chunk-TKQYWZ5V.js → chunk-LUMVGO2K.js} +47 -31
  97. package/dist/{chunk-AWJOCGFZ.js → chunk-M656FYNH.js} +25 -13
  98. package/dist/{chunk-35OFI3JG.js → chunk-MKSNFG7H.js} +73 -20
  99. package/dist/{chunk-4GBOGOTV.js → chunk-NBEF4EPJ.js} +16 -6
  100. package/dist/chunk-NNCOFLNE.js +24 -0
  101. package/dist/{chunk-4YQOR7JM.js → chunk-NTQ2F3AU.js} +73 -20
  102. package/dist/{chunk-QCDXZBC5.js → chunk-O5V4TG3V.js} +126 -44
  103. package/dist/{chunk-U7TFM2JA.js → chunk-OJQUBQWA.js} +3 -3
  104. package/dist/{chunk-VQHPQEUH.js → chunk-OWAMM2DK.js} +13 -6
  105. package/dist/chunk-PID3NJB7.js +405 -0
  106. package/dist/{chunk-66SG2H23.js → chunk-PMMTGBBS.js} +27 -17
  107. package/dist/{chunk-RIBDXGUG.js → chunk-PNF3NKB5.js} +49 -16
  108. package/dist/{chunk-JXJB2X6M.js → chunk-Q6NKEPRE.js} +81 -32
  109. package/dist/chunk-QDZGFXQD.js +176 -0
  110. package/dist/{chunk-SYNOJOQO.js → chunk-QEYFDRHR.js} +60 -26
  111. package/dist/{chunk-VBOXAEPI.js → chunk-QHAITQIF.js} +97 -22
  112. package/dist/{chunk-VXDZFJGP.js → chunk-QHTVYA65.js} +230 -76
  113. package/dist/{chunk-TUTI5HOZ.js → chunk-QIKT7LIB.js} +14 -8
  114. package/dist/{chunk-3ENTMPQY.js → chunk-QP3KMOVF.js} +82 -42
  115. package/dist/{chunk-GNNJ4GCC.js → chunk-QPWDDJJ4.js} +62 -148
  116. package/dist/{chunk-QWCMU5B2.js → chunk-QRUMA22E.js} +205 -80
  117. package/dist/{chunk-ZVFE5QGU.js → chunk-QYPE5JX3.js} +50 -10
  118. package/dist/{chunk-PUPM2YGF.js → chunk-ROCUG24E.js} +76 -36
  119. package/dist/{chunk-NQYBUO3K.js → chunk-RU3ZPNL6.js} +333 -142
  120. package/dist/{chunk-TOXAGRDQ.js → chunk-RXSCIO6W.js} +14 -5
  121. package/dist/{chunk-FIF2M24N.js → chunk-SATMR6SG.js} +631 -203
  122. package/dist/{chunk-4YIP3CWS.js → chunk-SHHY5OMK.js} +7 -5
  123. package/dist/chunk-SKWO3SZF.js +2284 -0
  124. package/dist/{chunk-YF4NSSMT.js → chunk-SWS5JQIF.js} +41 -13
  125. package/dist/{chunk-CUMUNPXY.js → chunk-T5LTPKX6.js} +15 -7
  126. package/dist/{chunk-H6NIOQHK.js → chunk-TDMG26JI.js} +26 -6
  127. package/dist/{chunk-UWFLYMAR.js → chunk-TLCIR6RG.js} +267 -126
  128. package/dist/{chunk-SBMNWWBV.js → chunk-TN2ZNJUI.js} +47 -9
  129. package/dist/{chunk-5YNTNN5A.js → chunk-TQVAIKFD.js} +106 -41
  130. package/dist/chunk-TRGFFU6A.js +1456 -0
  131. package/dist/{chunk-2GK6PHGE.js → chunk-TY4MTKQJ.js} +100 -22
  132. package/dist/{chunk-AZRX6SAC.js → chunk-U23FYWME.js} +15 -7
  133. package/dist/{chunk-PZXZJBMP.js → chunk-U5NLHYV6.js} +26 -12
  134. package/dist/chunk-UQEN55EY.js +1 -0
  135. package/dist/chunk-UQGBTPXH.js +218 -0
  136. package/dist/chunk-UXGIW7OK.js +116 -0
  137. package/dist/{chunk-PJXUJYS6.js → chunk-UYGDJWMN.js} +55 -30
  138. package/dist/{chunk-QDYDBCFP.js → chunk-V2OEB75Z.js} +50 -51
  139. package/dist/{chunk-LSS54GLJ.js → chunk-VAOAKWUK.js} +34 -13
  140. package/dist/{chunk-DM5QUKKO.js → chunk-VDPK5CY4.js} +18 -6
  141. package/dist/chunk-W23G6JLF.js +37 -0
  142. package/dist/{chunk-CDRZHT42.js → chunk-W63AJTM7.js} +276 -12
  143. package/dist/{chunk-XXXEFXY5.js → chunk-W74TXYFB.js} +13 -5
  144. package/dist/{chunk-LRJNDEIA.js → chunk-WRDSPUE7.js} +144 -29
  145. package/dist/{chunk-C2NTXVWM.js → chunk-XBZGDDMR.js} +11 -4
  146. package/dist/{chunk-BV3B2HYZ.js → chunk-XIDTBCBA.js} +189 -131
  147. package/dist/{chunk-DSJBXLUG.js → chunk-XN4KG3P4.js} +348 -153
  148. package/dist/chunk-XQXMLMH3.js +211 -0
  149. package/dist/{chunk-HPPW424V.js → chunk-XTORZWRF.js} +19 -8
  150. package/dist/{chunk-P23EQNRQ.js → chunk-YAAHPATV.js} +181 -30
  151. package/dist/{chunk-KMI5ML5I.js → chunk-YXOAPXMU.js} +57 -18
  152. package/dist/{chunk-RJQOOHT2.js → chunk-ZECZOOSB.js} +59 -28
  153. package/dist/{chunk-QKXCPTFS.js → chunk-ZLTO5VQI.js} +121 -31
  154. package/dist/{chunk-BEDBFJND.js → chunk-ZVATDZOM.js} +16 -18
  155. package/dist/coachmark/index.js +6 -3
  156. package/dist/code-block/index.js +5 -3
  157. package/dist/color-field/index.js +6 -4
  158. package/dist/commerce/index.js +19 -16
  159. package/dist/connectivity/index.js +5 -2
  160. package/dist/context-menu/index.js +5 -3
  161. package/dist/copy-button/index.js +4 -2
  162. package/dist/data-grid/index.js +21 -16
  163. package/dist/date-range-picker/index.js +11 -8
  164. package/dist/description-list/index.js +3 -1
  165. package/dist/dialog/index.js +4 -2
  166. package/dist/empty-state/index.js +4 -2
  167. package/dist/error-summary/index.js +4 -2
  168. package/dist/fab/index.js +5 -2
  169. package/dist/file-manager/index.js +28 -0
  170. package/dist/file-upload/index.js +10 -7
  171. package/dist/filter-bar/index.js +9 -6
  172. package/dist/flow-run/index.js +15 -12
  173. package/dist/form/index.js +5 -3
  174. package/dist/gallery/index.js +5 -2
  175. package/dist/hold-to-confirm/index.js +4 -2
  176. package/dist/index.d.ts +9557 -2985
  177. package/dist/index.js +355 -122
  178. package/dist/infinite-list/index.js +4 -2
  179. package/dist/inline-edit/index.js +6 -4
  180. package/dist/input/index.js +5 -3
  181. package/dist/interactions/index.js +2 -1
  182. package/dist/invoice/index.js +13 -9
  183. package/dist/kbd/index.js +5 -1
  184. package/dist/keyboard/index.js +4 -2
  185. package/dist/list-row/index.js +6 -4
  186. package/dist/log-viewer/index.js +4 -2
  187. package/dist/map-view/index.js +5 -3
  188. package/dist/markdown/index.js +9 -6
  189. package/dist/metric/index.js +7 -4
  190. package/dist/money/index.js +9 -3
  191. package/dist/nav-drawer/index.js +4 -2
  192. package/dist/nav-header/index.js +9 -0
  193. package/dist/navigation/index.js +5 -2
  194. package/dist/notification-center/index.js +12 -10
  195. package/dist/number-roll/index.js +5 -2
  196. package/dist/one-handed/index.js +5 -3
  197. package/dist/os-surfaces/index.js +6 -3
  198. package/dist/otp/index.js +7 -4
  199. package/dist/page-header/index.js +1 -0
  200. package/dist/pagination/index.js +6 -0
  201. package/dist/payment-method/index.js +14 -10
  202. package/dist/payment-status/index.js +17 -14
  203. package/dist/permission/index.js +5 -2
  204. package/dist/picker/index.js +11 -6
  205. package/dist/progress/index.js +6 -3
  206. package/dist/pull-to-refresh/index.js +4 -2
  207. package/dist/radio-group/index.js +6 -4
  208. package/dist/rating/index.js +5 -2
  209. package/dist/receivables/index.js +21 -16
  210. package/dist/refund/index.js +18 -14
  211. package/dist/save-status/index.js +5 -3
  212. package/dist/scroll-area/index.js +3 -1
  213. package/dist/search-field/index.js +8 -0
  214. package/dist/segmented-control/index.js +4 -3
  215. package/dist/sheet/index.js +5 -3
  216. package/dist/skeleton/index.js +3 -1
  217. package/dist/slider/index.js +4 -2
  218. package/dist/sortable/index.js +7 -0
  219. package/dist/spinner/index.js +3 -1
  220. package/dist/split-button/index.js +9 -6
  221. package/dist/spotlight/index.js +3 -1
  222. package/dist/stage-timeline/index.js +5 -3
  223. package/dist/status-dot/index.js +4 -2
  224. package/dist/stepper/index.js +7 -4
  225. package/dist/streaming-text/index.js +3 -2
  226. package/dist/survey/index.js +18 -15
  227. package/dist/switch/index.js +5 -3
  228. package/dist/system-state/index.js +7 -4
  229. package/dist/tab-bar/index.js +5 -2
  230. package/dist/tabs/index.js +4 -2
  231. package/dist/tags-input/index.js +10 -0
  232. package/dist/textarea/index.js +6 -4
  233. package/dist/thinking/index.js +3 -1
  234. package/dist/time-field/index.js +12 -0
  235. package/dist/time-range-control/index.js +22 -0
  236. package/dist/timeline/index.js +4 -2
  237. package/dist/toast/index.js +4 -2
  238. package/dist/toolbar/index.js +4 -2
  239. package/dist/tour/index.js +12 -9
  240. package/dist/truncation-notice/index.js +5 -2
  241. package/dist/update-notice/index.js +12 -9
  242. package/dist/video-player/index.js +5 -2
  243. package/dist/viewfinder/index.js +6 -4
  244. package/dist/widget/index.js +7 -4
  245. package/dist/wizard/index.js +7 -4
  246. package/package.json +13 -12
  247. package/dist/chunk-6N33LFQA.js +0 -35
  248. package/dist/chunk-GDKZTW34.js +0 -395
  249. package/dist/chunk-GL7B2DOW.js +0 -134
  250. package/dist/chunk-NKB7BZYK.js +0 -167
  251. package/dist/chunk-OETCUXQP.js +0 -134
  252. package/dist/chunk-OPXFZ4Y5.js +0 -204
  253. package/dist/chunk-Q72LJOVE.js +0 -169
  254. package/dist/chunk-RNGLIHFA.js +0 -191
  255. package/dist/chunk-RQ3HASCC.js +0 -6
  256. package/dist/chunk-RSOJT5YW.js +0 -124
  257. package/dist/chunk-TKVFVF5D.js +0 -95
  258. package/dist/chunk-XOSCY2CW.js +0 -242
  259. package/dist/header/index.js +0 -5
  260. package/dist/search-bar/index.js +0 -5
  261. /package/dist/{chunk-3ECPOSKO.js → chunk-3UG6JUCV.js} +0 -0
  262. /package/dist/{chunk-JRLTGLN4.js → chunk-5WWRTEPS.js} +0 -0
  263. /package/dist/{chunk-RTIKSY6A.js → chunk-5Z5ZYMOJ.js} +0 -0
@@ -1,20 +1,53 @@
1
- import { OTP } from './chunk-52X2VYTD.js';
2
- import { SecurePayLabel } from './chunk-7CFF4HXS.js';
3
- import { Amount } from './chunk-VBOXAEPI.js';
4
- import { DescriptionList } from './chunk-TUTI5HOZ.js';
5
- import { Spinner } from './chunk-O7AE6DAF.js';
6
- import { Badge } from './chunk-SBMNWWBV.js';
7
- import { expandedProps } from './chunk-RQ3HASCC.js';
8
- import { Button } from './chunk-3ARE4TES.js';
9
- import { useResolvedMotion } from './chunk-6N33LFQA.js';
10
- import { Icon } from './chunk-TKVFVF5D.js';
1
+ import { OTP } from './chunk-67IZZ2MJ.js';
2
+ import { SecurePayLabel } from './chunk-JV5YOTOB.js';
3
+ import { Amount } from './chunk-QHAITQIF.js';
4
+ import { DescriptionList } from './chunk-QIKT7LIB.js';
5
+ import { Spinner } from './chunk-KQZ3GLHR.js';
6
+ import { usePayLabels } from './chunk-GEIGMWNF.js';
7
+ import { Badge } from './chunk-TN2ZNJUI.js';
8
+ import { expandedProps } from './chunk-W23G6JLF.js';
9
+ import { Button } from './chunk-E2E3I5W2.js';
10
+ import { useLabels, useLoamLocale } from './chunk-APCWFOZW.js';
11
+ import { Icon } from './chunk-UXGIW7OK.js';
12
+ import { useResolvedMotion } from './chunk-J64KGCGX.js';
11
13
  import * as React4 from 'react';
12
14
  import { Animated, Easing, View, Text, Pressable } from 'react-native';
13
15
  import { createStyleSheet, useLoamTheme, useStyles } from '@btndprojects/loam-theme-native';
14
- import { STATES, isTerminal, recoveryActions, declineHeadline, NOTHING_CHARGED, THREE_DS_TIMEOUT_SECONDS } from '@btndprojects/loam-pay';
16
+ import { STATES, stateText, isTerminal, declineText, recoveryActions, declineHeadline, nothingChargedText, THREE_DS_TIMEOUT_SECONDS } from '@btndprojects/loam-pay';
15
17
  import { jsx, jsxs } from 'react/jsx-runtime';
16
18
  import { icons } from '@btndprojects/loam-icons';
17
19
 
20
+ // src/payment-status/payment-status-labels.ts
21
+ var DEFAULT_LABELS = {
22
+ inProgress: "Payment in progress",
23
+ headlineAsync: "Your payment is on its way",
24
+ headlineSync: "Taking your payment",
25
+ cancelPayment: "Cancel payment",
26
+ reference: "Reference",
27
+ processingStatus: (headline, step) => `${headline}. ${step}.`,
28
+ receiptTitle: "Payment complete",
29
+ method: "Method",
30
+ date: "Date",
31
+ receipt: "Receipt",
32
+ sentTo: "Sent to",
33
+ receiptStatus: (title, id) => `${title}. Receipt ${id}.`,
34
+ chromeLabel: "Your bank is verifying this payment",
35
+ cancelAndGoBack: "Cancel and go back",
36
+ approve: "Approve",
37
+ authorise: "Authorise",
38
+ codeSent: (contact) => `We sent a code to ${contact}.`,
39
+ codeGroup: (digits) => `${digits}-digit verification code`,
40
+ digit: (index, total) => `Digit ${index} of ${total}`,
41
+ detailsForSupport: "Details for support",
42
+ nextStep: "Next step",
43
+ declineCode: "decline_code",
44
+ network: "network",
45
+ soft: "soft",
46
+ hard: "hard",
47
+ attempt: "attempt",
48
+ attemptOf: (attempt, allowed) => `${attempt} of ${allowed}`,
49
+ intent: "intent"
50
+ };
18
51
  var TONE_VARIANT = {
19
52
  good: "good",
20
53
  warn: "warn",
@@ -26,13 +59,15 @@ function StatePill({
26
59
  label,
27
60
  showCode = false,
28
61
  pulse = true,
62
+ labels: labelsProp,
29
63
  style
30
64
  }) {
31
- const theme = useLoamTheme();
65
+ const theme = useLoamTheme("payment-status");
32
66
  const { styles } = useStyles(sheet);
67
+ const pay = usePayLabels(labelsProp);
33
68
  const def = STATES[state];
34
69
  const pulsing = pulse && state === "processing";
35
- const words = label ?? def.label;
70
+ const words = label ?? stateText(state, pay).label;
36
71
  const dim = React4.useRef(new Animated.Value(1)).current;
37
72
  React4.useEffect(() => {
38
73
  if (!pulsing || theme.reduceMotion) {
@@ -78,7 +113,7 @@ function ProcessingStepRow({
78
113
  status,
79
114
  style
80
115
  }) {
81
- const theme = useLoamTheme();
116
+ const theme = useLoamTheme("payment-status");
82
117
  const { styles } = useStyles(sheet);
83
118
  const currentAttr = status === "active" ? { "aria-current": "step" } : {};
84
119
  return /* @__PURE__ */ jsxs(
@@ -129,57 +164,53 @@ function ProcessingPanel({
129
164
  reference,
130
165
  reservedUntil,
131
166
  onCancel,
132
- cancelLabel = "Cancel payment",
133
- locale,
167
+ cancelLabel,
168
+ locale: localeProp,
169
+ labels: labelsProp,
134
170
  style
135
171
  }) {
136
- const theme = useLoamTheme();
172
+ const labels = useLabels("paymentStatus", DEFAULT_LABELS, labelsProp);
173
+ const providerLocale = useLoamLocale();
174
+ const locale = localeProp ?? providerLocale;
175
+ const theme = useLoamTheme("payment-status");
137
176
  const { styles } = useStyles(sheet);
138
- const resolvedHeadline = headline ?? (isAsync ? "Your payment is on its way" : "Taking your payment");
177
+ const resolvedHeadline = headline ?? (isAsync ? labels.headlineAsync : labels.headlineSync);
139
178
  const active = steps.find((step) => step.status === "active");
140
179
  const showAsyncBlock = isAsync && Boolean(asyncNote || reference || reservedUntil);
141
- return /* @__PURE__ */ jsxs(
142
- View,
143
- {
144
- role: "region",
145
- accessibilityLabel: resolvedHeadline,
146
- style: [styles.panel, style],
147
- children: [
148
- /* @__PURE__ */ jsx(Spinner, { size: "xl", accessibilityLabel: "Payment in progress" }),
149
- /* @__PURE__ */ jsxs(View, { style: styles.centred, children: [
150
- /* @__PURE__ */ jsx(Text, { accessibilityRole: "header", style: styles.headline, children: resolvedHeadline }),
151
- eta ? /* @__PURE__ */ jsx(Text, { style: styles.eta, children: eta }) : null
152
- ] }),
153
- /* @__PURE__ */ jsxs(View, { style: styles.centred, children: [
154
- /* @__PURE__ */ jsx(Amount, { minor: amount, currency, size: "lg", weight: "bold", locale }),
155
- /* @__PURE__ */ jsx(Text, { style: styles.method, children: methodLabel })
156
- ] }),
157
- steps.length > 0 ? /* @__PURE__ */ jsx(View, { role: "list", accessibilityRole: "list", style: styles.ladder, children: steps.map((step) => /* @__PURE__ */ jsx(ProcessingStepRow, { label: step.label, status: step.status }, step.label)) }) : null,
158
- showAsyncBlock ? /* @__PURE__ */ jsxs(View, { style: styles.asyncBlock, children: [
159
- asyncNote ? /* @__PURE__ */ jsx(Text, { style: styles.asyncBody, children: asyncNote }) : null,
160
- reference ? /* @__PURE__ */ jsxs(View, { style: styles.referenceRow, children: [
161
- /* @__PURE__ */ jsx(Text, { style: styles.asyncOverline, children: "Reference" }),
162
- /* @__PURE__ */ jsx(Text, { selectable: true, style: styles.reference, children: reference })
163
- ] }) : null,
164
- reservedUntil ? /* @__PURE__ */ jsxs(View, { style: styles.reservedRow, children: [
165
- /* @__PURE__ */ jsx(Icon, { name: "clock", size: theme.icon.xs, color: theme.color.infoOnSoft }),
166
- /* @__PURE__ */ jsx(Text, { style: styles.reserved, children: reservedUntil })
167
- ] }) : null
168
- ] }) : null,
169
- onCancel ? /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "sm", onPress: onCancel, children: cancelLabel }) : null,
170
- /* @__PURE__ */ jsx(
171
- View,
172
- {
173
- role: "status",
174
- accessibilityLiveRegion: "polite",
175
- style: styles.srOnly,
176
- ...{ "aria-live": "polite" },
177
- children: /* @__PURE__ */ jsx(Text, { style: styles.srOnly, children: active ? `${resolvedHeadline}. ${active.label}.` : resolvedHeadline })
178
- }
179
- )
180
- ]
181
- }
182
- );
180
+ return /* @__PURE__ */ jsxs(View, { role: "region", accessibilityLabel: resolvedHeadline, style: [styles.panel, style], children: [
181
+ /* @__PURE__ */ jsx(Spinner, { size: "xl", accessibilityLabel: labels.inProgress }),
182
+ /* @__PURE__ */ jsxs(View, { style: styles.centred, children: [
183
+ /* @__PURE__ */ jsx(Text, { accessibilityRole: "header", style: styles.headline, children: resolvedHeadline }),
184
+ eta ? /* @__PURE__ */ jsx(Text, { style: styles.eta, children: eta }) : null
185
+ ] }),
186
+ /* @__PURE__ */ jsxs(View, { style: styles.centred, children: [
187
+ /* @__PURE__ */ jsx(Amount, { minor: amount, currency, size: "lg", weight: "bold", locale }),
188
+ /* @__PURE__ */ jsx(Text, { style: styles.method, children: methodLabel })
189
+ ] }),
190
+ steps.length > 0 ? /* @__PURE__ */ jsx(View, { role: "list", accessibilityRole: "list", style: styles.ladder, children: steps.map((step) => /* @__PURE__ */ jsx(ProcessingStepRow, { label: step.label, status: step.status }, step.label)) }) : null,
191
+ showAsyncBlock ? /* @__PURE__ */ jsxs(View, { style: styles.asyncBlock, children: [
192
+ asyncNote ? /* @__PURE__ */ jsx(Text, { style: styles.asyncBody, children: asyncNote }) : null,
193
+ reference ? /* @__PURE__ */ jsxs(View, { style: styles.referenceRow, children: [
194
+ /* @__PURE__ */ jsx(Text, { style: styles.asyncOverline, children: labels.reference }),
195
+ /* @__PURE__ */ jsx(Text, { selectable: true, style: styles.reference, children: reference })
196
+ ] }) : null,
197
+ reservedUntil ? /* @__PURE__ */ jsxs(View, { style: styles.reservedRow, children: [
198
+ /* @__PURE__ */ jsx(Icon, { name: "clock", size: theme.icon.xs, color: theme.color.infoOnSoft }),
199
+ /* @__PURE__ */ jsx(Text, { style: styles.reserved, children: reservedUntil })
200
+ ] }) : null
201
+ ] }) : null,
202
+ onCancel ? /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "sm", onPress: onCancel, children: cancelLabel ?? labels.cancelPayment }) : null,
203
+ /* @__PURE__ */ jsx(
204
+ View,
205
+ {
206
+ role: "status",
207
+ accessibilityLiveRegion: "polite",
208
+ style: styles.srOnly,
209
+ ...{ "aria-live": "polite" },
210
+ children: /* @__PURE__ */ jsx(Text, { style: styles.srOnly, children: active ? labels.processingStatus(resolvedHeadline, active.label) : resolvedHeadline })
211
+ }
212
+ )
213
+ ] });
183
214
  }
184
215
  var sheet = createStyleSheet((theme) => ({
185
216
  pillRow: { flexDirection: "row", alignItems: "center", gap: theme.space.s1 },
@@ -315,14 +346,18 @@ function formatTime(seconds) {
315
346
  function ThreeDSFrame({
316
347
  origin,
317
348
  secondsLeft,
318
- timeoutNote = "If the bank does not answer in time we will bring you back here. Nothing has been charged.",
319
- chromeLabel = "Your bank is verifying this payment",
320
- cancelLabel = "Cancel and go back",
349
+ timeoutNote,
350
+ chromeLabel: chromeLabelProp,
351
+ cancelLabel: cancelLabelProp,
321
352
  children,
353
+ labels: labelsProp,
322
354
  style,
323
355
  onCancel
324
356
  }) {
325
- const theme = useLoamTheme();
357
+ const labels = useLabels("paymentStatus", DEFAULT_LABELS, labelsProp);
358
+ const chromeLabel = chromeLabelProp ?? labels.chromeLabel;
359
+ const cancelLabel = cancelLabelProp ?? labels.cancelAndGoBack;
360
+ const theme = useLoamTheme("payment-status");
326
361
  const { styles } = useStyles(sheet2);
327
362
  const clamped = Math.max(0, Math.min(secondsLeft, THREE_DS_TIMEOUT_SECONDS));
328
363
  return /* @__PURE__ */ jsxs(View, { role: "region", accessibilityLabel: chromeLabel, style: [styles.frame, style], children: [
@@ -335,7 +370,7 @@ function ThreeDSFrame({
335
370
  /* @__PURE__ */ jsxs(View, { style: styles.footer, children: [
336
371
  /* @__PURE__ */ jsx(Icon, { name: "clock", size: theme.icon.xs, color: theme.color.text3 }),
337
372
  /* @__PURE__ */ jsx(Text, { role: "timer", style: styles.clock, children: formatTime(clamped) }),
338
- /* @__PURE__ */ jsx(Text, { style: styles.timeoutNote, children: timeoutNote })
373
+ timeoutNote ? /* @__PURE__ */ jsx(Text, { style: styles.timeoutNote, children: timeoutNote }) : null
339
374
  ] })
340
375
  ] });
341
376
  }
@@ -347,12 +382,14 @@ function ChallengeSurface({
347
382
  code,
348
383
  error,
349
384
  busy = false,
350
- note = "Codes expire after 8 minutes.",
351
- submitLabel = "Approve",
385
+ note,
386
+ submitLabel,
387
+ labels: labelsProp,
352
388
  style,
353
389
  onChangeCode,
354
390
  onSubmit
355
391
  }) {
392
+ const labels = useLabels("paymentStatus", DEFAULT_LABELS, labelsProp);
356
393
  const { styles } = useStyles(sheet2);
357
394
  const errorId = React4.useId();
358
395
  return /* @__PURE__ */ jsxs(
@@ -363,10 +400,10 @@ function ChallengeSurface({
363
400
  /* @__PURE__ */ jsxs(View, { style: styles.challengeHead, children: [
364
401
  /* @__PURE__ */ jsx(Text, { style: styles.bankName, children: bankName }),
365
402
  /* @__PURE__ */ jsxs(View, { style: styles.authoriseRow, children: [
366
- /* @__PURE__ */ jsx(Text, { style: styles.authorise, children: "Authorise" }),
403
+ /* @__PURE__ */ jsx(Text, { style: styles.authorise, children: labels.authorise }),
367
404
  amountLabel
368
405
  ] }),
369
- /* @__PURE__ */ jsx(Text, { style: styles.sentTo, children: `We sent a code to ${maskedContact}.` })
406
+ /* @__PURE__ */ jsx(Text, { style: styles.sentTo, children: labels.codeSent(maskedContact) })
370
407
  ] }),
371
408
  /* @__PURE__ */ jsx(View, { role: "group", "aria-describedby": error ? errorId : void 0, children: /* @__PURE__ */ jsx(
372
409
  OTP,
@@ -374,13 +411,22 @@ function ChallengeSurface({
374
411
  length: digits,
375
412
  value: code,
376
413
  error: error !== void 0,
377
- accessibilityLabel: `${digits}-digit verification code`,
414
+ accessibilityLabel: labels.codeGroup(digits),
378
415
  onChangeText: onChangeCode
379
416
  }
380
417
  ) }),
381
- error ? /* @__PURE__ */ jsx(Text, { nativeID: errorId, role: "alert", accessibilityLiveRegion: "assertive", style: styles.error, children: error }) : null,
382
- /* @__PURE__ */ jsx(Button, { size: "lg", fullWidth: true, loading: busy, onPress: () => onSubmit(code), children: submitLabel }),
383
- /* @__PURE__ */ jsx(Text, { style: styles.note, children: note })
418
+ error ? /* @__PURE__ */ jsx(
419
+ Text,
420
+ {
421
+ nativeID: errorId,
422
+ role: "alert",
423
+ accessibilityLiveRegion: "assertive",
424
+ style: styles.error,
425
+ children: error
426
+ }
427
+ ) : null,
428
+ /* @__PURE__ */ jsx(Button, { size: "lg", fullWidth: true, loading: busy, onPress: () => onSubmit(code), children: submitLabel ?? labels.approve }),
429
+ note ? /* @__PURE__ */ jsx(Text, { style: styles.note, children: note }) : null
384
430
  ]
385
431
  }
386
432
  );
@@ -503,17 +549,21 @@ function DeclineNotice({
503
549
  intentId,
504
550
  actions,
505
551
  showSupportDetails = false,
506
- detailsLabel = "Details for support",
507
- nextLabel = "Next step",
552
+ detailsLabel,
553
+ nextLabel,
554
+ labels: labelsProp,
508
555
  style,
509
556
  onAction,
510
557
  onToggleDetails
511
558
  }) {
512
- const theme = useLoamTheme();
559
+ const theme = useLoamTheme("payment-status");
513
560
  const { styles } = useStyles(sheet3);
561
+ const labels = useLabels("paymentStatus", DEFAULT_LABELS, labelsProp);
562
+ const pay = usePayLabels(labelsProp);
563
+ const text = declineText(decline, pay);
514
564
  const detailsId = React4.useId();
515
- const ladder = actions ?? recoveryActions(decline);
516
- const headline = declineHeadline(decline);
565
+ const ladder = actions ?? recoveryActions(decline, pay);
566
+ const headline = declineHeadline(decline, pay);
517
567
  return /* @__PURE__ */ jsxs(
518
568
  View,
519
569
  {
@@ -528,14 +578,14 @@ function DeclineNotice({
528
578
  /* @__PURE__ */ jsxs(View, { style: styles.headBody, children: [
529
579
  /* @__PURE__ */ jsx(Text, { accessibilityRole: "header", style: styles.headline, children: headline }),
530
580
  /* @__PURE__ */ jsxs(Text, { style: styles.explain, children: [
531
- `${decline.user} `,
532
- /* @__PURE__ */ jsx(Text, { style: styles.nothingCharged, children: NOTHING_CHARGED })
581
+ `${text.user} `,
582
+ /* @__PURE__ */ jsx(Text, { style: styles.nothingCharged, children: nothingChargedText(pay) })
533
583
  ] })
534
584
  ] })
535
585
  ] }),
536
586
  /* @__PURE__ */ jsxs(View, { style: styles.nextBox, children: [
537
- /* @__PURE__ */ jsx(Text, { style: styles.overline, children: nextLabel }),
538
- /* @__PURE__ */ jsx(Text, { style: styles.nextBody, children: decline.next })
587
+ /* @__PURE__ */ jsx(Text, { style: styles.overline, children: nextLabel ?? labels.nextStep }),
588
+ /* @__PURE__ */ jsx(Text, { style: styles.nextBody, children: text.next })
539
589
  ] }),
540
590
  /* @__PURE__ */ jsx(View, { style: styles.ladder, children: ladder.map((action) => /* @__PURE__ */ jsx(
541
591
  Button,
@@ -567,15 +617,15 @@ function DeclineNotice({
567
617
  color: theme.color.text2
568
618
  }
569
619
  ),
570
- /* @__PURE__ */ jsx(Text, { style: styles.drawerLabel, children: detailsLabel })
620
+ /* @__PURE__ */ jsx(Text, { style: styles.drawerLabel, children: detailsLabel ?? labels.detailsForSupport })
571
621
  ]
572
622
  }
573
623
  ),
574
624
  showSupportDetails ? /* @__PURE__ */ jsxs(View, { nativeID: detailsId, style: styles.details, children: [
575
- /* @__PURE__ */ jsx(DetailRow, { term: "decline_code", value: decline.code }),
576
- /* @__PURE__ */ jsx(DetailRow, { term: "network", value: decline.soft ? "soft" : "hard" }),
577
- /* @__PURE__ */ jsx(DetailRow, { term: "attempt", value: `${attempt} of ${attemptsAllowed}`, tabular: true }),
578
- /* @__PURE__ */ jsx(DetailRow, { term: "intent", value: intentId })
625
+ /* @__PURE__ */ jsx(DetailRow, { term: labels.declineCode, value: decline.code }),
626
+ /* @__PURE__ */ jsx(DetailRow, { term: labels.network, value: decline.soft ? labels.soft : labels.hard }),
627
+ /* @__PURE__ */ jsx(DetailRow, { term: labels.attempt, value: labels.attemptOf(attempt, attemptsAllowed), tabular: true }),
628
+ /* @__PURE__ */ jsx(DetailRow, { term: labels.intent, value: intentId })
579
629
  ] }) : null
580
630
  ] }) : null
581
631
  ]
@@ -677,7 +727,7 @@ var RING_TO = 1.6;
677
727
  function ReceiptPanel({
678
728
  amount,
679
729
  currency,
680
- title = "Payment complete",
730
+ title: titleProp,
681
731
  methodLabel,
682
732
  dateLabel,
683
733
  receiptId,
@@ -685,13 +735,18 @@ function ReceiptPanel({
685
735
  nextNote,
686
736
  actions,
687
737
  motion = "full",
688
- locale,
738
+ locale: localeProp,
739
+ labels: labelsProp,
689
740
  style,
690
741
  onAction
691
742
  }) {
692
- const theme = useLoamTheme();
743
+ const labels = useLabels("paymentStatus", DEFAULT_LABELS, labelsProp);
744
+ const providerLocale = useLoamLocale();
745
+ const locale = localeProp ?? providerLocale;
746
+ const title = titleProp ?? labels.receiptTitle;
747
+ const theme = useLoamTheme("payment-status");
693
748
  const { styles } = useStyles(sheet4);
694
- const resolved = useResolvedMotion(motion);
749
+ const resolved = useResolvedMotion(motion, "payment-status");
695
750
  const drawing = resolved === "full";
696
751
  const plate = React4.useRef(new Animated.Value(drawing ? 0 : 1)).current;
697
752
  const ring = React4.useRef(new Animated.Value(0)).current;
@@ -720,14 +775,14 @@ function ReceiptPanel({
720
775
  return () => anim.stop();
721
776
  }, [drawing, plate, ring, theme.easing.out, theme.duration.slow, theme.duration.slower]);
722
777
  const facts = [
723
- { term: "Method", description: methodLabel },
724
- { term: "Date", description: dateLabel },
778
+ { term: labels.method, description: methodLabel },
779
+ { term: labels.date, description: dateLabel },
725
780
  {
726
- term: "Receipt",
781
+ term: labels.receipt,
727
782
  description: /* @__PURE__ */ jsx(Text, { selectable: true, style: styles.mono, children: receiptId })
728
783
  }
729
784
  ];
730
- if (email) facts.push({ term: "Sent to", description: email });
785
+ if (email) facts.push({ term: labels.sentTo, description: email });
731
786
  return /* @__PURE__ */ jsxs(View, { role: "region", accessibilityLabel: title, style: [styles.panel, style], children: [
732
787
  /* @__PURE__ */ jsxs(
733
788
  View,
@@ -786,7 +841,7 @@ function ReceiptPanel({
786
841
  accessibilityLiveRegion: "polite",
787
842
  style: styles.srOnly,
788
843
  ...{ "aria-live": "polite" },
789
- children: /* @__PURE__ */ jsx(Text, { style: styles.srOnly, children: `${title}. Receipt ${receiptId}.` })
844
+ children: /* @__PURE__ */ jsx(Text, { style: styles.srOnly, children: labels.receiptStatus(title, receiptId) })
790
845
  }
791
846
  )
792
847
  ] });