@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,200 @@
1
+ import React, { forwardRef } from 'react';
2
+ import { PrizmaTextField } from '@incodetech/prizma-core-web/text-field';
3
+ import { PrizmaDropdown } from '@incodetech/prizma-core-web/dropdown';
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 {
9
+ EkybAddressState,
10
+ EkybAddressValues,
11
+ EkybOption,
12
+ EkybStrings,
13
+ } from './EkybStrings';
14
+ import './ScreenLayout.css';
15
+
16
+ export interface EkybAddressDetailsScreenProps
17
+ extends Omit<
18
+ PrizmaFormScreenProps,
19
+ | 'title'
20
+ | 'subtitle'
21
+ | 'ctaLabel'
22
+ | 'ctaLoading'
23
+ | 'ctaLoadingLabel'
24
+ | 'verifiedLabel'
25
+ | 'children'
26
+ | 'navLabel'
27
+ | 'linkLabel'
28
+ | 'linkContent'
29
+ | 'progress'
30
+ | 'scrollFields'
31
+ > {
32
+ /** Module copy — this screen reads the `address` slice. */
33
+ strings: EkybStrings;
34
+ /** Which address section to render. Default `empty`. */
35
+ state?: EkybAddressState;
36
+ /** The six field values. Empty renders the resting empty field. */
37
+ values?: EkybAddressValues;
38
+ /** The selectable states/provinces. Runtime data, not copy — a jurisdiction
39
+ * catalogue, never a string table. */
40
+ states?: EkybOption[];
41
+ screenId?: string;
42
+ overrides?: PrizmaScreenOverrides;
43
+ onAction?: PrizmaScreenActionHandler;
44
+ }
45
+
46
+ /**
47
+ * eKYB — step 2 of the wizard, the registered address, built on the Form
48
+ * archetype (GUIDELINES.md §6-E, `PrizmaFormScreen`).
49
+ *
50
+ * ONE screen for both sections of the SECOND `eKYB.Bdetails` purple parent
51
+ * (6340:32594): `empty` (6340:50731) and `filled` (6340:38197). They share an
52
+ * identical skeleton — nav → Title (H2 + H5) → Spacing/32 → six labelled fields
53
+ * at Spacing/16 → "Continue" → "Back" → tag — and differ ONLY in field content.
54
+ *
55
+ * Four things are deliberate:
56
+ *
57
+ * 1. The stack SCROLLS inside the content column — now through the archetype's
58
+ * own `scrollFields` prop, not a module stylesheet. The Figma frame is
59
+ * 1128–1158 tall (six labelled fields are 548 on their own); a 390×844
60
+ * screen never reflows (#17), and without the release the surplus paints
61
+ * over the CTA. The module used to hand-roll `overflow-y: auto` in
62
+ * `EkybLayout.css`; five Wave-3 modules hit the same wall, the archetype
63
+ * absorbed it (DEVIATIONS #DSC-2), and that file is now deleted. The
64
+ * archetype's variant also carries the Spacing/16 margin that keeps the
65
+ * clipped column clear of the CTA rather than sliced against it.
66
+ * 2. Every field is UNCONTROLLED (`defaultValue`) — a screen is one static spec
67
+ * state, and Core's `readOnly` would grey a surface Figma draws white
68
+ * (#PI-6). Neither section greys anything, so nothing is `disabled`.
69
+ * 3. "Address line 2" is the ONE optional field of the page: Figma draws no `*`
70
+ * on it, so it alone renders no `requiredHint`.
71
+ * 4. "Back" is composed into the archetype's `linkContent` slot as a Core
72
+ * `secondary` button — the #CURP-2 precedent — so it stays a distinct
73
+ * `secondary` action and sits BELOW the primary (#GEO-1).
74
+ *
75
+ * NOTE on `filled`: 6340:38197 leaves the REQUIRED "State" dropdown on its
76
+ * "Select state" placeholder while all five text fields carry values. That is
77
+ * built as drawn rather than silently corrected, and reported as a Figma
78
+ * self-contradiction (the #CURP-4 class of finding) — a host that passes
79
+ * `values.state` gets the selected row.
80
+ *
81
+ * The three-segment journey bar (6384:86825 / 6340:66380 — segment 1 pale,
82
+ * segment 2 solid, segment 3 grey) is Core's `PrizmaStepper` at
83
+ * `currentState={2}`, composed into the archetype's `progress` slot. This is
84
+ * step 2 of 3.
85
+ */
86
+ export const EkybAddressDetailsScreen = forwardRef<
87
+ HTMLDivElement,
88
+ EkybAddressDetailsScreenProps
89
+ >(
90
+ (
91
+ {
92
+ strings,
93
+ state = 'empty',
94
+ values,
95
+ states = [],
96
+ screenId = `ekyb-address-${state}`,
97
+ className,
98
+ overrides,
99
+ onAction,
100
+ ...shell
101
+ },
102
+ ref,
103
+ ) => {
104
+ const copy = strings.address;
105
+
106
+ return (
107
+ <PrizmaFormScreen
108
+ ref={ref}
109
+ className={['ekyb-address', className].filter(Boolean).join(' ')}
110
+ /* The archetype's own scrolling field stack — the six-field column is
111
+ 548 tall against a middle that cannot be. No module CSS. */
112
+ scrollFields
113
+ /* Step 2 of 3. `showIcons={false}`: the eKYB bar is a bare 5px rail. */
114
+ progress={
115
+ <PrizmaStepper
116
+ steps={3}
117
+ currentState={2}
118
+ showIcons={false}
119
+ aria-label={strings.stepperLabel}
120
+ />
121
+ }
122
+ title={copy.title}
123
+ subtitle={copy.subtitle}
124
+ ctaLabel={copy.ctaLabel}
125
+ linkContent={
126
+ <PrizmaButton
127
+ variant="secondary"
128
+ size="L"
129
+ onClick={() => onAction?.({ type: 'secondary', screenId })}
130
+ >
131
+ {strings.backLabel}
132
+ </PrizmaButton>
133
+ }
134
+ verifiedLabel={strings.verifiedLabel}
135
+ navLabel={strings.navLabel}
136
+ screenId={screenId}
137
+ overrides={{ align: overrides?.align ?? 'left', logo: overrides?.logo }}
138
+ onAction={onAction}
139
+ {...shell}
140
+ >
141
+ <PrizmaTextField
142
+ label={copy.street.label}
143
+ placeholder={copy.street.placeholder}
144
+ required
145
+ requiredHint={strings.requiredHint}
146
+ autoComplete="off"
147
+ defaultValue={values?.street ?? ''}
148
+ />
149
+ <PrizmaTextField
150
+ label={copy.houseNumber.label}
151
+ placeholder={copy.houseNumber.placeholder}
152
+ required
153
+ requiredHint={strings.requiredHint}
154
+ autoComplete="off"
155
+ defaultValue={values?.houseNumber ?? ''}
156
+ />
157
+ {/* The one field 6340:50731 draws without an asterisk. */}
158
+ <PrizmaTextField
159
+ label={copy.addressLine2.label}
160
+ placeholder={copy.addressLine2.placeholder}
161
+ autoComplete="off"
162
+ defaultValue={values?.addressLine2 ?? ''}
163
+ />
164
+ <PrizmaTextField
165
+ label={copy.city.label}
166
+ placeholder={copy.city.placeholder}
167
+ required
168
+ requiredHint={strings.requiredHint}
169
+ autoComplete="off"
170
+ defaultValue={values?.city ?? ''}
171
+ />
172
+ <PrizmaDropdown
173
+ label={copy.state.label}
174
+ placeholder={copy.state.placeholder}
175
+ required
176
+ requiredHint={strings.requiredHint}
177
+ options={states}
178
+ /* Both sections draw the placeholder unless the host supplies a
179
+ value — see the docstring note on 6340:38197. */
180
+ defaultValue={values?.state ?? null}
181
+ /* No `searchable` and therefore no `searchPlaceholder`: neither
182
+ address section draws this menu open, so there is nothing to build
183
+ it from — and a `searchPlaceholder` without `searchable` would be a
184
+ prop that silently does nothing (the #CURP-3 class of defect). */
185
+ />
186
+ <PrizmaTextField
187
+ label={copy.postalCode.label}
188
+ placeholder={copy.postalCode.placeholder}
189
+ required
190
+ requiredHint={strings.requiredHint}
191
+ autoComplete="off"
192
+ defaultValue={values?.postalCode ?? ''}
193
+ />
194
+ </PrizmaFormScreen>
195
+ );
196
+ },
197
+ );
198
+ EkybAddressDetailsScreen.displayName = 'EkybAddressDetailsScreen';
199
+
200
+ export default EkybAddressDetailsScreen;
@@ -0,0 +1,147 @@
1
+ import React, { forwardRef } from 'react';
2
+ import { PrizmaTextField } from '@incodetech/prizma-core-web/text-field';
3
+ import { PrizmaButton } from '@incodetech/prizma-core-web/button';
4
+ import { PrizmaStepper } from '@incodetech/prizma-core-web/stepper';
5
+ import { PrizmaFormScreen, type PrizmaFormScreenProps } from './FormScreen';
6
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
7
+ import type { EkybBusinessState, EkybBusinessValues, EkybStrings } from './EkybStrings';
8
+ import './ScreenLayout.css';
9
+
10
+ export interface EkybBusinessDetailsScreenProps
11
+ extends Omit<
12
+ PrizmaFormScreenProps,
13
+ | 'title'
14
+ | 'subtitle'
15
+ | 'ctaLabel'
16
+ | 'ctaLoading'
17
+ | 'ctaLoadingLabel'
18
+ | 'verifiedLabel'
19
+ | 'children'
20
+ | 'navLabel'
21
+ | 'linkLabel'
22
+ | 'linkContent'
23
+ | 'progress'
24
+ > {
25
+ /** Module copy — this screen reads the `business` slice. */
26
+ strings: EkybStrings;
27
+ /** Which purple `eKYB.Bdetails.*` section to render. Default `empty`. */
28
+ state?: EkybBusinessState;
29
+ /** The two field values. Empty renders the resting empty field. */
30
+ values?: EkybBusinessValues;
31
+ screenId?: string;
32
+ overrides?: PrizmaScreenOverrides;
33
+ onAction?: PrizmaScreenActionHandler;
34
+ }
35
+
36
+ /**
37
+ * eKYB — step 1 of the wizard, the company's identity, built on the Form
38
+ * archetype (GUIDELINES.md §6-E, `PrizmaFormScreen`).
39
+ *
40
+ * ONE screen for both purple `eKYB.Bdetails.*` sections (`empty` 2115:21864,
41
+ * `filled` 5663:83132): measured against the 390 frames they share an identical
42
+ * skeleton — nav → Title (H2 + H5) → Spacing/32 → two labelled fields at
43
+ * Spacing/16 → "Continue" → "Back" → tag — and differ ONLY in field content.
44
+ *
45
+ * Three things are deliberate, each a lesson an earlier module paid for:
46
+ *
47
+ * 1. The fields are UNCONTROLLED (`defaultValue`). A screen is one static spec
48
+ * state, so no `onChange` is needed — and Core's `readOnly`, the other way to
49
+ * freeze a field, paints the DISABLED grey surface on sections Figma draws
50
+ * white (DEVIATIONS #PI-6). Neither section greys anything, so nothing here
51
+ * is `disabled`.
52
+ * 2. Figma draws no placeholders on these fields — the label row carries the
53
+ * meaning — so `empty` really is a blank field, not a hinted one.
54
+ * 3. "Back" is a full-width OUTLINED `secondary` button under the primary.
55
+ * Archetype E has no `secondaryCtaLabel` slot (archetype F does), so it is
56
+ * composed into the archetype's `linkContent` slot exactly as CURP does
57
+ * (DEVIATIONS #CURP-2): no primitive invented, no layout declared, the
58
+ * action stays a distinct `secondary` event, and it lands BELOW the primary,
59
+ * which is both what Figma draws and what #GEO-1 requires.
60
+ *
61
+ * The required asterisk is Core's `requiredHint` suffix on a `required` field —
62
+ * the label rows Figma draws as "Business name *" / "Tax ID *" — so the marker
63
+ * stays localizable and is never baked into the label string.
64
+ *
65
+ * The three-segment journey bar Figma draws between the nav and the title is
66
+ * Core's own `PrizmaStepper` in the archetype's `progress` slot — the slot
67
+ * archetype E gained for eKYC (DEVIATIONS #EK-1) and the fix for the QA finding
68
+ * that the wizard shipped with no progress signal. This is step 1 of 3, so the
69
+ * bar is at `currentState="Start"`: segment 1 filled, segments 2 and 3 grey,
70
+ * exactly what 5919:68599 renders. Both offsets around it live in
71
+ * `ScreenLayout.css`, never here.
72
+ */
73
+ export const EkybBusinessDetailsScreen = forwardRef<
74
+ HTMLDivElement,
75
+ EkybBusinessDetailsScreenProps
76
+ >(
77
+ (
78
+ {
79
+ strings,
80
+ state = 'empty',
81
+ values,
82
+ screenId = `ekyb-business-${state}`,
83
+ overrides,
84
+ onAction,
85
+ ...shell
86
+ },
87
+ ref,
88
+ ) => {
89
+ const copy = strings.business;
90
+
91
+ return (
92
+ <PrizmaFormScreen
93
+ ref={ref}
94
+ /* Step 1 of 3. `showIcons={false}` because the eKYB frames draw the bar
95
+ as a bare 5px rail with no glyph row. */
96
+ progress={
97
+ <PrizmaStepper
98
+ steps={3}
99
+ currentState="Start"
100
+ showIcons={false}
101
+ aria-label={strings.stepperLabel}
102
+ />
103
+ }
104
+ title={copy.title}
105
+ subtitle={copy.subtitle}
106
+ ctaLabel={copy.ctaLabel}
107
+ linkContent={
108
+ <PrizmaButton
109
+ variant="secondary"
110
+ size="L"
111
+ onClick={() => onAction?.({ type: 'secondary', screenId })}
112
+ >
113
+ {strings.backLabel}
114
+ </PrizmaButton>
115
+ }
116
+ verifiedLabel={strings.verifiedLabel}
117
+ navLabel={strings.navLabel}
118
+ screenId={screenId}
119
+ /* Left-aligned title block, the alignment every eKYB frame draws; a host
120
+ `align` still wins (#GEO-2). */
121
+ overrides={{ align: overrides?.align ?? 'left', logo: overrides?.logo }}
122
+ onAction={onAction}
123
+ {...shell}
124
+ >
125
+ <PrizmaTextField
126
+ label={copy.businessName.label}
127
+ placeholder={copy.businessName.placeholder}
128
+ required
129
+ requiredHint={strings.requiredHint}
130
+ autoComplete="off"
131
+ defaultValue={values?.businessName ?? ''}
132
+ />
133
+ <PrizmaTextField
134
+ label={copy.taxId.label}
135
+ placeholder={copy.taxId.placeholder}
136
+ required
137
+ requiredHint={strings.requiredHint}
138
+ autoComplete="off"
139
+ defaultValue={values?.taxId ?? ''}
140
+ />
141
+ </PrizmaFormScreen>
142
+ );
143
+ },
144
+ );
145
+ EkybBusinessDetailsScreen.displayName = 'EkybBusinessDetailsScreen';
146
+
147
+ export default EkybBusinessDetailsScreen;
@@ -0,0 +1,124 @@
1
+ import React, { forwardRef } from 'react';
2
+ import { PrizmaDropdown } from '@incodetech/prizma-core-web/dropdown';
3
+ import { PrizmaFormScreen, type PrizmaFormScreenProps } from './FormScreen';
4
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
5
+ import type { EkybCountryState, EkybOption, EkybStrings } from './EkybStrings';
6
+ import './ScreenLayout.css';
7
+
8
+ export interface EkybCountryScreenProps
9
+ extends Omit<
10
+ PrizmaFormScreenProps,
11
+ | 'title'
12
+ | 'subtitle'
13
+ | 'ctaLabel'
14
+ | 'ctaLoading'
15
+ | 'ctaLoadingLabel'
16
+ | 'verifiedLabel'
17
+ | 'children'
18
+ | 'navLabel'
19
+ | 'linkLabel'
20
+ | 'linkContent'
21
+ > {
22
+ /** Module copy — this screen reads the `country` slice. */
23
+ strings: EkybStrings;
24
+ /** Which purple `eKYB.country.*` section to render. Default `empty`. */
25
+ state?: EkybCountryState;
26
+ /** The selectable countries. Runtime data, not copy — the host owns the
27
+ * catalogue. */
28
+ countries?: EkybOption[];
29
+ /** Selected `EkybOption.value`. Omit to render the placeholder (`empty`). */
30
+ value?: string;
31
+ screenId?: string;
32
+ overrides?: PrizmaScreenOverrides;
33
+ onAction?: PrizmaScreenActionHandler;
34
+ }
35
+
36
+ /**
37
+ * eKYB — the country-of-registration page, built on the Form archetype
38
+ * (GUIDELINES.md §6-E, `PrizmaFormScreen`).
39
+ *
40
+ * ONE screen for all three purple `eKYB.country.*` sections (`empty`
41
+ * 2115:20444, `filled` 5655:42140, `dropdown` 5707:54174): measured against the
42
+ * 390 frames they share an identical skeleton — nav → Title (H2 + H5) →
43
+ * Spacing/32 → one labelled dropdown → "Continue" pushed to the bottom → tag —
44
+ * and differ ONLY in what the dropdown carries, which is exactly what
45
+ * GUIDELINES §6-E means by "states are separate screens sharing the identical
46
+ * layout".
47
+ *
48
+ * Three things are deliberate:
49
+ *
50
+ * 1. The field DOES carry a visible label. Unlike Phone Input's combined row
51
+ * (#PI-4), Figma draws "Country" above this dropdown, which is Core's own
52
+ * `label` slot — so the copy rides the visible label, not `aria-label`.
53
+ * 2. `dropdown` IS the open-menu spec state, which Core exposes as the
54
+ * documentation-only `forceOpen` (a screen is one static spec state, never a
55
+ * live interaction) — the same mechanism Phone Input's `countryCode` and
56
+ * CURP's `Gene.dropdown` sections use. The search bar Figma draws inside the
57
+ * menu is Core's own `searchable`.
58
+ * 3. The closed field and the menu row are DIFFERENT faces of one option:
59
+ * 5707:54174 draws "🇺🇸 United States" in the field while the rows read
60
+ * "🇺🇸 +1 United States". That is Core's `PrizmaDropdownOption.fieldLabel`,
61
+ * so nothing is hand-composed. The flag travels inside the label text
62
+ * because Core still ships no country-flag primitive (#PI-3).
63
+ *
64
+ * This page is the only eKYB form page with NO "Back" secondary and NO Stepper —
65
+ * it is step 0, before the three-step wizard starts.
66
+ */
67
+ export const EkybCountryScreen = forwardRef<HTMLDivElement, EkybCountryScreenProps>(
68
+ (
69
+ {
70
+ strings,
71
+ state = 'empty',
72
+ countries = [],
73
+ value,
74
+ screenId = `ekyb-country-${state}`,
75
+ overrides,
76
+ onAction,
77
+ ...shell
78
+ },
79
+ ref,
80
+ ) => {
81
+ const copy = strings.country;
82
+ // `empty` is the only section drawn on the placeholder; both other sections
83
+ // draw a chosen country in the closed field.
84
+ const selected = state === 'empty' ? null : (value ?? countries[0]?.value ?? null);
85
+
86
+ return (
87
+ <PrizmaFormScreen
88
+ ref={ref}
89
+ title={copy.title}
90
+ subtitle={copy.subtitle}
91
+ ctaLabel={copy.ctaLabel}
92
+ verifiedLabel={strings.verifiedLabel}
93
+ navLabel={strings.navLabel}
94
+ screenId={screenId}
95
+ /* Every eKYB form frame LEFT-aligns its title block, while the archetype
96
+ defaults to centred. The module supplies its designed alignment
97
+ through the sanctioned override rather than declaring any layout of
98
+ its own, and a host that passes `align` still wins (#GEO-2). */
99
+ overrides={{ align: overrides?.align ?? 'left', logo: overrides?.logo }}
100
+ onAction={onAction}
101
+ {...shell}
102
+ >
103
+ <PrizmaDropdown
104
+ label={copy.field.label}
105
+ placeholder={copy.field.placeholder}
106
+ options={countries}
107
+ /* Uncontrolled: a screen is one static spec state, so no `onChange` is
108
+ needed. Core's `readOnly`/`disabled` are NOT used to freeze it —
109
+ they paint the DISABLED grey surface on a section Figma draws white
110
+ (DEVIATIONS #PI-6). */
111
+ defaultValue={selected}
112
+ searchable
113
+ searchPlaceholder={copy.searchPlaceholder}
114
+ clearSearchLabel={copy.clearSearchLabel}
115
+ /* The `dropdown` section IS the open-menu spec state. */
116
+ forceOpen={state === 'dropdown'}
117
+ />
118
+ </PrizmaFormScreen>
119
+ );
120
+ },
121
+ );
122
+ EkybCountryScreen.displayName = 'EkybCountryScreen';
123
+
124
+ export default EkybCountryScreen;
@@ -0,0 +1,61 @@
1
+ import React, { forwardRef } from 'react';
2
+ import { PrizmaResultScreen, type PrizmaResultScreenProps } from './ResultScreen';
3
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
4
+ import type { EkybStrings } from './EkybStrings';
5
+ import './ScreenLayout.css';
6
+
7
+ export interface EkybErrorScreenProps
8
+ extends Omit<
9
+ PrizmaResultScreenProps,
10
+ | 'status'
11
+ | 'title'
12
+ | 'subtitle'
13
+ | 'glyph'
14
+ | 'ctaLabel'
15
+ | 'secondaryCtaLabel'
16
+ | 'verifiedLabel'
17
+ | 'navLabel'
18
+ > {
19
+ /** Module copy — this screen reads the `error` slice. */
20
+ strings: EkybStrings;
21
+ screenId?: string;
22
+ overrides?: PrizmaScreenOverrides;
23
+ onAction?: PrizmaScreenActionHandler;
24
+ }
25
+
26
+ /**
27
+ * eKYB — the negative verdict (`eKYB.error`, 2116:34743), built on the Result
28
+ * archetype (GUIDELINES.md §6-F, `PrizmaResultScreen`).
29
+ *
30
+ * Nav → centred negative mark + H2 ("Something went wrong") → CTA band with the
31
+ * single "Try again" primary → anchored tag. It sits on F rather than C for one
32
+ * reason: it has a button, and §6-F reserves C for the pure no-button case —
33
+ * which is why its `success` sibling is on C and this one is not.
34
+ *
35
+ * This is a generic-error screen, and per the standing owner rule it KEEPS the
36
+ * logo header and the verified tag even where a module's Figma draws them bare
37
+ * (#PI-8, #F-34) — here Figma draws both anyway, so nothing is overridden.
38
+ *
39
+ * Core's outline status mark is used, not Figma's two-tone filled disc
40
+ * (icon-outline sweep, #15 / #DC-34).
41
+ */
42
+ export const EkybErrorScreen = forwardRef<HTMLDivElement, EkybErrorScreenProps>(
43
+ ({ strings, screenId = 'ekyb-error', overrides, onAction, ...shell }, ref) => (
44
+ <PrizmaResultScreen
45
+ ref={ref}
46
+ status="error"
47
+ title={strings.error.title}
48
+ subtitle={strings.error.subtitle}
49
+ ctaLabel={strings.error.ctaLabel}
50
+ verifiedLabel={strings.verifiedLabel}
51
+ navLabel={strings.navLabel}
52
+ screenId={screenId}
53
+ overrides={overrides}
54
+ onAction={onAction}
55
+ {...shell}
56
+ />
57
+ ),
58
+ );
59
+ EkybErrorScreen.displayName = 'EkybErrorScreen';
60
+
61
+ export default EkybErrorScreen;