@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,81 @@
|
|
|
1
|
+
import React, { forwardRef, type ReactNode } from 'react';
|
|
2
|
+
import { PrizmaTutorialScreen, type PrizmaTutorialScreenProps } from './TutorialScreen';
|
|
3
|
+
import { DocumentCaptureIllustration } from './DocumentCaptureIllustration';
|
|
4
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
5
|
+
import type { QualifiedSignatureStrings } from './QualifiedSignatureStrings';
|
|
6
|
+
import './ScreenLayout.css';
|
|
7
|
+
|
|
8
|
+
export interface QualifiedSignatureUploadScreenProps
|
|
9
|
+
extends Omit<
|
|
10
|
+
PrizmaTutorialScreenProps,
|
|
11
|
+
'title' | 'subtitle' | 'disclaimer' | 'ctaLabel' | 'verifiedLabel' | 'navLabel'
|
|
12
|
+
> {
|
|
13
|
+
/** Module copy — this screen reads the `upload` slice. */
|
|
14
|
+
strings: QualifiedSignatureStrings;
|
|
15
|
+
/** Replace the document illustration (a host may ship its own artwork). */
|
|
16
|
+
illustration?: ReactNode;
|
|
17
|
+
screenId?: string;
|
|
18
|
+
overrides?: PrizmaScreenOverrides;
|
|
19
|
+
onAction?: PrizmaScreenActionHandler;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Qualified Signature — the intro that asks for the file, built on the Tutorial
|
|
24
|
+
* archetype (GUIDELINES.md §6-A, `PrizmaTutorialScreen`).
|
|
25
|
+
*
|
|
26
|
+
* Figma: purple section `QSign.upload.default` (10196:67095). Measured off the
|
|
27
|
+
* 390 frame (CONTENT 654, `top container` 342×127): nav 8→52 · Title 68→127
|
|
28
|
+
* (nav + Spacing/24) · `illustration container` flexes · `Call to Actions`
|
|
29
|
+
* 536→638 = the primary + the Tag. Exactly the archetype's own rhythm, so this
|
|
30
|
+
* file declares no layout.
|
|
31
|
+
*
|
|
32
|
+
* The illustration is `DocumentCaptureIllustration` — NOT a fourth inline copy
|
|
33
|
+
* of the same artwork. The Figma `Illustrations` frame here is 310.47 × 325 and
|
|
34
|
+
* Document Capture's is 342 × 358: the SAME ratio to five decimals (0.90775),
|
|
35
|
+
* with the same three layers (halo ellipse `bg` · `documents` page · the
|
|
36
|
+
* `frame-border` outline), i.e. one asset drawn at two scales. Core still ships
|
|
37
|
+
* no document illustration, so the standing request stands — DEVIATIONS #DC-21
|
|
38
|
+
* asked to promote it to `PrizmaIllustrationDocument`; a second module now
|
|
39
|
+
* depends on a Document-Capture-named export, which is the strongest argument
|
|
40
|
+
* yet for the promotion.
|
|
41
|
+
*
|
|
42
|
+
* `QSign.upload.select` (10196:67173), the section between this screen and the
|
|
43
|
+
* review, is the **iOS Files app** — OS chrome, not a Prizma surface. Not built,
|
|
44
|
+
* for the reason DEVIATIONS #DC-20 settled: a screen composed only of Core
|
|
45
|
+
* components cannot render OS chrome, and faking it would ship a fake system UI.
|
|
46
|
+
* A host that needs the picker calls the platform API.
|
|
47
|
+
*/
|
|
48
|
+
export const QualifiedSignatureUploadScreen = forwardRef<
|
|
49
|
+
HTMLDivElement,
|
|
50
|
+
QualifiedSignatureUploadScreenProps
|
|
51
|
+
>(
|
|
52
|
+
(
|
|
53
|
+
{
|
|
54
|
+
strings,
|
|
55
|
+
illustration,
|
|
56
|
+
screenId = 'qualified-signature-upload',
|
|
57
|
+
overrides,
|
|
58
|
+
onAction,
|
|
59
|
+
...shell
|
|
60
|
+
},
|
|
61
|
+
ref,
|
|
62
|
+
) => (
|
|
63
|
+
<PrizmaTutorialScreen
|
|
64
|
+
ref={ref}
|
|
65
|
+
title={strings.upload.title}
|
|
66
|
+
subtitle={strings.upload.subtitle}
|
|
67
|
+
disclaimer={strings.upload.disclaimer}
|
|
68
|
+
ctaLabel={strings.upload.ctaLabel}
|
|
69
|
+
illustration={illustration ?? <DocumentCaptureIllustration />}
|
|
70
|
+
verifiedLabel={strings.verifiedLabel}
|
|
71
|
+
navLabel={strings.navLabel}
|
|
72
|
+
screenId={screenId}
|
|
73
|
+
overrides={overrides}
|
|
74
|
+
onAction={onAction}
|
|
75
|
+
{...shell}
|
|
76
|
+
/>
|
|
77
|
+
),
|
|
78
|
+
);
|
|
79
|
+
QualifiedSignatureUploadScreen.displayName = 'QualifiedSignatureUploadScreen';
|
|
80
|
+
|
|
81
|
+
export default QualifiedSignatureUploadScreen;
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import React, { forwardRef, type ReactNode } from 'react';
|
|
2
|
+
import { PrizmaTitle } from '@incodetech/prizma-core-web/title';
|
|
3
|
+
import { PrizmaButton } from '@incodetech/prizma-core-web/button';
|
|
4
|
+
import { PrizmaDisclaimer } from '@incodetech/prizma-core-web/disclaimer';
|
|
5
|
+
import { PrizmaTag } from '@incodetech/prizma-core-web/tag';
|
|
6
|
+
import { PrizmaScreenShell, type PrizmaScreenShellProps } from './ScreenShell';
|
|
7
|
+
import { PrizmaScreenNav } from './ScreenNav';
|
|
8
|
+
import type {
|
|
9
|
+
PrizmaScreenActionHandler,
|
|
10
|
+
PrizmaScreenChromeProps,
|
|
11
|
+
PrizmaScreenOverrides,
|
|
12
|
+
} from './types';
|
|
13
|
+
import './ScreenLayout.css';
|
|
14
|
+
|
|
15
|
+
/** `loading` renders Core's spinner slot; the verdicts render its status mark. */
|
|
16
|
+
export type PrizmaResultStatus = 'loading' | 'success' | 'error' | 'warning' | 'none';
|
|
17
|
+
|
|
18
|
+
export interface PrizmaResultScreenProps
|
|
19
|
+
extends Omit<PrizmaScreenShellProps, 'dark' | 'title' | 'children'>,
|
|
20
|
+
PrizmaScreenChromeProps {
|
|
21
|
+
/** The status mark above the title. `none` renders the title alone. */
|
|
22
|
+
status?: PrizmaResultStatus;
|
|
23
|
+
/**
|
|
24
|
+
* An optional block between the logo nav and the content — a journey stepper.
|
|
25
|
+
* Video Selfie draws Core's `PrizmaStepper` on EVERY screen of the flow, not
|
|
26
|
+
* just its camera stages, and it is the only chrome that tells the steps
|
|
27
|
+
* apart; the archetypes had a slot on E alone, so the rest of the module shed
|
|
28
|
+
* it (owner-reported 2026-08-19). Takes a `ReactNode` so the module supplies
|
|
29
|
+
* Core's own component — no primitive invented, and both offsets live once in
|
|
30
|
+
* `ScreenLayout.css` (`.prizma-screen-layout__progress`). Omit it and nothing
|
|
31
|
+
* renders, so every existing consumer is byte-identical. DEVIATIONS #VS-4.
|
|
32
|
+
*/
|
|
33
|
+
progress?: ReactNode;
|
|
34
|
+
/** H2 result line ("Verification complete", "Face not aligned"). */
|
|
35
|
+
title: string;
|
|
36
|
+
/** Supporting copy below the title. */
|
|
37
|
+
subtitle?: string;
|
|
38
|
+
/**
|
|
39
|
+
* A non-status glyph ABOVE the title — Core's `PrizmaTitle.icon` allowlist is
|
|
40
|
+
* `status | spinner | none`, so anything else (a Wi-Fi mark on a connectivity
|
|
41
|
+
* error) is composed here rather than forced into the slot. DEVIATIONS #10.
|
|
42
|
+
*/
|
|
43
|
+
glyph?: ReactNode;
|
|
44
|
+
/**
|
|
45
|
+
* Anything between the title block and the CTA band: a verdict Snackbar
|
|
46
|
+
* (Face Match), the captured document still (ID Capture), a hint list. Kept as
|
|
47
|
+
* a slot so one template covers every module's result screen instead of each
|
|
48
|
+
* hand-building the same skeleton.
|
|
49
|
+
*/
|
|
50
|
+
children?: ReactNode;
|
|
51
|
+
/**
|
|
52
|
+
* Content that belongs INSIDE the CTA band, above the buttons — Face Match's
|
|
53
|
+
* verdict Snackbar sits there in Figma (Spacing/32 above the CTA, reached as
|
|
54
|
+
* the band's own 16 plus the slot's 16). Distinct from `children`, which sits
|
|
55
|
+
* with the centered title block.
|
|
56
|
+
*/
|
|
57
|
+
bandContent?: ReactNode;
|
|
58
|
+
/**
|
|
59
|
+
* How the two CTAs sit. `stacked` (default) puts the secondary above the
|
|
60
|
+
* primary; `row` pairs them side by side, which is what ID Capture's review
|
|
61
|
+
* screen draws (Retake | Continue, ~166/163 in a 342 column).
|
|
62
|
+
*/
|
|
63
|
+
ctaOrientation?: 'stacked' | 'row';
|
|
64
|
+
/** Legal/hint copy directly above the CTA. Supplies the designed 28px
|
|
65
|
+
* text→CTA gap through its own padding (DEVIATIONS #8). */
|
|
66
|
+
disclaimer?: string;
|
|
67
|
+
/** Primary CTA. Omit for result screens that only report. */
|
|
68
|
+
ctaLabel?: string;
|
|
69
|
+
/** Secondary CTA rendered BELOW the primary (#GEO-1). */
|
|
70
|
+
secondaryCtaLabel?: string;
|
|
71
|
+
/**
|
|
72
|
+
* A tertiary underlined LINK, rendered BELOW the button stack — the position
|
|
73
|
+
* archetype A uses. Video Selfie's `14.3`/`14.4` draw "Retry" first with
|
|
74
|
+
* "Quit process" underneath; with no slot here the module had to borrow
|
|
75
|
+
* `bandContent`, which renders ABOVE the buttons and put the link on the
|
|
76
|
+
* wrong side (owner QA 2026-08-19). `bandContent` returns to its intended
|
|
77
|
+
* job (Face Match's verdict Snackbar). DEVIATIONS #VS-17.
|
|
78
|
+
*/
|
|
79
|
+
linkLabel?: string;
|
|
80
|
+
/** "verified by" attribution copy for the footer tag. */
|
|
81
|
+
verifiedLabel: string;
|
|
82
|
+
navLabel?: string;
|
|
83
|
+
screenId?: string;
|
|
84
|
+
overrides?: PrizmaScreenOverrides;
|
|
85
|
+
onAction?: PrizmaScreenActionHandler;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Archetype F — Result.
|
|
90
|
+
*
|
|
91
|
+
* The "centered status + CTA band + tag" recipe. It exists because three
|
|
92
|
+
* modules hand-built it independently — `FaceCaptureResultErrorScreen` (100
|
|
93
|
+
* lines), `FaceMatchResultScreen` (143) and `IdCaptureResultScreen` (198) —
|
|
94
|
+
* each differing only in what sat between the title and the CTA. Every
|
|
95
|
+
* hand-build was a fresh chance to get the spacing subtly wrong, which is
|
|
96
|
+
* exactly how the tag ended up at 0 on some screens and 16 on others.
|
|
97
|
+
*
|
|
98
|
+
* Layout: nav (or reserved row) → vertically centered title block → optional
|
|
99
|
+
* slot → CTA band (secondary, primary, disclaimer at a flat Spacing/16) →
|
|
100
|
+
* anchored footer tag. Every offset comes from ScreenLayout.css; this file
|
|
101
|
+
* declares none of its own.
|
|
102
|
+
*
|
|
103
|
+
* `ProcessingScreen` stays the pure spinner/no-CTA case; reach for this one as
|
|
104
|
+
* soon as a result screen needs a button.
|
|
105
|
+
*/
|
|
106
|
+
export const PrizmaResultScreen = forwardRef<HTMLDivElement, PrizmaResultScreenProps>(
|
|
107
|
+
(
|
|
108
|
+
{
|
|
109
|
+
progress,
|
|
110
|
+
status = 'none',
|
|
111
|
+
title,
|
|
112
|
+
subtitle,
|
|
113
|
+
glyph,
|
|
114
|
+
children,
|
|
115
|
+
bandContent,
|
|
116
|
+
disclaimer,
|
|
117
|
+
ctaOrientation = 'stacked',
|
|
118
|
+
ctaLabel,
|
|
119
|
+
secondaryCtaLabel,
|
|
120
|
+
linkLabel,
|
|
121
|
+
verifiedLabel,
|
|
122
|
+
navLabel,
|
|
123
|
+
screenId,
|
|
124
|
+
showHeader = true,
|
|
125
|
+
showFooter = true,
|
|
126
|
+
overrides,
|
|
127
|
+
onAction,
|
|
128
|
+
...shell
|
|
129
|
+
},
|
|
130
|
+
ref,
|
|
131
|
+
) => (
|
|
132
|
+
<PrizmaScreenShell ref={ref} {...shell}>
|
|
133
|
+
<PrizmaScreenNav reserved={!showHeader} logo={overrides?.logo} navLabel={navLabel} />
|
|
134
|
+
{progress ? (
|
|
135
|
+
<div className="prizma-screen-layout__progress">{progress}</div>
|
|
136
|
+
) : null}
|
|
137
|
+
<div className="prizma-screen-layout__content prizma-screen-layout__content--centered">
|
|
138
|
+
{glyph}
|
|
139
|
+
<PrizmaTitle
|
|
140
|
+
variant={overrides?.align === 'left' ? 'left' : 'centered'}
|
|
141
|
+
title={title}
|
|
142
|
+
showSubtitle={Boolean(subtitle)}
|
|
143
|
+
subtitle={subtitle}
|
|
144
|
+
icon={
|
|
145
|
+
status === 'loading'
|
|
146
|
+
? { type: 'spinner' }
|
|
147
|
+
: status === 'none'
|
|
148
|
+
? { type: 'none' }
|
|
149
|
+
: { type: 'status', status }
|
|
150
|
+
}
|
|
151
|
+
/>
|
|
152
|
+
{children}
|
|
153
|
+
</div>
|
|
154
|
+
{ctaLabel || secondaryCtaLabel || linkLabel || disclaimer || bandContent ? (
|
|
155
|
+
<div className="prizma-screen-layout__band prizma-screen-layout__band--result">
|
|
156
|
+
{bandContent ? (
|
|
157
|
+
<div className="prizma-screen-layout__band__content">{bandContent}</div>
|
|
158
|
+
) : null}
|
|
159
|
+
{disclaimer ? <PrizmaDisclaimer text={disclaimer} /> : null}
|
|
160
|
+
<div
|
|
161
|
+
className={
|
|
162
|
+
ctaOrientation === 'row'
|
|
163
|
+
? 'prizma-screen-layout__band__ctas prizma-screen-layout__band__ctas--row'
|
|
164
|
+
: 'prizma-screen-layout__band__ctas'
|
|
165
|
+
}
|
|
166
|
+
>
|
|
167
|
+
{/* THE PRIMARY ALWAYS SITS ABOVE THE SECONDARY (owner rule
|
|
168
|
+
2026-08-19, DEVIATIONS #GEO-1). Not a per-screen choice and not
|
|
169
|
+
a prop — a screen never picks its own button order. `row` pairs
|
|
170
|
+
them side by side instead, where the rule does not apply. */}
|
|
171
|
+
{ctaLabel ? (
|
|
172
|
+
<PrizmaButton
|
|
173
|
+
variant="primary"
|
|
174
|
+
size="L"
|
|
175
|
+
onClick={() => onAction?.({ type: 'cta', screenId })}
|
|
176
|
+
>
|
|
177
|
+
{ctaLabel}
|
|
178
|
+
</PrizmaButton>
|
|
179
|
+
) : null}
|
|
180
|
+
{secondaryCtaLabel ? (
|
|
181
|
+
<PrizmaButton
|
|
182
|
+
variant="secondary"
|
|
183
|
+
size="L"
|
|
184
|
+
onClick={() => onAction?.({ type: 'secondary', screenId })}
|
|
185
|
+
>
|
|
186
|
+
{secondaryCtaLabel}
|
|
187
|
+
</PrizmaButton>
|
|
188
|
+
) : null}
|
|
189
|
+
{linkLabel ? (
|
|
190
|
+
<PrizmaButton
|
|
191
|
+
variant="tertiary-link"
|
|
192
|
+
size="L"
|
|
193
|
+
onClick={() => onAction?.({ type: 'tertiary', screenId })}
|
|
194
|
+
>
|
|
195
|
+
{linkLabel}
|
|
196
|
+
</PrizmaButton>
|
|
197
|
+
) : null}
|
|
198
|
+
</div>
|
|
199
|
+
</div>
|
|
200
|
+
) : null}
|
|
201
|
+
{showFooter ? (
|
|
202
|
+
<div className="prizma-screen-layout__footer">
|
|
203
|
+
<PrizmaTag label={verifiedLabel} />
|
|
204
|
+
</div>
|
|
205
|
+
) : null}
|
|
206
|
+
</PrizmaScreenShell>
|
|
207
|
+
),
|
|
208
|
+
);
|
|
209
|
+
PrizmaResultScreen.displayName = 'PrizmaResultScreen';
|
|
210
|
+
|
|
211
|
+
export default PrizmaResultScreen;
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import React, { forwardRef, type ReactNode } from 'react';
|
|
2
|
+
import { PrizmaTitle } from '@incodetech/prizma-core-web/title';
|
|
3
|
+
import { PrizmaButtonGroup } from '@incodetech/prizma-core-web/button-group';
|
|
4
|
+
import { PrizmaLoadingBar } from '@incodetech/prizma-core-web/loading-bar';
|
|
5
|
+
import { PrizmaTag } from '@incodetech/prizma-core-web/tag';
|
|
6
|
+
import { PrizmaScreenShell, type PrizmaScreenShellProps } from './ScreenShell';
|
|
7
|
+
import { PrizmaScreenNav } from './ScreenNav';
|
|
8
|
+
import type {
|
|
9
|
+
PrizmaScreenActionHandler,
|
|
10
|
+
PrizmaScreenChromeProps,
|
|
11
|
+
PrizmaScreenOverrides,
|
|
12
|
+
} from './types';
|
|
13
|
+
import './ScreenLayout.css';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* The three stages every captured-media review section shares. Identical
|
|
17
|
+
* skeleton — only the header block (Title vs loading bar), the media's own
|
|
18
|
+
* state and the presence of the CTA row change. Named to match the modules'
|
|
19
|
+
* own stage axis (`DocumentCaptureConfirmStage`, Video Selfie's review step).
|
|
20
|
+
*/
|
|
21
|
+
export type PrizmaReviewStage = 'review' | 'analyzing' | 'success';
|
|
22
|
+
|
|
23
|
+
export interface PrizmaReviewScreenProps
|
|
24
|
+
extends Omit<PrizmaScreenShellProps, 'dark' | 'title' | 'children'>,
|
|
25
|
+
Pick<PrizmaScreenChromeProps, 'showHeader' | 'showFooter'> {
|
|
26
|
+
/** Which review stage to render. Default `review`. */
|
|
27
|
+
stage?: PrizmaReviewStage;
|
|
28
|
+
/** H2 review/base title ("Review your document"). */
|
|
29
|
+
title: string;
|
|
30
|
+
/** Supporting copy under the title — drawn on `review` only (Figma). */
|
|
31
|
+
subtitle?: string;
|
|
32
|
+
/** Title shown on `success`; falls back to `title` when omitted. */
|
|
33
|
+
successTitle?: string;
|
|
34
|
+
/** Caption inside the loading bar on `analyzing`. */
|
|
35
|
+
analyzingLabel?: string;
|
|
36
|
+
/**
|
|
37
|
+
* Which Core `PrizmaLoadingBar` treatment the `analyzing` stage runs — the
|
|
38
|
+
* captured-photo review shows the `analyzing` sweep, the uploaded-file review
|
|
39
|
+
* shows `uploading`. Default `analyzing`.
|
|
40
|
+
*/
|
|
41
|
+
analyzingState?: 'analyzing' | 'uploading';
|
|
42
|
+
/** Loading-bar progress on `analyzing`, 0–100. */
|
|
43
|
+
progress?: number;
|
|
44
|
+
/**
|
|
45
|
+
* The flexing captured-media slot: a `PrizmaIdCapture` still, an uploaded-file
|
|
46
|
+
* preview card, a portrait review. Kept a slot so one template serves every
|
|
47
|
+
* module's review screen — the module supplies the media in the right state
|
|
48
|
+
* for the stage; the archetype owns every offset around it.
|
|
49
|
+
*/
|
|
50
|
+
children: ReactNode;
|
|
51
|
+
/**
|
|
52
|
+
* Extra class on the media stage for per-media adapters that Core does not
|
|
53
|
+
* own (an uploaded-file column inset, the light-surface encrypted re-tint).
|
|
54
|
+
* These shape CONTENT, never archetype spacing — the header, stage flex, CTA
|
|
55
|
+
* offset and footer all come from ScreenLayout.css regardless.
|
|
56
|
+
*/
|
|
57
|
+
stageClassName?: string;
|
|
58
|
+
/** Primary CTA — the forward action. Drawn on `review` and `success`. */
|
|
59
|
+
primaryLabel: string;
|
|
60
|
+
/** Secondary CTA ("Replace" / "Retake") — drawn on `review` only. */
|
|
61
|
+
secondaryLabel?: string;
|
|
62
|
+
/** "verified by" attribution copy for the footer tag. */
|
|
63
|
+
verifiedLabel: string;
|
|
64
|
+
navLabel?: string;
|
|
65
|
+
screenId?: string;
|
|
66
|
+
overrides?: PrizmaScreenOverrides;
|
|
67
|
+
onAction?: PrizmaScreenActionHandler;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Archetype H — Review (captured-media confirmation).
|
|
72
|
+
*
|
|
73
|
+
* The "header → flexing captured-media stage → CTA band → tag" recipe, with a
|
|
74
|
+
* `review → analyzing → success` stage axis. It exists because two Document
|
|
75
|
+
* Capture screens hand-built it independently (`DocumentCaptureConfirmImage`,
|
|
76
|
+
* `DocumentCaptureConfirmUpload`) with their own three-band arithmetic in
|
|
77
|
+
* `DocumentCaptureLayout.css`, and Video Selfie's review step needs the same
|
|
78
|
+
* skeleton — a captured still under a title, confirmed or replaced.
|
|
79
|
+
*
|
|
80
|
+
* It is NOT archetype F (Result): F centres a small status + CTA block, while a
|
|
81
|
+
* review TOP-aligns the header over a large media stage that flexes to fill the
|
|
82
|
+
* middle, and adds an in-flight `analyzing` state (the Title swaps for Core's
|
|
83
|
+
* `PrizmaLoadingBar` and the CTA row drops). `IdCaptureResultScreen`'s review
|
|
84
|
+
* verdict stays on F — its small on-surface still fits F's centred column, and
|
|
85
|
+
* splitting one file across two archetypes buys nothing (owner call 2026-08-18).
|
|
86
|
+
*
|
|
87
|
+
* Layout (measured off the Document Capture 390 sections, DEVIATIONS #DC-22/24):
|
|
88
|
+
* no logo nav → header block (Title or loading bar) → Spacing/32 → media stage
|
|
89
|
+
* (flexes, centred) → Spacing/24 → CTA band (`review`/`success`) → anchored
|
|
90
|
+
* VerifiedTag. `analyzing` drops the band and the stage carries the Spacing/24
|
|
91
|
+
* to the bottom itself. Every offset lives in ScreenLayout.css; this file
|
|
92
|
+
* declares none of its own.
|
|
93
|
+
*/
|
|
94
|
+
export const PrizmaReviewScreen = forwardRef<HTMLDivElement, PrizmaReviewScreenProps>(
|
|
95
|
+
(
|
|
96
|
+
{
|
|
97
|
+
stage = 'review',
|
|
98
|
+
title,
|
|
99
|
+
subtitle,
|
|
100
|
+
successTitle,
|
|
101
|
+
analyzingLabel,
|
|
102
|
+
analyzingState = 'analyzing',
|
|
103
|
+
progress = 0,
|
|
104
|
+
children,
|
|
105
|
+
stageClassName,
|
|
106
|
+
primaryLabel,
|
|
107
|
+
secondaryLabel,
|
|
108
|
+
verifiedLabel,
|
|
109
|
+
navLabel,
|
|
110
|
+
showHeader,
|
|
111
|
+
showFooter = true,
|
|
112
|
+
screenId,
|
|
113
|
+
overrides,
|
|
114
|
+
onAction,
|
|
115
|
+
...shell
|
|
116
|
+
},
|
|
117
|
+
ref,
|
|
118
|
+
) => {
|
|
119
|
+
// Review screens are the capture family: no logo unless the client opts in
|
|
120
|
+
// by supplying one (types.ts chrome contract). `showHeader` still wins when
|
|
121
|
+
// set explicitly.
|
|
122
|
+
const withNav = showHeader ?? Boolean(overrides?.logo);
|
|
123
|
+
const showSecondary = stage === 'review' && Boolean(secondaryLabel);
|
|
124
|
+
const showBand = stage !== 'analyzing' && Boolean(primaryLabel || secondaryLabel);
|
|
125
|
+
|
|
126
|
+
return (
|
|
127
|
+
<PrizmaScreenShell ref={ref} {...shell}>
|
|
128
|
+
{withNav ? (
|
|
129
|
+
<PrizmaScreenNav logo={overrides?.logo} navLabel={navLabel} />
|
|
130
|
+
) : null}
|
|
131
|
+
<div
|
|
132
|
+
className={[
|
|
133
|
+
'prizma-screen-layout__content',
|
|
134
|
+
withNav ? '' : 'prizma-screen-layout__content--no-nav',
|
|
135
|
+
]
|
|
136
|
+
.filter(Boolean)
|
|
137
|
+
.join(' ')}
|
|
138
|
+
>
|
|
139
|
+
<div className="prizma-screen-layout__review-header">
|
|
140
|
+
{stage === 'analyzing' ? (
|
|
141
|
+
<div className="prizma-screen-layout__review-loading">
|
|
142
|
+
<PrizmaLoadingBar
|
|
143
|
+
state={analyzingState}
|
|
144
|
+
progress={progress}
|
|
145
|
+
title={analyzingLabel}
|
|
146
|
+
/>
|
|
147
|
+
</div>
|
|
148
|
+
) : (
|
|
149
|
+
<PrizmaTitle
|
|
150
|
+
variant={overrides?.align === 'left' ? 'left' : 'centered'}
|
|
151
|
+
title={stage === 'success' ? successTitle ?? title : title}
|
|
152
|
+
showSubtitle={stage === 'review' && Boolean(subtitle)}
|
|
153
|
+
subtitle={subtitle}
|
|
154
|
+
icon={stage === 'success' ? { type: 'status', status: 'success' } : undefined}
|
|
155
|
+
/>
|
|
156
|
+
)}
|
|
157
|
+
</div>
|
|
158
|
+
|
|
159
|
+
<div
|
|
160
|
+
className={[
|
|
161
|
+
'prizma-screen-layout__review-stage',
|
|
162
|
+
stage === 'analyzing' ? 'prizma-screen-layout__review-stage--flush' : '',
|
|
163
|
+
stageClassName ?? '',
|
|
164
|
+
]
|
|
165
|
+
.filter(Boolean)
|
|
166
|
+
.join(' ')}
|
|
167
|
+
>
|
|
168
|
+
{children}
|
|
169
|
+
</div>
|
|
170
|
+
|
|
171
|
+
{showBand ? (
|
|
172
|
+
<div className="prizma-screen-layout__band prizma-screen-layout__band--review">
|
|
173
|
+
<PrizmaButtonGroup
|
|
174
|
+
orientation="horizontal-v1"
|
|
175
|
+
showSecondary={showSecondary}
|
|
176
|
+
primaryLabel={primaryLabel}
|
|
177
|
+
onPrimaryClick={() => onAction?.({ type: 'cta', screenId })}
|
|
178
|
+
secondaryLabel={secondaryLabel}
|
|
179
|
+
onSecondaryClick={() => onAction?.({ type: 'secondary', screenId })}
|
|
180
|
+
/>
|
|
181
|
+
</div>
|
|
182
|
+
) : null}
|
|
183
|
+
|
|
184
|
+
{showFooter ? (
|
|
185
|
+
<div className="prizma-screen-layout__band__tag">
|
|
186
|
+
<PrizmaTag label={verifiedLabel} />
|
|
187
|
+
</div>
|
|
188
|
+
) : null}
|
|
189
|
+
</div>
|
|
190
|
+
</PrizmaScreenShell>
|
|
191
|
+
);
|
|
192
|
+
},
|
|
193
|
+
);
|
|
194
|
+
PrizmaReviewScreen.displayName = 'PrizmaReviewScreen';
|
|
195
|
+
|
|
196
|
+
export default PrizmaReviewScreen;
|