@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,107 @@
1
+ /* ViewfinderScreen — Archetype D (GUIDELINES.md §6-D). Always dark; white
2
+ * copy over the camera surface. The rgba white literals are the Figma camera
3
+ * HUD treatment (verified absent from the token set — the camera stage sits
4
+ * outside the light/dark theming model). */
5
+
6
+ .prizma-viewfinder__surface,
7
+ .prizma-viewfinder__surface > img,
8
+ .prizma-viewfinder__surface > video {
9
+ position: absolute;
10
+ inset: 0;
11
+ width: 100%;
12
+ height: 100%;
13
+ object-fit: cover;
14
+ }
15
+
16
+ .prizma-viewfinder__content {
17
+ position: relative;
18
+ z-index: 1;
19
+ flex: 1;
20
+ display: flex;
21
+ flex-direction: column;
22
+ padding: 0 var(--prizma-spacing-24) var(--prizma-spacing-24);
23
+ text-align: center;
24
+ }
25
+
26
+ .prizma-viewfinder__content--left {
27
+ text-align: left;
28
+ }
29
+
30
+ /* Title block bottom-anchored in the area above the capture window.
31
+ *
32
+ * `position: relative` + `z-index` is LOAD-BEARING, not tidying. When the stage
33
+ * runs `mode="overlay" scrim`, Core draws the veil as an absolutely positioned
34
+ * `.prizma-id-capture__scrim` carrying `box-shadow: rgba(20,21,26,.8) 0 0 0
35
+ * 3000px` — a dark wash that deliberately escapes its own frame to cover the
36
+ * whole screen. The scrim is a LATER SIBLING of this block inside
37
+ * `__content`, and a positioned sibling always paints over non-positioned
38
+ * content, so an unlifted title block sits UNDER an 80% veil: white copy
39
+ * rendering at ~20% and reading as dim grey (owner report 2026-09-03,
40
+ * Document Capture's camera stage).
41
+ *
42
+ * `__content` already carries `z-index: 1`, but that lifts it above the CAMERA
43
+ * SURFACE, not above its own descendants — the scrim is inside it.
44
+ *
45
+ * This is the same fix, for the same reason, that `.id-capture-band` makes in
46
+ * IdCaptureLayout.css; ID Capture's stage composes its own bands and so was
47
+ * never affected. Anything else that puts plain text beside a scrimmed stage
48
+ * needs it too. */
49
+ .prizma-viewfinder__intro {
50
+ flex: 1;
51
+ display: flex;
52
+ flex-direction: column;
53
+ justify-content: flex-end;
54
+ gap: var(--prizma-spacing-8);
55
+ padding-bottom: var(--prizma-spacing-24);
56
+ position: relative;
57
+ z-index: 1;
58
+ }
59
+
60
+ .prizma-viewfinder__title {
61
+ margin: 0;
62
+ color: #ffffff; /* hardcoded — camera HUD copy, always white, no token */
63
+ font-family: var(--prizma-headline-family);
64
+ font-size: var(--prizma-headline-h2-font-size);
65
+ font-weight: var(--prizma-headline-h2-font-weight);
66
+ line-height: var(--prizma-headline-h2-line-height);
67
+ letter-spacing: var(--prizma-headline-h2-letter-spacing);
68
+ }
69
+
70
+ .prizma-viewfinder__instruction {
71
+ margin: 0;
72
+ color: rgba(255, 255, 255, 0.6); /* hardcoded — camera HUD muted copy, no token */
73
+ font-size: var(--prizma-body-m-regular-font-size);
74
+ line-height: 1.4;
75
+ }
76
+
77
+ /* Lock + encrypted notice: 33px row under the capture window. */
78
+ .prizma-viewfinder__encrypted {
79
+ height: 33px; /* hardcoded — Studio encrypted-row height (GUIDELINES §6-D) */
80
+ display: flex;
81
+ align-items: center;
82
+ justify-content: center;
83
+ gap: var(--prizma-spacing-4);
84
+ color: #ffffff; /* hardcoded — camera HUD copy, always white, no token */
85
+ font-size: var(--prizma-body-m-regular-font-size);
86
+ }
87
+
88
+ .prizma-viewfinder__content--left .prizma-viewfinder__encrypted {
89
+ justify-content: flex-start;
90
+ }
91
+
92
+ .prizma-viewfinder__spacer {
93
+ flex: 1;
94
+ }
95
+
96
+ /* Help control — bottom-right, 24/24 (GUIDELINES §6-D). */
97
+ .prizma-viewfinder__help {
98
+ position: absolute;
99
+ right: var(--prizma-spacing-24);
100
+ bottom: var(--prizma-spacing-24);
101
+ display: flex;
102
+ padding: 0;
103
+ border: none;
104
+ background: none;
105
+ color: #ffffff; /* hardcoded — camera HUD control, always white, no token */
106
+ cursor: pointer;
107
+ }
@@ -0,0 +1,113 @@
1
+ import React, { forwardRef, type ReactNode } from 'react';
2
+ import { IconLock, IconQuestionCircle } from '@incodetech/prizma-core-icons';
3
+ import {
4
+ PrizmaCaptureOverlay,
5
+ type PrizmaCaptureOverlayShape,
6
+ type PrizmaCaptureOverlayState,
7
+ } from './CaptureOverlay';
8
+ import { PrizmaScreenShell, type PrizmaScreenShellProps } from './ScreenShell';
9
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
10
+ import './ViewfinderScreen.css';
11
+ import './ScreenLayout.css';
12
+
13
+ export interface PrizmaViewfinderScreenProps
14
+ extends Omit<PrizmaScreenShellProps, 'dark' | 'title'> {
15
+ /** White H2 above the capture window. */
16
+ title: string;
17
+ /** Muted instruction line under the title. */
18
+ instruction?: string;
19
+ /** "Your data is encrypted" style notice under the window. */
20
+ encryptedLabel?: string;
21
+ /** Accessible name for the help control (i18n). Renders the help icon only
22
+ * when provided. */
23
+ helpLabel?: string;
24
+ /** The camera surface behind the vignette — an <img> still or live <video>.
25
+ * Hosts with a real camera pipeline inject their feed here. */
26
+ cameraSurface?: ReactNode;
27
+ /** Capture window geometry (landscape ID / portrait document / ring). */
28
+ overlayShape: PrizmaCaptureOverlayShape;
29
+ overlayState?: PrizmaCaptureOverlayState;
30
+ /** Content inside the transparent window (defaults to see-through). */
31
+ overlayContent?: ReactNode;
32
+ screenId?: string;
33
+ overrides?: PrizmaScreenOverrides;
34
+ onAction?: PrizmaScreenActionHandler;
35
+ }
36
+
37
+ /**
38
+ * @deprecated DO NOT USE — scheduled for removal. Compose Core's capture
39
+ * component inside a dark `PrizmaScreenShell` instead: `PrizmaIdCapture`
40
+ * (`mode="overlay"`, `scrim`) already owns the window, the tokenized scrim,
41
+ * the encrypted row and the help affordance, and `PrizmaCaptureManual`
42
+ * supplies the shutter. See `DocumentCaptureCaptureScreen` for the pattern.
43
+ *
44
+ * Archetype D was built on the deprecated `CaptureOverlay` (see that file) and
45
+ * re-implements three Core pieces. Zero modules use it. DEVIATIONS.md #F-26.
46
+ */
47
+ export const PrizmaViewfinderScreen = forwardRef<HTMLDivElement, PrizmaViewfinderScreenProps>(
48
+ (
49
+ {
50
+ title,
51
+ instruction,
52
+ encryptedLabel,
53
+ helpLabel,
54
+ cameraSurface,
55
+ overlayShape,
56
+ overlayState,
57
+ overlayContent,
58
+ screenId,
59
+ overrides,
60
+ onAction,
61
+ className,
62
+ ...shell
63
+ },
64
+ ref,
65
+ ) => (
66
+ <PrizmaScreenShell
67
+ ref={ref}
68
+ dark
69
+ className={['prizma-viewfinder', className ?? ''].filter(Boolean).join(' ')}
70
+ {...shell}
71
+ >
72
+ <div className="prizma-viewfinder__surface">{cameraSurface}</div>
73
+ <div
74
+ className={[
75
+ 'prizma-viewfinder__content',
76
+ overrides?.align === 'left' ? 'prizma-viewfinder__content--left' : '',
77
+ ]
78
+ .filter(Boolean)
79
+ .join(' ')}
80
+ >
81
+ <div className="prizma-viewfinder__intro">
82
+ <h2 className="prizma-viewfinder__title">{title}</h2>
83
+ {instruction ? (
84
+ <p className="prizma-viewfinder__instruction">{instruction}</p>
85
+ ) : null}
86
+ </div>
87
+ <PrizmaCaptureOverlay shape={overlayShape} state={overlayState}>
88
+ {overlayContent}
89
+ </PrizmaCaptureOverlay>
90
+ {encryptedLabel ? (
91
+ <div className="prizma-viewfinder__encrypted">
92
+ <IconLock size="s" />
93
+ <span>{encryptedLabel}</span>
94
+ </div>
95
+ ) : null}
96
+ <div className="prizma-viewfinder__spacer" />
97
+ {helpLabel ? (
98
+ <button
99
+ type="button"
100
+ className="prizma-viewfinder__help"
101
+ aria-label={helpLabel}
102
+ onClick={() => onAction?.({ type: 'help', screenId })}
103
+ >
104
+ <IconQuestionCircle size="m" />
105
+ </button>
106
+ ) : null}
107
+ </div>
108
+ </PrizmaScreenShell>
109
+ ),
110
+ );
111
+ PrizmaViewfinderScreen.displayName = 'PrizmaViewfinderScreen';
112
+
113
+ export default PrizmaViewfinderScreen;
@@ -0,0 +1,176 @@
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 { PrizmaCountryFlag } from '@incodetech/prizma-core-web/combined';
5
+ import { PrizmaFormScreen, type PrizmaFormScreenProps } from './FormScreen';
6
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
7
+ import type {
8
+ WatchlistBusinessCountry,
9
+ WatchlistBusinessFormState,
10
+ WatchlistBusinessFormValues,
11
+ WatchlistBusinessStrings,
12
+ } from './WatchlistBusinessStrings';
13
+ import './ScreenLayout.css';
14
+
15
+ export interface WatchlistBusinessFormScreenProps
16
+ extends Omit<
17
+ PrizmaFormScreenProps,
18
+ | 'title'
19
+ | 'subtitle'
20
+ | 'ctaLabel'
21
+ | 'ctaDisabled'
22
+ | 'verifiedLabel'
23
+ | 'children'
24
+ | 'navLabel'
25
+ > {
26
+ /** Module copy — this screen reads the `form` slice. */
27
+ strings: WatchlistBusinessStrings;
28
+ /** Which purple `watchlist.*` form section to render. Default `default`. */
29
+ state?: WatchlistBusinessFormState;
30
+ /** The selectable countries of registration. Runtime data, not copy. */
31
+ countries?: WatchlistBusinessCountry[];
32
+ /** The three field values. Empty fields fall back to their placeholders. */
33
+ values?: WatchlistBusinessFormValues;
34
+ screenId?: string;
35
+ overrides?: PrizmaScreenOverrides;
36
+ onAction?: PrizmaScreenActionHandler;
37
+ }
38
+
39
+ /**
40
+ * Watchlist for Business — the lookup form, built on the Form archetype
41
+ * (GUIDELINES.md §6-E, `PrizmaFormScreen`).
42
+ *
43
+ * ONE screen for both purple form sections (`watchlist.default` and
44
+ * `watchlist.filled`): measured against the 390 frames they share an identical
45
+ * skeleton — nav → Title (H2, no subtitle) → Spacing/32 → Country dropdown,
46
+ * Business Name and Tax ID at Spacing/16 → primary CTA → tag — and differ ONLY
47
+ * in field content and whether the CTA is live.
48
+ *
49
+ * Four things are deliberate, each one a lesson an earlier module paid for:
50
+ *
51
+ * 1. The fields DO carry visible labels. Figma draws "Country", "Business Name"
52
+ * and "Tax ID" as real label rows above each field, so Core's `label` slot is
53
+ * used — the inverse of the #PI-4 / #EI-2 reading, where the design drew no
54
+ * label row and the copy had to ride `aria-label` (DEVIATIONS #WB-3).
55
+ * 2. Every field is UNCONTROLLED (`defaultValue` / `defaultValue` on the
56
+ * dropdown). A screen is one static spec state, so no `onChange` is needed —
57
+ * and Core's `readOnly`, the other way to make a field inert, paints the
58
+ * DISABLED grey surface on states Figma draws white (DEVIATIONS #PI-6).
59
+ * Neither section greys anything, so `disabled` is set nowhere.
60
+ * 3. The CTA state comes from the SECTION, not from the values: Figma greys
61
+ * "Continue" on `default` and lights it on `filled` — and `filled` leaves Tax
62
+ * ID empty, which is how we know the tax identifier does not gate the lookup
63
+ * (DEVIATIONS #WB-2). Deriving `ctaDisabled` from the values would have
64
+ * disagreed with the design.
65
+ * 4. The country flag is Core's canonical raster (24×18, radius 2) in the
66
+ * dropdown's LEADING slot — `PrizmaCountryFlag` composed into
67
+ * `PrizmaDropdown.renderLeading`, which exists for exactly this case and
68
+ * names it in its own docstring. Never an emoji glyph pasted into the
69
+ * option label: that renders at a different size on every OS, disappears
70
+ * entirely on Windows Chrome (no regional-indicator flag font), and lands
71
+ * inside the accessible label text instead of the decorative slot. The
72
+ * #PI-3 note ("Core ships no flag primitive") predates the primitive and no
73
+ * longer applies — `FormsChoiceScreen` and `FormsLongFormScreen` in this
74
+ * same package already use it (DEVIATIONS #WB-4).
75
+ *
76
+ * The module declares no layout and no CSS of its own: three fields fit the 844
77
+ * frame comfortably, so archetype E's stack needs none of CURP's scroll rule
78
+ * (#CURP-1).
79
+ */
80
+ export const WatchlistBusinessFormScreen = forwardRef<
81
+ HTMLDivElement,
82
+ WatchlistBusinessFormScreenProps
83
+ >(
84
+ (
85
+ {
86
+ strings,
87
+ state = 'default',
88
+ countries = [],
89
+ values,
90
+ screenId = `watchlist-business-form-${state}`,
91
+ overrides,
92
+ onAction,
93
+ ...shell
94
+ },
95
+ ref,
96
+ ) => {
97
+ const copy = strings.form;
98
+ // `default` draws the CTA greyed, `filled` draws it live. The section is the
99
+ // spec, not the field contents (see note 3 above).
100
+ const empty = state === 'default';
101
+
102
+ // The label is the country NAME only. The flag is not part of it — it rides
103
+ // the dropdown's leading slot below, where Core paints the raster.
104
+ const options = countries.map((c) => ({
105
+ value: c.value,
106
+ label: c.label,
107
+ }));
108
+
109
+ return (
110
+ <PrizmaFormScreen
111
+ ref={ref}
112
+ title={copy.title}
113
+ subtitle={copy.subtitle}
114
+ ctaLabel={copy.ctaLabel}
115
+ ctaDisabled={empty}
116
+ ctaLoadingLabel={copy.ctaLoadingLabel}
117
+ /* Figma draws no verified tag on either form section, but GUIDELINES §1
118
+ and the standing owner rule (#F-30, #PI-8) keep header AND footer on
119
+ every non-capture screen — so nothing shifts between the form, the
120
+ spinner and the verdict. DEVIATIONS #WB-1. */
121
+ verifiedLabel={strings.verifiedLabel}
122
+ navLabel={strings.navLabel}
123
+ screenId={screenId}
124
+ overrides={overrides}
125
+ onAction={onAction}
126
+ {...shell}
127
+ >
128
+ <PrizmaDropdown
129
+ label={copy.country.label}
130
+ placeholder={copy.country.placeholder}
131
+ options={options}
132
+ defaultValue={values?.country ?? null}
133
+ /* A country catalogue is long enough that Core's own search bar is
134
+ the right behaviour; no purple section draws the menu open, so
135
+ nothing about its appearance is being invented here. */
136
+ searchable
137
+ searchPlaceholder={copy.country.searchPlaceholder}
138
+ clearSearchLabel={copy.country.clearSearchLabel}
139
+ /* Core's canonical flag raster in the leading slot, in the closed
140
+ field and every menu row alike — the slot `renderLeading` exists
141
+ for, and what Figma draws ahead of "United States" (see note 4). */
142
+ renderLeading={(option) => {
143
+ const match = countries.find((c) => c.value === option.value);
144
+ return match ? (
145
+ <PrizmaCountryFlag
146
+ country={{
147
+ code: match.value,
148
+ name: match.label,
149
+ dialCode: '',
150
+ flag: match.flag ?? '',
151
+ }}
152
+ />
153
+ ) : null;
154
+ }}
155
+ />
156
+ <PrizmaTextField
157
+ label={copy.businessName.label}
158
+ placeholder={copy.businessName.placeholder}
159
+ autoComplete="organization"
160
+ defaultValue={values?.businessName ?? ''}
161
+ />
162
+ <PrizmaTextField
163
+ label={copy.taxId.label}
164
+ placeholder={copy.taxId.placeholder}
165
+ autoComplete="off"
166
+ autoCapitalize="characters"
167
+ spellCheck={false}
168
+ defaultValue={values?.taxId ?? ''}
169
+ />
170
+ </PrizmaFormScreen>
171
+ );
172
+ },
173
+ );
174
+ WatchlistBusinessFormScreen.displayName = 'WatchlistBusinessFormScreen';
175
+
176
+ export default WatchlistBusinessFormScreen;
@@ -0,0 +1,63 @@
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 { WatchlistBusinessStrings } from './WatchlistBusinessStrings';
8
+ import './ScreenLayout.css';
9
+
10
+ export interface WatchlistBusinessProcessingScreenProps
11
+ extends Omit<
12
+ PrizmaProcessingScreenProps,
13
+ 'status' | 'title' | 'subtitle' | 'verifiedLabel' | 'navLabel'
14
+ > {
15
+ /** Module copy — this screen reads the `processing` slice. */
16
+ strings: WatchlistBusinessStrings;
17
+ screenId?: string;
18
+ overrides?: PrizmaScreenOverrides;
19
+ onAction?: PrizmaScreenActionHandler;
20
+ }
21
+
22
+ /**
23
+ * Watchlist for Business — the in-flight screen, built on the Processing
24
+ * archetype (GUIDELINES.md §6-C, `PrizmaProcessingScreen`).
25
+ *
26
+ * Figma: the purple `watchlist.processing` section — the spinner over "Processing…"
27
+ * with a supporting line, no button, tag anchored at the bottom. That is exactly
28
+ * the pure case §6-F reserves for C rather than the Result archetype.
29
+ *
30
+ * The subtitle is what visually separates this screen from `success`: the
31
+ * spinner carries a second line, the verdict does not.
32
+ */
33
+ export const WatchlistBusinessProcessingScreen = forwardRef<
34
+ HTMLDivElement,
35
+ WatchlistBusinessProcessingScreenProps
36
+ >(
37
+ (
38
+ {
39
+ strings,
40
+ screenId = 'watchlist-business-processing',
41
+ overrides,
42
+ onAction,
43
+ ...shell
44
+ },
45
+ ref,
46
+ ) => (
47
+ <PrizmaProcessingScreen
48
+ ref={ref}
49
+ status="loading"
50
+ title={strings.processing.title}
51
+ subtitle={strings.processing.subtitle}
52
+ verifiedLabel={strings.verifiedLabel}
53
+ navLabel={strings.navLabel}
54
+ screenId={screenId}
55
+ overrides={overrides}
56
+ onAction={onAction}
57
+ {...shell}
58
+ />
59
+ ),
60
+ );
61
+ WatchlistBusinessProcessingScreen.displayName = 'WatchlistBusinessProcessingScreen';
62
+
63
+ export default WatchlistBusinessProcessingScreen;
@@ -0,0 +1,121 @@
1
+ // Watchlist for Business — copy contract.
2
+ //
3
+ // Figma: `🔍 Watchlist business - Screens specs + Localization`
4
+ // (BfHifNPAvPTpBlnMEDfg4J, page 5:13191). FOUR purple parent sections, all
5
+ // under one `watchlist.*` family:
6
+ // watchlist.default (7002:4494 → 7002:6018) — the empty lookup form
7
+ // watchlist.filled (7070:10549 → 7070:11692) — the same form carrying values
8
+ // watchlist.processing (5003:44743 → 5003:44744) — the spinner
9
+ // watchlist.success (5003:44753 → 5003:44754) — the positive verdict
10
+ //
11
+ // The module screens a BUSINESS (not a person) against sanction / PEP / adverse
12
+ // -media watchlists: the user picks the country of registration and supplies the
13
+ // legal name and, optionally, the tax identifier; the lookup then runs and
14
+ // reports back.
15
+ //
16
+ // No hardcoded English anywhere in a screen: every visible string arrives here,
17
+ // so the host's locale pack drives the module (the Figma file ships ES + PT
18
+ // columns beside the EN one).
19
+
20
+ /**
21
+ * The two purple form sections. They draw the SAME layout — nav → Title (H2, no
22
+ * subtitle) → Spacing/32 → three LABELLED fields → CTA → tag — and differ only
23
+ * in field content and whether the CTA is live, which is exactly what
24
+ * GUIDELINES §6-E means by "states are separate screens sharing the identical
25
+ * layout":
26
+ * - `default` — every field empty (the country dropdown on its placeholder),
27
+ * CTA greyed
28
+ * - `filled` — country selected and business name typed, CTA live
29
+ *
30
+ * Note what `filled` does NOT do: it leaves **Tax ID empty** and still enables
31
+ * the CTA, so the tax identifier is optional and does not gate the lookup
32
+ * (DEVIATIONS #WB-2).
33
+ */
34
+ export type WatchlistBusinessFormState = 'default' | 'filled';
35
+
36
+ /**
37
+ * One selectable country of registration. Runtime data, never copy — the host
38
+ * owns the catalogue (a full ISO list is not a string table), exactly as Phone
39
+ * Input takes its dial codes as data.
40
+ */
41
+ export interface WatchlistBusinessCountry {
42
+ /**
43
+ * Stable value. MUST be the ISO 3166-1 alpha-2 code ("US", "MX"): the screen
44
+ * feeds it to Core's `PrizmaCountryFlag`, which resolves the canonical
45
+ * 24×18 raster from the bundled flag bank by that code (DEVIATIONS #WB-4).
46
+ */
47
+ value: string;
48
+ /** The country name as drawn ("United States"). */
49
+ label: string;
50
+ /**
51
+ * FALLBACK ONLY — the emoji glyph Core falls back to when `value` is outside
52
+ * the bundled raster bank. It is never the primary treatment: the flag is
53
+ * drawn as Core's raster in the dropdown's leading slot, not pasted into the
54
+ * option label.
55
+ */
56
+ flag?: string;
57
+ }
58
+
59
+ /** The values the lookup form carries. Runtime data, never copy. */
60
+ export interface WatchlistBusinessFormValues {
61
+ /** A `WatchlistBusinessCountry.value`. */
62
+ country?: string;
63
+ /** The registered legal name, as typed. */
64
+ businessName?: string;
65
+ /** The tax identifier, as typed. Optional — see `WatchlistBusinessFormState`. */
66
+ taxId?: string;
67
+ }
68
+
69
+ /** Copy for one labelled field of the lookup form. */
70
+ export interface WatchlistBusinessFieldStrings {
71
+ /** Visible label above the field ("Business Name") — Figma draws a real label
72
+ * row here, unlike Phone Input / Email Input / CURP-enter, so Core's visible
73
+ * `label` slot is used rather than `aria-label` (DEVIATIONS #WB-3). */
74
+ label: string;
75
+ /** Placeholder inside the field. The two text fields draw none. */
76
+ placeholder?: string;
77
+ }
78
+
79
+ export interface WatchlistBusinessStrings {
80
+ /** "verified by" attribution in the footer tag. */
81
+ verifiedLabel: string;
82
+ /** Accessible name for the logo nav row. */
83
+ navLabel?: string;
84
+
85
+ /** watchlist.{default,filled} */
86
+ form: {
87
+ /** H2 ("Watchlist for business"). */
88
+ title: string;
89
+ /** H5 — the purple sections draw none, kept for hosts that want one. */
90
+ subtitle?: string;
91
+ country: WatchlistBusinessFieldStrings & {
92
+ /** Search placeholder inside the open menu. */
93
+ searchPlaceholder?: string;
94
+ /** Accessible name for the menu's search-clear button. */
95
+ clearSearchLabel?: string;
96
+ };
97
+ businessName: WatchlistBusinessFieldStrings;
98
+ taxId: WatchlistBusinessFieldStrings;
99
+ /** Primary CTA ("Continue"). */
100
+ ctaLabel: string;
101
+ /** Accessible busy label, for hosts that keep the user on the form while
102
+ * the lookup runs instead of moving to the spinner screen. */
103
+ ctaLoadingLabel?: string;
104
+ };
105
+
106
+ /** watchlist.processing — the spinner while the lookup runs. */
107
+ processing: {
108
+ /** H2 ("Processing…"). */
109
+ title: string;
110
+ /** H5 ("This won't take long."). */
111
+ subtitle?: string;
112
+ };
113
+
114
+ /** watchlist.success — the positive verdict. Figma draws NO button. */
115
+ success: {
116
+ /** H2 ("Success!"). */
117
+ title: string;
118
+ /** H5 — the section draws none, kept for hosts that want one. */
119
+ subtitle?: string;
120
+ };
121
+ }
@@ -0,0 +1,67 @@
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 { WatchlistBusinessStrings } from './WatchlistBusinessStrings';
8
+ import './ScreenLayout.css';
9
+
10
+ export interface WatchlistBusinessSuccessScreenProps
11
+ extends Omit<
12
+ PrizmaProcessingScreenProps,
13
+ 'status' | 'title' | 'subtitle' | 'verifiedLabel' | 'navLabel'
14
+ > {
15
+ /** Module copy — this screen reads the `success` slice. */
16
+ strings: WatchlistBusinessStrings;
17
+ screenId?: string;
18
+ overrides?: PrizmaScreenOverrides;
19
+ onAction?: PrizmaScreenActionHandler;
20
+ }
21
+
22
+ /**
23
+ * Watchlist for Business — the positive verdict, built on the Processing
24
+ * archetype (GUIDELINES.md §6-C, `PrizmaProcessingScreen`).
25
+ *
26
+ * Figma: the purple `watchlist.success` section — the status mark over
27
+ * "Success!", **no button**, no supporting line, tag anchored at the bottom.
28
+ * Because it draws no CTA it stays on C, not on the Result archetype: §6-F
29
+ * reserves C for exactly the pure no-button case, and Email Input's success
30
+ * already set that precedent against Phone Input's buttoned one (DEVIATIONS
31
+ * #EI-4).
32
+ *
33
+ * The mark is Core's outline status icon via `PrizmaTitle`'s icon slot — this
34
+ * module's Figma still draws the two-tone filled disc, one icon sweep behind
35
+ * (DEVIATIONS #15, unchanged here).
36
+ */
37
+ export const WatchlistBusinessSuccessScreen = forwardRef<
38
+ HTMLDivElement,
39
+ WatchlistBusinessSuccessScreenProps
40
+ >(
41
+ (
42
+ {
43
+ strings,
44
+ screenId = 'watchlist-business-success',
45
+ overrides,
46
+ onAction,
47
+ ...shell
48
+ },
49
+ ref,
50
+ ) => (
51
+ <PrizmaProcessingScreen
52
+ ref={ref}
53
+ status="success"
54
+ title={strings.success.title}
55
+ subtitle={strings.success.subtitle}
56
+ verifiedLabel={strings.verifiedLabel}
57
+ navLabel={strings.navLabel}
58
+ screenId={screenId}
59
+ overrides={overrides}
60
+ onAction={onAction}
61
+ {...shell}
62
+ />
63
+ ),
64
+ );
65
+ WatchlistBusinessSuccessScreen.displayName = 'WatchlistBusinessSuccessScreen';
66
+
67
+ export default WatchlistBusinessSuccessScreen;