@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,111 @@
1
+ /* ID Capture — module layout additions.
2
+ *
3
+ * ONLY what the foundation archetypes do not already own. Every value is a
4
+ * token; each departure from GUIDELINES.md carries a numbered row in
5
+ * DEVIATIONS.md (Wave 2 section).
6
+ *
7
+ * The module's one structural discovery is the THREE-BAND recipe every
8
+ * document screen shares — measured off the purple sections, not eyeballed:
9
+ *
10
+ * 1-5-1-id-empty (CONTENT 390×610, node 16285:42627)
11
+ * top container 24 → 181.014 342 × 157.014 Title bottom-anchored,
12
+ * 40px of air below it
13
+ * Capture / ID 181.014 → 428.986 342 × 247.97 (214.97 frame + 33 row)
14
+ * bottom container 428.986 → 586 342 × 157.014 Manual capture flush
15
+ * to its own bottom
16
+ * → 24 + 157.014 + 247.97 + 157.014 + 24 = 610 ✓
17
+ *
18
+ * 1-9-3-id-attempt (CONTENT 390×654, node I19281:325100;16285:42538)
19
+ * top container 24 → 203.014 342 × 179.014 title + 40px air below
20
+ * Capture / ID 203.014 → 417.986 342 × 214.97
21
+ * Encrypted 417.986 → 450.986 154 × 33 (zero gap — Core renders
22
+ * this row INSIDE
23
+ * PrizmaIdCapture, same
24
+ * result)
25
+ * bottom container 450.986 → 630 342 × 179.014 CTAs flush to bottom
26
+ * → 24 + 179.014 + 214.97 + 33 + 179.014 + 24 = 654 ✓
27
+ *
28
+ * Two equal flexible bands hugging a fixed capture stage, the top band holding
29
+ * its content at the bottom with Spacing/40 of air under it. Identical on the
30
+ * dark camera stages and the light result screens, which is why one pair of
31
+ * classes serves both.
32
+ */
33
+
34
+ /* ── The two flexible bands around the capture stage ───────────────────────── */
35
+
36
+ .id-capture-band {
37
+ flex: 1;
38
+ min-height: 0;
39
+ display: flex;
40
+ flex-direction: column;
41
+ justify-content: flex-end;
42
+ /* On the camera stages PrizmaIdCapture's overlay scrim is an absolutely
43
+ * positioned box-shadow that escapes the frame by design; without a stacking
44
+ * context of their own the bands' plain text nodes would paint UNDER it (a
45
+ * positioned sibling always wins over non-positioned content). Lifting the
46
+ * bands keeps the HUD copy and the manual strip above the veil — the same
47
+ * reason ScreenShell declares `contain: layout paint` for the scrim. */
48
+ position: relative;
49
+ z-index: 1;
50
+ }
51
+
52
+ /* Spacing/40 of air between the title block (or the feedback pill) and the
53
+ * capture stage. NOT the foundation's `.prizma-viewfinder__intro`, which pins
54
+ * its title Spacing/24 above the window — that is Face Capture's number; the
55
+ * ID Capture purple sections measure 40 on every single stage and result
56
+ * screen (see the arithmetic above). DEVIATIONS.md #IDC-20. */
57
+ .id-capture-band--top {
58
+ padding-bottom: var(--prizma-spacing-40);
59
+ gap: var(--prizma-spacing-8); /* Title → instruction, GUIDELINES §5 */
60
+ }
61
+
62
+ /* ── Camera stage (dark) ───────────────────────────────────────────────────── */
63
+
64
+ /* The stage's nav row carries only the close X (no logo — the camera owns the
65
+ * screen). The foundation `.prizma-screen-nav` supplies the status-bar reserve,
66
+ * the 44px flow slot and the un-fixing of Core's PrizmaNavigation; the ink is
67
+ * the only thing the camera stage changes: Core's nav icon is the THEMED
68
+ * `Icon/Neutral/500`, which disappears on the always-dark camera surface, so it
69
+ * takes the camera's own Static ink — the same token PrizmaCaptureManual uses
70
+ * for the shutter and the "?" help control. DEVIATIONS.md #IDC-21. */
71
+ .id-capture-stage__nav .prizma-nav__icon {
72
+ color: var(--prizma-icon-neutral-50-static);
73
+ }
74
+
75
+ /* The manual-capture strip spans the content column so its "?" help control
76
+ * lands on the column's right edge (Figma: `Manual capture` 342 wide, x=24). */
77
+ .id-capture-stage__manual {
78
+ width: 100%;
79
+ }
80
+
81
+ /* The feedback pill replaces the title block on the error stages (Figma
82
+ * `1-5-5 … 1-5-9-id-errors`): same band, same Spacing/40 above the frame. */
83
+ .id-capture-stage__feedback {
84
+ display: flex;
85
+ justify-content: center;
86
+ }
87
+
88
+ /* ── Removed: promoted into the foundation ───────────────────────────────────
89
+ * `.id-capture-glyph*` (the non-status glyph slot) is now
90
+ * `ScreenLayout.css`'s `__glyph` — DEVIATIONS #DC-29, closed.
91
+ * `.id-capture-info-list` / `.id-capture-accepted-docs` (the Spacing/24 under a
92
+ * title block) are now the List archetype's `__list` — DEVIATIONS #F-31.
93
+ */
94
+
95
+ /* ── PrizmaIdCapture on a LIGHT surface ────────────────────────────────────── */
96
+ /* The capture component was authored for the camera stage, so two of its layers
97
+ * are deliberately Static: the stand-in camera plate is Surface/Neutral/900 and
98
+ * the encrypted row is white ink. ID Capture's Figma also mounts the SAME
99
+ * component on the light result screens (`*-review`, `*-success`, `*-attempt`,
100
+ * `*-analyzing`), where the plate must not show through the document's 7px air
101
+ * and the reassurance line is drawn in body ink.
102
+ *
103
+ * The plate needs no override — Core's own `mode="overlay"` already makes the
104
+ * window transparent, which is what the light screens want. The ink does: the
105
+ * row is re-inked with the THEMED body token so it also survives dark mode,
106
+ * scoped to the light screens only (the camera stage keeps Core's Static white).
107
+ * Core gap — PrizmaIdCapture has no surface-aware encrypted row. DEVIATIONS.md #IDC-28.
108
+ */
109
+ .id-capture-on-surface .prizma-id-capture__encrypted {
110
+ color: var(--prizma-text-body-800-primary);
111
+ }
@@ -0,0 +1,68 @@
1
+ import React, { forwardRef } from 'react';
2
+ import { IconWifiOff } from '@incodetech/prizma-core-icons';
3
+ import { PrizmaResultScreen, type PrizmaResultScreenProps } from './ResultScreen';
4
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
5
+ import type { IdCaptureStrings } from './IdCaptureStrings';
6
+ import './ScreenLayout.css';
7
+
8
+ export interface IdCaptureNoConnectionScreenProps
9
+ extends Omit<
10
+ PrizmaResultScreenProps,
11
+ 'status' | 'title' | 'subtitle' | 'glyph' | 'ctaLabel' | 'verifiedLabel' | 'navLabel'
12
+ > {
13
+ /** Module copy — this screen reads the `noConnection` slice. */
14
+ strings: IdCaptureStrings;
15
+ screenId?: string;
16
+ overrides?: PrizmaScreenOverrides;
17
+ onAction?: PrizmaScreenActionHandler;
18
+ }
19
+
20
+ /**
21
+ * ID Capture — no internet connection, built on the `PrizmaResultScreen`
22
+ * archetype (GUIDELINES.md §6-F).
23
+ * Figma: purple section `1-9-10-id-no-internet` of the front-side group.
24
+ *
25
+ * Structurally identical to the Face Capture pilot's
26
+ * `genericErrors.noConnection` — Title + one CTA — which is why both now render
27
+ * the same archetype and neither composes a shell. Header and verified tag are on
28
+ * per the owner's non-capture rule (DEVIATIONS #F-30).
29
+ *
30
+ * The Wi-Fi glyph is Figma's `Icon / Wi-Fi` in the archetype's `glyph` slot with
31
+ * the foundation's `__glyph` class; Core's `PrizmaTitle` allowlist is
32
+ * status | spinner | none (DEVIATIONS #10, #DC-29).
33
+ */
34
+ export const IdCaptureNoConnectionScreen = forwardRef<
35
+ HTMLDivElement,
36
+ IdCaptureNoConnectionScreenProps
37
+ >(
38
+ ({ strings, screenId = 'id-capture-no-connection', overrides, onAction, ...shell }, ref) => (
39
+ <PrizmaResultScreen
40
+ ref={ref}
41
+ glyph={
42
+ <span
43
+ className={[
44
+ 'prizma-screen-layout__glyph',
45
+ 'prizma-screen-layout__glyph--negative',
46
+ overrides?.align === 'left' ? 'prizma-screen-layout__glyph--left' : '',
47
+ ]
48
+ .filter(Boolean)
49
+ .join(' ')}
50
+ >
51
+ <IconWifiOff size="l" />
52
+ </span>
53
+ }
54
+ title={strings.noConnection.title}
55
+ subtitle={strings.noConnection.description}
56
+ ctaLabel={strings.noConnection.ctaLabel}
57
+ verifiedLabel={strings.verifiedLabel}
58
+ navLabel={strings.navLabel}
59
+ screenId={screenId}
60
+ overrides={overrides}
61
+ onAction={onAction}
62
+ {...shell}
63
+ />
64
+ ),
65
+ );
66
+ IdCaptureNoConnectionScreen.displayName = 'IdCaptureNoConnectionScreen';
67
+
68
+ export default IdCaptureNoConnectionScreen;
@@ -0,0 +1,102 @@
1
+ import React, { forwardRef } from 'react';
2
+ import { IconApproval, IconBankCardSearch, IconCamera } from '@incodetech/prizma-core-icons';
3
+ import { PrizmaCardListCommonIssues } from '@incodetech/prizma-core-web/card-list';
4
+ import { PrizmaListScreen, type PrizmaListScreenProps } from './ListScreen';
5
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
6
+ import type { IdCaptureStrings } from './IdCaptureStrings';
7
+ import './ScreenLayout.css';
8
+
9
+ /**
10
+ * The three reason rows' leading icons, in the order the purple section lists
11
+ * them: the camera captures the ID · it verifies authenticity · it is required
12
+ * to verify identity. Canonical bank only (§10).
13
+ */
14
+ const ROW_ICONS = [
15
+ <IconCamera key="camera" size="m" />,
16
+ <IconBankCardSearch key="authenticity" size="m" />,
17
+ <IconApproval key="required" size="m" />,
18
+ ];
19
+
20
+ export interface IdCapturePermissionScreenProps
21
+ extends Omit<
22
+ PrizmaListScreenProps,
23
+ | 'status'
24
+ | 'title'
25
+ | 'subtitle'
26
+ | 'children'
27
+ | 'ctaLabel'
28
+ | 'linkLabel'
29
+ | 'verifiedLabel'
30
+ | 'navLabel'
31
+ > {
32
+ /** Module copy — this screen reads the `permission` slice. */
33
+ strings: IdCaptureStrings;
34
+ screenId?: string;
35
+ overrides?: PrizmaScreenOverrides;
36
+ onAction?: PrizmaScreenActionHandler;
37
+ }
38
+
39
+ /**
40
+ * ID Capture — "Camera permission is required", built on the `PrizmaListScreen`
41
+ * archetype (GUIDELINES.md §6-G).
42
+ * Figma: purple section `1-3-2-id` of the `Permissions` group, plus its
43
+ * `1-3-2-id-allow-camera`, `1-3-2-id-quit-process` and
44
+ * `1-3-2-id-allow-camera-quit-process` siblings — which differ only in which
45
+ * control is pressed, i.e. copy/interaction variants of this ONE screen.
46
+ *
47
+ * Warning status mark → Title → three reason rows → a tertiary "quit" link →
48
+ * the permission CTA. `showHeader={false}` keeps the section's logo-free chrome
49
+ * (the flow has not started) with the nav row still reserved.
50
+ *
51
+ * NOT built from this group: `1-3-1-id-iOS+Android` and `1-4-1-id` are the
52
+ * NATIVE OS permission dialogs (an iOS alert and an Android sheet drawn as
53
+ * documentation), and `1-4-2-id` is a step list whose rows are OS app icons
54
+ * (Settings, Safari, the iOS camera tile). None of them is a Prizma surface and
55
+ * none of their chrome exists in Core — building them would mean inventing
56
+ * primitives and shipping platform raster assets, both forbidden (§10, rule 1).
57
+ * Reported to the owner instead. DEVIATIONS.md #IDC-26.
58
+ */
59
+ export const IdCapturePermissionScreen = forwardRef<
60
+ HTMLDivElement,
61
+ IdCapturePermissionScreenProps
62
+ >(
63
+ (
64
+ {
65
+ strings,
66
+ screenId = 'id-capture-permission',
67
+ showHeader = false,
68
+ overrides,
69
+ onAction,
70
+ ...shell
71
+ },
72
+ ref,
73
+ ) => (
74
+ <PrizmaListScreen
75
+ ref={ref}
76
+ showHeader={showHeader}
77
+ status="warning"
78
+ title={strings.permission.title}
79
+ subtitle={strings.permission.description}
80
+ ctaLabel={strings.permission.ctaLabel}
81
+ linkLabel={strings.permission.quitLabel}
82
+ verifiedLabel={strings.verifiedLabel}
83
+ navLabel={strings.navLabel}
84
+ screenId={screenId}
85
+ overrides={overrides}
86
+ onAction={onAction}
87
+ {...shell}
88
+ >
89
+ <PrizmaCardListCommonIssues
90
+ items={strings.permission.rows.map((row, i) => ({
91
+ icon: ROW_ICONS[i % ROW_ICONS.length],
92
+ title: row.title,
93
+ subtitle: row.description,
94
+ showSubtitle: Boolean(row.description),
95
+ }))}
96
+ />
97
+ </PrizmaListScreen>
98
+ ),
99
+ );
100
+ IdCapturePermissionScreen.displayName = 'IdCapturePermissionScreen';
101
+
102
+ export default IdCapturePermissionScreen;
@@ -0,0 +1,197 @@
1
+ import React, { forwardRef, type ReactNode } from 'react';
2
+ import {
3
+ PrizmaIdCapture,
4
+ type PrizmaIdCaptureState,
5
+ } from '@incodetech/prizma-core-web/id-capture';
6
+ import { PrizmaResultScreen, type PrizmaResultScreenProps, type PrizmaResultStatus } from './ResultScreen';
7
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
8
+ import type {
9
+ IdCaptureDocumentType,
10
+ IdCaptureStrings,
11
+ } from './IdCaptureStrings';
12
+ import './ScreenLayout.css';
13
+ import './IdCaptureLayout.css';
14
+
15
+ /**
16
+ * Which verdict the screen reports. Each maps onto a purple section family:
17
+ * - `review` — `*-review` (no status icon, Retake + Continue)
18
+ * - `success` — `*-success`, `1-10-2-id-success-capture-only`
19
+ * - `error` — `*-attempt`, `*-failed-attempt` (retries left)
20
+ * - `exhausted` — `*-no-attempts` (retries used up)
21
+ * - `classification` — Classification Errors / "Scan the back of your ID"
22
+ */
23
+ export type IdCaptureResultVerdict =
24
+ | 'review'
25
+ | 'success'
26
+ | 'error'
27
+ | 'exhausted'
28
+ | 'classification';
29
+
30
+ /** Verdict → the archetype's status slot (Core `PrizmaTitle` icon). */
31
+ const TITLE_STATUS: Record<IdCaptureResultVerdict, PrizmaResultStatus> = {
32
+ review: 'none',
33
+ success: 'success',
34
+ error: 'error',
35
+ exhausted: 'error',
36
+ classification: 'warning',
37
+ };
38
+
39
+ /**
40
+ * Verdict → Core `PrizmaIdCapture` frame border.
41
+ *
42
+ * `classification` is the one place Figma asks for something Core does not
43
+ * draw: an AMBER frame around the still. Core's `BORDER_GROUP` has exactly
44
+ * four treatments (enabled / focused / success / error) and no warning band, so
45
+ * the design system wins and the still keeps the neutral `filled` frame rather
46
+ * than borrowing the red one — a red border would tell the user the capture
47
+ * failed, which is the opposite of "we got it, we just need the other side".
48
+ * DEVIATIONS.md #IDC-22.
49
+ */
50
+ const FRAME_STATE: Record<IdCaptureResultVerdict, PrizmaIdCaptureState> = {
51
+ review: 'filled',
52
+ success: 'success',
53
+ error: 'error',
54
+ exhausted: 'error',
55
+ classification: 'filled',
56
+ };
57
+
58
+ export interface IdCaptureResultScreenProps
59
+ extends Omit<
60
+ PrizmaResultScreenProps,
61
+ | 'status'
62
+ | 'title'
63
+ | 'subtitle'
64
+ | 'children'
65
+ | 'disclaimer'
66
+ | 'ctaLabel'
67
+ | 'secondaryCtaLabel'
68
+ | 'ctaOrientation'
69
+ | 'verifiedLabel'
70
+ | 'navLabel'
71
+ > {
72
+ /** Module copy — this screen reads the slice its `verdict` names. */
73
+ strings: IdCaptureStrings;
74
+ /** Which purple result section to render. Default `success`. */
75
+ verdict?: IdCaptureResultVerdict;
76
+ /** Which document was captured — Core `PrizmaIdCapture.type`. */
77
+ documentType?: IdCaptureDocumentType;
78
+ /** Portrait document orientation — the `↕️ vertical` groups. */
79
+ vertical?: boolean;
80
+ /** The captured document still (<img>) shown inside the frame. */
81
+ still?: ReactNode;
82
+ screenId?: string;
83
+ overrides?: PrizmaScreenOverrides;
84
+ onAction?: PrizmaScreenActionHandler;
85
+ }
86
+
87
+ /**
88
+ * ID Capture — the captured-document verdict screens, built on the
89
+ * `PrizmaResultScreen` archetype (GUIDELINES.md §6-F).
90
+ *
91
+ * ONE screen for every `*-review`, `*-success`, `*-attempt`,
92
+ * `*-failed-attempt` and `*-no-attempts` section across all five capture groups,
93
+ * plus the Classification Errors section — ~35 purple sections that are copy,
94
+ * status-icon, frame-state and CTA variants of a single layout.
95
+ *
96
+ * The captured still rides in the archetype's `children` slot, the attempts line
97
+ * in `disclaimer`, and the review/classification action pair in
98
+ * `secondaryCtaLabel`. This file used to hand-build the whole shell (198 lines)
99
+ * with its own three-band arithmetic in `IdCaptureLayout.css`; the archetype now
100
+ * owns every offset, with two measured consequences logged as #F-33: the title
101
+ * block sits Spacing/16 above the frame rather than the module's Spacing/40, and
102
+ * review's Retake+Continue pair stacks vertically instead of sitting side by side
103
+ * (the archetype has one CTA orientation).
104
+ *
105
+ * `showHeader={false}` keeps the family's chrome as Figma draws it — no logo —
106
+ * while still reserving the nav row, so the offsets are identical to every other
107
+ * screen (owner rule 2026-08-18).
108
+ *
109
+ * Everything visual belongs to Core: the status marks are `PrizmaTitle`'s icon
110
+ * slot (outline bank icons — the module Figma still draws the two-tone filled
111
+ * discs, DEVIATIONS.md #15 again), and the frame and its border are
112
+ * `PrizmaIdCapture`.
113
+ */
114
+ export const IdCaptureResultScreen = forwardRef<HTMLDivElement, IdCaptureResultScreenProps>(
115
+ (
116
+ {
117
+ strings,
118
+ verdict = 'success',
119
+ documentType = 'id',
120
+ vertical = false,
121
+ still,
122
+ screenId = `id-capture-${verdict}`,
123
+ showHeader = false,
124
+ className,
125
+ overrides,
126
+ onAction,
127
+ ...shell
128
+ },
129
+ ref,
130
+ ) => {
131
+ const copy =
132
+ verdict === 'review'
133
+ ? strings.review
134
+ : verdict === 'success'
135
+ ? strings.success
136
+ : verdict === 'classification'
137
+ ? strings.classification
138
+ : strings.error;
139
+
140
+ // Figma: the `*-attempt` / `*-failed-attempt` sections carry "N attempts
141
+ // remaining"; `*-no-attempts` swaps it for "No attempts remaining" and the
142
+ // CTA becomes the forward action. Both come from the same `error` slice, so
143
+ // the host's locale pack decides the wording; the screen only decides
144
+ // whether the line is rendered at all (review / success / classification
145
+ // have no attempts line in any purple section).
146
+ const attemptsLabel =
147
+ verdict === 'error' || verdict === 'exhausted' ? strings.error.attemptsLabel : undefined;
148
+
149
+ const secondaryLabel =
150
+ verdict === 'review'
151
+ ? strings.review.retakeLabel
152
+ : verdict === 'classification'
153
+ ? strings.classification.secondaryLabel
154
+ : undefined;
155
+
156
+ return (
157
+ <PrizmaResultScreen
158
+ ref={ref}
159
+ /* `id-capture-on-surface` re-inks Core's encrypted row for the LIGHT
160
+ result surface (DEVIATIONS #IDC-28); it carries no layout. */
161
+ className={['id-capture-on-surface', className ?? ''].filter(Boolean).join(' ')}
162
+ showHeader={showHeader}
163
+ status={TITLE_STATUS[verdict]}
164
+ title={copy.title}
165
+ subtitle={copy.description}
166
+ disclaimer={attemptsLabel}
167
+ ctaLabel={copy.ctaLabel}
168
+ secondaryCtaLabel={secondaryLabel}
169
+ // Figma pairs Retake | Continue side by side in the 342 column (IDC-35).
170
+ ctaOrientation={secondaryLabel ? 'row' : 'stacked'}
171
+ verifiedLabel={strings.verifiedLabel}
172
+ navLabel={strings.navLabel}
173
+ screenId={screenId}
174
+ overrides={overrides}
175
+ onAction={onAction}
176
+ {...shell}
177
+ >
178
+ {/* `mode="overlay"` on a LIGHT screen for the reason Core minted it:
179
+ it drops the stand-in camera plate, so the document's designed 7px
180
+ of air past the border stays the page surface instead of a dark
181
+ rectangle. The still, the border state and the encrypted row are
182
+ unaffected (DEVIATIONS.md #IDC-28). */}
183
+ <PrizmaIdCapture
184
+ type={documentType}
185
+ state={FRAME_STATE[verdict]}
186
+ isVertical={vertical}
187
+ mode="overlay"
188
+ encryptedLabel={strings.encryptedLabel}
189
+ still={still}
190
+ />
191
+ </PrizmaResultScreen>
192
+ );
193
+ },
194
+ );
195
+ IdCaptureResultScreen.displayName = 'IdCaptureResultScreen';
196
+
197
+ export default IdCaptureResultScreen;