@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,41 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { forwardRef } from 'react';
4
+ import { IconBankCard, IconIdFront, IconMessages, IconMicrophone, IconNumberedList, IconPassport, IconUser, IconWavingHand, } from '@incodetech/prizma-core-icons';
5
+ import { PrizmaListItem } from '@incodetech/prizma-core-web/list';
6
+ import { PrizmaListScreen } from './ListScreen';
7
+ import './ScreenLayout.css';
8
+ /**
9
+ * Journey beat → canonical bank glyph. ONE map, in one place — the same seven
10
+ * glyphs Core's `PrizmaStepper` carries (its icon set is documented as "the
11
+ * Video Selfie sequence"), so the tutorial promises exactly the steps the
12
+ * stepper later counts off. Nothing is drawn here (§10).
13
+ */
14
+ const ROW_ICONS = {
15
+ recording: _jsx(IconMicrophone, { size: "m" }),
16
+ idFront: _jsx(IconIdFront, { size: "m" }),
17
+ idBack: _jsx(IconBankCard, { size: "m" }),
18
+ passport: _jsx(IconPassport, { size: "m" }),
19
+ frontCamera: _jsx(IconUser, { size: "m" }),
20
+ waveHand: _jsx(IconWavingHand, { size: "m" }),
21
+ questions: _jsx(IconNumberedList, { size: "m" }),
22
+ speak: _jsx(IconMessages, { size: "m" }),
23
+ };
24
+ /**
25
+ * Video Selfie — tutorial, built on the List archetype (GUIDELINES.md §6-G,
26
+ * `PrizmaListScreen`). Figma: purple sections `video selfie - tutorial 1.0`
27
+ * and `1.2 - with passport`.
28
+ *
29
+ * The screen is a title block over a promise list and one CTA, which is exactly
30
+ * archetype G: the rows are Core's `PrizmaListItem` (`icon-m`) verbatim (only
31
+ * the leading glyph is chosen here, from `ROW_ICONS`), the Spacing/24 above the
32
+ * list is the archetype's `__list`, and the band is the archetype's. This file
33
+ * declares no layout of its own.
34
+ *
35
+ * NOT archetype A: A centres one illustration in the flexible middle; here the
36
+ * middle is a seven-row list that must span the column and start at the top —
37
+ * the distinction `ScreenLayout.css` draws between `__flex` and `__list`.
38
+ */
39
+ export const VideoSelfieTutorialScreen = forwardRef(({ strings, documentType = 'id', screenId = `video-selfie-tutorial-${documentType}`, overrides, onAction, ...shell }, ref) => (_jsx(PrizmaListScreen, { ref: ref, title: strings.tutorial.title, subtitle: strings.tutorial.subtitle, ctaLabel: strings.tutorial.ctaLabel, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell, children: _jsx("ul", { className: "video-selfie-tutorial-list", children: strings.tutorial.rows[documentType].map((row) => (_jsx("li", { children: _jsx(PrizmaListItem, { variant: "icon-m", label: row.label, icon: ROW_ICONS[row.kind] }) }, row.kind))) }) })));
40
+ VideoSelfieTutorialScreen.displayName = 'VideoSelfieTutorialScreen';
41
+ export default VideoSelfieTutorialScreen;
@@ -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,40 @@
1
+ import React, { type ReactNode } from 'react';
2
+ import { type PrizmaCaptureOverlayShape, type PrizmaCaptureOverlayState } from './CaptureOverlay';
3
+ import { type PrizmaScreenShellProps } from './ScreenShell';
4
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
5
+ import './ViewfinderScreen.css';
6
+ import './ScreenLayout.css';
7
+ export interface PrizmaViewfinderScreenProps extends Omit<PrizmaScreenShellProps, 'dark' | 'title'> {
8
+ /** White H2 above the capture window. */
9
+ title: string;
10
+ /** Muted instruction line under the title. */
11
+ instruction?: string;
12
+ /** "Your data is encrypted" style notice under the window. */
13
+ encryptedLabel?: string;
14
+ /** Accessible name for the help control (i18n). Renders the help icon only
15
+ * when provided. */
16
+ helpLabel?: string;
17
+ /** The camera surface behind the vignette — an <img> still or live <video>.
18
+ * Hosts with a real camera pipeline inject their feed here. */
19
+ cameraSurface?: ReactNode;
20
+ /** Capture window geometry (landscape ID / portrait document / ring). */
21
+ overlayShape: PrizmaCaptureOverlayShape;
22
+ overlayState?: PrizmaCaptureOverlayState;
23
+ /** Content inside the transparent window (defaults to see-through). */
24
+ overlayContent?: ReactNode;
25
+ screenId?: string;
26
+ overrides?: PrizmaScreenOverrides;
27
+ onAction?: PrizmaScreenActionHandler;
28
+ }
29
+ /**
30
+ * @deprecated DO NOT USE — scheduled for removal. Compose Core's capture
31
+ * component inside a dark `PrizmaScreenShell` instead: `PrizmaIdCapture`
32
+ * (`mode="overlay"`, `scrim`) already owns the window, the tokenized scrim,
33
+ * the encrypted row and the help affordance, and `PrizmaCaptureManual`
34
+ * supplies the shutter. See `DocumentCaptureCaptureScreen` for the pattern.
35
+ *
36
+ * Archetype D was built on the deprecated `CaptureOverlay` (see that file) and
37
+ * re-implements three Core pieces. Zero modules use it. DEVIATIONS.md #F-26.
38
+ */
39
+ export declare const PrizmaViewfinderScreen: React.ForwardRefExoticComponent<PrizmaViewfinderScreenProps & React.RefAttributes<HTMLDivElement>>;
40
+ export default PrizmaViewfinderScreen;
@@ -0,0 +1,26 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { forwardRef } from 'react';
4
+ import { IconLock, IconQuestionCircle } from '@incodetech/prizma-core-icons';
5
+ import { PrizmaCaptureOverlay, } from './CaptureOverlay';
6
+ import { PrizmaScreenShell } from './ScreenShell';
7
+ import './ViewfinderScreen.css';
8
+ import './ScreenLayout.css';
9
+ /**
10
+ * @deprecated DO NOT USE — scheduled for removal. Compose Core's capture
11
+ * component inside a dark `PrizmaScreenShell` instead: `PrizmaIdCapture`
12
+ * (`mode="overlay"`, `scrim`) already owns the window, the tokenized scrim,
13
+ * the encrypted row and the help affordance, and `PrizmaCaptureManual`
14
+ * supplies the shutter. See `DocumentCaptureCaptureScreen` for the pattern.
15
+ *
16
+ * Archetype D was built on the deprecated `CaptureOverlay` (see that file) and
17
+ * re-implements three Core pieces. Zero modules use it. DEVIATIONS.md #F-26.
18
+ */
19
+ export const PrizmaViewfinderScreen = forwardRef(({ title, instruction, encryptedLabel, helpLabel, cameraSurface, overlayShape, overlayState, overlayContent, screenId, overrides, onAction, className, ...shell }, ref) => (_jsxs(PrizmaScreenShell, { ref: ref, dark: true, className: ['prizma-viewfinder', className ?? ''].filter(Boolean).join(' '), ...shell, children: [_jsx("div", { className: "prizma-viewfinder__surface", children: cameraSurface }), _jsxs("div", { className: [
20
+ 'prizma-viewfinder__content',
21
+ overrides?.align === 'left' ? 'prizma-viewfinder__content--left' : '',
22
+ ]
23
+ .filter(Boolean)
24
+ .join(' '), children: [_jsxs("div", { className: "prizma-viewfinder__intro", children: [_jsx("h2", { className: "prizma-viewfinder__title", children: title }), instruction ? (_jsx("p", { className: "prizma-viewfinder__instruction", children: instruction })) : null] }), _jsx(PrizmaCaptureOverlay, { shape: overlayShape, state: overlayState, children: overlayContent }), encryptedLabel ? (_jsxs("div", { className: "prizma-viewfinder__encrypted", children: [_jsx(IconLock, { size: "s" }), _jsx("span", { children: encryptedLabel })] })) : null, _jsx("div", { className: "prizma-viewfinder__spacer" }), helpLabel ? (_jsx("button", { type: "button", className: "prizma-viewfinder__help", "aria-label": helpLabel, onClick: () => onAction?.({ type: 'help', screenId }), children: _jsx(IconQuestionCircle, { size: "m" }) })) : null] })] })));
25
+ PrizmaViewfinderScreen.displayName = 'PrizmaViewfinderScreen';
26
+ export default PrizmaViewfinderScreen;
@@ -0,0 +1,61 @@
1
+ import React from 'react';
2
+ import { type PrizmaFormScreenProps } from './FormScreen';
3
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
4
+ import type { WatchlistBusinessCountry, WatchlistBusinessFormState, WatchlistBusinessFormValues, WatchlistBusinessStrings } from './WatchlistBusinessStrings';
5
+ import './ScreenLayout.css';
6
+ export interface WatchlistBusinessFormScreenProps extends Omit<PrizmaFormScreenProps, 'title' | 'subtitle' | 'ctaLabel' | 'ctaDisabled' | 'verifiedLabel' | 'children' | 'navLabel'> {
7
+ /** Module copy — this screen reads the `form` slice. */
8
+ strings: WatchlistBusinessStrings;
9
+ /** Which purple `watchlist.*` form section to render. Default `default`. */
10
+ state?: WatchlistBusinessFormState;
11
+ /** The selectable countries of registration. Runtime data, not copy. */
12
+ countries?: WatchlistBusinessCountry[];
13
+ /** The three field values. Empty fields fall back to their placeholders. */
14
+ values?: WatchlistBusinessFormValues;
15
+ screenId?: string;
16
+ overrides?: PrizmaScreenOverrides;
17
+ onAction?: PrizmaScreenActionHandler;
18
+ }
19
+ /**
20
+ * Watchlist for Business — the lookup form, built on the Form archetype
21
+ * (GUIDELINES.md §6-E, `PrizmaFormScreen`).
22
+ *
23
+ * ONE screen for both purple form sections (`watchlist.default` and
24
+ * `watchlist.filled`): measured against the 390 frames they share an identical
25
+ * skeleton — nav → Title (H2, no subtitle) → Spacing/32 → Country dropdown,
26
+ * Business Name and Tax ID at Spacing/16 → primary CTA → tag — and differ ONLY
27
+ * in field content and whether the CTA is live.
28
+ *
29
+ * Four things are deliberate, each one a lesson an earlier module paid for:
30
+ *
31
+ * 1. The fields DO carry visible labels. Figma draws "Country", "Business Name"
32
+ * and "Tax ID" as real label rows above each field, so Core's `label` slot is
33
+ * used — the inverse of the #PI-4 / #EI-2 reading, where the design drew no
34
+ * label row and the copy had to ride `aria-label` (DEVIATIONS #WB-3).
35
+ * 2. Every field is UNCONTROLLED (`defaultValue` / `defaultValue` on the
36
+ * dropdown). A screen is one static spec state, so no `onChange` is needed —
37
+ * and Core's `readOnly`, the other way to make a field inert, paints the
38
+ * DISABLED grey surface on states Figma draws white (DEVIATIONS #PI-6).
39
+ * Neither section greys anything, so `disabled` is set nowhere.
40
+ * 3. The CTA state comes from the SECTION, not from the values: Figma greys
41
+ * "Continue" on `default` and lights it on `filled` — and `filled` leaves Tax
42
+ * ID empty, which is how we know the tax identifier does not gate the lookup
43
+ * (DEVIATIONS #WB-2). Deriving `ctaDisabled` from the values would have
44
+ * disagreed with the design.
45
+ * 4. The country flag is Core's canonical raster (24×18, radius 2) in the
46
+ * dropdown's LEADING slot — `PrizmaCountryFlag` composed into
47
+ * `PrizmaDropdown.renderLeading`, which exists for exactly this case and
48
+ * names it in its own docstring. Never an emoji glyph pasted into the
49
+ * option label: that renders at a different size on every OS, disappears
50
+ * entirely on Windows Chrome (no regional-indicator flag font), and lands
51
+ * inside the accessible label text instead of the decorative slot. The
52
+ * #PI-3 note ("Core ships no flag primitive") predates the primitive and no
53
+ * longer applies — `FormsChoiceScreen` and `FormsLongFormScreen` in this
54
+ * same package already use it (DEVIATIONS #WB-4).
55
+ *
56
+ * The module declares no layout and no CSS of its own: three fields fit the 844
57
+ * frame comfortably, so archetype E's stack needs none of CURP's scroll rule
58
+ * (#CURP-1).
59
+ */
60
+ export declare const WatchlistBusinessFormScreen: React.ForwardRefExoticComponent<WatchlistBusinessFormScreenProps & React.RefAttributes<HTMLDivElement>>;
61
+ export default WatchlistBusinessFormScreen;
@@ -0,0 +1,85 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { forwardRef } from 'react';
4
+ import { PrizmaTextField } from '@incodetech/prizma-core-web/text-field';
5
+ import { PrizmaDropdown } from '@incodetech/prizma-core-web/dropdown';
6
+ import { PrizmaCountryFlag } from '@incodetech/prizma-core-web/combined';
7
+ import { PrizmaFormScreen } from './FormScreen';
8
+ import './ScreenLayout.css';
9
+ /**
10
+ * Watchlist for Business — the lookup form, built on the Form archetype
11
+ * (GUIDELINES.md §6-E, `PrizmaFormScreen`).
12
+ *
13
+ * ONE screen for both purple form sections (`watchlist.default` and
14
+ * `watchlist.filled`): measured against the 390 frames they share an identical
15
+ * skeleton — nav → Title (H2, no subtitle) → Spacing/32 → Country dropdown,
16
+ * Business Name and Tax ID at Spacing/16 → primary CTA → tag — and differ ONLY
17
+ * in field content and whether the CTA is live.
18
+ *
19
+ * Four things are deliberate, each one a lesson an earlier module paid for:
20
+ *
21
+ * 1. The fields DO carry visible labels. Figma draws "Country", "Business Name"
22
+ * and "Tax ID" as real label rows above each field, so Core's `label` slot is
23
+ * used — the inverse of the #PI-4 / #EI-2 reading, where the design drew no
24
+ * label row and the copy had to ride `aria-label` (DEVIATIONS #WB-3).
25
+ * 2. Every field is UNCONTROLLED (`defaultValue` / `defaultValue` on the
26
+ * dropdown). A screen is one static spec state, so no `onChange` is needed —
27
+ * and Core's `readOnly`, the other way to make a field inert, paints the
28
+ * DISABLED grey surface on states Figma draws white (DEVIATIONS #PI-6).
29
+ * Neither section greys anything, so `disabled` is set nowhere.
30
+ * 3. The CTA state comes from the SECTION, not from the values: Figma greys
31
+ * "Continue" on `default` and lights it on `filled` — and `filled` leaves Tax
32
+ * ID empty, which is how we know the tax identifier does not gate the lookup
33
+ * (DEVIATIONS #WB-2). Deriving `ctaDisabled` from the values would have
34
+ * disagreed with the design.
35
+ * 4. The country flag is Core's canonical raster (24×18, radius 2) in the
36
+ * dropdown's LEADING slot — `PrizmaCountryFlag` composed into
37
+ * `PrizmaDropdown.renderLeading`, which exists for exactly this case and
38
+ * names it in its own docstring. Never an emoji glyph pasted into the
39
+ * option label: that renders at a different size on every OS, disappears
40
+ * entirely on Windows Chrome (no regional-indicator flag font), and lands
41
+ * inside the accessible label text instead of the decorative slot. The
42
+ * #PI-3 note ("Core ships no flag primitive") predates the primitive and no
43
+ * longer applies — `FormsChoiceScreen` and `FormsLongFormScreen` in this
44
+ * same package already use it (DEVIATIONS #WB-4).
45
+ *
46
+ * The module declares no layout and no CSS of its own: three fields fit the 844
47
+ * frame comfortably, so archetype E's stack needs none of CURP's scroll rule
48
+ * (#CURP-1).
49
+ */
50
+ export const WatchlistBusinessFormScreen = forwardRef(({ strings, state = 'default', countries = [], values, screenId = `watchlist-business-form-${state}`, overrides, onAction, ...shell }, ref) => {
51
+ const copy = strings.form;
52
+ // `default` draws the CTA greyed, `filled` draws it live. The section is the
53
+ // spec, not the field contents (see note 3 above).
54
+ const empty = state === 'default';
55
+ // The label is the country NAME only. The flag is not part of it — it rides
56
+ // the dropdown's leading slot below, where Core paints the raster.
57
+ const options = countries.map((c) => ({
58
+ value: c.value,
59
+ label: c.label,
60
+ }));
61
+ return (_jsxs(PrizmaFormScreen, { ref: ref, title: copy.title, subtitle: copy.subtitle, ctaLabel: copy.ctaLabel, ctaDisabled: empty, ctaLoadingLabel: copy.ctaLoadingLabel,
62
+ /* Figma draws no verified tag on either form section, but GUIDELINES §1
63
+ and the standing owner rule (#F-30, #PI-8) keep header AND footer on
64
+ every non-capture screen — so nothing shifts between the form, the
65
+ spinner and the verdict. DEVIATIONS #WB-1. */
66
+ verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell, children: [_jsx(PrizmaDropdown, { label: copy.country.label, placeholder: copy.country.placeholder, options: options, defaultValue: values?.country ?? null,
67
+ /* A country catalogue is long enough that Core's own search bar is
68
+ the right behaviour; no purple section draws the menu open, so
69
+ nothing about its appearance is being invented here. */
70
+ searchable: true, searchPlaceholder: copy.country.searchPlaceholder, clearSearchLabel: copy.country.clearSearchLabel,
71
+ /* Core's canonical flag raster in the leading slot, in the closed
72
+ field and every menu row alike — the slot `renderLeading` exists
73
+ for, and what Figma draws ahead of "United States" (see note 4). */
74
+ renderLeading: (option) => {
75
+ const match = countries.find((c) => c.value === option.value);
76
+ return match ? (_jsx(PrizmaCountryFlag, { country: {
77
+ code: match.value,
78
+ name: match.label,
79
+ dialCode: '',
80
+ flag: match.flag ?? '',
81
+ } })) : null;
82
+ } }), _jsx(PrizmaTextField, { label: copy.businessName.label, placeholder: copy.businessName.placeholder, autoComplete: "organization", defaultValue: values?.businessName ?? '' }), _jsx(PrizmaTextField, { label: copy.taxId.label, placeholder: copy.taxId.placeholder, autoComplete: "off", autoCapitalize: "characters", spellCheck: false, defaultValue: values?.taxId ?? '' })] }));
83
+ });
84
+ WatchlistBusinessFormScreen.displayName = 'WatchlistBusinessFormScreen';
85
+ export default WatchlistBusinessFormScreen;
@@ -0,0 +1,25 @@
1
+ import React from 'react';
2
+ import { type PrizmaProcessingScreenProps } from './ProcessingScreen';
3
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
4
+ import type { WatchlistBusinessStrings } from './WatchlistBusinessStrings';
5
+ import './ScreenLayout.css';
6
+ export interface WatchlistBusinessProcessingScreenProps extends Omit<PrizmaProcessingScreenProps, 'status' | 'title' | 'subtitle' | 'verifiedLabel' | 'navLabel'> {
7
+ /** Module copy — this screen reads the `processing` slice. */
8
+ strings: WatchlistBusinessStrings;
9
+ screenId?: string;
10
+ overrides?: PrizmaScreenOverrides;
11
+ onAction?: PrizmaScreenActionHandler;
12
+ }
13
+ /**
14
+ * Watchlist for Business — the in-flight screen, built on the Processing
15
+ * archetype (GUIDELINES.md §6-C, `PrizmaProcessingScreen`).
16
+ *
17
+ * Figma: the purple `watchlist.processing` section — the spinner over "Processing…"
18
+ * with a supporting line, no button, tag anchored at the bottom. That is exactly
19
+ * the pure case §6-F reserves for C rather than the Result archetype.
20
+ *
21
+ * The subtitle is what visually separates this screen from `success`: the
22
+ * spinner carries a second line, the verdict does not.
23
+ */
24
+ export declare const WatchlistBusinessProcessingScreen: React.ForwardRefExoticComponent<WatchlistBusinessProcessingScreenProps & React.RefAttributes<HTMLDivElement>>;
25
+ export default WatchlistBusinessProcessingScreen;
@@ -0,0 +1,19 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { forwardRef } from 'react';
4
+ import { PrizmaProcessingScreen, } from './ProcessingScreen';
5
+ import './ScreenLayout.css';
6
+ /**
7
+ * Watchlist for Business — the in-flight screen, built on the Processing
8
+ * archetype (GUIDELINES.md §6-C, `PrizmaProcessingScreen`).
9
+ *
10
+ * Figma: the purple `watchlist.processing` section — the spinner over "Processing…"
11
+ * with a supporting line, no button, tag anchored at the bottom. That is exactly
12
+ * the pure case §6-F reserves for C rather than the Result archetype.
13
+ *
14
+ * The subtitle is what visually separates this screen from `success`: the
15
+ * spinner carries a second line, the verdict does not.
16
+ */
17
+ export const WatchlistBusinessProcessingScreen = forwardRef(({ strings, screenId = 'watchlist-business-processing', overrides, onAction, ...shell }, ref) => (_jsx(PrizmaProcessingScreen, { ref: ref, status: "loading", title: strings.processing.title, subtitle: strings.processing.subtitle, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell })));
18
+ WatchlistBusinessProcessingScreen.displayName = 'WatchlistBusinessProcessingScreen';
19
+ export default WatchlistBusinessProcessingScreen;
@@ -0,0 +1,95 @@
1
+ /**
2
+ * The two purple form sections. They draw the SAME layout — nav → Title (H2, no
3
+ * subtitle) → Spacing/32 → three LABELLED fields → CTA → tag — and differ only
4
+ * in field content and whether the CTA is live, which is exactly what
5
+ * GUIDELINES §6-E means by "states are separate screens sharing the identical
6
+ * layout":
7
+ * - `default` — every field empty (the country dropdown on its placeholder),
8
+ * CTA greyed
9
+ * - `filled` — country selected and business name typed, CTA live
10
+ *
11
+ * Note what `filled` does NOT do: it leaves **Tax ID empty** and still enables
12
+ * the CTA, so the tax identifier is optional and does not gate the lookup
13
+ * (DEVIATIONS #WB-2).
14
+ */
15
+ export type WatchlistBusinessFormState = 'default' | 'filled';
16
+ /**
17
+ * One selectable country of registration. Runtime data, never copy — the host
18
+ * owns the catalogue (a full ISO list is not a string table), exactly as Phone
19
+ * Input takes its dial codes as data.
20
+ */
21
+ export interface WatchlistBusinessCountry {
22
+ /**
23
+ * Stable value. MUST be the ISO 3166-1 alpha-2 code ("US", "MX"): the screen
24
+ * feeds it to Core's `PrizmaCountryFlag`, which resolves the canonical
25
+ * 24×18 raster from the bundled flag bank by that code (DEVIATIONS #WB-4).
26
+ */
27
+ value: string;
28
+ /** The country name as drawn ("United States"). */
29
+ label: string;
30
+ /**
31
+ * FALLBACK ONLY — the emoji glyph Core falls back to when `value` is outside
32
+ * the bundled raster bank. It is never the primary treatment: the flag is
33
+ * drawn as Core's raster in the dropdown's leading slot, not pasted into the
34
+ * option label.
35
+ */
36
+ flag?: string;
37
+ }
38
+ /** The values the lookup form carries. Runtime data, never copy. */
39
+ export interface WatchlistBusinessFormValues {
40
+ /** A `WatchlistBusinessCountry.value`. */
41
+ country?: string;
42
+ /** The registered legal name, as typed. */
43
+ businessName?: string;
44
+ /** The tax identifier, as typed. Optional — see `WatchlistBusinessFormState`. */
45
+ taxId?: string;
46
+ }
47
+ /** Copy for one labelled field of the lookup form. */
48
+ export interface WatchlistBusinessFieldStrings {
49
+ /** Visible label above the field ("Business Name") — Figma draws a real label
50
+ * row here, unlike Phone Input / Email Input / CURP-enter, so Core's visible
51
+ * `label` slot is used rather than `aria-label` (DEVIATIONS #WB-3). */
52
+ label: string;
53
+ /** Placeholder inside the field. The two text fields draw none. */
54
+ placeholder?: string;
55
+ }
56
+ export interface WatchlistBusinessStrings {
57
+ /** "verified by" attribution in the footer tag. */
58
+ verifiedLabel: string;
59
+ /** Accessible name for the logo nav row. */
60
+ navLabel?: string;
61
+ /** watchlist.{default,filled} */
62
+ form: {
63
+ /** H2 ("Watchlist for business"). */
64
+ title: string;
65
+ /** H5 — the purple sections draw none, kept for hosts that want one. */
66
+ subtitle?: string;
67
+ country: WatchlistBusinessFieldStrings & {
68
+ /** Search placeholder inside the open menu. */
69
+ searchPlaceholder?: string;
70
+ /** Accessible name for the menu's search-clear button. */
71
+ clearSearchLabel?: string;
72
+ };
73
+ businessName: WatchlistBusinessFieldStrings;
74
+ taxId: WatchlistBusinessFieldStrings;
75
+ /** Primary CTA ("Continue"). */
76
+ ctaLabel: string;
77
+ /** Accessible busy label, for hosts that keep the user on the form while
78
+ * the lookup runs instead of moving to the spinner screen. */
79
+ ctaLoadingLabel?: string;
80
+ };
81
+ /** watchlist.processing — the spinner while the lookup runs. */
82
+ processing: {
83
+ /** H2 ("Processing…"). */
84
+ title: string;
85
+ /** H5 ("This won't take long."). */
86
+ subtitle?: string;
87
+ };
88
+ /** watchlist.success — the positive verdict. Figma draws NO button. */
89
+ success: {
90
+ /** H2 ("Success!"). */
91
+ title: string;
92
+ /** H5 — the section draws none, kept for hosts that want one. */
93
+ subtitle?: string;
94
+ };
95
+ }
@@ -0,0 +1,19 @@
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
+ export {};
@@ -0,0 +1,29 @@
1
+ import React from 'react';
2
+ import { type PrizmaProcessingScreenProps } from './ProcessingScreen';
3
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
4
+ import type { WatchlistBusinessStrings } from './WatchlistBusinessStrings';
5
+ import './ScreenLayout.css';
6
+ export interface WatchlistBusinessSuccessScreenProps extends Omit<PrizmaProcessingScreenProps, 'status' | 'title' | 'subtitle' | 'verifiedLabel' | 'navLabel'> {
7
+ /** Module copy — this screen reads the `success` slice. */
8
+ strings: WatchlistBusinessStrings;
9
+ screenId?: string;
10
+ overrides?: PrizmaScreenOverrides;
11
+ onAction?: PrizmaScreenActionHandler;
12
+ }
13
+ /**
14
+ * Watchlist for Business — the positive verdict, built on the Processing
15
+ * archetype (GUIDELINES.md §6-C, `PrizmaProcessingScreen`).
16
+ *
17
+ * Figma: the purple `watchlist.success` section — the status mark over
18
+ * "Success!", **no button**, no supporting line, tag anchored at the bottom.
19
+ * Because it draws no CTA it stays on C, not on the Result archetype: §6-F
20
+ * reserves C for exactly the pure no-button case, and Email Input's success
21
+ * already set that precedent against Phone Input's buttoned one (DEVIATIONS
22
+ * #EI-4).
23
+ *
24
+ * The mark is Core's outline status icon via `PrizmaTitle`'s icon slot — this
25
+ * module's Figma still draws the two-tone filled disc, one icon sweep behind
26
+ * (DEVIATIONS #15, unchanged here).
27
+ */
28
+ export declare const WatchlistBusinessSuccessScreen: React.ForwardRefExoticComponent<WatchlistBusinessSuccessScreenProps & React.RefAttributes<HTMLDivElement>>;
29
+ export default WatchlistBusinessSuccessScreen;
@@ -0,0 +1,23 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { forwardRef } from 'react';
4
+ import { PrizmaProcessingScreen, } from './ProcessingScreen';
5
+ import './ScreenLayout.css';
6
+ /**
7
+ * Watchlist for Business — the positive verdict, built on the Processing
8
+ * archetype (GUIDELINES.md §6-C, `PrizmaProcessingScreen`).
9
+ *
10
+ * Figma: the purple `watchlist.success` section — the status mark over
11
+ * "Success!", **no button**, no supporting line, tag anchored at the bottom.
12
+ * Because it draws no CTA it stays on C, not on the Result archetype: §6-F
13
+ * reserves C for exactly the pure no-button case, and Email Input's success
14
+ * already set that precedent against Phone Input's buttoned one (DEVIATIONS
15
+ * #EI-4).
16
+ *
17
+ * The mark is Core's outline status icon via `PrizmaTitle`'s icon slot — this
18
+ * module's Figma still draws the two-tone filled disc, one icon sweep behind
19
+ * (DEVIATIONS #15, unchanged here).
20
+ */
21
+ export const WatchlistBusinessSuccessScreen = forwardRef(({ strings, screenId = 'watchlist-business-success', overrides, onAction, ...shell }, ref) => (_jsx(PrizmaProcessingScreen, { ref: ref, status: "success", title: strings.success.title, subtitle: strings.success.subtitle, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell })));
22
+ WatchlistBusinessSuccessScreen.displayName = 'WatchlistBusinessSuccessScreen';
23
+ export default WatchlistBusinessSuccessScreen;