@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.
- package/README.md +74 -0
- package/dist/CaptureOverlay.css +55 -0
- package/dist/CaptureOverlay.d.ts +34 -0
- package/dist/CaptureOverlay.js +32 -0
- package/dist/CaptureScreen.d.ts +51 -0
- package/dist/CaptureScreen.js +30 -0
- package/dist/CurpConfirmScreen.d.ts +33 -0
- package/dist/CurpConfirmScreen.js +29 -0
- package/dist/CurpEnterScreen.d.ts +51 -0
- package/dist/CurpEnterScreen.js +77 -0
- package/dist/CurpGenerateScreen.d.ts +47 -0
- package/dist/CurpGenerateScreen.js +57 -0
- package/dist/CurpLayout.css +92 -0
- package/dist/CurpProcessingScreen.d.ts +32 -0
- package/dist/CurpProcessingScreen.js +29 -0
- package/dist/CurpResultScreen.d.ts +37 -0
- package/dist/CurpResultScreen.js +36 -0
- package/dist/CurpStrings.d.ts +170 -0
- package/dist/CurpStrings.js +16 -0
- package/dist/DataSharingConsentConsentScreen.d.ts +73 -0
- package/dist/DataSharingConsentConsentScreen.js +120 -0
- package/dist/DataSharingConsentLayout.css +78 -0
- package/dist/DataSharingConsentStrings.d.ts +96 -0
- package/dist/DataSharingConsentStrings.js +38 -0
- package/dist/DemoScreensEndScreen.d.ts +33 -0
- package/dist/DemoScreensEndScreen.js +27 -0
- package/dist/DemoScreensStrings.d.ts +11 -0
- package/dist/DemoScreensStrings.js +19 -0
- package/dist/DocumentCaptureCaptureScreen.d.ts +53 -0
- package/dist/DocumentCaptureCaptureScreen.js +51 -0
- package/dist/DocumentCaptureCommonIssuesScreen.d.ts +32 -0
- package/dist/DocumentCaptureCommonIssuesScreen.js +45 -0
- package/dist/DocumentCaptureConfirmImageScreen.d.ts +38 -0
- package/dist/DocumentCaptureConfirmImageScreen.js +34 -0
- package/dist/DocumentCaptureConfirmUploadScreen.d.ts +43 -0
- package/dist/DocumentCaptureConfirmUploadScreen.js +29 -0
- package/dist/DocumentCaptureGenericErrorScreen.d.ts +36 -0
- package/dist/DocumentCaptureGenericErrorScreen.js +30 -0
- package/dist/DocumentCaptureIllustration.d.ts +45 -0
- package/dist/DocumentCaptureIllustration.js +7 -0
- package/dist/DocumentCaptureLayout.css +226 -0
- package/dist/DocumentCaptureMethodSelectionScreen.d.ts +45 -0
- package/dist/DocumentCaptureMethodSelectionScreen.js +70 -0
- package/dist/DocumentCaptureNextPageScreen.d.ts +33 -0
- package/dist/DocumentCaptureNextPageScreen.js +28 -0
- package/dist/DocumentCaptureNoConnectionScreen.d.ts +28 -0
- package/dist/DocumentCaptureNoConnectionScreen.js +29 -0
- package/dist/DocumentCaptureStrings.d.ts +158 -0
- package/dist/DocumentCaptureStrings.js +21 -0
- package/dist/DocumentCaptureTutorialScreen.d.ts +36 -0
- package/dist/DocumentCaptureTutorialScreen.js +27 -0
- package/dist/EkybAddressDetailsScreen.d.ts +61 -0
- package/dist/EkybAddressDetailsScreen.js +63 -0
- package/dist/EkybBusinessDetailsScreen.d.ts +55 -0
- package/dist/EkybBusinessDetailsScreen.js +57 -0
- package/dist/EkybCountryScreen.d.ts +52 -0
- package/dist/EkybCountryScreen.js +58 -0
- package/dist/EkybErrorScreen.d.ts +30 -0
- package/dist/EkybErrorScreen.js +24 -0
- package/dist/EkybOwnersScreen.d.ts +73 -0
- package/dist/EkybOwnersScreen.js +87 -0
- package/dist/EkybProcessingScreen.d.ts +28 -0
- package/dist/EkybProcessingScreen.js +22 -0
- package/dist/EkybStrings.d.ts +200 -0
- package/dist/EkybStrings.js +27 -0
- package/dist/EkybSuccessScreen.d.ts +28 -0
- package/dist/EkybSuccessScreen.js +22 -0
- package/dist/EkycDetailsScreen.d.ts +65 -0
- package/dist/EkycDetailsScreen.js +81 -0
- package/dist/EkycErrorScreen.d.ts +32 -0
- package/dist/EkycErrorScreen.js +26 -0
- package/dist/EkycLayout.css +39 -0
- package/dist/EkycLicenseScreen.d.ts +21 -0
- package/dist/EkycLicenseScreen.js +68 -0
- package/dist/EkycProcessingScreen.d.ts +26 -0
- package/dist/EkycProcessingScreen.js +20 -0
- package/dist/EkycStrings.d.ts +112 -0
- package/dist/EkycStrings.js +34 -0
- package/dist/EkycSuccessScreen.d.ts +29 -0
- package/dist/EkycSuccessScreen.js +23 -0
- package/dist/ElectronicSignatureDrawScreen.d.ts +57 -0
- package/dist/ElectronicSignatureDrawScreen.js +53 -0
- package/dist/ElectronicSignatureErrorScreen.d.ts +31 -0
- package/dist/ElectronicSignatureErrorScreen.js +25 -0
- package/dist/ElectronicSignatureLayout.css +80 -0
- package/dist/ElectronicSignatureReviewScreen.d.ts +51 -0
- package/dist/ElectronicSignatureReviewScreen.js +36 -0
- package/dist/ElectronicSignatureStrings.d.ts +50 -0
- package/dist/ElectronicSignatureStrings.js +12 -0
- package/dist/ElectronicSignatureSuccessScreen.d.ts +30 -0
- package/dist/ElectronicSignatureSuccessScreen.js +24 -0
- package/dist/EmailInputErrorScreen.d.ts +34 -0
- package/dist/EmailInputErrorScreen.js +28 -0
- package/dist/EmailInputOtpScreen.d.ts +56 -0
- package/dist/EmailInputOtpScreen.js +82 -0
- package/dist/EmailInputProcessingScreen.d.ts +29 -0
- package/dist/EmailInputProcessingScreen.js +23 -0
- package/dist/EmailInputStrings.d.ts +130 -0
- package/dist/EmailInputStrings.js +19 -0
- package/dist/EmailInputSuccessScreen.d.ts +37 -0
- package/dist/EmailInputSuccessScreen.js +31 -0
- package/dist/EmailInputVerifyScreen.d.ts +46 -0
- package/dist/EmailInputVerifyScreen.js +55 -0
- package/dist/ErrorScreensScreen.d.ts +62 -0
- package/dist/ErrorScreensScreen.js +71 -0
- package/dist/ErrorScreensStrings.d.ts +31 -0
- package/dist/ErrorScreensStrings.js +28 -0
- package/dist/FaceCaptureCapturingScreen.d.ts +32 -0
- package/dist/FaceCaptureCapturingScreen.js +53 -0
- package/dist/FaceCaptureLayout.css +18 -0
- package/dist/FaceCaptureLoadingScreen.d.ts +32 -0
- package/dist/FaceCaptureLoadingScreen.js +30 -0
- package/dist/FaceCaptureManualCaptureScreen.d.ts +32 -0
- package/dist/FaceCaptureManualCaptureScreen.js +27 -0
- package/dist/FaceCaptureNoConnectionScreen.d.ts +30 -0
- package/dist/FaceCaptureNoConnectionScreen.js +31 -0
- package/dist/FaceCaptureResultErrorScreen.d.ts +40 -0
- package/dist/FaceCaptureResultErrorScreen.js +32 -0
- package/dist/FaceCaptureResultSuccessScreen.d.ts +25 -0
- package/dist/FaceCaptureResultSuccessScreen.js +27 -0
- package/dist/FaceCaptureStrings.d.ts +62 -0
- package/dist/FaceCaptureStrings.js +14 -0
- package/dist/FaceCaptureTutorialScreen.d.ts +29 -0
- package/dist/FaceCaptureTutorialScreen.js +20 -0
- package/dist/FaceMatchComparisonCompactScreen.d.ts +26 -0
- package/dist/FaceMatchComparisonCompactScreen.js +24 -0
- package/dist/FaceMatchComparisonScreen.d.ts +80 -0
- package/dist/FaceMatchComparisonScreen.js +81 -0
- package/dist/FaceMatchLayout.css +264 -0
- package/dist/FaceMatchResultScreen.d.ts +50 -0
- package/dist/FaceMatchResultScreen.js +52 -0
- package/dist/FaceMatchStrings.d.ts +66 -0
- package/dist/FaceMatchStrings.js +21 -0
- package/dist/FormScreen.css +78 -0
- package/dist/FormScreen.d.ts +101 -0
- package/dist/FormScreen.js +36 -0
- package/dist/FormsChoiceScreen.d.ts +66 -0
- package/dist/FormsChoiceScreen.js +63 -0
- package/dist/FormsErrorScreen.d.ts +28 -0
- package/dist/FormsErrorScreen.js +22 -0
- package/dist/FormsFieldScreen.d.ts +66 -0
- package/dist/FormsFieldScreen.js +85 -0
- package/dist/FormsLayout.css +45 -0
- package/dist/FormsLongFormScreen.d.ts +70 -0
- package/dist/FormsLongFormScreen.js +149 -0
- package/dist/FormsStrings.d.ts +181 -0
- package/dist/FormsStrings.js +36 -0
- package/dist/FormsSuccessScreen.d.ts +32 -0
- package/dist/FormsSuccessScreen.js +26 -0
- package/dist/GeolocationBrowserStepsScreen.d.ts +56 -0
- package/dist/GeolocationBrowserStepsScreen.js +95 -0
- package/dist/GeolocationErrorScreen.d.ts +43 -0
- package/dist/GeolocationErrorScreen.js +56 -0
- package/dist/GeolocationIntroScreen.d.ts +49 -0
- package/dist/GeolocationIntroScreen.js +38 -0
- package/dist/GeolocationPermissionScreen.d.ts +38 -0
- package/dist/GeolocationPermissionScreen.js +30 -0
- package/dist/GeolocationStrings.d.ts +157 -0
- package/dist/GeolocationStrings.js +28 -0
- package/dist/IdCaptureAgeVerificationScreen.d.ts +25 -0
- package/dist/IdCaptureAgeVerificationScreen.js +38 -0
- package/dist/IdCaptureAnalyzingScreen.d.ts +41 -0
- package/dist/IdCaptureAnalyzingScreen.js +30 -0
- package/dist/IdCaptureCommonIssuesScreen.d.ts +31 -0
- package/dist/IdCaptureCommonIssuesScreen.js +49 -0
- package/dist/IdCaptureDocumentErrorScreen.d.ts +37 -0
- package/dist/IdCaptureDocumentErrorScreen.js +30 -0
- package/dist/IdCaptureDocumentSelectionScreen.d.ts +41 -0
- package/dist/IdCaptureDocumentSelectionScreen.js +49 -0
- package/dist/IdCaptureFlipScreen.d.ts +31 -0
- package/dist/IdCaptureFlipScreen.js +26 -0
- package/dist/IdCaptureHoldOnScreen.d.ts +28 -0
- package/dist/IdCaptureHoldOnScreen.js +22 -0
- package/dist/IdCaptureLayout.css +111 -0
- package/dist/IdCaptureNoConnectionScreen.d.ts +28 -0
- package/dist/IdCaptureNoConnectionScreen.js +29 -0
- package/dist/IdCapturePermissionScreen.d.ts +34 -0
- package/dist/IdCapturePermissionScreen.js +45 -0
- package/dist/IdCaptureResultScreen.d.ts +59 -0
- package/dist/IdCaptureResultScreen.js +89 -0
- package/dist/IdCaptureStageScreen.d.ts +69 -0
- package/dist/IdCaptureStageScreen.js +88 -0
- package/dist/IdCaptureStrings.d.ts +199 -0
- package/dist/IdCaptureStrings.js +15 -0
- package/dist/IdCaptureTutorialScreen.d.ts +36 -0
- package/dist/IdCaptureTutorialScreen.js +30 -0
- package/dist/ListScreen.d.ts +95 -0
- package/dist/ListScreen.js +46 -0
- package/dist/LoaderScreen.d.ts +32 -0
- package/dist/LoaderScreen.js +27 -0
- package/dist/LoadersStrings.d.ts +20 -0
- package/dist/LoadersStrings.js +16 -0
- package/dist/NfcCommonIssuesScreen.d.ts +35 -0
- package/dist/NfcCommonIssuesScreen.js +48 -0
- package/dist/NfcErrorScreen.d.ts +41 -0
- package/dist/NfcErrorScreen.js +27 -0
- package/dist/NfcLayout.css +36 -0
- package/dist/NfcProcessingScreen.d.ts +28 -0
- package/dist/NfcProcessingScreen.js +22 -0
- package/dist/NfcScanningScreen.d.ts +66 -0
- package/dist/NfcScanningScreen.js +61 -0
- package/dist/NfcSettingsScreen.d.ts +53 -0
- package/dist/NfcSettingsScreen.js +57 -0
- package/dist/NfcStrings.d.ts +112 -0
- package/dist/NfcStrings.js +7 -0
- package/dist/NfcSuccessScreen.d.ts +28 -0
- package/dist/NfcSuccessScreen.js +22 -0
- package/dist/NfcSymbolScreen.d.ts +39 -0
- package/dist/NfcSymbolScreen.js +32 -0
- package/dist/NfcTryAgainScreen.d.ts +53 -0
- package/dist/NfcTryAgainScreen.js +45 -0
- package/dist/NfcTutorialScreen.d.ts +33 -0
- package/dist/NfcTutorialScreen.js +24 -0
- package/dist/PermissionsAllowScreen.d.ts +44 -0
- package/dist/PermissionsAllowScreen.js +38 -0
- package/dist/PermissionsBrowserStepsScreen.d.ts +42 -0
- package/dist/PermissionsBrowserStepsScreen.js +86 -0
- package/dist/PermissionsRequiredScreen.d.ts +37 -0
- package/dist/PermissionsRequiredScreen.js +51 -0
- package/dist/PermissionsStrings.d.ts +70 -0
- package/dist/PermissionsStrings.js +36 -0
- package/dist/PhoneInputErrorScreen.d.ts +37 -0
- package/dist/PhoneInputErrorScreen.js +47 -0
- package/dist/PhoneInputLayout.css +61 -0
- package/dist/PhoneInputOtpScreen.d.ts +37 -0
- package/dist/PhoneInputOtpScreen.js +44 -0
- package/dist/PhoneInputSnaLoadingScreen.d.ts +23 -0
- package/dist/PhoneInputSnaLoadingScreen.js +17 -0
- package/dist/PhoneInputStrings.d.ts +121 -0
- package/dist/PhoneInputStrings.js +13 -0
- package/dist/PhoneInputSuccessScreen.d.ts +23 -0
- package/dist/PhoneInputSuccessScreen.js +17 -0
- package/dist/PhoneInputVerifyScreen.d.ts +41 -0
- package/dist/PhoneInputVerifyScreen.js +71 -0
- package/dist/ProcessingScreen.d.ts +42 -0
- package/dist/ProcessingScreen.js +21 -0
- package/dist/QualifiedSignatureAcceptScreen.d.ts +71 -0
- package/dist/QualifiedSignatureAcceptScreen.js +86 -0
- package/dist/QualifiedSignatureDocumentScreen.d.ts +62 -0
- package/dist/QualifiedSignatureDocumentScreen.js +56 -0
- package/dist/QualifiedSignatureLayout.css +206 -0
- package/dist/QualifiedSignatureProcessingScreen.d.ts +46 -0
- package/dist/QualifiedSignatureProcessingScreen.js +48 -0
- package/dist/QualifiedSignatureResultScreen.d.ts +65 -0
- package/dist/QualifiedSignatureResultScreen.js +76 -0
- package/dist/QualifiedSignatureReviewScreen.d.ts +49 -0
- package/dist/QualifiedSignatureReviewScreen.js +40 -0
- package/dist/QualifiedSignatureStrings.d.ts +222 -0
- package/dist/QualifiedSignatureStrings.js +25 -0
- package/dist/QualifiedSignatureUploadScreen.d.ts +42 -0
- package/dist/QualifiedSignatureUploadScreen.js +35 -0
- package/dist/ResultScreen.d.ts +93 -0
- package/dist/ResultScreen.js +37 -0
- package/dist/ReviewScreen.d.ts +81 -0
- package/dist/ReviewScreen.js +56 -0
- package/dist/ScreenLayout.css +469 -0
- package/dist/ScreenNav.css +43 -0
- package/dist/ScreenNav.d.ts +26 -0
- package/dist/ScreenNav.js +13 -0
- package/dist/ScreenShell.css +130 -0
- package/dist/ScreenShell.d.ts +45 -0
- package/dist/ScreenShell.js +22 -0
- package/dist/TutorialScreen.d.ts +70 -0
- package/dist/TutorialScreen.js +24 -0
- package/dist/VideoSelfieCameraStepsScreen.d.ts +47 -0
- package/dist/VideoSelfieCameraStepsScreen.js +56 -0
- package/dist/VideoSelfieErrorScreen.d.ts +63 -0
- package/dist/VideoSelfieErrorScreen.js +94 -0
- package/dist/VideoSelfieFlipCameraScreen.d.ts +34 -0
- package/dist/VideoSelfieFlipCameraScreen.js +38 -0
- package/dist/VideoSelfieFlipIdScreen.d.ts +34 -0
- package/dist/VideoSelfieFlipIdScreen.js +29 -0
- package/dist/VideoSelfieIdCaptureScreen.d.ts +75 -0
- package/dist/VideoSelfieIdCaptureScreen.js +86 -0
- package/dist/VideoSelfieLayout.css +259 -0
- package/dist/VideoSelfiePermissionRequiredScreen.d.ts +35 -0
- package/dist/VideoSelfiePermissionRequiredScreen.js +45 -0
- package/dist/VideoSelfiePermissionScreen.d.ts +51 -0
- package/dist/VideoSelfiePermissionScreen.js +44 -0
- package/dist/VideoSelfieProcessingScreen.d.ts +28 -0
- package/dist/VideoSelfieProcessingScreen.js +22 -0
- package/dist/VideoSelfieRetryScreen.d.ts +31 -0
- package/dist/VideoSelfieRetryScreen.js +32 -0
- package/dist/VideoSelfieSelfieCaptureScreen.d.ts +52 -0
- package/dist/VideoSelfieSelfieCaptureScreen.js +58 -0
- package/dist/VideoSelfieSpeakScreen.d.ts +64 -0
- package/dist/VideoSelfieSpeakScreen.js +95 -0
- package/dist/VideoSelfieStrings.d.ts +196 -0
- package/dist/VideoSelfieStrings.js +14 -0
- package/dist/VideoSelfieSuccessScreen.d.ts +25 -0
- package/dist/VideoSelfieSuccessScreen.js +19 -0
- package/dist/VideoSelfieTutorialScreen.d.ts +33 -0
- package/dist/VideoSelfieTutorialScreen.js +41 -0
- package/dist/ViewfinderScreen.css +107 -0
- package/dist/ViewfinderScreen.d.ts +40 -0
- package/dist/ViewfinderScreen.js +26 -0
- package/dist/WatchlistBusinessFormScreen.d.ts +61 -0
- package/dist/WatchlistBusinessFormScreen.js +85 -0
- package/dist/WatchlistBusinessProcessingScreen.d.ts +25 -0
- package/dist/WatchlistBusinessProcessingScreen.js +19 -0
- package/dist/WatchlistBusinessStrings.d.ts +95 -0
- package/dist/WatchlistBusinessStrings.js +19 -0
- package/dist/WatchlistBusinessSuccessScreen.d.ts +29 -0
- package/dist/WatchlistBusinessSuccessScreen.js +23 -0
- package/dist/flows.d.ts +216 -0
- package/dist/flows.js +516 -0
- package/dist/index.d.ts +145 -0
- package/dist/index.js +130 -0
- package/dist/styles.css +33 -0
- package/dist/types.d.ts +56 -0
- package/dist/types.js +8 -0
- package/package.json +689 -0
- package/samples/camera-surface.png +0 -0
- package/samples/document-still.png +0 -0
- package/samples/document-thumbnail.png +0 -0
- package/samples/face-match-bottom.png +0 -0
- package/samples/face-match-left.png +0 -0
- package/samples/face-match-right.png +0 -0
- package/samples/id-back-blur.png +0 -0
- package/samples/id-back-dark.png +0 -0
- package/samples/id-back-glare.png +0 -0
- package/samples/id-back.png +0 -0
- package/samples/id-front-blur.png +0 -0
- package/samples/id-front-dark.png +0 -0
- package/samples/id-front-glare.png +0 -0
- package/samples/id-front.png +0 -0
- package/samples/id-passport.png +0 -0
- package/samples/selfie-glasses.png +0 -0
- package/samples/selfie-hat.png +0 -0
- package/samples/selfie-mask.png +0 -0
- package/samples/selfie.png +0 -0
- package/samples/video-selfie-camera.png +0 -0
- package/src/CaptureOverlay.css +55 -0
- package/src/CaptureOverlay.tsx +56 -0
- package/src/CaptureScreen.tsx +121 -0
- package/src/CurpConfirmScreen.tsx +75 -0
- package/src/CurpEnterScreen.tsx +149 -0
- package/src/CurpGenerateScreen.tsx +172 -0
- package/src/CurpLayout.css +92 -0
- package/src/CurpProcessingScreen.tsx +75 -0
- package/src/CurpResultScreen.tsx +80 -0
- package/src/CurpStrings.ts +178 -0
- package/src/DataSharingConsentConsentScreen.tsx +223 -0
- package/src/DataSharingConsentLayout.css +78 -0
- package/src/DataSharingConsentStrings.ts +144 -0
- package/src/DemoScreensEndScreen.tsx +56 -0
- package/src/DemoScreensStrings.ts +31 -0
- package/src/DocumentCaptureCaptureScreen.tsx +135 -0
- package/src/DocumentCaptureCommonIssuesScreen.tsx +97 -0
- package/src/DocumentCaptureConfirmImageScreen.tsx +112 -0
- package/src/DocumentCaptureConfirmUploadScreen.tsx +113 -0
- package/src/DocumentCaptureGenericErrorScreen.tsx +82 -0
- package/src/DocumentCaptureIllustration.tsx +153 -0
- package/src/DocumentCaptureLayout.css +226 -0
- package/src/DocumentCaptureMethodSelectionScreen.tsx +151 -0
- package/src/DocumentCaptureNextPageScreen.tsx +82 -0
- package/src/DocumentCaptureNoConnectionScreen.tsx +77 -0
- package/src/DocumentCaptureStrings.ts +192 -0
- package/src/DocumentCaptureTutorialScreen.tsx +79 -0
- package/src/EkybAddressDetailsScreen.tsx +200 -0
- package/src/EkybBusinessDetailsScreen.tsx +147 -0
- package/src/EkybCountryScreen.tsx +124 -0
- package/src/EkybErrorScreen.tsx +61 -0
- package/src/EkybOwnersScreen.tsx +230 -0
- package/src/EkybProcessingScreen.tsx +57 -0
- package/src/EkybStrings.ts +239 -0
- package/src/EkybSuccessScreen.tsx +54 -0
- package/src/EkycDetailsScreen.tsx +178 -0
- package/src/EkycErrorScreen.tsx +64 -0
- package/src/EkycLayout.css +39 -0
- package/src/EkycLicenseScreen.tsx +164 -0
- package/src/EkycProcessingScreen.tsx +60 -0
- package/src/EkycStrings.ts +157 -0
- package/src/EkycSuccessScreen.tsx +63 -0
- package/src/ElectronicSignatureDrawScreen.tsx +127 -0
- package/src/ElectronicSignatureErrorScreen.tsx +74 -0
- package/src/ElectronicSignatureLayout.css +80 -0
- package/src/ElectronicSignatureReviewScreen.tsx +106 -0
- package/src/ElectronicSignatureStrings.ts +67 -0
- package/src/ElectronicSignatureSuccessScreen.tsx +67 -0
- package/src/EmailInputErrorScreen.tsx +67 -0
- package/src/EmailInputOtpScreen.tsx +169 -0
- package/src/EmailInputProcessingScreen.tsx +67 -0
- package/src/EmailInputStrings.ts +166 -0
- package/src/EmailInputSuccessScreen.tsx +72 -0
- package/src/EmailInputVerifyScreen.tsx +117 -0
- package/src/ErrorScreensScreen.tsx +149 -0
- package/src/ErrorScreensStrings.ts +66 -0
- package/src/FaceCaptureCapturingScreen.tsx +99 -0
- package/src/FaceCaptureLayout.css +18 -0
- package/src/FaceCaptureLoadingScreen.tsx +65 -0
- package/src/FaceCaptureManualCaptureScreen.tsx +94 -0
- package/src/FaceCaptureNoConnectionScreen.tsx +73 -0
- package/src/FaceCaptureResultErrorScreen.tsx +86 -0
- package/src/FaceCaptureResultSuccessScreen.tsx +49 -0
- package/src/FaceCaptureStrings.ts +92 -0
- package/src/FaceCaptureTutorialScreen.tsx +77 -0
- package/src/FaceMatchComparisonCompactScreen.tsx +51 -0
- package/src/FaceMatchComparisonScreen.tsx +201 -0
- package/src/FaceMatchLayout.css +264 -0
- package/src/FaceMatchResultScreen.tsx +117 -0
- package/src/FaceMatchStrings.ts +95 -0
- package/src/FormScreen.css +78 -0
- package/src/FormScreen.tsx +213 -0
- package/src/FormsChoiceScreen.tsx +150 -0
- package/src/FormsErrorScreen.tsx +61 -0
- package/src/FormsFieldScreen.tsx +198 -0
- package/src/FormsLayout.css +45 -0
- package/src/FormsLongFormScreen.tsx +295 -0
- package/src/FormsStrings.ts +243 -0
- package/src/FormsSuccessScreen.tsx +67 -0
- package/src/GeolocationBrowserStepsScreen.tsx +173 -0
- package/src/GeolocationErrorScreen.tsx +113 -0
- package/src/GeolocationIntroScreen.tsx +100 -0
- package/src/GeolocationPermissionScreen.tsx +88 -0
- package/src/GeolocationStrings.ts +193 -0
- package/src/IdCaptureAgeVerificationScreen.tsx +84 -0
- package/src/IdCaptureAnalyzingScreen.tsx +94 -0
- package/src/IdCaptureCommonIssuesScreen.tsx +109 -0
- package/src/IdCaptureDocumentErrorScreen.tsx +92 -0
- package/src/IdCaptureDocumentSelectionScreen.tsx +100 -0
- package/src/IdCaptureFlipScreen.tsx +66 -0
- package/src/IdCaptureHoldOnScreen.tsx +51 -0
- package/src/IdCaptureLayout.css +111 -0
- package/src/IdCaptureNoConnectionScreen.tsx +68 -0
- package/src/IdCapturePermissionScreen.tsx +102 -0
- package/src/IdCaptureResultScreen.tsx +197 -0
- package/src/IdCaptureStageScreen.tsx +241 -0
- package/src/IdCaptureStrings.ts +228 -0
- package/src/IdCaptureTutorialScreen.tsx +99 -0
- package/src/ListScreen.tsx +213 -0
- package/src/LoaderScreen.tsx +69 -0
- package/src/LoadersStrings.ts +38 -0
- package/src/NfcCommonIssuesScreen.tsx +104 -0
- package/src/NfcErrorScreen.tsx +83 -0
- package/src/NfcLayout.css +36 -0
- package/src/NfcProcessingScreen.tsx +57 -0
- package/src/NfcScanningScreen.tsx +127 -0
- package/src/NfcSettingsScreen.tsx +124 -0
- package/src/NfcStrings.ts +127 -0
- package/src/NfcSuccessScreen.tsx +56 -0
- package/src/NfcSymbolScreen.tsx +85 -0
- package/src/NfcTryAgainScreen.tsx +114 -0
- package/src/NfcTutorialScreen.tsx +76 -0
- package/src/PermissionsAllowScreen.tsx +90 -0
- package/src/PermissionsBrowserStepsScreen.tsx +158 -0
- package/src/PermissionsRequiredScreen.tsx +118 -0
- package/src/PermissionsStrings.ts +129 -0
- package/src/PhoneInputErrorScreen.tsx +104 -0
- package/src/PhoneInputLayout.css +61 -0
- package/src/PhoneInputOtpScreen.tsx +126 -0
- package/src/PhoneInputSnaLoadingScreen.tsx +61 -0
- package/src/PhoneInputStrings.ts +136 -0
- package/src/PhoneInputSuccessScreen.tsx +56 -0
- package/src/PhoneInputVerifyScreen.tsx +153 -0
- package/src/ProcessingScreen.tsx +97 -0
- package/src/QualifiedSignatureAcceptScreen.tsx +198 -0
- package/src/QualifiedSignatureDocumentScreen.tsx +124 -0
- package/src/QualifiedSignatureLayout.css +206 -0
- package/src/QualifiedSignatureProcessingScreen.tsx +112 -0
- package/src/QualifiedSignatureResultScreen.tsx +146 -0
- package/src/QualifiedSignatureReviewScreen.tsx +113 -0
- package/src/QualifiedSignatureStrings.ts +256 -0
- package/src/QualifiedSignatureUploadScreen.tsx +81 -0
- package/src/ResultScreen.tsx +211 -0
- package/src/ReviewScreen.tsx +196 -0
- package/src/ScreenLayout.css +469 -0
- package/src/ScreenNav.css +43 -0
- package/src/ScreenNav.tsx +46 -0
- package/src/ScreenShell.css +130 -0
- package/src/ScreenShell.tsx +66 -0
- package/src/TutorialScreen.tsx +166 -0
- package/src/VideoSelfieCameraStepsScreen.tsx +145 -0
- package/src/VideoSelfieErrorScreen.tsx +168 -0
- package/src/VideoSelfieFlipCameraScreen.tsx +88 -0
- package/src/VideoSelfieFlipIdScreen.tsx +74 -0
- package/src/VideoSelfieIdCaptureScreen.tsx +213 -0
- package/src/VideoSelfieLayout.css +259 -0
- package/src/VideoSelfiePermissionRequiredScreen.tsx +104 -0
- package/src/VideoSelfiePermissionScreen.tsx +102 -0
- package/src/VideoSelfieProcessingScreen.tsx +68 -0
- package/src/VideoSelfieRetryScreen.tsx +92 -0
- package/src/VideoSelfieSelfieCaptureScreen.tsx +122 -0
- package/src/VideoSelfieSpeakScreen.tsx +237 -0
- package/src/VideoSelfieStrings.ts +222 -0
- package/src/VideoSelfieSuccessScreen.tsx +64 -0
- package/src/VideoSelfieTutorialScreen.tsx +129 -0
- package/src/ViewfinderScreen.css +107 -0
- package/src/ViewfinderScreen.tsx +113 -0
- package/src/WatchlistBusinessFormScreen.tsx +176 -0
- package/src/WatchlistBusinessProcessingScreen.tsx +63 -0
- package/src/WatchlistBusinessStrings.ts +121 -0
- package/src/WatchlistBusinessSuccessScreen.tsx +67 -0
- package/src/flows.ts +711 -0
- package/src/index.ts +591 -0
- package/src/styles.css +33 -0
- 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
|
+
}
|