@bifold/core 2.4.6 → 2.5.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 (401) hide show
  1. package/lib/commonjs/contexts/reducers/store.js +3 -2
  2. package/lib/commonjs/contexts/reducers/store.js.map +1 -1
  3. package/lib/commonjs/index.js +119 -104
  4. package/lib/commonjs/index.js.map +1 -1
  5. package/lib/commonjs/screens/AttemptLockout.js +27 -35
  6. package/lib/commonjs/screens/AttemptLockout.js.map +1 -1
  7. package/lib/commonjs/screens/MobileVerifierLoading.js +4 -3
  8. package/lib/commonjs/screens/MobileVerifierLoading.js.map +1 -1
  9. package/lib/commonjs/screens/PINCreate.js +3 -10
  10. package/lib/commonjs/screens/PINCreate.js.map +1 -1
  11. package/lib/commonjs/screens/WhatAreContacts.js +3 -2
  12. package/lib/commonjs/screens/WhatAreContacts.js.map +1 -1
  13. package/lib/module/contexts/reducers/store.js +3 -2
  14. package/lib/module/contexts/reducers/store.js.map +1 -1
  15. package/lib/module/index.js +42 -45
  16. package/lib/module/index.js.map +1 -1
  17. package/lib/module/screens/AttemptLockout.js +28 -36
  18. package/lib/module/screens/AttemptLockout.js.map +1 -1
  19. package/lib/module/screens/MobileVerifierLoading.js +4 -3
  20. package/lib/module/screens/MobileVerifierLoading.js.map +1 -1
  21. package/lib/module/screens/PINCreate.js +3 -10
  22. package/lib/module/screens/PINCreate.js.map +1 -1
  23. package/lib/module/screens/WhatAreContacts.js +3 -2
  24. package/lib/module/screens/WhatAreContacts.js.map +1 -1
  25. package/lib/typescript/src/contexts/reducers/store.d.ts.map +1 -1
  26. package/lib/typescript/src/index.d.ts +57 -61
  27. package/lib/typescript/src/index.d.ts.map +1 -1
  28. package/lib/typescript/src/screens/AttemptLockout.d.ts.map +1 -1
  29. package/lib/typescript/src/screens/MobileVerifierLoading.d.ts.map +1 -1
  30. package/lib/typescript/src/screens/PINCreate.d.ts.map +1 -1
  31. package/lib/typescript/src/screens/WhatAreContacts.d.ts.map +1 -1
  32. package/package.json +3 -4
  33. package/src/App.tsx +0 -79
  34. package/src/animated-components.ts +0 -30
  35. package/src/assets/fonts/MaterialIcons.ttf +0 -0
  36. package/src/assets/icons/code.svg +0 -4
  37. package/src/assets/icons/large-arrow.svg +0 -5
  38. package/src/assets/icons/pencil.svg +0 -15
  39. package/src/assets/icons/trash.svg +0 -31
  40. package/src/assets/img/Artwork_1024x1024.png +0 -0
  41. package/src/assets/img/HistoryCardAcceptedIcon.svg +0 -4
  42. package/src/assets/img/HistoryCardExpiredIcon.svg +0 -4
  43. package/src/assets/img/HistoryCardRevokedIcon.svg +0 -4
  44. package/src/assets/img/HistoryInformationSentIcon.svg +0 -4
  45. package/src/assets/img/HistoryPinUpdatedIcon.svg +0 -4
  46. package/src/assets/img/IconChevronRight.svg +0 -5
  47. package/src/assets/img/activity-indicator-circle.svg +0 -90
  48. package/src/assets/img/app-lockout.svg +0 -1
  49. package/src/assets/img/biometrics.svg +0 -74
  50. package/src/assets/img/chat-loading.svg +0 -1
  51. package/src/assets/img/check-in-circle.svg +0 -18
  52. package/src/assets/img/connection-pending.svg +0 -112
  53. package/src/assets/img/contact-book.svg +0 -21
  54. package/src/assets/img/credential-card.svg +0 -18
  55. package/src/assets/img/credential-declined.svg +0 -28
  56. package/src/assets/img/credential-in-hand.svg +0 -48
  57. package/src/assets/img/credential-list.svg +0 -60
  58. package/src/assets/img/credential-pending.svg +0 -96
  59. package/src/assets/img/credential-success.svg +0 -48
  60. package/src/assets/img/delete-notification.svg +0 -1
  61. package/src/assets/img/empty-wallet.svg +0 -23
  62. package/src/assets/img/error-filled.svg +0 -12
  63. package/src/assets/img/exclamation-mark.svg +0 -17
  64. package/src/assets/img/home-center-img.svg +0 -71
  65. package/src/assets/img/icon-credential-offer-dark.svg +0 -7
  66. package/src/assets/img/icon-credential-offer-light.svg +0 -7
  67. package/src/assets/img/icon-info-recieved-dark.svg +0 -8
  68. package/src/assets/img/icon-info-recieved-light.svg +0 -8
  69. package/src/assets/img/icon-info-sent-dark.svg +0 -8
  70. package/src/assets/img/icon-info-sent-light.svg +0 -8
  71. package/src/assets/img/icon-proof-request-dark.svg +0 -11
  72. package/src/assets/img/icon-proof-request-light.svg +0 -11
  73. package/src/assets/img/information-received.svg +0 -1
  74. package/src/assets/img/logo-large.png +0 -0
  75. package/src/assets/img/logo-large@2x.png +0 -0
  76. package/src/assets/img/logo-large@3x.png +0 -0
  77. package/src/assets/img/logo.svg +0 -15
  78. package/src/assets/img/message-text-icon-outline.svg +0 -1
  79. package/src/assets/img/message-text-icon.svg +0 -1
  80. package/src/assets/img/no_information_shared.svg +0 -36
  81. package/src/assets/img/preface.svg +0 -15
  82. package/src/assets/img/proof-declined.svg +0 -66
  83. package/src/assets/img/proof-pending.svg +0 -61
  84. package/src/assets/img/proof-success.svg +0 -72
  85. package/src/assets/img/push-notifications.svg +0 -1
  86. package/src/assets/img/qrcode-scan-icon.svg +0 -1
  87. package/src/assets/img/scan-share.svg +0 -102
  88. package/src/assets/img/secure-check.svg +0 -4
  89. package/src/assets/img/secure-image.svg +0 -64
  90. package/src/assets/img/update-available.svg +0 -26
  91. package/src/assets/img/verifier-request-declined.svg +0 -34
  92. package/src/assets/img/wallet-back.svg +0 -20
  93. package/src/assets/img/wallet-front.svg +0 -32
  94. package/src/assets/img/wallet-icon-outline.svg +0 -1
  95. package/src/assets/img/wallet-icon.svg +0 -1
  96. package/src/assets/img/wallet.svg +0 -43
  97. package/src/assets/oca-bundles.json +0 -174
  98. package/src/components/animated/ButtonLoading.tsx +0 -32
  99. package/src/components/animated/ConnectionLoading.tsx +0 -53
  100. package/src/components/animated/CredentialAdded.tsx +0 -72
  101. package/src/components/animated/CredentialPending.tsx +0 -63
  102. package/src/components/animated/LoadingIndicator.tsx +0 -49
  103. package/src/components/animated/PresentationLoading.tsx +0 -52
  104. package/src/components/animated/RecordLoading.tsx +0 -75
  105. package/src/components/animated/SendingProof.tsx +0 -53
  106. package/src/components/animated/SentProof.tsx +0 -72
  107. package/src/components/buttons/Button-api.tsx +0 -46
  108. package/src/components/buttons/Button.tsx +0 -125
  109. package/src/components/buttons/HeaderHome.tsx +0 -25
  110. package/src/components/buttons/IconButton.tsx +0 -93
  111. package/src/components/buttons/InfoIcon.tsx +0 -35
  112. package/src/components/buttons/SettingsMenu.tsx +0 -26
  113. package/src/components/buttons/ToggleButton.tsx +0 -93
  114. package/src/components/buttons/index.ts +0 -4
  115. package/src/components/chat/ActionSlider.tsx +0 -104
  116. package/src/components/chat/ChatActions.tsx +0 -33
  117. package/src/components/chat/ChatBubble.tsx +0 -20
  118. package/src/components/chat/ChatEvent.tsx +0 -31
  119. package/src/components/chat/ChatMessage.tsx +0 -142
  120. package/src/components/chat/MessageInput.tsx +0 -46
  121. package/src/components/chat/index.ts +0 -4
  122. package/src/components/forms/WalletNameForm.tsx +0 -148
  123. package/src/components/index.ts +0 -4
  124. package/src/components/inputs/BiometryControl.tsx +0 -190
  125. package/src/components/inputs/BulletPoint.tsx +0 -32
  126. package/src/components/inputs/CheckBoxRow.tsx +0 -67
  127. package/src/components/inputs/InlineErrorText.tsx +0 -60
  128. package/src/components/inputs/LimitedTextInput.tsx +0 -71
  129. package/src/components/inputs/PINInput.tsx +0 -175
  130. package/src/components/inputs/SingleSelectBlock.tsx +0 -53
  131. package/src/components/listItems/ContactCredentialListItem.tsx +0 -79
  132. package/src/components/listItems/ContactListItem.tsx +0 -121
  133. package/src/components/listItems/NotificationListItem.tsx +0 -514
  134. package/src/components/misc/AvatarView.tsx +0 -33
  135. package/src/components/misc/CardWatermark.tsx +0 -52
  136. package/src/components/misc/ConnectionAlert.tsx +0 -123
  137. package/src/components/misc/ConnectionImage.tsx +0 -45
  138. package/src/components/misc/ContentGradient.tsx +0 -40
  139. package/src/components/misc/CredentialCard.tsx +0 -161
  140. package/src/components/misc/CredentialCard10.tsx +0 -329
  141. package/src/components/misc/CredentialCard11.tsx +0 -701
  142. package/src/components/misc/CredentialCard11ActionFooter.tsx +0 -55
  143. package/src/components/misc/CredentialCard11Issuer.tsx +0 -74
  144. package/src/components/misc/CredentialCard11Logo.tsx +0 -61
  145. package/src/components/misc/EmptyList.tsx +0 -27
  146. package/src/components/misc/EmptyListContacts.tsx +0 -55
  147. package/src/components/misc/ErrorBoundary.tsx +0 -200
  148. package/src/components/misc/FauxHeader.tsx +0 -75
  149. package/src/components/misc/InfoBox.tsx +0 -283
  150. package/src/components/misc/NoNewUpdates.tsx +0 -38
  151. package/src/components/misc/PINHeader.tsx +0 -25
  152. package/src/components/misc/PINValidationHelper.tsx +0 -48
  153. package/src/components/misc/Pagination.tsx +0 -114
  154. package/src/components/misc/QRRenderer.tsx +0 -53
  155. package/src/components/misc/QRScanner.tsx +0 -395
  156. package/src/components/misc/QRScannerTorch.tsx +0 -74
  157. package/src/components/misc/ScanCamera.tsx +0 -86
  158. package/src/components/misc/ScanTab.tsx +0 -45
  159. package/src/components/misc/SharedProofData.tsx +0 -98
  160. package/src/components/misc/UnorderedList.tsx +0 -28
  161. package/src/components/misc/VerifierCredentialCard.tsx +0 -378
  162. package/src/components/misc/index.ts +0 -2
  163. package/src/components/modals/AlertModal.tsx +0 -42
  164. package/src/components/modals/AppGuideModal.tsx +0 -142
  165. package/src/components/modals/CameraDisclosureModal.tsx +0 -126
  166. package/src/components/modals/CommonRemoveModal.tsx +0 -337
  167. package/src/components/modals/DeveloperModal.tsx +0 -32
  168. package/src/components/modals/DismissiblePopupModal.tsx +0 -169
  169. package/src/components/modals/ErrorModal.tsx +0 -107
  170. package/src/components/modals/ImageModal.tsx +0 -80
  171. package/src/components/modals/NetInfoModal.tsx +0 -35
  172. package/src/components/modals/PopupModal.tsx +0 -56
  173. package/src/components/modals/ProofCancelModal.tsx +0 -79
  174. package/src/components/modals/SafeAreaModal.tsx +0 -17
  175. package/src/components/record/Record.tsx +0 -100
  176. package/src/components/record/RecordBinaryField.tsx +0 -55
  177. package/src/components/record/RecordDateIntField.tsx +0 -63
  178. package/src/components/record/RecordField.tsx +0 -154
  179. package/src/components/record/RecordFooter.tsx +0 -17
  180. package/src/components/record/RecordHeader.tsx +0 -17
  181. package/src/components/record/RecordRemove.tsx +0 -66
  182. package/src/components/texts/HeaderTitle.tsx +0 -25
  183. package/src/components/texts/HighlightTextBox.tsx +0 -41
  184. package/src/components/texts/InfoTextBox.tsx +0 -129
  185. package/src/components/texts/Link.tsx +0 -41
  186. package/src/components/texts/Text.tsx +0 -21
  187. package/src/components/texts/ThemedText.tsx +0 -24
  188. package/src/components/toast/BaseToast.tsx +0 -128
  189. package/src/components/toast/ToastConfig.tsx +0 -21
  190. package/src/components/tour/AttachTourStep.tsx +0 -73
  191. package/src/components/tour/CredentialOfferTourSteps.tsx +0 -41
  192. package/src/components/tour/CredentialsTourSteps.tsx +0 -41
  193. package/src/components/tour/HomeTourSteps.tsx +0 -104
  194. package/src/components/tour/ProofRequestTourSteps.tsx +0 -41
  195. package/src/components/tour/SpotCutout.tsx +0 -65
  196. package/src/components/tour/TourBox.tsx +0 -255
  197. package/src/components/tour/TourOverlay.tsx +0 -134
  198. package/src/components/views/Banner.tsx +0 -181
  199. package/src/components/views/CredentialCardLogo.tsx +0 -77
  200. package/src/components/views/CredentialDetailPrimaryHeader.tsx +0 -107
  201. package/src/components/views/CredentialDetailSecondaryHeader.tsx +0 -60
  202. package/src/components/views/HeaderWithBanner.tsx +0 -17
  203. package/src/components/views/HomeFooterView.tsx +0 -110
  204. package/src/components/views/HomeHeaderView.tsx +0 -12
  205. package/src/components/views/KeyboardView.tsx +0 -41
  206. package/src/components/views/LoadingPlaceholder.tsx +0 -168
  207. package/src/components/views/LoadingView.tsx +0 -29
  208. package/src/components/views/ProgressBar.tsx +0 -53
  209. package/src/components/views/PushNotificationsContent.tsx +0 -51
  210. package/src/components/views/PushNotificationsDisabledContent.tsx +0 -47
  211. package/src/configs/ledgers/indy/index.ts +0 -8
  212. package/src/configs/ledgers/indy/ledgers.json +0 -51
  213. package/src/constants.ts +0 -107
  214. package/src/container-api.ts +0 -247
  215. package/src/container-impl.ts +0 -243
  216. package/src/contexts/activity.tsx +0 -145
  217. package/src/contexts/animated-components.ts +0 -9
  218. package/src/contexts/auth.tsx +0 -240
  219. package/src/contexts/index.ts +0 -3
  220. package/src/contexts/navigation.tsx +0 -19
  221. package/src/contexts/network.tsx +0 -125
  222. package/src/contexts/reducers/index.ts +0 -3
  223. package/src/contexts/reducers/store.ts +0 -754
  224. package/src/contexts/store.tsx +0 -103
  225. package/src/contexts/theme.tsx +0 -51
  226. package/src/contexts/tour/tour-context.tsx +0 -160
  227. package/src/contexts/tour/tour-provider.tsx +0 -160
  228. package/src/hooks/bundle-resolver.ts +0 -95
  229. package/src/hooks/chat-messages.tsx +0 -263
  230. package/src/hooks/connections.ts +0 -37
  231. package/src/hooks/credential-card-styles.ts +0 -144
  232. package/src/hooks/credentials.ts +0 -11
  233. package/src/hooks/deep-links.ts +0 -49
  234. package/src/hooks/developer-mode.ts +0 -25
  235. package/src/hooks/lockout.ts +0 -77
  236. package/src/hooks/notifications.ts +0 -108
  237. package/src/hooks/oob.ts +0 -17
  238. package/src/hooks/proof-request-templates.ts +0 -40
  239. package/src/hooks/proofs.ts +0 -32
  240. package/src/hooks/screen-capture.ts +0 -52
  241. package/src/hooks/useBifoldAgentSetup.ts +0 -169
  242. package/src/hooks/useOnboardingState.ts +0 -53
  243. package/src/hooks/usePINValidation.ts +0 -98
  244. package/src/index.ts +0 -239
  245. package/src/layout/ScreenLayout.tsx +0 -53
  246. package/src/localization/en/en.json +0 -951
  247. package/src/localization/en/index.ts +0 -3
  248. package/src/localization/fr/fr.json +0 -933
  249. package/src/localization/fr/index.ts +0 -3
  250. package/src/localization/index.ts +0 -66
  251. package/src/localization/pt-br/index.ts +0 -3
  252. package/src/localization/pt-br/pt-br.json +0 -911
  253. package/src/modules/history/context/historyManager.tsx +0 -247
  254. package/src/modules/history/index.ts +0 -2
  255. package/src/modules/history/navigation/HistoryStack.tsx +0 -29
  256. package/src/modules/history/services/queue.service.tsx +0 -31
  257. package/src/modules/history/types/index.ts +0 -92
  258. package/src/modules/history/ui/HistoryPage.tsx +0 -133
  259. package/src/modules/history/ui/HistorySettings.tsx +0 -183
  260. package/src/modules/history/ui/assets/img/HistoryCardAcceptedIcon.svg +0 -4
  261. package/src/modules/history/ui/assets/img/HistoryCardExpiredIcon.svg +0 -4
  262. package/src/modules/history/ui/assets/img/HistoryCardRevokedIcon.svg +0 -4
  263. package/src/modules/history/ui/assets/img/HistoryInformationSentIcon.svg +0 -4
  264. package/src/modules/history/ui/assets/img/HistoryPinUpdatedIcon.svg +0 -4
  265. package/src/modules/history/ui/assets/img/IconChevronRight.svg +0 -3
  266. package/src/modules/history/ui/components/BulletPoint.tsx +0 -49
  267. package/src/modules/history/ui/components/HistoryListItem.tsx +0 -251
  268. package/src/modules/history/ui/components/HistoryMenu.tsx +0 -25
  269. package/src/modules/history/ui/components/SingleSelectBlock.tsx +0 -72
  270. package/src/modules/openid/components/CredentialRowCard.tsx +0 -64
  271. package/src/modules/openid/components/OpenIDCredentialCard.tsx +0 -276
  272. package/src/modules/openid/context/OpenIDCredentialRecordProvider.tsx +0 -296
  273. package/src/modules/openid/display.tsx +0 -467
  274. package/src/modules/openid/displayProof.tsx +0 -86
  275. package/src/modules/openid/hooks/openid.tsx +0 -111
  276. package/src/modules/openid/metadata.tsx +0 -59
  277. package/src/modules/openid/offerResolve.tsx +0 -281
  278. package/src/modules/openid/resolverProof.tsx +0 -286
  279. package/src/modules/openid/screens/OpenIDCredentialDetails.tsx +0 -214
  280. package/src/modules/openid/screens/OpenIDCredentialOffer.tsx +0 -192
  281. package/src/modules/openid/screens/OpenIDProofChangeCredential.tsx +0 -133
  282. package/src/modules/openid/screens/OpenIDProofPresentation.tsx +0 -423
  283. package/src/modules/openid/types.tsx +0 -111
  284. package/src/modules/openid/utils/utils.tsx +0 -119
  285. package/src/navigators/ConnectStack.tsx +0 -68
  286. package/src/navigators/ContactStack.tsx +0 -91
  287. package/src/navigators/CredentialStack.tsx +0 -48
  288. package/src/navigators/DeliveryStack.tsx +0 -76
  289. package/src/navigators/HomeStack.tsx +0 -37
  290. package/src/navigators/MainStack.tsx +0 -146
  291. package/src/navigators/NotificationStack.tsx +0 -56
  292. package/src/navigators/OnboardingScreens.ts +0 -142
  293. package/src/navigators/OnboardingStack.tsx +0 -205
  294. package/src/navigators/ProofRequestStack.tsx +0 -113
  295. package/src/navigators/RootStack.tsx +0 -71
  296. package/src/navigators/SettingStack.tsx +0 -174
  297. package/src/navigators/TabStack.tsx +0 -304
  298. package/src/navigators/defaultLayoutOptions.tsx +0 -17
  299. package/src/navigators/defaultStackOptions.tsx +0 -102
  300. package/src/navigators/index.ts +0 -27
  301. package/src/onboarding.ts +0 -90
  302. package/src/screens/AttemptLockout.tsx +0 -153
  303. package/src/screens/AutoLock.tsx +0 -140
  304. package/src/screens/Biometry.tsx +0 -54
  305. package/src/screens/Chat.tsx +0 -141
  306. package/src/screens/ConfigureMediator.tsx +0 -160
  307. package/src/screens/Connection.tsx +0 -394
  308. package/src/screens/ContactDetails.tsx +0 -350
  309. package/src/screens/CredentialDetails.tsx +0 -473
  310. package/src/screens/CredentialOffer.tsx +0 -334
  311. package/src/screens/CredentialOfferAccept.tsx +0 -189
  312. package/src/screens/DataRetention.tsx +0 -91
  313. package/src/screens/Developer.tsx +0 -289
  314. package/src/screens/Home.tsx +0 -173
  315. package/src/screens/JSONDetails.tsx +0 -104
  316. package/src/screens/Language.tsx +0 -97
  317. package/src/screens/ListContacts.tsx +0 -112
  318. package/src/screens/ListCredentials.tsx +0 -135
  319. package/src/screens/ListProofRequests.tsx +0 -148
  320. package/src/screens/MobileVerifierLoading.tsx +0 -106
  321. package/src/screens/NameWallet.tsx +0 -9
  322. package/src/screens/Onboarding.tsx +0 -162
  323. package/src/screens/OnboardingPages.tsx +0 -160
  324. package/src/screens/PINChange.tsx +0 -249
  325. package/src/screens/PINCreate.tsx +0 -185
  326. package/src/screens/PINEnter.tsx +0 -432
  327. package/src/screens/PINExplainer.tsx +0 -85
  328. package/src/screens/PINVerify.tsx +0 -195
  329. package/src/screens/PasteUrl.tsx +0 -140
  330. package/src/screens/Preface.tsx +0 -78
  331. package/src/screens/ProofChangeCredential.tsx +0 -179
  332. package/src/screens/ProofDetails.tsx +0 -348
  333. package/src/screens/ProofRequest.tsx +0 -999
  334. package/src/screens/ProofRequestAccept.tsx +0 -133
  335. package/src/screens/ProofRequestDetails.tsx +0 -270
  336. package/src/screens/ProofRequestUsageHistory.tsx +0 -152
  337. package/src/screens/ProofRequesting.tsx +0 -245
  338. package/src/screens/PushNotifications.tsx +0 -59
  339. package/src/screens/RenameContact.tsx +0 -155
  340. package/src/screens/RenameWallet.tsx +0 -26
  341. package/src/screens/Scan.tsx +0 -145
  342. package/src/screens/ScanHelp.tsx +0 -48
  343. package/src/screens/Settings.tsx +0 -415
  344. package/src/screens/Splash.tsx +0 -80
  345. package/src/screens/Terms.tsx +0 -127
  346. package/src/screens/ToggleBiometry.tsx +0 -153
  347. package/src/screens/TogglePushNotifications.tsx +0 -118
  348. package/src/screens/Tours.tsx +0 -93
  349. package/src/screens/UpdateAvailable.tsx +0 -119
  350. package/src/screens/WhatAreContacts.tsx +0 -71
  351. package/src/services/bifoldLogger.ts +0 -3
  352. package/src/services/keychain.ts +0 -184
  353. package/src/services/logger.ts +0 -89
  354. package/src/services/storage.ts +0 -136
  355. package/src/theme-builder.ts +0 -157
  356. package/src/theme.interface.ts +0 -580
  357. package/src/theme.ts +0 -1346
  358. package/src/types/attempt-lockout-config.ts +0 -8
  359. package/src/types/attestation.ts +0 -17
  360. package/src/types/chat.ts +0 -4
  361. package/src/types/config.ts +0 -64
  362. package/src/types/contact-details.ts +0 -5
  363. package/src/types/credential-list-footer.ts +0 -3
  364. package/src/types/credential-status.ts +0 -3
  365. package/src/types/credentials.ts +0 -7
  366. package/src/types/decline.ts +0 -5
  367. package/src/types/error.ts +0 -40
  368. package/src/types/fn.ts +0 -2
  369. package/src/types/genesis.ts +0 -35
  370. package/src/types/index.ts +0 -2
  371. package/src/types/metadata.ts +0 -16
  372. package/src/types/navigators.ts +0 -239
  373. package/src/types/notification.ts +0 -24
  374. package/src/types/permissions.ts +0 -2
  375. package/src/types/proof-items.ts +0 -32
  376. package/src/types/react-i18next.d.ts +0 -10
  377. package/src/types/remove.ts +0 -8
  378. package/src/types/security.ts +0 -32
  379. package/src/types/settings.ts +0 -28
  380. package/src/types/state.ts +0 -97
  381. package/src/types/tour.ts +0 -20
  382. package/src/types/version-check.ts +0 -18
  383. package/src/utils/PINValidation.ts +0 -98
  384. package/src/utils/agent.ts +0 -128
  385. package/src/utils/anonCredsProofRequestMapper.ts +0 -205
  386. package/src/utils/contacts.ts +0 -59
  387. package/src/utils/cred-def.ts +0 -33
  388. package/src/utils/credential.ts +0 -37
  389. package/src/utils/crypto.ts +0 -12
  390. package/src/utils/fileCache.ts +0 -152
  391. package/src/utils/helpers.ts +0 -1292
  392. package/src/utils/ledger.ts +0 -212
  393. package/src/utils/luminance.ts +0 -40
  394. package/src/utils/mediatorhelpers.ts +0 -71
  395. package/src/utils/migration.ts +0 -40
  396. package/src/utils/network.tsx +0 -55
  397. package/src/utils/oca.ts +0 -173
  398. package/src/utils/parsers.tsx +0 -111
  399. package/src/utils/proofBundle.ts +0 -220
  400. package/src/utils/schema.ts +0 -28
  401. package/src/utils/testable.ts +0 -17
