@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,78 @@
1
+ /* Data Sharing Consent — module layout additions.
2
+ *
3
+ * ONE rule, and it declares NO spacing: a text style for the legal disclosure
4
+ * paragraph, which Core ships no component for. The content column, the 24px
5
+ * gutters, the title → stack offset, the gap between the body paragraph and the
6
+ * consent cards, the panning stack and its Spacing/16 clearance above the CTA,
7
+ * the CTA column and the anchored footer are all the foundation's
8
+ * (`ScreenLayout.css`, `FormScreen.css`); the consent card's own padding,
9
+ * radius, surface and typography are Core's (`Checkbox.css`, size L).
10
+ *
11
+ * The scroll rule this file used to carry has been promoted to the archetype
12
+ * (`.prizma-form-screen__fields--scroll`, `scrollFields`), and the section's
13
+ * Spacing/24 column rhythm is SELECTED through the archetype's `fieldsOffset` /
14
+ * `fieldsGap` slots rather than overridden here. DEVIATIONS #DSC-1, #DSC-2.
15
+ */
16
+
17
+ /* ── The legal disclosure paragraph ──────────────────────────────────────────
18
+ * `User Consent` draws ~250px of left-aligned body copy between the centered
19
+ * Title and the first consent card, with "Incode's Privacy Notice" as an inline
20
+ * link. Measured off the master frame (27151:280): 342 wide, 252 tall over 15
21
+ * lines = 16.8px line height at 14px — i.e. Core's `Body/M/Regular` exactly,
22
+ * inked `Text/Body/800 (primary)`.
23
+ *
24
+ * Core ships NO body-paragraph primitive: `PrizmaDisclaimer` is the CENTERED
25
+ * H4 legal row that belongs to the CTA band (its own docstring says so, and it
26
+ * carries Spacing/12 of band breathing room), `PrizmaTitle.subtitle` takes a
27
+ * plain string with no link support and follows the Title's centering, and the
28
+ * foundation's `__inline-prompt` recipe is a CENTERED single line. So the style
29
+ * is composed here from Core's OWN tokens — no palette, no size and no spacing
30
+ * is invented, and the block declares no margin beyond the browser reset.
31
+ *
32
+ * FOUNDATION REQUEST: promote a `__body` recipe (left-aligned Body/M/Regular
33
+ * with inline links) into `ScreenLayout.css`, or give Core a `PrizmaParagraph`.
34
+ * Every consent-bearing module still to come — eKYC disclosure, biometric
35
+ * consent, terms acceptance — draws this exact block (#DC-29 / #PI-10 precedent,
36
+ * where a cross-module recipe was placed in the foundation rather than a module).
37
+ */
38
+ .data-sharing-consent__body {
39
+ margin: 0;
40
+ text-align: left;
41
+ color: var(--prizma-text-body-800-primary);
42
+ font-family: var(--prizma-body-family);
43
+ font-size: var(--prizma-body-m-regular-font-size);
44
+ font-weight: var(--prizma-body-m-regular-font-weight);
45
+ line-height: var(--prizma-body-m-regular-line-height);
46
+ letter-spacing: var(--prizma-body-m-regular-letter-spacing);
47
+ }
48
+
49
+ /* The inline document link inside that paragraph. `Link/Default` is the same
50
+ * token Core inks `.prizma-checkbox__link` with, so the Privacy Notice link in
51
+ * the paragraph and a link inside a consent card read as one family. Figma
52
+ * draws this one WITHOUT the underline Core's checkbox link carries — recorded
53
+ * as a deviation rather than resolved silently, since no Core component governs
54
+ * a standalone paragraph link. */
55
+ .data-sharing-consent__body-link {
56
+ color: var(--prizma-link-default);
57
+ text-decoration: none;
58
+ cursor: pointer;
59
+ }
60
+
61
+ .data-sharing-consent__body-link:hover {
62
+ color: var(--prizma-link-hover);
63
+ }
64
+
65
+ /* ── The consent stack outgrows the frame — NO LONGER A MODULE RULE ──────────
66
+ * `29645:5306` is a 390×844 frame whose `middle content` is 584 tall for a
67
+ * column that has ~470: the body paragraph alone is 383 and each consent card
68
+ * is 74. Figma lets the column pan and clips it at y=698, then starts the CTA
69
+ * band there with 16px of internal padding — so the second consent card is
70
+ * sliced mid-sentence and followed by clear surface before "Continue".
71
+ *
72
+ * This module used to hand-roll `overflow-y: auto` here, which reproduced the
73
+ * slice but glued the button to the cut edge (zero gap). The behaviour AND its
74
+ * Spacing/16 breathing room now live in the archetype as
75
+ * `.prizma-form-screen__fields--scroll`, driven by `scrollFields` on
76
+ * `PrizmaFormScreen` — the foundation request this file used to carry, granted.
77
+ * DEVIATIONS #DSC-2.
78
+ */
@@ -0,0 +1,144 @@
1
+ // The consent screen — copy contract.
2
+ //
3
+ // ONE screen, TWO SDK modules. `Data Sharing Consent` and `User Consent` are
4
+ // separate modules in the product and separate entries in the gallery, and they
5
+ // draw the same screen — the Face Capture / Face Authentication situation
6
+ // (`FIGMA-SOURCES.md`: "same file as Face Capture"). Their two Figma files carry
7
+ // the same node ids to the byte — section `27151:441`, master `27151:321` — so
8
+ // the screen, the strings and the states below are authored once and both
9
+ // modules render them. The type names keep the `DataSharingConsent` prefix
10
+ // because that is what shipped; renaming them would break every host import for
11
+ // no gain.
12
+ //
13
+ // · Data Sharing Consent CO2SfrFrWis9fIUKHvLYyY (page 16285:41282)
14
+ // · User Consent Oh4GGFoTXCnMKMq3gnzINg (page 16285:41282, "In
15
+ // Production" — carries the happy-path flow frames
16
+ // and the token-customization doc)
17
+ //
18
+ // ONE purple parent section, `User Consent` (27151:441), which draws the module
19
+ // across three 390-wide frames plus presentation-only children:
20
+ // · 27151:321 the master component — ONE mandatory consent, unticked, the
21
+ // CTA greyed
22
+ // · 29645:5306 the same screen carrying EVERY consent — the stack outgrows
23
+ // the frame and pans under the CTA
24
+ // · 27198:2661 the `🔧 Behavior` frame — the consents ticked and the CTA
25
+ // released to brand blue
26
+ // · `🖤 Dark mode`, `🇪🇸 ES`, `🇵🇹 PT` and the five device sections are the
27
+ // same screen re-presented: dark is token-driven
28
+ // (`[data-prizma-theme='dark']`), the locales are this file's job, and the
29
+ // widths are excluded by the no-per-width-variants rule (DEVIATIONS #17).
30
+ //
31
+ // The module is the biometric-data disclosure the user must accept before any
32
+ // capture runs: a legal body paragraph carrying the Privacy Notice link, then
33
+ // one or more consent cards, then a CTA that stays inert until they are ticked.
34
+ //
35
+ // No hardcoded English anywhere in a screen: every visible string arrives here,
36
+ // so the host's locale pack drives the module (the Figma file ships ES + PT
37
+ // columns beside the EN one).
38
+
39
+ import type { PrizmaConsentSegment } from '@incodetech/prizma-core-web/checkbox';
40
+
41
+ /**
42
+ * The states the purple section draws, plus the two the Core checkbox earned in
43
+ * #1925. All share ONE layout — nav → Title → body paragraph → consent cards →
44
+ * CTA → tag — which is exactly what GUIDELINES §6-E means by "states are
45
+ * separate screens sharing the identical layout":
46
+ *
47
+ * - `default` — the master frame: the mandatory consent alone,
48
+ * unticked, so the CTA is disabled (Figma greys it).
49
+ * - `accepted` — the same single consent ticked; the CTA turns brand
50
+ * blue. This is the `🔧 Behavior` frame's treatment
51
+ * applied to the single-consent screen.
52
+ * - `multiple` — every consent in `items` listed and unticked; the
53
+ * stack is taller than the frame, so it pans while the
54
+ * Title, the CTA and the tag hold still. CTA disabled.
55
+ * - `multipleAccepted` — the `🔧 Behavior` frame: every consent ticked, CTA
56
+ * released.
57
+ * - `rejected` — NOT IN EITHER FIGMA FILE. The single mandatory consent
58
+ * left unticked with `errorText` showing underneath it:
59
+ * the moment a user presses Continue and is refused.
60
+ * - `multipleRejected` — the same refusal on the every-consent screen. Only the
61
+ * `required` cards carry the message; an optional consent
62
+ * left unticked is not an error.
63
+ *
64
+ * WHY THEY EXIST WITH NO FRAME BEHIND THEM. Core shipped the L consent
65
+ * container's error state on 2026-09-02 (#1925) — `error` + `errorText` render a
66
+ * `role="alert"` row below the card, and the card itself is deliberately
67
+ * unchanged. Until now no screen selected it, so the flow canvas had nothing to
68
+ * point at for "Continue, with nothing ticked". Owner call, 2026-09-03: add the
69
+ * state to the screen and wire it into the User Consent flow. If the design file
70
+ * later draws this moment differently, this is the state to re-read.
71
+ */
72
+ export type DataSharingConsentState =
73
+ | 'default'
74
+ | 'accepted'
75
+ | 'rejected'
76
+ | 'multiple'
77
+ | 'multipleAccepted'
78
+ | 'multipleRejected';
79
+
80
+ /** One consent card — a Core `PrizmaCheckbox size="L"` (the component IS the
81
+ * tinted consent container Figma draws, padding, radius and all). */
82
+ export interface DataSharingConsentItemStrings {
83
+ /**
84
+ * The card copy, as ordered segments: a plain string renders as body copy, an
85
+ * object renders as an inline `<a>` that opens the document WITHOUT toggling
86
+ * the box. This is Core's own `PrizmaConsentSegment` contract — the multi-link
87
+ * path on `PrizmaCheckbox` — so nothing is re-modelled here and a consent that
88
+ * cites two documents stays expressible (#PI-10: each link is separately
89
+ * actionable, never one button).
90
+ */
91
+ segments: PrizmaConsentSegment[];
92
+ /**
93
+ * Mandatory consent. The screen appends `DataSharingConsentStrings.requiredHint`
94
+ * (the `*` Figma draws at the end of the first card) rather than baking the
95
+ * marker into `segments`, so it stays localizable — the #CURP-4 precedent.
96
+ */
97
+ required?: boolean;
98
+ /** Accessible name for the box when the card copy is too long to serve as
99
+ * one (screen readers otherwise announce the whole paragraph). */
100
+ ariaLabel?: string;
101
+ }
102
+
103
+ export interface DataSharingConsentStrings {
104
+ /** "verified by" attribution in the footer tag. */
105
+ verifiedLabel: string;
106
+ /** Accessible name for the logo nav row. */
107
+ navLabel?: string;
108
+ /** Suffix appended to a `required` consent card ("*"). Localizable. */
109
+ requiredHint?: string;
110
+
111
+ /** The `User Consent` section. */
112
+ consent: {
113
+ /** H2 ("User consent"). Centered, per the section. */
114
+ title: string;
115
+ /** H5 — the section draws none; kept for hosts that want one. */
116
+ subtitle?: string;
117
+ /**
118
+ * The legal disclosure above the cards, as ordered segments so the Privacy
119
+ * Notice link stays inline and translatable. Left-aligned body copy — the
120
+ * section left-aligns it under the centered Title.
121
+ */
122
+ body: PrizmaConsentSegment[];
123
+ /**
124
+ * Every consent the flow asks for, in the order the section lists them.
125
+ * `default` / `accepted` draw the FIRST entry alone (that is the master
126
+ * frame); `multiple` / `multipleAccepted` draw them all.
127
+ */
128
+ items: DataSharingConsentItemStrings[];
129
+ /** Primary CTA ("Continue"). Disabled until the consents are ticked. */
130
+ ctaLabel: string;
131
+ /**
132
+ * The sentence a refused Continue owes the user, shown under every
133
+ * `required` card in the `rejected` / `multipleRejected` states.
134
+ *
135
+ * REQUIRED BY THOSE STATES, in practice. On Core's L container the errored
136
+ * card is visually identical to the enabled one — no fill change, no border,
137
+ * the box unchanged (owner decision 2026-09-02, after three card treatments
138
+ * read as "selected" rather than "failed" next to an already-ticked card).
139
+ * This message row is the entire visible error, so omitting it leaves a
140
+ * sighted user with no feedback at all; `PrizmaCheckbox` dev-warns.
141
+ */
142
+ errorText?: string;
143
+ };
144
+ }
@@ -0,0 +1,56 @@
1
+ import React, { forwardRef } from 'react';
2
+ import { PrizmaResultScreen, type PrizmaResultScreenProps } from './ResultScreen';
3
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
4
+ import type { DemoScreensStrings } from './DemoScreensStrings';
5
+ import './ScreenLayout.css';
6
+
7
+ export interface DemoScreensEndScreenProps
8
+ extends Omit<
9
+ PrizmaResultScreenProps,
10
+ 'status' | 'title' | 'subtitle' | 'glyph' | 'verifiedLabel' | 'navLabel'
11
+ > {
12
+ /** Family copy — this screen reads the `end` slice. */
13
+ strings: DemoScreensStrings;
14
+ screenId?: string;
15
+ overrides?: PrizmaScreenOverrides;
16
+ onAction?: PrizmaScreenActionHandler;
17
+ }
18
+
19
+ /**
20
+ * Demo screens — "Verification complete!", built on the Result archetype
21
+ * (GUIDELINES.md §6-F, `PrizmaResultScreen`).
22
+ *
23
+ * Figma: `Module Generic Screens` frame `63:399`. The last thing a prospect
24
+ * sees in a sample flow: logo header → a centred title and supporting line →
25
+ * the verified tag. No CTA, because the demo has nowhere left to go.
26
+ *
27
+ * Result rather than Processing, even though the skeleton is Processing's:
28
+ * archetype C's status vocabulary is `loading | success | error | warning`, so
29
+ * a MARK-FREE centred title is not expressible there. `status="none"` is
30
+ * archetype F's, and with no CTA the band never renders — F degenerates to
31
+ * exactly C's shape and keeps the mark off.
32
+ *
33
+ * Figma draws no status mark above the title, deliberately: the demo did not
34
+ * verify anything, it finished. A success tick here would claim a verdict the
35
+ * session never reached — the copy already says the result is still under
36
+ * review.
37
+ */
38
+ export const DemoScreensEndScreen = forwardRef<HTMLDivElement, DemoScreensEndScreenProps>(
39
+ ({ strings, screenId = 'demo-screens-end', overrides, onAction, ...shell }, ref) => (
40
+ <PrizmaResultScreen
41
+ ref={ref}
42
+ status="none"
43
+ title={strings.end.title}
44
+ subtitle={strings.end.subtitle}
45
+ verifiedLabel={strings.verifiedLabel}
46
+ navLabel={strings.navLabel}
47
+ screenId={screenId}
48
+ overrides={overrides}
49
+ onAction={onAction}
50
+ {...shell}
51
+ />
52
+ ),
53
+ );
54
+ DemoScreensEndScreen.displayName = 'DemoScreensEndScreen';
55
+
56
+ export default DemoScreensEndScreen;
@@ -0,0 +1,31 @@
1
+ // Demo screens — copy contract for the GENERIC family.
2
+ //
3
+ // Figma: `Module Generic Screens` (qGJjfL4O0JSjz1x4tOjJn8), frame `63:399`.
4
+ //
5
+ // The screens that bracket a DEMO session rather than a real one — what a
6
+ // prospect sees at the two ends of a sample flow. They are generic by
7
+ // definition: the demo does not belong to any module, it strings several of
8
+ // them together.
9
+ //
10
+ // ONLY the end screen exists so far. The owner is supplying the start screen
11
+ // separately (Camila 2026-09-03: "that's the end screen but we need the start
12
+ // too, I will add it some other time"), so `start` is deliberately absent from
13
+ // this contract rather than guessed — an invented start screen would be a
14
+ // second source of truth for a frame that already exists in someone's file.
15
+ //
16
+ // The family has no flow of its own. Core Lab lists it as a library of states.
17
+ //
18
+ // No hardcoded English anywhere in a screen: every visible string arrives here.
19
+
20
+ export interface DemoScreensStrings {
21
+ /** Accessible name for the logo nav region (i18n — no baked-in English). */
22
+ navLabel?: string;
23
+ /** "verified by" attribution copy for the footer tag. */
24
+ verifiedLabel: string;
25
+
26
+ /** `63:399` — the demo is over and the result is with a human. */
27
+ end: {
28
+ title: string;
29
+ subtitle?: string;
30
+ };
31
+ }
@@ -0,0 +1,135 @@
1
+ import React, { forwardRef, type ReactNode } from 'react';
2
+ import { PrizmaIdCapture } from '@incodetech/prizma-core-web/id-capture';
3
+ import { PrizmaCaptureManual } from '@incodetech/prizma-core-web/capture-manual';
4
+ import { PrizmaTag } from '@incodetech/prizma-core-web/tag';
5
+ import { PrizmaScreenShell, type PrizmaScreenShellProps } from './ScreenShell';
6
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
7
+ import type { DocumentCaptureStrings } from './DocumentCaptureStrings';
8
+ import './ScreenLayout.css';
9
+ import './DocumentCaptureLayout.css';
10
+
11
+ export interface DocumentCaptureCaptureScreenProps
12
+ extends Omit<PrizmaScreenShellProps, 'dark' | 'title' | 'children'> {
13
+ /** Module copy — this screen reads the `capture` slice. */
14
+ strings: DocumentCaptureStrings;
15
+ /**
16
+ * `empty` = `documentCapture.capture.default` (the live camera, no document
17
+ * detected yet) · `filled` = `documentCapture.capture.filled` (a document
18
+ * fills the frame). Both are `enabled`-border states of Core's stage.
19
+ */
20
+ state?: 'empty' | 'filled';
21
+ /** Live camera feed (<video>) or sample still (<img>). Rendered full-bleed on
22
+ * the viewfinder surface behind the transparent overlay window (overlay mode
23
+ * ignores PrizmaIdCapture's own `camera` slot). */
24
+ camera?: ReactNode;
25
+ screenId?: string;
26
+ overrides?: PrizmaScreenOverrides;
27
+ onAction?: PrizmaScreenActionHandler;
28
+ }
29
+
30
+ /**
31
+ * Document Capture — camera stage (Archetype D, GUIDELINES.md §6-D).
32
+ * Figma: purple sections `documentCapture.capture.default` / `.filled`.
33
+ *
34
+ * The stage is Core's `PrizmaIdCapture` with `type="poa"` — the Document
35
+ * Capture variant it was built for ("PoA (Document Capture flow)").
36
+ * Composed exactly like `IdCaptureStageScreen`: the camera feed rides full-bleed
37
+ * on `.prizma-viewfinder__surface`, a white viewfinder title sits above the
38
+ * frame, and `PrizmaIdCapture mode="overlay" scrim` cuts a transparent window
39
+ * through the veil. Without overlay+scrim the poa frame draws no border and the
40
+ * screen reads as raw camera; without the white viewfinder title the dark
41
+ * PrizmaTitle ink vanished on the light feed (DEVIATIONS.md #DC-36). The strip
42
+ * is `PrizmaCaptureManual` (shutter + help); nothing Core-owned is
43
+ * re-implemented.
44
+ *
45
+ * Measured off the 390 sections (CONTENT 654 tall, no nav, no tag):
46
+ * Title 16→75 · stage 75→538 (`Capture / ID` 430 + its own 33 encrypted row) ·
47
+ * Spacing/12 · manual strip 566→630 · Spacing/24 to the bottom. The stage
48
+ * carries its own frame↔row spacing, so the module adds only the Spacing/16
49
+ * title gap and the Spacing/12 strip gap — never an offset Core already has
50
+ * (DEVIATIONS.md #12).
51
+ *
52
+ * Always dark (§6-D). Rather than hardcode white literals the way the
53
+ * foundation's ViewfinderScreen does, the shell declares Core's own theme
54
+ * switch (`data-prizma-theme="dark"`), so the Title and every other token-bound
55
+ * child flips through the design system instead of around it —
56
+ * DEVIATIONS.md #DC-32.
57
+ */
58
+ export const DocumentCaptureCaptureScreen = forwardRef<
59
+ HTMLDivElement,
60
+ DocumentCaptureCaptureScreenProps
61
+ >(
62
+ (
63
+ {
64
+ strings,
65
+ state = 'empty',
66
+ camera,
67
+ screenId = `document-capture-capture-${state}`,
68
+ overrides,
69
+ onAction,
70
+ className,
71
+ ...shell
72
+ },
73
+ ref,
74
+ ) => (
75
+ <PrizmaScreenShell
76
+ ref={ref}
77
+ dark
78
+ data-prizma-theme="dark"
79
+ // `document-capture-capture-screen` is what carries the status-bar
80
+ // reserve — this screen draws no nav, and on the viewfinder composition
81
+ // the nav is what would otherwise supply it (DocumentCaptureLayout.css,
82
+ // "THIS RESERVE WENT MISSING AND CAME BACK"). Without the hook the title
83
+ // renders at y+0, under the notch.
84
+ className={['document-capture-capture-screen', className].filter(Boolean).join(' ')}
85
+ {...shell}
86
+ >
87
+ {/* Full-bleed camera feed UNDER the UI; the overlay window is transparent
88
+ and reveals it undimmed while the scrim veils the surround — Core's
89
+ own recipe (IdCapture.tsx overlay mode), the same one IdCaptureStage
90
+ uses. In this mode the `camera` slot on PrizmaIdCapture is ignored, so
91
+ the feed rides on the viewfinder surface instead. */}
92
+ <div className="prizma-viewfinder__surface">{camera}</div>
93
+ <div
94
+ className={[
95
+ 'prizma-viewfinder__content',
96
+ overrides?.align === 'left' ? 'prizma-viewfinder__content--left' : '',
97
+ ]
98
+ .filter(Boolean)
99
+ .join(' ')}
100
+ >
101
+ <div className="prizma-viewfinder__intro">
102
+ <h2 className="prizma-viewfinder__title">{strings.capture.title}</h2>
103
+ {strings.capture.subtitle ? (
104
+ <p className="prizma-viewfinder__instruction">{strings.capture.subtitle}</p>
105
+ ) : null}
106
+ </div>
107
+ <PrizmaIdCapture
108
+ type="poa"
109
+ state={state}
110
+ isVertical
111
+ mode="overlay"
112
+ scrim
113
+ showEncryptedLabel={Boolean(strings.encryptedLabel)}
114
+ encryptedLabel={strings.encryptedLabel}
115
+ />
116
+ </div>
117
+ <div className="prizma-screen-layout__capture-strip">
118
+ <PrizmaCaptureManual
119
+ variant="id-capture"
120
+ showTooltip={false}
121
+ ariaLabel={strings.capture.captureLabel}
122
+ helpLabel={strings.capture.helpLabel}
123
+ onCapture={() => onAction?.({ type: 'cta', screenId })}
124
+ onHelp={() => onAction?.({ type: 'help', screenId })}
125
+ />
126
+ </div>
127
+ <div className="prizma-screen-layout__footer">
128
+ <PrizmaTag label={strings.verifiedLabel} />
129
+ </div>
130
+ </PrizmaScreenShell>
131
+ ),
132
+ );
133
+ DocumentCaptureCaptureScreen.displayName = 'DocumentCaptureCaptureScreen';
134
+
135
+ export default DocumentCaptureCaptureScreen;
@@ -0,0 +1,97 @@
1
+ import React, { forwardRef } from 'react';
2
+ import {
3
+ IconCamera,
4
+ IconFile,
5
+ IconHide,
6
+ IconIdTooFar,
7
+ } from '@incodetech/prizma-core-icons';
8
+ import { PrizmaCardListCommonIssues } from '@incodetech/prizma-core-web/card-list';
9
+ import { PrizmaListScreen, type PrizmaListScreenProps } from './ListScreen';
10
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
11
+ import type { DocumentCaptureStrings } from './DocumentCaptureStrings';
12
+ import './ScreenLayout.css';
13
+
14
+ /**
15
+ * The four `commonIssues` rows, in Figma order. Figma leads each row with an
16
+ * ICONLY PRO glyph (`Focus frame` · `Straighten` · `Moon` · `Camera close`);
17
+ * only the first has a counterpart in the Prizma bank, so the other three are
18
+ * the nearest canonical glyphs — GUIDELINES §10 ("icons: prizma-core-icons
19
+ * only") wins over the module Figma. DEVIATIONS.md #DC-23.
20
+ */
21
+ const ISSUE_ICONS = [
22
+ <IconIdTooFar key="frame" size="m" />, // out of frame ← Figma "Focus frame"
23
+ <IconFile key="folded" size="m" />, // folded page ← Figma "Straighten"
24
+ <IconHide key="shadow" size="m" />, // shadows ← Figma "Moon"
25
+ <IconCamera key="lens" size="m" />, // dirty lens ← Figma "Camera close"
26
+ ] as const;
27
+
28
+ export interface DocumentCaptureCommonIssuesScreenProps
29
+ extends Omit<
30
+ PrizmaListScreenProps,
31
+ 'title' | 'children' | 'ctaLabel' | 'verifiedLabel' | 'navLabel'
32
+ > {
33
+ /** Module copy — this screen reads the `commonIssues` slice. */
34
+ strings: DocumentCaptureStrings;
35
+ screenId?: string;
36
+ overrides?: PrizmaScreenOverrides;
37
+ onAction?: PrizmaScreenActionHandler;
38
+ }
39
+
40
+ /**
41
+ * Document Capture — common issues help sheet (purple section
42
+ * `documentCapture.commonIssues.default`), built on the `PrizmaListScreen`
43
+ * archetype (GUIDELINES.md §6-G).
44
+ *
45
+ * Like the module's `errors.noConnection`, this section carries no logo
46
+ * (DEVIATIONS.md #DC-22), so `showHeader={false}` drops the wordmark while the
47
+ * nav row stays reserved and the tag keeps its one fixed position.
48
+ *
49
+ * The list itself is Core's `PrizmaCardListCommonIssues`, whose Figma master IS
50
+ * this `list-unordered`: rows at Spacing/32, a 24px leading icon at Spacing/16,
51
+ * H5 title + Spacing/4 + Body/M description. Verified identical against the
52
+ * section's measured rows (icon 24 @ x0, text @ x40, title 19 / body @ +23,
53
+ * row pitch 32) — nothing re-implemented.
54
+ *
55
+ * Figma draws Spacing/32 between the Title and the list here while the three ID
56
+ * Capture list screens draw 24; the archetype ships ONE value, 24 (#F-31).
57
+ */
58
+ export const DocumentCaptureCommonIssuesScreen = forwardRef<
59
+ HTMLDivElement,
60
+ DocumentCaptureCommonIssuesScreenProps
61
+ >(
62
+ (
63
+ {
64
+ strings,
65
+ screenId = 'document-capture-common-issues',
66
+ showHeader = false,
67
+ overrides,
68
+ onAction,
69
+ ...shell
70
+ },
71
+ ref,
72
+ ) => (
73
+ <PrizmaListScreen
74
+ ref={ref}
75
+ showHeader={showHeader}
76
+ title={strings.commonIssues.title}
77
+ ctaLabel={strings.commonIssues.ctaLabel}
78
+ verifiedLabel={strings.verifiedLabel}
79
+ navLabel={strings.navLabel}
80
+ screenId={screenId}
81
+ overrides={overrides}
82
+ onAction={onAction}
83
+ {...shell}
84
+ >
85
+ <PrizmaCardListCommonIssues
86
+ items={strings.commonIssues.issues.map((issue, i) => ({
87
+ icon: ISSUE_ICONS[i % ISSUE_ICONS.length],
88
+ title: issue.title,
89
+ subtitle: issue.description,
90
+ }))}
91
+ />
92
+ </PrizmaListScreen>
93
+ ),
94
+ );
95
+ DocumentCaptureCommonIssuesScreen.displayName = 'DocumentCaptureCommonIssuesScreen';
96
+
97
+ export default DocumentCaptureCommonIssuesScreen;
@@ -0,0 +1,112 @@
1
+ import React, { forwardRef, type ReactNode } from 'react';
2
+ import { PrizmaIdCapture } from '@incodetech/prizma-core-web/id-capture';
3
+ import { PrizmaReviewScreen, type PrizmaReviewScreenProps } from './ReviewScreen';
4
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
5
+ import type {
6
+ DocumentCaptureConfirmStage,
7
+ DocumentCaptureStrings,
8
+ } from './DocumentCaptureStrings';
9
+ import './ScreenLayout.css';
10
+ import './DocumentCaptureLayout.css';
11
+
12
+ /** Stage → Core `PrizmaIdCapture` state: the review keeps the enabled frame,
13
+ * analyzing runs the component's own sweep, success turns the border positive. */
14
+ const CAPTURE_STATE = {
15
+ review: 'filled',
16
+ analyzing: 'analyzing',
17
+ success: 'success',
18
+ } as const;
19
+
20
+ export interface DocumentCaptureConfirmImageScreenProps
21
+ extends Omit<
22
+ PrizmaReviewScreenProps,
23
+ | 'title'
24
+ | 'subtitle'
25
+ | 'successTitle'
26
+ | 'analyzingLabel'
27
+ | 'analyzingState'
28
+ | 'primaryLabel'
29
+ | 'secondaryLabel'
30
+ | 'verifiedLabel'
31
+ | 'children'
32
+ | 'stageClassName'
33
+ | 'stage'
34
+ > {
35
+ /** Module copy — this screen reads the `confirmImage` slice. */
36
+ strings: DocumentCaptureStrings;
37
+ /** Which purple `documentCapture.confirmImage.*` section to render. */
38
+ stage?: DocumentCaptureConfirmStage;
39
+ /** The captured document still (an <img>). */
40
+ still?: ReactNode;
41
+ /** Loading-bar progress on `analyzing`, 0–100. Figma draws it part-filled. */
42
+ progress?: number;
43
+ screenId?: string;
44
+ overrides?: PrizmaScreenOverrides;
45
+ onAction?: PrizmaScreenActionHandler;
46
+ }
47
+
48
+ /**
49
+ * Document Capture — captured-photo confirmation, built on the Review archetype
50
+ * (GUIDELINES.md §6-H, `PrizmaReviewScreen`).
51
+ *
52
+ * Figma: purple sections `documentCapture.confirmImage.reviewPhoto` /
53
+ * `.analyzing` / `.success` — header, stage-verdict and CTA variants of this
54
+ * ONE screen. The stage is the SAME `PrizmaIdCapture type="poa"` instance the
55
+ * camera screen uses, now holding the captured `still` — success reuses the
56
+ * frame geometry with the positive color, never a new layout (GUIDELINES §7),
57
+ * satisfied by Core's own state axis.
58
+ *
59
+ * The archetype owns every offset (no nav, header → Spacing/32 → flexing media
60
+ * stage → Spacing/24 → CTA row → tag; `analyzing` swaps the Title for the
61
+ * loading bar and drops the CTA). This file used to hand-build that skeleton in
62
+ * `DocumentCaptureLayout.css` (DEVIATIONS #DC-22/24, now #REV-1) — all that
63
+ * stays module-side is the light-surface encrypted re-tint (#DC-25).
64
+ */
65
+ export const DocumentCaptureConfirmImageScreen = forwardRef<
66
+ HTMLDivElement,
67
+ DocumentCaptureConfirmImageScreenProps
68
+ >(
69
+ (
70
+ {
71
+ strings,
72
+ stage = 'review',
73
+ still,
74
+ progress = 62,
75
+ screenId = `document-capture-confirm-image-${stage}`,
76
+ overrides,
77
+ onAction,
78
+ ...shell
79
+ },
80
+ ref,
81
+ ) => (
82
+ <PrizmaReviewScreen
83
+ ref={ref}
84
+ stage={stage}
85
+ title={strings.confirmImage.title}
86
+ subtitle={strings.confirmImage.subtitle}
87
+ successTitle={strings.confirmImage.successTitle}
88
+ analyzingLabel={strings.confirmImage.analyzingLabel}
89
+ analyzingState="analyzing"
90
+ progress={progress}
91
+ stageClassName="document-capture-review-image"
92
+ primaryLabel={strings.confirmImage.ctaLabel}
93
+ secondaryLabel={strings.confirmImage.replaceLabel}
94
+ verifiedLabel={strings.verifiedLabel}
95
+ screenId={screenId}
96
+ overrides={overrides}
97
+ onAction={onAction}
98
+ {...shell}
99
+ >
100
+ <PrizmaIdCapture
101
+ type="poa"
102
+ state={CAPTURE_STATE[stage]}
103
+ still={still}
104
+ showEncryptedLabel={Boolean(strings.encryptedLabel)}
105
+ encryptedLabel={strings.encryptedLabel}
106
+ />
107
+ </PrizmaReviewScreen>
108
+ ),
109
+ );
110
+ DocumentCaptureConfirmImageScreen.displayName = 'DocumentCaptureConfirmImageScreen';
111
+
112
+ export default DocumentCaptureConfirmImageScreen;