@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,130 @@
1
+ /**
2
+ * The `email.verifyEmail.*` sections. All five draw the SAME layout — nav →
3
+ * Title (H2 + H5) → Spacing/32 → a single email field → CTA → tag — and differ
4
+ * only in field content and CTA state, which is what GUIDELINES §6-E means by
5
+ * "states are separate screens sharing the identical layout":
6
+ * - `default` — empty field showing the placeholder, CTA enabled
7
+ * - `typing` — focused field with a partial address
8
+ * - `filled` — focused field with a complete address
9
+ * - `error` — negative field + clear ✕ + the invalid-format row
10
+ * - `loading` — field greyed while the code is requested, spinner in the CTA
11
+ */
12
+ export type EmailInputVerifyState = 'default' | 'typing' | 'filled' | 'error' | 'loading';
13
+ /**
14
+ * The `email.OTP.*` sections — same layout, different code-field state:
15
+ * - `typing` — focused field, partial code, CTA enabled, and the line
16
+ * under the CTA is the RE-SEND COUNTDOWN, not the two links
17
+ * - `filled` — resting field, complete code, the two-link line
18
+ * - `processing` — code submitted: field greyed, spinner in the CTA, and the
19
+ * same sentence rendered INERT (no links)
20
+ * - `error` — wrong code: negative field + "Invalid code…", CTA disabled
21
+ * - `errorGeneric` — the second purple error section, same treatment carrying
22
+ * the generic "Something went wrong" row instead
23
+ */
24
+ export type EmailInputOtpState = 'typing' | 'filled' | 'processing' | 'error' | 'errorGeneric';
25
+ export interface EmailInputStrings {
26
+ /** "verified by" attribution in the footer tag. */
27
+ verifiedLabel: string;
28
+ /** Accessible name for the logo nav row. */
29
+ navLabel?: string;
30
+ /** email.verifyEmail.* */
31
+ verify: {
32
+ /** H2 ("Verify your email"). */
33
+ title: string;
34
+ /** H5 ("We'll send you a code to ensure it's yours"). */
35
+ subtitle: string;
36
+ /** Field placeholder ("Email"). */
37
+ placeholder: string;
38
+ /**
39
+ * Accessible label for the email field.
40
+ *
41
+ * DEVIATIONS #EI-2 — Figma draws NO visible label row above the field: the
42
+ * placeholder ("Email") carries the whole meaning, measured on
43
+ * `email.verifyYourEmail.default` (28:13802) and unchanged across all five
44
+ * purple sections. A screen reader would therefore reach an unnamed input,
45
+ * so the copy rides `aria-label` instead of a drawn row — Core wins over
46
+ * Figma on the accessible name, and nothing new is painted. This is the
47
+ * #PI-4 precedent applied unchanged; Phone Input resolved the identical
48
+ * conflict the same way.
49
+ */
50
+ fieldLabel?: string;
51
+ /** Accessible name for the clear ✕ affordance. Core ships no English
52
+ * default, so the row is only drawn when this is supplied. */
53
+ clearLabel?: string;
54
+ /** Error row on the `error` state ("Invalid email format"). */
55
+ errorText: string;
56
+ /** Primary CTA ("Continue"). */
57
+ ctaLabel: string;
58
+ /** Accessible busy label while the code is requested (`loading`). */
59
+ ctaLoadingLabel?: string;
60
+ };
61
+ /** email.OTP.* */
62
+ otp: {
63
+ /** H2 ("Enter the code we've sent to your email"). */
64
+ title: string;
65
+ /** H5 — carries the masked destination address, when a section shows one. */
66
+ subtitle?: string;
67
+ /** Accessible label for the code field (no visible label row in Figma). */
68
+ fieldLabel?: string;
69
+ /** Error row on `error` ("Invalid code. Please try again."). */
70
+ errorText: string;
71
+ /** Error row on `errorGeneric` ("Something went wrong"). */
72
+ genericErrorText: string;
73
+ /**
74
+ * The `typing` section draws a COUNTDOWN instead of the two links —
75
+ * "Resend code in 30s". Pre-formatted by the host, which owns the clock
76
+ * (a screen is one static spec state and runs no timer).
77
+ */
78
+ resendCountdown?: string;
79
+ /**
80
+ * The line under the CTA on `filled` / `processing` / both error sections
81
+ * is ONE sentence carrying TWO separate links:
82
+ * "Didn't receive the code? [Resend code] or [Change email]".
83
+ * Split into four strings because the links are independently actionable —
84
+ * the host must tell a re-send from a return to email entry — and because a
85
+ * locale needs to order the fragments itself. Omit `resendPrompt` to render
86
+ * no line at all. DEVIATIONS #PI-10.
87
+ */
88
+ resendPrompt?: string;
89
+ /** First link — re-sends the code. Emits `secondary`. */
90
+ resendLabel?: string;
91
+ /** The conjunction between the two links ("or"). */
92
+ resendSeparator?: string;
93
+ /** Second link — returns to email entry. Emits `tertiary`. */
94
+ changeEmailLabel?: string;
95
+ /** Primary CTA. */
96
+ ctaLabel: string;
97
+ /** Accessible / visible busy copy while the code is checked (`processing`). */
98
+ ctaLoadingLabel?: string;
99
+ };
100
+ /** email.OTP → `email.processing`: the post-submit spinner screen. */
101
+ processing: {
102
+ /** H2 shown under the spinner ("Processing…"). */
103
+ title: string;
104
+ subtitle?: string;
105
+ };
106
+ /** email.success */
107
+ success: {
108
+ /** H2 ("Email verified!"). */
109
+ title: string;
110
+ subtitle?: string;
111
+ };
112
+ /**
113
+ * email.error.somethingWentWrong.
114
+ *
115
+ * DEVIATIONS #EI-5 — this is the module's ONLY error verdict. The purple
116
+ * `email.error` section (3058:103116) holds exactly one screen, and the file
117
+ * draws no connectivity section anywhere. Phone Input's error screen carries
118
+ * a `variant` axis precisely because its Figma splits `somethingWentWrong`
119
+ * from a no-connection screen with a Wi-Fi glyph; this module has nothing to
120
+ * switch between, so `EmailInputErrorScreen` ships NO `variant` prop and no
121
+ * Wi-Fi glyph. Adding either would be inventing a state the spec does not
122
+ * have. If a connectivity section is added upstream, this row is where the
123
+ * axis gets reinstated.
124
+ */
125
+ error: {
126
+ title: string;
127
+ subtitle?: string;
128
+ ctaLabel: string;
129
+ };
130
+ }
@@ -0,0 +1,19 @@
1
+ // Email Input — copy contract.
2
+ //
3
+ // Figma: `📨 Email - Screens specs + Localization` (IovIhDAPjR7zxjC4NKZzfq,
4
+ // page 5:13191). Four purple parent sections:
5
+ // email.verifyEmail — default / typing / filled / error / loading
6
+ // email.OTP — typing / filled / processing / error(×2) + email.processing
7
+ // email.error — somethingWentWrong
8
+ // email.success — success
9
+ //
10
+ // Sibling of Phone Input (`PhoneInputStrings.ts`) and deliberately shaped the
11
+ // same way: same archetypes, same state axes, same inline-link split. The two
12
+ // real differences are that the entry field is a single email TextField (no
13
+ // dial-code pairing, so no `Input / Combined` and no country list) and that the
14
+ // module draws no Silent-Network-Auth and no connectivity section.
15
+ //
16
+ // No hardcoded English anywhere in a screen: every visible string arrives here,
17
+ // so the host's locale pack drives the module (the Figma file ships ES + PT
18
+ // columns alongside EN).
19
+ export {};
@@ -0,0 +1,37 @@
1
+ import React from 'react';
2
+ import { type PrizmaProcessingScreenProps } from './ProcessingScreen';
3
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
4
+ import type { EmailInputStrings } from './EmailInputStrings';
5
+ import './ScreenLayout.css';
6
+ export interface EmailInputSuccessScreenProps extends Omit<PrizmaProcessingScreenProps, 'status' | 'title' | 'subtitle' | 'verifiedLabel' | 'navLabel'> {
7
+ /** Module copy — this screen reads the `success` slice. */
8
+ strings: EmailInputStrings;
9
+ screenId?: string;
10
+ overrides?: PrizmaScreenOverrides;
11
+ onAction?: PrizmaScreenActionHandler;
12
+ }
13
+ /**
14
+ * Email Input — the verified verdict, built on the Processing archetype
15
+ * (GUIDELINES.md §6-C, `PrizmaProcessingScreen`).
16
+ *
17
+ * Figma: the purple `email.success` section. A centred status mark over a bare
18
+ * H2 ("Email verified!") with **no CTA and no subtitle** — the module hands
19
+ * control straight back to the flow.
20
+ *
21
+ * DEVIATIONS #EI-4 — this screen sits on archetype C while its Phone Input
22
+ * sibling sits on F, and that split is deliberate, not an oversight. Measured
23
+ * on `email.success` (31:19307): mark + H2 and then nothing — the CTA band is
24
+ * empty all the way down to the browser chrome, where the error verdict
25
+ * (40:33375) does draw "Try again" in the same slot. `phoneNumber.success`
26
+ * draws a button; `email.success` does not. §6-F reserves the Result archetype
27
+ * for "every verdict screen that needs a button" and keeps C as the pure
28
+ * no-button case, so following the archetype rule across two modules whose
29
+ * Figma disagrees is what produces two different archetypes here. Putting this
30
+ * screen on F to match its sibling would draw a button the spec omits.
31
+ *
32
+ * The mark is Core's outline status icon via `PrizmaTitle`'s icon slot — the
33
+ * module Figma still draws the two-tone filled disc, one icon sweep behind
34
+ * (DEVIATIONS #15, unchanged here).
35
+ */
36
+ export declare const EmailInputSuccessScreen: React.ForwardRefExoticComponent<EmailInputSuccessScreenProps & React.RefAttributes<HTMLDivElement>>;
37
+ export default EmailInputSuccessScreen;
@@ -0,0 +1,31 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { forwardRef } from 'react';
4
+ import { PrizmaProcessingScreen, } from './ProcessingScreen';
5
+ import './ScreenLayout.css';
6
+ /**
7
+ * Email Input — the verified verdict, built on the Processing archetype
8
+ * (GUIDELINES.md §6-C, `PrizmaProcessingScreen`).
9
+ *
10
+ * Figma: the purple `email.success` section. A centred status mark over a bare
11
+ * H2 ("Email verified!") with **no CTA and no subtitle** — the module hands
12
+ * control straight back to the flow.
13
+ *
14
+ * DEVIATIONS #EI-4 — this screen sits on archetype C while its Phone Input
15
+ * sibling sits on F, and that split is deliberate, not an oversight. Measured
16
+ * on `email.success` (31:19307): mark + H2 and then nothing — the CTA band is
17
+ * empty all the way down to the browser chrome, where the error verdict
18
+ * (40:33375) does draw "Try again" in the same slot. `phoneNumber.success`
19
+ * draws a button; `email.success` does not. §6-F reserves the Result archetype
20
+ * for "every verdict screen that needs a button" and keeps C as the pure
21
+ * no-button case, so following the archetype rule across two modules whose
22
+ * Figma disagrees is what produces two different archetypes here. Putting this
23
+ * screen on F to match its sibling would draw a button the spec omits.
24
+ *
25
+ * The mark is Core's outline status icon via `PrizmaTitle`'s icon slot — the
26
+ * module Figma still draws the two-tone filled disc, one icon sweep behind
27
+ * (DEVIATIONS #15, unchanged here).
28
+ */
29
+ export const EmailInputSuccessScreen = forwardRef(({ strings, screenId = 'email-input-success', overrides, onAction, ...shell }, ref) => (_jsx(PrizmaProcessingScreen, { ref: ref, status: "success", title: strings.success.title, subtitle: strings.success.subtitle, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell })));
30
+ EmailInputSuccessScreen.displayName = 'EmailInputSuccessScreen';
31
+ export default EmailInputSuccessScreen;
@@ -0,0 +1,46 @@
1
+ import React from 'react';
2
+ import { type PrizmaFormScreenProps } from './FormScreen';
3
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
4
+ import type { EmailInputStrings, EmailInputVerifyState } from './EmailInputStrings';
5
+ import './ScreenLayout.css';
6
+ export interface EmailInputVerifyScreenProps extends Omit<PrizmaFormScreenProps, 'title' | 'subtitle' | 'ctaLabel' | 'verifiedLabel' | 'children' | 'navLabel'> {
7
+ /** Module copy — this screen reads the `verify` slice. */
8
+ strings: EmailInputStrings;
9
+ /** Which purple `email.verifyEmail.*` section to render. Default `default`. */
10
+ state?: EmailInputVerifyState;
11
+ /** The address as typed. Empty renders the placeholder (`default`). */
12
+ value?: string;
13
+ screenId?: string;
14
+ overrides?: PrizmaScreenOverrides;
15
+ onAction?: PrizmaScreenActionHandler;
16
+ }
17
+ /**
18
+ * Email Input — the address-entry screen, built on the Form archetype
19
+ * (GUIDELINES.md §6-E, `PrizmaFormScreen`).
20
+ *
21
+ * ONE screen for all five purple `email.verifyEmail.*` sections
22
+ * (`default` / `typing` / `filled` / `error` / `loading`): measured against the
23
+ * 390 frames they share an identical layout — nav → Title (H2 + H5) →
24
+ * Spacing/32 → the email field → CTA → tag — and differ ONLY in field content
25
+ * and CTA state.
26
+ *
27
+ * Where this parts company with its Phone Input sibling: there is no dial-code
28
+ * pairing here, so no `Input / Combined` row and no module CSS at all — a bare
29
+ * `PrizmaTextField` is the whole field stack, and every offset stays the
30
+ * archetype's.
31
+ *
32
+ * Field treatments, one per Figma frame rather than one for all:
33
+ * - `default` — resting field, placeholder only
34
+ * - `typing` / `filled` — Figma draws BOTH with the focused blue border and a
35
+ * caret, differing only in how much of the address is typed
36
+ * - `error` — Core's negative treatment plus the clear ✕ Figma draws on this
37
+ * section alone
38
+ * - `loading` — the one section Figma greys, with the spinner in the CTA
39
+ *
40
+ * Core's `readOnly` is deliberately NOT used to make the field static: it
41
+ * paints the DISABLED surface (owner definition 2026-07-12), which would grey
42
+ * the four resting states Figma draws white. The field is uncontrolled instead
43
+ * (DEVIATIONS #PI-6).
44
+ */
45
+ export declare const EmailInputVerifyScreen: React.ForwardRefExoticComponent<EmailInputVerifyScreenProps & React.RefAttributes<HTMLDivElement>>;
46
+ export default EmailInputVerifyScreen;
@@ -0,0 +1,55 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { forwardRef } from 'react';
4
+ import { PrizmaTextField } from '@incodetech/prizma-core-web/text-field';
5
+ import { PrizmaFormScreen } from './FormScreen';
6
+ import './ScreenLayout.css';
7
+ /**
8
+ * Email Input — the address-entry screen, built on the Form archetype
9
+ * (GUIDELINES.md §6-E, `PrizmaFormScreen`).
10
+ *
11
+ * ONE screen for all five purple `email.verifyEmail.*` sections
12
+ * (`default` / `typing` / `filled` / `error` / `loading`): measured against the
13
+ * 390 frames they share an identical layout — nav → Title (H2 + H5) →
14
+ * Spacing/32 → the email field → CTA → tag — and differ ONLY in field content
15
+ * and CTA state.
16
+ *
17
+ * Where this parts company with its Phone Input sibling: there is no dial-code
18
+ * pairing here, so no `Input / Combined` row and no module CSS at all — a bare
19
+ * `PrizmaTextField` is the whole field stack, and every offset stays the
20
+ * archetype's.
21
+ *
22
+ * Field treatments, one per Figma frame rather than one for all:
23
+ * - `default` — resting field, placeholder only
24
+ * - `typing` / `filled` — Figma draws BOTH with the focused blue border and a
25
+ * caret, differing only in how much of the address is typed
26
+ * - `error` — Core's negative treatment plus the clear ✕ Figma draws on this
27
+ * section alone
28
+ * - `loading` — the one section Figma greys, with the spinner in the CTA
29
+ *
30
+ * Core's `readOnly` is deliberately NOT used to make the field static: it
31
+ * paints the DISABLED surface (owner definition 2026-07-12), which would grey
32
+ * the four resting states Figma draws white. The field is uncontrolled instead
33
+ * (DEVIATIONS #PI-6).
34
+ */
35
+ export const EmailInputVerifyScreen = forwardRef(({ strings, state = 'default', value, screenId = `email-input-verify-${state}`, overrides, onAction, ...shell }, ref) => {
36
+ const busy = state === 'loading';
37
+ const invalid = state === 'error';
38
+ const focused = state === 'typing' || state === 'filled';
39
+ return (_jsx(PrizmaFormScreen, { ref: ref, title: strings.verify.title, subtitle: strings.verify.subtitle, ctaLabel: strings.verify.ctaLabel,
40
+ /* Figma's `loading` section swaps the CTA label for Core's spinner. */
41
+ ctaLoading: busy, ctaLoadingLabel: strings.verify.ctaLoadingLabel, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell, children: _jsx(PrizmaTextField, { className:
42
+ /* Core's OWN static-focus modifier — the class its CSS already
43
+ implements beside `:focus-within`. `PrizmaTextField` has no
44
+ `forceState` prop the way `PrizmaDropdown` does, so this is how a
45
+ static spec state draws the focus ring without redeclaring any
46
+ styling (DEVIATIONS #PI-7). */
47
+ focused ? 'prizma-input-textfield--focused' : undefined, type: "email", inputMode: "email", autoComplete: "email", "aria-label": strings.verify.fieldLabel, placeholder: strings.verify.placeholder,
48
+ /* Uncontrolled: a screen is one static spec state, so no `onChange`
49
+ is needed and no warning is raised. */
50
+ defaultValue: value ?? '', disabled: busy, error: invalid, errorText: invalid ? strings.verify.errorText : undefined,
51
+ /* The clear ✕ is drawn on the `error` section only. */
52
+ clearable: invalid, clearLabel: strings.verify.clearLabel }) }));
53
+ });
54
+ EmailInputVerifyScreen.displayName = 'EmailInputVerifyScreen';
55
+ export default EmailInputVerifyScreen;
@@ -0,0 +1,62 @@
1
+ import React from 'react';
2
+ import { type PrizmaResultScreenProps } from './ResultScreen';
3
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
4
+ import type { ErrorScreensStrings, ErrorScreensVariant } from './ErrorScreensStrings';
5
+ import './ScreenLayout.css';
6
+ export interface ErrorScreensScreenProps extends Omit<PrizmaResultScreenProps, 'status' | 'title' | 'subtitle' | 'glyph' | 'ctaLabel' | 'linkLabel' | 'disclaimer' | 'progress' | 'verifiedLabel' | 'navLabel'> {
7
+ /** Family copy — this screen reads the slice its `variant` names. */
8
+ strings: ErrorScreensStrings;
9
+ /** Which section to render. Default `sessionExpired`. */
10
+ variant?: ErrorScreensVariant;
11
+ /** `unsupportedBrowser` only — the real session URL to show above the CTA. */
12
+ sessionUrl?: string;
13
+ /** `unsupportedBrowser` only — draw the "link copied" Snackbar (the frame's
14
+ * second state). Default `false`. */
15
+ copied?: boolean;
16
+ screenId?: string;
17
+ overrides?: PrizmaScreenOverrides;
18
+ onAction?: PrizmaScreenActionHandler;
19
+ }
20
+ /**
21
+ * Error screens — the session-level failures, built on the Result archetype
22
+ * (GUIDELINES.md §6-F, `PrizmaResultScreen`).
23
+ *
24
+ * ONE screen for all three generic sections. They draw the identical skeleton —
25
+ * a centred mark + title + supporting line over a CTA band — and differ only in
26
+ * copy, in which mark leads, and in what the band carries:
27
+ *
28
+ * - `sessionExpired` — canonical negative mark, NO CTA (a dead end)
29
+ * - `noConnection` — Wi-Fi glyph, "Refresh"
30
+ * - `unsupportedBrowser` — canonical negative mark, the session URL above
31
+ * "Copy link", with "Continue anyways" under it
32
+ *
33
+ * Chrome is CONSTANT. All three frames are drawn without the logo header and
34
+ * without the verified tag; both are kept here, because the owner rule of
35
+ * 2026-08-18 (#F-30, #F-34) makes the chrome the same on every screen so
36
+ * nothing shifts between states, and every module's connectivity screen must
37
+ * read identically (#PI-8). Same call `GeolocationErrorScreen` already makes
38
+ * for its own `noNetwork`.
39
+ *
40
+ * Three things Figma draws that this screen does not, all reported rather than
41
+ * worked around:
42
+ * - **The browser-window mark.** `unsupportedBrowser` leads with a red browser
43
+ * window carrying an ✕. The canonical bank has no such glyph, so the screen
44
+ * uses Core's negative status mark — the nearest thing that means the same
45
+ * (rule 1, GUIDELINES §10; the same substitution logic as #10 / #DC-23).
46
+ * Mint the glyph or bless the substitution.
47
+ * - **Links inside the supporting line.** Figma renders "Safari" and "Chrome"
48
+ * as blue in-sentence links; Core's `PrizmaTitle` subtitle is a plain
49
+ * `string`, so the sentence renders in one colour. Same open Core request as
50
+ * the step rows: a `ReactNode` subtitle.
51
+ * - **"Continue anyways" above the CTA.** Archetype F renders its tertiary link
52
+ * BELOW the button stack, so this screen ships inverted against its frame.
53
+ * The archetype owns the order (see `PermissionsAllowScreen` for the same
54
+ * escalation).
55
+ *
56
+ * The "link copied" Snackbar rides the archetype's `progress` slot — the only
57
+ * block that renders BETWEEN the nav and the content, which is exactly where
58
+ * the frame draws it. `bandContent` would have put it above the buttons instead
59
+ * (the workaround #VS-17 rejected).
60
+ */
61
+ export declare const ErrorScreensScreen: React.ForwardRefExoticComponent<ErrorScreensScreenProps & React.RefAttributes<HTMLDivElement>>;
62
+ export default ErrorScreensScreen;
@@ -0,0 +1,71 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { forwardRef } from 'react';
4
+ import { IconWifiOff } from '@incodetech/prizma-core-icons';
5
+ import { PrizmaSnackbar } from '@incodetech/prizma-core-web/snackbar';
6
+ import { PrizmaResultScreen } from './ResultScreen';
7
+ import './ScreenLayout.css';
8
+ /**
9
+ * Error screens — the session-level failures, built on the Result archetype
10
+ * (GUIDELINES.md §6-F, `PrizmaResultScreen`).
11
+ *
12
+ * ONE screen for all three generic sections. They draw the identical skeleton —
13
+ * a centred mark + title + supporting line over a CTA band — and differ only in
14
+ * copy, in which mark leads, and in what the band carries:
15
+ *
16
+ * - `sessionExpired` — canonical negative mark, NO CTA (a dead end)
17
+ * - `noConnection` — Wi-Fi glyph, "Refresh"
18
+ * - `unsupportedBrowser` — canonical negative mark, the session URL above
19
+ * "Copy link", with "Continue anyways" under it
20
+ *
21
+ * Chrome is CONSTANT. All three frames are drawn without the logo header and
22
+ * without the verified tag; both are kept here, because the owner rule of
23
+ * 2026-08-18 (#F-30, #F-34) makes the chrome the same on every screen so
24
+ * nothing shifts between states, and every module's connectivity screen must
25
+ * read identically (#PI-8). Same call `GeolocationErrorScreen` already makes
26
+ * for its own `noNetwork`.
27
+ *
28
+ * Three things Figma draws that this screen does not, all reported rather than
29
+ * worked around:
30
+ * - **The browser-window mark.** `unsupportedBrowser` leads with a red browser
31
+ * window carrying an ✕. The canonical bank has no such glyph, so the screen
32
+ * uses Core's negative status mark — the nearest thing that means the same
33
+ * (rule 1, GUIDELINES §10; the same substitution logic as #10 / #DC-23).
34
+ * Mint the glyph or bless the substitution.
35
+ * - **Links inside the supporting line.** Figma renders "Safari" and "Chrome"
36
+ * as blue in-sentence links; Core's `PrizmaTitle` subtitle is a plain
37
+ * `string`, so the sentence renders in one colour. Same open Core request as
38
+ * the step rows: a `ReactNode` subtitle.
39
+ * - **"Continue anyways" above the CTA.** Archetype F renders its tertiary link
40
+ * BELOW the button stack, so this screen ships inverted against its frame.
41
+ * The archetype owns the order (see `PermissionsAllowScreen` for the same
42
+ * escalation).
43
+ *
44
+ * The "link copied" Snackbar rides the archetype's `progress` slot — the only
45
+ * block that renders BETWEEN the nav and the content, which is exactly where
46
+ * the frame draws it. `bandContent` would have put it above the buttons instead
47
+ * (the workaround #VS-17 rejected).
48
+ */
49
+ export const ErrorScreensScreen = forwardRef(({ strings, variant = 'sessionExpired', sessionUrl, copied = false, screenId = `error-screens-${variant}`, overrides, onAction, ...shell }, ref) => {
50
+ const unsupported = variant === 'unsupportedBrowser';
51
+ const noConnection = variant === 'noConnection';
52
+ const copy = unsupported
53
+ ? strings.unsupportedBrowser
54
+ : noConnection
55
+ ? strings.noConnection
56
+ : strings.sessionExpired;
57
+ return (_jsx(PrizmaResultScreen, { ref: ref,
58
+ /* The connectivity screen leads with the Wi-Fi glyph instead of a
59
+ status mark; the other two carry the canonical negative mark. */
60
+ status: noConnection ? 'none' : 'error', glyph: noConnection ? (_jsx("span", { className: [
61
+ 'prizma-screen-layout__glyph',
62
+ 'prizma-screen-layout__glyph--negative',
63
+ overrides?.align === 'left' ? 'prizma-screen-layout__glyph--left' : '',
64
+ ]
65
+ .filter(Boolean)
66
+ .join(' '), children: _jsx(IconWifiOff, { size: "l" }) })) : undefined, progress: unsupported && copied ? (_jsx(PrizmaSnackbar, { state: "success", contentResizing: "fill", children: strings.unsupportedBrowser.copiedLabel })) : undefined, title: copy.title, subtitle: copy.subtitle, disclaimer: unsupported
67
+ ? sessionUrl ?? strings.unsupportedBrowser.urlPlaceholder
68
+ : undefined, ctaLabel: copy.ctaLabel, linkLabel: unsupported ? strings.unsupportedBrowser.continueLabel : undefined, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell }));
69
+ });
70
+ ErrorScreensScreen.displayName = 'ErrorScreensScreen';
71
+ export default ErrorScreensScreen;
@@ -0,0 +1,31 @@
1
+ /**
2
+ * The three sections.
3
+ * - `sessionExpired` — the link is dead; the user must go back to the provider
4
+ * - `noConnection` — the network went away; retry when it returns
5
+ * - `unsupportedBrowser` — the SDK cannot run here; copy the link and move
6
+ */
7
+ export type ErrorScreensVariant = 'sessionExpired' | 'noConnection' | 'unsupportedBrowser';
8
+ export interface ErrorScreensCopy {
9
+ title: string;
10
+ subtitle?: string;
11
+ /** Primary CTA. Omit — as `sessionExpired` does — for a dead end. */
12
+ ctaLabel?: string;
13
+ }
14
+ export interface ErrorScreensStrings {
15
+ /** Accessible name for the logo nav region (i18n — no baked-in English). */
16
+ navLabel?: string;
17
+ /** "verified by" attribution copy for the footer tag. */
18
+ verifiedLabel: string;
19
+ sessionExpired: ErrorScreensCopy;
20
+ noConnection: ErrorScreensCopy;
21
+ unsupportedBrowser: ErrorScreensCopy & {
22
+ /** The session URL shown above the CTA, for pasting into a supported
23
+ * browser. A host passes the real one through `sessionUrl`; this is the
24
+ * fallback the gallery draws. */
25
+ urlPlaceholder?: string;
26
+ /** Tertiary link — "Continue anyways". */
27
+ continueLabel: string;
28
+ /** Snackbar copy after the link is copied — the frame's second state. */
29
+ copiedLabel: string;
30
+ };
31
+ }
@@ -0,0 +1,28 @@
1
+ // Error screens — copy contract for the GENERIC family.
2
+ //
3
+ // Figma: `Module Generic Screens` (qGJjfL4O0JSjz1x4tOjJn8):
4
+ //
5
+ // 79:360 ErrorSessionReopen → `sessionExpired`
6
+ // 214:3357 Geolocation.error.noNetwork → `noConnection`
7
+ // 240:154 Error screen - Unsupported browser → `unsupportedBrowser`
8
+ //
9
+ // The three failures that belong to the SESSION rather than to any module: the
10
+ // link has expired, the network went away, the browser cannot run the SDK.
11
+ // Every module can hit all three, which is why they are drawn once in the
12
+ // generic file — a user who sees three different "no internet" screens in one
13
+ // journey reads them as three different products.
14
+ //
15
+ // `noConnection` is deliberately the same screen every module already ships
16
+ // (`FaceCaptureNoConnectionScreen`, `IdCaptureNoConnectionScreen`,
17
+ // `DocumentCaptureNoConnectionScreen`, `GeolocationErrorScreen`'s `noNetwork`).
18
+ // The generic entry is where the shape is DOCUMENTED; the module copies stay
19
+ // put until someone retires them deliberately, because deleting four exported
20
+ // components to save one screen is a breaking change for every host that
21
+ // imports them. Flagged for the owner.
22
+ //
23
+ // The family has no flow of its own: each of these is entered from wherever the
24
+ // session broke and exits to a retry or to nothing. Core Lab lists it as a
25
+ // library of states.
26
+ //
27
+ // No hardcoded English anywhere in a screen: every visible string arrives here.
28
+ export {};
@@ -0,0 +1,32 @@
1
+ import React, { type ReactNode } from 'react';
2
+ import { type PrizmaCaptureScreenProps } from './CaptureScreen';
3
+ import type { FaceCaptureCapturingState, FaceCaptureStrings } from './FaceCaptureStrings';
4
+ import './FaceCaptureLayout.css';
5
+ export interface FaceCaptureCapturingScreenProps extends Omit<PrizmaCaptureScreenProps, 'state' | 'title' | 'feedbackText' | 'statusLabels' | 'verifiedLabel' | 'navLabel'> {
6
+ /** Module copy — this screen reads the `capturing` slice (+ shared labels). */
7
+ strings: FaceCaptureStrings;
8
+ /** Which purple `faceCapture.capturing.*` spec section to render. */
9
+ state?: FaceCaptureCapturingState;
10
+ /** Live camera feed (<video>) or sample still (<img>) for the ring window. */
11
+ camera?: ReactNode;
12
+ }
13
+ /**
14
+ * Face Capture — auto-capture stage (Archetype B, GUIDELINES.md §6-B).
15
+ * Figma: the 15 purple `faceCapture.capturing.*` sections — ring-state and
16
+ * instruction-copy variants of this ONE screen. Ring, silhouette, glow, and the
17
+ * instruction line all come from Core's PrizmaSelfieCapture via the
18
+ * CaptureScreen archetype — never re-implemented (§7).
19
+ *
20
+ * The instruction goes to the component's own `feedbackText` slot, NOT to the
21
+ * archetype's H2-below-the-ring slot: in Figma the line lives INSIDE the
22
+ * `Capture / Selfie` instance at Spacing/32 under the ring (measured y=407 vs
23
+ * ring bottom 375), which is exactly where the component puts it. Routing it
24
+ * through the archetype's `__below-capture` H2 instead would add the
25
+ * component's own 40px bottom padding on top of that 32px and change the type
26
+ * role — DEVIATIONS.md #12.
27
+ *
28
+ * The archetype adds no offsets of its own — the component owns that spacing
29
+ * (same deviation row).
30
+ */
31
+ export declare const FaceCaptureCapturingScreen: React.ForwardRefExoticComponent<FaceCaptureCapturingScreenProps & React.RefAttributes<HTMLDivElement>>;
32
+ export default FaceCaptureCapturingScreen;
@@ -0,0 +1,53 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { forwardRef } from 'react';
4
+ import { PrizmaCaptureScreen } from './CaptureScreen';
5
+ import './FaceCaptureLayout.css';
6
+ /**
7
+ * Purple `faceCapture.capturing.*` state → Core PrizmaSelfieCapture ring state.
8
+ * - `initiating` — grey ring, blank disc, camera not yet revealed (`enabled`).
9
+ * - `getReady` — face detected, blue glow arc while the capture happens
10
+ * (`ready`). NOTE: the module Figma cell still shows the silhouette during
11
+ * this state; Core hides it per the owner's choreography (2026-07-14) —
12
+ * DEVIATIONS.md #13. The design system wins.
13
+ * - every feedback state — camera + silhouette guide (`empty`) with the
14
+ * instruction line below the ring.
15
+ */
16
+ const SELFIE_STATE = {
17
+ initiating: 'enabled',
18
+ getReady: 'ready',
19
+ alignFace: 'empty',
20
+ lookAtCamera: 'empty',
21
+ tooDark: 'empty',
22
+ tooBright: 'empty',
23
+ eyesClosed: 'empty',
24
+ maskDetected: 'empty',
25
+ glassesDetected: 'empty',
26
+ hatDetected: 'empty',
27
+ moveRight: 'empty',
28
+ moveLeft: 'empty',
29
+ moveCloser: 'empty',
30
+ moveAway: 'empty',
31
+ faceOcclusion: 'empty',
32
+ };
33
+ /**
34
+ * Face Capture — auto-capture stage (Archetype B, GUIDELINES.md §6-B).
35
+ * Figma: the 15 purple `faceCapture.capturing.*` sections — ring-state and
36
+ * instruction-copy variants of this ONE screen. Ring, silhouette, glow, and the
37
+ * instruction line all come from Core's PrizmaSelfieCapture via the
38
+ * CaptureScreen archetype — never re-implemented (§7).
39
+ *
40
+ * The instruction goes to the component's own `feedbackText` slot, NOT to the
41
+ * archetype's H2-below-the-ring slot: in Figma the line lives INSIDE the
42
+ * `Capture / Selfie` instance at Spacing/32 under the ring (measured y=407 vs
43
+ * ring bottom 375), which is exactly where the component puts it. Routing it
44
+ * through the archetype's `__below-capture` H2 instead would add the
45
+ * component's own 40px bottom padding on top of that 32px and change the type
46
+ * role — DEVIATIONS.md #12.
47
+ *
48
+ * The archetype adds no offsets of its own — the component owns that spacing
49
+ * (same deviation row).
50
+ */
51
+ export const FaceCaptureCapturingScreen = forwardRef(({ strings, state = 'initiating', camera, screenId = 'face-capture-capturing', className, ...rest }, ref) => (_jsx(PrizmaCaptureScreen, { ref: ref, className: className, state: SELFIE_STATE[state], camera: camera, feedbackText: strings.capturing[state], verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, ...rest })));
52
+ FaceCaptureCapturingScreen.displayName = 'FaceCaptureCapturingScreen';
53
+ export default FaceCaptureCapturingScreen;
@@ -0,0 +1,18 @@
1
+ /* Face Capture — module layout additions.
2
+ *
3
+ * ONLY what the foundation archetypes do not already own. Every value is a
4
+ * token; each departure from GUIDELINES.md carries a numbered row in
5
+ * DEVIATIONS.md.
6
+ *
7
+ * The pilot's other three additions were promoted INTO the foundation
8
+ * (`ScreenLayout.css`) once they proved to be recurring patterns rather than
9
+ * module quirks: the CTA band recipe (`__band`, DEVIATIONS #8), the no-nav
10
+ * content offset for generic errors (`__content--no-nav`, #9), and the capture
11
+ * stage offset fix (`__content--capture` now adds nothing, #12). Wave agents
12
+ * inherit all three as correct defaults.
13
+ */
14
+
15
+ /* Nothing module-specific is left: the non-status glyph slot this file used to
16
+ * own (`.face-capture-glyph`) was the third byte-identical copy of one pattern,
17
+ * so it moved to `ScreenLayout.css` as `__glyph` — DEVIATIONS #DC-29, closed.
18
+ * The file is kept as the module's landing place for future additions. */