@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,32 @@
1
+ import React from 'react';
2
+ import { type PrizmaCaptureScreenProps } from './CaptureScreen';
3
+ import type { FaceCaptureStrings } from './FaceCaptureStrings';
4
+ import './FaceCaptureLayout.css';
5
+ /** The two purple `faceCapture.loading.*` spec sections. Identical layout and
6
+ * identical spinner — only the status copy differs, so they are copy variants
7
+ * of ONE screen (same pattern as the 15 capturing states). */
8
+ export type FaceCaptureLoadingStage = 'uploading' | 'processing';
9
+ export interface FaceCaptureLoadingScreenProps extends Omit<PrizmaCaptureScreenProps, 'state' | 'camera' | 'title' | 'feedbackText' | 'statusLabels' | 'verifiedLabel' | 'navLabel'> {
10
+ /** Module copy — this screen reads the `uploading` / `processing` slices. */
11
+ strings: FaceCaptureStrings;
12
+ /** Which purple `faceCapture.loading.*` spec section to render. */
13
+ stage?: FaceCaptureLoadingStage;
14
+ }
15
+ /**
16
+ * Face Capture — upload / processing (Archetype B, GUIDELINES.md §6-B).
17
+ * Figma: purple sections faceCapture.loading.uploading / .processing.
18
+ *
19
+ * NOT the Processing archetype (§6-C). Both purple sections put the spinner +
20
+ * status line inside the SAME 342-tall "Middle Content" box the capture ring
21
+ * occupies — 40px below the nav, measured at y=84 of the 390 CONTENT frame —
22
+ * whereas §6-C centers in all remaining space (51px lower). Core models this
23
+ * as the `uploading` state of `PrizmaSelfieCapture`, where the stage dissolves
24
+ * into the canonical `PrizmaLoadingSpinner` in the ring's own slot (owner
25
+ * choreography 2026-07-15). Design system wins — DEVIATIONS.md #11.
26
+ *
27
+ * So the ring stage stays, un-re-implemented, and only its state changes.
28
+ * The Core component owns the ring spacing; the archetype adds none
29
+ * (DEVIATIONS.md #12).
30
+ */
31
+ export declare const FaceCaptureLoadingScreen: React.ForwardRefExoticComponent<FaceCaptureLoadingScreenProps & React.RefAttributes<HTMLDivElement>>;
32
+ export default FaceCaptureLoadingScreen;
@@ -0,0 +1,30 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { forwardRef } from 'react';
4
+ import { PrizmaCaptureScreen } from './CaptureScreen';
5
+ import './FaceCaptureLayout.css';
6
+ /**
7
+ * Face Capture — upload / processing (Archetype B, GUIDELINES.md §6-B).
8
+ * Figma: purple sections faceCapture.loading.uploading / .processing.
9
+ *
10
+ * NOT the Processing archetype (§6-C). Both purple sections put the spinner +
11
+ * status line inside the SAME 342-tall "Middle Content" box the capture ring
12
+ * occupies — 40px below the nav, measured at y=84 of the 390 CONTENT frame —
13
+ * whereas §6-C centers in all remaining space (51px lower). Core models this
14
+ * as the `uploading` state of `PrizmaSelfieCapture`, where the stage dissolves
15
+ * into the canonical `PrizmaLoadingSpinner` in the ring's own slot (owner
16
+ * choreography 2026-07-15). Design system wins — DEVIATIONS.md #11.
17
+ *
18
+ * So the ring stage stays, un-re-implemented, and only its state changes.
19
+ * The Core component owns the ring spacing; the archetype adds none
20
+ * (DEVIATIONS.md #12).
21
+ */
22
+ export const FaceCaptureLoadingScreen = forwardRef(({ strings, stage = 'uploading', screenId = `face-capture-${stage}`, className, ...rest }, ref) => (_jsx(PrizmaCaptureScreen
23
+ // uploading / processing: the feed is closed — not a capture screen (owner rule 2026-08-18).
24
+ , {
25
+ // uploading / processing: the feed is closed — not a capture screen (owner rule 2026-08-18).
26
+ cameraOpen: false, ref: ref, className: className, state: "uploading", statusLabels: {
27
+ uploading: stage === 'processing' ? strings.processing.title : strings.uploading.title,
28
+ }, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, ...rest })));
29
+ FaceCaptureLoadingScreen.displayName = 'FaceCaptureLoadingScreen';
30
+ export default FaceCaptureLoadingScreen;
@@ -0,0 +1,32 @@
1
+ import React, { type ReactNode } from 'react';
2
+ import { type PrizmaScreenShellProps } from './ScreenShell';
3
+ import type { PrizmaScreenActionHandler, PrizmaScreenChromeProps, PrizmaScreenOverrides } from './types';
4
+ import type { FaceCaptureStrings } from './FaceCaptureStrings';
5
+ import './ScreenLayout.css';
6
+ import './FaceCaptureLayout.css';
7
+ export interface FaceCaptureManualCaptureScreenProps extends Omit<PrizmaScreenShellProps, 'dark' | 'title' | 'children'>, PrizmaScreenChromeProps {
8
+ /** Module copy — this screen reads the `manualCapture` slice (+ shared labels). */
9
+ strings: FaceCaptureStrings;
10
+ /** Live camera feed (<video>) or sample still (<img>) for the ring window. */
11
+ camera?: ReactNode;
12
+ screenId?: string;
13
+ overrides?: PrizmaScreenOverrides;
14
+ onAction?: PrizmaScreenActionHandler;
15
+ }
16
+ /**
17
+ * Face Capture — manual capture (Archetype B layout, GUIDELINES.md §6-B).
18
+ * Figma: purple section faceCapture.manualCapture.default.
19
+ *
20
+ * Goes through Core's PrizmaSelfieCapture in manual mode (§7): the component
21
+ * owns ring, silhouette guide, instruction line, and shutter. Composed on the
22
+ * foundation shell directly because the CaptureScreen archetype does not
23
+ * forward `isManual` / `onCapture` — foundation gap reported to the owner, no
24
+ * foundation file edited. Layout classes are the archetype's own.
25
+ *
26
+ * Verified pixel-exact against Figma 3.1.0: the `Capture / Selfie` instance sits
27
+ * at nav-bottom + 0 with the ring at +40, the manual instruction at +32 below
28
+ * the ring and the 64px shutter at +32 below that — all of it the component's
29
+ * own padding/gap; the archetype adds none of its own (DEVIATIONS.md #12).
30
+ */
31
+ export declare const FaceCaptureManualCaptureScreen: React.ForwardRefExoticComponent<FaceCaptureManualCaptureScreenProps & React.RefAttributes<HTMLDivElement>>;
32
+ export default FaceCaptureManualCaptureScreen;
@@ -0,0 +1,27 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { forwardRef } from 'react';
4
+ import { PrizmaSelfieCapture } from '@incodetech/prizma-core-web/selfie-capture';
5
+ import { PrizmaTag } from '@incodetech/prizma-core-web/tag';
6
+ import { PrizmaScreenShell } from './ScreenShell';
7
+ import { PrizmaScreenNav } from './ScreenNav';
8
+ import './ScreenLayout.css';
9
+ import './FaceCaptureLayout.css';
10
+ /**
11
+ * Face Capture — manual capture (Archetype B layout, GUIDELINES.md §6-B).
12
+ * Figma: purple section faceCapture.manualCapture.default.
13
+ *
14
+ * Goes through Core's PrizmaSelfieCapture in manual mode (§7): the component
15
+ * owns ring, silhouette guide, instruction line, and shutter. Composed on the
16
+ * foundation shell directly because the CaptureScreen archetype does not
17
+ * forward `isManual` / `onCapture` — foundation gap reported to the owner, no
18
+ * foundation file edited. Layout classes are the archetype's own.
19
+ *
20
+ * Verified pixel-exact against Figma 3.1.0: the `Capture / Selfie` instance sits
21
+ * at nav-bottom + 0 with the ring at +40, the manual instruction at +32 below
22
+ * the ring and the 64px shutter at +32 below that — all of it the component's
23
+ * own padding/gap; the archetype adds none of its own (DEVIATIONS.md #12).
24
+ */
25
+ export const FaceCaptureManualCaptureScreen = forwardRef(({ strings, camera, screenId = 'face-capture-manual-capture', showHeader, showFooter = true, overrides, onAction, className, ...shell }, ref) => (_jsxs(PrizmaScreenShell, { ref: ref, theme: "light", className: className, ...shell, children: [_jsx(PrizmaScreenNav, { reserved: !(showHeader ?? Boolean(overrides?.logo)), logo: overrides?.logo, navLabel: strings.navLabel }), _jsxs("div", { className: "prizma-screen-layout__content prizma-screen-layout__content--capture", children: [_jsx(PrizmaSelfieCapture, { state: "empty", camera: camera, isManual: true, manualFeedbackText: strings.manualCapture.instruction, captureLabel: strings.manualCapture.captureLabel, onCapture: () => onAction?.({ type: 'cta', screenId }) }), showFooter ? (_jsx("div", { className: "prizma-screen-layout__footer prizma-screen-layout__footer--pinned", children: _jsx(PrizmaTag, { label: strings.verifiedLabel }) })) : null] })] })));
26
+ FaceCaptureManualCaptureScreen.displayName = 'FaceCaptureManualCaptureScreen';
27
+ export default FaceCaptureManualCaptureScreen;
@@ -0,0 +1,30 @@
1
+ import React from 'react';
2
+ import { type PrizmaResultScreenProps } from './ResultScreen';
3
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
4
+ import type { FaceCaptureStrings } from './FaceCaptureStrings';
5
+ import './ScreenLayout.css';
6
+ export interface FaceCaptureNoConnectionScreenProps extends Omit<PrizmaResultScreenProps, 'status' | 'title' | 'subtitle' | 'glyph' | 'ctaLabel' | 'verifiedLabel' | 'navLabel'> {
7
+ /** Module copy — this screen reads the `noConnection` slice. */
8
+ strings: FaceCaptureStrings;
9
+ screenId?: string;
10
+ overrides?: PrizmaScreenOverrides;
11
+ onAction?: PrizmaScreenActionHandler;
12
+ }
13
+ /**
14
+ * Face Capture — no internet connection (purple section
15
+ * `7.faceCapture.genericErrors.noConnection`), built on the
16
+ * `PrizmaResultScreen` archetype (GUIDELINES.md §6-F).
17
+ *
18
+ * Figma's CONTENT frame holds only a Title and a single CTA (measured 390
19
+ * section: Title 24→574, CTAs 574→630). The header and the verified tag are back
20
+ * on by the owner's rule that non-capture screens show both (DEVIATIONS #F-30);
21
+ * the layout is otherwise the archetype's own.
22
+ *
23
+ * The glyph is Figma's `Icon / Wi-Fi` swapped into the Title's icon slot. Core's
24
+ * `PrizmaTitle` allowlist is status | spinner | none, so it rides in the
25
+ * archetype's `glyph` slot with the foundation's `__glyph` class — icon from the
26
+ * canonical bank, no primitive invented, and no module CSS: the class was
27
+ * promoted out of three byte-identical module copies (DEVIATIONS #10, #DC-29).
28
+ */
29
+ export declare const FaceCaptureNoConnectionScreen: React.ForwardRefExoticComponent<FaceCaptureNoConnectionScreenProps & React.RefAttributes<HTMLDivElement>>;
30
+ export default FaceCaptureNoConnectionScreen;
@@ -0,0 +1,31 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { forwardRef } from 'react';
4
+ import { IconWifiOff } from '@incodetech/prizma-core-icons';
5
+ import { PrizmaResultScreen } from './ResultScreen';
6
+ import './ScreenLayout.css';
7
+ /**
8
+ * Face Capture — no internet connection (purple section
9
+ * `7.faceCapture.genericErrors.noConnection`), built on the
10
+ * `PrizmaResultScreen` archetype (GUIDELINES.md §6-F).
11
+ *
12
+ * Figma's CONTENT frame holds only a Title and a single CTA (measured 390
13
+ * section: Title 24→574, CTAs 574→630). The header and the verified tag are back
14
+ * on by the owner's rule that non-capture screens show both (DEVIATIONS #F-30);
15
+ * the layout is otherwise the archetype's own.
16
+ *
17
+ * The glyph is Figma's `Icon / Wi-Fi` swapped into the Title's icon slot. Core's
18
+ * `PrizmaTitle` allowlist is status | spinner | none, so it rides in the
19
+ * archetype's `glyph` slot with the foundation's `__glyph` class — icon from the
20
+ * canonical bank, no primitive invented, and no module CSS: the class was
21
+ * promoted out of three byte-identical module copies (DEVIATIONS #10, #DC-29).
22
+ */
23
+ export const FaceCaptureNoConnectionScreen = forwardRef(({ strings, screenId = 'face-capture-no-connection', overrides, onAction, ...shell }, ref) => (_jsx(PrizmaResultScreen, { ref: ref, glyph: _jsx("span", { className: [
24
+ 'prizma-screen-layout__glyph',
25
+ 'prizma-screen-layout__glyph--negative',
26
+ overrides?.align === 'left' ? 'prizma-screen-layout__glyph--left' : '',
27
+ ]
28
+ .filter(Boolean)
29
+ .join(' '), children: _jsx(IconWifiOff, { size: "l" }) }), title: strings.noConnection.title, subtitle: strings.noConnection.description, ctaLabel: strings.noConnection.ctaLabel, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell })));
30
+ FaceCaptureNoConnectionScreen.displayName = 'FaceCaptureNoConnectionScreen';
31
+ export default FaceCaptureNoConnectionScreen;
@@ -0,0 +1,40 @@
1
+ import React from 'react';
2
+ import { type PrizmaResultScreenProps } from './ResultScreen';
3
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
4
+ import type { FaceCaptureStrings } from './FaceCaptureStrings';
5
+ import './ScreenLayout.css';
6
+ import './FaceCaptureLayout.css';
7
+ export interface FaceCaptureResultErrorScreenProps extends Omit<PrizmaResultScreenProps, 'status' | 'title' | 'subtitle' | 'disclaimer' | 'ctaLabel' | 'verifiedLabel' | 'navLabel'> {
8
+ /** Module copy — this screen reads the `error` slice (+ shared labels). The
9
+ * host passes the copy of the CURRENT error (faceNotAligned, tooDark, …);
10
+ * all 10 purple base sections share this one layout. */
11
+ strings: FaceCaptureStrings;
12
+ /**
13
+ * The `*Exhausted` half of the purple `faceCapture.resultError.*` pairs
14
+ * (9 of them — `eyesClosed` has no exhausted variant in Figma). Retries are
15
+ * used up: the status icon goes from warning to negative, the attempts line
16
+ * is dropped, and the CTA becomes the forward action instead of "Try again".
17
+ */
18
+ exhausted?: boolean;
19
+ screenId?: string;
20
+ overrides?: PrizmaScreenOverrides;
21
+ onAction?: PrizmaScreenActionHandler;
22
+ }
23
+ /**
24
+ * Face Capture — error result (Archetype C-with-CTA, GUIDELINES.md §6-C + §6-A
25
+ * CTA band). Figma: the 19 purple `faceCapture.resultError.*` sections — copy,
26
+ * status-icon, and CTA variants of this ONE screen.
27
+ *
28
+ * Layout measured off the purple 390 sections (CONTENT frame, 654 tall):
29
+ * nav 8→52 · Title stretched 52→479 with its icon/heading/subtitle block
30
+ * vertically centered · CTA band 479→646. The centered block is exactly Core's
31
+ * `PrizmaTitle` (icon slot → Spacing/16 → H2 → Spacing/12 → H5), so nothing is
32
+ * re-implemented here; the screen only chooses the status and supplies copy.
33
+ *
34
+ * Now built on the `PrizmaResultScreen` archetype (consolidation 2026-08-18).
35
+ * It previously composed the shell by hand because no template offered a
36
+ * centered status block WITH a CTA band — the gap that made three modules
37
+ * rebuild the same skeleton.
38
+ */
39
+ export declare const FaceCaptureResultErrorScreen: React.ForwardRefExoticComponent<FaceCaptureResultErrorScreenProps & React.RefAttributes<HTMLDivElement>>;
40
+ export default FaceCaptureResultErrorScreen;
@@ -0,0 +1,32 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { forwardRef } from 'react';
4
+ import { PrizmaResultScreen } from './ResultScreen';
5
+ import './ScreenLayout.css';
6
+ import './FaceCaptureLayout.css';
7
+ /**
8
+ * Face Capture — error result (Archetype C-with-CTA, GUIDELINES.md §6-C + §6-A
9
+ * CTA band). Figma: the 19 purple `faceCapture.resultError.*` sections — copy,
10
+ * status-icon, and CTA variants of this ONE screen.
11
+ *
12
+ * Layout measured off the purple 390 sections (CONTENT frame, 654 tall):
13
+ * nav 8→52 · Title stretched 52→479 with its icon/heading/subtitle block
14
+ * vertically centered · CTA band 479→646. The centered block is exactly Core's
15
+ * `PrizmaTitle` (icon slot → Spacing/16 → H2 → Spacing/12 → H5), so nothing is
16
+ * re-implemented here; the screen only chooses the status and supplies copy.
17
+ *
18
+ * Now built on the `PrizmaResultScreen` archetype (consolidation 2026-08-18).
19
+ * It previously composed the shell by hand because no template offered a
20
+ * centered status block WITH a CTA band — the gap that made three modules
21
+ * rebuild the same skeleton.
22
+ */
23
+ export const FaceCaptureResultErrorScreen = forwardRef(({ strings, exhausted = false, screenId = exhausted ? 'face-capture-error-exhausted' : 'face-capture-error', overrides, onAction, ...shell }, ref) => {
24
+ // Figma: the base sections carry "N attempts remaining"; every `*Exhausted`
25
+ // section drops it (the subtitle says the limit is reached instead). Gated
26
+ // here too so a host that keeps the label in its locale pack still renders
27
+ // the designed exhausted screen.
28
+ const attemptsLabel = exhausted ? undefined : strings.error.attemptsLabel;
29
+ return (_jsx(PrizmaResultScreen, { ref: ref, status: exhausted ? 'error' : 'warning', title: strings.error.title, subtitle: strings.error.description, disclaimer: attemptsLabel, ctaLabel: strings.error.ctaLabel, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell }));
30
+ });
31
+ FaceCaptureResultErrorScreen.displayName = 'FaceCaptureResultErrorScreen';
32
+ export default FaceCaptureResultErrorScreen;
@@ -0,0 +1,25 @@
1
+ import React from 'react';
2
+ import { type PrizmaCaptureScreenProps } from './CaptureScreen';
3
+ import type { FaceCaptureStrings } from './FaceCaptureStrings';
4
+ import './FaceCaptureLayout.css';
5
+ export interface FaceCaptureResultSuccessScreenProps extends Omit<PrizmaCaptureScreenProps, 'state' | 'camera' | 'title' | 'feedbackText' | 'statusLabels' | 'verifiedLabel' | 'navLabel'> {
6
+ /** Module copy — this screen reads the `success` slice (+ shared labels). */
7
+ strings: FaceCaptureStrings;
8
+ }
9
+ /**
10
+ * Face Capture — success result (Archetype B, GUIDELINES.md §6-B).
11
+ * Figma: purple section faceCapture.resultSuccess.default.
12
+ *
13
+ * Same reasoning as FaceCaptureLoadingScreen: the check + "Success!" sit in the
14
+ * ring's own 342-tall slot 40px below the nav (Figma "Middle Content" y=84),
15
+ * not in a §6-C full-height centered column. Core renders exactly that as the
16
+ * `success` state of `PrizmaSelfieCapture` — the stage dissolves into the
17
+ * canonical `PrizmaTitle` with the positive status icon (owner choreography
18
+ * 2026-07-15). DEVIATIONS.md #11.
19
+ *
20
+ * The verdict icon, its color token, and the dissolve all belong to Core; this
21
+ * screen only supplies copy (§7 — success reuses the capture geometry, never a
22
+ * new layout). The Core component owns the ring spacing (DEVIATIONS.md #12).
23
+ */
24
+ export declare const FaceCaptureResultSuccessScreen: React.ForwardRefExoticComponent<FaceCaptureResultSuccessScreenProps & React.RefAttributes<HTMLDivElement>>;
25
+ export default FaceCaptureResultSuccessScreen;
@@ -0,0 +1,27 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { forwardRef } from 'react';
4
+ import { PrizmaCaptureScreen } from './CaptureScreen';
5
+ import './FaceCaptureLayout.css';
6
+ /**
7
+ * Face Capture — success result (Archetype B, GUIDELINES.md §6-B).
8
+ * Figma: purple section faceCapture.resultSuccess.default.
9
+ *
10
+ * Same reasoning as FaceCaptureLoadingScreen: the check + "Success!" sit in the
11
+ * ring's own 342-tall slot 40px below the nav (Figma "Middle Content" y=84),
12
+ * not in a §6-C full-height centered column. Core renders exactly that as the
13
+ * `success` state of `PrizmaSelfieCapture` — the stage dissolves into the
14
+ * canonical `PrizmaTitle` with the positive status icon (owner choreography
15
+ * 2026-07-15). DEVIATIONS.md #11.
16
+ *
17
+ * The verdict icon, its color token, and the dissolve all belong to Core; this
18
+ * screen only supplies copy (§7 — success reuses the capture geometry, never a
19
+ * new layout). The Core component owns the ring spacing (DEVIATIONS.md #12).
20
+ */
21
+ export const FaceCaptureResultSuccessScreen = forwardRef(({ strings, screenId = 'face-capture-success', className, ...rest }, ref) => (_jsx(PrizmaCaptureScreen
22
+ // success: the feed is closed — not a capture screen (owner rule 2026-08-18).
23
+ , {
24
+ // success: the feed is closed — not a capture screen (owner rule 2026-08-18).
25
+ cameraOpen: false, ref: ref, className: className, state: "success", statusLabels: { success: strings.success.title }, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, ...rest })));
26
+ FaceCaptureResultSuccessScreen.displayName = 'FaceCaptureResultSuccessScreen';
27
+ export default FaceCaptureResultSuccessScreen;
@@ -0,0 +1,62 @@
1
+ /**
2
+ * The capturing sub-states — one per purple `faceCapture.capturing.*` spec
3
+ * section. They are copy/ring-state variants of ONE screen
4
+ * (FaceCaptureCapturingScreen), not separate screens.
5
+ */
6
+ export type FaceCaptureCapturingState = 'initiating' | 'getReady' | 'alignFace' | 'lookAtCamera' | 'tooDark' | 'tooBright' | 'eyesClosed' | 'maskDetected' | 'glassesDetected' | 'hatDetected' | 'moveRight' | 'moveLeft' | 'moveCloser' | 'moveAway' | 'faceOcclusion';
7
+ export interface FaceCaptureStrings {
8
+ /** Accessible name for the logo nav region (i18n — no baked-in English). */
9
+ navLabel?: string;
10
+ /** "verified by" attribution copy for the footer tag. */
11
+ verifiedLabel: string;
12
+ /** faceCapture.tutorial.* — default / loading / ageAssurance are copy +
13
+ * CTA-state variants of this one screen. */
14
+ tutorial: {
15
+ title: string;
16
+ subtitle?: string;
17
+ /** "Stay still, selfie will be taken automatically" */
18
+ disclaimer?: string;
19
+ ctaLabel: string;
20
+ /** Visible/accessible copy while the CTA is loading (tutorial.loading). */
21
+ ctaLoadingLabel?: string;
22
+ };
23
+ /** faceCapture.capturing.* — the H2 instruction under the ring, per state.
24
+ * `initiating` has no instruction in the design; omit it. */
25
+ capturing: Partial<Record<FaceCaptureCapturingState, string>>;
26
+ /** faceCapture.manualCapture.default */
27
+ manualCapture: {
28
+ /** "Align your face within the silhouette and press the button to capture" */
29
+ instruction: string;
30
+ /** Accessible name of the shutter button. */
31
+ captureLabel: string;
32
+ };
33
+ /** faceCapture.loading.uploading */
34
+ uploading: {
35
+ title: string;
36
+ };
37
+ /** faceCapture.loading.processing */
38
+ processing: {
39
+ title: string;
40
+ };
41
+ /** faceCapture.resultSuccess.default */
42
+ success: {
43
+ title: string;
44
+ };
45
+ /** faceCapture.resultError.* — the host passes the copy of the CURRENT
46
+ * error (faceNotAligned, tooDark, …); exhausted variants change icon +
47
+ * copy + CTA via the same slice. */
48
+ error: {
49
+ title: string;
50
+ description?: string;
51
+ /** "2 attempts remaining" — omit on exhausted variants. */
52
+ attemptsLabel?: string;
53
+ /** "Try again" / "Continue" */
54
+ ctaLabel: string;
55
+ };
56
+ /** faceCapture.genericErrors.noConnection */
57
+ noConnection: {
58
+ title: string;
59
+ description?: string;
60
+ ctaLabel: string;
61
+ };
62
+ }
@@ -0,0 +1,14 @@
1
+ // Face Capture module — copy contract.
2
+ //
3
+ // Every Face Capture screen receives the SAME `strings: FaceCaptureStrings`
4
+ // object (rule: all copy via props, no hardcoded English — GUIDELINES.md §9).
5
+ // The object is the module's locale pack: one instance drives the whole flow,
6
+ // which is what the future FlowPlayer steps through. Sample copy lives only
7
+ // in previews / host apps.
8
+ //
9
+ // Authoritative screen list: the PURPLE "screen specs" sections of the
10
+ // Face Capture Figma file (wssQwsBcqYrWqVsZTFVVVA, page 18:19332) —
11
+ // tutorial · capturing (15 states) · manualCapture · loading (uploading /
12
+ // processing) · resultSuccess · resultError (+ exhausted) · genericErrors
13
+ // (noConnection).
14
+ export {};
@@ -0,0 +1,29 @@
1
+ import React, { type ReactNode } from 'react';
2
+ import { type PrizmaTutorialScreenProps } from './TutorialScreen';
3
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
4
+ import type { FaceCaptureStrings } from './FaceCaptureStrings';
5
+ import './ScreenLayout.css';
6
+ export interface FaceCaptureTutorialScreenProps extends Omit<PrizmaTutorialScreenProps, 'title' | 'subtitle' | 'disclaimer' | 'ctaLabel' | 'ctaLoadingLabel' | 'verifiedLabel' | 'navLabel'> {
7
+ /** Module copy — this screen reads the `tutorial` slice (+ shared labels). */
8
+ strings: FaceCaptureStrings;
9
+ /** faceCapture.tutorial.loading: CTA shows the designed loading treatment. */
10
+ ctaLoading?: boolean;
11
+ /** Replace the default selfie illustration (Core PrizmaIllustrationSelfie). */
12
+ illustration?: ReactNode;
13
+ screenId?: string;
14
+ overrides?: PrizmaScreenOverrides;
15
+ onAction?: PrizmaScreenActionHandler;
16
+ }
17
+ /**
18
+ * Face Capture — tutorial, built on the `PrizmaTutorialScreen` archetype
19
+ * (GUIDELINES.md §6-A). Figma: purple sections faceCapture.tutorial.default /
20
+ * .loading / .ageAssurance (copy + CTA-state variants of this one screen).
21
+ *
22
+ * It previously composed the foundation shell by hand because the archetype had
23
+ * no CTA-loading slot and `faceCapture.tutorial.loading` needs one. The slot now
24
+ * exists (`ctaLoading` / `ctaLoadingLabel`, forwarded to Core's own
25
+ * `PrizmaButton` loading treatment — #F-32), so the screen is a single archetype
26
+ * call and declares no layout.
27
+ */
28
+ export declare const FaceCaptureTutorialScreen: React.ForwardRefExoticComponent<FaceCaptureTutorialScreenProps & React.RefAttributes<HTMLDivElement>>;
29
+ export default FaceCaptureTutorialScreen;
@@ -0,0 +1,20 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { forwardRef } from 'react';
4
+ import { PrizmaIllustrationSelfie } from '@incodetech/prizma-core-web/illustration-selfie';
5
+ import { PrizmaTutorialScreen } from './TutorialScreen';
6
+ import './ScreenLayout.css';
7
+ /**
8
+ * Face Capture — tutorial, built on the `PrizmaTutorialScreen` archetype
9
+ * (GUIDELINES.md §6-A). Figma: purple sections faceCapture.tutorial.default /
10
+ * .loading / .ageAssurance (copy + CTA-state variants of this one screen).
11
+ *
12
+ * It previously composed the foundation shell by hand because the archetype had
13
+ * no CTA-loading slot and `faceCapture.tutorial.loading` needs one. The slot now
14
+ * exists (`ctaLoading` / `ctaLoadingLabel`, forwarded to Core's own
15
+ * `PrizmaButton` loading treatment — #F-32), so the screen is a single archetype
16
+ * call and declares no layout.
17
+ */
18
+ export const FaceCaptureTutorialScreen = forwardRef(({ strings, ctaLoading = false, illustration, screenId = 'face-capture-tutorial', overrides, onAction, ...shell }, ref) => (_jsx(PrizmaTutorialScreen, { ref: ref, title: strings.tutorial.title, subtitle: strings.tutorial.subtitle, disclaimer: strings.tutorial.disclaimer, ctaLabel: strings.tutorial.ctaLabel, ctaLoading: ctaLoading, ctaLoadingLabel: strings.tutorial.ctaLoadingLabel, illustration: illustration ?? _jsx(PrizmaIllustrationSelfie, {}), verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell })));
19
+ FaceCaptureTutorialScreen.displayName = 'FaceCaptureTutorialScreen';
20
+ export default FaceCaptureTutorialScreen;
@@ -0,0 +1,26 @@
1
+ import React from 'react';
2
+ import { type PrizmaProcessingScreenProps } from './ProcessingScreen';
3
+ import type { FaceMatchStrings } from './FaceMatchStrings';
4
+ export interface FaceMatchComparisonCompactScreenProps extends Omit<PrizmaProcessingScreenProps, 'status' | 'title' | 'subtitle' | 'verifiedLabel' | 'navLabel'> {
5
+ /** Module copy — this screen reads the `comparisonCompact` slice. */
6
+ strings: FaceMatchStrings;
7
+ }
8
+ /**
9
+ * Face Match — compact matching state (Archetype C, GUIDELINES.md §6-C).
10
+ * Figma: purple section `faceMatch.comparisonCompact.matching` — the photo-less
11
+ * variant of the matching state, used when the captured images are not shown.
12
+ *
13
+ * This one IS the centered Processing archetype, and it is the counter-example
14
+ * DEVIATIONS.md #11 predicted: Face Capture's loading screens use archetype B
15
+ * because their Figma pins the spinner inside the 342-tall ring box, whereas
16
+ * this section really centers — the spinner + title + subtitle block (342×129)
17
+ * sits at the exact midpoint of the flexible middle frame (middle content
18
+ * 44→456 tall 412, block at y=141.5 = (412 − 129) / 2). So the foundation
19
+ * archetype is reused verbatim and this screen only supplies copy; it is NOT a
20
+ * copy of FaceCaptureLoadingScreen, whose layout differs. DEVIATIONS.md #FM-24.
21
+ *
22
+ * The spinner, its 48px geometry and the title typography all belong to Core's
23
+ * `PrizmaTitle` spinner slot inside the archetype — nothing re-implemented (§7).
24
+ */
25
+ export declare const FaceMatchComparisonCompactScreen: React.ForwardRefExoticComponent<FaceMatchComparisonCompactScreenProps & React.RefAttributes<HTMLDivElement>>;
26
+ export default FaceMatchComparisonCompactScreen;
@@ -0,0 +1,24 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { forwardRef } from 'react';
4
+ import { PrizmaProcessingScreen, } from './ProcessingScreen';
5
+ /**
6
+ * Face Match — compact matching state (Archetype C, GUIDELINES.md §6-C).
7
+ * Figma: purple section `faceMatch.comparisonCompact.matching` — the photo-less
8
+ * variant of the matching state, used when the captured images are not shown.
9
+ *
10
+ * This one IS the centered Processing archetype, and it is the counter-example
11
+ * DEVIATIONS.md #11 predicted: Face Capture's loading screens use archetype B
12
+ * because their Figma pins the spinner inside the 342-tall ring box, whereas
13
+ * this section really centers — the spinner + title + subtitle block (342×129)
14
+ * sits at the exact midpoint of the flexible middle frame (middle content
15
+ * 44→456 tall 412, block at y=141.5 = (412 − 129) / 2). So the foundation
16
+ * archetype is reused verbatim and this screen only supplies copy; it is NOT a
17
+ * copy of FaceCaptureLoadingScreen, whose layout differs. DEVIATIONS.md #FM-24.
18
+ *
19
+ * The spinner, its 48px geometry and the title typography all belong to Core's
20
+ * `PrizmaTitle` spinner slot inside the archetype — nothing re-implemented (§7).
21
+ */
22
+ export const FaceMatchComparisonCompactScreen = forwardRef(({ strings, screenId = 'face-match-comparison-compact', ...rest }, ref) => (_jsx(PrizmaProcessingScreen, { ref: ref, status: "loading", title: strings.comparisonCompact.title, subtitle: strings.comparisonCompact.description, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, ...rest })));
23
+ FaceMatchComparisonCompactScreen.displayName = 'FaceMatchComparisonCompactScreen';
24
+ export default FaceMatchComparisonCompactScreen;
@@ -0,0 +1,80 @@
1
+ import React, { type ReactNode } from 'react';
2
+ import { type PrizmaScreenShellProps } from './ScreenShell';
3
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
4
+ import type { FaceMatchComparisonVariant, FaceMatchStrings } from './FaceMatchStrings';
5
+ import './ScreenLayout.css';
6
+ import './FaceMatchLayout.css';
7
+ /** Which captured image fills a circle. The host owns the pixels (same
8
+ * contract as `camera` on the capture screens) — Face Match never captures. */
9
+ export type FaceMatchPhotoRole = 'selfie' | 'id' | 'nfc' | 'secondId';
10
+ /** Host-supplied portraits, one per role the chosen variant asks for. Any role
11
+ * left out renders an empty neutral disc. */
12
+ export type FaceMatchComparisonPhotos = Partial<Record<FaceMatchPhotoRole, ReactNode>>;
13
+ /**
14
+ * Where the comparison is in its own choreography — the module MOVING rather
15
+ * than one of the frames it passes through (FaceMatchLayout.css § "The
16
+ * comparison, moving", which carries the timeline and where its numbers come
17
+ * from).
18
+ *
19
+ * arriving The module has just opened. Title only; the discs are still
20
+ * outside the screen.
21
+ * comparing The discs travel in and are then named by their callouts.
22
+ * converged The callouts leave, and the discs run together into one and go
23
+ * with them — handing the screen to the verdict.
24
+ *
25
+ * Setting it puts the screen in its moving form, and `matching` is then ignored:
26
+ * the rosette that prop draws is a frame partway through `converged`, not a
27
+ * place the module rests.
28
+ */
29
+ export type FaceMatchComparisonPhase = 'arriving' | 'comparing' | 'converged';
30
+ export interface FaceMatchComparisonScreenProps extends Omit<PrizmaScreenShellProps, 'dark' | 'title' | 'children'> {
31
+ /** Module copy — this screen reads the `comparison` slice (+ shared labels). */
32
+ strings: FaceMatchStrings;
33
+ /** Which purple photo set to render. Default `'selfieId'`. */
34
+ variant?: FaceMatchComparisonVariant;
35
+ /** The converged state (`comparison.matching` / `comparison.threeFacesMatching`):
36
+ * the label callouts are dropped and the circles overlap into a rosette.
37
+ * A STILL — ignored once `phase` is set. */
38
+ matching?: boolean;
39
+ /** Play the comparison instead of drawing one frame of it. Absent = the still
40
+ * the Figma sections are, which is what a screen grid wants. */
41
+ phase?: FaceMatchComparisonPhase;
42
+ /** The captured portraits. Roles the variant does not use are ignored. */
43
+ photos?: FaceMatchComparisonPhotos;
44
+ screenId?: string;
45
+ overrides?: PrizmaScreenOverrides;
46
+ onAction?: PrizmaScreenActionHandler;
47
+ }
48
+ /**
49
+ * Face Match — identity comparison (Archetype A layout minus the CTA,
50
+ * GUIDELINES.md §6-A). Figma: the five purple `faceMatch.comparison.*` sections
51
+ * — `initialState` · `matching` · `nfc` · `firstAndSecondID` ·
52
+ * `threeFacesMatching` — which are photo-count / label / convergence variants of
53
+ * this ONE screen.
54
+ *
55
+ * This is the module's only genuinely new composition, and the reason Face Match
56
+ * is not a copy of Face Capture: there is no ring, no camera and no CTA. The
57
+ * purple sections' CONTENT frame holds exactly Navigation → Title → the photo
58
+ * cluster → the verified Tag (measured 390 section: nav 0→44, Title 68→96 i.e.
59
+ * the archetype's 24px nav→content gap, cluster in the flexible middle, Tag
60
+ * 616→650).
61
+ *
62
+ * Composed on the foundation shell rather than wrapping PrizmaTutorialScreen
63
+ * because that archetype always renders a CTA and these sections have none —
64
+ * foundation gap reported to the owner, no foundation file edited.
65
+ *
66
+ * TWO FORMS, one component. Without `phase` it draws a FRAME — the purple
67
+ * sections exactly as Figma has them, which is what a screen grid and an export
68
+ * still need. With `phase` it PLAYS, because Face Match has no camera and no
69
+ * control and the movement is therefore the whole screen rather than polish on
70
+ * top of it: the discs arrive from off-screen, are named, and then run together
71
+ * into one and go. That choreography, its three phases and the shipped-SDK
72
+ * numbers behind it live in FaceMatchLayout.css § "The comparison, moving".
73
+ *
74
+ * The label callouts are Core's `PrizmaTooltip` with a bottom-centred arrow. The
75
+ * module Figma draws a bespoke light pill instead (a hand-drawn boolean Union,
76
+ * not a Tooltip instance); the design system wins and these render as the
77
+ * canonical dark tooltip. DEVIATIONS.md #FM-21.
78
+ */
79
+ export declare const FaceMatchComparisonScreen: React.ForwardRefExoticComponent<FaceMatchComparisonScreenProps & React.RefAttributes<HTMLDivElement>>;
80
+ export default FaceMatchComparisonScreen;