@incodetech/prizma-core-screens 0.1.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 (497) hide show
  1. package/README.md +74 -0
  2. package/dist/CaptureOverlay.css +55 -0
  3. package/dist/CaptureOverlay.d.ts +34 -0
  4. package/dist/CaptureOverlay.js +32 -0
  5. package/dist/CaptureScreen.d.ts +51 -0
  6. package/dist/CaptureScreen.js +30 -0
  7. package/dist/CurpConfirmScreen.d.ts +33 -0
  8. package/dist/CurpConfirmScreen.js +29 -0
  9. package/dist/CurpEnterScreen.d.ts +51 -0
  10. package/dist/CurpEnterScreen.js +77 -0
  11. package/dist/CurpGenerateScreen.d.ts +47 -0
  12. package/dist/CurpGenerateScreen.js +57 -0
  13. package/dist/CurpLayout.css +92 -0
  14. package/dist/CurpProcessingScreen.d.ts +32 -0
  15. package/dist/CurpProcessingScreen.js +29 -0
  16. package/dist/CurpResultScreen.d.ts +37 -0
  17. package/dist/CurpResultScreen.js +36 -0
  18. package/dist/CurpStrings.d.ts +170 -0
  19. package/dist/CurpStrings.js +16 -0
  20. package/dist/DataSharingConsentConsentScreen.d.ts +73 -0
  21. package/dist/DataSharingConsentConsentScreen.js +120 -0
  22. package/dist/DataSharingConsentLayout.css +78 -0
  23. package/dist/DataSharingConsentStrings.d.ts +96 -0
  24. package/dist/DataSharingConsentStrings.js +38 -0
  25. package/dist/DemoScreensEndScreen.d.ts +33 -0
  26. package/dist/DemoScreensEndScreen.js +27 -0
  27. package/dist/DemoScreensStrings.d.ts +11 -0
  28. package/dist/DemoScreensStrings.js +19 -0
  29. package/dist/DocumentCaptureCaptureScreen.d.ts +53 -0
  30. package/dist/DocumentCaptureCaptureScreen.js +51 -0
  31. package/dist/DocumentCaptureCommonIssuesScreen.d.ts +32 -0
  32. package/dist/DocumentCaptureCommonIssuesScreen.js +45 -0
  33. package/dist/DocumentCaptureConfirmImageScreen.d.ts +38 -0
  34. package/dist/DocumentCaptureConfirmImageScreen.js +34 -0
  35. package/dist/DocumentCaptureConfirmUploadScreen.d.ts +43 -0
  36. package/dist/DocumentCaptureConfirmUploadScreen.js +29 -0
  37. package/dist/DocumentCaptureGenericErrorScreen.d.ts +36 -0
  38. package/dist/DocumentCaptureGenericErrorScreen.js +30 -0
  39. package/dist/DocumentCaptureIllustration.d.ts +45 -0
  40. package/dist/DocumentCaptureIllustration.js +7 -0
  41. package/dist/DocumentCaptureLayout.css +226 -0
  42. package/dist/DocumentCaptureMethodSelectionScreen.d.ts +45 -0
  43. package/dist/DocumentCaptureMethodSelectionScreen.js +70 -0
  44. package/dist/DocumentCaptureNextPageScreen.d.ts +33 -0
  45. package/dist/DocumentCaptureNextPageScreen.js +28 -0
  46. package/dist/DocumentCaptureNoConnectionScreen.d.ts +28 -0
  47. package/dist/DocumentCaptureNoConnectionScreen.js +29 -0
  48. package/dist/DocumentCaptureStrings.d.ts +158 -0
  49. package/dist/DocumentCaptureStrings.js +21 -0
  50. package/dist/DocumentCaptureTutorialScreen.d.ts +36 -0
  51. package/dist/DocumentCaptureTutorialScreen.js +27 -0
  52. package/dist/EkybAddressDetailsScreen.d.ts +61 -0
  53. package/dist/EkybAddressDetailsScreen.js +63 -0
  54. package/dist/EkybBusinessDetailsScreen.d.ts +55 -0
  55. package/dist/EkybBusinessDetailsScreen.js +57 -0
  56. package/dist/EkybCountryScreen.d.ts +52 -0
  57. package/dist/EkybCountryScreen.js +58 -0
  58. package/dist/EkybErrorScreen.d.ts +30 -0
  59. package/dist/EkybErrorScreen.js +24 -0
  60. package/dist/EkybOwnersScreen.d.ts +73 -0
  61. package/dist/EkybOwnersScreen.js +87 -0
  62. package/dist/EkybProcessingScreen.d.ts +28 -0
  63. package/dist/EkybProcessingScreen.js +22 -0
  64. package/dist/EkybStrings.d.ts +200 -0
  65. package/dist/EkybStrings.js +27 -0
  66. package/dist/EkybSuccessScreen.d.ts +28 -0
  67. package/dist/EkybSuccessScreen.js +22 -0
  68. package/dist/EkycDetailsScreen.d.ts +65 -0
  69. package/dist/EkycDetailsScreen.js +81 -0
  70. package/dist/EkycErrorScreen.d.ts +32 -0
  71. package/dist/EkycErrorScreen.js +26 -0
  72. package/dist/EkycLayout.css +39 -0
  73. package/dist/EkycLicenseScreen.d.ts +21 -0
  74. package/dist/EkycLicenseScreen.js +68 -0
  75. package/dist/EkycProcessingScreen.d.ts +26 -0
  76. package/dist/EkycProcessingScreen.js +20 -0
  77. package/dist/EkycStrings.d.ts +112 -0
  78. package/dist/EkycStrings.js +34 -0
  79. package/dist/EkycSuccessScreen.d.ts +29 -0
  80. package/dist/EkycSuccessScreen.js +23 -0
  81. package/dist/ElectronicSignatureDrawScreen.d.ts +57 -0
  82. package/dist/ElectronicSignatureDrawScreen.js +53 -0
  83. package/dist/ElectronicSignatureErrorScreen.d.ts +31 -0
  84. package/dist/ElectronicSignatureErrorScreen.js +25 -0
  85. package/dist/ElectronicSignatureLayout.css +80 -0
  86. package/dist/ElectronicSignatureReviewScreen.d.ts +51 -0
  87. package/dist/ElectronicSignatureReviewScreen.js +36 -0
  88. package/dist/ElectronicSignatureStrings.d.ts +50 -0
  89. package/dist/ElectronicSignatureStrings.js +12 -0
  90. package/dist/ElectronicSignatureSuccessScreen.d.ts +30 -0
  91. package/dist/ElectronicSignatureSuccessScreen.js +24 -0
  92. package/dist/EmailInputErrorScreen.d.ts +34 -0
  93. package/dist/EmailInputErrorScreen.js +28 -0
  94. package/dist/EmailInputOtpScreen.d.ts +56 -0
  95. package/dist/EmailInputOtpScreen.js +82 -0
  96. package/dist/EmailInputProcessingScreen.d.ts +29 -0
  97. package/dist/EmailInputProcessingScreen.js +23 -0
  98. package/dist/EmailInputStrings.d.ts +130 -0
  99. package/dist/EmailInputStrings.js +19 -0
  100. package/dist/EmailInputSuccessScreen.d.ts +37 -0
  101. package/dist/EmailInputSuccessScreen.js +31 -0
  102. package/dist/EmailInputVerifyScreen.d.ts +46 -0
  103. package/dist/EmailInputVerifyScreen.js +55 -0
  104. package/dist/ErrorScreensScreen.d.ts +62 -0
  105. package/dist/ErrorScreensScreen.js +71 -0
  106. package/dist/ErrorScreensStrings.d.ts +31 -0
  107. package/dist/ErrorScreensStrings.js +28 -0
  108. package/dist/FaceCaptureCapturingScreen.d.ts +32 -0
  109. package/dist/FaceCaptureCapturingScreen.js +53 -0
  110. package/dist/FaceCaptureLayout.css +18 -0
  111. package/dist/FaceCaptureLoadingScreen.d.ts +32 -0
  112. package/dist/FaceCaptureLoadingScreen.js +30 -0
  113. package/dist/FaceCaptureManualCaptureScreen.d.ts +32 -0
  114. package/dist/FaceCaptureManualCaptureScreen.js +27 -0
  115. package/dist/FaceCaptureNoConnectionScreen.d.ts +30 -0
  116. package/dist/FaceCaptureNoConnectionScreen.js +31 -0
  117. package/dist/FaceCaptureResultErrorScreen.d.ts +40 -0
  118. package/dist/FaceCaptureResultErrorScreen.js +32 -0
  119. package/dist/FaceCaptureResultSuccessScreen.d.ts +25 -0
  120. package/dist/FaceCaptureResultSuccessScreen.js +27 -0
  121. package/dist/FaceCaptureStrings.d.ts +62 -0
  122. package/dist/FaceCaptureStrings.js +14 -0
  123. package/dist/FaceCaptureTutorialScreen.d.ts +29 -0
  124. package/dist/FaceCaptureTutorialScreen.js +20 -0
  125. package/dist/FaceMatchComparisonCompactScreen.d.ts +26 -0
  126. package/dist/FaceMatchComparisonCompactScreen.js +24 -0
  127. package/dist/FaceMatchComparisonScreen.d.ts +80 -0
  128. package/dist/FaceMatchComparisonScreen.js +81 -0
  129. package/dist/FaceMatchLayout.css +264 -0
  130. package/dist/FaceMatchResultScreen.d.ts +50 -0
  131. package/dist/FaceMatchResultScreen.js +52 -0
  132. package/dist/FaceMatchStrings.d.ts +66 -0
  133. package/dist/FaceMatchStrings.js +21 -0
  134. package/dist/FormScreen.css +78 -0
  135. package/dist/FormScreen.d.ts +101 -0
  136. package/dist/FormScreen.js +36 -0
  137. package/dist/FormsChoiceScreen.d.ts +66 -0
  138. package/dist/FormsChoiceScreen.js +63 -0
  139. package/dist/FormsErrorScreen.d.ts +28 -0
  140. package/dist/FormsErrorScreen.js +22 -0
  141. package/dist/FormsFieldScreen.d.ts +66 -0
  142. package/dist/FormsFieldScreen.js +85 -0
  143. package/dist/FormsLayout.css +45 -0
  144. package/dist/FormsLongFormScreen.d.ts +70 -0
  145. package/dist/FormsLongFormScreen.js +149 -0
  146. package/dist/FormsStrings.d.ts +181 -0
  147. package/dist/FormsStrings.js +36 -0
  148. package/dist/FormsSuccessScreen.d.ts +32 -0
  149. package/dist/FormsSuccessScreen.js +26 -0
  150. package/dist/GeolocationBrowserStepsScreen.d.ts +56 -0
  151. package/dist/GeolocationBrowserStepsScreen.js +95 -0
  152. package/dist/GeolocationErrorScreen.d.ts +43 -0
  153. package/dist/GeolocationErrorScreen.js +56 -0
  154. package/dist/GeolocationIntroScreen.d.ts +49 -0
  155. package/dist/GeolocationIntroScreen.js +38 -0
  156. package/dist/GeolocationPermissionScreen.d.ts +38 -0
  157. package/dist/GeolocationPermissionScreen.js +30 -0
  158. package/dist/GeolocationStrings.d.ts +157 -0
  159. package/dist/GeolocationStrings.js +28 -0
  160. package/dist/IdCaptureAgeVerificationScreen.d.ts +25 -0
  161. package/dist/IdCaptureAgeVerificationScreen.js +38 -0
  162. package/dist/IdCaptureAnalyzingScreen.d.ts +41 -0
  163. package/dist/IdCaptureAnalyzingScreen.js +30 -0
  164. package/dist/IdCaptureCommonIssuesScreen.d.ts +31 -0
  165. package/dist/IdCaptureCommonIssuesScreen.js +49 -0
  166. package/dist/IdCaptureDocumentErrorScreen.d.ts +37 -0
  167. package/dist/IdCaptureDocumentErrorScreen.js +30 -0
  168. package/dist/IdCaptureDocumentSelectionScreen.d.ts +41 -0
  169. package/dist/IdCaptureDocumentSelectionScreen.js +49 -0
  170. package/dist/IdCaptureFlipScreen.d.ts +31 -0
  171. package/dist/IdCaptureFlipScreen.js +26 -0
  172. package/dist/IdCaptureHoldOnScreen.d.ts +28 -0
  173. package/dist/IdCaptureHoldOnScreen.js +22 -0
  174. package/dist/IdCaptureLayout.css +111 -0
  175. package/dist/IdCaptureNoConnectionScreen.d.ts +28 -0
  176. package/dist/IdCaptureNoConnectionScreen.js +29 -0
  177. package/dist/IdCapturePermissionScreen.d.ts +34 -0
  178. package/dist/IdCapturePermissionScreen.js +45 -0
  179. package/dist/IdCaptureResultScreen.d.ts +59 -0
  180. package/dist/IdCaptureResultScreen.js +89 -0
  181. package/dist/IdCaptureStageScreen.d.ts +69 -0
  182. package/dist/IdCaptureStageScreen.js +88 -0
  183. package/dist/IdCaptureStrings.d.ts +199 -0
  184. package/dist/IdCaptureStrings.js +15 -0
  185. package/dist/IdCaptureTutorialScreen.d.ts +36 -0
  186. package/dist/IdCaptureTutorialScreen.js +30 -0
  187. package/dist/ListScreen.d.ts +95 -0
  188. package/dist/ListScreen.js +46 -0
  189. package/dist/LoaderScreen.d.ts +32 -0
  190. package/dist/LoaderScreen.js +27 -0
  191. package/dist/LoadersStrings.d.ts +20 -0
  192. package/dist/LoadersStrings.js +16 -0
  193. package/dist/NfcCommonIssuesScreen.d.ts +35 -0
  194. package/dist/NfcCommonIssuesScreen.js +48 -0
  195. package/dist/NfcErrorScreen.d.ts +41 -0
  196. package/dist/NfcErrorScreen.js +27 -0
  197. package/dist/NfcLayout.css +36 -0
  198. package/dist/NfcProcessingScreen.d.ts +28 -0
  199. package/dist/NfcProcessingScreen.js +22 -0
  200. package/dist/NfcScanningScreen.d.ts +66 -0
  201. package/dist/NfcScanningScreen.js +61 -0
  202. package/dist/NfcSettingsScreen.d.ts +53 -0
  203. package/dist/NfcSettingsScreen.js +57 -0
  204. package/dist/NfcStrings.d.ts +112 -0
  205. package/dist/NfcStrings.js +7 -0
  206. package/dist/NfcSuccessScreen.d.ts +28 -0
  207. package/dist/NfcSuccessScreen.js +22 -0
  208. package/dist/NfcSymbolScreen.d.ts +39 -0
  209. package/dist/NfcSymbolScreen.js +32 -0
  210. package/dist/NfcTryAgainScreen.d.ts +53 -0
  211. package/dist/NfcTryAgainScreen.js +45 -0
  212. package/dist/NfcTutorialScreen.d.ts +33 -0
  213. package/dist/NfcTutorialScreen.js +24 -0
  214. package/dist/PermissionsAllowScreen.d.ts +44 -0
  215. package/dist/PermissionsAllowScreen.js +38 -0
  216. package/dist/PermissionsBrowserStepsScreen.d.ts +42 -0
  217. package/dist/PermissionsBrowserStepsScreen.js +86 -0
  218. package/dist/PermissionsRequiredScreen.d.ts +37 -0
  219. package/dist/PermissionsRequiredScreen.js +51 -0
  220. package/dist/PermissionsStrings.d.ts +70 -0
  221. package/dist/PermissionsStrings.js +36 -0
  222. package/dist/PhoneInputErrorScreen.d.ts +37 -0
  223. package/dist/PhoneInputErrorScreen.js +47 -0
  224. package/dist/PhoneInputLayout.css +61 -0
  225. package/dist/PhoneInputOtpScreen.d.ts +37 -0
  226. package/dist/PhoneInputOtpScreen.js +44 -0
  227. package/dist/PhoneInputSnaLoadingScreen.d.ts +23 -0
  228. package/dist/PhoneInputSnaLoadingScreen.js +17 -0
  229. package/dist/PhoneInputStrings.d.ts +121 -0
  230. package/dist/PhoneInputStrings.js +13 -0
  231. package/dist/PhoneInputSuccessScreen.d.ts +23 -0
  232. package/dist/PhoneInputSuccessScreen.js +17 -0
  233. package/dist/PhoneInputVerifyScreen.d.ts +41 -0
  234. package/dist/PhoneInputVerifyScreen.js +71 -0
  235. package/dist/ProcessingScreen.d.ts +42 -0
  236. package/dist/ProcessingScreen.js +21 -0
  237. package/dist/QualifiedSignatureAcceptScreen.d.ts +71 -0
  238. package/dist/QualifiedSignatureAcceptScreen.js +86 -0
  239. package/dist/QualifiedSignatureDocumentScreen.d.ts +62 -0
  240. package/dist/QualifiedSignatureDocumentScreen.js +56 -0
  241. package/dist/QualifiedSignatureLayout.css +206 -0
  242. package/dist/QualifiedSignatureProcessingScreen.d.ts +46 -0
  243. package/dist/QualifiedSignatureProcessingScreen.js +48 -0
  244. package/dist/QualifiedSignatureResultScreen.d.ts +65 -0
  245. package/dist/QualifiedSignatureResultScreen.js +76 -0
  246. package/dist/QualifiedSignatureReviewScreen.d.ts +49 -0
  247. package/dist/QualifiedSignatureReviewScreen.js +40 -0
  248. package/dist/QualifiedSignatureStrings.d.ts +222 -0
  249. package/dist/QualifiedSignatureStrings.js +25 -0
  250. package/dist/QualifiedSignatureUploadScreen.d.ts +42 -0
  251. package/dist/QualifiedSignatureUploadScreen.js +35 -0
  252. package/dist/ResultScreen.d.ts +93 -0
  253. package/dist/ResultScreen.js +37 -0
  254. package/dist/ReviewScreen.d.ts +81 -0
  255. package/dist/ReviewScreen.js +56 -0
  256. package/dist/ScreenLayout.css +469 -0
  257. package/dist/ScreenNav.css +43 -0
  258. package/dist/ScreenNav.d.ts +26 -0
  259. package/dist/ScreenNav.js +13 -0
  260. package/dist/ScreenShell.css +130 -0
  261. package/dist/ScreenShell.d.ts +45 -0
  262. package/dist/ScreenShell.js +22 -0
  263. package/dist/TutorialScreen.d.ts +70 -0
  264. package/dist/TutorialScreen.js +24 -0
  265. package/dist/VideoSelfieCameraStepsScreen.d.ts +47 -0
  266. package/dist/VideoSelfieCameraStepsScreen.js +56 -0
  267. package/dist/VideoSelfieErrorScreen.d.ts +63 -0
  268. package/dist/VideoSelfieErrorScreen.js +94 -0
  269. package/dist/VideoSelfieFlipCameraScreen.d.ts +34 -0
  270. package/dist/VideoSelfieFlipCameraScreen.js +38 -0
  271. package/dist/VideoSelfieFlipIdScreen.d.ts +34 -0
  272. package/dist/VideoSelfieFlipIdScreen.js +29 -0
  273. package/dist/VideoSelfieIdCaptureScreen.d.ts +75 -0
  274. package/dist/VideoSelfieIdCaptureScreen.js +86 -0
  275. package/dist/VideoSelfieLayout.css +259 -0
  276. package/dist/VideoSelfiePermissionRequiredScreen.d.ts +35 -0
  277. package/dist/VideoSelfiePermissionRequiredScreen.js +45 -0
  278. package/dist/VideoSelfiePermissionScreen.d.ts +51 -0
  279. package/dist/VideoSelfiePermissionScreen.js +44 -0
  280. package/dist/VideoSelfieProcessingScreen.d.ts +28 -0
  281. package/dist/VideoSelfieProcessingScreen.js +22 -0
  282. package/dist/VideoSelfieRetryScreen.d.ts +31 -0
  283. package/dist/VideoSelfieRetryScreen.js +32 -0
  284. package/dist/VideoSelfieSelfieCaptureScreen.d.ts +52 -0
  285. package/dist/VideoSelfieSelfieCaptureScreen.js +58 -0
  286. package/dist/VideoSelfieSpeakScreen.d.ts +64 -0
  287. package/dist/VideoSelfieSpeakScreen.js +95 -0
  288. package/dist/VideoSelfieStrings.d.ts +196 -0
  289. package/dist/VideoSelfieStrings.js +14 -0
  290. package/dist/VideoSelfieSuccessScreen.d.ts +25 -0
  291. package/dist/VideoSelfieSuccessScreen.js +19 -0
  292. package/dist/VideoSelfieTutorialScreen.d.ts +33 -0
  293. package/dist/VideoSelfieTutorialScreen.js +41 -0
  294. package/dist/ViewfinderScreen.css +107 -0
  295. package/dist/ViewfinderScreen.d.ts +40 -0
  296. package/dist/ViewfinderScreen.js +26 -0
  297. package/dist/WatchlistBusinessFormScreen.d.ts +61 -0
  298. package/dist/WatchlistBusinessFormScreen.js +85 -0
  299. package/dist/WatchlistBusinessProcessingScreen.d.ts +25 -0
  300. package/dist/WatchlistBusinessProcessingScreen.js +19 -0
  301. package/dist/WatchlistBusinessStrings.d.ts +95 -0
  302. package/dist/WatchlistBusinessStrings.js +19 -0
  303. package/dist/WatchlistBusinessSuccessScreen.d.ts +29 -0
  304. package/dist/WatchlistBusinessSuccessScreen.js +23 -0
  305. package/dist/flows.d.ts +216 -0
  306. package/dist/flows.js +516 -0
  307. package/dist/index.d.ts +145 -0
  308. package/dist/index.js +130 -0
  309. package/dist/styles.css +33 -0
  310. package/dist/types.d.ts +56 -0
  311. package/dist/types.js +8 -0
  312. package/package.json +689 -0
  313. package/samples/camera-surface.png +0 -0
  314. package/samples/document-still.png +0 -0
  315. package/samples/document-thumbnail.png +0 -0
  316. package/samples/face-match-bottom.png +0 -0
  317. package/samples/face-match-left.png +0 -0
  318. package/samples/face-match-right.png +0 -0
  319. package/samples/id-back-blur.png +0 -0
  320. package/samples/id-back-dark.png +0 -0
  321. package/samples/id-back-glare.png +0 -0
  322. package/samples/id-back.png +0 -0
  323. package/samples/id-front-blur.png +0 -0
  324. package/samples/id-front-dark.png +0 -0
  325. package/samples/id-front-glare.png +0 -0
  326. package/samples/id-front.png +0 -0
  327. package/samples/id-passport.png +0 -0
  328. package/samples/selfie-glasses.png +0 -0
  329. package/samples/selfie-hat.png +0 -0
  330. package/samples/selfie-mask.png +0 -0
  331. package/samples/selfie.png +0 -0
  332. package/samples/video-selfie-camera.png +0 -0
  333. package/src/CaptureOverlay.css +55 -0
  334. package/src/CaptureOverlay.tsx +56 -0
  335. package/src/CaptureScreen.tsx +121 -0
  336. package/src/CurpConfirmScreen.tsx +75 -0
  337. package/src/CurpEnterScreen.tsx +149 -0
  338. package/src/CurpGenerateScreen.tsx +172 -0
  339. package/src/CurpLayout.css +92 -0
  340. package/src/CurpProcessingScreen.tsx +75 -0
  341. package/src/CurpResultScreen.tsx +80 -0
  342. package/src/CurpStrings.ts +178 -0
  343. package/src/DataSharingConsentConsentScreen.tsx +223 -0
  344. package/src/DataSharingConsentLayout.css +78 -0
  345. package/src/DataSharingConsentStrings.ts +144 -0
  346. package/src/DemoScreensEndScreen.tsx +56 -0
  347. package/src/DemoScreensStrings.ts +31 -0
  348. package/src/DocumentCaptureCaptureScreen.tsx +135 -0
  349. package/src/DocumentCaptureCommonIssuesScreen.tsx +97 -0
  350. package/src/DocumentCaptureConfirmImageScreen.tsx +112 -0
  351. package/src/DocumentCaptureConfirmUploadScreen.tsx +113 -0
  352. package/src/DocumentCaptureGenericErrorScreen.tsx +82 -0
  353. package/src/DocumentCaptureIllustration.tsx +153 -0
  354. package/src/DocumentCaptureLayout.css +226 -0
  355. package/src/DocumentCaptureMethodSelectionScreen.tsx +151 -0
  356. package/src/DocumentCaptureNextPageScreen.tsx +82 -0
  357. package/src/DocumentCaptureNoConnectionScreen.tsx +77 -0
  358. package/src/DocumentCaptureStrings.ts +192 -0
  359. package/src/DocumentCaptureTutorialScreen.tsx +79 -0
  360. package/src/EkybAddressDetailsScreen.tsx +200 -0
  361. package/src/EkybBusinessDetailsScreen.tsx +147 -0
  362. package/src/EkybCountryScreen.tsx +124 -0
  363. package/src/EkybErrorScreen.tsx +61 -0
  364. package/src/EkybOwnersScreen.tsx +230 -0
  365. package/src/EkybProcessingScreen.tsx +57 -0
  366. package/src/EkybStrings.ts +239 -0
  367. package/src/EkybSuccessScreen.tsx +54 -0
  368. package/src/EkycDetailsScreen.tsx +178 -0
  369. package/src/EkycErrorScreen.tsx +64 -0
  370. package/src/EkycLayout.css +39 -0
  371. package/src/EkycLicenseScreen.tsx +164 -0
  372. package/src/EkycProcessingScreen.tsx +60 -0
  373. package/src/EkycStrings.ts +157 -0
  374. package/src/EkycSuccessScreen.tsx +63 -0
  375. package/src/ElectronicSignatureDrawScreen.tsx +127 -0
  376. package/src/ElectronicSignatureErrorScreen.tsx +74 -0
  377. package/src/ElectronicSignatureLayout.css +80 -0
  378. package/src/ElectronicSignatureReviewScreen.tsx +106 -0
  379. package/src/ElectronicSignatureStrings.ts +67 -0
  380. package/src/ElectronicSignatureSuccessScreen.tsx +67 -0
  381. package/src/EmailInputErrorScreen.tsx +67 -0
  382. package/src/EmailInputOtpScreen.tsx +169 -0
  383. package/src/EmailInputProcessingScreen.tsx +67 -0
  384. package/src/EmailInputStrings.ts +166 -0
  385. package/src/EmailInputSuccessScreen.tsx +72 -0
  386. package/src/EmailInputVerifyScreen.tsx +117 -0
  387. package/src/ErrorScreensScreen.tsx +149 -0
  388. package/src/ErrorScreensStrings.ts +66 -0
  389. package/src/FaceCaptureCapturingScreen.tsx +99 -0
  390. package/src/FaceCaptureLayout.css +18 -0
  391. package/src/FaceCaptureLoadingScreen.tsx +65 -0
  392. package/src/FaceCaptureManualCaptureScreen.tsx +94 -0
  393. package/src/FaceCaptureNoConnectionScreen.tsx +73 -0
  394. package/src/FaceCaptureResultErrorScreen.tsx +86 -0
  395. package/src/FaceCaptureResultSuccessScreen.tsx +49 -0
  396. package/src/FaceCaptureStrings.ts +92 -0
  397. package/src/FaceCaptureTutorialScreen.tsx +77 -0
  398. package/src/FaceMatchComparisonCompactScreen.tsx +51 -0
  399. package/src/FaceMatchComparisonScreen.tsx +201 -0
  400. package/src/FaceMatchLayout.css +264 -0
  401. package/src/FaceMatchResultScreen.tsx +117 -0
  402. package/src/FaceMatchStrings.ts +95 -0
  403. package/src/FormScreen.css +78 -0
  404. package/src/FormScreen.tsx +213 -0
  405. package/src/FormsChoiceScreen.tsx +150 -0
  406. package/src/FormsErrorScreen.tsx +61 -0
  407. package/src/FormsFieldScreen.tsx +198 -0
  408. package/src/FormsLayout.css +45 -0
  409. package/src/FormsLongFormScreen.tsx +295 -0
  410. package/src/FormsStrings.ts +243 -0
  411. package/src/FormsSuccessScreen.tsx +67 -0
  412. package/src/GeolocationBrowserStepsScreen.tsx +173 -0
  413. package/src/GeolocationErrorScreen.tsx +113 -0
  414. package/src/GeolocationIntroScreen.tsx +100 -0
  415. package/src/GeolocationPermissionScreen.tsx +88 -0
  416. package/src/GeolocationStrings.ts +193 -0
  417. package/src/IdCaptureAgeVerificationScreen.tsx +84 -0
  418. package/src/IdCaptureAnalyzingScreen.tsx +94 -0
  419. package/src/IdCaptureCommonIssuesScreen.tsx +109 -0
  420. package/src/IdCaptureDocumentErrorScreen.tsx +92 -0
  421. package/src/IdCaptureDocumentSelectionScreen.tsx +100 -0
  422. package/src/IdCaptureFlipScreen.tsx +66 -0
  423. package/src/IdCaptureHoldOnScreen.tsx +51 -0
  424. package/src/IdCaptureLayout.css +111 -0
  425. package/src/IdCaptureNoConnectionScreen.tsx +68 -0
  426. package/src/IdCapturePermissionScreen.tsx +102 -0
  427. package/src/IdCaptureResultScreen.tsx +197 -0
  428. package/src/IdCaptureStageScreen.tsx +241 -0
  429. package/src/IdCaptureStrings.ts +228 -0
  430. package/src/IdCaptureTutorialScreen.tsx +99 -0
  431. package/src/ListScreen.tsx +213 -0
  432. package/src/LoaderScreen.tsx +69 -0
  433. package/src/LoadersStrings.ts +38 -0
  434. package/src/NfcCommonIssuesScreen.tsx +104 -0
  435. package/src/NfcErrorScreen.tsx +83 -0
  436. package/src/NfcLayout.css +36 -0
  437. package/src/NfcProcessingScreen.tsx +57 -0
  438. package/src/NfcScanningScreen.tsx +127 -0
  439. package/src/NfcSettingsScreen.tsx +124 -0
  440. package/src/NfcStrings.ts +127 -0
  441. package/src/NfcSuccessScreen.tsx +56 -0
  442. package/src/NfcSymbolScreen.tsx +85 -0
  443. package/src/NfcTryAgainScreen.tsx +114 -0
  444. package/src/NfcTutorialScreen.tsx +76 -0
  445. package/src/PermissionsAllowScreen.tsx +90 -0
  446. package/src/PermissionsBrowserStepsScreen.tsx +158 -0
  447. package/src/PermissionsRequiredScreen.tsx +118 -0
  448. package/src/PermissionsStrings.ts +129 -0
  449. package/src/PhoneInputErrorScreen.tsx +104 -0
  450. package/src/PhoneInputLayout.css +61 -0
  451. package/src/PhoneInputOtpScreen.tsx +126 -0
  452. package/src/PhoneInputSnaLoadingScreen.tsx +61 -0
  453. package/src/PhoneInputStrings.ts +136 -0
  454. package/src/PhoneInputSuccessScreen.tsx +56 -0
  455. package/src/PhoneInputVerifyScreen.tsx +153 -0
  456. package/src/ProcessingScreen.tsx +97 -0
  457. package/src/QualifiedSignatureAcceptScreen.tsx +198 -0
  458. package/src/QualifiedSignatureDocumentScreen.tsx +124 -0
  459. package/src/QualifiedSignatureLayout.css +206 -0
  460. package/src/QualifiedSignatureProcessingScreen.tsx +112 -0
  461. package/src/QualifiedSignatureResultScreen.tsx +146 -0
  462. package/src/QualifiedSignatureReviewScreen.tsx +113 -0
  463. package/src/QualifiedSignatureStrings.ts +256 -0
  464. package/src/QualifiedSignatureUploadScreen.tsx +81 -0
  465. package/src/ResultScreen.tsx +211 -0
  466. package/src/ReviewScreen.tsx +196 -0
  467. package/src/ScreenLayout.css +469 -0
  468. package/src/ScreenNav.css +43 -0
  469. package/src/ScreenNav.tsx +46 -0
  470. package/src/ScreenShell.css +130 -0
  471. package/src/ScreenShell.tsx +66 -0
  472. package/src/TutorialScreen.tsx +166 -0
  473. package/src/VideoSelfieCameraStepsScreen.tsx +145 -0
  474. package/src/VideoSelfieErrorScreen.tsx +168 -0
  475. package/src/VideoSelfieFlipCameraScreen.tsx +88 -0
  476. package/src/VideoSelfieFlipIdScreen.tsx +74 -0
  477. package/src/VideoSelfieIdCaptureScreen.tsx +213 -0
  478. package/src/VideoSelfieLayout.css +259 -0
  479. package/src/VideoSelfiePermissionRequiredScreen.tsx +104 -0
  480. package/src/VideoSelfiePermissionScreen.tsx +102 -0
  481. package/src/VideoSelfieProcessingScreen.tsx +68 -0
  482. package/src/VideoSelfieRetryScreen.tsx +92 -0
  483. package/src/VideoSelfieSelfieCaptureScreen.tsx +122 -0
  484. package/src/VideoSelfieSpeakScreen.tsx +237 -0
  485. package/src/VideoSelfieStrings.ts +222 -0
  486. package/src/VideoSelfieSuccessScreen.tsx +64 -0
  487. package/src/VideoSelfieTutorialScreen.tsx +129 -0
  488. package/src/ViewfinderScreen.css +107 -0
  489. package/src/ViewfinderScreen.tsx +113 -0
  490. package/src/WatchlistBusinessFormScreen.tsx +176 -0
  491. package/src/WatchlistBusinessProcessingScreen.tsx +63 -0
  492. package/src/WatchlistBusinessStrings.ts +121 -0
  493. package/src/WatchlistBusinessSuccessScreen.tsx +67 -0
  494. package/src/flows.ts +711 -0
  495. package/src/index.ts +591 -0
  496. package/src/styles.css +33 -0
  497. package/src/types.ts +69 -0
