@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,222 @@
1
+ import type { PrizmaConsentSegment } from '@incodetech/prizma-core-web/checkbox';
2
+ /**
3
+ * The two readings of the accept-and-sign screen. They are the same skeleton —
4
+ * title block → document row → consent stack → CTA — with a different clause
5
+ * set, a different CTA verb and, on `certificate`, a link to the application
6
+ * form:
7
+ * - `accept` — `QSign.AcceptSign.*` in the generic parent: "Accept and
8
+ * sign", five QTSP/eIDAS clauses, "Finish signing", no link.
9
+ * - `certificate` — the same sections in the `x Namirial` parent: "Review and
10
+ * sign", two clauses, "Sign", plus the "Certificate application form" link
11
+ * that opens the `terms` document screen.
12
+ */
13
+ export type QualifiedSignatureAcceptVariant = 'accept' | 'certificate';
14
+ /**
15
+ * The three purple states each accept section is drawn in:
16
+ * - `default` — every box unticked, the CTA in Core's disabled surface
17
+ * (`QSign.AcceptSign.default`)
18
+ * - `selected` — every box ticked, the CTA live (`…selectedCheckox`)
19
+ * - `loading` — the clauses and the document action greyed while the signature
20
+ * is created, spinner in the CTA (`…loadingsign`). The spinner rides the
21
+ * BUTTON, never a field — the standing module rule (DEVIATIONS #PI-5).
22
+ */
23
+ export type QualifiedSignatureAcceptState = 'default' | 'selected' | 'loading';
24
+ /**
25
+ * The two full-surface document screens:
26
+ * - `document` — `QSign.AcceptSign.viewdoc`, the contract itself behind the
27
+ * document row's "View" action
28
+ * - `terms` — `QSign.T&C`, the certificate application form behind the
29
+ * partner variant's link
30
+ */
31
+ export type QualifiedSignatureDocumentVariant = 'document' | 'terms';
32
+ /**
33
+ * The FIVE verdict frames. Both purple parents draw success twice and error
34
+ * twice, and each pair differs in what the signer can do next:
35
+ * - `signed` — `QSign.success` (10196:67485): the positive mark with
36
+ * "Continue" and a "Download PDF" underlined link
37
+ * - `signedPlain` — `QSign.success` (10196:67494): the same mark and line
38
+ * with NO actions at all
39
+ * - `signedPartner` — the `x Namirial` parent's own success frame (6086:40135),
40
+ * a THIRD reading rather than a copy of either: the mark and line, a signer
41
+ * attribution row, then a STACKED pair — "Done" primary above a "Download
42
+ * document" OUTLINED secondary. The outlined button is a different control
43
+ * from `signed`'s underlined link, so it gets its own slice
44
+ * - `error` — `QSign.AcceptSign.error` (10196:67436): the warning mark
45
+ * over "Something went wrong", no actions
46
+ * - `errorRetry` — the SECOND error frame both parents draw (10196:67445 /
47
+ * the partner's 8363:21429): the same warning mark over "Signature failed"
48
+ * plus a full-width "Try again" primary. This is the only recovery
49
+ * affordance anywhere in the signing flow
50
+ */
51
+ export type QualifiedSignatureResultVariant = 'signed' | 'signedPlain' | 'signedPartner' | 'error' | 'errorRetry';
52
+ /**
53
+ * The two readings of the in-flight screen:
54
+ * - `processing` — `QSign.AcceptSign.processing` (10196:67395): spinner + H2,
55
+ * nothing else on the frame
56
+ * - `signing` — the partner's own 6086:39544: "Creating your signature…"
57
+ * under the spinner PLUS a bottom-anchored attribution row ("Signing as …")
58
+ * sitting immediately above the verified tag, not under the title
59
+ */
60
+ export type QualifiedSignatureProcessingVariant = 'processing' | 'signing';
61
+ /**
62
+ * One consent clause of the accept screen. Runtime DATA, not module copy — the
63
+ * clause set is written by the Qualified Trust Service Provider and changes with
64
+ * it (five Incode-QTSP clauses in one purple parent, two Namirial clauses in the
65
+ * other), exactly as Phone Input takes its dial codes and CURP its state
66
+ * catalogue as data rather than strings.
67
+ *
68
+ * `segments` is Core's OWN `PrizmaConsentSegment[]`: plain strings render as
69
+ * copy, objects render as inline links inside the clause — which is how the
70
+ * fourth Incode clause carries both "Terms of Use" and "Privacy Policy" without
71
+ * either being hand-rolled.
72
+ */
73
+ export interface QualifiedSignatureTerm {
74
+ /** Stable key for the row (also the value reported back by a host). */
75
+ id: string;
76
+ /** The clause body, as Core's consent segments. */
77
+ segments: PrizmaConsentSegment[];
78
+ }
79
+ /** Copy for one reading of the accept-and-sign screen. */
80
+ export interface QualifiedSignatureAcceptCopy {
81
+ /** H2 ("Accept and sign" / "Review and sign"). */
82
+ title: string;
83
+ /** H5 below the title. */
84
+ subtitle?: string;
85
+ /** Primary CTA ("Finish signing" / "Sign"). */
86
+ ctaLabel: string;
87
+ /** Accessible busy label while the signature is created (`loading`). */
88
+ ctaLoadingLabel?: string;
89
+ /**
90
+ * Underlined tertiary link below the primary — the partner variant's
91
+ * "Certificate application form", which opens the `terms` document screen.
92
+ * Emits `secondary` so a host can tell it from the primary (DEVIATIONS #PI-10).
93
+ */
94
+ linkLabel?: string;
95
+ }
96
+ export interface QualifiedSignatureStrings {
97
+ /** "verified by" attribution in the footer tag. */
98
+ verifiedLabel: string;
99
+ /** Accessible name for the logo nav row. */
100
+ navLabel?: string;
101
+ /** QSign.upload.default — the intro that asks for the file. */
102
+ upload: {
103
+ /** H2 ("Upload a document to sign"). */
104
+ title: string;
105
+ /** H5 ("Supports PDF files"). */
106
+ subtitle?: string;
107
+ /** Hint above the CTA. The purple section draws none. */
108
+ disclaimer?: string;
109
+ /** Primary CTA ("Upload document"). */
110
+ ctaLabel: string;
111
+ };
112
+ /** QSign.reviewDoc.default — the uploaded file confirmed before signing. */
113
+ review: {
114
+ /** H2 ("Review your document"). */
115
+ title: string;
116
+ /** H5 ("Make sure you've selected the correct file…"). */
117
+ subtitle?: string;
118
+ /** Primary CTA ("Continue"). */
119
+ ctaLabel: string;
120
+ /** Secondary CTA ("Replace"). */
121
+ replaceLabel: string;
122
+ /** The reassurance row under the card ("All data is encrypted"). */
123
+ encryptedLabel?: string;
124
+ };
125
+ /** QSign.AcceptSign.{default,selectedCheckox,loadingsign} — both readings. */
126
+ accept: {
127
+ /** Action on the document row — Core's tertiary link ("View"). */
128
+ viewLabel: string;
129
+ /** Accessible name for the consent stack. */
130
+ termsLabel?: string;
131
+ /** The generic five-clause reading. */
132
+ accept: QualifiedSignatureAcceptCopy;
133
+ /** The partner two-clause reading. */
134
+ certificate: QualifiedSignatureAcceptCopy;
135
+ };
136
+ /** The two full-surface document screens. */
137
+ document: {
138
+ /**
139
+ * QSign.AcceptSign.viewdoc. **The purple section draws no heading at all**
140
+ * — GUIDELINES §4 ("every screen has exactly one H2") is the side that wins,
141
+ * so the screen carries one and the Figma frame is the side to change
142
+ * (module deviation row). Keep it short: it sits above the page.
143
+ */
144
+ document: {
145
+ title: string;
146
+ };
147
+ /** QSign.T&C ("Certificate Application Form"), left-aligned in Figma. */
148
+ terms: {
149
+ title: string;
150
+ };
151
+ };
152
+ /** The two in-flight screens. */
153
+ processing: {
154
+ /** QSign.AcceptSign.processing — the pure spinner screen. */
155
+ processing: {
156
+ /** H2 ("Processing…"). */
157
+ title: string;
158
+ subtitle?: string;
159
+ };
160
+ /** The partner's own in-flight frame. */
161
+ signing: {
162
+ /** H2 under the spinner ("Creating your signature…"). */
163
+ title: string;
164
+ subtitle?: string;
165
+ /**
166
+ * The attribution row anchored at the BOTTOM of the frame, immediately
167
+ * above the verified tag ("Signing as Maria Andersson").
168
+ *
169
+ * ONE composed line, not a prefix the screen concatenates a name onto:
170
+ * the host's locale pack interpolates the signer, exactly as Phone
171
+ * Input's OTP subtitle carries the masked destination number.
172
+ */
173
+ signingAsLabel: string;
174
+ };
175
+ };
176
+ /** The five verdict screens. */
177
+ result: {
178
+ /** QSign.success with actions ("Signed successfully!" + "Download PDF"). */
179
+ signed: {
180
+ title: string;
181
+ subtitle?: string;
182
+ /** Primary CTA ("Continue"). */
183
+ ctaLabel: string;
184
+ /** Underlined tertiary link ("Download PDF"). Emits `secondary`. */
185
+ downloadLabel?: string;
186
+ };
187
+ /** QSign.success drawn with no actions. */
188
+ signedPlain: {
189
+ title: string;
190
+ subtitle?: string;
191
+ };
192
+ /** The partner's success frame — attribution row over a STACKED pair. */
193
+ signedPartner: {
194
+ title: string;
195
+ subtitle?: string;
196
+ /**
197
+ * The attribution row above the buttons ("Signed by Maria Andersson ·
198
+ * 17 Jun 2026"). ONE composed line for the same reason as
199
+ * `processing.signing.signingAsLabel` — the locale pack owns the order of
200
+ * signer and date.
201
+ */
202
+ signedByLabel: string;
203
+ /** Primary CTA ("Done"). Emits `cta`. */
204
+ ctaLabel: string;
205
+ /** OUTLINED secondary below the primary ("Download document"). Emits
206
+ * `secondary`. A real Button, not `signed`'s underlined link. */
207
+ secondaryCtaLabel: string;
208
+ };
209
+ /** QSign.AcceptSign.error ("Something went wrong"). Figma draws no button. */
210
+ error: {
211
+ title: string;
212
+ subtitle?: string;
213
+ };
214
+ /** The retry frame ("Signature failed" + "Try again"). */
215
+ errorRetry: {
216
+ title: string;
217
+ subtitle?: string;
218
+ /** Full-width primary CTA ("Try again"). Emits `cta`. */
219
+ ctaLabel: string;
220
+ };
221
+ };
222
+ }
@@ -0,0 +1,25 @@
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
+ export {};
@@ -0,0 +1,42 @@
1
+ import React, { type ReactNode } from 'react';
2
+ import { type PrizmaTutorialScreenProps } from './TutorialScreen';
3
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
4
+ import type { QualifiedSignatureStrings } from './QualifiedSignatureStrings';
5
+ import './ScreenLayout.css';
6
+ export interface QualifiedSignatureUploadScreenProps extends Omit<PrizmaTutorialScreenProps, 'title' | 'subtitle' | 'disclaimer' | 'ctaLabel' | 'verifiedLabel' | 'navLabel'> {
7
+ /** Module copy — this screen reads the `upload` slice. */
8
+ strings: QualifiedSignatureStrings;
9
+ /** Replace the document illustration (a host may ship its own artwork). */
10
+ illustration?: ReactNode;
11
+ screenId?: string;
12
+ overrides?: PrizmaScreenOverrides;
13
+ onAction?: PrizmaScreenActionHandler;
14
+ }
15
+ /**
16
+ * Qualified Signature — the intro that asks for the file, built on the Tutorial
17
+ * archetype (GUIDELINES.md §6-A, `PrizmaTutorialScreen`).
18
+ *
19
+ * Figma: purple section `QSign.upload.default` (10196:67095). Measured off the
20
+ * 390 frame (CONTENT 654, `top container` 342×127): nav 8→52 · Title 68→127
21
+ * (nav + Spacing/24) · `illustration container` flexes · `Call to Actions`
22
+ * 536→638 = the primary + the Tag. Exactly the archetype's own rhythm, so this
23
+ * file declares no layout.
24
+ *
25
+ * The illustration is `DocumentCaptureIllustration` — NOT a fourth inline copy
26
+ * of the same artwork. The Figma `Illustrations` frame here is 310.47 × 325 and
27
+ * Document Capture's is 342 × 358: the SAME ratio to five decimals (0.90775),
28
+ * with the same three layers (halo ellipse `bg` · `documents` page · the
29
+ * `frame-border` outline), i.e. one asset drawn at two scales. Core still ships
30
+ * no document illustration, so the standing request stands — DEVIATIONS #DC-21
31
+ * asked to promote it to `PrizmaIllustrationDocument`; a second module now
32
+ * depends on a Document-Capture-named export, which is the strongest argument
33
+ * yet for the promotion.
34
+ *
35
+ * `QSign.upload.select` (10196:67173), the section between this screen and the
36
+ * review, is the **iOS Files app** — OS chrome, not a Prizma surface. Not built,
37
+ * for the reason DEVIATIONS #DC-20 settled: a screen composed only of Core
38
+ * components cannot render OS chrome, and faking it would ship a fake system UI.
39
+ * A host that needs the picker calls the platform API.
40
+ */
41
+ export declare const QualifiedSignatureUploadScreen: React.ForwardRefExoticComponent<QualifiedSignatureUploadScreenProps & React.RefAttributes<HTMLDivElement>>;
42
+ export default QualifiedSignatureUploadScreen;
@@ -0,0 +1,35 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { forwardRef } from 'react';
4
+ import { PrizmaTutorialScreen } from './TutorialScreen';
5
+ import { DocumentCaptureIllustration } from './DocumentCaptureIllustration';
6
+ import './ScreenLayout.css';
7
+ /**
8
+ * Qualified Signature — the intro that asks for the file, built on the Tutorial
9
+ * archetype (GUIDELINES.md §6-A, `PrizmaTutorialScreen`).
10
+ *
11
+ * Figma: purple section `QSign.upload.default` (10196:67095). Measured off the
12
+ * 390 frame (CONTENT 654, `top container` 342×127): nav 8→52 · Title 68→127
13
+ * (nav + Spacing/24) · `illustration container` flexes · `Call to Actions`
14
+ * 536→638 = the primary + the Tag. Exactly the archetype's own rhythm, so this
15
+ * file declares no layout.
16
+ *
17
+ * The illustration is `DocumentCaptureIllustration` — NOT a fourth inline copy
18
+ * of the same artwork. The Figma `Illustrations` frame here is 310.47 × 325 and
19
+ * Document Capture's is 342 × 358: the SAME ratio to five decimals (0.90775),
20
+ * with the same three layers (halo ellipse `bg` · `documents` page · the
21
+ * `frame-border` outline), i.e. one asset drawn at two scales. Core still ships
22
+ * no document illustration, so the standing request stands — DEVIATIONS #DC-21
23
+ * asked to promote it to `PrizmaIllustrationDocument`; a second module now
24
+ * depends on a Document-Capture-named export, which is the strongest argument
25
+ * yet for the promotion.
26
+ *
27
+ * `QSign.upload.select` (10196:67173), the section between this screen and the
28
+ * review, is the **iOS Files app** — OS chrome, not a Prizma surface. Not built,
29
+ * for the reason DEVIATIONS #DC-20 settled: a screen composed only of Core
30
+ * components cannot render OS chrome, and faking it would ship a fake system UI.
31
+ * A host that needs the picker calls the platform API.
32
+ */
33
+ export const QualifiedSignatureUploadScreen = forwardRef(({ strings, illustration, screenId = 'qualified-signature-upload', overrides, onAction, ...shell }, ref) => (_jsx(PrizmaTutorialScreen, { ref: ref, title: strings.upload.title, subtitle: strings.upload.subtitle, disclaimer: strings.upload.disclaimer, ctaLabel: strings.upload.ctaLabel, illustration: illustration ?? _jsx(DocumentCaptureIllustration, {}), verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell })));
34
+ QualifiedSignatureUploadScreen.displayName = 'QualifiedSignatureUploadScreen';
35
+ export default QualifiedSignatureUploadScreen;
@@ -0,0 +1,93 @@
1
+ import React, { type ReactNode } from 'react';
2
+ import { type PrizmaScreenShellProps } from './ScreenShell';
3
+ import type { PrizmaScreenActionHandler, PrizmaScreenChromeProps, PrizmaScreenOverrides } from './types';
4
+ import './ScreenLayout.css';
5
+ /** `loading` renders Core's spinner slot; the verdicts render its status mark. */
6
+ export type PrizmaResultStatus = 'loading' | 'success' | 'error' | 'warning' | 'none';
7
+ export interface PrizmaResultScreenProps extends Omit<PrizmaScreenShellProps, 'dark' | 'title' | 'children'>, PrizmaScreenChromeProps {
8
+ /** The status mark above the title. `none` renders the title alone. */
9
+ status?: PrizmaResultStatus;
10
+ /**
11
+ * An optional block between the logo nav and the content — a journey stepper.
12
+ * Video Selfie draws Core's `PrizmaStepper` on EVERY screen of the flow, not
13
+ * just its camera stages, and it is the only chrome that tells the steps
14
+ * apart; the archetypes had a slot on E alone, so the rest of the module shed
15
+ * it (owner-reported 2026-08-19). Takes a `ReactNode` so the module supplies
16
+ * Core's own component — no primitive invented, and both offsets live once in
17
+ * `ScreenLayout.css` (`.prizma-screen-layout__progress`). Omit it and nothing
18
+ * renders, so every existing consumer is byte-identical. DEVIATIONS #VS-4.
19
+ */
20
+ progress?: ReactNode;
21
+ /** H2 result line ("Verification complete", "Face not aligned"). */
22
+ title: string;
23
+ /** Supporting copy below the title. */
24
+ subtitle?: string;
25
+ /**
26
+ * A non-status glyph ABOVE the title — Core's `PrizmaTitle.icon` allowlist is
27
+ * `status | spinner | none`, so anything else (a Wi-Fi mark on a connectivity
28
+ * error) is composed here rather than forced into the slot. DEVIATIONS #10.
29
+ */
30
+ glyph?: ReactNode;
31
+ /**
32
+ * Anything between the title block and the CTA band: a verdict Snackbar
33
+ * (Face Match), the captured document still (ID Capture), a hint list. Kept as
34
+ * a slot so one template covers every module's result screen instead of each
35
+ * hand-building the same skeleton.
36
+ */
37
+ children?: ReactNode;
38
+ /**
39
+ * Content that belongs INSIDE the CTA band, above the buttons — Face Match's
40
+ * verdict Snackbar sits there in Figma (Spacing/32 above the CTA, reached as
41
+ * the band's own 16 plus the slot's 16). Distinct from `children`, which sits
42
+ * with the centered title block.
43
+ */
44
+ bandContent?: ReactNode;
45
+ /**
46
+ * How the two CTAs sit. `stacked` (default) puts the secondary above the
47
+ * primary; `row` pairs them side by side, which is what ID Capture's review
48
+ * screen draws (Retake | Continue, ~166/163 in a 342 column).
49
+ */
50
+ ctaOrientation?: 'stacked' | 'row';
51
+ /** Legal/hint copy directly above the CTA. Supplies the designed 28px
52
+ * text→CTA gap through its own padding (DEVIATIONS #8). */
53
+ disclaimer?: string;
54
+ /** Primary CTA. Omit for result screens that only report. */
55
+ ctaLabel?: string;
56
+ /** Secondary CTA rendered BELOW the primary (#GEO-1). */
57
+ secondaryCtaLabel?: string;
58
+ /**
59
+ * A tertiary underlined LINK, rendered BELOW the button stack — the position
60
+ * archetype A uses. Video Selfie's `14.3`/`14.4` draw "Retry" first with
61
+ * "Quit process" underneath; with no slot here the module had to borrow
62
+ * `bandContent`, which renders ABOVE the buttons and put the link on the
63
+ * wrong side (owner QA 2026-08-19). `bandContent` returns to its intended
64
+ * job (Face Match's verdict Snackbar). DEVIATIONS #VS-17.
65
+ */
66
+ linkLabel?: string;
67
+ /** "verified by" attribution copy for the footer tag. */
68
+ verifiedLabel: string;
69
+ navLabel?: string;
70
+ screenId?: string;
71
+ overrides?: PrizmaScreenOverrides;
72
+ onAction?: PrizmaScreenActionHandler;
73
+ }
74
+ /**
75
+ * Archetype F — Result.
76
+ *
77
+ * The "centered status + CTA band + tag" recipe. It exists because three
78
+ * modules hand-built it independently — `FaceCaptureResultErrorScreen` (100
79
+ * lines), `FaceMatchResultScreen` (143) and `IdCaptureResultScreen` (198) —
80
+ * each differing only in what sat between the title and the CTA. Every
81
+ * hand-build was a fresh chance to get the spacing subtly wrong, which is
82
+ * exactly how the tag ended up at 0 on some screens and 16 on others.
83
+ *
84
+ * Layout: nav (or reserved row) → vertically centered title block → optional
85
+ * slot → CTA band (secondary, primary, disclaimer at a flat Spacing/16) →
86
+ * anchored footer tag. Every offset comes from ScreenLayout.css; this file
87
+ * declares none of its own.
88
+ *
89
+ * `ProcessingScreen` stays the pure spinner/no-CTA case; reach for this one as
90
+ * soon as a result screen needs a button.
91
+ */
92
+ export declare const PrizmaResultScreen: React.ForwardRefExoticComponent<PrizmaResultScreenProps & React.RefAttributes<HTMLDivElement>>;
93
+ export default PrizmaResultScreen;
@@ -0,0 +1,37 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { forwardRef } from 'react';
4
+ import { PrizmaTitle } from '@incodetech/prizma-core-web/title';
5
+ import { PrizmaButton } from '@incodetech/prizma-core-web/button';
6
+ import { PrizmaDisclaimer } from '@incodetech/prizma-core-web/disclaimer';
7
+ import { PrizmaTag } from '@incodetech/prizma-core-web/tag';
8
+ import { PrizmaScreenShell } from './ScreenShell';
9
+ import { PrizmaScreenNav } from './ScreenNav';
10
+ import './ScreenLayout.css';
11
+ /**
12
+ * Archetype F — Result.
13
+ *
14
+ * The "centered status + CTA band + tag" recipe. It exists because three
15
+ * modules hand-built it independently — `FaceCaptureResultErrorScreen` (100
16
+ * lines), `FaceMatchResultScreen` (143) and `IdCaptureResultScreen` (198) —
17
+ * each differing only in what sat between the title and the CTA. Every
18
+ * hand-build was a fresh chance to get the spacing subtly wrong, which is
19
+ * exactly how the tag ended up at 0 on some screens and 16 on others.
20
+ *
21
+ * Layout: nav (or reserved row) → vertically centered title block → optional
22
+ * slot → CTA band (secondary, primary, disclaimer at a flat Spacing/16) →
23
+ * anchored footer tag. Every offset comes from ScreenLayout.css; this file
24
+ * declares none of its own.
25
+ *
26
+ * `ProcessingScreen` stays the pure spinner/no-CTA case; reach for this one as
27
+ * soon as a result screen needs a button.
28
+ */
29
+ export const PrizmaResultScreen = forwardRef(({ progress, status = 'none', title, subtitle, glyph, children, bandContent, disclaimer, ctaOrientation = 'stacked', ctaLabel, secondaryCtaLabel, linkLabel, verifiedLabel, navLabel, screenId, showHeader = true, showFooter = true, overrides, onAction, ...shell }, ref) => (_jsxs(PrizmaScreenShell, { ref: ref, ...shell, children: [_jsx(PrizmaScreenNav, { reserved: !showHeader, logo: overrides?.logo, navLabel: navLabel }), progress ? (_jsx("div", { className: "prizma-screen-layout__progress", children: progress })) : null, _jsxs("div", { className: "prizma-screen-layout__content prizma-screen-layout__content--centered", children: [glyph, _jsx(PrizmaTitle, { variant: overrides?.align === 'left' ? 'left' : 'centered', title: title, showSubtitle: Boolean(subtitle), subtitle: subtitle, icon: status === 'loading'
30
+ ? { type: 'spinner' }
31
+ : status === 'none'
32
+ ? { type: 'none' }
33
+ : { type: 'status', status } }), children] }), ctaLabel || secondaryCtaLabel || linkLabel || disclaimer || bandContent ? (_jsxs("div", { className: "prizma-screen-layout__band prizma-screen-layout__band--result", children: [bandContent ? (_jsx("div", { className: "prizma-screen-layout__band__content", children: bandContent })) : null, disclaimer ? _jsx(PrizmaDisclaimer, { text: disclaimer }) : null, _jsxs("div", { className: ctaOrientation === 'row'
34
+ ? 'prizma-screen-layout__band__ctas prizma-screen-layout__band__ctas--row'
35
+ : 'prizma-screen-layout__band__ctas', children: [ctaLabel ? (_jsx(PrizmaButton, { variant: "primary", size: "L", onClick: () => onAction?.({ type: 'cta', screenId }), children: ctaLabel })) : null, secondaryCtaLabel ? (_jsx(PrizmaButton, { variant: "secondary", size: "L", onClick: () => onAction?.({ type: 'secondary', screenId }), children: secondaryCtaLabel })) : null, linkLabel ? (_jsx(PrizmaButton, { variant: "tertiary-link", size: "L", onClick: () => onAction?.({ type: 'tertiary', screenId }), children: linkLabel })) : null] })] })) : null, showFooter ? (_jsx("div", { className: "prizma-screen-layout__footer", children: _jsx(PrizmaTag, { label: verifiedLabel }) })) : null] })));
36
+ PrizmaResultScreen.displayName = 'PrizmaResultScreen';
37
+ export default PrizmaResultScreen;
@@ -0,0 +1,81 @@
1
+ import React, { type ReactNode } from 'react';
2
+ import { type PrizmaScreenShellProps } from './ScreenShell';
3
+ import type { PrizmaScreenActionHandler, PrizmaScreenChromeProps, PrizmaScreenOverrides } from './types';
4
+ import './ScreenLayout.css';
5
+ /**
6
+ * The three stages every captured-media review section shares. Identical
7
+ * skeleton — only the header block (Title vs loading bar), the media's own
8
+ * state and the presence of the CTA row change. Named to match the modules'
9
+ * own stage axis (`DocumentCaptureConfirmStage`, Video Selfie's review step).
10
+ */
11
+ export type PrizmaReviewStage = 'review' | 'analyzing' | 'success';
12
+ export interface PrizmaReviewScreenProps extends Omit<PrizmaScreenShellProps, 'dark' | 'title' | 'children'>, Pick<PrizmaScreenChromeProps, 'showHeader' | 'showFooter'> {
13
+ /** Which review stage to render. Default `review`. */
14
+ stage?: PrizmaReviewStage;
15
+ /** H2 review/base title ("Review your document"). */
16
+ title: string;
17
+ /** Supporting copy under the title — drawn on `review` only (Figma). */
18
+ subtitle?: string;
19
+ /** Title shown on `success`; falls back to `title` when omitted. */
20
+ successTitle?: string;
21
+ /** Caption inside the loading bar on `analyzing`. */
22
+ analyzingLabel?: string;
23
+ /**
24
+ * Which Core `PrizmaLoadingBar` treatment the `analyzing` stage runs — the
25
+ * captured-photo review shows the `analyzing` sweep, the uploaded-file review
26
+ * shows `uploading`. Default `analyzing`.
27
+ */
28
+ analyzingState?: 'analyzing' | 'uploading';
29
+ /** Loading-bar progress on `analyzing`, 0–100. */
30
+ progress?: number;
31
+ /**
32
+ * The flexing captured-media slot: a `PrizmaIdCapture` still, an uploaded-file
33
+ * preview card, a portrait review. Kept a slot so one template serves every
34
+ * module's review screen — the module supplies the media in the right state
35
+ * for the stage; the archetype owns every offset around it.
36
+ */
37
+ children: ReactNode;
38
+ /**
39
+ * Extra class on the media stage for per-media adapters that Core does not
40
+ * own (an uploaded-file column inset, the light-surface encrypted re-tint).
41
+ * These shape CONTENT, never archetype spacing — the header, stage flex, CTA
42
+ * offset and footer all come from ScreenLayout.css regardless.
43
+ */
44
+ stageClassName?: string;
45
+ /** Primary CTA — the forward action. Drawn on `review` and `success`. */
46
+ primaryLabel: string;
47
+ /** Secondary CTA ("Replace" / "Retake") — drawn on `review` only. */
48
+ secondaryLabel?: string;
49
+ /** "verified by" attribution copy for the footer tag. */
50
+ verifiedLabel: string;
51
+ navLabel?: string;
52
+ screenId?: string;
53
+ overrides?: PrizmaScreenOverrides;
54
+ onAction?: PrizmaScreenActionHandler;
55
+ }
56
+ /**
57
+ * Archetype H — Review (captured-media confirmation).
58
+ *
59
+ * The "header → flexing captured-media stage → CTA band → tag" recipe, with a
60
+ * `review → analyzing → success` stage axis. It exists because two Document
61
+ * Capture screens hand-built it independently (`DocumentCaptureConfirmImage`,
62
+ * `DocumentCaptureConfirmUpload`) with their own three-band arithmetic in
63
+ * `DocumentCaptureLayout.css`, and Video Selfie's review step needs the same
64
+ * skeleton — a captured still under a title, confirmed or replaced.
65
+ *
66
+ * It is NOT archetype F (Result): F centres a small status + CTA block, while a
67
+ * review TOP-aligns the header over a large media stage that flexes to fill the
68
+ * middle, and adds an in-flight `analyzing` state (the Title swaps for Core's
69
+ * `PrizmaLoadingBar` and the CTA row drops). `IdCaptureResultScreen`'s review
70
+ * verdict stays on F — its small on-surface still fits F's centred column, and
71
+ * splitting one file across two archetypes buys nothing (owner call 2026-08-18).
72
+ *
73
+ * Layout (measured off the Document Capture 390 sections, DEVIATIONS #DC-22/24):
74
+ * no logo nav → header block (Title or loading bar) → Spacing/32 → media stage
75
+ * (flexes, centred) → Spacing/24 → CTA band (`review`/`success`) → anchored
76
+ * VerifiedTag. `analyzing` drops the band and the stage carries the Spacing/24
77
+ * to the bottom itself. Every offset lives in ScreenLayout.css; this file
78
+ * declares none of its own.
79
+ */
80
+ export declare const PrizmaReviewScreen: React.ForwardRefExoticComponent<PrizmaReviewScreenProps & React.RefAttributes<HTMLDivElement>>;
81
+ export default PrizmaReviewScreen;
@@ -0,0 +1,56 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { forwardRef } from 'react';
4
+ import { PrizmaTitle } from '@incodetech/prizma-core-web/title';
5
+ import { PrizmaButtonGroup } from '@incodetech/prizma-core-web/button-group';
6
+ import { PrizmaLoadingBar } from '@incodetech/prizma-core-web/loading-bar';
7
+ import { PrizmaTag } from '@incodetech/prizma-core-web/tag';
8
+ import { PrizmaScreenShell } from './ScreenShell';
9
+ import { PrizmaScreenNav } from './ScreenNav';
10
+ import './ScreenLayout.css';
11
+ /**
12
+ * Archetype H — Review (captured-media confirmation).
13
+ *
14
+ * The "header → flexing captured-media stage → CTA band → tag" recipe, with a
15
+ * `review → analyzing → success` stage axis. It exists because two Document
16
+ * Capture screens hand-built it independently (`DocumentCaptureConfirmImage`,
17
+ * `DocumentCaptureConfirmUpload`) with their own three-band arithmetic in
18
+ * `DocumentCaptureLayout.css`, and Video Selfie's review step needs the same
19
+ * skeleton — a captured still under a title, confirmed or replaced.
20
+ *
21
+ * It is NOT archetype F (Result): F centres a small status + CTA block, while a
22
+ * review TOP-aligns the header over a large media stage that flexes to fill the
23
+ * middle, and adds an in-flight `analyzing` state (the Title swaps for Core's
24
+ * `PrizmaLoadingBar` and the CTA row drops). `IdCaptureResultScreen`'s review
25
+ * verdict stays on F — its small on-surface still fits F's centred column, and
26
+ * splitting one file across two archetypes buys nothing (owner call 2026-08-18).
27
+ *
28
+ * Layout (measured off the Document Capture 390 sections, DEVIATIONS #DC-22/24):
29
+ * no logo nav → header block (Title or loading bar) → Spacing/32 → media stage
30
+ * (flexes, centred) → Spacing/24 → CTA band (`review`/`success`) → anchored
31
+ * VerifiedTag. `analyzing` drops the band and the stage carries the Spacing/24
32
+ * to the bottom itself. Every offset lives in ScreenLayout.css; this file
33
+ * declares none of its own.
34
+ */
35
+ export const PrizmaReviewScreen = forwardRef(({ stage = 'review', title, subtitle, successTitle, analyzingLabel, analyzingState = 'analyzing', progress = 0, children, stageClassName, primaryLabel, secondaryLabel, verifiedLabel, navLabel, showHeader, showFooter = true, screenId, overrides, onAction, ...shell }, ref) => {
36
+ // Review screens are the capture family: no logo unless the client opts in
37
+ // by supplying one (types.ts chrome contract). `showHeader` still wins when
38
+ // set explicitly.
39
+ const withNav = showHeader ?? Boolean(overrides?.logo);
40
+ const showSecondary = stage === 'review' && Boolean(secondaryLabel);
41
+ const showBand = stage !== 'analyzing' && Boolean(primaryLabel || secondaryLabel);
42
+ return (_jsxs(PrizmaScreenShell, { ref: ref, ...shell, children: [withNav ? (_jsx(PrizmaScreenNav, { logo: overrides?.logo, navLabel: navLabel })) : null, _jsxs("div", { className: [
43
+ 'prizma-screen-layout__content',
44
+ withNav ? '' : 'prizma-screen-layout__content--no-nav',
45
+ ]
46
+ .filter(Boolean)
47
+ .join(' '), children: [_jsx("div", { className: "prizma-screen-layout__review-header", children: stage === 'analyzing' ? (_jsx("div", { className: "prizma-screen-layout__review-loading", children: _jsx(PrizmaLoadingBar, { state: analyzingState, progress: progress, title: analyzingLabel }) })) : (_jsx(PrizmaTitle, { variant: overrides?.align === 'left' ? 'left' : 'centered', title: stage === 'success' ? successTitle ?? title : title, showSubtitle: stage === 'review' && Boolean(subtitle), subtitle: subtitle, icon: stage === 'success' ? { type: 'status', status: 'success' } : undefined })) }), _jsx("div", { className: [
48
+ 'prizma-screen-layout__review-stage',
49
+ stage === 'analyzing' ? 'prizma-screen-layout__review-stage--flush' : '',
50
+ stageClassName ?? '',
51
+ ]
52
+ .filter(Boolean)
53
+ .join(' '), children: children }), showBand ? (_jsx("div", { className: "prizma-screen-layout__band prizma-screen-layout__band--review", children: _jsx(PrizmaButtonGroup, { orientation: "horizontal-v1", showSecondary: showSecondary, primaryLabel: primaryLabel, onPrimaryClick: () => onAction?.({ type: 'cta', screenId }), secondaryLabel: secondaryLabel, onSecondaryClick: () => onAction?.({ type: 'secondary', screenId }) }) })) : null, showFooter ? (_jsx("div", { className: "prizma-screen-layout__band__tag", children: _jsx(PrizmaTag, { label: verifiedLabel }) })) : null] })] }));
54
+ });
55
+ PrizmaReviewScreen.displayName = 'PrizmaReviewScreen';
56
+ export default PrizmaReviewScreen;