@@ -1,31 +0,0 @@
1
- import React from 'react'
2
- import { View } from 'react-native'
3
-
4
- import { useTheme } from '../../contexts/theme'
5
- import { Role } from '../../types/chat'
6
- import { ThemedText } from '../texts/ThemedText'
7
-
8
- interface ChatEventProps {
9
- userLabel?: string
10
- actionLabel?: string
11
- role: Role
12
- }
13
-
14
- export const ChatEvent: React.FC<ChatEventProps> = ({ userLabel, actionLabel, role }) => {
15
- const { ChatTheme } = useTheme()
16
-
17
- return (
18
- <View style={{ flexDirection: 'row', flexWrap: 'wrap' }}>
19
- {userLabel && (
20
- <ThemedText style={[role === Role.me ? ChatTheme.rightText : ChatTheme.leftText, { marginRight: 4 }]}>
21
- {userLabel}
22
- </ThemedText>
23
- )}
24
- {actionLabel && (
25
- <ThemedText style={role === Role.me ? ChatTheme.rightTextHighlighted : ChatTheme.leftTextHighlighted}>
26
- {actionLabel}
27
- </ThemedText>
28
- )}
29
- </View>
30
- )
31
- }
@@ -1,142 +0,0 @@
1
- import React, { useMemo } from 'react'
2
- import { useTranslation } from 'react-i18next'
3
- import { TouchableOpacity, View } from 'react-native'
4
- import { Bubble, IMessage, Message } from 'react-native-gifted-chat'
5
-
6
- import { hitSlop } from '../../constants'
7
- import { useTheme } from '../../contexts/theme'
8
- import { Role } from '../../types/chat'
9
- import { formatTime } from '../../utils/helpers'
10
- import { testIdWithKey } from '../../utils/testable'
11
- import { ThemedText } from '../texts/ThemedText'
12
-
13
- export enum CallbackType {
14
- CredentialOffer = 'CredentialOffer',
15
- ProofRequest = 'ProofRequest',
16
- PresentationSent = 'PresentationSent',
17
- }
18
-
19
- export interface ChatMessageProps {
20
- messageProps: React.ComponentProps<typeof Message>
21
- }
22
-
23
- export interface ExtendedChatMessage extends IMessage {
24
- renderEvent: () => JSX.Element
25
- createdAt: Date
26
- messageOpensCallbackType?: CallbackType
27
- onDetails?: () => void
28
- }
29
-
30
- const MessageTime: React.FC<{ message: ExtendedChatMessage }> = ({ message }) => {
31
- const { ChatTheme: theme } = useTheme()
32
-
33
- return (
34
- <ThemedText style={message.user._id === Role.me ? theme.timeStyleRight : theme.timeStyleLeft}>
35
- {formatTime(message.createdAt, { includeHour: true, chatFormat: true, trim: true })}
36
- </ThemedText>
37
- )
38
- }
39
-
40
- const MessageIcon: React.FC<{ type: CallbackType }> = ({ type }) => {
41
- const { ChatTheme: theme, Assets } = useTheme()
42
-
43
- return (
44
- <View style={{ ...theme.documentIconContainer }}>
45
- {type === CallbackType.CredentialOffer && <Assets.svg.iconCredentialOfferLight width={40} height={40} />}
46
- {type === CallbackType.PresentationSent && <Assets.svg.iconInfoSentLight width={40} height={40} />}
47
- {type === CallbackType.ProofRequest && <Assets.svg.iconProofRequestLight width={40} height={40} />}
48
- </View>
49
- )
50
- }
51
-
52
- export const ChatMessage: React.FC<ChatMessageProps> = ({ messageProps }) => {
53
- const { t } = useTranslation()
54
- const { ChatTheme: theme } = useTheme()
55
- const message = useMemo(() => messageProps.currentMessage as ExtendedChatMessage, [messageProps])
56
-
57
- const textForCallbackType = (callbackType: CallbackType) => {
58
- // Receiving a credential offer
59
- if (callbackType === CallbackType.CredentialOffer) {
60
- return t('Chat.ViewOffer')
61
- }
62
-
63
- // Receiving a proof request
64
- if (callbackType === CallbackType.ProofRequest) {
65
- return t('Chat.ViewRequest')
66
- }
67
-
68
- // After a presentation of a proof
69
- if (callbackType === CallbackType.PresentationSent) {
70
- return t('Chat.OpenPresentation')
71
- }
72
-
73
- return t('Chat.OpenItem')
74
- }
75
-
76
- const testIdForCallbackType = (callbackType: CallbackType) => {
77
- const text = textForCallbackType(callbackType)
78
- const textWithoutSpaces = text.replace(/\s+/g, '')
79
-
80
- return testIdWithKey(textWithoutSpaces)
81
- }
82
-
83
- return (
84
- <View
85
- style={{
86
- flexDirection: 'row',
87
- justifyContent: message.user._id === Role.me ? 'flex-end' : 'flex-start',
88
- }}
89
- >
90
- <View
91
- style={{
92
- ...theme.containerStyle,
93
- }}
94
- >
95
- <Bubble
96
- {...messageProps}
97
- key={messageProps.key}
98
- renderUsernameOnMessage={false}
99
- renderMessageText={() => message.renderEvent()}
100
- containerStyle={{
101
- left: {
102
- margin: 0,
103
- },
104
- right: {
105
- margin: 0,
106
- },
107
- }}
108
- wrapperStyle={{
109
- left: { ...theme.leftBubble, marginRight: 0, marginLeft: 0 },
110
- right: { ...theme.rightBubble, marginLeft: 0, marginRight: 0 },
111
- }}
112
- textStyle={{
113
- left: { ...theme.leftText },
114
- right: { ...theme.rightText },
115
- }}
116
- renderTime={() => <MessageTime message={message} />}
117
- renderCustomView={() =>
118
- message.messageOpensCallbackType ? <MessageIcon type={message.messageOpensCallbackType} /> : null
119
- }
120
- />
121
- {message.messageOpensCallbackType && (
122
- <TouchableOpacity
123
- accessibilityLabel={textForCallbackType(message.messageOpensCallbackType)}
124
- accessibilityRole="button"
125
- testID={testIdForCallbackType(message.messageOpensCallbackType)}
126
- onPress={() => {
127
- if (message.onDetails) message.onDetails()
128
- }}
129
- style={{
130
- ...theme.openButtonStyle,
131
- }}
132
- hitSlop={hitSlop}
133
- >
134
- <ThemedText style={{ ...theme.openButtonTextStyle }}>
135
- {textForCallbackType(message.messageOpensCallbackType)}
136
- </ThemedText>
137
- </TouchableOpacity>
138
- )}
139
- </View>
140
- </View>
141
- )
142
- }
@@ -1,46 +0,0 @@
1
- import React from 'react'
2
- import { Composer, InputToolbar, Send } from 'react-native-gifted-chat'
3
- import Icon from 'react-native-vector-icons/MaterialCommunityIcons'
4
-
5
- export const renderInputToolbar = (props: any, theme: any) => (
6
- <InputToolbar
7
- {...props}
8
- containerStyle={{
9
- ...theme.inputToolbar,
10
- justifyContent: 'center',
11
- shadowOffset: {
12
- width: 0,
13
- height: 1,
14
- },
15
- shadowOpacity: 0.1,
16
- shadowRadius: 5,
17
- elevation: 2,
18
- }}
19
- />
20
- )
21
-
22
- export const renderComposer = (props: any, theme: any, placeholder: string) => (
23
- <Composer
24
- {...props}
25
- textInputStyle={{
26
- ...theme.inputText,
27
- }}
28
- placeholder={placeholder}
29
- placeholderTextColor={theme.placeholderText}
30
- // the placeholder is read by accessibility features when multiline is enabled so a label is not necessary (results in double announcing if used)
31
- textInputProps={{ accessibilityLabel: '', maxFontSizeMultiplier: 1.2 }}
32
- />
33
- )
34
-
35
- export const renderSend = (props: any, theme: any) => (
36
- <Send
37
- {...props}
38
- alwaysShowSend={true}
39
- disabled={!props.text}
40
- containerStyle={{
41
- ...theme.sendContainer,
42
- }}
43
- >
44
- <Icon name="send" size={38} color={props.text ? theme.sendEnabled : theme.sendDisabled} />
45
- </Send>
46
- )
@@ -1,4 +0,0 @@
1
- import { renderBubble } from './ChatBubble'
2
- import { renderSend, renderComposer, renderInputToolbar } from './MessageInput'
3
-
4
- export { renderBubble, renderSend, renderComposer, renderInputToolbar }
@@ -1,148 +0,0 @@
1
- import React, { useState } from 'react'
2
- import { useTranslation } from 'react-i18next'
3
- import { StyleSheet, View } from 'react-native'
4
-
5
- import { DispatchAction } from '../../contexts/reducers/store'
6
- import { useStore } from '../../contexts/store'
7
- import { useTheme } from '../../contexts/theme'
8
- import { generateRandomWalletName } from '../../utils/helpers'
9
- import { testIdWithKey } from '../../utils/testable'
10
- import ButtonLoading from '../animated/ButtonLoading'
11
- import Button, { ButtonType } from '../buttons/Button'
12
- import LimitedTextInput from '../inputs/LimitedTextInput'
13
- import { InfoBoxType } from '../misc/InfoBox'
14
- import PopupModal from '../modals/PopupModal'
15
- import { ThemedText } from '../texts/ThemedText'
16
- import KeyboardView from '../views/KeyboardView'
17
-
18
- type ErrorState = {
19
- visible: boolean
20
- title: string
21
- description: string
22
- }
23
-
24
- interface NameWalletProps {
25
- isRenaming?: boolean
26
- onSubmitSuccess?: (name: string) => void
27
- onCancel?: () => void
28
- }
29
-
30
- const NameWalletForm: React.FC<NameWalletProps> = ({ isRenaming, onSubmitSuccess, onCancel }) => {
31
- const { t } = useTranslation()
32
- const { ColorPalette, Assets, Spacing } = useTheme()
33
- const [store, dispatch] = useStore()
34
- const [loading, setLoading] = useState(false)
35
- const [walletName, setWalletName] = useState(store.preferences.walletName ?? generateRandomWalletName())
36
- const [errorState, setErrorState] = useState<ErrorState>({
37
- visible: false,
38
- title: '',
39
- description: '',
40
- })
41
-
42
- const styles = StyleSheet.create({
43
- screenContainer: {
44
- flex: 1,
45
- backgroundColor: ColorPalette.brand.primaryBackground,
46
- padding: Spacing.md,
47
- justifyContent: 'space-between',
48
- },
49
- contentContainer: {
50
- justifyContent: 'center',
51
- alignItems: 'center',
52
- width: '100%',
53
- },
54
- controlsContainer: {},
55
- buttonContainer: {
56
- width: '100%',
57
- },
58
- })
59
-
60
- const handleChangeText = (text: string) => {
61
- setWalletName(text)
62
- }
63
-
64
- const handleContinuePressed = () => {
65
- if (walletName.length < 1) {
66
- setErrorState({
67
- title: t('NameWallet.EmptyNameTitle'),
68
- description: t('NameWallet.EmptyNameDescription'),
69
- visible: true,
70
- })
71
- } else if (walletName.length > 50) {
72
- setErrorState({
73
- title: t('NameWallet.CharCountTitle'),
74
- description: t('NameWallet.CharCountDescription'),
75
- visible: true,
76
- })
77
- } else {
78
- setLoading(true)
79
- dispatch({
80
- type: DispatchAction.UPDATE_WALLET_NAME,
81
- payload: [walletName],
82
- })
83
- dispatch({ type: DispatchAction.DID_NAME_WALLET })
84
- onSubmitSuccess?.(walletName)
85
- }
86
- }
87
-
88
- const handleDismissError = () => {
89
- setErrorState((prev) => ({ ...prev, visible: false }))
90
- }
91
-
92
- return (
93
- <KeyboardView>
94
- <View style={styles.screenContainer}>
95
- <View style={styles.contentContainer}>
96
- <Assets.svg.contactBook height={100} style={{ marginVertical: Spacing.md }} />
97
- <ThemedText style={{ width: '100%', marginBottom: Spacing.md }}>{t('NameWallet.ThisIsTheName')}</ThemedText>
98
- <View style={{ width: '100%' }}>
99
- <LimitedTextInput
100
- defaultValue={walletName}
101
- label={t('NameWallet.NameYourWallet')}
102
- limit={50}
103
- handleChangeText={handleChangeText}
104
- accessibilityLabel={t('NameWallet.NameYourWallet')}
105
- testID={testIdWithKey('NameInput')}
106
- />
107
- </View>
108
- </View>
109
- <View style={styles.controlsContainer}>
110
- <View style={styles.buttonContainer}>
111
- <Button
112
- title={isRenaming ? t('Global.Save') : t('Global.Continue')}
113
- buttonType={ButtonType.Primary}
114
- testID={isRenaming ? testIdWithKey('Save') : testIdWithKey('Continue')}
115
- accessibilityLabel={isRenaming ? t('Global.Save') : t('Global.Continue')}
116
- onPress={handleContinuePressed}
117
- disabled={loading}
118
- >
119
- {loading && <ButtonLoading />}
120
- </Button>
121
- {isRenaming && (
122
- <View style={{ marginTop: Spacing.sm }}>
123
- <Button
124
- title={t('Global.Cancel')}
125
- buttonType={ButtonType.Secondary}
126
- testID={testIdWithKey('Cancel')}
127
- accessibilityLabel={t('Global.Cancel')}
128
- onPress={onCancel}
129
- />
130
- </View>
131
- )}
132
- </View>
133
- </View>
134
- </View>
135
- {errorState.visible && (
136
- <PopupModal
137
- notificationType={InfoBoxType.Info}
138
- onCallToActionLabel={t('Global.Okay')}
139
- onCallToActionPressed={handleDismissError}
140
- title={errorState.title}
141
- description={errorState.description}
142
- />
143
- )}
144
- </KeyboardView>
145
- )
146
- }
147
-
148
- export default NameWalletForm
@@ -1,4 +0,0 @@
1
- import * as buttons from './buttons'
2
- import * as misc from './misc/index'
3
-
4
- export { misc, buttons }
@@ -1,190 +0,0 @@
1
- import React, { useCallback, useEffect, useState } from 'react'
2
- import { useTranslation } from 'react-i18next'
3
- import { Linking, Platform, ScrollView, StyleSheet, View } from 'react-native'
4
- import { check, PERMISSIONS, PermissionStatus, request, RESULTS } from 'react-native-permissions'
5
- import { SafeAreaView } from 'react-native-safe-area-context'
6
-
7
- import ToggleButton from '../buttons/ToggleButton'
8
- import DismissiblePopupModal from '../modals/DismissiblePopupModal'
9
- import { ThemedText } from '../texts/ThemedText'
10
- import { useAuth } from '../../contexts/auth'
11
- import { useTheme } from '../../contexts/theme'
12
- import { testIdWithKey } from '../../utils/testable'
13
- import { getSupportedBiometryType, BIOMETRY_TYPE } from 'react-native-keychain'
14
-
15
- const BIOMETRY_PERMISSION = PERMISSIONS.IOS.FACE_ID
16
-
17
- export interface BiometryControlProps {
18
- biometryEnabled: boolean
19
- onBiometryToggle: (newValue: boolean) => void
20
- children?: React.ReactNode
21
- }
22
-
23
- const BiometryControl: React.FC<BiometryControlProps> = ({ biometryEnabled, onBiometryToggle, children }) => {
24
- const { t } = useTranslation()
25
- const { isBiometricsActive } = useAuth()
26
- const [biometryAvailable, setBiometryAvailable] = useState(false)
27
- const [settingsPopupConfig, setSettingsPopupConfig] = useState<null | { title: string; description: string }>(null)
28
- const { ColorPalette, Assets } = useTheme()
29
-
30
- const styles = StyleSheet.create({
31
- container: {
32
- height: '100%',
33
- padding: 20,
34
- backgroundColor: ColorPalette.brand.primaryBackground,
35
- },
36
- image: {
37
- minWidth: 200,
38
- minHeight: 200,
39
- marginBottom: 66,
40
- },
41
- biometryAvailableRowGap: {
42
- rowGap: 20,
43
- },
44
- })
45
-
46
- useEffect(() => {
47
- isBiometricsActive().then((result: boolean) => {
48
- setBiometryAvailable(result)
49
- })
50
- }, [isBiometricsActive])
51
-
52
- const onOpenSettingsTouched = async () => {
53
- await Linking.openSettings()
54
- onOpenSettingsDismissed()
55
- }
56
-
57
- const onOpenSettingsDismissed = () => {
58
- setSettingsPopupConfig(null)
59
- }
60
-
61
- const onRequestSystemBiometrics = useCallback(
62
- async (newToggleValue: boolean) => {
63
- const permissionResult: PermissionStatus = await request(BIOMETRY_PERMISSION)
64
- switch (permissionResult) {
65
- case RESULTS.GRANTED:
66
- case RESULTS.LIMITED:
67
- // Granted
68
- onBiometryToggle(newToggleValue)
69
- break
70
- default:
71
- break
72
- }
73
- },
74
- [onBiometryToggle]
75
- )
76
-
77
- const onCheckSystemBiometrics = useCallback(async (): Promise<PermissionStatus> => {
78
- if (Platform.OS === 'android') {
79
- // Android doesn't need to prompt biometric permission
80
- // for an app to use it.
81
- return biometryAvailable ? RESULTS.GRANTED : RESULTS.UNAVAILABLE
82
- } else if (Platform.OS === 'ios') {
83
- return await check(BIOMETRY_PERMISSION)
84
- }
85
-
86
- return RESULTS.UNAVAILABLE
87
- }, [biometryAvailable])
88
-
89
- const toggleSwitch = useCallback(async () => {
90
- const newValue = !biometryEnabled
91
-
92
- if (!newValue) {
93
- // Turning off doesn't require OS biometrics enabled
94
- onBiometryToggle(newValue)
95
- return
96
- }
97
-
98
- // If the user is turning it on, they need
99
- // to first authenticate the OS biometrics before this action is accepted
100
- const permissionResult: PermissionStatus = await onCheckSystemBiometrics()
101
- const supported_type = await getSupportedBiometryType()
102
-
103
- switch (permissionResult) {
104
- case RESULTS.GRANTED:
105
- case RESULTS.LIMITED:
106
- // Already granted
107
- onBiometryToggle(newValue)
108
- break
109
- case RESULTS.UNAVAILABLE:
110
- // Permission is unavailable/ not supported on this device
111
- if (Platform.OS === 'ios' && supported_type === BIOMETRY_TYPE.TOUCH_ID) {
112
- // if available, access to touch id can be granted without a request
113
- onBiometryToggle(newValue)
114
- } else {
115
- // Not in iOS or no touch id available for iOS, send user to settings
116
- // to enable biometrics
117
- setSettingsPopupConfig({
118
- title: t('Biometry.SetupBiometricsTitle'),
119
- description: t('Biometry.SetupBiometricsDesc'),
120
- })
121
- }
122
- break
123
- case RESULTS.BLOCKED:
124
- // Previously denied
125
- setSettingsPopupConfig({
126
- title: t('Biometry.AllowBiometricsTitle'),
127
- description: t('Biometry.AllowBiometricsDesc'),
128
- })
129
- break
130
- case RESULTS.DENIED:
131
- // Has not been requested
132
- await onRequestSystemBiometrics(newValue)
133
- break
134
- default:
135
- break
136
- }
137
- }, [onRequestSystemBiometrics, onCheckSystemBiometrics, biometryEnabled, t, onBiometryToggle])
138
-
139
- return (
140
- <SafeAreaView edges={['left', 'right', 'bottom']}>
141
- {settingsPopupConfig && (
142
- <DismissiblePopupModal
143
- title={settingsPopupConfig.title}
144
- description={settingsPopupConfig.description}
145
- onCallToActionLabel={t('Biometry.OpenSettings')}
146
- onCallToActionPressed={onOpenSettingsTouched}
147
- onDismissPressed={onOpenSettingsDismissed}
148
- />
149
- )}
150
- <ScrollView style={styles.container}>
151
- <View style={{ alignItems: 'center' }}>
152
- <Assets.svg.biometrics style={styles.image} />
153
- </View>
154
- {biometryAvailable ? (
155
- <View style={styles.biometryAvailableRowGap}>
156
- <ThemedText>{t('Biometry.EnabledText1')}</ThemedText>
157
- <ThemedText>
158
- {t('Biometry.EnabledText2')}
159
- <ThemedText variant="bold"> {t('Biometry.Warning')}</ThemedText>
160
- </ThemedText>
161
- </View>
162
- ) : (
163
- <View style={styles.biometryAvailableRowGap}>
164
- <ThemedText>{t('Biometry.NotEnabledText1')}</ThemedText>
165
- <ThemedText>{t('Biometry.NotEnabledText2')}</ThemedText>
166
- </View>
167
- )}
168
- <View style={{ flexDirection: 'row', marginVertical: 20 }}>
169
- <View style={{ flexShrink: 1, marginRight: 10, justifyContent: 'center' }}>
170
- <ThemedText variant="bold">{t('Biometry.UseToUnlock')}</ThemedText>
171
- </View>
172
- <View style={{ justifyContent: 'center' }}>
173
- <ToggleButton
174
- testID={testIdWithKey('ToggleBiometrics')}
175
- isEnabled={biometryEnabled}
176
- isAvailable={true}
177
- toggleAction={toggleSwitch}
178
- disabled={false}
179
- enabledIcon="check"
180
- disabledIcon="close"
181
- />
182
- </View>
183
- </View>
184
- </ScrollView>
185
- {children}
186
- </SafeAreaView>
187
- )
188
- }
189
-
190
- export default BiometryControl
@@ -1,32 +0,0 @@
1
- import * as React from 'react'
2
- import { StyleSheet, View, StyleProp, TextStyle } from 'react-native'
3
- import Icon from 'react-native-vector-icons/MaterialIcons'
4
-
5
- import { useTheme } from '../../contexts/theme'
6
- import { ThemedText } from '../texts/ThemedText'
7
-
8
- interface BulletPointProps {
9
- text: string
10
- textStyle: StyleProp<TextStyle>
11
- }
12
-
13
- const BulletPoint: React.FC<BulletPointProps> = ({ text, textStyle }) => {
14
- const { ColorPalette } = useTheme()
15
- const styles = StyleSheet.create({
16
- iconContainer: {
17
- marginRight: 10,
18
- marginVertical: 6,
19
- },
20
- })
21
-
22
- return (
23
- <View style={{ marginVertical: 10, flexDirection: 'row', alignItems: 'flex-start' }}>
24
- <View style={styles.iconContainer}>
25
- <Icon name={'circle'} size={9} color={ColorPalette.brand.modalIcon} />
26
- </View>
27
- <ThemedText style={[textStyle, { flexShrink: 1 }]}>{text}</ThemedText>
28
- </View>
29
- )
30
- }
31
-
32
- export default BulletPoint
@@ -1,67 +0,0 @@
1
- import React from 'react'
2
- import { View, StyleSheet, TouchableOpacity, TextStyle } from 'react-native'
3
- import Icon from 'react-native-vector-icons/MaterialIcons'
4
-
5
- import { hitSlop } from '../../constants'
6
- import { useTheme } from '../../contexts/theme'
7
- import { ThemedText } from '../texts/ThemedText'
8
-
9
- interface Props {
10
- title: string
11
- titleStyle?: TextStyle
12
- accessibilityLabel?: string
13
- testID?: string
14
- checked: boolean
15
- onPress: () => void
16
- reverse?: boolean
17
- }
18
-
19
- const CheckBoxRow: React.FC<Props> = ({
20
- title,
21
- titleStyle = {},
22
- accessibilityLabel,
23
- testID,
24
- checked,
25
- onPress,
26
- reverse,
27
- }) => {
28
- const { Inputs } = useTheme()
29
- const style = StyleSheet.create({
30
- container: {
31
- flex: 1,
32
- flexDirection: reverse ? 'row-reverse' : 'row',
33
- alignItems: 'center',
34
- margin: 10,
35
- },
36
- text: {
37
- ...Inputs.checkBoxText,
38
- flexShrink: 1,
39
- marginLeft: reverse ? 0 : 10,
40
- marginRight: reverse ? 10 : 0,
41
- },
42
- })
43
- const accessible = accessibilityLabel && accessibilityLabel !== '' ? true : false
44
-
45
- return (
46
- <View style={style.container}>
47
- <TouchableOpacity
48
- accessible={accessible}
49
- accessibilityLabel={accessibilityLabel}
50
- accessibilityRole="checkbox"
51
- accessibilityState={{ checked }}
52
- testID={testID}
53
- onPress={onPress}
54
- hitSlop={hitSlop}
55
- >
56
- {checked ? (
57
- <Icon name={'check-box'} size={36} color={Inputs.checkBoxColor.color} />
58
- ) : (
59
- <Icon name={'check-box-outline-blank'} size={36} color={Inputs.checkBoxColor.color} />
60
- )}
61
- </TouchableOpacity>
62
- <ThemedText style={[style.text, titleStyle]}>{title}</ThemedText>
63
- </View>
64
- )
65
- }
66
-
67
- export default CheckBoxRow