@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,151 @@
1
+ import React, { forwardRef, type ReactNode } from 'react';
2
+ import {
3
+ IconCamera,
4
+ IconFolderFileOpen,
5
+ IconImage,
6
+ IconPaperUpload,
7
+ } from '@incodetech/prizma-core-icons';
8
+ import {
9
+ PrizmaBottomSheetContent,
10
+ type PrizmaActionOptionItem,
11
+ } from '@incodetech/prizma-core-web/bottom-sheet';
12
+ import { PrizmaTutorialScreen, type PrizmaTutorialScreenProps } from './TutorialScreen';
13
+ import { DocumentCaptureIllustration } from './DocumentCaptureIllustration';
14
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
15
+ import type {
16
+ DocumentCaptureMethodSelectionVariant,
17
+ DocumentCaptureStrings,
18
+ } from './DocumentCaptureStrings';
19
+ import './ScreenLayout.css';
20
+ import './DocumentCaptureLayout.css';
21
+
22
+ export interface DocumentCaptureMethodSelectionScreenProps
23
+ extends Omit<
24
+ PrizmaTutorialScreenProps,
25
+ | 'title'
26
+ | 'subtitle'
27
+ | 'ctaLabel'
28
+ | 'linkLabel'
29
+ | 'overlay'
30
+ | 'verifiedLabel'
31
+ | 'navLabel'
32
+ > {
33
+ /** Module copy — this screen reads `methodSelection` + `tutorial` (the sheet
34
+ * is presented OVER the tutorial, which stays visible behind the scrim). */
35
+ strings: DocumentCaptureStrings;
36
+ /** `web` = the 2-row menu · `native` = the 3-row menu · `nativeUpload` = the
37
+ * native menu with the camera row dropped (2 rows). */
38
+ method?: DocumentCaptureMethodSelectionVariant;
39
+ /** Replace the module's document illustration. */
40
+ illustration?: ReactNode;
41
+ screenId?: string;
42
+ overrides?: PrizmaScreenOverrides;
43
+ onAction?: PrizmaScreenActionHandler;
44
+ }
45
+
46
+ /**
47
+ * Document Capture — capture-method selection: the `PrizmaTutorialScreen`
48
+ * archetype plus a presented sheet. Figma: purple sections
49
+ * `documentCapture.tutorial.methodSelectionWeb` (`Bottom sheet` 390 × 172, 2
50
+ * rows) and `.methodSelectionNative` (390 × 262, 3 rows).
51
+ *
52
+ * The screen behind the scrim is the `tutorial.default` composition verbatim —
53
+ * which is now literally true: it is the same archetype call the tutorial screen
54
+ * makes, and only the overlay differs. The sheet rides in the archetype's
55
+ * `overlay` slot, a shell-level layer, because the scrim and panel are positioned
56
+ * against the shell and cannot live in the content column (#F-32).
57
+ *
58
+ * Core's own `PrizmaBottomSheetContent` renders the panel (handle, radius,
59
+ * padding, Action Option rows); the row icons come from the canonical bank.
60
+ * The safe presenter (`PrizmaBottomSheet`) is deliberately NOT used: it portals
61
+ * to `document.body`, which escapes the screen frame and the host's
62
+ * `transform: scale()`, and a screen is one static spec state with no open/close
63
+ * clock. bottom-sheet.md §10.3 assigns the scrim to "the consuming surface",
64
+ * and here the screen IS that surface — DEVIATIONS.md #DC-30.
65
+ *
66
+ * `documentCapture.tutorial.nativeMethodSelectionOnWeb` layers the iOS action
67
+ * sheet ON TOP of this one; that upper layer is OS chrome, not a Prizma
68
+ * surface, so it is out of scope (DEVIATIONS.md #DC-20).
69
+ */
70
+ export const DocumentCaptureMethodSelectionScreen = forwardRef<
71
+ HTMLDivElement,
72
+ DocumentCaptureMethodSelectionScreenProps
73
+ >(
74
+ (
75
+ {
76
+ strings,
77
+ method = 'web',
78
+ illustration,
79
+ screenId = `document-capture-method-selection-${method}`,
80
+ overrides,
81
+ onAction,
82
+ ...shell
83
+ },
84
+ ref,
85
+ ) => {
86
+ const { methodSelection } = strings;
87
+ const takePhoto: PrizmaActionOptionItem = {
88
+ label: methodSelection.takePhotoLabel,
89
+ icon: <IconCamera size="m" />,
90
+ onClick: () => onAction?.({ type: 'cta', screenId }),
91
+ };
92
+ const cameraRoll: PrizmaActionOptionItem = {
93
+ label: methodSelection.cameraRollLabel,
94
+ icon: <IconImage size="m" />,
95
+ onClick: () => onAction?.({ type: 'secondary', screenId }),
96
+ };
97
+ const chooseFile: PrizmaActionOptionItem = {
98
+ label: methodSelection.chooseFileLabel,
99
+ icon: <IconFolderFileOpen size="m" />,
100
+ onClick: () => onAction?.({ type: 'secondary', screenId }),
101
+ };
102
+ // `nativeUpload` is `native` minus the camera row — the upload-only session
103
+ // cannot offer a photo, so the row is absent rather than disabled.
104
+ const items: PrizmaActionOptionItem[] =
105
+ method === 'native'
106
+ ? [takePhoto, cameraRoll, chooseFile]
107
+ : method === 'nativeUpload'
108
+ ? [cameraRoll, chooseFile]
109
+ : [
110
+ takePhoto,
111
+ {
112
+ label: methodSelection.uploadLabel,
113
+ icon: <IconPaperUpload size="m" />,
114
+ onClick: () => onAction?.({ type: 'secondary', screenId }),
115
+ },
116
+ ];
117
+
118
+ return (
119
+ <PrizmaTutorialScreen
120
+ ref={ref}
121
+ title={strings.tutorial.title}
122
+ subtitle={strings.tutorial.subtitle.default}
123
+ ctaLabel={strings.tutorial.ctaLabel.default}
124
+ linkLabel={strings.tutorial.skipLabel}
125
+ illustration={illustration ?? <DocumentCaptureIllustration />}
126
+ verifiedLabel={strings.verifiedLabel}
127
+ navLabel={strings.navLabel}
128
+ screenId={screenId}
129
+ overrides={overrides}
130
+ overlay={
131
+ /* Scrim + panel own the presentation; Core owns the panel itself. */
132
+ <>
133
+ <div className="document-capture-sheet-scrim" aria-hidden="true" />
134
+ <div className="document-capture-sheet-panel">
135
+ <PrizmaBottomSheetContent
136
+ variant={method === 'native' ? 'menu-list-3' : 'menu-list-2'}
137
+ ariaLabel={methodSelection.sheetLabel}
138
+ items={items}
139
+ showBottomBar={false}
140
+ />
141
+ </div>
142
+ </>
143
+ }
144
+ {...shell}
145
+ />
146
+ );
147
+ },
148
+ );
149
+ DocumentCaptureMethodSelectionScreen.displayName = 'DocumentCaptureMethodSelectionScreen';
150
+
151
+ export default DocumentCaptureMethodSelectionScreen;
@@ -0,0 +1,82 @@
1
+ import React, { forwardRef, type ReactNode } from 'react';
2
+ import { PrizmaTutorialScreen, type PrizmaTutorialScreenProps } from './TutorialScreen';
3
+ import { DocumentCaptureIllustration } from './DocumentCaptureIllustration';
4
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
5
+ import type { DocumentCaptureStrings } from './DocumentCaptureStrings';
6
+ import './ScreenLayout.css';
7
+
8
+ export interface DocumentCaptureNextPageScreenProps
9
+ extends Omit<
10
+ PrizmaTutorialScreenProps,
11
+ 'title' | 'subtitle' | 'ctaLabel' | 'linkLabel' | 'verifiedLabel' | 'navLabel'
12
+ > {
13
+ /** Module copy — this screen reads the `nextPage` slice (+ shared labels). */
14
+ strings: DocumentCaptureStrings;
15
+ /**
16
+ * `documentCapture.nextPage.mandatory` — the next page is required, so the
17
+ * "All pages captured" escape link is dropped and the subtitle changes.
18
+ * Default (`false`) is the `.optional` section.
19
+ */
20
+ mandatory?: boolean;
21
+ /** Replace the module's document illustration. */
22
+ illustration?: ReactNode;
23
+ screenId?: string;
24
+ overrides?: PrizmaScreenOverrides;
25
+ onAction?: PrizmaScreenActionHandler;
26
+ }
27
+
28
+ /**
29
+ * Document Capture — next document page, built on the `PrizmaTutorialScreen`
30
+ * archetype (GUIDELINES.md §6-A). Figma: purple sections
31
+ * `documentCapture.nextPage.optional` / `.mandatory` — a copy + link-slot pair of
32
+ * this ONE screen.
33
+ *
34
+ * Structurally the tutorial recipe (measured identical on the 390 sections:
35
+ * nav 8→52, Title 68→145, illustration container flexes, CTAs 472→646), which is
36
+ * exactly why it now renders the same archetype instead of a second copy of it.
37
+ * Only `.optional` shows the escape link.
38
+ */
39
+ export const DocumentCaptureNextPageScreen = forwardRef<
40
+ HTMLDivElement,
41
+ DocumentCaptureNextPageScreenProps
42
+ >(
43
+ (
44
+ {
45
+ strings,
46
+ mandatory = false,
47
+ illustration,
48
+ screenId = mandatory
49
+ ? 'document-capture-next-page-mandatory'
50
+ : 'document-capture-next-page',
51
+ overrides,
52
+ onAction,
53
+ ...shell
54
+ },
55
+ ref,
56
+ ) => {
57
+ // Figma: `.mandatory` has no escape link (every remaining page is required).
58
+ // Gated here too, so a host that keeps the label in its locale pack still
59
+ // renders the designed mandatory screen.
60
+ const doneLabel = mandatory ? undefined : strings.nextPage.doneLabel;
61
+
62
+ return (
63
+ <PrizmaTutorialScreen
64
+ ref={ref}
65
+ title={strings.nextPage.title}
66
+ subtitle={mandatory ? strings.nextPage.mandatorySubtitle : strings.nextPage.subtitle}
67
+ ctaLabel={strings.nextPage.ctaLabel}
68
+ linkLabel={doneLabel}
69
+ illustration={illustration ?? <DocumentCaptureIllustration />}
70
+ verifiedLabel={strings.verifiedLabel}
71
+ navLabel={strings.navLabel}
72
+ screenId={screenId}
73
+ overrides={overrides}
74
+ onAction={onAction}
75
+ {...shell}
76
+ />
77
+ );
78
+ },
79
+ );
80
+ DocumentCaptureNextPageScreen.displayName = 'DocumentCaptureNextPageScreen';
81
+
82
+ export default DocumentCaptureNextPageScreen;
@@ -0,0 +1,77 @@
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 { DocumentCaptureStrings } from './DocumentCaptureStrings';
6
+ import './ScreenLayout.css';
7
+
8
+ export interface DocumentCaptureNoConnectionScreenProps
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: DocumentCaptureStrings;
15
+ screenId?: string;
16
+ overrides?: PrizmaScreenOverrides;
17
+ onAction?: PrizmaScreenActionHandler;
18
+ }
19
+
20
+ /**
21
+ * Document Capture — no internet connection (purple section
22
+ * `documentCapture.errors.noConnection`), built on the `PrizmaResultScreen`
23
+ * archetype (GUIDELINES.md §6-F).
24
+ *
25
+ * Byte-for-byte the same spec the Face Capture pilot found in its own
26
+ * `genericErrors` family, which is exactly what DEVIATIONS.md #9 predicted — and
27
+ * exactly why all three module copies of it are now one archetype call. Header
28
+ * and verified tag are on per the owner's non-capture rule (#F-30).
29
+ *
30
+ * The glyph is Figma's `Icon / Wi-Fi` in the archetype's `glyph` slot with the
31
+ * foundation's `__glyph` class, which replaced this module's byte-identical
32
+ * `.document-capture-glyph` copy (DEVIATIONS #10, #DC-29 — closed).
33
+ */
34
+ export const DocumentCaptureNoConnectionScreen = forwardRef<
35
+ HTMLDivElement,
36
+ DocumentCaptureNoConnectionScreenProps
37
+ >(
38
+ (
39
+ {
40
+ strings,
41
+ screenId = 'document-capture-no-connection',
42
+ overrides,
43
+ onAction,
44
+ ...shell
45
+ },
46
+ ref,
47
+ ) => (
48
+ <PrizmaResultScreen
49
+ ref={ref}
50
+ glyph={
51
+ <span
52
+ className={[
53
+ 'prizma-screen-layout__glyph',
54
+ 'prizma-screen-layout__glyph--negative',
55
+ overrides?.align === 'left' ? 'prizma-screen-layout__glyph--left' : '',
56
+ ]
57
+ .filter(Boolean)
58
+ .join(' ')}
59
+ >
60
+ <IconWifiOff size="l" />
61
+ </span>
62
+ }
63
+ title={strings.noConnection.title}
64
+ subtitle={strings.noConnection.description}
65
+ ctaLabel={strings.noConnection.ctaLabel}
66
+ verifiedLabel={strings.verifiedLabel}
67
+ navLabel={strings.navLabel}
68
+ screenId={screenId}
69
+ overrides={overrides}
70
+ onAction={onAction}
71
+ {...shell}
72
+ />
73
+ ),
74
+ );
75
+ DocumentCaptureNoConnectionScreen.displayName = 'DocumentCaptureNoConnectionScreen';
76
+
77
+ export default DocumentCaptureNoConnectionScreen;
@@ -0,0 +1,192 @@
1
+ // Document Capture module — copy contract.
2
+ //
3
+ // Every Document Capture screen receives the SAME
4
+ // `strings: DocumentCaptureStrings` object (rule: all copy via props, no
5
+ // hardcoded English — GUIDELINES.md §9). The object is the module's locale
6
+ // pack: one instance drives the whole flow, which is what the FlowPlayer steps
7
+ // through. Sample copy lives only in previews / host apps.
8
+ //
9
+ // Authoritative screen list: the PURPLE "screen specs" sections of the
10
+ // Document Capture Figma file (cbFXiChmJ8cWQDHwVghBqJ, page 4094:15561) —
11
+ // tutorial (4 purple variants + 3 method-selection variants) · commonIssues ·
12
+ // nextPage (optional / mandatory) · capture (default / filled) · confirmImage
13
+ // (reviewPhoto / analyzing / success) · confirmUpload (reviewFile / analyzing /
14
+ // success + 2 native picker specs) · errors (noConnection / genericError /
15
+ // genericErrorExhausted).
16
+ //
17
+ // FOUR purple variants document OS-NATIVE chrome, not Prizma screens, and are
18
+ // therefore NOT part of this contract (DEVIATIONS.md #DC-20):
19
+ // `tutorial.uploadOnlySelector`, `tutorial.nativeMethodSelectionOnWeb`,
20
+ // `upload.selectFromLibrary`, `upload.selectFromFiles`.
21
+
22
+ /**
23
+ * Which purple `documentCapture.tutorial.*` intro variant to render. They are
24
+ * copy variants of ONE screen (DocumentCaptureTutorialScreen) — the layout is
25
+ * identical; only the subtitle and the CTA label change with the capture
26
+ * methods the session enables.
27
+ */
28
+ export type DocumentCaptureTutorialVariant =
29
+ /** `tutorial.default` — camera AND upload allowed ("Continue"). */
30
+ | 'default'
31
+ /** `tutorial.captureOnly` — camera only ("Capture document"). */
32
+ | 'captureOnly'
33
+ /** `tutorial.uploadOnly` — upload only ("Upload document"). */
34
+ | 'uploadOnly';
35
+
36
+ /**
37
+ * Which `documentCapture.tutorial.methodSelection*` sheet to render.
38
+ *
39
+ * web — the 2-row menu: Take photo · Upload document (menu-list-2)
40
+ * native — the 3-row menu: Take photo · Camera roll · Choose file
41
+ * (menu-list-3)
42
+ * nativeUpload — the same native menu with the camera row DROPPED, so 2 rows:
43
+ * Camera roll · Choose file (menu-list-2)
44
+ *
45
+ * `nativeUpload` has no purple spec section of its own. It comes off the iOS
46
+ * full flow (`cbFXiChmJ8cWQDHwVghBqJ`, node 4415:38025), where the upload-only
47
+ * leg presents a `methodSelectionNative` instance whose sheet measures 206 tall
48
+ * against the spec'd 262 — exactly one row less, with "Take photo" hidden,
49
+ * because a session that does not allow the camera cannot offer it. The flow is
50
+ * right and the spec set is one variant short; recorded as such rather than
51
+ * quietly rendering the 3-row sheet in a flow that forbids the camera.
52
+ * Flagged for the owner: 2026-09-02, Camila.
53
+ */
54
+ export type DocumentCaptureMethodSelectionVariant = 'web' | 'native' | 'nativeUpload';
55
+
56
+ /**
57
+ * The three purple states shared by `confirmImage.*` and `confirmUpload.*`.
58
+ * Identical layout, identical stage — only the header block (title vs loading
59
+ * bar), the stage verdict and the CTA row change.
60
+ */
61
+ export type DocumentCaptureConfirmStage = 'review' | 'analyzing' | 'success';
62
+
63
+ /** One `commonIssues` row: an H5 title + a Body/M description. */
64
+ export interface DocumentCaptureIssueStrings {
65
+ title: string;
66
+ description?: string;
67
+ }
68
+
69
+ export interface DocumentCaptureStrings {
70
+ /** Accessible name for the logo nav region (i18n — no baked-in English). */
71
+ navLabel?: string;
72
+ /** "verified by" attribution copy for the footer tag. */
73
+ verifiedLabel: string;
74
+ /** "All data is encrypted" reassurance row under every capture / review
75
+ * stage. Omit to drop the row (Core's `showEncryptedLabel` boolean). */
76
+ encryptedLabel?: string;
77
+
78
+ /** documentCapture.tutorial.default / .captureOnly / .uploadOnly — the
79
+ * subtitle and CTA label are per-variant; everything else is shared. */
80
+ tutorial: {
81
+ title: string;
82
+ /** Per-variant description (H5). */
83
+ subtitle: Record<DocumentCaptureTutorialVariant, string>;
84
+ /** Per-variant primary CTA ("Continue" / "Capture document" / …). */
85
+ ctaLabel: Record<DocumentCaptureTutorialVariant, string>;
86
+ /** Tertiary link under the CTA ("Skip this step"). Omit to drop it. */
87
+ skipLabel?: string;
88
+ };
89
+
90
+ /** documentCapture.tutorial.methodSelectionWeb / .methodSelectionNative —
91
+ * the action rows of the capture-method sheet. `web` shows the first two,
92
+ * `native` all three. */
93
+ methodSelection: {
94
+ /** Accessible name of the sheet (Core requires it on the menu variants). */
95
+ sheetLabel: string;
96
+ /** "Take photo" */
97
+ takePhotoLabel: string;
98
+ /** "Upload document" (web) */
99
+ uploadLabel: string;
100
+ /** "Choose from camera roll" (native only) */
101
+ cameraRollLabel: string;
102
+ /** "Choose file" (native only) */
103
+ chooseFileLabel: string;
104
+ };
105
+
106
+ /** documentCapture.commonIssues.default */
107
+ commonIssues: {
108
+ title: string;
109
+ /** The four rows, in Figma order: out of frame · folded · shadows ·
110
+ * dirty lens. Icons come from the canonical bank, not from copy
111
+ * (DEVIATIONS.md #DC-23). */
112
+ issues: readonly DocumentCaptureIssueStrings[];
113
+ /** "Try again" */
114
+ ctaLabel: string;
115
+ };
116
+
117
+ /** documentCapture.nextPage.optional / .mandatory */
118
+ nextPage: {
119
+ title: string;
120
+ /** `optional` subtitle ("If there's another page…"). */
121
+ subtitle: string;
122
+ /** `mandatory` subtitle ("Take a photo of the next page to continue."). */
123
+ mandatorySubtitle: string;
124
+ /** "Next page" */
125
+ ctaLabel: string;
126
+ /** "All pages captured" — the tertiary link, `optional` only. */
127
+ doneLabel?: string;
128
+ };
129
+
130
+ /** documentCapture.capture.default / .filled — the dark camera stage. */
131
+ capture: {
132
+ /** White H2 above the frame ("Show your full document"). */
133
+ title: string;
134
+ /** Muted instruction under it. */
135
+ subtitle?: string;
136
+ /** Accessible name of the shutter button. */
137
+ captureLabel: string;
138
+ /** Accessible name of the "?" help control. */
139
+ helpLabel: string;
140
+ };
141
+
142
+ /** documentCapture.confirmImage.reviewPhoto / .analyzing / .success */
143
+ confirmImage: {
144
+ /** `review` title ("Review your document"). */
145
+ title: string;
146
+ /** `review` description. */
147
+ subtitle?: string;
148
+ /** Loading-bar caption on `analyzing` ("Analyzing..."). */
149
+ analyzingLabel: string;
150
+ /** H2 on `success` ("Successfully processed!"). */
151
+ successTitle: string;
152
+ /** Secondary CTA on `review` ("Replace"). */
153
+ replaceLabel: string;
154
+ /** Primary CTA on `review` / `success` ("Continue"). */
155
+ ctaLabel: string;
156
+ };
157
+
158
+ /** documentCapture.confirmUpload.reviewFile / .analyzing / .success */
159
+ confirmUpload: {
160
+ /** `review` title ("Review your document"). */
161
+ title: string;
162
+ /** `review` description. */
163
+ subtitle?: string;
164
+ /** Loading-bar caption on `analyzing` ("Uploading..."). */
165
+ analyzingLabel: string;
166
+ /** H2 on `success` ("Successfully processed!"). */
167
+ successTitle: string;
168
+ /** Secondary CTA on `review` ("Replace"). */
169
+ replaceLabel: string;
170
+ /** Primary CTA on `review` / `success` ("Continue"). */
171
+ ctaLabel: string;
172
+ };
173
+
174
+ /** documentCapture.errors.genericError / .genericErrorExhausted — the host
175
+ * passes the copy of the CURRENT verdict; the exhausted variant changes
176
+ * icon + copy + CTA through the same slice. */
177
+ error: {
178
+ title: string;
179
+ description?: string;
180
+ /** "2 attempts remaining" — omit on the exhausted variant. */
181
+ attemptsLabel?: string;
182
+ /** "Recapture document" / "Continue" */
183
+ ctaLabel: string;
184
+ };
185
+
186
+ /** documentCapture.errors.noConnection */
187
+ noConnection: {
188
+ title: string;
189
+ description?: string;
190
+ ctaLabel: string;
191
+ };
192
+ }
@@ -0,0 +1,79 @@
1
+ import React, { forwardRef, type ReactNode } from 'react';
2
+ import { PrizmaTutorialScreen, type PrizmaTutorialScreenProps } from './TutorialScreen';
3
+ import { DocumentCaptureIllustration } from './DocumentCaptureIllustration';
4
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
5
+ import type {
6
+ DocumentCaptureStrings,
7
+ DocumentCaptureTutorialVariant,
8
+ } from './DocumentCaptureStrings';
9
+ import './ScreenLayout.css';
10
+
11
+ export interface DocumentCaptureTutorialScreenProps
12
+ extends Omit<
13
+ PrizmaTutorialScreenProps,
14
+ 'title' | 'subtitle' | 'ctaLabel' | 'linkLabel' | 'verifiedLabel' | 'navLabel'
15
+ > {
16
+ /** Module copy — this screen reads the `tutorial` slice (+ shared labels). */
17
+ strings: DocumentCaptureStrings;
18
+ /** Which purple `documentCapture.tutorial.*` intro section to render. */
19
+ variant?: DocumentCaptureTutorialVariant;
20
+ /** Replace the module's document illustration. */
21
+ illustration?: ReactNode;
22
+ screenId?: string;
23
+ overrides?: PrizmaScreenOverrides;
24
+ onAction?: PrizmaScreenActionHandler;
25
+ }
26
+
27
+ /**
28
+ * Document Capture — tutorial, built on the `PrizmaTutorialScreen` archetype
29
+ * (GUIDELINES.md §6-A). Figma: purple sections
30
+ * `documentCapture.tutorial.default` / `.captureOnly` / `.uploadOnly` — copy
31
+ * variants of this ONE screen (subtitle + CTA label).
32
+ *
33
+ * Measured off the 390 sections (CONTENT 654 tall, `px-24 py-8`):
34
+ * nav 8→52 · Title 68→127 (nav + Spacing/24) · illustration container flexes ·
35
+ * CTAs 472→646 = primary + the "Skip this step" tertiary link + Tag.
36
+ *
37
+ * There is NO disclaimer on any Document Capture tutorial variant — the slot
38
+ * GUIDELINES §6-A reserves is simply unused.
39
+ *
40
+ * It used to hand-build the shell because the archetype hardcoded a single
41
+ * `PrizmaButton` with no link slot. The archetype now carries `linkLabel` (#F-32);
42
+ * the link's gap above the tag comes from the band's flat Spacing/16 rather than
43
+ * `PrizmaButtonGroup`'s Spacing/12, a 4px consolidation logged as #F-32.
44
+ */
45
+ export const DocumentCaptureTutorialScreen = forwardRef<
46
+ HTMLDivElement,
47
+ DocumentCaptureTutorialScreenProps
48
+ >(
49
+ (
50
+ {
51
+ strings,
52
+ variant = 'default',
53
+ illustration,
54
+ screenId = `document-capture-tutorial-${variant}`,
55
+ overrides,
56
+ onAction,
57
+ ...shell
58
+ },
59
+ ref,
60
+ ) => (
61
+ <PrizmaTutorialScreen
62
+ ref={ref}
63
+ title={strings.tutorial.title}
64
+ subtitle={strings.tutorial.subtitle[variant]}
65
+ ctaLabel={strings.tutorial.ctaLabel[variant]}
66
+ linkLabel={strings.tutorial.skipLabel}
67
+ illustration={illustration ?? <DocumentCaptureIllustration />}
68
+ verifiedLabel={strings.verifiedLabel}
69
+ navLabel={strings.navLabel}
70
+ screenId={screenId}
71
+ overrides={overrides}
72
+ onAction={onAction}
73
+ {...shell}
74
+ />
75
+ ),
76
+ );
77
+ DocumentCaptureTutorialScreen.displayName = 'DocumentCaptureTutorialScreen';
78
+
79
+ export default DocumentCaptureTutorialScreen;