@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,88 @@
1
+ import React, { forwardRef } from 'react';
2
+ import { IconCameraFlip } from '@incodetech/prizma-core-icons';
3
+ import { PrizmaResultScreen, type PrizmaResultScreenProps } from './ResultScreen';
4
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
5
+ import type { VideoSelfieStrings } from './VideoSelfieStrings';
6
+ import './ScreenLayout.css';
7
+
8
+ export interface VideoSelfieFlipCameraScreenProps
9
+ extends Omit<
10
+ PrizmaResultScreenProps,
11
+ 'status' | 'title' | 'subtitle' | 'children' | 'verifiedLabel' | 'navLabel'
12
+ > {
13
+ /** Module copy — this screen reads the `flipCamera` slice. */
14
+ strings: VideoSelfieStrings;
15
+ screenId?: string;
16
+ overrides?: PrizmaScreenOverrides;
17
+ onAction?: PrizmaScreenActionHandler;
18
+ }
19
+
20
+ /**
21
+ * Video Selfie — the camera-swap interstitial, built on the Result archetype
22
+ * (GUIDELINES.md §6-F). Figma: purple section `video selfie - flip camera
23
+ * 7.0 - switch to front`.
24
+ *
25
+ * The sibling of the flip-ID screen and deliberately its opposite: the camera
26
+ * is still open, so the section is drawn on the DARK surface with white copy.
27
+ * The archetype takes `theme="dark"` straight from `PrizmaScreenShell` — the
28
+ * same switch `DocumentCaptureCaptureScreen` uses — so the Title and every
29
+ * other token-bound child flips THROUGH the design system rather than around it
30
+ * (DEVIATIONS #DC-32). No hardcoded white anywhere.
31
+ *
32
+ * The mark is the canonical bank's `IconCameraFlip` in the archetype's own
33
+ * `glyph` slot (`PrizmaTitle.icon` only accepts status | spinner | none —
34
+ * DEVIATIONS #10), wrapped in the foundation's `__glyph` class so no module CSS
35
+ * is needed for it. No CTA and no verified tag: the section draws neither.
36
+ *
37
+ * Figma also draws the journey stepper at the top of this section. Archetype F
38
+ * has no slot for it and this module does not hand-roll one — reported.
39
+ */
40
+ export const VideoSelfieFlipCameraScreen = forwardRef<
41
+ HTMLDivElement,
42
+ VideoSelfieFlipCameraScreenProps
43
+ >(
44
+ (
45
+ {
46
+ strings,
47
+ screenId = 'video-selfie-flip-camera',
48
+ /* A camera screen (dark, feed open, stepper drawn) — the chrome
49
+ contract drops the LOGO and keeps the footer (#VS-15). */
50
+ showHeader = false,
51
+ showFooter = true,
52
+ overrides,
53
+ onAction,
54
+ ...shell
55
+ },
56
+ ref,
57
+ ) => (
58
+ <PrizmaResultScreen
59
+ ref={ref}
60
+ theme="dark"
61
+ showHeader={showHeader}
62
+ showFooter={showFooter}
63
+ glyph={
64
+ <span
65
+ className={[
66
+ 'prizma-screen-layout__glyph',
67
+ 'prizma-screen-layout__glyph--neutral',
68
+ overrides?.align === 'left' ? 'prizma-screen-layout__glyph--left' : '',
69
+ ]
70
+ .filter(Boolean)
71
+ .join(' ')}
72
+ >
73
+ <IconCameraFlip size="l" />
74
+ </span>
75
+ }
76
+ title={strings.flipCamera.title}
77
+ verifiedLabel={strings.verifiedLabel}
78
+ navLabel={strings.navLabel}
79
+ screenId={screenId}
80
+ overrides={overrides}
81
+ onAction={onAction}
82
+ {...shell}
83
+ />
84
+ ),
85
+ );
86
+ VideoSelfieFlipCameraScreen.displayName = 'VideoSelfieFlipCameraScreen';
87
+
88
+ export default VideoSelfieFlipCameraScreen;
@@ -0,0 +1,74 @@
1
+ import React, { forwardRef } from 'react';
2
+ import { PrizmaIllustrationIdFlip } from '@incodetech/prizma-core-web/illustration-id-flip';
3
+ import { PrizmaResultScreen, type PrizmaResultScreenProps } from './ResultScreen';
4
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
5
+ import type { VideoSelfieStrings } from './VideoSelfieStrings';
6
+ import './ScreenLayout.css';
7
+
8
+ export interface VideoSelfieFlipIdScreenProps
9
+ extends Omit<
10
+ PrizmaResultScreenProps,
11
+ 'status' | 'title' | 'subtitle' | 'children' | 'verifiedLabel' | 'navLabel'
12
+ > {
13
+ /** Module copy — this screen reads the `flipId` slice. */
14
+ strings: VideoSelfieStrings;
15
+ screenId?: string;
16
+ overrides?: PrizmaScreenOverrides;
17
+ onAction?: PrizmaScreenActionHandler;
18
+ }
19
+
20
+ /**
21
+ * Video Selfie — the flip interstitial between the two document sides, built on
22
+ * the Result archetype (GUIDELINES.md §6-F). Figma: purple section
23
+ * `video selfie - flip id 4.0 - default`.
24
+ *
25
+ * The module's shortest screen and the one moment the camera closes: a bare H2
26
+ * over the spinning-card artwork, no logo, no CTA (the flow advances itself),
27
+ * no verified tag and — alone among the camera-adjacent sections — no stepper.
28
+ * The archetype covers it exactly: `status="none"` for the bare title, the
29
+ * artwork in `children`, no `ctaLabel` so no band renders, `showHeader={true}`
30
+ * to drop the logo while still reserving the nav row so the offsets match every
31
+ * other screen (owner rule 2026-08-18), and `showFooter={true}` — the chrome is constant (#PI-8/#F-34) — because the
32
+ * section draws no tag.
33
+ *
34
+ * The artwork is Core's `PrizmaIllustrationIdFlip` in its `interstitial`
35
+ * variant — the card spinning inside the static circular arrows, exactly what
36
+ * this moment was designed for. Never redrawn here (§7, §10). Identical
37
+ * treatment to `IdCaptureFlipScreen`, which is the point: the same beat looks
38
+ * the same in every module.
39
+ */
40
+ export const VideoSelfieFlipIdScreen = forwardRef<
41
+ HTMLDivElement,
42
+ VideoSelfieFlipIdScreenProps
43
+ >(
44
+ (
45
+ {
46
+ strings,
47
+ screenId = 'video-selfie-flip-id',
48
+ showHeader = true,
49
+ showFooter = true,
50
+ overrides,
51
+ onAction,
52
+ ...shell
53
+ },
54
+ ref,
55
+ ) => (
56
+ <PrizmaResultScreen
57
+ ref={ref}
58
+ showHeader={showHeader}
59
+ showFooter={showFooter}
60
+ title={strings.flipId.title}
61
+ verifiedLabel={strings.verifiedLabel}
62
+ navLabel={strings.navLabel}
63
+ screenId={screenId}
64
+ overrides={overrides}
65
+ onAction={onAction}
66
+ {...shell}
67
+ >
68
+ <PrizmaIllustrationIdFlip variant="interstitial" />
69
+ </PrizmaResultScreen>
70
+ ),
71
+ );
72
+ VideoSelfieFlipIdScreen.displayName = 'VideoSelfieFlipIdScreen';
73
+
74
+ export default VideoSelfieFlipIdScreen;
@@ -0,0 +1,213 @@
1
+ import React, { forwardRef, type ReactNode } from 'react';
2
+ import {
3
+ PrizmaIdCapture,
4
+ type PrizmaIdCaptureState,
5
+ } from '@incodetech/prizma-core-web/id-capture';
6
+ import { PrizmaLoadingSpinner } from '@incodetech/prizma-core-web/loading-spinner';
7
+ import { PrizmaSnackbar } from '@incodetech/prizma-core-web/snackbar';
8
+ import { PrizmaStepper } from '@incodetech/prizma-core-web/stepper';
9
+ import { PrizmaTag } from '@incodetech/prizma-core-web/tag';
10
+ import { PrizmaScreenShell, type PrizmaScreenShellProps } from './ScreenShell';
11
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
12
+ import type {
13
+ VideoSelfieDocumentType,
14
+ VideoSelfieIdErrorSeverity,
15
+ VideoSelfieIdSide,
16
+ VideoSelfieStrings,
17
+ } from './VideoSelfieStrings';
18
+ import './ScreenLayout.css';
19
+ import './ViewfinderScreen.css';
20
+ import './VideoSelfieLayout.css';
21
+
22
+ /** Which purple stage section to render (groups 3, 5 and 6). */
23
+ export type VideoSelfieIdCaptureState =
24
+ | 'default'
25
+ | 'shown'
26
+ | 'processing'
27
+ | 'allGood'
28
+ | 'error';
29
+
30
+ /** Purple stage state → Core `PrizmaIdCapture` state. The frame border, the
31
+ * analyzing sweep, the scrim and the encrypted row are ALL Core's. */
32
+ const CAPTURE_STATE: Record<VideoSelfieIdCaptureState, PrizmaIdCaptureState> = {
33
+ default: 'empty',
34
+ shown: 'filled',
35
+ processing: 'analyzing',
36
+ allGood: 'success',
37
+ error: 'error',
38
+ };
39
+
40
+ /** Which beat of the seven-step journey each side occupies — front is step 2
41
+ * (the microphone grant is step 1), back is step 3. */
42
+ const STEP: Record<VideoSelfieIdSide, 2 | 3> = { front: 2, back: 3 };
43
+
44
+ export interface VideoSelfieIdCaptureScreenProps
45
+ extends Omit<PrizmaScreenShellProps, 'dark' | 'title' | 'children'> {
46
+ /** Module copy — this screen reads the `idCapture` slice (+ shared labels). */
47
+ strings: VideoSelfieStrings;
48
+ /** Which face of the document. Drives the stepper beat only — the frame
49
+ * geometry is identical (Figma draws no title on these sections). */
50
+ side?: VideoSelfieIdSide;
51
+ /** Which document the journey collects — Core `PrizmaIdCapture.type` and the
52
+ * Stepper's own `documentType`. Default `id`. */
53
+ documentType?: VideoSelfieDocumentType;
54
+ /** Which purple stage section to render. Default `default`. */
55
+ state?: VideoSelfieIdCaptureState;
56
+ /** Whether the rejection invites a retry (`6.1`/`6.3`) or is terminal
57
+ * (`6.2`/`6.4`). Read only when `state="error"`. */
58
+ errorSeverity?: VideoSelfieIdErrorSeverity;
59
+ /** Live camera feed (<video>) or sample still (<img>) behind the frame. */
60
+ camera?: ReactNode;
61
+ /** The captured document still, for the states Core draws one in. */
62
+ still?: ReactNode;
63
+ screenId?: string;
64
+ overrides?: PrizmaScreenOverrides;
65
+ onAction?: PrizmaScreenActionHandler;
66
+ }
67
+
68
+ /**
69
+ * Video Selfie — the document stage (Archetype D, GUIDELINES.md §6-D; always
70
+ * dark). ONE screen for TWELVE purple sections: `id capture front 3.0–3.3`,
71
+ * `id capture back 5.0–5.3` and every `id capture … errors 6.1–6.4` variant.
72
+ * They are `side` × `state` × `errorSeverity` variants of Core's
73
+ * `PrizmaIdCapture`, which is exactly how the component is axed.
74
+ *
75
+ * Composed like `IdCaptureStageScreen` / `DocumentCaptureCaptureScreen`: the
76
+ * feed runs full-bleed on `.prizma-viewfinder__surface` and
77
+ * `mode="overlay" scrim` cuts a transparent window through the veil, so Core
78
+ * owns the window, the tokenized scrim, the four border treatments, the
79
+ * analyzing sweep and the encrypted row. None of it is re-implemented (§7).
80
+ *
81
+ * Two things this module's Figma does that the foundation does not model, both
82
+ * reported rather than silently reshaped:
83
+ *
84
+ * - **The journey stepper.** Every camera section draws Core's `PrizmaStepper`
85
+ * in the band the logo nav normally occupies, and it is the ONLY difference
86
+ * between `3.0` and `5.0` — drop it and the front and back defaults render
87
+ * identically. No archetype has a slot for it. This screen owns its whole
88
+ * composition (archetype D is a recipe, not a component), so the band lives
89
+ * in `VideoSelfieLayout.css` and carries the foundation's own
90
+ * `--pcs-status-bar` reserve — no new number. The archetype-based screens of
91
+ * this module ship WITHOUT the stepper rather than growing a second copy.
92
+ *
93
+ * - **The status card.** Figma floats a dark rounded card OVER the document
94
+ * ("Processing…", "All good!", "Name verification failed, try again"). Core
95
+ * ships no such container, and inventing one is forbidden (rule 1), so the
96
+ * message rides in the band UNDER the frame using Core's own parts — the
97
+ * `PrizmaLoadingSpinner` for the in-flight beat and `PrizmaSnackbar`
98
+ * (`success` / `error`) for the verdicts. Core's frame border already carries
99
+ * the verdict colour, so nothing is lost but the overlap.
100
+ *
101
+ * No logo and NO encrypted row (the verified tag IS kept — capture screens drop only the logo, #VS-3): all twenty-four sections draw
102
+ * nothing at all between the bottom of the document frame and the bottom of the
103
+ * screen (GUIDELINES §1 — follow the module's section, not the default). Core's
104
+ * `showEncryptedLabel` is therefore pinned `false`: it is a `PrizmaIdCapture`
105
+ * default that other modules' Figma does draw, and leaving it on painted a lock
106
+ * + "All data is encrypted" row on every state of this stage. The label was
107
+ * dropped from `VideoSelfieStrings` with it — no other screen in the module
108
+ * reads one.
109
+ */
110
+ export const VideoSelfieIdCaptureScreen = forwardRef<
111
+ HTMLDivElement,
112
+ VideoSelfieIdCaptureScreenProps
113
+ >(
114
+ (
115
+ {
116
+ strings,
117
+ side = 'front',
118
+ documentType = 'id',
119
+ state = 'default',
120
+ errorSeverity = 'tryAgain',
121
+ camera,
122
+ still,
123
+ screenId = `video-selfie-id-capture-${side}-${state}`,
124
+ overrides,
125
+ onAction,
126
+ className,
127
+ ...shell
128
+ },
129
+ ref,
130
+ ) => {
131
+ const errorLabel = strings.idCapture.errors[errorSeverity];
132
+
133
+ return (
134
+ <PrizmaScreenShell ref={ref} dark className={className} {...shell}>
135
+ <div className="prizma-viewfinder__surface">{camera}</div>
136
+ <div className="video-selfie-stepper">
137
+ <PrizmaStepper
138
+ steps={7}
139
+ currentState={STEP[side]}
140
+ documentType={documentType}
141
+ completedValueText={strings.stepperCompletedLabel}
142
+ />
143
+ </div>
144
+ <div
145
+ className={[
146
+ 'prizma-viewfinder__content',
147
+ overrides?.align === 'left' ? 'prizma-viewfinder__content--left' : '',
148
+ ]
149
+ .filter(Boolean)
150
+ .join(' ')}
151
+ >
152
+ <div className="video-selfie-band" />
153
+ <PrizmaIdCapture
154
+ type={documentType}
155
+ state={CAPTURE_STATE[state]}
156
+ isVertical
157
+ mode="overlay"
158
+ scrim
159
+ showEncryptedLabel={false}
160
+ still={still}
161
+ />
162
+ {/* Centred ON the frame, not below it — `3.2`/`5.2` put the spinner
163
+ and its caption over the document (DEVIATIONS #VS-7). */}
164
+ {state === 'processing' ? (
165
+ <div className="video-selfie-stage-status">
166
+ <PrizmaLoadingSpinner
167
+ showTitle
168
+ titleText={strings.idCapture.processingLabel}
169
+ loadingLabel={strings.idCapture.processingLabel}
170
+ />
171
+ </div>
172
+ ) : null}
173
+ {/* `3.3`/`5.3` and every `6.x` draw the verdict in the SAME dark card,
174
+ centred on the document, as `3.2`/`5.2` draw the spinner — three
175
+ identical Figma treatments had become two different ones once the
176
+ spinner moved (owner QA 2026-08-19). DEVIATIONS #VS-13. */}
177
+ {state === 'allGood' || state === 'error' ? (
178
+ <div className="video-selfie-stage-status">
179
+ {state === 'allGood' ? (
180
+ <PrizmaSnackbar state="success" role="status">
181
+ {strings.idCapture.successLabel}
182
+ </PrizmaSnackbar>
183
+ ) : (
184
+ /* NOT `isMultiline`: that modifier switches the row to
185
+ `align-items: flex-start` so an icon anchors to the top of
186
+ WRAPPED text. The rejection copy renders on ONE line, so it
187
+ only pushed the icon 6.9px below the text centre
188
+ (owner-reported 2026-08-19: "the text is not even aligned to
189
+ the icon"). CORE REQUEST: have the Snackbar follow actual
190
+ wrapping rather than a prop the caller has to predict.
191
+ DEVIATIONS #VS-9. */
192
+ <PrizmaSnackbar state="error" role="alert">
193
+ {errorLabel}
194
+ </PrizmaSnackbar>
195
+ )}
196
+ </div>
197
+ ) : null}
198
+ </div>
199
+ {/* Capture screens keep the FOOTER and drop only the logo — the chrome
200
+ contract in types.ts, and the same treatment `IdCaptureStageScreen`
201
+ gives its camera stage. The tag had been dropped entirely here, so
202
+ the attribution vanished on the module's densest screens
203
+ (owner-reported 2026-08-19). DEVIATIONS #VS-3. */}
204
+ <div className="prizma-screen-layout__footer">
205
+ <PrizmaTag label={strings.verifiedLabel} />
206
+ </div>
207
+ </PrizmaScreenShell>
208
+ );
209
+ },
210
+ );
211
+ VideoSelfieIdCaptureScreen.displayName = 'VideoSelfieIdCaptureScreen';
212
+
213
+ export default VideoSelfieIdCaptureScreen;
@@ -0,0 +1,259 @@
1
+ /* Video Selfie — module layout additions.
2
+ *
3
+ * ONLY what the foundation archetypes do not already own, and nothing that
4
+ * re-declares an archetype offset. Every value is a token; each departure from
5
+ * GUIDELINES.md is reported back to the owner (see the module's screen files
6
+ * and the agent's `archetypeGaps` report).
7
+ *
8
+ * The module's structural discovery is that EVERY camera screen in the flow —
9
+ * the two document stages, the liveness ring, the two spoken steps and two of
10
+ * the generic errors — draws Core's `PrizmaStepper` in the band the logo nav
11
+ * normally occupies. No archetype has a slot for it (reported), so the three
12
+ * screens whose whole composition this module owns (the document stage and the
13
+ * spoken step) carry the band here.
14
+ */
15
+
16
+ /* ── Journey stepper band ────────────────────────────────────────────────────
17
+ * Figma draws the Stepper as the first thing under the OS status bar — no logo
18
+ * row above it (`top content` frame, y=54, the Stepper 342 wide at x=24 on
19
+ * every section). The status-bar reserve is NOT a new number: it is the
20
+ * foundation's own `--pcs-status-bar` custom property, the same one
21
+ * `ScreenNav.css` and `ScreenLayout.css`'s `--no-nav` variant read, so a host
22
+ * that draws its own chrome still overrides it in one place.
23
+ *
24
+ * The horizontal inset is the content column's own Spacing/24 gutter — these
25
+ * screens have no `.prizma-screen-layout__content` wrapper (they are camera
26
+ * surfaces), so the band carries the same gutter Core's stage sits in.
27
+ *
28
+ * REPORTED: archetypes B (Capture), C (Processing), F (Result) and G (List)
29
+ * need a `stepper` slot in their nav band so the rest of the module's screens
30
+ * can draw it too. Nothing is worked around here — those screens ship WITHOUT
31
+ * the stepper rather than hand-rolling a second copy of this band. */
32
+ .video-selfie-stepper {
33
+ flex-shrink: 0;
34
+ /* Above PrizmaIdCapture's overlay scrim, which is an absolutely positioned
35
+ * box-shadow that would otherwise paint over this non-positioned sibling —
36
+ * the same reason `IdCaptureLayout.css` lifts its bands. */
37
+ position: relative;
38
+ /* z-index 2, not 1: PrizmaIdCapture's HUD bands ALSO lift themselves to 1, so
39
+ * at the same level DOM order decided and the scrim painted over the stepper
40
+ * (owner-reported 2026-08-19: "the stepper is not correctly visible and looks
41
+ * hidden, probably it's behind the overlay"). 2 is the anchored-chrome layer
42
+ * ScreenLayout.css already reserves for the tag and shutter, which must sit
43
+ * above the scrim for exactly the same reason. DEVIATIONS #VS-2. */
44
+ z-index: 2;
45
+ margin-top: var(--pcs-status-bar, 47px);
46
+ padding-inline: var(--prizma-spacing-24);
47
+ }
48
+
49
+ /* ── The flexible bands around a camera stage ────────────────────────────────
50
+ * Pure flex distribution — NO padding, NO margin, no spacing token at all. The
51
+ * band exists so the HUD copy (the recording indicator, the stage's status
52
+ * message) sits in the air the stage leaves, instead of the module inventing an
53
+ * offset the archetype layer would otherwise own. */
54
+ .video-selfie-band {
55
+ flex: 1;
56
+ min-height: 0;
57
+ display: flex;
58
+ flex-direction: column;
59
+ align-items: center;
60
+ justify-content: center;
61
+ width: 100%;
62
+ position: relative;
63
+ z-index: 1;
64
+ }
65
+
66
+ /* ── Recording indicator (10.1 / 11.1 / 11.3 / 11.5) ─────────────────────────
67
+ * A sound-wave glyph over the "Recording…" HUD line. The glyph ink is Core's
68
+ * own Static camera ink — the token `PrizmaCaptureManual` uses for the shutter
69
+ * — so it survives on the always-dark camera surface. The copy itself is the
70
+ * foundation's `.prizma-viewfinder__title`; nothing about it is re-declared. */
71
+ .video-selfie-recording {
72
+ display: flex;
73
+ flex-direction: column;
74
+ align-items: center;
75
+ gap: var(--prizma-spacing-16);
76
+ color: var(--prizma-icon-neutral-50-static);
77
+ }
78
+
79
+ /* ── The spoken-step card (groups 10 and 11) ─────────────────────────────────
80
+ * Figma layers Core's Modal over the live camera (`modal-light` instance). The
81
+ * safe presenter portals to `document.body`, which would escape the 390×844
82
+ * screen frame and the host's `transform: scale()`, so the screen owns the
83
+ * scrim and the panel and Core owns the card — the recipe Document Capture's
84
+ * method sheet already established (DEVIATIONS #DC-30). */
85
+ .video-selfie-sheet-scrim {
86
+ position: absolute;
87
+ inset: 0;
88
+ z-index: 2;
89
+ background: var(--prizma-surface-overlay);
90
+ }
91
+
92
+ .video-selfie-sheet-panel {
93
+ position: absolute;
94
+ left: 0;
95
+ right: 0;
96
+ bottom: 0;
97
+ z-index: 3;
98
+ padding: var(--prizma-spacing-16);
99
+ }
100
+
101
+ /* The confirmation dialog (10.4) is a true centred modal over a dimmed screen,
102
+ * not a bottom-anchored card. */
103
+ .video-selfie-sheet-panel--centered {
104
+ top: 0;
105
+ display: flex;
106
+ align-items: center;
107
+ }
108
+
109
+ /* The card's verdict mark (10.3 / 11.x success). The glyph itself is the
110
+ * canonical bank icon Core's own `PrizmaTitle` uses for `status: success`
111
+ * (`IconStatusPositive` at Title/Icon/Size); only the INK is set here, because
112
+ * Core's per-status tint lives on `.prizma-title__status-icon--success` and
113
+ * `PrizmaModalContent` has no status slot to inherit it from. Same treatment
114
+ * `IdCaptureLayout.css` gives the camera stage's nav icon. */
115
+ .video-selfie-sheet-status {
116
+ display: flex;
117
+ width: 100%;
118
+ justify-content: center;
119
+ color: var(--prizma-icon-status-positive);
120
+ }
121
+
122
+ .video-selfie-sheet-status > svg {
123
+ display: block;
124
+ width: var(--prizma-title-icon-size);
125
+ height: var(--prizma-title-icon-size);
126
+ }
127
+
128
+ /* ── The OS settings walk-through (2.5) ──────────────────────────────────────
129
+ * Two labelled sections inside archetype G's list slot: a numbered step list
130
+ * and a plain note. CONTENT typography only — the offset above the block is
131
+ * the archetype's `__list` Spacing/24 and is not touched. */
132
+ .video-selfie-steps {
133
+ display: flex;
134
+ flex-direction: column;
135
+ gap: var(--prizma-spacing-16);
136
+ width: 100%;
137
+ text-align: start;
138
+ }
139
+
140
+ .video-selfie-steps__heading {
141
+ margin: 0;
142
+ font-family: var(--prizma-headline-family);
143
+ font-size: var(--prizma-headline-h5-font-size);
144
+ font-weight: var(--prizma-headline-h5-font-weight);
145
+ line-height: var(--prizma-headline-h5-line-height);
146
+ letter-spacing: var(--prizma-headline-h5-letter-spacing);
147
+ color: var(--prizma-text-body-800-primary);
148
+ }
149
+
150
+ .video-selfie-steps__note {
151
+ margin: 0;
152
+ font-size: var(--prizma-body-m-regular-font-size);
153
+ font-weight: var(--prizma-body-m-regular-font-weight);
154
+ line-height: var(--prizma-body-m-regular-line-height);
155
+ color: var(--prizma-text-body-500-secondary);
156
+ }
157
+
158
+ /* ── The captured document inside the vertical frame ─────────────────────────
159
+ * Groups 3 and 5 draw the ID UPRIGHT in a portrait frame: the card is rotated a
160
+ * quarter turn so its long edge runs down the screen, exactly as `3.2` and
161
+ * `5.2` show it (the licence's text reads bottom-to-top).
162
+ *
163
+ * The sample scans are landscape (328×202). Dropped into a portrait frame with
164
+ * Core's `object-fit: cover` they scaled 4.2× to fill the height and lost their
165
+ * sides — the band of static the owner reported (2026-08-19: "horizontal and
166
+ * zoomed in to fit height, when it should be 90 degrees to fit the frame").
167
+ * Rotating instead of cropping keeps the whole document legible.
168
+ *
169
+ * `width`/`height` are swapped BEFORE the rotation because a rotated element
170
+ * still lays out on its pre-transform box: the image is sized to the frame's
171
+ * height × width, then turned, so it lands exactly frame-sized. No literal —
172
+ * both are percentages of whatever box Core gives it. DEVIATIONS #VS-6.
173
+ */
174
+ /* The captured document is landscape (a card scan); the VERTICAL frame is
175
+ * portrait. `object-fit: cover` cropped its sides away and blew it up 4.2× —
176
+ * the band of static the owner reported. Figma turns the card a quarter turn
177
+ * instead, so the whole document stays legible with its text running up the
178
+ * side, exactly as `3.2` / `5.2` draw it.
179
+ *
180
+ * The image is sized to the frame's height × width BEFORE the turn, because a
181
+ * rotated element still lays out on its pre-transform box — so after the 90°
182
+ * it lands exactly frame-sized. Both values are percentages of whatever box
183
+ * Core gives it, so nothing is hardcoded. DEVIATIONS #VS-6. */
184
+ .prizma-id-capture--vertical .prizma-id-capture__still {
185
+ /* A size container, so the image can be measured against the frame's OWN
186
+ box — `cqh`/`cqw` below are the only way to swap width and height without
187
+ writing either number down. The frame has definite dimensions, which is
188
+ what `container-type: size` requires. */
189
+ container-type: size;
190
+ display: grid;
191
+ place-items: center;
192
+ overflow: hidden;
193
+ }
194
+
195
+ .prizma-id-capture--vertical .prizma-id-capture__still > img {
196
+ /* Swapped on purpose: the image is laid out at the frame's HEIGHT × WIDTH,
197
+ then turned a quarter, so it lands exactly frame-sized. */
198
+ width: 100cqh;
199
+ height: 100cqw;
200
+ max-width: none;
201
+ object-fit: cover;
202
+ transform: rotate(90deg);
203
+ transform-origin: center;
204
+ }
205
+
206
+
207
+ /* ── Stage status, centred ON the frame ──────────────────────────────────────
208
+ * `3.2` / `5.2` centre the spinner and its "Processing…" caption OVER the
209
+ * document, on the dark rounded container the design uses for stage status —
210
+ * not below the frame, where it sat (owner-reported 2026-08-19: "the processing
211
+ * loader looks broken in the bottom of the capture screen, it should be in the
212
+ * middle"). Absolutely positioned against the viewfinder content so the frame
213
+ * and the bands keep their own flex distribution untouched. DEVIATIONS #VS-7.
214
+ */
215
+ .video-selfie-stage-status {
216
+ position: absolute;
217
+ inset: 0;
218
+ z-index: 2;
219
+ display: flex;
220
+ align-items: center;
221
+ justify-content: center;
222
+ pointer-events: none;
223
+ }
224
+
225
+ .video-selfie-stage-status > * {
226
+ padding: var(--prizma-spacing-16) var(--prizma-spacing-24);
227
+ border-radius: var(--prizma-border-radius-medium);
228
+ background: var(--prizma-surface-neutral-900-80-static);
229
+ }
230
+
231
+ /* ── Tutorial step rows ──────────────────────────────────────────────────────
232
+ * The <ul> Core's `PrizmaList` would normally supply. Composed here only
233
+ * because the wrapper's icon variants cap at six rows and the tutorial draws
234
+ * seven (#VS-8); the gap is the variant's OWN Spacing/12 — nothing new.
235
+ */
236
+ .video-selfie-tutorial-list {
237
+ display: flex;
238
+ flex-direction: column;
239
+ align-items: flex-start;
240
+ width: 100%;
241
+ margin: 0;
242
+ padding: 0;
243
+ list-style: none;
244
+ gap: var(--prizma-spacing-12);
245
+ }
246
+
247
+ /* Step rows — the <ol> `PrizmaList` would supply, composed here only because
248
+ * the wrapper has no variant reaching Core's plain `number` squircle (#VS-16).
249
+ * The gap is the icon family's own Spacing/12; nothing new is declared. */
250
+ .video-selfie-steps__rows {
251
+ display: flex;
252
+ flex-direction: column;
253
+ align-items: flex-start;
254
+ width: 100%;
255
+ margin: 0;
256
+ padding: 0;
257
+ list-style: none;
258
+ gap: var(--prizma-spacing-12);
259
+ }