@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,31 @@
1
+ import React from 'react';
2
+ import { type PrizmaListScreenProps } from './ListScreen';
3
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
4
+ import type { VideoSelfieStrings } from './VideoSelfieStrings';
5
+ import './ScreenLayout.css';
6
+ export interface VideoSelfieRetryScreenProps extends Omit<PrizmaListScreenProps, 'status' | 'title' | 'subtitle' | 'children' | 'ctaLabel' | 'secondaryCtaLabel' | 'linkLabel' | 'verifiedLabel' | 'navLabel'> {
7
+ /** Module copy — this screen reads the `errors.retry` slice. */
8
+ strings: VideoSelfieStrings;
9
+ screenId?: string;
10
+ overrides?: PrizmaScreenOverrides;
11
+ onAction?: PrizmaScreenActionHandler;
12
+ }
13
+ /**
14
+ * Video Selfie — the recoverable "something went wrong" with the coaching list,
15
+ * built on the List archetype (GUIDELINES.md §6-G). Figma: purple section
16
+ * `video selfie - general errors 14.1 - retry`.
17
+ *
18
+ * The one section of group 14 that is NOT archetype F: the middle is a numbered
19
+ * list of three things to do differently, spanning the column from the top,
20
+ * which is exactly the distinction `ScreenLayout.css` draws between `__flex`
21
+ * (centred illustration) and `__list`. The rows are Core's `PrizmaList`
22
+ * (`variant="circles"`) verbatim, and the Spacing/24 above them is the
23
+ * archetype's.
24
+ *
25
+ * The title carries no status mark — Figma draws the bare H2 here, unlike its
26
+ * three sibling errors — so the archetype's default `status="none"` stands.
27
+ * Chrome follows the module's error family (owner rule `#PI-8` / `#F-34`):
28
+ * header and tag both stay.
29
+ */
30
+ export declare const VideoSelfieRetryScreen: React.ForwardRefExoticComponent<VideoSelfieRetryScreenProps & React.RefAttributes<HTMLDivElement>>;
31
+ export default VideoSelfieRetryScreen;
@@ -0,0 +1,32 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { forwardRef } from 'react';
4
+ import { PrizmaListItem } from '@incodetech/prizma-core-web/list';
5
+ import { PrizmaListScreen } from './ListScreen';
6
+ import './ScreenLayout.css';
7
+ /**
8
+ * Video Selfie — the recoverable "something went wrong" with the coaching list,
9
+ * built on the List archetype (GUIDELINES.md §6-G). Figma: purple section
10
+ * `video selfie - general errors 14.1 - retry`.
11
+ *
12
+ * The one section of group 14 that is NOT archetype F: the middle is a numbered
13
+ * list of three things to do differently, spanning the column from the top,
14
+ * which is exactly the distinction `ScreenLayout.css` draws between `__flex`
15
+ * (centred illustration) and `__list`. The rows are Core's `PrizmaList`
16
+ * (`variant="circles"`) verbatim, and the Spacing/24 above them is the
17
+ * archetype's.
18
+ *
19
+ * The title carries no status mark — Figma draws the bare H2 here, unlike its
20
+ * three sibling errors — so the archetype's default `status="none"` stands.
21
+ * Chrome follows the module's error family (owner rule `#PI-8` / `#F-34`):
22
+ * header and tag both stay.
23
+ */
24
+ export const VideoSelfieRetryScreen = forwardRef(({ strings, screenId = 'video-selfie-error-retry', overrides, onAction, ...shell }, ref) => {
25
+ const slice = strings.errors.retry;
26
+ return (_jsx(PrizmaListScreen, { ref: ref, title: slice.title, ctaLabel: slice.ctaLabel, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId,
27
+ /* Left-aligned, like `2.5`/`2.6`: a centred headline above a
28
+ left-led numbered list reads as a mistake (#VS-14). */
29
+ overrides: { align: 'left', ...overrides }, onAction: onAction, ...shell, children: _jsx("ol", { className: "video-selfie-steps__rows", children: slice.tips.map((tip, i) => (_jsx("li", { children: _jsx(PrizmaListItem, { variant: "number", number: i + 1, label: tip }) }, i))) }) }));
30
+ });
31
+ VideoSelfieRetryScreen.displayName = 'VideoSelfieRetryScreen';
32
+ export default VideoSelfieRetryScreen;
@@ -0,0 +1,52 @@
1
+ import React, { type ReactNode } from 'react';
2
+ import { type PrizmaCaptureScreenProps } from './CaptureScreen';
3
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
4
+ import type { VideoSelfieFeedbackKind, VideoSelfieStrings } from './VideoSelfieStrings';
5
+ import './ScreenLayout.css';
6
+ /** Which purple liveness section to render (group 8). */
7
+ export type VideoSelfieSelfieState = 'start' | 'processing' | 'success' | 'failed';
8
+ export interface VideoSelfieSelfieCaptureScreenProps extends Omit<PrizmaCaptureScreenProps, 'state' | 'feedbackText' | 'statusLabels' | 'verifiedLabel' | 'navLabel'> {
9
+ /** Module copy — this screen reads the `selfieCapture` slice. */
10
+ strings: VideoSelfieStrings;
11
+ /** Which purple section of group 8 to render. Default `start`. */
12
+ state?: VideoSelfieSelfieState;
13
+ /**
14
+ * Which of group 9's ELEVEN live-feedback lines to show under the ring.
15
+ * Only meaningful while the ring is live (`state="start"`): the sections of
16
+ * group 9 are that same frame with a different instruction. Omit for `8.0`,
17
+ * which shows the plain "Look at your front camera" line.
18
+ */
19
+ feedback?: VideoSelfieFeedbackKind;
20
+ /** Live camera feed (<video>) or sample still (<img>). */
21
+ camera?: ReactNode;
22
+ screenId?: string;
23
+ overrides?: PrizmaScreenOverrides;
24
+ onAction?: PrizmaScreenActionHandler;
25
+ }
26
+ /**
27
+ * Video Selfie — the liveness ring (Archetype B, GUIDELINES.md §6-B).
28
+ * ONE screen for FIFTEEN purple sections: `selfie capture 8.0–8.3` and every
29
+ * `selfie capture feedback 9.1–9.11` message. They are `state` × `feedbackText`
30
+ * variants of Core's `PrizmaSelfieCapture`, which owns the ring, the
31
+ * silhouette, the ring offset (40), the instruction gap (32), the instruction
32
+ * typography and every verdict treatment. None of it is re-implemented (§7),
33
+ * and this file declares no layout at all.
34
+ *
35
+ * **Figma vs Core — Core wins, reported.** These sections draw the camera
36
+ * FULL-BLEED behind a scrimmed ring, on a black surface. Core's
37
+ * `PrizmaSelfieCapture` puts the feed inside the ring's circular window on a
38
+ * light surface, and pins light while the feed is open on purpose — "the
39
+ * capture screen stays WHITE in both modes, light is needed for the shot"
40
+ * (owner decision 2026-07-14, DEVIATIONS #F-27). Reshaping it here would mean
41
+ * re-implementing a Core primitive with a second full-bleed recipe, so the
42
+ * screen ships Core's treatment and the divergence is logged, exactly as the
43
+ * Face Capture pilot settled it.
44
+ *
45
+ * Figma also draws the journey stepper at the top of all fifteen sections.
46
+ * Archetype B has no slot for it and this module does not hand-roll one —
47
+ * reported. Nothing collapses without it: the four states and the eleven
48
+ * messages already render distinctly through Core's own ring treatments and
49
+ * instruction copy.
50
+ */
51
+ export declare const VideoSelfieSelfieCaptureScreen: React.ForwardRefExoticComponent<VideoSelfieSelfieCaptureScreenProps & React.RefAttributes<HTMLDivElement>>;
52
+ export default VideoSelfieSelfieCaptureScreen;
@@ -0,0 +1,58 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { forwardRef } from 'react';
4
+ import { PrizmaCaptureScreen } from './CaptureScreen';
5
+ import './ScreenLayout.css';
6
+ /** Purple state → Core `PrizmaSelfieCapture` state. Core models the in-flight
7
+ * and verdict beats as capture STATES — the ring dissolves into the spinner or
8
+ * the status mark in its own slot (DEVIATIONS #11) — so all four are one
9
+ * archetype call, not a separate processing screen. */
10
+ const CAPTURE_STATE = {
11
+ start: 'ready',
12
+ processing: 'uploading',
13
+ success: 'success',
14
+ failed: 'error',
15
+ };
16
+ /**
17
+ * Video Selfie — the liveness ring (Archetype B, GUIDELINES.md §6-B).
18
+ * ONE screen for FIFTEEN purple sections: `selfie capture 8.0–8.3` and every
19
+ * `selfie capture feedback 9.1–9.11` message. They are `state` × `feedbackText`
20
+ * variants of Core's `PrizmaSelfieCapture`, which owns the ring, the
21
+ * silhouette, the ring offset (40), the instruction gap (32), the instruction
22
+ * typography and every verdict treatment. None of it is re-implemented (§7),
23
+ * and this file declares no layout at all.
24
+ *
25
+ * **Figma vs Core — Core wins, reported.** These sections draw the camera
26
+ * FULL-BLEED behind a scrimmed ring, on a black surface. Core's
27
+ * `PrizmaSelfieCapture` puts the feed inside the ring's circular window on a
28
+ * light surface, and pins light while the feed is open on purpose — "the
29
+ * capture screen stays WHITE in both modes, light is needed for the shot"
30
+ * (owner decision 2026-07-14, DEVIATIONS #F-27). Reshaping it here would mean
31
+ * re-implementing a Core primitive with a second full-bleed recipe, so the
32
+ * screen ships Core's treatment and the divergence is logged, exactly as the
33
+ * Face Capture pilot settled it.
34
+ *
35
+ * Figma also draws the journey stepper at the top of all fifteen sections.
36
+ * Archetype B has no slot for it and this module does not hand-roll one —
37
+ * reported. Nothing collapses without it: the four states and the eleven
38
+ * messages already render distinctly through Core's own ring treatments and
39
+ * instruction copy.
40
+ */
41
+ export const VideoSelfieSelfieCaptureScreen = forwardRef(({ strings, state = 'start', feedback, camera, screenId = `video-selfie-selfie-capture-${feedback ?? state}`, overrides, onAction, ...shell }, ref) => {
42
+ const slice = strings.selfieCapture;
43
+ /* The live ring carries an instruction; the in-flight and verdict beats
44
+ carry Core's own status copy instead (its `statusLabels` slot), which is
45
+ why the feedback line is scoped to the live state. */
46
+ const feedbackText = CAPTURE_STATE[state] === 'ready'
47
+ ? feedback
48
+ ? slice.feedback[feedback]
49
+ : slice.startLabel
50
+ : undefined;
51
+ return (_jsx(PrizmaCaptureScreen, { ref: ref, state: CAPTURE_STATE[state], cameraOpen: state === 'start', camera: camera, feedbackText: feedbackText, statusLabels: {
52
+ uploading: slice.processingLabel,
53
+ success: slice.successLabel,
54
+ error: slice.failedLabel,
55
+ }, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell }));
56
+ });
57
+ VideoSelfieSelfieCaptureScreen.displayName = 'VideoSelfieSelfieCaptureScreen';
58
+ export default VideoSelfieSelfieCaptureScreen;
@@ -0,0 +1,64 @@
1
+ import React, { type ReactNode } from 'react';
2
+ import { type PrizmaScreenShellProps } from './ScreenShell';
3
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
4
+ import type { VideoSelfieDocumentType, VideoSelfieSpeakFamily, VideoSelfieStrings } from './VideoSelfieStrings';
5
+ import './ScreenLayout.css';
6
+ import './ViewfinderScreen.css';
7
+ import './VideoSelfieLayout.css';
8
+ /** Which purple section of groups 10 / 11 to render. */
9
+ export type VideoSelfieSpeakStage = 'idle' | 'recording' | 'processing' | 'success' | 'confirm';
10
+ export interface VideoSelfieSpeakScreenProps extends Omit<PrizmaScreenShellProps, 'dark' | 'title' | 'children'> {
11
+ /** Module copy — this screen reads the `speak` slice. */
12
+ strings: VideoSelfieStrings;
13
+ /** Which prompt family: the consent sentence (group 10) or the identity
14
+ * questions (group 11). Default `voiceConsent`. */
15
+ family?: VideoSelfieSpeakFamily;
16
+ /** Which prompt of the family to show. Default `0`. */
17
+ promptIndex?: number;
18
+ /** Which purple section to render. Default `idle`. */
19
+ stage?: VideoSelfieSpeakStage;
20
+ /** Which document the journey collects — the Stepper's own `documentType`. */
21
+ documentType?: VideoSelfieDocumentType;
22
+ /** Live camera feed (<video>) or sample still (<img>). */
23
+ camera?: ReactNode;
24
+ screenId?: string;
25
+ overrides?: PrizmaScreenOverrides;
26
+ onAction?: PrizmaScreenActionHandler;
27
+ }
28
+ /**
29
+ * Video Selfie — the spoken steps. ONE screen for ELEVEN purple sections:
30
+ * `voice consent 10.0–10.4` and `questions 11.0–11.5`. The two Figma groups
31
+ * draw the identical skeleton — the live camera under Core's Modal card, the
32
+ * journey stepper on top — and differ only in which prompt the card asks and
33
+ * which beat of the stepper is lit. Two files would have been two chances to
34
+ * drift, the same reasoning `GeolocationBrowserStepsScreen` settled for its
35
+ * nine browser sections.
36
+ *
37
+ * No archetype models "a card over a live camera": archetype A's `overlay` slot
38
+ * is the closest, but its base is a tutorial, not a viewfinder. So this screen
39
+ * owns its composition the way archetype D is owned (a recipe, not a
40
+ * component), reusing the foundation's camera-surface and HUD-typography
41
+ * classes verbatim (`.prizma-viewfinder__surface` / `__content` / `__title`).
42
+ * The card itself is Core's `PrizmaModalContent` — the exact instance Figma
43
+ * names (`modal-light`) — and the scrim/panel positioning is the recipe
44
+ * Document Capture's method sheet already established (DEVIATIONS #DC-30): the
45
+ * safe presenter portals to `document.body`, which would escape the 390×844
46
+ * frame and the host's `transform: scale()`.
47
+ *
48
+ * Two divergences from the frames, both Core-wins and both reported:
49
+ *
50
+ * - **Eyebrow position.** Figma stacks "Please say out loud" ABOVE the prompt.
51
+ * Core's Modal renders `subtitle` BELOW `title` and has no eyebrow slot, so
52
+ * the eyebrow ships as the subtitle.
53
+ * - **Leading media.** Figma puts the spinner / verdict mark ABOVE the label on
54
+ * the `processing` and `success` cards. Core's Modal renders `body` and
55
+ * `image` after the heading; a Core `leading` slot is requested.
56
+ *
57
+ * Every stage renders differently: `idle` draws the outlined "Tap to answer",
58
+ * `recording` swaps it for the filled "Tap when done" AND lights the sound-wave
59
+ * HUD over the camera, `processing` replaces the card body with Core's spinner,
60
+ * `success` with the verdict mark, and `confirm` dims the whole screen behind a
61
+ * centred two-button dialog.
62
+ */
63
+ export declare const VideoSelfieSpeakScreen: React.ForwardRefExoticComponent<VideoSelfieSpeakScreenProps & React.RefAttributes<HTMLDivElement>>;
64
+ export default VideoSelfieSpeakScreen;
@@ -0,0 +1,95 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { forwardRef } from 'react';
4
+ import { IconSoundWave, IconStatusPositive } from '@incodetech/prizma-core-icons';
5
+ import { PrizmaLoadingSpinner } from '@incodetech/prizma-core-web/loading-spinner';
6
+ import { PrizmaModalContent } from '@incodetech/prizma-core-web/modal';
7
+ import { PrizmaStepper } from '@incodetech/prizma-core-web/stepper';
8
+ import { PrizmaScreenShell } from './ScreenShell';
9
+ import './ScreenLayout.css';
10
+ import './ViewfinderScreen.css';
11
+ import './VideoSelfieLayout.css';
12
+ /** Which beat of the seven-step journey each spoken family occupies — the
13
+ * questions are step 6, the consent sentence is the last one. */
14
+ const STEP = { question: 6, voiceConsent: 7 };
15
+ /**
16
+ * Video Selfie — the spoken steps. ONE screen for ELEVEN purple sections:
17
+ * `voice consent 10.0–10.4` and `questions 11.0–11.5`. The two Figma groups
18
+ * draw the identical skeleton — the live camera under Core's Modal card, the
19
+ * journey stepper on top — and differ only in which prompt the card asks and
20
+ * which beat of the stepper is lit. Two files would have been two chances to
21
+ * drift, the same reasoning `GeolocationBrowserStepsScreen` settled for its
22
+ * nine browser sections.
23
+ *
24
+ * No archetype models "a card over a live camera": archetype A's `overlay` slot
25
+ * is the closest, but its base is a tutorial, not a viewfinder. So this screen
26
+ * owns its composition the way archetype D is owned (a recipe, not a
27
+ * component), reusing the foundation's camera-surface and HUD-typography
28
+ * classes verbatim (`.prizma-viewfinder__surface` / `__content` / `__title`).
29
+ * The card itself is Core's `PrizmaModalContent` — the exact instance Figma
30
+ * names (`modal-light`) — and the scrim/panel positioning is the recipe
31
+ * Document Capture's method sheet already established (DEVIATIONS #DC-30): the
32
+ * safe presenter portals to `document.body`, which would escape the 390×844
33
+ * frame and the host's `transform: scale()`.
34
+ *
35
+ * Two divergences from the frames, both Core-wins and both reported:
36
+ *
37
+ * - **Eyebrow position.** Figma stacks "Please say out loud" ABOVE the prompt.
38
+ * Core's Modal renders `subtitle` BELOW `title` and has no eyebrow slot, so
39
+ * the eyebrow ships as the subtitle.
40
+ * - **Leading media.** Figma puts the spinner / verdict mark ABOVE the label on
41
+ * the `processing` and `success` cards. Core's Modal renders `body` and
42
+ * `image` after the heading; a Core `leading` slot is requested.
43
+ *
44
+ * Every stage renders differently: `idle` draws the outlined "Tap to answer",
45
+ * `recording` swaps it for the filled "Tap when done" AND lights the sound-wave
46
+ * HUD over the camera, `processing` replaces the card body with Core's spinner,
47
+ * `success` with the verdict mark, and `confirm` dims the whole screen behind a
48
+ * centred two-button dialog.
49
+ */
50
+ export const VideoSelfieSpeakScreen = forwardRef(({ strings, family = 'voiceConsent', promptIndex = 0, stage = 'idle', documentType = 'id', camera, screenId = `video-selfie-${family}-${stage}`, overrides, onAction, className, ...shell }, ref) => {
51
+ const slice = strings.speak[family];
52
+ const prompt = slice.prompts[promptIndex] ?? slice.prompts[0] ?? '';
53
+ const isConfirm = stage === 'confirm';
54
+ const card = isConfirm ? (_jsx(PrizmaModalContent, { title: slice.confirm.title, subtitle: slice.confirm.subtitle, showCloseIcon: false, buttonGroupProps: {
55
+ orientation: 'vertical-v1',
56
+ showPrimary: true,
57
+ showSecondary: true,
58
+ primaryLabel: slice.confirm.ctaLabel,
59
+ onPrimaryClick: () => onAction?.({ type: 'cta', screenId }),
60
+ secondaryLabel: slice.confirm.retryLabel,
61
+ onSecondaryClick: () => onAction?.({ type: 'secondary', screenId }),
62
+ } })) : stage === 'processing' ? (_jsx(PrizmaModalContent, { title: slice.processingLabel, showButtonGroup: false, closeLabel: slice.closeLabel, onClose: () => onAction?.({ type: 'tertiary', screenId }), body: _jsx(PrizmaLoadingSpinner, { loadingLabel: slice.processingLabel }) })) : stage === 'success' ? (_jsx(PrizmaModalContent, { title: slice.successLabel, showButtonGroup: false, closeLabel: slice.closeLabel, onClose: () => onAction?.({ type: 'tertiary', screenId }), body: _jsx("span", { className: "video-selfie-sheet-status", children: _jsx(IconStatusPositive, { size: "xl" }) }) })) : (_jsx(PrizmaModalContent, { title: prompt, subtitle: slice.eyebrow,
63
+ /* No dismiss ✕ on the record step: the sheet IS the step, and closing it
64
+ would strand the user mid-recording with no way back into the flow
65
+ (owner-reported 2026-08-19). The confirm sheet already suppressed it;
66
+ this is the same call, applied consistently. DEVIATIONS #VS-5. */
67
+ showCloseIcon: false, buttonGroupProps: stage === 'recording'
68
+ ? {
69
+ orientation: 'vertical-v1',
70
+ showPrimary: true,
71
+ showSecondary: false,
72
+ primaryLabel: slice.recordingCtaLabel,
73
+ onPrimaryClick: () => onAction?.({ type: 'cta', screenId }),
74
+ }
75
+ : {
76
+ orientation: 'vertical-v1',
77
+ showPrimary: false,
78
+ showSecondary: true,
79
+ secondaryLabel: slice.idleCtaLabel,
80
+ onSecondaryClick: () => onAction?.({ type: 'cta', screenId }),
81
+ } }));
82
+ return (_jsxs(PrizmaScreenShell, { ref: ref, dark: true, className: className, ...shell, children: [_jsx("div", { className: "prizma-viewfinder__surface", children: camera }), _jsx("div", { className: "video-selfie-stepper", children: _jsx(PrizmaStepper, { steps: 7, currentState: STEP[family], documentType: documentType, completedValueText: strings.stepperCompletedLabel }) }), _jsx("div", { className: [
83
+ 'prizma-viewfinder__content',
84
+ overrides?.align === 'left' ? 'prizma-viewfinder__content--left' : '',
85
+ ]
86
+ .filter(Boolean)
87
+ .join(' '), children: _jsx("div", { className: "video-selfie-band", children: stage === 'recording' ? (_jsxs("span", { className: "video-selfie-recording", children: [_jsx(IconSoundWave, { size: "xl" }), _jsx("span", { className: "prizma-viewfinder__title", children: slice.recordingLabel })] })) : null }) }), isConfirm ? (_jsx("div", { className: "video-selfie-sheet-scrim", "aria-hidden": "true" })) : null, _jsx("div", { "data-prizma-theme": "light", className: [
88
+ 'video-selfie-sheet-panel',
89
+ isConfirm ? 'video-selfie-sheet-panel--centered' : '',
90
+ ]
91
+ .filter(Boolean)
92
+ .join(' '), children: card })] }));
93
+ });
94
+ VideoSelfieSpeakScreen.displayName = 'VideoSelfieSpeakScreen';
95
+ export default VideoSelfieSpeakScreen;
@@ -0,0 +1,196 @@
1
+ /** Which document the journey is collecting — drives the tutorial row list
2
+ * and Core's `PrizmaStepper` icon sequence. */
3
+ export type VideoSelfieDocumentType = 'id' | 'passport';
4
+ /** One icon + label row of the tutorial's "you'll be requested to" list. */
5
+ export interface VideoSelfieTutorialRow {
6
+ /** Which canonical bank glyph leads the row. */
7
+ kind: VideoSelfieTutorialRowKind;
8
+ label: string;
9
+ }
10
+ /**
11
+ * The seven beats of the journey, in Figma order. They double as the icon keys
12
+ * for the tutorial rows — the same seven glyphs Core's `PrizmaStepper` uses
13
+ * (its icon set is documented as "the Video Selfie sequence").
14
+ */
15
+ export type VideoSelfieTutorialRowKind = 'recording' | 'idFront' | 'idBack' | 'passport' | 'frontCamera' | 'waveHand' | 'questions' | 'speak';
16
+ /** The eleven live-feedback messages of group 9, in Figma order. */
17
+ export type VideoSelfieFeedbackKind = 'dark' | 'blurry' | 'maskDetected' | 'glassesDetected' | 'headTilted' | 'lookAtCamera' | 'turnRight' | 'turnLeft' | 'alignFace' | 'moveCloser' | 'moveAway';
18
+ /** Which face of the document the ID stage is on (groups 3 and 5). */
19
+ export type VideoSelfieIdSide = 'front' | 'back';
20
+ /** Why an ID read was rejected (group 6, the `.1`–`.4` variants). */
21
+ /**
22
+ * REMOVED (2026-08-19). A rejection-REASON axis (`scanFailed | name | photo |
23
+ * typeMismatch`) was invented: group 6 draws exactly FOUR sections —
24
+ * `6.1.1`/`6.2.1` (front try-again / failed) and `6.3.1`/`6.4.1` (back) — with
25
+ * no reason axis at all, so the four kinds multiplied the gallery to 16 error
26
+ * cards where the spec has 4. Severity is the only real axis. DEVIATIONS #VS-1.
27
+ */
28
+ /** Whether the rejection invites a retry (`6.1` / `6.3`) or is terminal
29
+ * (`6.2` / `6.4`). */
30
+ export type VideoSelfieIdErrorSeverity = 'tryAgain' | 'failed';
31
+ /** Which prompt family the speak step is running: the consent sentence
32
+ * (group 10) or one of the identity questions (group 11). */
33
+ export type VideoSelfieSpeakFamily = 'voiceConsent' | 'question';
34
+ /**
35
+ * Which device family the settings walk-through documents. The purple section
36
+ * `permissions 2.5 - camera access instructions` holds TWO Incode-drawn
37
+ * symbols, not one: `2.5 - ios` and `2.6 - android`. They are NOT the same
38
+ * screen with translated copy — Android draws a SECOND five-step numbered list
39
+ * under "Screen recording permission" where iOS draws a one-line remark, and
40
+ * adds a closing note under both lists.
41
+ */
42
+ export type VideoSelfieStepsOs = 'ios' | 'android';
43
+ /** One device variant of the OS settings walk-through (`2.5` / `2.6`). */
44
+ export interface VideoSelfieStepsStrings {
45
+ title: string;
46
+ subtitle: string;
47
+ /** Label over the first numbered list. */
48
+ microphoneTitle: string;
49
+ /** The five numbered microphone rows — different wording per OS. */
50
+ microphoneSteps: string[];
51
+ /** Label over the screen-recording section. */
52
+ recordingTitle: string;
53
+ /** iOS (`2.5`) closes the recording section with a plain remark and NO steps.
54
+ * Read only when `recordingSteps` is absent. */
55
+ recordingNote?: string;
56
+ /** Android (`2.6`) draws a SECOND numbered list here instead of the remark. */
57
+ recordingSteps?: string[];
58
+ /** Android (`2.6`) only — the closing remark under both lists. */
59
+ closingNote?: string;
60
+ ctaLabel: string;
61
+ }
62
+ export interface VideoSelfieSpeakStrings {
63
+ /** Small line above the prompt ("Please say out loud"). */
64
+ eyebrow: string;
65
+ /** The sentences/questions the user must speak, in Figma order. */
66
+ prompts: string[];
67
+ /** CTA before recording starts. */
68
+ idleCtaLabel: string;
69
+ /** CTA while recording. */
70
+ recordingCtaLabel: string;
71
+ /** HUD line over the camera while recording ("Recording…"). */
72
+ recordingLabel: string;
73
+ /** In-flight card copy. */
74
+ processingLabel: string;
75
+ /** Accepted card copy. */
76
+ successLabel: string;
77
+ /** Accessible name for the card's dismiss control. */
78
+ closeLabel: string;
79
+ /** The "Finished speaking?" confirmation dialog (10.4). */
80
+ confirm: {
81
+ title: string;
82
+ subtitle: string;
83
+ ctaLabel: string;
84
+ retryLabel: string;
85
+ };
86
+ }
87
+ export interface VideoSelfieStrings {
88
+ /** Accessible name for the nav region. */
89
+ navLabel: string;
90
+ /** "verified by" attribution copy for the footer tag. */
91
+ verifiedLabel: string;
92
+ /** Accessible name Core's Stepper announces when the journey is done. */
93
+ stepperCompletedLabel: string;
94
+ /** Group 1 — tutorial (`1.0` id · `1.2` passport). */
95
+ tutorial: {
96
+ title: string;
97
+ subtitle: string;
98
+ ctaLabel: string;
99
+ /** Row list per document type — the two purple variants. */
100
+ rows: Record<VideoSelfieDocumentType, VideoSelfieTutorialRow[]>;
101
+ };
102
+ /** Group 2 — permissions. */
103
+ permission: {
104
+ /** `2.0` — the in-page request. */
105
+ request: {
106
+ title: string;
107
+ subtitle: string;
108
+ ctaLabel: string;
109
+ learnMoreLabel: string;
110
+ };
111
+ /** `2.2` — permission refused / required. */
112
+ required: {
113
+ title: string;
114
+ rows: string[];
115
+ ctaLabel: string;
116
+ quitLabel: string;
117
+ };
118
+ /** `2.5` / `2.6` — the OS settings walk-through, one entry per device
119
+ * family. Both symbols live inside the SAME purple section. */
120
+ steps: Record<VideoSelfieStepsOs, VideoSelfieStepsStrings>;
121
+ };
122
+ /** Groups 3 · 5 · 6 — the document stage. */
123
+ idCapture: {
124
+ /** In-flight label under the frame (`3.2` / `5.2`). */
125
+ processingLabel: string;
126
+ /** Accepted label (`3.3` / `5.3`). */
127
+ successLabel: string;
128
+ /** Rejection copy, keyed reason → severity (group 6). */
129
+ /** Rejection copy per severity (group 6: try-again vs failed). */
130
+ errors: Record<VideoSelfieIdErrorSeverity, string>;
131
+ };
132
+ /** Group 4 — the flip interstitial. */
133
+ flipId: {
134
+ title: string;
135
+ };
136
+ /** Group 7 — the camera swap interstitial. */
137
+ flipCamera: {
138
+ title: string;
139
+ };
140
+ /** Groups 8 · 9 — the liveness ring. */
141
+ selfieCapture: {
142
+ /** `8.0` instruction. */
143
+ startLabel: string;
144
+ /** `8.1` in-flight. */
145
+ processingLabel: string;
146
+ /** `8.2` accepted. */
147
+ successLabel: string;
148
+ /** `8.3` rejected. */
149
+ failedLabel: string;
150
+ /** Group 9 — the eleven live-feedback lines. */
151
+ feedback: Record<VideoSelfieFeedbackKind, string>;
152
+ };
153
+ /** Groups 10 · 11 — the spoken steps. */
154
+ speak: Record<VideoSelfieSpeakFamily, VideoSelfieSpeakStrings>;
155
+ /** Group 12. */
156
+ processing: {
157
+ title: string;
158
+ subtitle: string;
159
+ };
160
+ /** Group 13. */
161
+ success: {
162
+ title: string;
163
+ };
164
+ /** Group 14 — the generic errors. */
165
+ errors: {
166
+ /** `14.0` — the module could not process the recording. */
167
+ processingFailed: {
168
+ title: string;
169
+ subtitle: string;
170
+ ctaLabel: string;
171
+ };
172
+ /** `14.1` — recoverable, with the "how to do better" list. */
173
+ retry: {
174
+ title: string;
175
+ tips: string[];
176
+ ctaLabel: string;
177
+ };
178
+ /** `14.2` — a single step blew up (drawn on the dark camera surface). */
179
+ stepError: {
180
+ title: string;
181
+ ctaLabel: string;
182
+ };
183
+ /** `14.3` — the whole module blew up. */
184
+ moduleError: {
185
+ title: string;
186
+ ctaLabel: string;
187
+ quitLabel: string;
188
+ };
189
+ /** `14.4` — connectivity. */
190
+ noConnection: {
191
+ title: string;
192
+ ctaLabel: string;
193
+ quitLabel: string;
194
+ };
195
+ };
196
+ }
@@ -0,0 +1,14 @@
1
+ // Video Selfie — module copy contract.
2
+ //
3
+ // Every string the module's screens render arrives through this shape: the
4
+ // screens themselves ship NO English (GUIDELINES.md §9, same rule as
5
+ // prizma-core-web). Figma: `🎥 Video selfie - Screens specs & behavior`
6
+ // (X1clC8Sf8V0vJ1CbD61VJu, page 2013:23309) — 14 numbered groups holding 54
7
+ // purple spec sections.
8
+ //
9
+ // The slice names track the Figma group numbers so a designer can go from a
10
+ // frame to a key without a translation table:
11
+ // tutorial (1) · permission (2) · idCapture (3 · 5 · 6) · flipId (4) ·
12
+ // flipCamera (7) · selfieCapture (8 · 9) · speak (10 · 11) ·
13
+ // processing (12) · success (13) · errors (14).
14
+ export {};
@@ -0,0 +1,25 @@
1
+ import React from 'react';
2
+ import { type PrizmaProcessingScreenProps } from './ProcessingScreen';
3
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
4
+ import type { VideoSelfieStrings } from './VideoSelfieStrings';
5
+ import './ScreenLayout.css';
6
+ export interface VideoSelfieSuccessScreenProps extends Omit<PrizmaProcessingScreenProps, 'status' | 'title' | 'subtitle' | 'verifiedLabel' | 'navLabel'> {
7
+ /** Module copy — this screen reads the `success` slice. */
8
+ strings: VideoSelfieStrings;
9
+ screenId?: string;
10
+ overrides?: PrizmaScreenOverrides;
11
+ onAction?: PrizmaScreenActionHandler;
12
+ }
13
+ /**
14
+ * Video Selfie — the module's verdict, built on the Processing archetype
15
+ * (GUIDELINES.md §6-C). Figma: purple section `video selfie - success
16
+ * 13.0 - default`.
17
+ *
18
+ * The same skeleton as the processing screen with the spinner swapped for
19
+ * Core's positive status mark and no supporting line — which is precisely the
20
+ * `status` axis archetype C already models, so the two screens cannot drift
21
+ * apart. Still archetype C rather than F: the section carries no button at all
22
+ * (the host advances the flow).
23
+ */
24
+ export declare const VideoSelfieSuccessScreen: React.ForwardRefExoticComponent<VideoSelfieSuccessScreenProps & React.RefAttributes<HTMLDivElement>>;
25
+ export default VideoSelfieSuccessScreen;
@@ -0,0 +1,19 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { forwardRef } from 'react';
4
+ import { PrizmaProcessingScreen, } from './ProcessingScreen';
5
+ import './ScreenLayout.css';
6
+ /**
7
+ * Video Selfie — the module's verdict, built on the Processing archetype
8
+ * (GUIDELINES.md §6-C). Figma: purple section `video selfie - success
9
+ * 13.0 - default`.
10
+ *
11
+ * The same skeleton as the processing screen with the spinner swapped for
12
+ * Core's positive status mark and no supporting line — which is precisely the
13
+ * `status` axis archetype C already models, so the two screens cannot drift
14
+ * apart. Still archetype C rather than F: the section carries no button at all
15
+ * (the host advances the flow).
16
+ */
17
+ export const VideoSelfieSuccessScreen = forwardRef(({ strings, screenId = 'video-selfie-success', showHeader = true, overrides, onAction, ...shell }, ref) => (_jsx(PrizmaProcessingScreen, { ref: ref, showHeader: showHeader, status: "success", title: strings.success.title, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell })));
18
+ VideoSelfieSuccessScreen.displayName = 'VideoSelfieSuccessScreen';
19
+ export default VideoSelfieSuccessScreen;
@@ -0,0 +1,33 @@
1
+ import React from 'react';
2
+ import { type PrizmaListScreenProps } from './ListScreen';
3
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
4
+ import type { VideoSelfieDocumentType, VideoSelfieStrings } from './VideoSelfieStrings';
5
+ import './ScreenLayout.css';
6
+ export interface VideoSelfieTutorialScreenProps extends Omit<PrizmaListScreenProps, 'status' | 'title' | 'subtitle' | 'children' | 'ctaLabel' | 'secondaryCtaLabel' | 'linkLabel' | 'verifiedLabel' | 'navLabel'> {
7
+ /** Module copy — this screen reads the `tutorial` slice. */
8
+ strings: VideoSelfieStrings;
9
+ /** Which purple tutorial section: `1.0` (id) or `1.2` (passport). Default
10
+ * `id`. The two differ ONLY in the row list — the passport journey collects
11
+ * one photo page instead of a front and a back. */
12
+ documentType?: VideoSelfieDocumentType;
13
+ screenId?: string;
14
+ overrides?: PrizmaScreenOverrides;
15
+ onAction?: PrizmaScreenActionHandler;
16
+ }
17
+ /**
18
+ * Video Selfie — tutorial, built on the List archetype (GUIDELINES.md §6-G,
19
+ * `PrizmaListScreen`). Figma: purple sections `video selfie - tutorial 1.0`
20
+ * and `1.2 - with passport`.
21
+ *
22
+ * The screen is a title block over a promise list and one CTA, which is exactly
23
+ * archetype G: the rows are Core's `PrizmaListItem` (`icon-m`) verbatim (only
24
+ * the leading glyph is chosen here, from `ROW_ICONS`), the Spacing/24 above the
25
+ * list is the archetype's `__list`, and the band is the archetype's. This file
26
+ * declares no layout of its own.
27
+ *
28
+ * NOT archetype A: A centres one illustration in the flexible middle; here the
29
+ * middle is a seven-row list that must span the column and start at the top —
30
+ * the distinction `ScreenLayout.css` draws between `__flex` and `__list`.
31
+ */
32
+ export declare const VideoSelfieTutorialScreen: React.ForwardRefExoticComponent<VideoSelfieTutorialScreenProps & React.RefAttributes<HTMLDivElement>>;
33
+ export default VideoSelfieTutorialScreen;