@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,112 @@
1
+ import React, { forwardRef } from 'react';
2
+ import {
3
+ PrizmaProcessingScreen,
4
+ type PrizmaProcessingScreenProps,
5
+ } from './ProcessingScreen';
6
+ import { PrizmaResultScreen } from './ResultScreen';
7
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
8
+ import type {
9
+ QualifiedSignatureProcessingVariant,
10
+ QualifiedSignatureStrings,
11
+ } from './QualifiedSignatureStrings';
12
+ import './ScreenLayout.css';
13
+
14
+ export interface QualifiedSignatureProcessingScreenProps
15
+ extends Omit<
16
+ PrizmaProcessingScreenProps,
17
+ 'status' | 'title' | 'subtitle' | 'verifiedLabel' | 'navLabel'
18
+ > {
19
+ /** Module copy — this screen reads the `processing` slice its `variant` names. */
20
+ strings: QualifiedSignatureStrings;
21
+ /** Which reading of the in-flight frame to render. Default `processing`. */
22
+ variant?: QualifiedSignatureProcessingVariant;
23
+ screenId?: string;
24
+ overrides?: PrizmaScreenOverrides;
25
+ onAction?: PrizmaScreenActionHandler;
26
+ }
27
+
28
+ /**
29
+ * Qualified Signature — the in-flight screens.
30
+ *
31
+ * The two purple parents do NOT draw the same wait, so this is two frames, not
32
+ * one:
33
+ *
34
+ * - `processing` — `QSign.AcceptSign.processing` (10196:67395). The pure
35
+ * spinner + H2 case with nothing else on the frame, which is exactly what
36
+ * GUIDELINES §6-C reserves for the Processing archetype: the spinner block is
37
+ * centred in the middle container, so the archetype's fully-centred column is
38
+ * the right template.
39
+ * - `signing` — the partner's own 6086:39544. "Creating your signature…"
40
+ * under the spinner PLUS a second attribution row, "Signing as …", anchored
41
+ * at the BOTTOM of the frame immediately above the verified tag — NOT under
42
+ * the title, where a `subtitle` would land it.
43
+ *
44
+ * WHY `signing` MOVES TO ARCHETYPE F. Archetype C has no slot between its
45
+ * centred column and the footer tag, so there is no way to place a
46
+ * bottom-anchored row without declaring spacing locally — forbidden by §6.
47
+ * Archetype F is "C with a CTA band", and its `disclaimer` slot is precisely
48
+ * that row: Core's own `PrizmaDisclaimer`, centred secondary text, sitting in
49
+ * the band directly above the tag. With no CTA label the band carries only that
50
+ * row, so the frame keeps C's silhouette and gains the anchored line. The
51
+ * archetype gap (C has no footer/disclaimer slot) is reported, not patched
52
+ * here — this screen still declares no layout of its own.
53
+ *
54
+ * Both are distinct from the accept screen's `loading` state, which keeps the
55
+ * signer on the form with the spinner in the CTA — these are the flow's own
56
+ * waits.
57
+ */
58
+ export const QualifiedSignatureProcessingScreen = forwardRef<
59
+ HTMLDivElement,
60
+ QualifiedSignatureProcessingScreenProps
61
+ >(
62
+ (
63
+ {
64
+ strings,
65
+ variant = 'processing',
66
+ screenId = `qualified-signature-processing-${variant}`,
67
+ overrides,
68
+ onAction,
69
+ ...shell
70
+ },
71
+ ref,
72
+ ) => {
73
+ if (variant === 'signing') {
74
+ const copy = strings.processing.signing;
75
+ return (
76
+ <PrizmaResultScreen
77
+ ref={ref}
78
+ status="loading"
79
+ title={copy.title}
80
+ subtitle={copy.subtitle}
81
+ /* The bottom-anchored "Signing as …" row. */
82
+ disclaimer={copy.signingAsLabel}
83
+ verifiedLabel={strings.verifiedLabel}
84
+ navLabel={strings.navLabel}
85
+ screenId={screenId}
86
+ overrides={overrides}
87
+ onAction={onAction}
88
+ {...shell}
89
+ />
90
+ );
91
+ }
92
+
93
+ const copy = strings.processing.processing;
94
+ return (
95
+ <PrizmaProcessingScreen
96
+ ref={ref}
97
+ status="loading"
98
+ title={copy.title}
99
+ subtitle={copy.subtitle}
100
+ verifiedLabel={strings.verifiedLabel}
101
+ navLabel={strings.navLabel}
102
+ screenId={screenId}
103
+ overrides={overrides}
104
+ onAction={onAction}
105
+ {...shell}
106
+ />
107
+ );
108
+ },
109
+ );
110
+ QualifiedSignatureProcessingScreen.displayName = 'QualifiedSignatureProcessingScreen';
111
+
112
+ export default QualifiedSignatureProcessingScreen;
@@ -0,0 +1,146 @@
1
+ import React, { forwardRef } from 'react';
2
+ import { PrizmaButton } from '@incodetech/prizma-core-web/button';
3
+ import { PrizmaResultScreen, type PrizmaResultScreenProps } from './ResultScreen';
4
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
5
+ import type {
6
+ QualifiedSignatureResultVariant,
7
+ QualifiedSignatureStrings,
8
+ } from './QualifiedSignatureStrings';
9
+ import './ScreenLayout.css';
10
+
11
+ export interface QualifiedSignatureResultScreenProps
12
+ extends Omit<
13
+ PrizmaResultScreenProps,
14
+ | 'status'
15
+ | 'title'
16
+ | 'subtitle'
17
+ | 'glyph'
18
+ | 'bandContent'
19
+ | 'disclaimer'
20
+ | 'ctaLabel'
21
+ | 'secondaryCtaLabel'
22
+ | 'verifiedLabel'
23
+ | 'navLabel'
24
+ > {
25
+ /** Module copy — this screen reads the `result` slice its `variant` names. */
26
+ strings: QualifiedSignatureStrings;
27
+ /** Which verdict section to render. Default `signed`. */
28
+ variant?: QualifiedSignatureResultVariant;
29
+ screenId?: string;
30
+ overrides?: PrizmaScreenOverrides;
31
+ onAction?: PrizmaScreenActionHandler;
32
+ }
33
+
34
+ /**
35
+ * Qualified Signature — the five verdicts, built on the Result archetype
36
+ * (GUIDELINES.md §6-F, `PrizmaResultScreen`).
37
+ *
38
+ * ONE screen for five purple frames that share the archetype's skeleton —
39
+ * nav → centred status mark + title block → CTA band → anchored tag — and differ
40
+ * in status, copy and which actions exist:
41
+ * - `signed` — `QSign.success` (10196:67485): the positive mark over a
42
+ * `Button group` 124 tall = the "Continue" primary plus the "Download PDF"
43
+ * underlined link.
44
+ * - `signedPlain` — `QSign.success` (10196:67494): the SAME mark and line
45
+ * with no actions at all, so the band never renders and the screen reads as
46
+ * the pure §6-C verdict.
47
+ * - `signedPartner` — the `x Namirial` parent's own success frame (6086:40135).
48
+ * NOT a copy of either generic one: it adds the "Signed by …" attribution row
49
+ * and a STACKED pair — "Done" primary above a "Download document" OUTLINED
50
+ * secondary. Both ride the archetype's `ctaLabel` + `secondaryCtaLabel`, which
51
+ * already fix primary-above-secondary (#GEO-1); the attribution row rides
52
+ * `disclaimer`, the band's own centred text row above the buttons.
53
+ * - `error` — `QSign.AcceptSign.error` (10196:67436 / 6089:37399): the
54
+ * warning mark and "Something went wrong". This frame really does draw no
55
+ * button.
56
+ * - `errorRetry` — the SECOND error frame both parents draw (10196:67445 and
57
+ * the partner's 8363:21429): the same warning mark over "Signature failed"
58
+ * plus a full-width "Try again" primary. It is the flow's only recovery
59
+ * affordance, so it is a state in its own right rather than an upstream
60
+ * concern (QA finding, 2026-08-19).
61
+ *
62
+ * Core's outline status marks are used, not Figma's two-tone filled discs — the
63
+ * icon-outline sweep of 2026-07-28 settled that for every module (DEVIATIONS
64
+ * #15, #DC-34) and these frames are one sweep behind. Both error frames get the
65
+ * WARNING mark, not the negative one: Figma draws the amber "!" disc, and the
66
+ * signature attempt is recoverable rather than refused.
67
+ *
68
+ * The generic error frames drop the verified tag; the partner's keeps it.
69
+ * The owner rule settles the split in favour of keeping it (#PI-8, #F-30) so
70
+ * nothing shifts between states.
71
+ *
72
+ * ONE reported delta: on `signed`, Figma puts "Download PDF" BELOW the primary,
73
+ * at Core's `PrizmaButtonGroup` Spacing/12. Archetype F has no tertiary-link
74
+ * slot — its only band opening above the buttons is `bandContent` — so Core's
75
+ * own `tertiary-link` Button is composed there and lands ABOVE the primary at
76
+ * the band's Spacing/32 (16 + 16). Ink, semantics and the distinct `secondary`
77
+ * action are all correct (#PI-10); only the position moves. #GEO-1 fixes the
78
+ * tertiary link's position PER ARCHETYPE and F has never declared one — the
79
+ * archetype request is logged instead of a local override. `signedPartner` is
80
+ * unaffected: its download control is a real outlined secondary Button, which
81
+ * the archetype already places correctly.
82
+ */
83
+ export const QualifiedSignatureResultScreen = forwardRef<
84
+ HTMLDivElement,
85
+ QualifiedSignatureResultScreenProps
86
+ >(
87
+ (
88
+ {
89
+ strings,
90
+ variant = 'signed',
91
+ screenId = `qualified-signature-result-${variant}`,
92
+ overrides,
93
+ onAction,
94
+ ...shell
95
+ },
96
+ ref,
97
+ ) => {
98
+ // One slice per frame — nothing is shared between variants, so the frames
99
+ // can never collapse into each other visually.
100
+ const signedCopy = variant === 'signed' ? strings.result.signed : undefined;
101
+ const partnerCopy = variant === 'signedPartner' ? strings.result.signedPartner : undefined;
102
+ const retryCopy = variant === 'errorRetry' ? strings.result.errorRetry : undefined;
103
+
104
+ const copy =
105
+ signedCopy ??
106
+ partnerCopy ??
107
+ retryCopy ??
108
+ (variant === 'error' ? strings.result.error : strings.result.signedPlain);
109
+
110
+ return (
111
+ <PrizmaResultScreen
112
+ ref={ref}
113
+ status={variant === 'error' || variant === 'errorRetry' ? 'warning' : 'success'}
114
+ title={copy.title}
115
+ subtitle={copy.subtitle}
116
+ /* "Continue" · "Done" · "Try again" — the archetype's own primary. */
117
+ ctaLabel={signedCopy?.ctaLabel ?? partnerCopy?.ctaLabel ?? retryCopy?.ctaLabel}
118
+ /* The partner's outlined "Download document", below the primary. */
119
+ secondaryCtaLabel={partnerCopy?.secondaryCtaLabel}
120
+ /* The partner's "Signed by …" row — the band's centred text slot, which
121
+ puts it above the button pair exactly as Figma draws it. */
122
+ disclaimer={partnerCopy?.signedByLabel}
123
+ bandContent={
124
+ signedCopy?.downloadLabel ? (
125
+ <PrizmaButton
126
+ variant="tertiary-link"
127
+ size="L"
128
+ onClick={() => onAction?.({ type: 'secondary', screenId })}
129
+ >
130
+ {signedCopy.downloadLabel}
131
+ </PrizmaButton>
132
+ ) : undefined
133
+ }
134
+ verifiedLabel={strings.verifiedLabel}
135
+ navLabel={strings.navLabel}
136
+ screenId={screenId}
137
+ overrides={overrides}
138
+ onAction={onAction}
139
+ {...shell}
140
+ />
141
+ );
142
+ },
143
+ );
144
+ QualifiedSignatureResultScreen.displayName = 'QualifiedSignatureResultScreen';
145
+
146
+ export default QualifiedSignatureResultScreen;
@@ -0,0 +1,113 @@
1
+ import React, { forwardRef, type ReactNode } from 'react';
2
+ import { IconLock } from '@incodetech/prizma-core-icons';
3
+ import { PrizmaReviewScreen, type PrizmaReviewScreenProps } from './ReviewScreen';
4
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
5
+ import type { QualifiedSignatureStrings } from './QualifiedSignatureStrings';
6
+ import './ScreenLayout.css';
7
+ import './QualifiedSignatureLayout.css';
8
+
9
+ export interface QualifiedSignatureReviewScreenProps
10
+ extends Omit<
11
+ PrizmaReviewScreenProps,
12
+ | 'stage'
13
+ | 'title'
14
+ | 'subtitle'
15
+ | 'successTitle'
16
+ | 'analyzingLabel'
17
+ | 'analyzingState'
18
+ | 'primaryLabel'
19
+ | 'secondaryLabel'
20
+ | 'verifiedLabel'
21
+ | 'children'
22
+ | 'stageClassName'
23
+ > {
24
+ /** Module copy — this screen reads the `review` slice. */
25
+ strings: QualifiedSignatureStrings;
26
+ /** The uploaded file's name. Not copy — runtime data from the picker. */
27
+ filename?: string;
28
+ /** Page-preview thumbnail (an `<img>`) rendered inside the card. */
29
+ thumbnail?: ReactNode;
30
+ screenId?: string;
31
+ overrides?: PrizmaScreenOverrides;
32
+ onAction?: PrizmaScreenActionHandler;
33
+ }
34
+
35
+ /**
36
+ * Qualified Signature — the uploaded document confirmed before signing, built on
37
+ * the Review archetype (GUIDELINES.md §6-H, `PrizmaReviewScreen`).
38
+ *
39
+ * Figma: purple section `QSign.reviewDoc.default` (10196:67138). It is archetype
40
+ * H and not F for exactly the reason §6-H draws the line: the header is
41
+ * TOP-aligned (`top container` starts at CONTENT y=24 with the Title, no logo
42
+ * row) over a media `Container` that fills the middle (109→450 of a 654 frame),
43
+ * with the actions anchored at the bottom — F would centre the title and the
44
+ * card together as one block. Measured against the archetype: Title → stage 32
45
+ * (Figma 109 − 77 = 32), stage → actions 24 (482 − 450 − 8 rounding). Every one
46
+ * of those offsets is the archetype's; this file declares none.
47
+ *
48
+ * TWO deltas from the frame, both reported rather than worked around:
49
+ * 1. Figma stacks `Continue` over `Replace` (a `Button group` 124 tall = 56 + 12
50
+ * + 56). Archetype H hardcodes Core's `PrizmaButtonGroup
51
+ * orientation="horizontal-v1"`, so they pair side by side. A screen never
52
+ * picks its own button order (#GEO-1), and H has no orientation slot — the
53
+ * archetype request is logged instead of overridden here.
54
+ * 2. The frame draws no verified tag. The owner rule wins over Figma for
55
+ * attribution chrome — every non-capture screen keeps header and footer
56
+ * (#PI-8, #F-30, #F-34) — so `showFooter` keeps its default.
57
+ *
58
+ * What stays module-side is the MEDIA, which Core has no primitive for: the
59
+ * vertical file-preview card (`PrizmaCardDocumentContainer` is the horizontal
60
+ * filename + action row this module uses on the accept screen instead) and the
61
+ * standalone encrypted notice (Core owns it only inside `PrizmaIdCapture`).
62
+ * Both are rebuilt from Core's own tokens in `QualifiedSignatureLayout.css`,
63
+ * with the Core requests recorded there — DEVIATIONS #DC-26, #DC-27.
64
+ */
65
+ export const QualifiedSignatureReviewScreen = forwardRef<
66
+ HTMLDivElement,
67
+ QualifiedSignatureReviewScreenProps
68
+ >(
69
+ (
70
+ {
71
+ strings,
72
+ filename,
73
+ thumbnail,
74
+ screenId = 'qualified-signature-review',
75
+ overrides,
76
+ onAction,
77
+ ...shell
78
+ },
79
+ ref,
80
+ ) => (
81
+ <PrizmaReviewScreen
82
+ ref={ref}
83
+ stage="review"
84
+ title={strings.review.title}
85
+ subtitle={strings.review.subtitle}
86
+ stageClassName="qualified-signature-review-file"
87
+ primaryLabel={strings.review.ctaLabel}
88
+ secondaryLabel={strings.review.replaceLabel}
89
+ verifiedLabel={strings.verifiedLabel}
90
+ navLabel={strings.navLabel}
91
+ screenId={screenId}
92
+ overrides={overrides}
93
+ onAction={onAction}
94
+ {...shell}
95
+ >
96
+ <div className="qualified-signature-file-card">
97
+ <span className="qualified-signature-file-card__thumb">{thumbnail}</span>
98
+ {filename ? (
99
+ <p className="qualified-signature-file-card__name">{filename}</p>
100
+ ) : null}
101
+ </div>
102
+ {strings.review.encryptedLabel ? (
103
+ <p className="qualified-signature-encrypted">
104
+ <IconLock size="m" />
105
+ <span>{strings.review.encryptedLabel}</span>
106
+ </p>
107
+ ) : null}
108
+ </PrizmaReviewScreen>
109
+ ),
110
+ );
111
+ QualifiedSignatureReviewScreen.displayName = 'QualifiedSignatureReviewScreen';
112
+
113
+ export default QualifiedSignatureReviewScreen;
@@ -0,0 +1,256 @@
1
+ // Qualified Signature — copy contract.
2
+ //
3
+ // Figma: `✍️ Signature (Qualified)` (XO9YGKlEsGUyag8CGbSUsi, canvas 6086:28669).
4
+ // TWO purple parent sections, which are the SAME flow drawn twice:
5
+ //
6
+ // `✍️ Signature (Qualified) - Screens specs + Localization` (10196:67086)
7
+ // 1.QSign.uploadDocument → QSign.upload.default · QSign.reviewDoc.default
8
+ // (+ QSign.upload.select — the iOS Files app)
9
+ // QSign.AcceptSign → default · selectedCheckox · loadingsign ·
10
+ // processing · viewdoc
11
+ // Qsign.error → QSign.AcceptSign.error
12
+ // Qsign.success → QSign.success ×2 (with and without actions)
13
+ //
14
+ // `✍️ Signature (Qualified) x Namirial …` (6074:64811) — the partner reading of
15
+ // the SAME AcceptSign / error / success frames, plus `QSign.T&C`, the
16
+ // certificate-application text the partner variant links to.
17
+ //
18
+ // This is the regulated sibling of Electronic Signature: the extra steps are the
19
+ // eIDAS/QTSP consent clauses the signer must tick before a Qualified Electronic
20
+ // Signature can be created, and the certificate-application form behind them.
21
+ //
22
+ // No hardcoded English anywhere in a screen: every visible string arrives here,
23
+ // so the host's locale pack drives the module (the Figma file ships ES + PT
24
+ // columns beside the EN one).
25
+
26
+ import type { PrizmaConsentSegment } from '@incodetech/prizma-core-web/checkbox';
27
+
28
+ /**
29
+ * The two readings of the accept-and-sign screen. They are the same skeleton —
30
+ * title block → document row → consent stack → CTA — with a different clause
31
+ * set, a different CTA verb and, on `certificate`, a link to the application
32
+ * form:
33
+ * - `accept` — `QSign.AcceptSign.*` in the generic parent: "Accept and
34
+ * sign", five QTSP/eIDAS clauses, "Finish signing", no link.
35
+ * - `certificate` — the same sections in the `x Namirial` parent: "Review and
36
+ * sign", two clauses, "Sign", plus the "Certificate application form" link
37
+ * that opens the `terms` document screen.
38
+ */
39
+ export type QualifiedSignatureAcceptVariant = 'accept' | 'certificate';
40
+
41
+ /**
42
+ * The three purple states each accept section is drawn in:
43
+ * - `default` — every box unticked, the CTA in Core's disabled surface
44
+ * (`QSign.AcceptSign.default`)
45
+ * - `selected` — every box ticked, the CTA live (`…selectedCheckox`)
46
+ * - `loading` — the clauses and the document action greyed while the signature
47
+ * is created, spinner in the CTA (`…loadingsign`). The spinner rides the
48
+ * BUTTON, never a field — the standing module rule (DEVIATIONS #PI-5).
49
+ */
50
+ export type QualifiedSignatureAcceptState = 'default' | 'selected' | 'loading';
51
+
52
+ /**
53
+ * The two full-surface document screens:
54
+ * - `document` — `QSign.AcceptSign.viewdoc`, the contract itself behind the
55
+ * document row's "View" action
56
+ * - `terms` — `QSign.T&C`, the certificate application form behind the
57
+ * partner variant's link
58
+ */
59
+ export type QualifiedSignatureDocumentVariant = 'document' | 'terms';
60
+
61
+ /**
62
+ * The FIVE verdict frames. Both purple parents draw success twice and error
63
+ * twice, and each pair differs in what the signer can do next:
64
+ * - `signed` — `QSign.success` (10196:67485): the positive mark with
65
+ * "Continue" and a "Download PDF" underlined link
66
+ * - `signedPlain` — `QSign.success` (10196:67494): the same mark and line
67
+ * with NO actions at all
68
+ * - `signedPartner` — the `x Namirial` parent's own success frame (6086:40135),
69
+ * a THIRD reading rather than a copy of either: the mark and line, a signer
70
+ * attribution row, then a STACKED pair — "Done" primary above a "Download
71
+ * document" OUTLINED secondary. The outlined button is a different control
72
+ * from `signed`'s underlined link, so it gets its own slice
73
+ * - `error` — `QSign.AcceptSign.error` (10196:67436): the warning mark
74
+ * over "Something went wrong", no actions
75
+ * - `errorRetry` — the SECOND error frame both parents draw (10196:67445 /
76
+ * the partner's 8363:21429): the same warning mark over "Signature failed"
77
+ * plus a full-width "Try again" primary. This is the only recovery
78
+ * affordance anywhere in the signing flow
79
+ */
80
+ export type QualifiedSignatureResultVariant =
81
+ | 'signed'
82
+ | 'signedPlain'
83
+ | 'signedPartner'
84
+ | 'error'
85
+ | 'errorRetry';
86
+
87
+ /**
88
+ * The two readings of the in-flight screen:
89
+ * - `processing` — `QSign.AcceptSign.processing` (10196:67395): spinner + H2,
90
+ * nothing else on the frame
91
+ * - `signing` — the partner's own 6086:39544: "Creating your signature…"
92
+ * under the spinner PLUS a bottom-anchored attribution row ("Signing as …")
93
+ * sitting immediately above the verified tag, not under the title
94
+ */
95
+ export type QualifiedSignatureProcessingVariant = 'processing' | 'signing';
96
+
97
+ /**
98
+ * One consent clause of the accept screen. Runtime DATA, not module copy — the
99
+ * clause set is written by the Qualified Trust Service Provider and changes with
100
+ * it (five Incode-QTSP clauses in one purple parent, two Namirial clauses in the
101
+ * other), exactly as Phone Input takes its dial codes and CURP its state
102
+ * catalogue as data rather than strings.
103
+ *
104
+ * `segments` is Core's OWN `PrizmaConsentSegment[]`: plain strings render as
105
+ * copy, objects render as inline links inside the clause — which is how the
106
+ * fourth Incode clause carries both "Terms of Use" and "Privacy Policy" without
107
+ * either being hand-rolled.
108
+ */
109
+ export interface QualifiedSignatureTerm {
110
+ /** Stable key for the row (also the value reported back by a host). */
111
+ id: string;
112
+ /** The clause body, as Core's consent segments. */
113
+ segments: PrizmaConsentSegment[];
114
+ }
115
+
116
+ /** Copy for one reading of the accept-and-sign screen. */
117
+ export interface QualifiedSignatureAcceptCopy {
118
+ /** H2 ("Accept and sign" / "Review and sign"). */
119
+ title: string;
120
+ /** H5 below the title. */
121
+ subtitle?: string;
122
+ /** Primary CTA ("Finish signing" / "Sign"). */
123
+ ctaLabel: string;
124
+ /** Accessible busy label while the signature is created (`loading`). */
125
+ ctaLoadingLabel?: string;
126
+ /**
127
+ * Underlined tertiary link below the primary — the partner variant's
128
+ * "Certificate application form", which opens the `terms` document screen.
129
+ * Emits `secondary` so a host can tell it from the primary (DEVIATIONS #PI-10).
130
+ */
131
+ linkLabel?: string;
132
+ }
133
+
134
+ export interface QualifiedSignatureStrings {
135
+ /** "verified by" attribution in the footer tag. */
136
+ verifiedLabel: string;
137
+ /** Accessible name for the logo nav row. */
138
+ navLabel?: string;
139
+
140
+ /** QSign.upload.default — the intro that asks for the file. */
141
+ upload: {
142
+ /** H2 ("Upload a document to sign"). */
143
+ title: string;
144
+ /** H5 ("Supports PDF files"). */
145
+ subtitle?: string;
146
+ /** Hint above the CTA. The purple section draws none. */
147
+ disclaimer?: string;
148
+ /** Primary CTA ("Upload document"). */
149
+ ctaLabel: string;
150
+ };
151
+
152
+ /** QSign.reviewDoc.default — the uploaded file confirmed before signing. */
153
+ review: {
154
+ /** H2 ("Review your document"). */
155
+ title: string;
156
+ /** H5 ("Make sure you've selected the correct file…"). */
157
+ subtitle?: string;
158
+ /** Primary CTA ("Continue"). */
159
+ ctaLabel: string;
160
+ /** Secondary CTA ("Replace"). */
161
+ replaceLabel: string;
162
+ /** The reassurance row under the card ("All data is encrypted"). */
163
+ encryptedLabel?: string;
164
+ };
165
+
166
+ /** QSign.AcceptSign.{default,selectedCheckox,loadingsign} — both readings. */
167
+ accept: {
168
+ /** Action on the document row — Core's tertiary link ("View"). */
169
+ viewLabel: string;
170
+ /** Accessible name for the consent stack. */
171
+ termsLabel?: string;
172
+ /** The generic five-clause reading. */
173
+ accept: QualifiedSignatureAcceptCopy;
174
+ /** The partner two-clause reading. */
175
+ certificate: QualifiedSignatureAcceptCopy;
176
+ };
177
+
178
+ /** The two full-surface document screens. */
179
+ document: {
180
+ /**
181
+ * QSign.AcceptSign.viewdoc. **The purple section draws no heading at all**
182
+ * — GUIDELINES §4 ("every screen has exactly one H2") is the side that wins,
183
+ * so the screen carries one and the Figma frame is the side to change
184
+ * (module deviation row). Keep it short: it sits above the page.
185
+ */
186
+ document: { title: string };
187
+ /** QSign.T&C ("Certificate Application Form"), left-aligned in Figma. */
188
+ terms: { title: string };
189
+ };
190
+
191
+ /** The two in-flight screens. */
192
+ processing: {
193
+ /** QSign.AcceptSign.processing — the pure spinner screen. */
194
+ processing: {
195
+ /** H2 ("Processing…"). */
196
+ title: string;
197
+ subtitle?: string;
198
+ };
199
+ /** The partner's own in-flight frame. */
200
+ signing: {
201
+ /** H2 under the spinner ("Creating your signature…"). */
202
+ title: string;
203
+ subtitle?: string;
204
+ /**
205
+ * The attribution row anchored at the BOTTOM of the frame, immediately
206
+ * above the verified tag ("Signing as Maria Andersson").
207
+ *
208
+ * ONE composed line, not a prefix the screen concatenates a name onto:
209
+ * the host's locale pack interpolates the signer, exactly as Phone
210
+ * Input's OTP subtitle carries the masked destination number.
211
+ */
212
+ signingAsLabel: string;
213
+ };
214
+ };
215
+
216
+ /** The five verdict screens. */
217
+ result: {
218
+ /** QSign.success with actions ("Signed successfully!" + "Download PDF"). */
219
+ signed: {
220
+ title: string;
221
+ subtitle?: string;
222
+ /** Primary CTA ("Continue"). */
223
+ ctaLabel: string;
224
+ /** Underlined tertiary link ("Download PDF"). Emits `secondary`. */
225
+ downloadLabel?: string;
226
+ };
227
+ /** QSign.success drawn with no actions. */
228
+ signedPlain: { title: string; subtitle?: string };
229
+ /** The partner's success frame — attribution row over a STACKED pair. */
230
+ signedPartner: {
231
+ title: string;
232
+ subtitle?: string;
233
+ /**
234
+ * The attribution row above the buttons ("Signed by Maria Andersson ·
235
+ * 17 Jun 2026"). ONE composed line for the same reason as
236
+ * `processing.signing.signingAsLabel` — the locale pack owns the order of
237
+ * signer and date.
238
+ */
239
+ signedByLabel: string;
240
+ /** Primary CTA ("Done"). Emits `cta`. */
241
+ ctaLabel: string;
242
+ /** OUTLINED secondary below the primary ("Download document"). Emits
243
+ * `secondary`. A real Button, not `signed`'s underlined link. */
244
+ secondaryCtaLabel: string;
245
+ };
246
+ /** QSign.AcceptSign.error ("Something went wrong"). Figma draws no button. */
247
+ error: { title: string; subtitle?: string };
248
+ /** The retry frame ("Signature failed" + "Try again"). */
249
+ errorRetry: {
250
+ title: string;
251
+ subtitle?: string;
252
+ /** Full-width primary CTA ("Try again"). Emits `cta`. */
253
+ ctaLabel: string;
254
+ };
255
+ };
256
+ }