@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,241 @@
1
+ import React, { forwardRef, type ReactNode } from 'react';
2
+ import { PrizmaNavigation } from '@incodetech/prizma-core-web/navigation';
3
+ import {
4
+ PrizmaIdCapture,
5
+ type PrizmaIdCaptureState,
6
+ } from '@incodetech/prizma-core-web/id-capture';
7
+ import { PrizmaCaptureManual } from '@incodetech/prizma-core-web/capture-manual';
8
+ import { PrizmaCaptureFeedback } from '@incodetech/prizma-core-web/capture-feedback';
9
+ import { PrizmaTag } from '@incodetech/prizma-core-web/tag';
10
+ import { PrizmaScreenShell, type PrizmaScreenShellProps } from './ScreenShell';
11
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
12
+ import type {
13
+ IdCaptureDocumentType,
14
+ IdCaptureFeedbackKind,
15
+ IdCaptureSide,
16
+ IdCaptureStageState,
17
+ IdCaptureStrings,
18
+ } from './IdCaptureStrings';
19
+ import './ScreenLayout.css';
20
+ import './ViewfinderScreen.css';
21
+ import './IdCaptureLayout.css';
22
+
23
+ /**
24
+ * Purple stage state → Core `PrizmaIdCapture` state. The mapping is 1:1 except
25
+ * `flash`, which Figma spells "flash" and Core spells `photo-flash`.
26
+ */
27
+ const CAPTURE_STATE: Record<IdCaptureStageState, PrizmaIdCaptureState> = {
28
+ empty: 'empty',
29
+ hint: 'hint',
30
+ filled: 'filled',
31
+ focused: 'focused',
32
+ countdown: 'countdown',
33
+ flash: 'photo-flash',
34
+ 'error-wrong-side': 'error-wrong-side',
35
+ 'error-not-aligned': 'error-not-aligned',
36
+ 'error-blurry': 'error',
37
+ 'error-glare': 'error-glare',
38
+ 'error-too-dark': 'error-too-dark',
39
+ };
40
+
41
+ /**
42
+ * Which feedback pill each error stage carries by default (Figma
43
+ * `1-5-5 … 1-5-9-id-errors`, left to right). `blurry` has no frame overlay in
44
+ * Core — the message IS the pill (PrizmaIdCapture's `error` state is the plain
45
+ * red border precisely for this case, see its `error` doc comment).
46
+ */
47
+ const STAGE_FEEDBACK: Partial<Record<IdCaptureStageState, IdCaptureFeedbackKind>> = {
48
+ 'error-wrong-side': 'show-front',
49
+ 'error-not-aligned': 'not-aligned',
50
+ 'error-blurry': 'blurry',
51
+ 'error-glare': 'glare',
52
+ 'error-too-dark': 'too-dark',
53
+ };
54
+
55
+ export interface IdCaptureStageScreenProps
56
+ extends Omit<PrizmaScreenShellProps, 'dark' | 'title' | 'children'> {
57
+ /** Module copy — this screen reads the `stage` / `feedback` slices. */
58
+ strings: IdCaptureStrings;
59
+ /** Which document is being captured — Core `PrizmaIdCapture.type`. */
60
+ documentType?: IdCaptureDocumentType;
61
+ /** Which face of a two-sided document (drives the title copy only; the frame
62
+ * geometry is identical). Passports are single-sided. */
63
+ side?: IdCaptureSide;
64
+ /** Portrait document orientation — Core `PrizmaIdCapture.isVertical`. The
65
+ * `ID capture ↕️ vertical` / `Passport capture ↕️ vertical` groups. */
66
+ vertical?: boolean;
67
+ /** Which purple stage section to render. */
68
+ state?: IdCaptureStageState;
69
+ /** Manual mode (`*-manual`): the shutter + the numbered tooltip appear. */
70
+ manual?: boolean;
71
+ /** Show the close control in the stage nav (Figma: present on every stage
72
+ * except `*-empty`). */
73
+ showClose?: boolean;
74
+ /** Override the feedback pill the state carries by default; `null` suppresses
75
+ * it (a host whose pipeline reports an error with no designed pill). */
76
+ feedback?: IdCaptureFeedbackKind | null;
77
+ /** Live camera feed (<video>) or sample still (<img>) behind the frame. */
78
+ camera?: ReactNode;
79
+ /** The captured document still (<img>) — `filled` / `flash` / error stages. */
80
+ still?: ReactNode;
81
+ /** Digit shown by the countdown Timer (`*-countdown` sections 1..3). */
82
+ countdownValue?: 1 | 2 | 3;
83
+ screenId?: string;
84
+ overrides?: PrizmaScreenOverrides;
85
+ onAction?: PrizmaScreenActionHandler;
86
+ }
87
+
88
+ /**
89
+ * ID Capture — the camera stage (Archetype D, GUIDELINES.md §6-D; always dark).
90
+ *
91
+ * ONE screen for ~45 purple sections: every `*-empty`, `*-hint`, `*-manual`,
92
+ * `*-filled`, `*-countdown`, `*-flash` and `*-errors` section of all five
93
+ * capture groups (`ID capture - front side`, `ID capture - back side`,
94
+ * `Passport capture`, `ID capture ↕️ vertical`, `Passport capture ↕️ vertical`).
95
+ * They are `type` × `isVertical` × `state` variants of Core's
96
+ * `PrizmaIdCapture`, which is exactly how the component is axed — so the frame
97
+ * geometry, the four border treatments, the hand-hint artwork, the Timer, the
98
+ * flash bloom, the glare/darkener/not-aligned overlays and the "All data is
99
+ * encrypted" row are ALL Core's, never re-implemented (§7).
100
+ *
101
+ * NOT built on the `PrizmaViewfinderScreen` archetype: that archetype hardcodes
102
+ * `CaptureOverlay` (the face/document vignette) plus its own lock-and-encrypted
103
+ * row, and ID Capture's stage is `PrizmaIdCapture` — which carries the document
104
+ * geometry AND the encrypted row itself. Wrapping the archetype would have
105
+ * double-drawn the reassurance line. Foundation gap reported to the owner (a
106
+ * `stage` slot on ViewfinderScreen); no foundation file edited. The archetype's
107
+ * camera-surface and HUD-typography classes ARE reused as-is
108
+ * (`.prizma-viewfinder__surface` / `__content` / `__title` / `__instruction`),
109
+ * so nothing about the dark stage is re-declared here.
110
+ *
111
+ * Spacing comes from the measured three-band recipe in `IdCaptureLayout.css`
112
+ * (title block bottom-anchored Spacing/40 above the frame, manual strip flush
113
+ * to the column's bottom padding) — no offsets are invented here, and
114
+ * PrizmaIdCapture's own frame→encrypted-row adjacency is left untouched
115
+ * (DEVIATIONS.md #12's lesson: never stack an offset a Core component carries).
116
+ */
117
+ export const IdCaptureStageScreen = forwardRef<HTMLDivElement, IdCaptureStageScreenProps>(
118
+ (
119
+ {
120
+ strings,
121
+ documentType = 'id',
122
+ side = 'front',
123
+ vertical = false,
124
+ state = 'empty',
125
+ manual = false,
126
+ showClose = state !== 'empty',
127
+ feedback,
128
+ camera,
129
+ still,
130
+ countdownValue = 3,
131
+ screenId = `id-capture-${documentType}-${side}-${state}`,
132
+ overrides,
133
+ onAction,
134
+ className,
135
+ ...shell
136
+ },
137
+ ref,
138
+ ) => {
139
+ const slice =
140
+ documentType === 'passport'
141
+ ? strings.stage.passport
142
+ : side === 'back'
143
+ ? strings.stage.back
144
+ : strings.stage.front;
145
+
146
+ const pillKind = feedback === undefined ? STAGE_FEEDBACK[state] : feedback;
147
+ const pillCopy = pillKind ? strings.feedback[pillKind] : undefined;
148
+
149
+ return (
150
+ <PrizmaScreenShell
151
+ ref={ref}
152
+ dark
153
+ className={className}
154
+ {...shell}
155
+ >
156
+ <div className="prizma-viewfinder__surface">{camera}</div>
157
+ <header className="prizma-screen-nav id-capture-stage__nav">
158
+ <PrizmaNavigation
159
+ showIncodeLogo={false}
160
+ showRightIcon={showClose}
161
+ closeLabel={strings.closeLabel}
162
+ aria-label={strings.navLabel}
163
+ onRightIconClick={() => onAction?.({ type: 'secondary', screenId })}
164
+ />
165
+ </header>
166
+ <div
167
+ className={[
168
+ 'prizma-viewfinder__content',
169
+ overrides?.align === 'left' ? 'prizma-viewfinder__content--left' : '',
170
+ ]
171
+ .filter(Boolean)
172
+ .join(' ')}
173
+ >
174
+ <div className="id-capture-band id-capture-band--top">
175
+ {pillKind && pillCopy ? (
176
+ <div className="id-capture-stage__feedback">
177
+ <PrizmaCaptureFeedback
178
+ feedback={pillKind}
179
+ title={pillCopy.title}
180
+ subtitle={pillCopy.subtitle}
181
+ />
182
+ </div>
183
+ ) : (
184
+ <>
185
+ <h2 className="prizma-viewfinder__title">{slice.title}</h2>
186
+ {/* Manual mode drops the auto-capture instruction — the numbered
187
+ tooltip above the shutter says what to do instead. Measured:
188
+ `1-5-1-id-empty`'s Title instance is 342×59 (H2 + line) while
189
+ `1-5-3-id-manual`'s is 342×28 (H2 only), both still holding
190
+ the same Spacing/40 above the frame. */}
191
+ {slice.instruction && !manual ? (
192
+ <p className="prizma-viewfinder__instruction">{slice.instruction}</p>
193
+ ) : null}
194
+ </>
195
+ )}
196
+ </div>
197
+ {/* `mode="overlay"` + `scrim` is Core's own recipe for exactly this
198
+ stage (IdCapture.tsx, integration review 0.5 finding 2): the feed
199
+ runs full-bleed UNDER the UI on `.prizma-viewfinder__surface` and
200
+ the frame is drawn on top with a TRANSPARENT window, so the
201
+ surround is veiled and the window shows the undimmed camera —
202
+ which is what the purple sections render. The `camera` slot is
203
+ deliberately not used in this mode. */}
204
+ <PrizmaIdCapture
205
+ type={documentType}
206
+ state={CAPTURE_STATE[state]}
207
+ isVertical={vertical}
208
+ mode="overlay"
209
+ scrim
210
+ countdownValue={countdownValue}
211
+ encryptedLabel={strings.encryptedLabel}
212
+ announcement={strings.stage.stateLabels?.[state]}
213
+ still={still}
214
+ />
215
+ <div className="id-capture-band">
216
+ </div>
217
+ </div>
218
+ <div className="prizma-screen-layout__capture-strip">
219
+ <PrizmaCaptureManual
220
+ className="id-capture-stage__manual"
221
+ variant="id-capture"
222
+ showButton={manual}
223
+ showTooltip={manual}
224
+ showHelpIcon
225
+ tooltipText={manual ? strings.stage.manualTooltip : undefined}
226
+ ariaLabel={strings.stage.captureLabel}
227
+ helpLabel={strings.stage.helpLabel}
228
+ onCapture={() => onAction?.({ type: 'cta', screenId })}
229
+ onHelp={() => onAction?.({ type: 'help', screenId })}
230
+ />
231
+ </div>
232
+ <div className="prizma-screen-layout__footer">
233
+ <PrizmaTag label={strings.verifiedLabel} />
234
+ </div>
235
+ </PrizmaScreenShell>
236
+ );
237
+ },
238
+ );
239
+ IdCaptureStageScreen.displayName = 'IdCaptureStageScreen';
240
+
241
+ export default IdCaptureStageScreen;
@@ -0,0 +1,228 @@
1
+ // ID Capture module — copy contract.
2
+ //
3
+ // Every ID Capture screen receives the SAME `strings: IdCaptureStrings` object
4
+ // (rule: all copy via props, no hardcoded English — GUIDELINES.md §9). The
5
+ // object is the module's locale pack: one instance drives the whole flow, which
6
+ // is what the FlowPlayer steps through. Sample copy lives only in previews /
7
+ // host apps.
8
+ //
9
+ // Authoritative screen list: the PURPLE "screen specs" sections of the ID
10
+ // Capture Figma file (U1EOfl9RQ1rOlOIuQw3rhL, page 16285:41282) — 13 parent
11
+ // groups, 100 purple sections. They collapse onto 12 screens because the four
12
+ // capture families (ID horizontal / ID vertical / passport horizontal /
13
+ // passport vertical, front and back) are the SAME screens parameterized by
14
+ // `PrizmaIdCapture`'s own `type` × `isVertical` × `state` axes.
15
+
16
+ /** Which document the flow is capturing — Core `PrizmaIdCapture.type` minus
17
+ * `poa` (that belongs to the Document Capture module, not this one). */
18
+ export type IdCaptureDocumentType = 'id' | 'passport';
19
+
20
+ /** Which face of a two-sided document. Passports are single-sided, so `back`
21
+ * is only reachable for `id` (Figma: the `Passport capture` groups have no
22
+ * back-side sections). */
23
+ export type IdCaptureSide = 'front' | 'back';
24
+
25
+ /**
26
+ * The camera-stage sub-states — one per purple `*-empty` / `*-hint` /
27
+ * `*-manual` / `*-filled` / `*-countdown` / `*-flash` / `*-errors` spec
28
+ * section. They are state/copy variants of ONE screen
29
+ * (IdCaptureStageScreen), not separate screens; each maps to a
30
+ * `PrizmaIdCaptureState`.
31
+ */
32
+ export type IdCaptureStageState =
33
+ | 'empty' // Figma: *-empty — live camera, plain frame
34
+ | 'hint' // Figma: *-hint — hand-holding-document ghost
35
+ | 'filled' // Figma: 1-6-1-id — document inside the frame
36
+ | 'focused' // Figma: focused frame — detection locked
37
+ | 'countdown' // Figma: *-countdown — Timer digit inside the frame
38
+ | 'flash' // Figma: *-flash — photo-flash bloom
39
+ | 'error-wrong-side'
40
+ | 'error-not-aligned'
41
+ | 'error-blurry'
42
+ | 'error-glare'
43
+ | 'error-too-dark';
44
+
45
+ /** The on-camera feedback pill variants the error stages carry — Core
46
+ * `PrizmaCaptureFeedbackType` (Figma: `Capture feedback / ID`, and the
47
+ * `Dynamic feedback messages` copy table in the front-side group). */
48
+ export type IdCaptureFeedbackKind =
49
+ | 'show-front'
50
+ | 'show-back'
51
+ | 'not-aligned'
52
+ | 'blurry'
53
+ | 'glare'
54
+ | 'too-dark';
55
+
56
+ /** One feedback pill's copy. */
57
+ export interface IdCaptureFeedbackCopy {
58
+ title: string;
59
+ subtitle?: string;
60
+ }
61
+
62
+ /** A single row of an informational list (permission reasons, common issues,
63
+ * age-verification steps) — Core `PrizmaCardListCommonIssues` rows. */
64
+ export interface IdCaptureListRow {
65
+ title: string;
66
+ description?: string;
67
+ }
68
+
69
+ export interface IdCaptureStrings {
70
+ /** Accessible name for the logo nav region (i18n — no baked-in English). */
71
+ navLabel?: string;
72
+ /** Accessible name for the close control on the camera stages. */
73
+ closeLabel?: string;
74
+ /** "verified by" attribution copy for the footer tag. */
75
+ verifiedLabel: string;
76
+ /** "All data is encrypted" reassurance row — rendered by PrizmaIdCapture
77
+ * itself on every stage and every screen that shows the captured still. */
78
+ encryptedLabel?: string;
79
+
80
+ /** Document selection — `1-1-1-id` / `1-1-1-Document Chooser V2`. */
81
+ documentSelection: {
82
+ title: string;
83
+ subtitle?: string;
84
+ /** Row label for the identity-card option. */
85
+ idLabel: string;
86
+ /** Row label for the passport option. */
87
+ passportLabel: string;
88
+ };
89
+
90
+ /** Age verification — `1-1-2-id`. */
91
+ ageVerification: {
92
+ title: string;
93
+ subtitle?: string;
94
+ /** The three reassurance rows, in order. */
95
+ rows: IdCaptureListRow[];
96
+ ctaLabel: string;
97
+ };
98
+
99
+ /** Tutorial — `1-2-1-id` (front) · `4-2-1-back-id` (back) · `3-2-1-id`
100
+ * (passport). Copy variants of one screen; the host picks the slice. */
101
+ tutorial: {
102
+ front: { title: string; subtitle?: string };
103
+ back: { title: string; subtitle?: string };
104
+ passport: { title: string; subtitle?: string };
105
+ /** "The photo will be taken automatically" */
106
+ disclaimer?: string;
107
+ ctaLabel: string;
108
+ /** Visible/accessible copy while the CTA is loading. */
109
+ ctaLoadingLabel?: string;
110
+ };
111
+
112
+ /** Camera stage — `*-empty` / `*-hint` / `*-filled` / `*-countdown` /
113
+ * `*-flash` / `*-manual` / `*-errors`. The white H2 above the frame plus
114
+ * its muted instruction line, per side/document. */
115
+ stage: {
116
+ front: { title: string; instruction?: string };
117
+ back: { title: string; instruction?: string };
118
+ passport: { title: string; instruction?: string };
119
+ /** Manual mode — the tooltip bubble above the shutter
120
+ * ("1. Fill the frame with your ID / 2. Press the button"). */
121
+ manualTooltip?: string;
122
+ /** Accessible name of the shutter button (manual mode). */
123
+ captureLabel?: string;
124
+ /** Accessible name of the "?" help control. */
125
+ helpLabel?: string;
126
+ /** Visually-hidden state announcements, per stage state — forwarded to
127
+ * `PrizmaIdCapture.stateLabels`. */
128
+ stateLabels?: Partial<Record<IdCaptureStageState, string>>;
129
+ };
130
+
131
+ /** The on-camera feedback pills the error stages carry. */
132
+ feedback: Partial<Record<IdCaptureFeedbackKind, IdCaptureFeedbackCopy>>;
133
+
134
+ /** Analyzing / processing the captured still — `*-analyzing`. */
135
+ analyzing: { title: string };
136
+
137
+ /** Review the captured still — `*-review`. Two actions, no status icon. */
138
+ review: {
139
+ title: string;
140
+ description?: string;
141
+ /** Secondary action — "Retake". */
142
+ retakeLabel: string;
143
+ /** Primary action — "Continue". */
144
+ ctaLabel: string;
145
+ };
146
+
147
+ /** Capture succeeded — `*-success` / `1-10-2-id-success-capture-only`. */
148
+ success: {
149
+ title: string;
150
+ description?: string;
151
+ ctaLabel: string;
152
+ };
153
+
154
+ /** Capture failed with retries left / exhausted — `*-attempt`,
155
+ * `*-failed-attempt`, `*-no-attempts`. The host passes the copy of the
156
+ * CURRENT verdict (wrong side, glare, blur, …). */
157
+ error: {
158
+ title: string;
159
+ description?: string;
160
+ /** "1 attempt remaining" — omit on the exhausted variant. */
161
+ attemptsLabel?: string;
162
+ ctaLabel: string;
163
+ };
164
+
165
+ /** Classification could not decide the document — Classification Errors /
166
+ * "Scan the back of your ID". Warning verdict with two actions. */
167
+ classification: {
168
+ title: string;
169
+ description?: string;
170
+ /** Primary — "Scan back of ID". */
171
+ ctaLabel: string;
172
+ /** Secondary — "ID has no back side". */
173
+ secondaryLabel: string;
174
+ };
175
+
176
+ /** Document not accepted — `1-9-12` / `1-9-13-id-documenterror` and the
177
+ * `-empty` variant. */
178
+ documentError: {
179
+ title: string;
180
+ description?: string;
181
+ /** ISO country code for the bundled flag raster (e.g. "US"). */
182
+ countryCode?: string;
183
+ /** Emoji fallback for countries outside the bundled flag bank. */
184
+ flag?: string;
185
+ /** Country name shown in the accepted-documents card. */
186
+ country?: string;
187
+ /** Accepted document names, in order. */
188
+ documents?: string[];
189
+ /** Placeholder copy for the `-empty` variant (no list available). */
190
+ emptyMessage?: string;
191
+ attemptsLabel?: string;
192
+ ctaLabel: string;
193
+ };
194
+
195
+ /** Flip interstitial — `1-11-1-id-flip`. Title only, no CTA. */
196
+ flip: { title: string };
197
+
198
+ /** Common issues help sheet — `1-5-2-id-common-issues`. */
199
+ commonIssues: {
200
+ title: string;
201
+ rows: IdCaptureListRow[];
202
+ /** Tertiary link — "Take the photo manually". */
203
+ manualLabel: string;
204
+ ctaLabel: string;
205
+ };
206
+
207
+ /** Camera permission — `1-3-2-id` and its `allow-camera` /
208
+ * `quit-process` copy variants. */
209
+ permission: {
210
+ title: string;
211
+ description?: string;
212
+ rows: IdCaptureListRow[];
213
+ /** Tertiary link — "Quit process". */
214
+ quitLabel: string;
215
+ ctaLabel: string;
216
+ };
217
+
218
+ /** Server-side verification wait — `1-18-1-id-hold-on`,
219
+ * `1-4.1-1-id-hold-on`. */
220
+ holdOn: { title: string; description?: string };
221
+
222
+ /** No internet — `1-9-10-id-no-internet`. */
223
+ noConnection: {
224
+ title: string;
225
+ description?: string;
226
+ ctaLabel: string;
227
+ };
228
+ }
@@ -0,0 +1,99 @@
1
+ import React, { forwardRef, type ReactNode } from 'react';
2
+ import { PrizmaIllustrationIdTutorial } from '@incodetech/prizma-core-web/illustration-id-tutorial';
3
+ import { PrizmaTutorialScreen, type PrizmaTutorialScreenProps } from './TutorialScreen';
4
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
5
+ import type { IdCaptureStrings } from './IdCaptureStrings';
6
+ import './ScreenLayout.css';
7
+
8
+ /** Which purple tutorial section to render. Each is a copy + illustration
9
+ * variant of this ONE screen: `1-2-1-id` (front) · `4-2-1-back-id` (back) ·
10
+ * `3-2-1-id` (passport). */
11
+ export type IdCaptureTutorialVariant = 'front' | 'back' | 'passport';
12
+
13
+ /** Tutorial variant → Core `PrizmaIllustrationIdTutorial` type. */
14
+ const ILLUSTRATION_TYPE = {
15
+ front: 'id-front',
16
+ back: 'id-back',
17
+ passport: 'passport',
18
+ } as const;
19
+
20
+ export interface IdCaptureTutorialScreenProps
21
+ extends Omit<
22
+ PrizmaTutorialScreenProps,
23
+ | 'title'
24
+ | 'subtitle'
25
+ | 'disclaimer'
26
+ | 'ctaLabel'
27
+ | 'ctaLoadingLabel'
28
+ | 'verifiedLabel'
29
+ | 'navLabel'
30
+ > {
31
+ /** Module copy — this screen reads the `tutorial` slice (+ shared labels). */
32
+ strings: IdCaptureStrings;
33
+ /** Which purple tutorial section to render. Default `front`. */
34
+ variant?: IdCaptureTutorialVariant;
35
+ /** CTA shows the designed loading treatment (the tutorial's loading state). */
36
+ ctaLoading?: boolean;
37
+ /** Replace the default Core ID-tutorial illustration. */
38
+ illustration?: ReactNode;
39
+ screenId?: string;
40
+ overrides?: PrizmaScreenOverrides;
41
+ onAction?: PrizmaScreenActionHandler;
42
+ }
43
+
44
+ /**
45
+ * ID Capture — tutorial, built on the `PrizmaTutorialScreen` archetype
46
+ * (GUIDELINES.md §6-A). Figma: purple sections `1-2-1-id` / `4-2-1-back-id` /
47
+ * `3-2-1-id` of the `Tutorial` group.
48
+ *
49
+ * Composed from the foundation pieces until the archetype grew a CTA-loading
50
+ * slot (#F-32) — the one thing that had forced this module, like the Face Capture
51
+ * pilot, to rebuild the tutorial skeleton by hand.
52
+ *
53
+ * The three illustrations are Core's `PrizmaIllustrationIdTutorial` variants,
54
+ * including the composed `id-back` face — never redrawn here (§7, §10).
55
+ */
56
+ export const IdCaptureTutorialScreen = forwardRef<
57
+ HTMLDivElement,
58
+ IdCaptureTutorialScreenProps
59
+ >(
60
+ (
61
+ {
62
+ strings,
63
+ variant = 'front',
64
+ ctaLoading = false,
65
+ illustration,
66
+ screenId = `id-capture-tutorial-${variant}`,
67
+ overrides,
68
+ onAction,
69
+ ...shell
70
+ },
71
+ ref,
72
+ ) => {
73
+ const slice = strings.tutorial[variant];
74
+
75
+ return (
76
+ <PrizmaTutorialScreen
77
+ ref={ref}
78
+ title={slice.title}
79
+ subtitle={slice.subtitle}
80
+ disclaimer={strings.tutorial.disclaimer}
81
+ ctaLabel={strings.tutorial.ctaLabel}
82
+ ctaLoading={ctaLoading}
83
+ ctaLoadingLabel={strings.tutorial.ctaLoadingLabel}
84
+ illustration={
85
+ illustration ?? <PrizmaIllustrationIdTutorial type={ILLUSTRATION_TYPE[variant]} />
86
+ }
87
+ verifiedLabel={strings.verifiedLabel}
88
+ navLabel={strings.navLabel}
89
+ screenId={screenId}
90
+ overrides={overrides}
91
+ onAction={onAction}
92
+ {...shell}
93
+ />
94
+ );
95
+ },
96
+ );
97
+ IdCaptureTutorialScreen.displayName = 'IdCaptureTutorialScreen';
98
+
99
+ export default IdCaptureTutorialScreen;