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