@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,230 @@
1
+ import React, { forwardRef } from 'react';
2
+ import { PrizmaTextField } from '@incodetech/prizma-core-web/text-field';
3
+ import { PrizmaTitle } from '@incodetech/prizma-core-web/title';
4
+ import { PrizmaButton } from '@incodetech/prizma-core-web/button';
5
+ import { PrizmaStepper } from '@incodetech/prizma-core-web/stepper';
6
+ import { PrizmaFormScreen, type PrizmaFormScreenProps } from './FormScreen';
7
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
8
+ import type { EkybOwnersState, EkybOwnersValues, EkybStrings } from './EkybStrings';
9
+ import './ScreenLayout.css';
10
+
11
+ export interface EkybOwnersScreenProps
12
+ extends Omit<
13
+ PrizmaFormScreenProps,
14
+ | 'title'
15
+ | 'subtitle'
16
+ | 'ctaLabel'
17
+ | 'ctaLoading'
18
+ | 'ctaLoadingLabel'
19
+ | 'verifiedLabel'
20
+ | 'children'
21
+ | 'navLabel'
22
+ | 'linkLabel'
23
+ | 'linkContent'
24
+ | 'progress'
25
+ | 'scrollFields'
26
+ > {
27
+ /** Module copy — this screen reads the `owners` slice. */
28
+ strings: EkybStrings;
29
+ /** Which purple `eKYB.UBO.*` / `eKYB.director.*` section to render.
30
+ * Default `uboEmpty`. */
31
+ state?: EkybOwnersState;
32
+ /** The four field values. Empty renders the resting empty field. */
33
+ values?: EkybOwnersValues;
34
+ screenId?: string;
35
+ overrides?: PrizmaScreenOverrides;
36
+ onAction?: PrizmaScreenActionHandler;
37
+ }
38
+
39
+ /**
40
+ * eKYB — step 3 of the wizard, the people behind the company, built on the Form
41
+ * archetype (GUIDELINES.md §6-E, `PrizmaFormScreen`).
42
+ *
43
+ * ONE screen for BOTH purple parents — `eKYB.UBO` (5707:90967) and
44
+ * `eKYB.director` (5707:99490) — because measured against the 390 frames the
45
+ * director frames ARE the UBO frames with a second block revealed: same stepper
46
+ * position, same H2 "Beneficial Owner", same H5, same first two fields, same
47
+ * "Add another UBO (Optional)" link, same CTA band. Building them as two files
48
+ * would have duplicated the UBO block and given it two places to drift.
49
+ *
50
+ * Five sections, five distinct renderings:
51
+ * - `uboEmpty` 2115:20619 — UBO block only, both fields blank
52
+ * - `uboFilled` 5707:49608 — UBO block only, both fields carrying a value
53
+ * - `directorEmpty` 5655:56032 — UBO block + Director block, all four blank
54
+ * - `directorFilled` 5707:49782 — UBO block + Director block, all four filled
55
+ * - `loading` 5663:94390 — `directorFilled` with the submission in
56
+ * flight: every field, both "Add another" links and "Back" go inert, and the
57
+ * spinner rides the CTA, never a field (the Phone Input lesson, #PI-5)
58
+ *
59
+ * Four things are deliberate:
60
+ *
61
+ * 1. The stack SCROLLS inside the content column — now through the archetype's
62
+ * own `scrollFields` prop, not a module stylesheet. The director frames are
63
+ * 1201–1245 tall against a 844 screen that never reflows (#17); without the
64
+ * release the surplus paints over the CTA, and the second "Add another…"
65
+ * link — the element `directorEmpty` exists to draw — never reaches the
66
+ * screen at all. The module used to hand-roll `overflow-y: auto` in
67
+ * `EkybLayout.css`; the archetype absorbed it (DEVIATIONS #DSC-2) and that
68
+ * file is now deleted.
69
+ * 2. The Director block's heading is Core's OWN `PrizmaTitle` (H2 + H5, left
70
+ * variant) composed into the archetype's `children` slot — the same
71
+ * component the archetype uses for the screen title, so the typography is
72
+ * the design system's and nothing is hand-rolled. It does mean the screen
73
+ * carries TWO H2s, which GUIDELINES §4 does not anticipate; reported as a
74
+ * deviation rather than resolved silently.
75
+ * 3. Both "Add another…" links are Core's `PrizmaButton variant="tertiary-link"`
76
+ * and sit INSIDE the field stack, which is where Figma draws them — attached
77
+ * to the block they extend, above the CTA band — not in the CTA column.
78
+ * They are two SEPARATELY actionable flows (#PI-10), but
79
+ * `PrizmaScreenAction` offers only one non-primary/non-secondary type, so
80
+ * they are told apart by an action-qualified `screenId` until the contract
81
+ * gains a discriminator — reported in `archetypeGaps`.
82
+ * 4. Only `loading` passes `disabled`. Core's `readOnly` would grey the other
83
+ * four sections too, which Figma draws white (#PI-6).
84
+ *
85
+ * The three-segment journey bar sits above the title on every one of the five
86
+ * sections, in the archetype's `progress` slot. This is step 3 of 3, so the bar
87
+ * runs at `currentState={3}` (5919:71500 / 6340:63438 — segments 1–2 pale,
88
+ * segment 3 solid) and `loading` flips it to `'Completed'`, which is what turns
89
+ * all three segments GREEN in 5919:73354. That green beat is the treatment that
90
+ * distinguishes `loading` from `directorFilled` above the fold, so it is not
91
+ * optional chrome.
92
+ */
93
+ export const EkybOwnersScreen = forwardRef<HTMLDivElement, EkybOwnersScreenProps>(
94
+ (
95
+ {
96
+ strings,
97
+ state = 'uboEmpty',
98
+ values,
99
+ screenId = `ekyb-owners-${state}`,
100
+ className,
101
+ overrides,
102
+ onAction,
103
+ ...shell
104
+ },
105
+ ref,
106
+ ) => {
107
+ const copy = strings.owners;
108
+ const busy = state === 'loading';
109
+ const showDirector =
110
+ state === 'directorEmpty' || state === 'directorFilled' || busy;
111
+
112
+ return (
113
+ <PrizmaFormScreen
114
+ ref={ref}
115
+ className={['ekyb-owners', className].filter(Boolean).join(' ')}
116
+ /* The archetype's own scrolling field stack — two titled blocks, four
117
+ fields and two links do not fit a 844 frame. No module CSS. */
118
+ scrollFields
119
+ /* Step 3 of 3, and GREEN across all three once the submission runs. */
120
+ progress={
121
+ <PrizmaStepper
122
+ steps={3}
123
+ currentState={busy ? 'Completed' : 3}
124
+ showIcons={false}
125
+ aria-label={strings.stepperLabel}
126
+ completedValueText={strings.stepperCompletedLabel}
127
+ />
128
+ }
129
+ title={copy.title}
130
+ subtitle={copy.subtitle}
131
+ ctaLabel={copy.ctaLabel}
132
+ /* `loading` swaps the CTA label for Core's designed spinner. */
133
+ ctaLoading={busy}
134
+ ctaLoadingLabel={copy.ctaLoadingLabel}
135
+ linkContent={
136
+ <PrizmaButton
137
+ variant="secondary"
138
+ size="L"
139
+ /* 5663:94390 greys "Back" while the submission runs. */
140
+ disabled={busy}
141
+ onClick={() => onAction?.({ type: 'secondary', screenId })}
142
+ >
143
+ {strings.backLabel}
144
+ </PrizmaButton>
145
+ }
146
+ verifiedLabel={strings.verifiedLabel}
147
+ navLabel={strings.navLabel}
148
+ screenId={screenId}
149
+ overrides={{ align: overrides?.align ?? 'left', logo: overrides?.logo }}
150
+ onAction={onAction}
151
+ {...shell}
152
+ >
153
+ <PrizmaTextField
154
+ label={copy.uboName.label}
155
+ placeholder={copy.uboName.placeholder}
156
+ required
157
+ requiredHint={strings.requiredHint}
158
+ autoComplete="off"
159
+ defaultValue={values?.uboName ?? ''}
160
+ disabled={busy}
161
+ />
162
+ {/* Figma draws no asterisk on the surname — it is optional. */}
163
+ <PrizmaTextField
164
+ label={copy.uboSurname.label}
165
+ placeholder={copy.uboSurname.placeholder}
166
+ autoComplete="off"
167
+ defaultValue={values?.uboSurname ?? ''}
168
+ disabled={busy}
169
+ />
170
+ <PrizmaButton
171
+ variant="tertiary-link"
172
+ size="L"
173
+ disabled={busy}
174
+ /* Action-qualified id: the two "Add another…" links are different
175
+ flows and must stay distinguishable (#PI-10), but the action
176
+ contract has no per-action discriminator yet. */
177
+ onClick={() =>
178
+ onAction?.({ type: 'tertiary', screenId: `${screenId}-add-ubo` })
179
+ }
180
+ >
181
+ {copy.addUboLabel}
182
+ </PrizmaButton>
183
+
184
+ {showDirector ? (
185
+ <>
186
+ {/* Core's own Title component — the same H2 + H5 pair the archetype
187
+ renders at the top of the screen, so the Director block's
188
+ typography is the design system's, not a copy. */}
189
+ <PrizmaTitle
190
+ variant="left"
191
+ title={copy.directorTitle}
192
+ showSubtitle={Boolean(copy.directorSubtitle)}
193
+ subtitle={copy.directorSubtitle}
194
+ />
195
+ <PrizmaTextField
196
+ label={copy.directorName.label}
197
+ placeholder={copy.directorName.placeholder}
198
+ autoComplete="off"
199
+ defaultValue={values?.directorName ?? ''}
200
+ disabled={busy}
201
+ />
202
+ <PrizmaTextField
203
+ label={copy.directorSurname.label}
204
+ placeholder={copy.directorSurname.placeholder}
205
+ autoComplete="off"
206
+ defaultValue={values?.directorSurname ?? ''}
207
+ disabled={busy}
208
+ />
209
+ <PrizmaButton
210
+ variant="tertiary-link"
211
+ size="L"
212
+ disabled={busy}
213
+ onClick={() =>
214
+ onAction?.({
215
+ type: 'tertiary',
216
+ screenId: `${screenId}-add-director`,
217
+ })
218
+ }
219
+ >
220
+ {copy.addDirectorLabel}
221
+ </PrizmaButton>
222
+ </>
223
+ ) : null}
224
+ </PrizmaFormScreen>
225
+ );
226
+ },
227
+ );
228
+ EkybOwnersScreen.displayName = 'EkybOwnersScreen';
229
+
230
+ export default EkybOwnersScreen;
@@ -0,0 +1,57 @@
1
+ import React, { forwardRef } from 'react';
2
+ import {
3
+ PrizmaProcessingScreen,
4
+ type PrizmaProcessingScreenProps,
5
+ } from './ProcessingScreen';
6
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
7
+ import type { EkybStrings } from './EkybStrings';
8
+ import './ScreenLayout.css';
9
+
10
+ export interface EkybProcessingScreenProps
11
+ extends Omit<
12
+ PrizmaProcessingScreenProps,
13
+ 'status' | 'title' | 'subtitle' | 'verifiedLabel' | 'navLabel'
14
+ > {
15
+ /** Module copy — this screen reads the `processing` slice. */
16
+ strings: EkybStrings;
17
+ screenId?: string;
18
+ overrides?: PrizmaScreenOverrides;
19
+ onAction?: PrizmaScreenActionHandler;
20
+ }
21
+
22
+ /**
23
+ * eKYB — the in-flight screen (`eKYB.processing`, 2116:34749), built on the
24
+ * Processing archetype (GUIDELINES.md §6-C, `PrizmaProcessingScreen`).
25
+ *
26
+ * The pure spinner + H2 case with no button, which is exactly what §6-F reserves
27
+ * for C rather than the Result archetype: the frame centres Core's spinner over
28
+ * the status line in the middle of the column, keeps the logo header and the
29
+ * verified tag, and offers the operator nothing to press while the submission is
30
+ * checked.
31
+ *
32
+ * The title block is CENTRED here — unlike every eKYB form page, which
33
+ * left-aligns — because the archetype centres the whole column and Figma draws
34
+ * it that way; no alignment override is passed.
35
+ */
36
+ export const EkybProcessingScreen = forwardRef<HTMLDivElement, EkybProcessingScreenProps>(
37
+ (
38
+ { strings, screenId = 'ekyb-processing', overrides, onAction, ...shell },
39
+ ref,
40
+ ) => (
41
+ <PrizmaProcessingScreen
42
+ ref={ref}
43
+ status="loading"
44
+ title={strings.processing.title}
45
+ subtitle={strings.processing.subtitle}
46
+ verifiedLabel={strings.verifiedLabel}
47
+ navLabel={strings.navLabel}
48
+ screenId={screenId}
49
+ overrides={overrides}
50
+ onAction={onAction}
51
+ {...shell}
52
+ />
53
+ ),
54
+ );
55
+ EkybProcessingScreen.displayName = 'EkybProcessingScreen';
56
+
57
+ export default EkybProcessingScreen;
@@ -0,0 +1,239 @@
1
+ // eKYB — copy contract.
2
+ //
3
+ // Figma: `💼 eKYB - Screens specs + Localization` (TWgYZVhurQCizfC4tfLEut,
4
+ // page 2003:12082, purple parent section 2116:23785). The file is SHARED with
5
+ // eKYC (sections 2098:20865 and 2101:7869) — none of those frames belong to this
6
+ // module and none is rebuilt here.
7
+ //
8
+ // SIX purple parent sections, fifteen master frames:
9
+ // eKYB.country (5707:78603) — empty 2115:20444 · filled 5655:42140 ·
10
+ // dropdown 5707:54174
11
+ // eKYB.Bdetails (5707:87449) — empty 2115:21864 · filled 5663:83132
12
+ // eKYB.Bdetails (6340:32594) — the SECOND section of that name, the address
13
+ // page: empty 6340:50731 · filled 6340:38197
14
+ // eKYB.UBO (5707:90967) — empty 2115:20619 · filled 5707:49608
15
+ // eKYB.director (5707:99490) — empty 5655:56032 · filled 5707:49782 ·
16
+ // loading 5663:94390
17
+ // (unnamed) (5707:99491) — processing 2116:34749 · error 2116:34743 ·
18
+ // success 2116:34709
19
+ //
20
+ // The module is business onboarding: the operator picks the country of
21
+ // registration, files the company's identity and address, names the beneficial
22
+ // owner(s) and director(s), and the submission is checked.
23
+ //
24
+ // No hardcoded English anywhere in a screen: every visible string arrives here,
25
+ // so the host's locale pack drives the module (the Figma file ships ES + PT
26
+ // columns beside the EN one).
27
+
28
+ /**
29
+ * The `eKYB.country.*` sections. All three share the archetype-E skeleton —
30
+ * nav → Title (H2 + H5) → Spacing/32 → one labelled dropdown → "Continue" →
31
+ * tag — and differ ONLY in what the dropdown carries:
32
+ * - `empty` — the placeholder ("Select country"), nothing chosen
33
+ * - `filled` — a country selected, drawn as flag + name in the closed field
34
+ * - `dropdown` — the same selection with the MENU OPEN over the form: search
35
+ * bar plus the country rows (Core's documentation-only `forceOpen`, since a
36
+ * screen is one static spec state and never a live interaction)
37
+ */
38
+ export type EkybCountryState = 'empty' | 'filled' | 'dropdown';
39
+
40
+ /** The two `eKYB.Bdetails` (business identity) sections: every field on its
41
+ * resting empty surface, or every field carrying a value. */
42
+ export type EkybBusinessState = 'empty' | 'filled';
43
+
44
+ /** The two address sections (the SECOND `eKYB.Bdetails` parent). Same axis. */
45
+ export type EkybAddressState = 'empty' | 'filled';
46
+
47
+ /**
48
+ * The `eKYB.UBO.*` and `eKYB.director.*` sections — one screen family, because
49
+ * measured against the 390 frames the director frames ARE the UBO frames with
50
+ * the Director block revealed below the "Add another UBO" link: same stepper
51
+ * position, same H2, same subtitle, same first two fields, same CTA band.
52
+ *
53
+ * - `uboEmpty` — `eKYB.UBO.empty` (2115:20619): the two UBO fields blank
54
+ * - `uboFilled` — `eKYB.UBO.filled` (5707:49608): both carrying a value
55
+ * - `directorEmpty` — `eKYB.director.empty` (5655:56032): UBO block plus the
56
+ * Director block, every field blank
57
+ * - `directorFilled`— `eKYB.directorFilled` (5707:49782): all four filled
58
+ * - `loading` — `eKYB.directorloading` (5663:94390): the submission is in
59
+ * flight, so EVERY field, both "Add another" links and "Back" go inert and
60
+ * the spinner rides the CTA, never a field (the Phone Input lesson,
61
+ * DEVIATIONS #PI-5)
62
+ */
63
+ export type EkybOwnersState =
64
+ | 'uboEmpty'
65
+ | 'uboFilled'
66
+ | 'directorEmpty'
67
+ | 'directorFilled'
68
+ | 'loading';
69
+
70
+ /**
71
+ * One selectable row in the country / state menus. Runtime data, not copy — the
72
+ * host owns the catalogue (an ISO country list is ~250 entries and a state list
73
+ * is jurisdiction-specific), exactly as Phone Input takes its dial codes as data
74
+ * rather than strings.
75
+ */
76
+ export interface EkybOption {
77
+ /** Stable value, e.g. `US` / `TX`. */
78
+ value: string;
79
+ /** The row label as drawn in the open menu. */
80
+ label: string;
81
+ /** Compact face for the CLOSED field when it differs from the menu row —
82
+ * Core's own `PrizmaDropdownOption.fieldLabel`. `eKYB.country.dropdown`
83
+ * draws "🇺🇸 +1 United States" in the row and "🇺🇸 United States" in the
84
+ * field. */
85
+ fieldLabel?: string;
86
+ }
87
+
88
+ /** The values the business-identity page carries. Runtime data, never copy. */
89
+ export interface EkybBusinessValues {
90
+ businessName?: string;
91
+ taxId?: string;
92
+ }
93
+
94
+ /** The values the address page carries. Runtime data, never copy. */
95
+ export interface EkybAddressValues {
96
+ street?: string;
97
+ houseNumber?: string;
98
+ addressLine2?: string;
99
+ city?: string;
100
+ /** An `EkybOption.value` from the `states` catalogue. */
101
+ state?: string;
102
+ postalCode?: string;
103
+ }
104
+
105
+ /** The values the owners page carries. Runtime data, never copy. */
106
+ export interface EkybOwnersValues {
107
+ uboName?: string;
108
+ uboSurname?: string;
109
+ directorName?: string;
110
+ directorSurname?: string;
111
+ }
112
+
113
+ /** Copy for one labelled field. The required `*` is appended by Core from
114
+ * `EkybStrings.requiredHint`, never baked into `label`. */
115
+ export interface EkybFieldStrings {
116
+ /** Visible label ("Business name"). */
117
+ label: string;
118
+ /** Placeholder inside the field. The eKYB frames draw none on the text
119
+ * fields — only the two dropdowns carry one — so this is optional. */
120
+ placeholder?: string;
121
+ }
122
+
123
+ export interface EkybStrings {
124
+ /** "verified by" attribution in the footer tag. */
125
+ verifiedLabel: string;
126
+ /** Accessible name for the logo nav row. */
127
+ navLabel?: string;
128
+ /**
129
+ * Suffix Core appends to a required field's label — the `*` every eKYB form
130
+ * label carries. Passed to Core's own `requiredHint` prop so the marker is
131
+ * localizable and never hardcoded in a screen.
132
+ */
133
+ requiredHint?: string;
134
+ /** Shared "Back" secondary action drawn under "Continue" on every page except
135
+ * `country`. Emits `secondary`. */
136
+ backLabel: string;
137
+
138
+ /**
139
+ * Accessible name for the three-segment journey bar every WIZARD frame draws
140
+ * between the logo nav and the title block (Core's `PrizmaStepper`,
141
+ * `role="progressbar"`). Nine of the module's fifteen sections carry it —
142
+ * business ×2 (segment 1), address ×2 (segment 2), owners ×5 (segment 3, or
143
+ * all three green while the submission runs) — and it is the only chrome that
144
+ * tells the three wizard pages apart, so it carries a real name rather than
145
+ * none. Copy, therefore it lives here.
146
+ *
147
+ * The `eKYB.country.*` sections draw NO bar (2115:20444 has no Stepper
148
+ * instance): the country choice sits before the wizard.
149
+ */
150
+ stepperLabel: string;
151
+ /**
152
+ * `aria-valuetext` the same bar announces once all three segments are green —
153
+ * the `eKYB.directorloading` section (5663:94390). Same contract as eKYC's
154
+ * and Video Selfie's `stepperCompletedLabel`.
155
+ */
156
+ stepperCompletedLabel: string;
157
+
158
+ /** eKYB.country.{empty,filled,dropdown} */
159
+ country: {
160
+ /** H2 ("Select your country"). */
161
+ title: string;
162
+ /** H5 ("Select the country where your business is registered"). */
163
+ subtitle?: string;
164
+ /** The one labelled dropdown ("Country" / "Select country"). */
165
+ field: EkybFieldStrings;
166
+ /** Search-bar placeholder inside the open menu ("Search for country"). */
167
+ searchPlaceholder?: string;
168
+ /** Accessible name for the menu's search-clear button. */
169
+ clearSearchLabel?: string;
170
+ /** Primary CTA ("Continue"). */
171
+ ctaLabel: string;
172
+ };
173
+
174
+ /** eKYB.Bdetails.{empty,filled} — the business-identity page. */
175
+ business: {
176
+ /** H2 ("Business Information"). */
177
+ title: string;
178
+ /** H5 ("All fields marked with * are required."). */
179
+ subtitle?: string;
180
+ businessName: EkybFieldStrings;
181
+ taxId: EkybFieldStrings;
182
+ /** Primary CTA ("Continue"). */
183
+ ctaLabel: string;
184
+ };
185
+
186
+ /** The second eKYB.Bdetails parent — the address page. */
187
+ address: {
188
+ /** H2 ("Address Details"). */
189
+ title: string;
190
+ /** H5 ("All fields marked with * are required."). */
191
+ subtitle?: string;
192
+ street: EkybFieldStrings;
193
+ houseNumber: EkybFieldStrings;
194
+ /** The one OPTIONAL field of the page — Figma draws no `*`. */
195
+ addressLine2: EkybFieldStrings;
196
+ city: EkybFieldStrings;
197
+ /** The State dropdown ("State" / "Select state"). No search copy: neither
198
+ * address section draws this menu open, so the screen ships no
199
+ * `searchable` and a search placeholder would be dead copy. */
200
+ state: EkybFieldStrings;
201
+ postalCode: EkybFieldStrings;
202
+ /** Primary CTA ("Continue"). */
203
+ ctaLabel: string;
204
+ };
205
+
206
+ /** eKYB.UBO.* and eKYB.director.* — one screen, two blocks. */
207
+ owners: {
208
+ /** The screen's single H2 ("Beneficial Owner") and its H5. */
209
+ title: string;
210
+ subtitle?: string;
211
+ uboName: EkybFieldStrings;
212
+ /** Figma draws NO `*` on the surname — it is optional. */
213
+ uboSurname: EkybFieldStrings;
214
+ /** The tertiary link under the UBO block ("Add another UBO (Optional)"). */
215
+ addUboLabel: string;
216
+ /** The Director block's own heading + description. Rendered by Core's
217
+ * `PrizmaTitle` inside the field stack; see the screen's docstring and the
218
+ * module's reported deviation about the second heading. */
219
+ directorTitle: string;
220
+ directorSubtitle?: string;
221
+ directorName: EkybFieldStrings;
222
+ directorSurname: EkybFieldStrings;
223
+ /** The tertiary link under the Director block. */
224
+ addDirectorLabel: string;
225
+ /** Primary CTA ("Continue"). */
226
+ ctaLabel: string;
227
+ /** Accessible busy label while the submission runs (`loading`). */
228
+ ctaLoadingLabel?: string;
229
+ };
230
+
231
+ /** eKYB.processing (2116:34749) — the pure spinner screen, no button. */
232
+ processing: { title: string; subtitle?: string };
233
+
234
+ /** eKYB.success (2116:34709) — positive mark, no button. */
235
+ success: { title: string; subtitle?: string };
236
+
237
+ /** eKYB.error (2116:34743) — negative mark + "Try again". */
238
+ error: { title: string; subtitle?: string; ctaLabel: string };
239
+ }
@@ -0,0 +1,54 @@
1
+ import React, { forwardRef } from 'react';
2
+ import {
3
+ PrizmaProcessingScreen,
4
+ type PrizmaProcessingScreenProps,
5
+ } from './ProcessingScreen';
6
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
7
+ import type { EkybStrings } from './EkybStrings';
8
+ import './ScreenLayout.css';
9
+
10
+ export interface EkybSuccessScreenProps
11
+ extends Omit<
12
+ PrizmaProcessingScreenProps,
13
+ 'status' | 'title' | 'subtitle' | 'verifiedLabel' | 'navLabel'
14
+ > {
15
+ /** Module copy — this screen reads the `success` slice. */
16
+ strings: EkybStrings;
17
+ screenId?: string;
18
+ overrides?: PrizmaScreenOverrides;
19
+ onAction?: PrizmaScreenActionHandler;
20
+ }
21
+
22
+ /**
23
+ * eKYB — the positive verdict (`eKYB.success`, 2116:34709), built on the
24
+ * Processing archetype (GUIDELINES.md §6-C, `PrizmaProcessingScreen`).
25
+ *
26
+ * Figma draws NO button here: the flow advances on its own once the submission
27
+ * is accepted, so this is the pure status-mark case §6-F reserves for C rather
28
+ * than for the Result archetype — the same deliberate split Email Input records
29
+ * against its Phone Input sibling (DEVIATIONS #EI-4). Its sibling
30
+ * `EkybErrorScreen` needs a button and therefore sits on F.
31
+ *
32
+ * Core's outline status mark is used, not Figma's two-tone filled disc — the
33
+ * icon-outline sweep of 2026-07-28 settled that for every module (#15, #DC-34)
34
+ * and this file's frames are one sweep behind.
35
+ */
36
+ export const EkybSuccessScreen = forwardRef<HTMLDivElement, EkybSuccessScreenProps>(
37
+ ({ strings, screenId = 'ekyb-success', overrides, onAction, ...shell }, ref) => (
38
+ <PrizmaProcessingScreen
39
+ ref={ref}
40
+ status="success"
41
+ title={strings.success.title}
42
+ subtitle={strings.success.subtitle}
43
+ verifiedLabel={strings.verifiedLabel}
44
+ navLabel={strings.navLabel}
45
+ screenId={screenId}
46
+ overrides={overrides}
47
+ onAction={onAction}
48
+ {...shell}
49
+ />
50
+ ),
51
+ );
52
+ EkybSuccessScreen.displayName = 'EkybSuccessScreen';
53
+
54
+ export default EkybSuccessScreen;