@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,89 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { forwardRef } from 'react';
4
+ import { PrizmaIdCapture, } from '@incodetech/prizma-core-web/id-capture';
5
+ import { PrizmaResultScreen } from './ResultScreen';
6
+ import './ScreenLayout.css';
7
+ import './IdCaptureLayout.css';
8
+ /** Verdict → the archetype's status slot (Core `PrizmaTitle` icon). */
9
+ const TITLE_STATUS = {
10
+ review: 'none',
11
+ success: 'success',
12
+ error: 'error',
13
+ exhausted: 'error',
14
+ classification: 'warning',
15
+ };
16
+ /**
17
+ * Verdict → Core `PrizmaIdCapture` frame border.
18
+ *
19
+ * `classification` is the one place Figma asks for something Core does not
20
+ * draw: an AMBER frame around the still. Core's `BORDER_GROUP` has exactly
21
+ * four treatments (enabled / focused / success / error) and no warning band, so
22
+ * the design system wins and the still keeps the neutral `filled` frame rather
23
+ * than borrowing the red one — a red border would tell the user the capture
24
+ * failed, which is the opposite of "we got it, we just need the other side".
25
+ * DEVIATIONS.md #IDC-22.
26
+ */
27
+ const FRAME_STATE = {
28
+ review: 'filled',
29
+ success: 'success',
30
+ error: 'error',
31
+ exhausted: 'error',
32
+ classification: 'filled',
33
+ };
34
+ /**
35
+ * ID Capture — the captured-document verdict screens, built on the
36
+ * `PrizmaResultScreen` archetype (GUIDELINES.md §6-F).
37
+ *
38
+ * ONE screen for every `*-review`, `*-success`, `*-attempt`,
39
+ * `*-failed-attempt` and `*-no-attempts` section across all five capture groups,
40
+ * plus the Classification Errors section — ~35 purple sections that are copy,
41
+ * status-icon, frame-state and CTA variants of a single layout.
42
+ *
43
+ * The captured still rides in the archetype's `children` slot, the attempts line
44
+ * in `disclaimer`, and the review/classification action pair in
45
+ * `secondaryCtaLabel`. This file used to hand-build the whole shell (198 lines)
46
+ * with its own three-band arithmetic in `IdCaptureLayout.css`; the archetype now
47
+ * owns every offset, with two measured consequences logged as #F-33: the title
48
+ * block sits Spacing/16 above the frame rather than the module's Spacing/40, and
49
+ * review's Retake+Continue pair stacks vertically instead of sitting side by side
50
+ * (the archetype has one CTA orientation).
51
+ *
52
+ * `showHeader={false}` keeps the family's chrome as Figma draws it — no logo —
53
+ * while still reserving the nav row, so the offsets are identical to every other
54
+ * screen (owner rule 2026-08-18).
55
+ *
56
+ * Everything visual belongs to Core: the status marks are `PrizmaTitle`'s icon
57
+ * slot (outline bank icons — the module Figma still draws the two-tone filled
58
+ * discs, DEVIATIONS.md #15 again), and the frame and its border are
59
+ * `PrizmaIdCapture`.
60
+ */
61
+ export const IdCaptureResultScreen = forwardRef(({ strings, verdict = 'success', documentType = 'id', vertical = false, still, screenId = `id-capture-${verdict}`, showHeader = false, className, overrides, onAction, ...shell }, ref) => {
62
+ const copy = verdict === 'review'
63
+ ? strings.review
64
+ : verdict === 'success'
65
+ ? strings.success
66
+ : verdict === 'classification'
67
+ ? strings.classification
68
+ : strings.error;
69
+ // Figma: the `*-attempt` / `*-failed-attempt` sections carry "N attempts
70
+ // remaining"; `*-no-attempts` swaps it for "No attempts remaining" and the
71
+ // CTA becomes the forward action. Both come from the same `error` slice, so
72
+ // the host's locale pack decides the wording; the screen only decides
73
+ // whether the line is rendered at all (review / success / classification
74
+ // have no attempts line in any purple section).
75
+ const attemptsLabel = verdict === 'error' || verdict === 'exhausted' ? strings.error.attemptsLabel : undefined;
76
+ const secondaryLabel = verdict === 'review'
77
+ ? strings.review.retakeLabel
78
+ : verdict === 'classification'
79
+ ? strings.classification.secondaryLabel
80
+ : undefined;
81
+ return (_jsx(PrizmaResultScreen, { ref: ref,
82
+ /* `id-capture-on-surface` re-inks Core's encrypted row for the LIGHT
83
+ result surface (DEVIATIONS #IDC-28); it carries no layout. */
84
+ className: ['id-capture-on-surface', className ?? ''].filter(Boolean).join(' '), showHeader: showHeader, status: TITLE_STATUS[verdict], title: copy.title, subtitle: copy.description, disclaimer: attemptsLabel, ctaLabel: copy.ctaLabel, secondaryCtaLabel: secondaryLabel,
85
+ // Figma pairs Retake | Continue side by side in the 342 column (IDC-35).
86
+ ctaOrientation: secondaryLabel ? 'row' : 'stacked', verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell, children: _jsx(PrizmaIdCapture, { type: documentType, state: FRAME_STATE[verdict], isVertical: vertical, mode: "overlay", encryptedLabel: strings.encryptedLabel, still: still }) }));
87
+ });
88
+ IdCaptureResultScreen.displayName = 'IdCaptureResultScreen';
89
+ export default IdCaptureResultScreen;
@@ -0,0 +1,69 @@
1
+ import React, { type ReactNode } from 'react';
2
+ import { type PrizmaScreenShellProps } from './ScreenShell';
3
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
4
+ import type { IdCaptureDocumentType, IdCaptureFeedbackKind, IdCaptureSide, IdCaptureStageState, IdCaptureStrings } from './IdCaptureStrings';
5
+ import './ScreenLayout.css';
6
+ import './ViewfinderScreen.css';
7
+ import './IdCaptureLayout.css';
8
+ export interface IdCaptureStageScreenProps extends Omit<PrizmaScreenShellProps, 'dark' | 'title' | 'children'> {
9
+ /** Module copy — this screen reads the `stage` / `feedback` slices. */
10
+ strings: IdCaptureStrings;
11
+ /** Which document is being captured — Core `PrizmaIdCapture.type`. */
12
+ documentType?: IdCaptureDocumentType;
13
+ /** Which face of a two-sided document (drives the title copy only; the frame
14
+ * geometry is identical). Passports are single-sided. */
15
+ side?: IdCaptureSide;
16
+ /** Portrait document orientation — Core `PrizmaIdCapture.isVertical`. The
17
+ * `ID capture ↕️ vertical` / `Passport capture ↕️ vertical` groups. */
18
+ vertical?: boolean;
19
+ /** Which purple stage section to render. */
20
+ state?: IdCaptureStageState;
21
+ /** Manual mode (`*-manual`): the shutter + the numbered tooltip appear. */
22
+ manual?: boolean;
23
+ /** Show the close control in the stage nav (Figma: present on every stage
24
+ * except `*-empty`). */
25
+ showClose?: boolean;
26
+ /** Override the feedback pill the state carries by default; `null` suppresses
27
+ * it (a host whose pipeline reports an error with no designed pill). */
28
+ feedback?: IdCaptureFeedbackKind | null;
29
+ /** Live camera feed (<video>) or sample still (<img>) behind the frame. */
30
+ camera?: ReactNode;
31
+ /** The captured document still (<img>) — `filled` / `flash` / error stages. */
32
+ still?: ReactNode;
33
+ /** Digit shown by the countdown Timer (`*-countdown` sections 1..3). */
34
+ countdownValue?: 1 | 2 | 3;
35
+ screenId?: string;
36
+ overrides?: PrizmaScreenOverrides;
37
+ onAction?: PrizmaScreenActionHandler;
38
+ }
39
+ /**
40
+ * ID Capture — the camera stage (Archetype D, GUIDELINES.md §6-D; always dark).
41
+ *
42
+ * ONE screen for ~45 purple sections: every `*-empty`, `*-hint`, `*-manual`,
43
+ * `*-filled`, `*-countdown`, `*-flash` and `*-errors` section of all five
44
+ * capture groups (`ID capture - front side`, `ID capture - back side`,
45
+ * `Passport capture`, `ID capture ↕️ vertical`, `Passport capture ↕️ vertical`).
46
+ * They are `type` × `isVertical` × `state` variants of Core's
47
+ * `PrizmaIdCapture`, which is exactly how the component is axed — so the frame
48
+ * geometry, the four border treatments, the hand-hint artwork, the Timer, the
49
+ * flash bloom, the glare/darkener/not-aligned overlays and the "All data is
50
+ * encrypted" row are ALL Core's, never re-implemented (§7).
51
+ *
52
+ * NOT built on the `PrizmaViewfinderScreen` archetype: that archetype hardcodes
53
+ * `CaptureOverlay` (the face/document vignette) plus its own lock-and-encrypted
54
+ * row, and ID Capture's stage is `PrizmaIdCapture` — which carries the document
55
+ * geometry AND the encrypted row itself. Wrapping the archetype would have
56
+ * double-drawn the reassurance line. Foundation gap reported to the owner (a
57
+ * `stage` slot on ViewfinderScreen); no foundation file edited. The archetype's
58
+ * camera-surface and HUD-typography classes ARE reused as-is
59
+ * (`.prizma-viewfinder__surface` / `__content` / `__title` / `__instruction`),
60
+ * so nothing about the dark stage is re-declared here.
61
+ *
62
+ * Spacing comes from the measured three-band recipe in `IdCaptureLayout.css`
63
+ * (title block bottom-anchored Spacing/40 above the frame, manual strip flush
64
+ * to the column's bottom padding) — no offsets are invented here, and
65
+ * PrizmaIdCapture's own frame→encrypted-row adjacency is left untouched
66
+ * (DEVIATIONS.md #12's lesson: never stack an offset a Core component carries).
67
+ */
68
+ export declare const IdCaptureStageScreen: React.ForwardRefExoticComponent<IdCaptureStageScreenProps & React.RefAttributes<HTMLDivElement>>;
69
+ export default IdCaptureStageScreen;
@@ -0,0 +1,88 @@
1
+ 'use client';
2
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { forwardRef } from 'react';
4
+ import { PrizmaNavigation } from '@incodetech/prizma-core-web/navigation';
5
+ import { PrizmaIdCapture, } from '@incodetech/prizma-core-web/id-capture';
6
+ import { PrizmaCaptureManual } from '@incodetech/prizma-core-web/capture-manual';
7
+ import { PrizmaCaptureFeedback } from '@incodetech/prizma-core-web/capture-feedback';
8
+ import { PrizmaTag } from '@incodetech/prizma-core-web/tag';
9
+ import { PrizmaScreenShell } from './ScreenShell';
10
+ import './ScreenLayout.css';
11
+ import './ViewfinderScreen.css';
12
+ import './IdCaptureLayout.css';
13
+ /**
14
+ * Purple stage state → Core `PrizmaIdCapture` state. The mapping is 1:1 except
15
+ * `flash`, which Figma spells "flash" and Core spells `photo-flash`.
16
+ */
17
+ const CAPTURE_STATE = {
18
+ empty: 'empty',
19
+ hint: 'hint',
20
+ filled: 'filled',
21
+ focused: 'focused',
22
+ countdown: 'countdown',
23
+ flash: 'photo-flash',
24
+ 'error-wrong-side': 'error-wrong-side',
25
+ 'error-not-aligned': 'error-not-aligned',
26
+ 'error-blurry': 'error',
27
+ 'error-glare': 'error-glare',
28
+ 'error-too-dark': 'error-too-dark',
29
+ };
30
+ /**
31
+ * Which feedback pill each error stage carries by default (Figma
32
+ * `1-5-5 … 1-5-9-id-errors`, left to right). `blurry` has no frame overlay in
33
+ * Core — the message IS the pill (PrizmaIdCapture's `error` state is the plain
34
+ * red border precisely for this case, see its `error` doc comment).
35
+ */
36
+ const STAGE_FEEDBACK = {
37
+ 'error-wrong-side': 'show-front',
38
+ 'error-not-aligned': 'not-aligned',
39
+ 'error-blurry': 'blurry',
40
+ 'error-glare': 'glare',
41
+ 'error-too-dark': 'too-dark',
42
+ };
43
+ /**
44
+ * ID Capture — the camera stage (Archetype D, GUIDELINES.md §6-D; always dark).
45
+ *
46
+ * ONE screen for ~45 purple sections: every `*-empty`, `*-hint`, `*-manual`,
47
+ * `*-filled`, `*-countdown`, `*-flash` and `*-errors` section of all five
48
+ * capture groups (`ID capture - front side`, `ID capture - back side`,
49
+ * `Passport capture`, `ID capture ↕️ vertical`, `Passport capture ↕️ vertical`).
50
+ * They are `type` × `isVertical` × `state` variants of Core's
51
+ * `PrizmaIdCapture`, which is exactly how the component is axed — so the frame
52
+ * geometry, the four border treatments, the hand-hint artwork, the Timer, the
53
+ * flash bloom, the glare/darkener/not-aligned overlays and the "All data is
54
+ * encrypted" row are ALL Core's, never re-implemented (§7).
55
+ *
56
+ * NOT built on the `PrizmaViewfinderScreen` archetype: that archetype hardcodes
57
+ * `CaptureOverlay` (the face/document vignette) plus its own lock-and-encrypted
58
+ * row, and ID Capture's stage is `PrizmaIdCapture` — which carries the document
59
+ * geometry AND the encrypted row itself. Wrapping the archetype would have
60
+ * double-drawn the reassurance line. Foundation gap reported to the owner (a
61
+ * `stage` slot on ViewfinderScreen); no foundation file edited. The archetype's
62
+ * camera-surface and HUD-typography classes ARE reused as-is
63
+ * (`.prizma-viewfinder__surface` / `__content` / `__title` / `__instruction`),
64
+ * so nothing about the dark stage is re-declared here.
65
+ *
66
+ * Spacing comes from the measured three-band recipe in `IdCaptureLayout.css`
67
+ * (title block bottom-anchored Spacing/40 above the frame, manual strip flush
68
+ * to the column's bottom padding) — no offsets are invented here, and
69
+ * PrizmaIdCapture's own frame→encrypted-row adjacency is left untouched
70
+ * (DEVIATIONS.md #12's lesson: never stack an offset a Core component carries).
71
+ */
72
+ export const IdCaptureStageScreen = forwardRef(({ strings, documentType = 'id', side = 'front', vertical = false, state = 'empty', manual = false, showClose = state !== 'empty', feedback, camera, still, countdownValue = 3, screenId = `id-capture-${documentType}-${side}-${state}`, overrides, onAction, className, ...shell }, ref) => {
73
+ const slice = documentType === 'passport'
74
+ ? strings.stage.passport
75
+ : side === 'back'
76
+ ? strings.stage.back
77
+ : strings.stage.front;
78
+ const pillKind = feedback === undefined ? STAGE_FEEDBACK[state] : feedback;
79
+ const pillCopy = pillKind ? strings.feedback[pillKind] : undefined;
80
+ return (_jsxs(PrizmaScreenShell, { ref: ref, dark: true, className: className, ...shell, children: [_jsx("div", { className: "prizma-viewfinder__surface", children: camera }), _jsx("header", { className: "prizma-screen-nav id-capture-stage__nav", children: _jsx(PrizmaNavigation, { showIncodeLogo: false, showRightIcon: showClose, closeLabel: strings.closeLabel, "aria-label": strings.navLabel, onRightIconClick: () => onAction?.({ type: 'secondary', screenId }) }) }), _jsxs("div", { className: [
81
+ 'prizma-viewfinder__content',
82
+ overrides?.align === 'left' ? 'prizma-viewfinder__content--left' : '',
83
+ ]
84
+ .filter(Boolean)
85
+ .join(' '), children: [_jsx("div", { className: "id-capture-band id-capture-band--top", children: pillKind && pillCopy ? (_jsx("div", { className: "id-capture-stage__feedback", children: _jsx(PrizmaCaptureFeedback, { feedback: pillKind, title: pillCopy.title, subtitle: pillCopy.subtitle }) })) : (_jsxs(_Fragment, { children: [_jsx("h2", { className: "prizma-viewfinder__title", children: slice.title }), slice.instruction && !manual ? (_jsx("p", { className: "prizma-viewfinder__instruction", children: slice.instruction })) : null] })) }), _jsx(PrizmaIdCapture, { type: documentType, state: CAPTURE_STATE[state], isVertical: vertical, mode: "overlay", scrim: true, countdownValue: countdownValue, encryptedLabel: strings.encryptedLabel, announcement: strings.stage.stateLabels?.[state], still: still }), _jsx("div", { className: "id-capture-band" })] }), _jsx("div", { className: "prizma-screen-layout__capture-strip", children: _jsx(PrizmaCaptureManual, { className: "id-capture-stage__manual", variant: "id-capture", showButton: manual, showTooltip: manual, showHelpIcon: true, tooltipText: manual ? strings.stage.manualTooltip : undefined, ariaLabel: strings.stage.captureLabel, helpLabel: strings.stage.helpLabel, onCapture: () => onAction?.({ type: 'cta', screenId }), onHelp: () => onAction?.({ type: 'help', screenId }) }) }), _jsx("div", { className: "prizma-screen-layout__footer", children: _jsx(PrizmaTag, { label: strings.verifiedLabel }) })] }));
86
+ });
87
+ IdCaptureStageScreen.displayName = 'IdCaptureStageScreen';
88
+ export default IdCaptureStageScreen;
@@ -0,0 +1,199 @@
1
+ /** Which document the flow is capturing — Core `PrizmaIdCapture.type` minus
2
+ * `poa` (that belongs to the Document Capture module, not this one). */
3
+ export type IdCaptureDocumentType = 'id' | 'passport';
4
+ /** Which face of a two-sided document. Passports are single-sided, so `back`
5
+ * is only reachable for `id` (Figma: the `Passport capture` groups have no
6
+ * back-side sections). */
7
+ export type IdCaptureSide = 'front' | 'back';
8
+ /**
9
+ * The camera-stage sub-states — one per purple `*-empty` / `*-hint` /
10
+ * `*-manual` / `*-filled` / `*-countdown` / `*-flash` / `*-errors` spec
11
+ * section. They are state/copy variants of ONE screen
12
+ * (IdCaptureStageScreen), not separate screens; each maps to a
13
+ * `PrizmaIdCaptureState`.
14
+ */
15
+ export type IdCaptureStageState = 'empty' | 'hint' | 'filled' | 'focused' | 'countdown' | 'flash' | 'error-wrong-side' | 'error-not-aligned' | 'error-blurry' | 'error-glare' | 'error-too-dark';
16
+ /** The on-camera feedback pill variants the error stages carry — Core
17
+ * `PrizmaCaptureFeedbackType` (Figma: `Capture feedback / ID`, and the
18
+ * `Dynamic feedback messages` copy table in the front-side group). */
19
+ export type IdCaptureFeedbackKind = 'show-front' | 'show-back' | 'not-aligned' | 'blurry' | 'glare' | 'too-dark';
20
+ /** One feedback pill's copy. */
21
+ export interface IdCaptureFeedbackCopy {
22
+ title: string;
23
+ subtitle?: string;
24
+ }
25
+ /** A single row of an informational list (permission reasons, common issues,
26
+ * age-verification steps) — Core `PrizmaCardListCommonIssues` rows. */
27
+ export interface IdCaptureListRow {
28
+ title: string;
29
+ description?: string;
30
+ }
31
+ export interface IdCaptureStrings {
32
+ /** Accessible name for the logo nav region (i18n — no baked-in English). */
33
+ navLabel?: string;
34
+ /** Accessible name for the close control on the camera stages. */
35
+ closeLabel?: string;
36
+ /** "verified by" attribution copy for the footer tag. */
37
+ verifiedLabel: string;
38
+ /** "All data is encrypted" reassurance row — rendered by PrizmaIdCapture
39
+ * itself on every stage and every screen that shows the captured still. */
40
+ encryptedLabel?: string;
41
+ /** Document selection — `1-1-1-id` / `1-1-1-Document Chooser V2`. */
42
+ documentSelection: {
43
+ title: string;
44
+ subtitle?: string;
45
+ /** Row label for the identity-card option. */
46
+ idLabel: string;
47
+ /** Row label for the passport option. */
48
+ passportLabel: string;
49
+ };
50
+ /** Age verification — `1-1-2-id`. */
51
+ ageVerification: {
52
+ title: string;
53
+ subtitle?: string;
54
+ /** The three reassurance rows, in order. */
55
+ rows: IdCaptureListRow[];
56
+ ctaLabel: string;
57
+ };
58
+ /** Tutorial — `1-2-1-id` (front) · `4-2-1-back-id` (back) · `3-2-1-id`
59
+ * (passport). Copy variants of one screen; the host picks the slice. */
60
+ tutorial: {
61
+ front: {
62
+ title: string;
63
+ subtitle?: string;
64
+ };
65
+ back: {
66
+ title: string;
67
+ subtitle?: string;
68
+ };
69
+ passport: {
70
+ title: string;
71
+ subtitle?: string;
72
+ };
73
+ /** "The photo will be taken automatically" */
74
+ disclaimer?: string;
75
+ ctaLabel: string;
76
+ /** Visible/accessible copy while the CTA is loading. */
77
+ ctaLoadingLabel?: string;
78
+ };
79
+ /** Camera stage — `*-empty` / `*-hint` / `*-filled` / `*-countdown` /
80
+ * `*-flash` / `*-manual` / `*-errors`. The white H2 above the frame plus
81
+ * its muted instruction line, per side/document. */
82
+ stage: {
83
+ front: {
84
+ title: string;
85
+ instruction?: string;
86
+ };
87
+ back: {
88
+ title: string;
89
+ instruction?: string;
90
+ };
91
+ passport: {
92
+ title: string;
93
+ instruction?: string;
94
+ };
95
+ /** Manual mode — the tooltip bubble above the shutter
96
+ * ("1. Fill the frame with your ID / 2. Press the button"). */
97
+ manualTooltip?: string;
98
+ /** Accessible name of the shutter button (manual mode). */
99
+ captureLabel?: string;
100
+ /** Accessible name of the "?" help control. */
101
+ helpLabel?: string;
102
+ /** Visually-hidden state announcements, per stage state — forwarded to
103
+ * `PrizmaIdCapture.stateLabels`. */
104
+ stateLabels?: Partial<Record<IdCaptureStageState, string>>;
105
+ };
106
+ /** The on-camera feedback pills the error stages carry. */
107
+ feedback: Partial<Record<IdCaptureFeedbackKind, IdCaptureFeedbackCopy>>;
108
+ /** Analyzing / processing the captured still — `*-analyzing`. */
109
+ analyzing: {
110
+ title: string;
111
+ };
112
+ /** Review the captured still — `*-review`. Two actions, no status icon. */
113
+ review: {
114
+ title: string;
115
+ description?: string;
116
+ /** Secondary action — "Retake". */
117
+ retakeLabel: string;
118
+ /** Primary action — "Continue". */
119
+ ctaLabel: string;
120
+ };
121
+ /** Capture succeeded — `*-success` / `1-10-2-id-success-capture-only`. */
122
+ success: {
123
+ title: string;
124
+ description?: string;
125
+ ctaLabel: string;
126
+ };
127
+ /** Capture failed with retries left / exhausted — `*-attempt`,
128
+ * `*-failed-attempt`, `*-no-attempts`. The host passes the copy of the
129
+ * CURRENT verdict (wrong side, glare, blur, …). */
130
+ error: {
131
+ title: string;
132
+ description?: string;
133
+ /** "1 attempt remaining" — omit on the exhausted variant. */
134
+ attemptsLabel?: string;
135
+ ctaLabel: string;
136
+ };
137
+ /** Classification could not decide the document — Classification Errors /
138
+ * "Scan the back of your ID". Warning verdict with two actions. */
139
+ classification: {
140
+ title: string;
141
+ description?: string;
142
+ /** Primary — "Scan back of ID". */
143
+ ctaLabel: string;
144
+ /** Secondary — "ID has no back side". */
145
+ secondaryLabel: string;
146
+ };
147
+ /** Document not accepted — `1-9-12` / `1-9-13-id-documenterror` and the
148
+ * `-empty` variant. */
149
+ documentError: {
150
+ title: string;
151
+ description?: string;
152
+ /** ISO country code for the bundled flag raster (e.g. "US"). */
153
+ countryCode?: string;
154
+ /** Emoji fallback for countries outside the bundled flag bank. */
155
+ flag?: string;
156
+ /** Country name shown in the accepted-documents card. */
157
+ country?: string;
158
+ /** Accepted document names, in order. */
159
+ documents?: string[];
160
+ /** Placeholder copy for the `-empty` variant (no list available). */
161
+ emptyMessage?: string;
162
+ attemptsLabel?: string;
163
+ ctaLabel: string;
164
+ };
165
+ /** Flip interstitial — `1-11-1-id-flip`. Title only, no CTA. */
166
+ flip: {
167
+ title: string;
168
+ };
169
+ /** Common issues help sheet — `1-5-2-id-common-issues`. */
170
+ commonIssues: {
171
+ title: string;
172
+ rows: IdCaptureListRow[];
173
+ /** Tertiary link — "Take the photo manually". */
174
+ manualLabel: string;
175
+ ctaLabel: string;
176
+ };
177
+ /** Camera permission — `1-3-2-id` and its `allow-camera` /
178
+ * `quit-process` copy variants. */
179
+ permission: {
180
+ title: string;
181
+ description?: string;
182
+ rows: IdCaptureListRow[];
183
+ /** Tertiary link — "Quit process". */
184
+ quitLabel: string;
185
+ ctaLabel: string;
186
+ };
187
+ /** Server-side verification wait — `1-18-1-id-hold-on`,
188
+ * `1-4.1-1-id-hold-on`. */
189
+ holdOn: {
190
+ title: string;
191
+ description?: string;
192
+ };
193
+ /** No internet — `1-9-10-id-no-internet`. */
194
+ noConnection: {
195
+ title: string;
196
+ description?: string;
197
+ ctaLabel: string;
198
+ };
199
+ }
@@ -0,0 +1,15 @@
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
+ export {};
@@ -0,0 +1,36 @@
1
+ import React, { type ReactNode } from 'react';
2
+ import { type PrizmaTutorialScreenProps } from './TutorialScreen';
3
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
4
+ import type { IdCaptureStrings } from './IdCaptureStrings';
5
+ import './ScreenLayout.css';
6
+ /** Which purple tutorial section to render. Each is a copy + illustration
7
+ * variant of this ONE screen: `1-2-1-id` (front) · `4-2-1-back-id` (back) ·
8
+ * `3-2-1-id` (passport). */
9
+ export type IdCaptureTutorialVariant = 'front' | 'back' | 'passport';
10
+ export interface IdCaptureTutorialScreenProps extends Omit<PrizmaTutorialScreenProps, 'title' | 'subtitle' | 'disclaimer' | 'ctaLabel' | 'ctaLoadingLabel' | 'verifiedLabel' | 'navLabel'> {
11
+ /** Module copy — this screen reads the `tutorial` slice (+ shared labels). */
12
+ strings: IdCaptureStrings;
13
+ /** Which purple tutorial section to render. Default `front`. */
14
+ variant?: IdCaptureTutorialVariant;
15
+ /** CTA shows the designed loading treatment (the tutorial's loading state). */
16
+ ctaLoading?: boolean;
17
+ /** Replace the default Core ID-tutorial illustration. */
18
+ illustration?: ReactNode;
19
+ screenId?: string;
20
+ overrides?: PrizmaScreenOverrides;
21
+ onAction?: PrizmaScreenActionHandler;
22
+ }
23
+ /**
24
+ * ID Capture — tutorial, built on the `PrizmaTutorialScreen` archetype
25
+ * (GUIDELINES.md §6-A). Figma: purple sections `1-2-1-id` / `4-2-1-back-id` /
26
+ * `3-2-1-id` of the `Tutorial` group.
27
+ *
28
+ * Composed from the foundation pieces until the archetype grew a CTA-loading
29
+ * slot (#F-32) — the one thing that had forced this module, like the Face Capture
30
+ * pilot, to rebuild the tutorial skeleton by hand.
31
+ *
32
+ * The three illustrations are Core's `PrizmaIllustrationIdTutorial` variants,
33
+ * including the composed `id-back` face — never redrawn here (§7, §10).
34
+ */
35
+ export declare const IdCaptureTutorialScreen: React.ForwardRefExoticComponent<IdCaptureTutorialScreenProps & React.RefAttributes<HTMLDivElement>>;
36
+ export default IdCaptureTutorialScreen;
@@ -0,0 +1,30 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { forwardRef } from 'react';
4
+ import { PrizmaIllustrationIdTutorial } from '@incodetech/prizma-core-web/illustration-id-tutorial';
5
+ import { PrizmaTutorialScreen } from './TutorialScreen';
6
+ import './ScreenLayout.css';
7
+ /** Tutorial variant → Core `PrizmaIllustrationIdTutorial` type. */
8
+ const ILLUSTRATION_TYPE = {
9
+ front: 'id-front',
10
+ back: 'id-back',
11
+ passport: 'passport',
12
+ };
13
+ /**
14
+ * ID Capture — tutorial, built on the `PrizmaTutorialScreen` archetype
15
+ * (GUIDELINES.md §6-A). Figma: purple sections `1-2-1-id` / `4-2-1-back-id` /
16
+ * `3-2-1-id` of the `Tutorial` group.
17
+ *
18
+ * Composed from the foundation pieces until the archetype grew a CTA-loading
19
+ * slot (#F-32) — the one thing that had forced this module, like the Face Capture
20
+ * pilot, to rebuild the tutorial skeleton by hand.
21
+ *
22
+ * The three illustrations are Core's `PrizmaIllustrationIdTutorial` variants,
23
+ * including the composed `id-back` face — never redrawn here (§7, §10).
24
+ */
25
+ export const IdCaptureTutorialScreen = forwardRef(({ strings, variant = 'front', ctaLoading = false, illustration, screenId = `id-capture-tutorial-${variant}`, overrides, onAction, ...shell }, ref) => {
26
+ const slice = strings.tutorial[variant];
27
+ return (_jsx(PrizmaTutorialScreen, { ref: ref, title: slice.title, subtitle: slice.subtitle, disclaimer: strings.tutorial.disclaimer, ctaLabel: strings.tutorial.ctaLabel, ctaLoading: ctaLoading, ctaLoadingLabel: strings.tutorial.ctaLoadingLabel, illustration: illustration ?? _jsx(PrizmaIllustrationIdTutorial, { type: ILLUSTRATION_TYPE[variant] }), verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell }));
28
+ });
29
+ IdCaptureTutorialScreen.displayName = 'IdCaptureTutorialScreen';
30
+ export default IdCaptureTutorialScreen;
@@ -0,0 +1,95 @@
1
+ import React, { type ReactNode } from 'react';
2
+ import { type PrizmaScreenShellProps } from './ScreenShell';
3
+ import type { PrizmaScreenActionHandler, PrizmaScreenChromeProps, PrizmaScreenOverrides } from './types';
4
+ import './ScreenLayout.css';
5
+ /** Same vocabulary as `PrizmaResultScreen`: `loading` renders Core's spinner
6
+ * slot, the verdicts render its status mark, `none` shows the title alone. */
7
+ export type PrizmaListStatus = 'loading' | 'success' | 'error' | 'warning' | 'none';
8
+ export interface PrizmaListScreenProps extends Omit<PrizmaScreenShellProps, 'dark' | 'title' | 'children'>, PrizmaScreenChromeProps {
9
+ /** The status mark above the title. `none` (default) renders the title alone. */
10
+ status?: PrizmaListStatus;
11
+ /**
12
+ * An optional block between the logo nav and the content — a journey stepper.
13
+ * Video Selfie draws Core's `PrizmaStepper` on EVERY screen of the flow, not
14
+ * just its camera stages, and it is the only chrome that tells the steps
15
+ * apart; the archetypes had a slot on E alone, so the rest of the module shed
16
+ * it (owner-reported 2026-08-19). Takes a `ReactNode` so the module supplies
17
+ * Core's own component — no primitive invented, and both offsets live once in
18
+ * `ScreenLayout.css` (`.prizma-screen-layout__progress`). Omit it and nothing
19
+ * renders, so every existing consumer is byte-identical. DEVIATIONS #VS-4.
20
+ */
21
+ progress?: ReactNode;
22
+ /** H2 screen title ("Common issues", "Camera permission is required"). */
23
+ title: string;
24
+ /** Supporting copy below the title (H5). */
25
+ subtitle?: string;
26
+ /**
27
+ * A non-status glyph ABOVE the title — Core's `PrizmaTitle.icon` allowlist is
28
+ * `status | spinner | none`, so anything else (the question mark on ID
29
+ * Capture's common issues) is composed here. Wrap it in
30
+ * `prizma-screen-layout__glyph` (+ `--neutral` / `--negative`); the slot's
31
+ * geometry and its Spacing/16 live in `ScreenLayout.css`. DEVIATIONS #10.
32
+ */
33
+ glyph?: ReactNode;
34
+ /**
35
+ * THE list — a Core `PrizmaCardListCommonIssues`,
36
+ * `PrizmaCardListVerificationOptions`, `PrizmaCardDocumentList`… It fills the
37
+ * middle between the title block and the CTA band; the archetype supplies the
38
+ * Spacing/24 below the title and nothing else, so the list keeps its own row
39
+ * rhythm.
40
+ */
41
+ children?: ReactNode;
42
+ /** Hang the list off the BOTTOM of the middle instead of the top — the
43
+ * document chooser's option rows. Default `'start'`. */
44
+ listAlign?: 'start' | 'end';
45
+ /**
46
+ * Let the list PAN inside the column when the section draws a middle taller
47
+ * than the 844 frame — the archetype-G twin of `scrollFields` on E. The
48
+ * title, the CTA band and the anchored tag hold still while the rows scroll,
49
+ * instead of the surplus painting over them. DEVIATIONS #VS-12.
50
+ */
51
+ scrollList?: boolean;
52
+ /** Legal/hint copy directly above the CTA. Supplies the designed 28px
53
+ * text→CTA gap through its own padding (DEVIATIONS #8). */
54
+ disclaimer?: string;
55
+ /** Primary CTA. Omit for list screens whose rows ARE the actions (the
56
+ * document chooser: Core makes each row a real `<button>`). */
57
+ ctaLabel?: string;
58
+ /** Secondary CTA (a second filled action) rendered ABOVE the primary. */
59
+ secondaryCtaLabel?: string;
60
+ /** Tertiary underlined LINK above the primary — "Take the photo manually"
61
+ * (common issues) and "Quit process" (permission). Figma draws Core's
62
+ * `tertiary-link` composite in the band's top slot. */
63
+ linkLabel?: string;
64
+ /** "verified by" attribution copy for the footer tag. */
65
+ verifiedLabel: string;
66
+ navLabel?: string;
67
+ screenId?: string;
68
+ overrides?: PrizmaScreenOverrides;
69
+ onAction?: PrizmaScreenActionHandler;
70
+ }
71
+ /**
72
+ * Archetype G — List.
73
+ *
74
+ * Nav (or reserved row) → optional glyph → title block → a Core card / option
75
+ * list filling the middle → CTA band → anchored footer tag.
76
+ *
77
+ * It exists because EIGHT screens hand-built it independently: ID Capture's
78
+ * common issues, permission, age verification and document chooser, Document
79
+ * Capture's common issues, and the document-error card lists. Each re-declared
80
+ * the title→list offset (24 on the ID screens, 32 on Document Capture's) and
81
+ * each inserted the verified tag by hand — which is how the tag ended up at 0 on
82
+ * some screens and 16 on others (DEVIATIONS #F-29, #F-31).
83
+ *
84
+ * CTA band order is the family's designed one: disclaimer → tertiary link →
85
+ * secondary → primary. The link sits ABOVE the primary here (Figma
86
+ * `tertiaryPosition="top"` on `1-5-2-id-common-issues` and `1-3-2-id`), which is
87
+ * the mirror of Archetype A, where it sits below. Stacked at the foundation's
88
+ * flat Spacing/16 (DEVIATIONS #8) — every offset comes from ScreenLayout.css and
89
+ * this file declares none of its own.
90
+ *
91
+ * Reach for `PrizmaResultScreen` instead when the middle is a centred verdict
92
+ * rather than a list.
93
+ */
94
+ export declare const PrizmaListScreen: React.ForwardRefExoticComponent<PrizmaListScreenProps & React.RefAttributes<HTMLDivElement>>;
95
+ export default PrizmaListScreen;