@@ -0,0 +1,112 @@
1
+ /** Which document's chip is being read. Drives artwork AND copy on every
2
+ * family that has a passport/ID split (symbol · tutorial · tryAgain ·
3
+ * commonIssues). */
4
+ export type NfcDocumentType = 'passport' | 'id';
5
+ /**
6
+ * Which common-issue row this is. The kind — not the copy — picks the row's
7
+ * canonical bank glyph (`NfcCommonIssuesScreen`), so a translated label never
8
+ * changes the icon. `passportTooFar` / `idTooFar` are two kinds rather than one
9
+ * because the bank draws the document itself in the glyph.
10
+ */
11
+ export type NfcIssueKind = 'passportInCover' | 'passportTooFar' | 'idTooFar' | 'chipOtherPage' | 'phoneMoved' | 'phoneCover';
12
+ export interface NfcIssueStrings {
13
+ /** Which glyph leads the row. */
14
+ kind: NfcIssueKind;
15
+ /** The row's single line of copy. */
16
+ label: string;
17
+ }
18
+ /** One title + subtitle pair. Used by every family that varies only in copy. */
19
+ export interface NfcHeadingStrings {
20
+ title: string;
21
+ subtitle: string;
22
+ }
23
+ export interface NfcStrings {
24
+ /** "verified by" attribution copy for the footer tag. */
25
+ verifiedLabel: string;
26
+ /** Accessible name for the nav region. */
27
+ navLabel: string;
28
+ /** `nfc.symbol.{passport,id}` — "Is this symbol visible…?" */
29
+ symbol: {
30
+ passport: {
31
+ title: string;
32
+ };
33
+ id: {
34
+ title: string;
35
+ };
36
+ /** Filled primary. */
37
+ yesLabel: string;
38
+ /** Outlined secondary. */
39
+ noLabel: string;
40
+ /** Accessible name for the chip-location artwork. */
41
+ illustrationLabel: string;
42
+ };
43
+ /** `nfc.tutorial.{passport,id}` — the pre-scan instruction. */
44
+ tutorial: {
45
+ passport: NfcHeadingStrings;
46
+ id: NfcHeadingStrings;
47
+ ctaLabel: string;
48
+ illustrationLabel: string;
49
+ };
50
+ /**
51
+ * `nfc.scanning.*` — the Prizma layer that runs UNDER the platform's own NFC
52
+ * sheet: title block + progress bar. The sheet itself is OS chrome and is not
53
+ * a screen this package can build (see `NfcScanningScreen`).
54
+ *
55
+ * Two entries only. There is no `error` copy here: on the failure frames
56
+ * (`nfc.scanning.scanningerror` · `.androidscanningError`) the words "We
57
+ * couldn't scan the chip" belong to the OS sheet, and the Prizma layer behind
58
+ * it is still the `scanning` one.
59
+ */
60
+ scanning: {
61
+ scanning: NfcHeadingStrings;
62
+ done: NfcHeadingStrings;
63
+ /** The line under the bar ("Hold still.."). */
64
+ progressLabel: string;
65
+ };
66
+ /** `nfc.tryagain.*` — retry instructions, one per passport page + the ID. */
67
+ tryAgain: {
68
+ passport: NfcHeadingStrings;
69
+ firstPage: NfcHeadingStrings;
70
+ photoPage: NfcHeadingStrings;
71
+ backPage: NfcHeadingStrings;
72
+ id: NfcHeadingStrings;
73
+ /** Filled primary. */
74
+ ctaLabel: string;
75
+ /** Outlined secondary — opens the common-issues sheet. */
76
+ helpLabel: string;
77
+ illustrationLabel: string;
78
+ };
79
+ /** `nfc.commonissues.{id,passport}` — the help sheet. */
80
+ commonIssues: {
81
+ title: string;
82
+ ctaLabel: string;
83
+ /** Accessible name for the row list. */
84
+ listLabel: string;
85
+ /** Three rows on the ID sheet, five on the passport one. */
86
+ issues: Record<NfcDocumentType, NfcIssueStrings[]>;
87
+ };
88
+ /** `nfc.loading.default` — chip read, identity being verified. */
89
+ loading: NfcHeadingStrings;
90
+ /** `nfc.success.default` — the verdict. No button. */
91
+ success: {
92
+ title: string;
93
+ };
94
+ /** `nfc.error.{unable,generalerror}` — the two verdict errors. */
95
+ error: {
96
+ unable: NfcHeadingStrings & {
97
+ ctaLabel: string;
98
+ };
99
+ general: {
100
+ title: string;
101
+ ctaLabel: string;
102
+ };
103
+ };
104
+ /** `nfc.error.nfcsettings` — the "turn NFC on" dialog. */
105
+ settings: {
106
+ title: string;
107
+ subtitle: string;
108
+ ctaLabel: string;
109
+ /** Accessible name for the dialog. */
110
+ dialogLabel: string;
111
+ };
112
+ }
@@ -0,0 +1,7 @@
1
+ // NFC — every string the module's screens render.
2
+ //
3
+ // Screens are pure presentational components (GUIDELINES.md §9): no English is
4
+ // baked into a screen file, so the whole module is translated by swapping this
5
+ // one object. Mirrors the module's Figma localization columns (🇺🇸 US · 🇪🇸 ES ·
6
+ // 🇵🇹 PT) on `dlEkkopentyypbxlYjDWTZ`, page `19971:96836`.
7
+ export {};
@@ -0,0 +1,28 @@
1
+ import React from 'react';
2
+ import { type PrizmaProcessingScreenProps } from './ProcessingScreen';
3
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
4
+ import type { NfcStrings } from './NfcStrings';
5
+ import './ScreenLayout.css';
6
+ export interface NfcSuccessScreenProps extends Omit<PrizmaProcessingScreenProps, 'status' | 'title' | 'subtitle' | 'verifiedLabel' | 'navLabel'> {
7
+ /** Module copy — this screen reads the `success` slice. */
8
+ strings: NfcStrings;
9
+ screenId?: string;
10
+ overrides?: PrizmaScreenOverrides;
11
+ onAction?: PrizmaScreenActionHandler;
12
+ }
13
+ /**
14
+ * NFC — "Identity successfully verified", the module's positive verdict.
15
+ * Purple section `nfc.success.default` (19975:109249).
16
+ *
17
+ * Archetype C, not F: the section draws NO button (the flow advances on its
18
+ * own), and §6-F reserves C for exactly the pure no-CTA case — the same split
19
+ * Email Input's success takes while Phone Input's, which does draw a button,
20
+ * sits on F (#EI-4).
21
+ *
22
+ * Figma draws the check as a filled green disc; Core renders the single-colour
23
+ * OUTLINE mark from the icon bank (icon-outline sweep, owner 2026-07-28), so
24
+ * this screen shows the outline — the module Figma is one sweep behind, exactly
25
+ * as recorded for every other module's status marks (#15, #DC-34).
26
+ */
27
+ export declare const NfcSuccessScreen: React.ForwardRefExoticComponent<NfcSuccessScreenProps & React.RefAttributes<HTMLDivElement>>;
28
+ export default NfcSuccessScreen;
@@ -0,0 +1,22 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { forwardRef } from 'react';
4
+ import { PrizmaProcessingScreen, } from './ProcessingScreen';
5
+ import './ScreenLayout.css';
6
+ /**
7
+ * NFC — "Identity successfully verified", the module's positive verdict.
8
+ * Purple section `nfc.success.default` (19975:109249).
9
+ *
10
+ * Archetype C, not F: the section draws NO button (the flow advances on its
11
+ * own), and §6-F reserves C for exactly the pure no-CTA case — the same split
12
+ * Email Input's success takes while Phone Input's, which does draw a button,
13
+ * sits on F (#EI-4).
14
+ *
15
+ * Figma draws the check as a filled green disc; Core renders the single-colour
16
+ * OUTLINE mark from the icon bank (icon-outline sweep, owner 2026-07-28), so
17
+ * this screen shows the outline — the module Figma is one sweep behind, exactly
18
+ * as recorded for every other module's status marks (#15, #DC-34).
19
+ */
20
+ export const NfcSuccessScreen = forwardRef(({ strings, screenId = 'nfc-success', overrides, onAction, ...shell }, ref) => (_jsx(PrizmaProcessingScreen, { ref: ref, status: "success", title: strings.success.title, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell })));
21
+ NfcSuccessScreen.displayName = 'NfcSuccessScreen';
22
+ export default NfcSuccessScreen;
@@ -0,0 +1,39 @@
1
+ import React from 'react';
2
+ import { type PrizmaListScreenProps } from './ListScreen';
3
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
4
+ import type { NfcDocumentType, NfcStrings } from './NfcStrings';
5
+ import './ScreenLayout.css';
6
+ export interface NfcSymbolScreenProps extends Omit<PrizmaListScreenProps, 'title' | 'subtitle' | 'children' | 'ctaLabel' | 'secondaryCtaLabel' | 'linkLabel' | 'verifiedLabel' | 'navLabel'> {
7
+ /** Module copy — this screen reads the `symbol` slice. */
8
+ strings: NfcStrings;
9
+ /** Which purple section: `nfc.symbol.passport` or `nfc.symbol.id`. */
10
+ documentType?: NfcDocumentType;
11
+ screenId?: string;
12
+ overrides?: PrizmaScreenOverrides;
13
+ onAction?: PrizmaScreenActionHandler;
14
+ }
15
+ /**
16
+ * NFC — "Is this symbol visible on your passport cover / on the front or back
17
+ * of your ID?", the gate that decides whether the chip flow can run at all.
18
+ * Purple sections `nfc.symbol.passport` (19974:74431) and `nfc.symbol.id`
19
+ * (19978:116624).
20
+ *
21
+ * Built on the List archetype (GUIDELINES.md §6-G, `PrizmaListScreen`) rather
22
+ * than the Tutorial one, because the frames TOP-align the title at the nav's
23
+ * Spacing/24 and hang the artwork under it — which is exactly what G's middle
24
+ * slot does — while archetype A's `__flex` centres its illustration in the
25
+ * whole middle and would drop the title ~84px. G's slot is a generic middle,
26
+ * not a list-only slot; the class name is the only thing that says otherwise.
27
+ *
28
+ * The artwork is Core's own `PrizmaIllustrationNfcLocation` — the "where is the
29
+ * chip" companion from the same Figma section as the scan animation — so
30
+ * nothing is inlined here (GUIDELINES §10).
31
+ *
32
+ * ONE thing Figma draws that this screen does not: the two answers side by
33
+ * side, "No" left and "Yes" right. Archetype G has no `ctaOrientation` (only F
34
+ * does, #F-33), and a screen never declares its own button layout, so the pair
35
+ * stacks — primary "Yes" above secondary "No", which is the standing order rule
36
+ * (#GEO-1). Reported as an archetype gap rather than worked around.
37
+ */
38
+ export declare const NfcSymbolScreen: React.ForwardRefExoticComponent<NfcSymbolScreenProps & React.RefAttributes<HTMLDivElement>>;
39
+ export default NfcSymbolScreen;
@@ -0,0 +1,32 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { forwardRef } from 'react';
4
+ import { PrizmaIllustrationNfcLocation } from '@incodetech/prizma-core-web/illustration-nfc-scan';
5
+ import { PrizmaListScreen } from './ListScreen';
6
+ import './ScreenLayout.css';
7
+ /**
8
+ * NFC — "Is this symbol visible on your passport cover / on the front or back
9
+ * of your ID?", the gate that decides whether the chip flow can run at all.
10
+ * Purple sections `nfc.symbol.passport` (19974:74431) and `nfc.symbol.id`
11
+ * (19978:116624).
12
+ *
13
+ * Built on the List archetype (GUIDELINES.md §6-G, `PrizmaListScreen`) rather
14
+ * than the Tutorial one, because the frames TOP-align the title at the nav's
15
+ * Spacing/24 and hang the artwork under it — which is exactly what G's middle
16
+ * slot does — while archetype A's `__flex` centres its illustration in the
17
+ * whole middle and would drop the title ~84px. G's slot is a generic middle,
18
+ * not a list-only slot; the class name is the only thing that says otherwise.
19
+ *
20
+ * The artwork is Core's own `PrizmaIllustrationNfcLocation` — the "where is the
21
+ * chip" companion from the same Figma section as the scan animation — so
22
+ * nothing is inlined here (GUIDELINES §10).
23
+ *
24
+ * ONE thing Figma draws that this screen does not: the two answers side by
25
+ * side, "No" left and "Yes" right. Archetype G has no `ctaOrientation` (only F
26
+ * does, #F-33), and a screen never declares its own button layout, so the pair
27
+ * stacks — primary "Yes" above secondary "No", which is the standing order rule
28
+ * (#GEO-1). Reported as an archetype gap rather than worked around.
29
+ */
30
+ export const NfcSymbolScreen = forwardRef(({ strings, documentType = 'passport', screenId = `nfc-symbol-${documentType}`, overrides, onAction, ...shell }, ref) => (_jsx(PrizmaListScreen, { ref: ref, title: strings.symbol[documentType].title, ctaLabel: strings.symbol.yesLabel, secondaryCtaLabel: strings.symbol.noLabel, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell, children: _jsx(PrizmaIllustrationNfcLocation, { type: documentType, ariaLabel: strings.symbol.illustrationLabel }) })));
31
+ NfcSymbolScreen.displayName = 'NfcSymbolScreen';
32
+ export default NfcSymbolScreen;
@@ -0,0 +1,53 @@
1
+ import React, { type ReactNode } from 'react';
2
+ import { type PrizmaListScreenProps } from './ListScreen';
3
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
4
+ import type { NfcStrings } from './NfcStrings';
5
+ import './ScreenLayout.css';
6
+ /**
7
+ * Which retry instruction to show. The four passport values are the pages a
8
+ * passport read walks through — `nfc.tryagain.passport` (the cover),
9
+ * `.passportfirstpage`, `.passportphotopage`, `.passportbackpage` — and `id` is
10
+ * the single-surface ID section.
11
+ */
12
+ export type NfcTryAgainStep = 'passport' | 'firstPage' | 'photoPage' | 'backPage' | 'id';
13
+ export interface NfcTryAgainScreenProps extends Omit<PrizmaListScreenProps, 'title' | 'subtitle' | 'children' | 'ctaLabel' | 'secondaryCtaLabel' | 'linkLabel' | 'verifiedLabel' | 'navLabel'> {
14
+ /** Module copy — this screen reads the `tryAgain` slice. */
15
+ strings: NfcStrings;
16
+ /** Which purple section to render. Default `passport`. */
17
+ step?: NfcTryAgainStep;
18
+ /** Replace Core's NFC artwork. */
19
+ illustration?: ReactNode;
20
+ screenId?: string;
21
+ overrides?: PrizmaScreenOverrides;
22
+ onAction?: PrizmaScreenActionHandler;
23
+ }
24
+ /**
25
+ * NFC — the retry instructions: "Let's try again" for the cover, then one
26
+ * screen per passport page ("Scan the first page" / "the photo page" / "the
27
+ * back page"), plus the ID's own. Purple sections `nfc.tryagain.*`
28
+ * (22469:40368), five in all.
29
+ *
30
+ * ONE screen for all five: they draw the identical skeleton — title block →
31
+ * document artwork filling the middle → Help + Try again — and differ only in
32
+ * the instruction, so five files would have been five chances to drift. The
33
+ * artwork is Core's `PrizmaIllustrationNfcScan`, frozen (`animated={false}`)
34
+ * because these sections draw the document at rest, not the scan loop.
35
+ *
36
+ * Archetype G (`PrizmaListScreen`) for the same reason as `NfcSymbolScreen`:
37
+ * the frames top-align the title at Spacing/24 under the nav and hang the
38
+ * artwork below it.
39
+ *
40
+ * TWO things Figma draws that this screen does not, both reported rather than
41
+ * worked around:
42
+ * - **The page-position dots.** Every passport section carries a 52 × 7 row of
43
+ * four dots under the artwork, marking which page is being read. Core ships
44
+ * no pagination/dots primitive — `PrizmaStepper` is a journey stepper with
45
+ * labelled segments and icons, a different thing — and GUIDELINES §10 forbids
46
+ * inventing one. The step is still legible: each section's title names the
47
+ * page. **Core request: a dots/page-indicator primitive.**
48
+ * - **Help | Try again side by side.** Archetype G has no `ctaOrientation`
49
+ * (only F does, #F-33), so the pair stacks: primary "Try again" above
50
+ * secondary "Help", per the standing order rule (#GEO-1).
51
+ */
52
+ export declare const NfcTryAgainScreen: React.ForwardRefExoticComponent<NfcTryAgainScreenProps & React.RefAttributes<HTMLDivElement>>;
53
+ export default NfcTryAgainScreen;
@@ -0,0 +1,45 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { forwardRef } from 'react';
4
+ import { PrizmaIllustrationNfcScan } from '@incodetech/prizma-core-web/illustration-nfc-scan';
5
+ import { PrizmaListScreen } from './ListScreen';
6
+ import './ScreenLayout.css';
7
+ /** Which document each step belongs to — picks the artwork. */
8
+ const DOCUMENT_BY_STEP = {
9
+ passport: 'passport',
10
+ firstPage: 'passport',
11
+ photoPage: 'passport',
12
+ backPage: 'passport',
13
+ id: 'id',
14
+ };
15
+ /**
16
+ * NFC — the retry instructions: "Let's try again" for the cover, then one
17
+ * screen per passport page ("Scan the first page" / "the photo page" / "the
18
+ * back page"), plus the ID's own. Purple sections `nfc.tryagain.*`
19
+ * (22469:40368), five in all.
20
+ *
21
+ * ONE screen for all five: they draw the identical skeleton — title block →
22
+ * document artwork filling the middle → Help + Try again — and differ only in
23
+ * the instruction, so five files would have been five chances to drift. The
24
+ * artwork is Core's `PrizmaIllustrationNfcScan`, frozen (`animated={false}`)
25
+ * because these sections draw the document at rest, not the scan loop.
26
+ *
27
+ * Archetype G (`PrizmaListScreen`) for the same reason as `NfcSymbolScreen`:
28
+ * the frames top-align the title at Spacing/24 under the nav and hang the
29
+ * artwork below it.
30
+ *
31
+ * TWO things Figma draws that this screen does not, both reported rather than
32
+ * worked around:
33
+ * - **The page-position dots.** Every passport section carries a 52 × 7 row of
34
+ * four dots under the artwork, marking which page is being read. Core ships
35
+ * no pagination/dots primitive — `PrizmaStepper` is a journey stepper with
36
+ * labelled segments and icons, a different thing — and GUIDELINES §10 forbids
37
+ * inventing one. The step is still legible: each section's title names the
38
+ * page. **Core request: a dots/page-indicator primitive.**
39
+ * - **Help | Try again side by side.** Archetype G has no `ctaOrientation`
40
+ * (only F does, #F-33), so the pair stacks: primary "Try again" above
41
+ * secondary "Help", per the standing order rule (#GEO-1).
42
+ */
43
+ export const NfcTryAgainScreen = forwardRef(({ strings, step = 'passport', illustration, screenId = `nfc-try-again-${step}`, overrides, onAction, ...shell }, ref) => (_jsx(PrizmaListScreen, { ref: ref, title: strings.tryAgain[step].title, subtitle: strings.tryAgain[step].subtitle, ctaLabel: strings.tryAgain.ctaLabel, secondaryCtaLabel: strings.tryAgain.helpLabel, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell, children: illustration ?? (_jsx(PrizmaIllustrationNfcScan, { type: DOCUMENT_BY_STEP[step], animated: false, ariaLabel: strings.tryAgain.illustrationLabel })) })));
44
+ NfcTryAgainScreen.displayName = 'NfcTryAgainScreen';
45
+ export default NfcTryAgainScreen;
@@ -0,0 +1,33 @@
1
+ import React, { type ReactNode } from 'react';
2
+ import { type PrizmaTutorialScreenProps } from './TutorialScreen';
3
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
4
+ import type { NfcDocumentType, NfcStrings } from './NfcStrings';
5
+ import './ScreenLayout.css';
6
+ export interface NfcTutorialScreenProps extends Omit<PrizmaTutorialScreenProps, 'title' | 'subtitle' | 'ctaLabel' | 'illustration' | 'verifiedLabel' | 'navLabel'> {
7
+ /** Module copy — this screen reads the `tutorial` slice. */
8
+ strings: NfcStrings;
9
+ /** Which purple section: `nfc.tutorial.passport` or `nfc.tutorial.id`. */
10
+ documentType?: NfcDocumentType;
11
+ /** Replace Core's NFC artwork (hosts that ship their own document art). */
12
+ illustration?: ReactNode;
13
+ screenId?: string;
14
+ overrides?: PrizmaScreenOverrides;
15
+ onAction?: PrizmaScreenActionHandler;
16
+ }
17
+ /**
18
+ * NFC — "Let's scan your passport chip" / "Read the chip on the ID", the
19
+ * instruction screen the CTA starts the read from. Purple sections
20
+ * `nfc.tutorial.passport` (19974:80984) and `nfc.tutorial.id` (19978:115144),
21
+ * on the Tutorial archetype (GUIDELINES.md §6-A).
22
+ *
23
+ * The centrepiece is Core's `PrizmaIllustrationNfcScan` — the looping
24
+ * phone-approaches-the-chip composition whose Figma frames ARE the two
25
+ * `iOS Animation` / `Android Animation` layers these sections draw. The screen
26
+ * supplies no artwork of its own.
27
+ *
28
+ * This is also what the four `nfc.scanning.*ready` sections show: they are this
29
+ * exact screen with the platform's NFC sheet presented over it, so they need no
30
+ * screen of their own (see `NfcScanningScreen`).
31
+ */
32
+ export declare const NfcTutorialScreen: React.ForwardRefExoticComponent<NfcTutorialScreenProps & React.RefAttributes<HTMLDivElement>>;
33
+ export default NfcTutorialScreen;
@@ -0,0 +1,24 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { forwardRef } from 'react';
4
+ import { PrizmaIllustrationNfcScan } from '@incodetech/prizma-core-web/illustration-nfc-scan';
5
+ import { PrizmaTutorialScreen } from './TutorialScreen';
6
+ import './ScreenLayout.css';
7
+ /**
8
+ * NFC — "Let's scan your passport chip" / "Read the chip on the ID", the
9
+ * instruction screen the CTA starts the read from. Purple sections
10
+ * `nfc.tutorial.passport` (19974:80984) and `nfc.tutorial.id` (19978:115144),
11
+ * on the Tutorial archetype (GUIDELINES.md §6-A).
12
+ *
13
+ * The centrepiece is Core's `PrizmaIllustrationNfcScan` — the looping
14
+ * phone-approaches-the-chip composition whose Figma frames ARE the two
15
+ * `iOS Animation` / `Android Animation` layers these sections draw. The screen
16
+ * supplies no artwork of its own.
17
+ *
18
+ * This is also what the four `nfc.scanning.*ready` sections show: they are this
19
+ * exact screen with the platform's NFC sheet presented over it, so they need no
20
+ * screen of their own (see `NfcScanningScreen`).
21
+ */
22
+ export const NfcTutorialScreen = forwardRef(({ strings, documentType = 'passport', illustration, screenId = `nfc-tutorial-${documentType}`, overrides, onAction, ...shell }, ref) => (_jsx(PrizmaTutorialScreen, { ref: ref, title: strings.tutorial[documentType].title, subtitle: strings.tutorial[documentType].subtitle, ctaLabel: strings.tutorial.ctaLabel, illustration: illustration ?? (_jsx(PrizmaIllustrationNfcScan, { type: documentType, ariaLabel: strings.tutorial.illustrationLabel })), verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell })));
23
+ NfcTutorialScreen.displayName = 'NfcTutorialScreen';
24
+ export default NfcTutorialScreen;
@@ -0,0 +1,44 @@
1
+ import React from 'react';
2
+ import { type PrizmaResultScreenProps } from './ResultScreen';
3
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
4
+ import type { PermissionsStrings } from './PermissionsStrings';
5
+ import './ScreenLayout.css';
6
+ export interface PermissionsAllowScreenProps extends Omit<PrizmaResultScreenProps, 'status' | 'title' | 'subtitle' | 'glyph' | 'ctaLabel' | 'linkLabel' | 'verifiedLabel' | 'navLabel'> {
7
+ /** Family copy — this screen reads the `allow` slice. */
8
+ strings: PermissionsStrings;
9
+ screenId?: string;
10
+ overrides?: PrizmaScreenOverrides;
11
+ onAction?: PrizmaScreenActionHandler;
12
+ }
13
+ /**
14
+ * Permissions — "Allow Incode to access your camera", built on the Result
15
+ * archetype (GUIDELINES.md §6-F, `PrizmaResultScreen`).
16
+ *
17
+ * Figma: `1-3-2-id-allow-camera` of the `Permissions` section
18
+ * (qGJjfL4O0JSjz1x4tOjJn8, 3:1193). The sibling of
19
+ * `PermissionsRequiredScreen`, and the reason they are two screens rather than
20
+ * one with a variant: this frame states the ask in a centred title + supporting
21
+ * line, that one argues it with a list of reasons hung under the title. Result
22
+ * centres its column, List hangs it from the top — different archetypes, so
23
+ * different screens.
24
+ *
25
+ * `1-3-2-id-allow-camera-quit-process` is the SAME screen with an iOS confirm
26
+ * alert layered over it — an OS surface, not a second Prizma screen (see
27
+ * `PermissionsStrings.ts`).
28
+ *
29
+ * `showHeader={false}` keeps the section's logo-free chrome (the flow has not
30
+ * started) with the nav row still reserved.
31
+ *
32
+ * TWO things Figma draws that this screen does not, both reported rather than
33
+ * worked around:
34
+ * - **The filled amber disc.** Core renders the canonical OUTLINE warning mark
35
+ * (icon-outline sweep, DEVIATIONS #15).
36
+ * - **"Quit process" above the CTA.** Archetype F renders its tertiary link
37
+ * BELOW the button stack (`ResultScreen.tsx`), so this screen ships inverted
38
+ * against its frame. The archetype owns the order and no screen re-declares
39
+ * it — F needs a `ctaOrder` slot alongside the `ctaOrientation` it already
40
+ * has, exactly as Geolocation escalated for the same reason. Borrowing
41
+ * `bandContent` to fake the position is the workaround #VS-17 rejected.
42
+ */
43
+ export declare const PermissionsAllowScreen: React.ForwardRefExoticComponent<PermissionsAllowScreenProps & React.RefAttributes<HTMLDivElement>>;
44
+ export default PermissionsAllowScreen;
@@ -0,0 +1,38 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { forwardRef } from 'react';
4
+ import { PrizmaResultScreen } from './ResultScreen';
5
+ import './ScreenLayout.css';
6
+ /**
7
+ * Permissions — "Allow Incode to access your camera", built on the Result
8
+ * archetype (GUIDELINES.md §6-F, `PrizmaResultScreen`).
9
+ *
10
+ * Figma: `1-3-2-id-allow-camera` of the `Permissions` section
11
+ * (qGJjfL4O0JSjz1x4tOjJn8, 3:1193). The sibling of
12
+ * `PermissionsRequiredScreen`, and the reason they are two screens rather than
13
+ * one with a variant: this frame states the ask in a centred title + supporting
14
+ * line, that one argues it with a list of reasons hung under the title. Result
15
+ * centres its column, List hangs it from the top — different archetypes, so
16
+ * different screens.
17
+ *
18
+ * `1-3-2-id-allow-camera-quit-process` is the SAME screen with an iOS confirm
19
+ * alert layered over it — an OS surface, not a second Prizma screen (see
20
+ * `PermissionsStrings.ts`).
21
+ *
22
+ * `showHeader={false}` keeps the section's logo-free chrome (the flow has not
23
+ * started) with the nav row still reserved.
24
+ *
25
+ * TWO things Figma draws that this screen does not, both reported rather than
26
+ * worked around:
27
+ * - **The filled amber disc.** Core renders the canonical OUTLINE warning mark
28
+ * (icon-outline sweep, DEVIATIONS #15).
29
+ * - **"Quit process" above the CTA.** Archetype F renders its tertiary link
30
+ * BELOW the button stack (`ResultScreen.tsx`), so this screen ships inverted
31
+ * against its frame. The archetype owns the order and no screen re-declares
32
+ * it — F needs a `ctaOrder` slot alongside the `ctaOrientation` it already
33
+ * has, exactly as Geolocation escalated for the same reason. Borrowing
34
+ * `bandContent` to fake the position is the workaround #VS-17 rejected.
35
+ */
36
+ export const PermissionsAllowScreen = forwardRef(({ strings, screenId = 'permissions-allow', showHeader = false, overrides, onAction, ...shell }, ref) => (_jsx(PrizmaResultScreen, { ref: ref, showHeader: showHeader, status: "warning", title: strings.allow.title, subtitle: strings.allow.subtitle, ctaLabel: strings.allow.ctaLabel, linkLabel: strings.allow.quitLabel, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell })));
37
+ PermissionsAllowScreen.displayName = 'PermissionsAllowScreen';
38
+ export default PermissionsAllowScreen;
@@ -0,0 +1,42 @@
1
+ import React from 'react';
2
+ import { type PrizmaListScreenProps } from './ListScreen';
3
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
4
+ import type { PermissionsBrowser, PermissionsStrings } from './PermissionsStrings';
5
+ import './ScreenLayout.css';
6
+ export interface PermissionsBrowserStepsScreenProps extends Omit<PrizmaListScreenProps, 'status' | 'title' | 'subtitle' | 'children' | 'ctaLabel' | 'linkLabel' | 'verifiedLabel' | 'navLabel'> {
7
+ /** Family copy — this screen reads the `browserSteps` slice. */
8
+ strings: PermissionsStrings;
9
+ /** Which browser's steps to show. Default `safariIos`. */
10
+ browser?: PermissionsBrowser;
11
+ screenId?: string;
12
+ overrides?: PrizmaScreenOverrides;
13
+ onAction?: PrizmaScreenActionHandler;
14
+ }
15
+ /**
16
+ * Permissions — "Follow the next steps to allow Incode to access your camera",
17
+ * built on the List archetype (GUIDELINES.md §6-G, `PrizmaListScreen`).
18
+ *
19
+ * Figma: `1-4-2-id` of the `Permissions` section, plus the four
20
+ * `Android browsers` frames of the Web full-flow board (4:8159 — Chrome,
21
+ * Firefox, Samsung Internet, Opera). ONE screen for all five: they draw the
22
+ * identical skeleton — title block → a step list filling the middle → the
23
+ * refresh CTA — and differ only in the rows, because re-enabling the camera is
24
+ * a different journey in each browser. Five files would have been five chances
25
+ * to drift.
26
+ *
27
+ * The rows are Core's `PrizmaCardListCommonIssues` verbatim; only the leading
28
+ * glyph is chosen here, from the canonical bank (see `STEP_ICONS`).
29
+ *
30
+ * The title block is LEFT-aligned for this whole family. Every frame starts the
31
+ * two-line headline flush at the gutter over left-led step rows; a centred
32
+ * headline above a left-aligned list reads as a mistake. The screen therefore
33
+ * DEFAULTS the archetype's own `align` override to `left` rather than declaring
34
+ * any alignment of its own, and a host that passes `overrides.align` still wins.
35
+ *
36
+ * One thing Figma draws that this screen does not: **mixed weight inside a
37
+ * row.** Figma bolds the actionable fragment ("Tap **Three dots** in the top
38
+ * right"); Core's row `title` is a plain `string`, so the sentence renders in
39
+ * one weight. Core request already open from Geolocation: a `ReactNode` title.
40
+ */
41
+ export declare const PermissionsBrowserStepsScreen: React.ForwardRefExoticComponent<PermissionsBrowserStepsScreenProps & React.RefAttributes<HTMLDivElement>>;
42
+ export default PermissionsBrowserStepsScreen;
@@ -0,0 +1,86 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { forwardRef } from 'react';
4
+ import { IconArrowLeft, IconCamera, IconFolderFileOpen, IconLock, IconLockCheck, IconMobilePhone, IconNumberedList, IconTextAi, } from '@incodetech/prizma-core-icons';
5
+ import { PrizmaCardListCommonIssues } from '@incodetech/prizma-core-web/card-list';
6
+ import { PrizmaListScreen } from './ListScreen';
7
+ import './ScreenLayout.css';
8
+ /**
9
+ * Step kind → canonical bank glyph. ONE map, in one place, for the same reason
10
+ * Geolocation's exists (`GeolocationBrowserStepsScreen`) and Document Capture's
11
+ * before it (DEVIATIONS #DC-23): Figma leads every row with OS/browser chrome
12
+ * the Prizma bank does not ship — a ⋮ overflow menu, a gear tile, a permission
13
+ * toggle, Safari's "AA" control and each browser's own logo on the last row.
14
+ * Shipping those would mean inventing primitives and bundling brand rasters,
15
+ * both forbidden (rule 1, GUIDELINES §10), so each row takes the nearest
16
+ * canonical glyph:
17
+ *
18
+ * settings → IconLock site settings sit behind the address-bar lock
19
+ * browser → IconTextAi Safari's "AA" is the address-bar text control
20
+ * menu → IconNumberedList the ⋮ overflow opens a menu list
21
+ * permissions → IconLockCheck a granted permission
22
+ * camera → IconCamera exact
23
+ * toggle → IconLockCheck the Allow/Ask switch
24
+ * device → IconMobilePhone the device's Settings app
25
+ * apps → IconFolderFileOpen the app list / app drawer
26
+ * return → IconArrowLeft "return here and refresh" (Figma draws the
27
+ * browser's own logo — never bundled)
28
+ *
29
+ * This is the SAME substitution table Geolocation already escalated to the
30
+ * owner, extended by `camera`/`toggle`/`browser` for this family. Mint the
31
+ * glyphs or bless the substitutions — one decision covers both families.
32
+ */
33
+ const STEP_ICONS = {
34
+ settings: _jsx(IconLock, { size: "m" }),
35
+ browser: _jsx(IconTextAi, { size: "m" }),
36
+ menu: _jsx(IconNumberedList, { size: "m" }),
37
+ permissions: _jsx(IconLockCheck, { size: "m" }),
38
+ camera: _jsx(IconCamera, { size: "m" }),
39
+ toggle: _jsx(IconLockCheck, { size: "m" }),
40
+ device: _jsx(IconMobilePhone, { size: "m" }),
41
+ apps: _jsx(IconFolderFileOpen, { size: "m" }),
42
+ return: _jsx(IconArrowLeft, { size: "m" }),
43
+ };
44
+ /**
45
+ * Permissions — "Follow the next steps to allow Incode to access your camera",
46
+ * built on the List archetype (GUIDELINES.md §6-G, `PrizmaListScreen`).
47
+ *
48
+ * Figma: `1-4-2-id` of the `Permissions` section, plus the four
49
+ * `Android browsers` frames of the Web full-flow board (4:8159 — Chrome,
50
+ * Firefox, Samsung Internet, Opera). ONE screen for all five: they draw the
51
+ * identical skeleton — title block → a step list filling the middle → the
52
+ * refresh CTA — and differ only in the rows, because re-enabling the camera is
53
+ * a different journey in each browser. Five files would have been five chances
54
+ * to drift.
55
+ *
56
+ * The rows are Core's `PrizmaCardListCommonIssues` verbatim; only the leading
57
+ * glyph is chosen here, from the canonical bank (see `STEP_ICONS`).
58
+ *
59
+ * The title block is LEFT-aligned for this whole family. Every frame starts the
60
+ * two-line headline flush at the gutter over left-led step rows; a centred
61
+ * headline above a left-aligned list reads as a mistake. The screen therefore
62
+ * DEFAULTS the archetype's own `align` override to `left` rather than declaring
63
+ * any alignment of its own, and a host that passes `overrides.align` still wins.
64
+ *
65
+ * One thing Figma draws that this screen does not: **mixed weight inside a
66
+ * row.** Figma bolds the actionable fragment ("Tap **Three dots** in the top
67
+ * right"); Core's row `title` is a plain `string`, so the sentence renders in
68
+ * one weight. Core request already open from Geolocation: a `ReactNode` title.
69
+ */
70
+ export const PermissionsBrowserStepsScreen = forwardRef(({ strings, browser = 'safariIos', screenId = `permissions-browser-steps-${browser}`, showHeader = false, overrides, onAction, ...shell }, ref) => {
71
+ const slice = strings.browserSteps.browsers[browser];
72
+ /* Family default, not a local re-declaration: the archetype already owns a
73
+ left variant, so the screen only picks which of ITS variants this family
74
+ uses. An explicit `overrides.align` from the host still wins. */
75
+ const alignedOverrides = {
76
+ ...overrides,
77
+ align: overrides?.align ?? 'left',
78
+ };
79
+ return (_jsx(PrizmaListScreen, { ref: ref, showHeader: showHeader, title: strings.browserSteps.title, subtitle: slice?.label, ctaLabel: strings.browserSteps.ctaLabel, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: alignedOverrides, onAction: onAction, ...shell, children: _jsx(PrizmaCardListCommonIssues, { items: (slice?.steps ?? []).map((step) => ({
80
+ icon: STEP_ICONS[step.kind],
81
+ title: step.label,
82
+ showSubtitle: false,
83
+ })) }) }));
84
+ });
85
+ PermissionsBrowserStepsScreen.displayName = 'PermissionsBrowserStepsScreen';
86
+ export default PermissionsBrowserStepsScreen;