@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,81 @@
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 { PrizmaDateField } from '@incodetech/prizma-core-web/date-field';
6
+ import { PrizmaStepper } from '@incodetech/prizma-core-web/stepper';
7
+ import { PrizmaFormScreen } from './FormScreen';
8
+ import './ScreenLayout.css';
9
+ import './EkycLayout.css';
10
+ /**
11
+ * eKYC — page 1, the applicant's identity data, built on the Form archetype
12
+ * (GUIDELINES.md §6-E, `PrizmaFormScreen`).
13
+ *
14
+ * ONE screen for all three page-1 purple sections (`default` 2101:7877,
15
+ * `focused` 2101:8159, `filled` 5849:60225): measured against the 390 frames
16
+ * they share an identical skeleton — nav → Title → Spacing/32 → four labelled
17
+ * fields at Spacing/16 → "Continue" → tag (the archetype's own offsets, and the
18
+ * exact ones Figma draws: `middle container` puts Title at 8, `container 1` at
19
+ * 99, and stacks the fields at 0 / 94 / 188 / 282, i.e. 78-tall fields with a
20
+ * flat 16 between) — and differ ONLY in field content and field treatment.
21
+ *
22
+ * Four things are deliberate, each one a lesson an earlier module paid for:
23
+ *
24
+ * 1. The fields are UNCONTROLLED (`defaultValue`). A screen is one static spec
25
+ * state, so no `onChange` is needed — and Core's `readOnly`, the other way
26
+ * to freeze a field, paints the DISABLED grey surface on sections Figma
27
+ * draws white (#PI-6). Page 1 greys nothing, so nothing here is `disabled`.
28
+ * 2. `focused` gets Core's OWN `--focused` modifier through `className` — the
29
+ * class its CSS already implements beside `:focus-within`. `PrizmaTextField`
30
+ * still has no `forceState` prop, unlike `PrizmaDropdown` (#PI-7); nothing
31
+ * is re-styled here.
32
+ * 3. The clear ✕ is asked for ONLY on the focused field, the one field
33
+ * 2101:8159 draws it in. `clearable` alone would be a prop that silently
34
+ * does nothing — Core reveals the button under `:focus-within`, a guard a
35
+ * static spec state can never satisfy — so `EkycLayout.css` releases that
36
+ * one guard, the same idiom (and the same Core request) as
37
+ * `CurpLayout.css`'s error rule. No ✕ glyph is declared here.
38
+ * 4. Date of Birth is Core's `PrizmaDateField`, not a text field with a bolted-on
39
+ * icon: the frame's trailing glyph is the date kind's own calendar
40
+ * affordance, and the DD/MM/YYYY value Figma fills in ("14/03/1989") is the
41
+ * mask that kind applies.
42
+ *
43
+ * The required asterisk is Core's `requiredHint` suffix on a `required` field —
44
+ * the label row Figma draws as "First name *" — so Middle name, the one
45
+ * optional field, correctly renders none.
46
+ *
47
+ * Figma draws a two-segment journey bar between the nav and the title on every
48
+ * page-1 frame, and it is the only chrome that separates page 1 from page 2.
49
+ * Archetype E had no slot above the title; the gap is now CLOSED in the
50
+ * archetype (`PrizmaFormScreen.progress`, offsets in `ScreenLayout.css`) rather
51
+ * than worked around here, and the bar itself is Core's shipped `PrizmaStepper`
52
+ * — no two-div bar is hand-rolled. All three page-1 sections draw segment 1
53
+ * solid brand blue and segment 2 grey, i.e. `steps={2} currentState="Start"`,
54
+ * with the icons row off (the frames draw the bar alone). DEVIATIONS #EK-1.
55
+ */
56
+ export const EkycDetailsScreen = forwardRef(({ strings, state = 'default', values, screenId = `ekyc-details-${state}`, className, overrides, onAction, ...shell }, ref) => {
57
+ // The one field treatment that varies across the three sections: 2101:8159
58
+ // rings First name blue and shows its clear ✕; the other two draw every
59
+ // field resting.
60
+ const focused = state === 'focused';
61
+ return (_jsxs(PrizmaFormScreen, { ref: ref,
62
+ /* Scopes the single rule that lets the focused field keep the clear ✕
63
+ Figma draws inside it. See EkycLayout.css. */
64
+ className: ['ekyc-details', focused ? 'ekyc-details--focused' : '', className]
65
+ .filter(Boolean)
66
+ .join(' '),
67
+ /* Page 1 of 2: segment 1 filled, segment 2 still grey — Core's own
68
+ `Start` state at `steps={2}`. `showIcons={false}` because the frames
69
+ draw the bar with no glyph row (and it keeps the icon lookup, which
70
+ has no id+2 sequence, out of the render entirely). */
71
+ progress: _jsx(PrizmaStepper, { steps: 2, currentState: "Start", showIcons: false, "aria-label": strings.stepperLabel }), title: strings.details.title, subtitle: strings.details.subtitle, ctaLabel: strings.details.ctaLabel, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId,
72
+ /* Every eKYC form frame LEFT-aligns its title block, while the archetype
73
+ defaults to centred. The module supplies its designed alignment through
74
+ the sanctioned override rather than declaring any layout, and a host
75
+ that passes its own `align` still wins. */
76
+ overrides: { align: overrides?.align ?? 'left', logo: overrides?.logo }, onAction: onAction, ...shell, children: [_jsx(PrizmaTextField, { className: focused ? 'prizma-input-textfield--focused' : undefined, label: strings.details.firstNameLabel, required: true, requiredHint: strings.details.requiredHint, defaultValue: values?.firstName ?? '', autoComplete: "off",
77
+ /* Only 2101:8159 draws the ✕, and only in this field. */
78
+ clearable: focused, clearLabel: strings.details.clearLabel }), _jsx(PrizmaTextField, { label: strings.details.middleNameLabel, defaultValue: values?.middleName ?? '', autoComplete: "off", clearable: false }), _jsx(PrizmaTextField, { label: strings.details.lastNameLabel, required: true, requiredHint: strings.details.requiredHint, defaultValue: values?.lastName ?? '', autoComplete: "off", clearable: false }), _jsx(PrizmaDateField, { label: strings.details.dateOfBirthLabel, required: true, requiredHint: strings.details.requiredHint, defaultValue: values?.dateOfBirth ?? '', autoComplete: "off" })] }));
79
+ });
80
+ EkycDetailsScreen.displayName = 'EkycDetailsScreen';
81
+ export default EkycDetailsScreen;
@@ -0,0 +1,32 @@
1
+ import React from 'react';
2
+ import { type PrizmaResultScreenProps } from './ResultScreen';
3
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
4
+ import type { EkycStrings } from './EkycStrings';
5
+ import './ScreenLayout.css';
6
+ export interface EkycErrorScreenProps extends Omit<PrizmaResultScreenProps, 'status' | 'title' | 'subtitle' | 'ctaLabel' | 'verifiedLabel' | 'navLabel'> {
7
+ /** Module copy — this screen reads the `error` slice. */
8
+ strings: EkycStrings;
9
+ screenId?: string;
10
+ overrides?: PrizmaScreenOverrides;
11
+ onAction?: PrizmaScreenActionHandler;
12
+ }
13
+ /**
14
+ * eKYC — the failure verdict, built on the Result archetype
15
+ * (GUIDELINES.md §6-F, `PrizmaResultScreen`).
16
+ *
17
+ * Figma: the purple `eKYC.error` section (2101:7979), which holds exactly ONE
18
+ * screen — a centred negative mark + H2 ("Something went wrong") over the "Try
19
+ * again" CTA band. The module draws no connectivity section anywhere in the
20
+ * file, so this screen ships no `variant` axis and no Wi-Fi glyph: adding one
21
+ * would invent a state the spec does not have (the #EI-5 precedent).
22
+ *
23
+ * Two things Figma draws are deliberately NOT reproduced, both owner-settled:
24
+ * the nav's close ✕ (GUIDELINES §3 forbids it — the standing #PI-9 ruling) and
25
+ * the missing verified tag, since the chrome stays constant across a module's
26
+ * screens (#PI-8, #F-34). The header and the tag stay.
27
+ *
28
+ * The mark is Core's outline status icon; the module Figma still draws the
29
+ * two-tone filled disc, one icon sweep behind (DEVIATIONS #15).
30
+ */
31
+ export declare const EkycErrorScreen: React.ForwardRefExoticComponent<EkycErrorScreenProps & React.RefAttributes<HTMLDivElement>>;
32
+ export default EkycErrorScreen;
@@ -0,0 +1,26 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { forwardRef } from 'react';
4
+ import { PrizmaResultScreen } from './ResultScreen';
5
+ import './ScreenLayout.css';
6
+ /**
7
+ * eKYC — the failure verdict, built on the Result archetype
8
+ * (GUIDELINES.md §6-F, `PrizmaResultScreen`).
9
+ *
10
+ * Figma: the purple `eKYC.error` section (2101:7979), which holds exactly ONE
11
+ * screen — a centred negative mark + H2 ("Something went wrong") over the "Try
12
+ * again" CTA band. The module draws no connectivity section anywhere in the
13
+ * file, so this screen ships no `variant` axis and no Wi-Fi glyph: adding one
14
+ * would invent a state the spec does not have (the #EI-5 precedent).
15
+ *
16
+ * Two things Figma draws are deliberately NOT reproduced, both owner-settled:
17
+ * the nav's close ✕ (GUIDELINES §3 forbids it — the standing #PI-9 ruling) and
18
+ * the missing verified tag, since the chrome stays constant across a module's
19
+ * screens (#PI-8, #F-34). The header and the tag stay.
20
+ *
21
+ * The mark is Core's outline status icon; the module Figma still draws the
22
+ * two-tone filled disc, one icon sweep behind (DEVIATIONS #15).
23
+ */
24
+ export const EkycErrorScreen = forwardRef(({ strings, screenId = 'ekyc-error', overrides, onAction, ...shell }, ref) => (_jsx(PrizmaResultScreen, { ref: ref, status: "error", title: strings.error.title, ctaLabel: strings.error.ctaLabel, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell })));
25
+ EkycErrorScreen.displayName = 'EkycErrorScreen';
26
+ export default EkycErrorScreen;
@@ -0,0 +1,39 @@
1
+ /* eKYC — module layout additions.
2
+ *
3
+ * ONE rule, and it declares no spacing: the content column, the 24px gutters,
4
+ * the title → fields Spacing/32, the 16 between fields, the CTA column and the
5
+ * anchored footer all stay the foundation's (`ScreenLayout.css`,
6
+ * `FormScreen.css`). Nothing here re-declares an archetype value, invents a
7
+ * primitive or repaints one — the rule RELEASES a Core constraint that a purple
8
+ * eKYC section contradicts, the same idiom as `CurpLayout.css`'s error rule and
9
+ * Phone Input's `width: auto` on Core's fill-width Dropdown (DEVIATIONS #PI-1).
10
+ */
11
+
12
+ /* ── The focused First-name field keeps its clear ✕ ──────────────────────────
13
+ * `eKYC.focused` (2101:8159) draws three things at once: the blue focus ring on
14
+ * First name, the partial value ("Juli") AND the grey clear ✕ at the field's
15
+ * right edge. Core renders that button (`PrizmaTextField clearable`) but reveals
16
+ * it only under `:focus-within` (TextField.css:121) — a guard a STATIC spec
17
+ * state can never satisfy, because nothing in a gallery card ever takes real
18
+ * DOM focus. Left alone, `clearable` would be a prop that silently does nothing,
19
+ * which is the exact defect the CURP build was pulled up on.
20
+ *
21
+ * This releases the guard for that ONE section, and only where Core has already
22
+ * decided the button should exist: `__clear--show` is Core's own state class,
23
+ * set only when the field has a value. It is Core's button, icon, box, size and
24
+ * color token — no ✕ glyph is declared here, no geometry, no spacing; only
25
+ * Core's `display: none` is lifted. Every other eKYC field asks for
26
+ * `clearable={false}` and gets no button in the DOM at all, exactly as
27
+ * 2101:7877 / 5849:60225 / 5849:51109 / 5849:66890 / 5849:71925 draw them.
28
+ *
29
+ * CORE REQUEST (already open as DEVIATIONS #PI-7): `PrizmaTextField` needs the
30
+ * `forceState` prop `PrizmaDropdown` has, so a documentation/spec surface can
31
+ * render the designed focused state — ring AND clear affordance — without a
32
+ * consumer releasing a CSS guard. Every module with a "focused" purple section
33
+ * hits this.
34
+ */
35
+ .ekyc-details--focused
36
+ .prizma-input-textfield--focused
37
+ .prizma-input-textfield__clear--show {
38
+ display: inline-flex;
39
+ }
@@ -0,0 +1,21 @@
1
+ import React from 'react';
2
+ import { type PrizmaFormScreenProps } from './FormScreen';
3
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
4
+ import type { EkycLicenseState, EkycLicenseStateOption, EkycLicenseValues, EkycStrings } from './EkycStrings';
5
+ import './ScreenLayout.css';
6
+ import './EkycLayout.css';
7
+ export interface EkycLicenseScreenProps extends Omit<PrizmaFormScreenProps, 'title' | 'subtitle' | 'ctaLabel' | 'ctaLoading' | 'ctaLoadingLabel' | 'verifiedLabel' | 'children' | 'navLabel' | 'linkLabel' | 'linkContent' | 'progress'> {
8
+ /** Module copy — this screen reads the `license` slice. */
9
+ strings: EkycStrings;
10
+ /** Which page-2 purple section to render. Default `default`. */
11
+ state?: EkycLicenseState;
12
+ /** The values the fields start with. */
13
+ values?: EkycLicenseValues;
14
+ /** The jurisdictions the state chooser offers. Runtime data, never copy. */
15
+ stateOptions?: EkycLicenseStateOption[];
16
+ screenId?: string;
17
+ overrides?: PrizmaScreenOverrides;
18
+ onAction?: PrizmaScreenActionHandler;
19
+ }
20
+ export declare const EkycLicenseScreen: React.ForwardRefExoticComponent<EkycLicenseScreenProps & React.RefAttributes<HTMLDivElement>>;
21
+ export default EkycLicenseScreen;
@@ -0,0 +1,68 @@
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 { PrizmaDateField } from '@incodetech/prizma-core-web/date-field';
6
+ import { PrizmaDropdown } from '@incodetech/prizma-core-web/dropdown';
7
+ import { PrizmaStepper } from '@incodetech/prizma-core-web/stepper';
8
+ import { PrizmaFormScreen } from './FormScreen';
9
+ import './ScreenLayout.css';
10
+ import './EkycLayout.css';
11
+ /**
12
+ * eKYC — page 2, the document's own fields, built on the Form archetype
13
+ * (GUIDELINES.md §6-E, `PrizmaFormScreen`).
14
+ *
15
+ * ONE screen for all three page-2 purple sections (`default` 5849:51109,
16
+ * `filled` 5849:66890, `loading` 5849:71925): the frames share page 1's
17
+ * skeleton exactly — nav → Title → Spacing/32 → labelled fields at Spacing/16
18
+ * → "Continue" → tag — with a three-field stack (text · chooser · date) and no
19
+ * subtitle, and they differ ONLY in field content and CTA state.
20
+ *
21
+ * Three things are deliberate:
22
+ *
23
+ * 1. The middle field is Core's `PrizmaDropdown`, the chooser Figma draws
24
+ * (`Dropdown`, 342×78, trailing chevron), not a text field. It is left
25
+ * UNCONTROLLED via `defaultValue` for the same reason the text fields are.
26
+ * 2. `loading` is the ONE section Figma greys, so it is the only one that sets
27
+ * `disabled` — on all three fields, exactly as drawn (#PI-6: `readOnly` is
28
+ * never used to freeze a field, because it greys sections drawn white).
29
+ * 3. The in-flight spinner rides the CTA (`ctaLoading`), never a field — the
30
+ * standing #PI-5 ruling, and what 5849:71925 draws: the button's label is
31
+ * replaced by the spinner while every field stays put.
32
+ *
33
+ * Page 2 draws NO required asterisks — 5849:51109's three label rows are bare —
34
+ * so no field here is `required`, and the page carries no "* are required"
35
+ * subtitle either.
36
+ *
37
+ * As on page 1, the two-segment journey bar rides the archetype's `progress`
38
+ * slot (`PrizmaFormScreen.progress`, offsets in `ScreenLayout.css`) and is
39
+ * Core's shipped `PrizmaStepper`. Page 2 advances it: 5849:51109 and 5849:66890
40
+ * draw segment 1 pale (Core's `past` — brand blue at 0.5) and segment 2 solid
41
+ * brand blue, which is `currentState={2}`; 5849:71925 turns BOTH segments green,
42
+ * which is Core's `Completed`. The bar is therefore what tells `loading` apart
43
+ * from `filled` at a glance, on top of the greyed fields and the CTA spinner.
44
+ * DEVIATIONS #EK-1.
45
+ */
46
+ /** Page-2 section → the journey-bar state Figma paints on it. */
47
+ const STEPPER_STATE = {
48
+ /* 5849:51109 / 5849:66890 — segment 1 pale ("past"), segment 2 solid. */
49
+ default: 2,
50
+ filled: 2,
51
+ /* 5849:71925 — both segments green. */
52
+ loading: 'Completed',
53
+ };
54
+ export const EkycLicenseScreen = forwardRef(({ strings, state = 'default', values, stateOptions = [], screenId = `ekyc-license-${state}`, className, overrides, onAction, ...shell }, ref) => {
55
+ const busy = state === 'loading';
56
+ return (_jsxs(PrizmaFormScreen, { ref: ref, className: ['ekyc-license', className].filter(Boolean).join(' '),
57
+ /* Page 2 of 2 — advanced past page 1, and green once the submit is in
58
+ flight. `showIcons={false}`: the frames draw the bar alone. */
59
+ progress: _jsx(PrizmaStepper, { steps: 2, currentState: STEPPER_STATE[state], showIcons: false, "aria-label": strings.stepperLabel, completedValueText: strings.stepperCompletedLabel }), title: strings.license.title, ctaLabel: strings.license.ctaLabel,
60
+ /* 5849:71925 swaps the CTA label for Core's designed spinner. */
61
+ ctaLoading: busy, ctaLoadingLabel: strings.license.ctaLoadingLabel, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId,
62
+ /* Left-aligned title block, same as page 1; a host `align` still wins. */
63
+ overrides: { align: overrides?.align ?? 'left', logo: overrides?.logo }, onAction: onAction, ...shell, children: [_jsx(PrizmaTextField, { label: strings.license.numberLabel, defaultValue: values?.number ?? '', autoComplete: "off", spellCheck: false, disabled: busy,
64
+ /* No section on this page draws the clear ✕. */
65
+ clearable: false }), _jsx(PrizmaDropdown, { label: strings.license.stateLabel, options: stateOptions, defaultValue: values?.state ?? null, disabled: busy }), _jsx(PrizmaDateField, { label: strings.license.expirationLabel, defaultValue: values?.expirationDate ?? '', autoComplete: "off", disabled: busy })] }));
66
+ });
67
+ EkycLicenseScreen.displayName = 'EkycLicenseScreen';
68
+ export default EkycLicenseScreen;
@@ -0,0 +1,26 @@
1
+ import React from 'react';
2
+ import { type PrizmaProcessingScreenProps } from './ProcessingScreen';
3
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
4
+ import type { EkycStrings } from './EkycStrings';
5
+ import './ScreenLayout.css';
6
+ export interface EkycProcessingScreenProps extends Omit<PrizmaProcessingScreenProps, 'status' | 'title' | 'subtitle' | 'verifiedLabel' | 'navLabel'> {
7
+ /** Module copy — this screen reads the `processing` slice. */
8
+ strings: EkycStrings;
9
+ screenId?: string;
10
+ overrides?: PrizmaScreenOverrides;
11
+ onAction?: PrizmaScreenActionHandler;
12
+ }
13
+ /**
14
+ * eKYC — the submitted data is being checked, built on the Processing archetype
15
+ * (GUIDELINES.md §6-C, `PrizmaProcessingScreen`).
16
+ *
17
+ * Figma: the purple `eKYC.processing` section (2101:7959). A centred spinner
18
+ * over a bare H2 ("Processing…") with **no subtitle and no CTA** — exactly the
19
+ * pure no-button case §6-F reserves for C rather than the Result archetype.
20
+ *
21
+ * The title block is centred here, unlike the module's two form pages: the
22
+ * verdict frames draw the mark and the status line on the screen's centre line,
23
+ * so the archetype's own default is the designed one and nothing is overridden.
24
+ */
25
+ export declare const EkycProcessingScreen: React.ForwardRefExoticComponent<EkycProcessingScreenProps & React.RefAttributes<HTMLDivElement>>;
26
+ export default EkycProcessingScreen;
@@ -0,0 +1,20 @@
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
+ * eKYC — the submitted data is being checked, built on the Processing archetype
8
+ * (GUIDELINES.md §6-C, `PrizmaProcessingScreen`).
9
+ *
10
+ * Figma: the purple `eKYC.processing` section (2101:7959). A centred spinner
11
+ * over a bare H2 ("Processing…") with **no subtitle and no CTA** — exactly the
12
+ * pure no-button case §6-F reserves for C rather than the Result archetype.
13
+ *
14
+ * The title block is centred here, unlike the module's two form pages: the
15
+ * verdict frames draw the mark and the status line on the screen's centre line,
16
+ * so the archetype's own default is the designed one and nothing is overridden.
17
+ */
18
+ export const EkycProcessingScreen = forwardRef(({ strings, screenId = 'ekyc-processing', overrides, onAction, ...shell }, ref) => (_jsx(PrizmaProcessingScreen, { ref: ref, status: "loading", title: strings.processing.title, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell })));
19
+ EkycProcessingScreen.displayName = 'EkycProcessingScreen';
20
+ export default EkycProcessingScreen;
@@ -0,0 +1,112 @@
1
+ /**
2
+ * The page-1 sections (`eKYC.default` / `eKYC.focused` / `eKYC.filled`). All
3
+ * three draw the SAME layout — nav → Title (H2 + H5) → Spacing/32 → four
4
+ * labelled fields at Spacing/16 → "Continue" → tag — and differ only in field
5
+ * content and field treatment, which is what GUIDELINES §6-E means by "states
6
+ * are separate screens sharing the identical layout":
7
+ * - `default` — every field empty
8
+ * - `focused` — First name carries the blue focus ring, a partial value and
9
+ * the clear ✕ (2101:8159 draws the OS keyboard over the CTA; the
10
+ * keyboard is OS chrome, never a screen element)
11
+ * - `filled` — all four fields resting with their values
12
+ */
13
+ export type EkycDetailsState = 'default' | 'focused' | 'filled';
14
+ /**
15
+ * The page-2 sections (`eKYC.default` / `eKYC.filled` / `eKYC.loading`), same
16
+ * layout with the document field set:
17
+ * - `default` — licence number, state chooser and expiry all empty
18
+ * - `filled` — all three resting with their values
19
+ * - `loading` — the submit is in flight: Figma greys all three fields and swaps
20
+ * the CTA label for the spinner (the spinner rides the CTA, never
21
+ * a field — the standing #PI-5 ruling)
22
+ */
23
+ export type EkycLicenseState = 'default' | 'filled' | 'loading';
24
+ /** One row of the licence-state chooser. Runtime data, never copy — the host
25
+ * supplies the jurisdictions its tenant accepts, exactly as Phone Input's
26
+ * `PhoneInputCountry` supplies dial codes. */
27
+ export interface EkycLicenseStateOption {
28
+ value: string;
29
+ label: string;
30
+ }
31
+ /** Page-1 field values. A screen is one static spec state, so these are the
32
+ * UNCONTROLLED starting values of Core's fields — no `onChange` is wired and
33
+ * `readOnly` is never used to freeze them (it paints Core's DISABLED grey on
34
+ * sections Figma draws white — the standing #PI-6 ruling). */
35
+ export interface EkycDetailsValues {
36
+ firstName?: string;
37
+ middleName?: string;
38
+ lastName?: string;
39
+ dateOfBirth?: string;
40
+ }
41
+ /** Page-2 field values. Same contract as `EkycDetailsValues`. */
42
+ export interface EkycLicenseValues {
43
+ /** The licence number as printed on the document. */
44
+ number?: string;
45
+ /** `value` of one `EkycLicenseStateOption`. */
46
+ state?: string;
47
+ /** Masked DD/MM/YYYY, the mask Core's date field applies. */
48
+ expirationDate?: string;
49
+ }
50
+ export interface EkycStrings {
51
+ /** "verified by" attribution in the footer tag. */
52
+ verifiedLabel: string;
53
+ /** Accessible name for the logo nav row. */
54
+ navLabel?: string;
55
+ /**
56
+ * Accessible name for the two-segment journey bar the six form frames draw
57
+ * between the nav and the title (Core's `PrizmaStepper`, `role="progressbar"`).
58
+ * The bar is the ONLY chrome that separates page 1 from page 2, so it carries
59
+ * a real name rather than none — supplied here because it is copy.
60
+ */
61
+ stepperLabel: string;
62
+ /**
63
+ * `aria-valuetext` the same bar announces once both segments are green — the
64
+ * page-2 `loading` section (5849:71925). Same contract as Video Selfie's
65
+ * `stepperCompletedLabel`.
66
+ */
67
+ stepperCompletedLabel: string;
68
+ /** `eKYC.*` page 1 — the applicant's name and date of birth. */
69
+ details: {
70
+ /** H2 screen title. */
71
+ title: string;
72
+ /** H5 description under the title. */
73
+ subtitle: string;
74
+ /**
75
+ * Suffix Core appends to a REQUIRED field's label — Figma draws a bare
76
+ * asterisk ("First name *") and the subtitle explains it. Configurable
77
+ * because it is visible copy: a locale may prefer "(obligatorio)".
78
+ */
79
+ requiredHint: string;
80
+ firstNameLabel: string;
81
+ middleNameLabel: string;
82
+ lastNameLabel: string;
83
+ dateOfBirthLabel: string;
84
+ /** Accessible name for the clear ✕ inside the focused field. */
85
+ clearLabel: string;
86
+ ctaLabel: string;
87
+ };
88
+ /** `eKYC.*` page 2 — the document's own fields. */
89
+ license: {
90
+ /** H2 screen title. */
91
+ title: string;
92
+ numberLabel: string;
93
+ stateLabel: string;
94
+ expirationLabel: string;
95
+ ctaLabel: string;
96
+ /** Visible/accessible copy while the submit is in flight. */
97
+ ctaLoadingLabel: string;
98
+ };
99
+ /** `eKYC.processing` — spinner over the status line, no button. */
100
+ processing: {
101
+ title: string;
102
+ };
103
+ /** `eKYC.success` — positive mark over the status line, no button. */
104
+ success: {
105
+ title: string;
106
+ };
107
+ /** `eKYC.error` — negative mark, status line and the retry CTA. */
108
+ error: {
109
+ title: string;
110
+ ctaLabel: string;
111
+ };
112
+ }
@@ -0,0 +1,34 @@
1
+ // eKYC — copy contract.
2
+ //
3
+ // Figma: `👁️ eKYC / 💼 eKYB - Screens specs + Localization`
4
+ // (`TWgYZVhurQCizfC4tfLEut`, page `2003:12082`). The file holds THREE top-level
5
+ // sections; only the two eKYC ones are this module's scope:
6
+ // `2098:20865` 👁️ eKYC Initial screen options — the field-option catalogue
7
+ // (V1 references · dashboard options · the "all options" matrix).
8
+ // A spec board, not screens: every 390 frame it feeds is drawn
9
+ // in the section below.
10
+ // `2101:7869` 👁️ eKYC - Screens specs + Localization — the nine 390×844
11
+ // frames this module builds.
12
+ // `2116:23785` 💼 eKYB — a DIFFERENT module, deliberately untouched.
13
+ //
14
+ // The nine eKYC frames, by their 390×844 node id:
15
+ // 2101:7877 eKYC.default (page 1 — personal details, empty)
16
+ // 2101:8159 eKYC.focused (page 1 — First name focused, partial value)
17
+ // 5849:60225 eKYC.filled (page 1 — all four values)
18
+ // 5849:51109 eKYC.default (page 2 — driver's-licence details, empty)
19
+ // 5849:66890 eKYC.filled (page 2 — all three values)
20
+ // 5849:71925 eKYC.loading (page 2 — fields inert, spinner in the CTA)
21
+ // 2101:7959 eKYC.processing
22
+ // 2101:7979 eKYC.error
23
+ // 2101:7969 eKYC.success
24
+ //
25
+ // The module is a TWO-PAGE form: the data-capture pages are archetype E
26
+ // (`PrizmaFormScreen`), the two no-button verdicts are archetype C
27
+ // (`PrizmaProcessingScreen`) and the failure verdict is archetype F
28
+ // (`PrizmaResultScreen`) — the same C/F split `EmailInputSuccessScreen` and
29
+ // `EmailInputErrorScreen` settled (DEVIATIONS #EI-4/#EI-5).
30
+ //
31
+ // No hardcoded English anywhere in a screen: every visible string arrives here,
32
+ // so the host's locale pack drives the module (the Figma file ships ES + PT
33
+ // columns alongside EN).
34
+ 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 { EkycStrings } from './EkycStrings';
5
+ import './ScreenLayout.css';
6
+ export interface EkycSuccessScreenProps extends Omit<PrizmaProcessingScreenProps, 'status' | 'title' | 'subtitle' | 'verifiedLabel' | 'navLabel'> {
7
+ /** Module copy — this screen reads the `success` slice. */
8
+ strings: EkycStrings;
9
+ screenId?: string;
10
+ overrides?: PrizmaScreenOverrides;
11
+ onAction?: PrizmaScreenActionHandler;
12
+ }
13
+ /**
14
+ * eKYC — the submitted verdict, built on the Processing archetype
15
+ * (GUIDELINES.md §6-C, `PrizmaProcessingScreen`).
16
+ *
17
+ * Figma: the purple `eKYC.success` section (2101:7969). A centred positive mark
18
+ * over a bare H2 ("Information submitted!") with **no subtitle and no CTA** —
19
+ * the module hands control straight back to the flow, so it sits on C while its
20
+ * sibling error verdict sits on F. That split follows the archetype rule rather
21
+ * than the module's own symmetry, the same call `EmailInputSuccessScreen`
22
+ * settled (DEVIATIONS #EI-4).
23
+ *
24
+ * The mark is Core's outline status icon via `PrizmaTitle`'s icon slot — the
25
+ * module Figma still draws the two-tone filled disc, one icon sweep behind
26
+ * (DEVIATIONS #15, unchanged here).
27
+ */
28
+ export declare const EkycSuccessScreen: React.ForwardRefExoticComponent<EkycSuccessScreenProps & React.RefAttributes<HTMLDivElement>>;
29
+ export default EkycSuccessScreen;
@@ -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
+ * eKYC — the submitted verdict, built on the Processing archetype
8
+ * (GUIDELINES.md §6-C, `PrizmaProcessingScreen`).
9
+ *
10
+ * Figma: the purple `eKYC.success` section (2101:7969). A centred positive mark
11
+ * over a bare H2 ("Information submitted!") with **no subtitle and no CTA** —
12
+ * the module hands control straight back to the flow, so it sits on C while its
13
+ * sibling error verdict sits on F. That split follows the archetype rule rather
14
+ * than the module's own symmetry, the same call `EmailInputSuccessScreen`
15
+ * settled (DEVIATIONS #EI-4).
16
+ *
17
+ * The mark is Core's outline status icon via `PrizmaTitle`'s icon slot — the
18
+ * module Figma still draws the two-tone filled disc, one icon sweep behind
19
+ * (DEVIATIONS #15, unchanged here).
20
+ */
21
+ export const EkycSuccessScreen = forwardRef(({ strings, screenId = 'ekyc-success', overrides, onAction, ...shell }, ref) => (_jsx(PrizmaProcessingScreen, { ref: ref, status: "success", title: strings.success.title, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell })));
22
+ EkycSuccessScreen.displayName = 'EkycSuccessScreen';
23
+ export default EkycSuccessScreen;
@@ -0,0 +1,57 @@
1
+ import React from 'react';
2
+ import { type PrizmaFormScreenProps } from './FormScreen';
3
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
4
+ import type { ElectronicSignatureDrawState, ElectronicSignatureStrings } from './ElectronicSignatureStrings';
5
+ import './ScreenLayout.css';
6
+ export interface ElectronicSignatureDrawScreenProps extends Omit<PrizmaFormScreenProps, 'title' | 'subtitle' | 'ctaLabel' | 'ctaDisabled' | 'verifiedLabel' | 'children' | 'navLabel' | 'linkLabel' | 'linkContent'> {
7
+ /** Module copy — this screen reads the `draw` slice. */
8
+ strings: ElectronicSignatureStrings;
9
+ /** Which purple section to render: `draw` (empty) or `signed`. Default `draw`. */
10
+ state?: ElectronicSignatureDrawState;
11
+ /**
12
+ * Core's own extension point for the drawing engine
13
+ * (`PrizmaSignaturePad.onCanvasReady`: "consumers wire their drawing engine
14
+ * to the canvas inside this callback"). Forwarded untouched so a host — or
15
+ * the hub gallery, which paints a specimen stroke for the `signed` cell — can
16
+ * put real ink on the pad. The screen itself stays presentational: it holds
17
+ * no state and touches no browser API.
18
+ */
19
+ onCanvasReady?: (canvas: HTMLCanvasElement) => void;
20
+ screenId?: string;
21
+ overrides?: PrizmaScreenOverrides;
22
+ onAction?: PrizmaScreenActionHandler;
23
+ }
24
+ /**
25
+ * Electronic Signature — the signature-pad screen, built on the Form archetype
26
+ * (GUIDELINES.md §6-E, `PrizmaFormScreen`).
27
+ *
28
+ * ONE screen for both purple pad sections — `eSign.draw` (4116:10325) and
29
+ * `eSign.signed` (4116:10336). Measured against the 390 frames they share an
30
+ * identical skeleton — nav → Title (H2 + H5) → Spacing/32 → the pad → primary
31
+ * CTA → tag — and differ ONLY in what the pad and the CTA are doing. The pad is
32
+ * Core's `PrizmaSignaturePad` (the Figma `Signature pad` component, 6291:56383)
33
+ * verbatim: it owns the 256-tall field, the placeholder, the Spacing/8 to the
34
+ * Clear row and the Clear control itself, so nothing here re-creates any of it.
35
+ *
36
+ * The state axis is a single boolean into Core, and every one of its three
37
+ * visible consequences is Core's own (checked against `SignaturePad.tsx`, not
38
+ * assumed — the #CURP-3 lesson about props that silently do nothing):
39
+ *
40
+ * - `draw` → `isFilled={false}`: the "Sign here" placeholder shows, Core
41
+ * forces the Clear link Disabled (`disabled={disabled || !filled}`),
42
+ * and the primary CTA is disabled — Figma's grey `Done`.
43
+ * - `signed` → `isFilled={true}`: the placeholder is gone, Clear renders as the
44
+ * live blue `tertiary-link`, and the primary CTA is enabled.
45
+ *
46
+ * The ink itself is host-drawn through `onCanvasReady`, because the canvas is a
47
+ * real `<canvas>` whose bitmap only exists once a drawing engine paints it.
48
+ * That is Core's documented division of labour, not a workaround — see the
49
+ * module's DEVIATIONS row and the Core request recorded there.
50
+ *
51
+ * Standing rulings applied: the sections draw a close ✕ at the nav's right,
52
+ * which §3 does not offer and no module hand-rolls (DEVIATIONS #PI-9); the
53
+ * in-flight treatment, if this module ever gains one, rides the CTA rather than
54
+ * the field (#PI-5) — Core explicitly ships no Loading state for the pad.
55
+ */
56
+ export declare const ElectronicSignatureDrawScreen: React.ForwardRefExoticComponent<ElectronicSignatureDrawScreenProps & React.RefAttributes<HTMLDivElement>>;
57
+ export default ElectronicSignatureDrawScreen;
@@ -0,0 +1,53 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { forwardRef } from 'react';
4
+ import { PrizmaSignaturePad } from '@incodetech/prizma-core-web/signature-pad';
5
+ import { PrizmaFormScreen } from './FormScreen';
6
+ import './ScreenLayout.css';
7
+ /**
8
+ * Electronic Signature — the signature-pad screen, built on the Form archetype
9
+ * (GUIDELINES.md §6-E, `PrizmaFormScreen`).
10
+ *
11
+ * ONE screen for both purple pad sections — `eSign.draw` (4116:10325) and
12
+ * `eSign.signed` (4116:10336). Measured against the 390 frames they share an
13
+ * identical skeleton — nav → Title (H2 + H5) → Spacing/32 → the pad → primary
14
+ * CTA → tag — and differ ONLY in what the pad and the CTA are doing. The pad is
15
+ * Core's `PrizmaSignaturePad` (the Figma `Signature pad` component, 6291:56383)
16
+ * verbatim: it owns the 256-tall field, the placeholder, the Spacing/8 to the
17
+ * Clear row and the Clear control itself, so nothing here re-creates any of it.
18
+ *
19
+ * The state axis is a single boolean into Core, and every one of its three
20
+ * visible consequences is Core's own (checked against `SignaturePad.tsx`, not
21
+ * assumed — the #CURP-3 lesson about props that silently do nothing):
22
+ *
23
+ * - `draw` → `isFilled={false}`: the "Sign here" placeholder shows, Core
24
+ * forces the Clear link Disabled (`disabled={disabled || !filled}`),
25
+ * and the primary CTA is disabled — Figma's grey `Done`.
26
+ * - `signed` → `isFilled={true}`: the placeholder is gone, Clear renders as the
27
+ * live blue `tertiary-link`, and the primary CTA is enabled.
28
+ *
29
+ * The ink itself is host-drawn through `onCanvasReady`, because the canvas is a
30
+ * real `<canvas>` whose bitmap only exists once a drawing engine paints it.
31
+ * That is Core's documented division of labour, not a workaround — see the
32
+ * module's DEVIATIONS row and the Core request recorded there.
33
+ *
34
+ * Standing rulings applied: the sections draw a close ✕ at the nav's right,
35
+ * which §3 does not offer and no module hand-rolls (DEVIATIONS #PI-9); the
36
+ * in-flight treatment, if this module ever gains one, rides the CTA rather than
37
+ * the field (#PI-5) — Core explicitly ships no Loading state for the pad.
38
+ */
39
+ export const ElectronicSignatureDrawScreen = forwardRef(({ strings, state = 'draw', onCanvasReady, screenId = `electronic-signature-${state}`, overrides, onAction, ...shell }, ref) => {
40
+ const signed = state === 'signed';
41
+ return (_jsx(PrizmaFormScreen, { ref: ref, title: strings.draw.title, subtitle: strings.draw.subtitle, ctaLabel: strings.draw.ctaLabel,
42
+ /* `eSign.draw` draws `Done` on Button/Primary/Surface/Disabled — there
43
+ is nothing to submit until the canvas has ink. */
44
+ ctaDisabled: !signed, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell, children: _jsx(PrizmaSignaturePad, { isFilled: signed,
45
+ /* Full-signature sub-type, not the initials one. */
46
+ isInitials: false, placeholder: strings.draw.placeholder, canvasLabel: strings.draw.canvasLabel, clearLabel: strings.draw.clearLabel,
47
+ /* Clearing the canvas is a different flow from submitting it, so it
48
+ emits its own event rather than collapsing into the CTA
49
+ (DEVIATIONS #PI-10). */
50
+ onClear: () => onAction?.({ type: 'secondary', screenId }), onCanvasReady: onCanvasReady }) }));
51
+ });
52
+ ElectronicSignatureDrawScreen.displayName = 'ElectronicSignatureDrawScreen';
53
+ export default ElectronicSignatureDrawScreen;