@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,97 @@
1
+ import React, { forwardRef, type ReactNode } from 'react';
2
+ import { PrizmaTitle } from '@incodetech/prizma-core-web/title';
3
+ import { PrizmaTag } from '@incodetech/prizma-core-web/tag';
4
+ import { PrizmaScreenShell, type PrizmaScreenShellProps } from './ScreenShell';
5
+ import { PrizmaScreenNav } from './ScreenNav';
6
+ import type {
7
+ PrizmaScreenActionHandler,
8
+ PrizmaScreenChromeProps,
9
+ PrizmaScreenOverrides,
10
+ } from './types';
11
+ import './ScreenLayout.css';
12
+
13
+ export type PrizmaProcessingStatus = 'loading' | 'success' | 'error' | 'warning';
14
+
15
+ export interface PrizmaProcessingScreenProps
16
+ extends Omit<PrizmaScreenShellProps, 'dark' | 'title'> ,
17
+ PrizmaScreenChromeProps {
18
+ /** `loading` renders the spinner slot; the rest render the status icon. */
19
+ status: PrizmaProcessingStatus;
20
+ /**
21
+ * An optional block between the logo nav and the content — a journey stepper.
22
+ * Video Selfie draws Core's `PrizmaStepper` on EVERY screen of the flow, not
23
+ * just its camera stages, and it is the only chrome that tells the steps
24
+ * apart; the archetypes had a slot on E alone, so the rest of the module shed
25
+ * it (owner-reported 2026-08-19). Takes a `ReactNode` so the module supplies
26
+ * Core's own component — no primitive invented, and both offsets live once in
27
+ * `ScreenLayout.css` (`.prizma-screen-layout__progress`). Omit it and nothing
28
+ * renders, so every existing consumer is byte-identical. DEVIATIONS #VS-4.
29
+ */
30
+ progress?: ReactNode;
31
+ /** H2 status line ("Processing…", "Verification complete"). */
32
+ title: string;
33
+ /** Optional supporting copy below the title. */
34
+ subtitle?: string;
35
+ /** "verified by" attribution copy for the footer tag. */
36
+ verifiedLabel: string;
37
+ navLabel?: string;
38
+ screenId?: string;
39
+ overrides?: PrizmaScreenOverrides;
40
+ onAction?: PrizmaScreenActionHandler;
41
+ }
42
+
43
+ /**
44
+ * Archetype C — Processing (GUIDELINES.md §6-C).
45
+ *
46
+ * This is the PURE case: a centered spinner or status mark with no CTA. As soon
47
+ * as a result screen needs a button, use `PrizmaResultScreen` — the missing CTA
48
+ * band here is what made three modules hand-build the same skeleton.
49
+ * Nav → fully centered column (icon/spinner + title via Core's PrizmaTitle
50
+ * slot) → tag pinned to the bottom. Used by every `*-uploading`,
51
+ * `*-processing`, `*-success` and `*-verified` screen.
52
+ */
53
+ export const PrizmaProcessingScreen = forwardRef<HTMLDivElement, PrizmaProcessingScreenProps>(
54
+ (
55
+ {
56
+ progress,
57
+ status,
58
+ title,
59
+ subtitle,
60
+ verifiedLabel,
61
+ navLabel,
62
+ screenId,
63
+ showHeader = true,
64
+ showFooter = true,
65
+ overrides,
66
+ onAction,
67
+ ...shell
68
+ },
69
+ ref,
70
+ ) => (
71
+ <PrizmaScreenShell ref={ref} {...shell}>
72
+ <PrizmaScreenNav reserved={!showHeader} logo={overrides?.logo} navLabel={navLabel} />
73
+ {progress ? (
74
+ <div className="prizma-screen-layout__progress">{progress}</div>
75
+ ) : null}
76
+ <div className="prizma-screen-layout__content prizma-screen-layout__content--centered">
77
+ <PrizmaTitle
78
+ variant="centered"
79
+ title={title}
80
+ showSubtitle={Boolean(subtitle)}
81
+ subtitle={subtitle}
82
+ icon={
83
+ status === 'loading' ? { type: 'spinner' } : { type: 'status', status }
84
+ }
85
+ />
86
+ </div>
87
+ {showFooter ? (
88
+ <div className="prizma-screen-layout__footer">
89
+ <PrizmaTag label={verifiedLabel} />
90
+ </div>
91
+ ) : null}
92
+ </PrizmaScreenShell>
93
+ ),
94
+ );
95
+ PrizmaProcessingScreen.displayName = 'PrizmaProcessingScreen';
96
+
97
+ export default PrizmaProcessingScreen;
@@ -0,0 +1,198 @@
1
+ import React, { forwardRef } from 'react';
2
+ import { PrizmaCardDocumentContainer } from '@incodetech/prizma-core-web/card';
3
+ import { PrizmaCheckbox } from '@incodetech/prizma-core-web/checkbox';
4
+ import { PrizmaButton } from '@incodetech/prizma-core-web/button';
5
+ import { PrizmaFormScreen, type PrizmaFormScreenProps } from './FormScreen';
6
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
7
+ import type {
8
+ QualifiedSignatureAcceptState,
9
+ QualifiedSignatureAcceptVariant,
10
+ QualifiedSignatureStrings,
11
+ QualifiedSignatureTerm,
12
+ } from './QualifiedSignatureStrings';
13
+ import './ScreenLayout.css';
14
+ import './QualifiedSignatureLayout.css';
15
+
16
+ export interface QualifiedSignatureAcceptScreenProps
17
+ extends Omit<
18
+ PrizmaFormScreenProps,
19
+ | 'title'
20
+ | 'subtitle'
21
+ | 'ctaLabel'
22
+ | 'ctaDisabled'
23
+ | 'ctaLoading'
24
+ | 'ctaLoadingLabel'
25
+ | 'linkLabel'
26
+ | 'linkContent'
27
+ | 'verifiedLabel'
28
+ | 'children'
29
+ | 'navLabel'
30
+ > {
31
+ /** Module copy — this screen reads the `accept` slice its `variant` names. */
32
+ strings: QualifiedSignatureStrings;
33
+ /** Which reading of the section to render. Default `accept`. */
34
+ variant?: QualifiedSignatureAcceptVariant;
35
+ /** Which purple state to render. Default `default`. */
36
+ state?: QualifiedSignatureAcceptState;
37
+ /** The consent clauses. Runtime data — the QTSP writes them, not the module. */
38
+ terms: QualifiedSignatureTerm[];
39
+ /** The document being signed, shown in the row above the clauses. Runtime
40
+ * data from the upload step, so it stays out of `strings`. */
41
+ filename?: string;
42
+ screenId?: string;
43
+ overrides?: PrizmaScreenOverrides;
44
+ onAction?: PrizmaScreenActionHandler;
45
+ }
46
+
47
+ /**
48
+ * Qualified Signature — accept the terms and sign, built on the Form archetype
49
+ * (GUIDELINES.md §6-E, `PrizmaFormScreen`).
50
+ *
51
+ * Figma: the purple `QSign.AcceptSign.{default,selectedCheckox,loadingsign}`
52
+ * sections in BOTH parent groups — the generic five-clause reading ("Accept and
53
+ * sign" / "Finish signing") and the partner two-clause one ("Review and sign" /
54
+ * "Sign" + the certificate-application link). Six purple states, one screen:
55
+ * they share an identical skeleton and differ only in clause set, copy, tick
56
+ * state and CTA treatment, which is exactly what §6-E means by "states are
57
+ * separate screens sharing the identical layout".
58
+ *
59
+ * WHY ARCHETYPE E AND NOT G. The middle is a stack of Core `PrizmaCheckbox`
60
+ * CONTROLS — real form inputs the signer must operate before the CTA unlocks —
61
+ * not a card/option list, and the screen's whole point is the three CTA
62
+ * treatments (disabled → enabled → in-flight) that archetype G has no slots for
63
+ * (`PrizmaListScreen` offers neither `ctaDisabled` nor `ctaLoading`; that gap is
64
+ * reported, not worked around). E owns both, plus the `linkContent` slot the
65
+ * partner variant's link needs. Measured, the two archetypes want the same
66
+ * rhythm here anyway: Figma's `middle container` is Title → Spacing/32 → the
67
+ * document row, which is `FormScreen.css`'s title → fields offset to the pixel
68
+ * (DEVIATIONS #PI-2), and the row → clause-stack gap is the field stack's own
69
+ * Spacing/16.
70
+ *
71
+ * Four things are deliberate:
72
+ *
73
+ * 1. The document row is Core's `PrizmaCardDocumentContainer` — the Figma layer
74
+ * is literally an instance of `Card / Document Container`, filename plus a
75
+ * tertiary-link action. Nothing is hand-rolled.
76
+ * 2. Each clause is Core's `PrizmaCheckbox size="L"` (the consent container),
77
+ * fed `segments` so the fourth Incode clause carries BOTH its inline links —
78
+ * "Terms of Use" and "Privacy Policy" — as Core's own `<a>`s. That is the
79
+ * #PI-10 rule (a sentence carrying links is not one button) satisfied by a
80
+ * Core API rather than by the foundation's inline recipe.
81
+ * 3. `loading` greys the clauses through Core's own `disabled` treatment
82
+ * (`Surface/Neutral/50` container + disabled ink + inert links) and swaps the
83
+ * CTA label for Core's spinner via `ctaLoading` — the spinner belongs to the
84
+ * BUTTON, never to a control (DEVIATIONS #PI-5).
85
+ * 4. The partner link rides `linkContent`, not `linkLabel`, so it can grey with
86
+ * the rest of the form on `loading` (archetype E's `linkLabel` has no
87
+ * disabled path) while staying a distinct `secondary` action — the CURP
88
+ * #CURP-2 idiom.
89
+ *
90
+ * The nav draws no close ✕: every purple section in this file puts one at the
91
+ * nav's right, and GUIDELINES §3 stands — the Figma files are the side that is
92
+ * wrong (standing ruling, DEVIATIONS #PI-9).
93
+ */
94
+ export const QualifiedSignatureAcceptScreen = forwardRef<
95
+ HTMLDivElement,
96
+ QualifiedSignatureAcceptScreenProps
97
+ >(
98
+ (
99
+ {
100
+ strings,
101
+ variant = 'accept',
102
+ state = 'default',
103
+ terms,
104
+ filename,
105
+ screenId = `qualified-signature-accept-${variant}-${state}`,
106
+ className,
107
+ overrides,
108
+ onAction,
109
+ ...shell
110
+ },
111
+ ref,
112
+ ) => {
113
+ const copy = variant === 'certificate' ? strings.accept.certificate : strings.accept.accept;
114
+
115
+ // Figma's three states as two axes: whether the clauses are ticked, and
116
+ // whether the signature is being created. `default` leaves the CTA in Core's
117
+ // disabled surface because nothing is accepted yet; `selected` releases it;
118
+ // `loading` makes the whole form inert.
119
+ const busy = state === 'loading';
120
+ const ticked = state !== 'default';
121
+
122
+ return (
123
+ <PrizmaFormScreen
124
+ ref={ref}
125
+ className={['qualified-signature-accept', className].filter(Boolean).join(' ')}
126
+ title={copy.title}
127
+ subtitle={copy.subtitle}
128
+ ctaLabel={copy.ctaLabel}
129
+ ctaDisabled={!ticked}
130
+ ctaLoading={busy}
131
+ ctaLoadingLabel={copy.ctaLoadingLabel}
132
+ /* The clause stack pans inside the column — the archetype owns this now
133
+ (`--scroll`), so the module declares no overflow of its own. #QS-1 */
134
+ scrollFields
135
+ linkContent={
136
+ copy.linkLabel ? (
137
+ <PrizmaButton
138
+ variant="tertiary-link"
139
+ size="L"
140
+ /* Figma greys the link while the signature is created. */
141
+ disabled={busy}
142
+ onClick={() => onAction?.({ type: 'secondary', screenId })}
143
+ >
144
+ {copy.linkLabel}
145
+ </PrizmaButton>
146
+ ) : undefined
147
+ }
148
+ verifiedLabel={strings.verifiedLabel}
149
+ navLabel={strings.navLabel}
150
+ screenId={screenId}
151
+ overrides={overrides}
152
+ onAction={onAction}
153
+ {...shell}
154
+ >
155
+ {filename ? (
156
+ /* `Card / Document Container` — Core's own horizontal filename +
157
+ tertiary-action row. `actionDisabled` follows the clauses and the
158
+ link into Core's disabled treatment on `loading`, so nothing on the
159
+ frame stays tappable while the signature is created (Core gained the
160
+ prop 2026-08-19 for exactly this; the composed Button already had
161
+ the `--prizma-button-tertiary-text-disabled` path, the row just had
162
+ no way to reach it).
163
+
164
+ REPORTED DELTA: the generic `loadingsign` frame REMOVES the "View"
165
+ action outright while the partner's `loading` frame greys it. Two
166
+ Figma readings of one inert state; Core models inert as disabled,
167
+ so both take the greyed treatment and the removal is logged. */
168
+ <PrizmaCardDocumentContainer
169
+ filename={filename}
170
+ actionLabel={strings.accept.viewLabel}
171
+ actionDisabled={busy}
172
+ onAction={() => onAction?.({ type: 'tertiary', screenId })}
173
+ />
174
+ ) : null}
175
+ <div
176
+ className="qualified-signature-terms"
177
+ role="group"
178
+ aria-label={strings.accept.termsLabel}
179
+ >
180
+ {terms.map((term) => (
181
+ <PrizmaCheckbox
182
+ key={term.id}
183
+ size="L"
184
+ name={term.id}
185
+ value={term.id}
186
+ checked={ticked}
187
+ disabled={busy}
188
+ segments={term.segments}
189
+ />
190
+ ))}
191
+ </div>
192
+ </PrizmaFormScreen>
193
+ );
194
+ },
195
+ );
196
+ QualifiedSignatureAcceptScreen.displayName = 'QualifiedSignatureAcceptScreen';
197
+
198
+ export default QualifiedSignatureAcceptScreen;
@@ -0,0 +1,124 @@
1
+ import React, { forwardRef, type ReactNode } from 'react';
2
+ import { PrizmaListScreen, type PrizmaListScreenProps } from './ListScreen';
3
+ import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
4
+ import type {
5
+ QualifiedSignatureDocumentVariant,
6
+ QualifiedSignatureStrings,
7
+ } from './QualifiedSignatureStrings';
8
+ import './ScreenLayout.css';
9
+ import './QualifiedSignatureLayout.css';
10
+
11
+ export interface QualifiedSignatureDocumentScreenProps
12
+ extends Omit<
13
+ PrizmaListScreenProps,
14
+ | 'status'
15
+ | 'title'
16
+ | 'subtitle'
17
+ | 'glyph'
18
+ | 'children'
19
+ | 'listAlign'
20
+ | 'disclaimer'
21
+ | 'ctaLabel'
22
+ | 'secondaryCtaLabel'
23
+ | 'linkLabel'
24
+ | 'verifiedLabel'
25
+ | 'navLabel'
26
+ > {
27
+ /** Module copy — this screen reads the `document` slice its `variant` names. */
28
+ strings: QualifiedSignatureStrings;
29
+ /** Which full-surface document section to render. Default `document`. */
30
+ variant?: QualifiedSignatureDocumentVariant;
31
+ /**
32
+ * The document itself. HOST-supplied content, never module copy — the rendered
33
+ * contract page on `document` (an `<img>` / `<canvas>` of the PDF) and the
34
+ * certificate-application text on `terms`. Same slot contract the capture
35
+ * screens use for `camera` (GUIDELINES §10).
36
+ */
37
+ body?: ReactNode;
38
+ screenId?: string;
39
+ overrides?: PrizmaScreenOverrides;
40
+ onAction?: PrizmaScreenActionHandler;
41
+ }
42
+
43
+ /**
44
+ * Qualified Signature — the two full-surface document screens, built on the List
45
+ * archetype (GUIDELINES.md §6-G, `PrizmaListScreen`).
46
+ *
47
+ * Figma:
48
+ * - `document` — `QSign.AcceptSign.viewdoc` (10196:67381 / the partner's
49
+ * 6120:34074): the contract behind the accept screen's "View" action. CONTENT
50
+ * = nav 8→52 · a 342-wide page filling 68→660 · the Tag at 676.
51
+ * - `terms` — `QSign.T&C` (11130:43690): the certificate application form
52
+ * behind the partner variant's link. A left-aligned heading over a 13 575-tall
53
+ * block of legal text WITH ITS OWN SCROLL INDICATOR — Figma is explicit that
54
+ * this surface scrolls.
55
+ *
56
+ * Archetype G is the fit: its `__list` middle is "content filling the space
57
+ * between the title block and the CTA band", which is exactly what a document
58
+ * page is, and both sections carry no CTA at all so the band never renders. The
59
+ * body is allowed to scroll inside that middle — one module rule RELEASING an
60
+ * overflow constraint, declaring no spacing or size, the same idiom as CURP's
61
+ * taller-than-844 form (DEVIATIONS #CURP-1).
62
+ *
63
+ * THREE deltas from the frames, all reported rather than worked around:
64
+ * 1. Both sections draw a back chevron at the nav's left (and `terms` replaces
65
+ * the logo row with a chevron + heading bar). GUIDELINES §3 stands: SDK
66
+ * screens carry no dismiss or back affordance — the standing ruling of
67
+ * DEVIATIONS #PI-9, which is not re-litigated per module.
68
+ * 2. `viewdoc` draws NO heading. GUIDELINES §4 is explicit that every screen has
69
+ * exactly one H2, and archetype G has no title-less path, so the screen
70
+ * carries one and the Figma frame is the side to change. (An archetype
71
+ * request for an optional title — a pure content viewer — is logged.)
72
+ * 3. `terms` draws neither the logo nor the tag. The owner rule wins over Figma
73
+ * for attribution chrome (#PI-8, #F-30, #F-34), so both variants keep the
74
+ * header and the footer and nothing shifts between states.
75
+ *
76
+ * `terms` is LEFT-aligned, as Figma draws it: a centred heading over a
77
+ * left-aligned wall of legal text reads as a mistake. The alignment rides the
78
+ * sanctioned `overrides.align` path (types.ts) — nothing is re-styled here — and
79
+ * an explicit host override still wins. The #GEO-2 precedent.
80
+ */
81
+ export const QualifiedSignatureDocumentScreen = forwardRef<
82
+ HTMLDivElement,
83
+ QualifiedSignatureDocumentScreenProps
84
+ >(
85
+ (
86
+ {
87
+ strings,
88
+ variant = 'document',
89
+ body,
90
+ screenId = `qualified-signature-document-${variant}`,
91
+ overrides,
92
+ onAction,
93
+ ...shell
94
+ },
95
+ ref,
96
+ ) => {
97
+ const copy = variant === 'terms' ? strings.document.terms : strings.document.document;
98
+
99
+ // The legal wall is left-aligned in Figma; the contract page keeps the
100
+ // archetype's centred default. An explicit `overrides.align` still wins.
101
+ const alignedOverrides: PrizmaScreenOverrides = {
102
+ ...overrides,
103
+ align: overrides?.align ?? (variant === 'terms' ? 'left' : 'centered'),
104
+ };
105
+
106
+ return (
107
+ <PrizmaListScreen
108
+ ref={ref}
109
+ title={copy.title}
110
+ verifiedLabel={strings.verifiedLabel}
111
+ navLabel={strings.navLabel}
112
+ screenId={screenId}
113
+ overrides={alignedOverrides}
114
+ onAction={onAction}
115
+ {...shell}
116
+ >
117
+ <div className="qualified-signature-document">{body}</div>
118
+ </PrizmaListScreen>
119
+ );
120
+ },
121
+ );
122
+ QualifiedSignatureDocumentScreen.displayName = 'QualifiedSignatureDocumentScreen';
123
+
124
+ export default QualifiedSignatureDocumentScreen;
@@ -0,0 +1,206 @@
1
+ /* Qualified Signature — module layout additions.
2
+ *
3
+ * ONLY what the foundation archetypes and Prizma Core do not already own.
4
+ * NOTHING here re-declares an archetype spacing rule: the content column, the
5
+ * 24px gutters, the title → fields Spacing/32 (`FormScreen.css`), the title →
6
+ * list Spacing/24 (`__list`), the review header → stage Spacing/32 and stage →
7
+ * CTA Spacing/24 (`__review-*`), the CTA-band recipe (`__band`, DEVIATIONS #8)
8
+ * and the anchored footer (#F-29) all stay the foundation's.
9
+ *
10
+ * Every rule below is one of exactly three kinds:
11
+ * (a) CONTENT rhythm inside a slot the archetype hands over — the same
12
+ * licence §6-G gives a Core card list ("the list keeps its own row
13
+ * rhythm; the archetype supplies only the offset above it");
14
+ * (b) a RELEASE of a Core/foundation constraint a purple section contradicts
15
+ * — the idiom Phone Input's `width: auto` (#PI-1) and CURP's scrolling
16
+ * field stack (#CURP-1) established;
17
+ * (c) media CONTENT Core has no primitive for, rebuilt from Core's own
18
+ * tokens, with the Core request recorded.
19
+ */
20
+
21
+ /* ── (b) The consent stack is taller than the screen ─────────────────────────
22
+ * `QSign.AcceptSign.default` is a 1156-tall frame (the `selectedCheckox` one is
23
+ * 1160): five consent containers at ~120 each plus the document row push CONTENT
24
+ * far past the 654 a 390×844 reference gives it. Figma lets the page grow and
25
+ * the browser scroll; screens are authored at 390×844 and never reflow
26
+ * (DEVIATIONS #17), and archetype E's `.prizma-form-screen__fields` is
27
+ * `flex: 1; min-height: 0` with NO overflow behaviour — so the surplus is
28
+ * clipped by `ScreenShell`'s `overflow: hidden` and first paints over the CTA.
29
+ *
30
+ * The stack therefore scrolls INSIDE the column: the title, the CTA, the link
31
+ * and the anchored tag hold still while the clauses pan. It adds no padding, no
32
+ * gap and no size of its own. Identical to CURP's `.curp-generate--scroll`
33
+ * (DEVIATIONS #CURP-1) — this is the SECOND module to need it.
34
+ *
35
+ * FOUNDATION REQUEST (restated, now with two consumers): promote this to
36
+ * `FormScreen.css` as a `.prizma-form-screen__fields--scroll` variant driven by
37
+ * a `scrollFields` prop on `PrizmaFormScreen`. Every long-form module left in
38
+ * Wave 3 — eKYC, eKYB, address entry — hits the same wall.
39
+ */
40
+ /* CLOSED: the scroll is now the archetype's `scrollFields` prop
41
+ * (`.prizma-form-screen__fields--scroll` in FormScreen.css), which also gives
42
+ * every row `flex-shrink: 0`. Keeping the rule here re-declared layout in a
43
+ * module file AND missed that fix, which collapsed the document row to 18px and
44
+ * clipped its View button (owner-reported 2026-08-19). DEVIATIONS #QS-1. */
45
+
46
+ /* ── (a) Consent-clause rhythm ───────────────────────────────────────────────
47
+ * Figma stacks the `Checkbox` (size L / Container) instances at Spacing/4
48
+ * inside the accept screen's `bottom container`. Core ships the clause card
49
+ * itself (`PrizmaCheckbox size="L"` — tinted surface, 28px box, inline links)
50
+ * but no group wrapper, so the row rhythm is supplied here, exactly as a
51
+ * `PrizmaCardList` supplies its own. One token, no padding, no size.
52
+ *
53
+ * CORE REQUEST: a consent-group primitive (`PrizmaCheckboxGroup`) would own
54
+ * this gap and the group's `role="group"` naming.
55
+ */
56
+ .qualified-signature-terms {
57
+ display: flex;
58
+ flex-direction: column;
59
+ gap: var(--prizma-spacing-4);
60
+ }
61
+
62
+ /* ── (c) Uploaded-file preview card ──────────────────────────────────────────
63
+ * `QSign.reviewDoc.default`'s `Document Container` — a VERTICAL card holding a
64
+ * page thumbnail over the filename. Core's `PrizmaCardDocumentContainer` shares
65
+ * the Figma name but is the HORIZONTAL filename + action row (used on the accept
66
+ * screen, where it IS the right component). Rebuilt here from the same Card
67
+ * tokens: Surface/Neutral/50 on Border/Neutral/100 at Border/Radius/large,
68
+ * Spacing/32 block + Spacing/24 inline padding, Spacing/24 thumbnail → name.
69
+ *
70
+ * CORE REQUEST (third module to need it — Document Capture's `confirmUpload`
71
+ * has a byte-equivalent copy, DEVIATIONS #DC-27): promote a
72
+ * `PrizmaCardFilePreview`. Two identical hand-builds were already one too many;
73
+ * three is the #DC-29 threshold that got the glyph slot promoted.
74
+ */
75
+ .qualified-signature-file-card {
76
+ display: flex;
77
+ flex-direction: column;
78
+ align-items: center;
79
+ gap: var(--prizma-spacing-24);
80
+ box-sizing: border-box;
81
+ width: 100%;
82
+ padding: var(--prizma-spacing-32) var(--prizma-spacing-24);
83
+ background: var(--prizma-surface-neutral-50);
84
+ border: var(--prizma-border-width-regular) solid var(--prizma-border-neutral-100);
85
+ border-radius: var(--prizma-border-radius-large);
86
+ overflow: hidden;
87
+ }
88
+
89
+ /* Thumbnail — Figma draws `Artboard 1` at 113.25 × 150, a 3:4 page crop. Sized
90
+ * by ratio so it scales with the host and capped at the design width. */
91
+ .qualified-signature-file-card__thumb {
92
+ position: relative;
93
+ flex: none;
94
+ width: 113px; /* hardcoded — Figma page-thumbnail width; absent from the token SOT (same class as DEVIATIONS #DC-27) */
95
+ aspect-ratio: 3 / 4;
96
+ max-width: 100%;
97
+ border: var(--prizma-border-width-regular) solid var(--prizma-border-neutral-100);
98
+ border-radius: var(--prizma-border-radius-small);
99
+ overflow: hidden;
100
+ background: var(--prizma-surface-neutral-0);
101
+ }
102
+
103
+ .qualified-signature-file-card__thumb > img,
104
+ .qualified-signature-file-card__thumb > svg {
105
+ position: absolute;
106
+ inset: 0;
107
+ width: 100%;
108
+ height: 100%;
109
+ object-fit: cover;
110
+ }
111
+
112
+ .qualified-signature-file-card__name {
113
+ margin: 0;
114
+ width: 100%;
115
+ overflow-wrap: break-word;
116
+ text-align: center;
117
+ color: var(--prizma-text-body-800-primary);
118
+ font-family: var(--prizma-headline-family);
119
+ font-size: var(--prizma-headline-h5-font-size);
120
+ font-weight: var(--prizma-headline-h5-font-weight);
121
+ line-height: var(--prizma-headline-h5-line-height);
122
+ letter-spacing: var(--prizma-headline-h5-letter-spacing);
123
+ }
124
+
125
+ /* The card is inset inside the media stage — Figma centres the 246-wide
126
+ * container in the 342 column (48 each side). The spacing scale stops at 40, so
127
+ * the value is DERIVED from Spacing/24 rather than hardcoded. */
128
+ .qualified-signature-review-file {
129
+ padding-inline: calc(var(--prizma-spacing-24) * 2);
130
+ }
131
+
132
+ /* ── (c) Standalone encrypted notice ─────────────────────────────────────────
133
+ * "All data is encrypted" sits beside the file card, not under a capture frame.
134
+ * Core owns that building block ONLY as a private part of `PrizmaIdCapture`, so
135
+ * it is rebuilt from the identical tokens (Spacing/8 block padding, Spacing/4
136
+ * gap, Body/M Regular, Text/Body/800). One literal: the 16px lock clamp —
137
+ * `IconLock` is designed at 24 only and the icon-size axis has no 16, the same
138
+ * clamp Core itself writes in `IdCapture.css`.
139
+ *
140
+ * CORE REQUEST (third consumer, DEVIATIONS #DC-26): extract
141
+ * `PrizmaEncryptedNotice`.
142
+ */
143
+ .qualified-signature-encrypted {
144
+ margin: 0;
145
+ flex-shrink: 0;
146
+ display: flex;
147
+ align-items: center;
148
+ justify-content: center;
149
+ gap: var(--prizma-spacing-4);
150
+ padding-block: var(--prizma-spacing-8);
151
+ color: var(--prizma-text-body-800-primary);
152
+ font-family: var(--prizma-body-family);
153
+ font-size: var(--prizma-body-m-regular-font-size);
154
+ font-weight: var(--prizma-body-m-regular-font-weight);
155
+ line-height: var(--prizma-body-m-regular-line-height);
156
+ letter-spacing: var(--prizma-body-m-regular-letter-spacing);
157
+ }
158
+
159
+ .qualified-signature-encrypted > svg {
160
+ flex: none;
161
+ width: 16px; /* hardcoded — Icon/Lock is designed at 24 only and Figma draws 16; same clamp as Core's .prizma-id-capture__encrypted-icon (DEVIATIONS #DC-26) */
162
+ height: 16px;
163
+ }
164
+
165
+ /* ── (b) The document body scrolls inside the middle ─────────────────────────
166
+ * `QSign.AcceptSign.viewdoc` hands the middle a 592-tall contract page and
167
+ * `QSign.T&C` a 13575-tall block of legal text WITH ITS OWN SCROLL INDICATOR —
168
+ * Figma is explicit that this surface scrolls. Archetype G's `__list` middle
169
+ * flexes but does not scroll, so the body would be clipped by the shell.
170
+ *
171
+ * This releases that one constraint. It declares no padding, no gap and no size:
172
+ * the Spacing/24 above it is still the archetype's, the gutters are still the
173
+ * content column's, and the tag stays anchored. `overscroll-behavior` keeps a
174
+ * flick inside the document instead of panning the host page.
175
+ */
176
+ .qualified-signature-document {
177
+ flex: 1 1 auto;
178
+ min-height: 0;
179
+ width: 100%;
180
+ overflow-y: auto;
181
+ overscroll-behavior: contain;
182
+ }
183
+
184
+ /* The contract page is host-supplied media (an <img> / <canvas> of the rendered
185
+ * PDF, GUIDELINES §10's `cameraSurface` idiom) — it fills the column width and
186
+ * keeps its own aspect. */
187
+ .qualified-signature-document > img,
188
+ .qualified-signature-document > svg {
189
+ display: block;
190
+ width: 100%;
191
+ height: auto;
192
+ }
193
+
194
+ /* Legal body copy inside the `terms` variant. Core has no long-form prose
195
+ * component (Body tokens exist, the block does not), so the paragraph binds the
196
+ * Body/M Regular scale directly — no new size, no new colour. */
197
+ .qualified-signature-document__prose {
198
+ margin: 0;
199
+ color: var(--prizma-text-body-800-primary);
200
+ font-family: var(--prizma-body-family);
201
+ font-size: var(--prizma-body-m-regular-font-size);
202
+ font-weight: var(--prizma-body-m-regular-font-weight);
203
+ line-height: var(--prizma-body-m-regular-line-height);
204
+ letter-spacing: var(--prizma-body-m-regular-letter-spacing);
205
+ text-align: left;
206
+ }