@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,111 @@
|
|
|
1
|
+
/* ID Capture — module layout additions.
|
|
2
|
+
*
|
|
3
|
+
* ONLY what the foundation archetypes do not already own. Every value is a
|
|
4
|
+
* token; each departure from GUIDELINES.md carries a numbered row in
|
|
5
|
+
* DEVIATIONS.md (Wave 2 section).
|
|
6
|
+
*
|
|
7
|
+
* The module's one structural discovery is the THREE-BAND recipe every
|
|
8
|
+
* document screen shares — measured off the purple sections, not eyeballed:
|
|
9
|
+
*
|
|
10
|
+
* 1-5-1-id-empty (CONTENT 390×610, node 16285:42627)
|
|
11
|
+
* top container 24 → 181.014 342 × 157.014 Title bottom-anchored,
|
|
12
|
+
* 40px of air below it
|
|
13
|
+
* Capture / ID 181.014 → 428.986 342 × 247.97 (214.97 frame + 33 row)
|
|
14
|
+
* bottom container 428.986 → 586 342 × 157.014 Manual capture flush
|
|
15
|
+
* to its own bottom
|
|
16
|
+
* → 24 + 157.014 + 247.97 + 157.014 + 24 = 610 ✓
|
|
17
|
+
*
|
|
18
|
+
* 1-9-3-id-attempt (CONTENT 390×654, node I19281:325100;16285:42538)
|
|
19
|
+
* top container 24 → 203.014 342 × 179.014 title + 40px air below
|
|
20
|
+
* Capture / ID 203.014 → 417.986 342 × 214.97
|
|
21
|
+
* Encrypted 417.986 → 450.986 154 × 33 (zero gap — Core renders
|
|
22
|
+
* this row INSIDE
|
|
23
|
+
* PrizmaIdCapture, same
|
|
24
|
+
* result)
|
|
25
|
+
* bottom container 450.986 → 630 342 × 179.014 CTAs flush to bottom
|
|
26
|
+
* → 24 + 179.014 + 214.97 + 33 + 179.014 + 24 = 654 ✓
|
|
27
|
+
*
|
|
28
|
+
* Two equal flexible bands hugging a fixed capture stage, the top band holding
|
|
29
|
+
* its content at the bottom with Spacing/40 of air under it. Identical on the
|
|
30
|
+
* dark camera stages and the light result screens, which is why one pair of
|
|
31
|
+
* classes serves both.
|
|
32
|
+
*/
|
|
33
|
+
|
|
34
|
+
/* ── The two flexible bands around the capture stage ───────────────────────── */
|
|
35
|
+
|
|
36
|
+
.id-capture-band {
|
|
37
|
+
flex: 1;
|
|
38
|
+
min-height: 0;
|
|
39
|
+
display: flex;
|
|
40
|
+
flex-direction: column;
|
|
41
|
+
justify-content: flex-end;
|
|
42
|
+
/* On the camera stages PrizmaIdCapture's overlay scrim is an absolutely
|
|
43
|
+
* positioned box-shadow that escapes the frame by design; without a stacking
|
|
44
|
+
* context of their own the bands' plain text nodes would paint UNDER it (a
|
|
45
|
+
* positioned sibling always wins over non-positioned content). Lifting the
|
|
46
|
+
* bands keeps the HUD copy and the manual strip above the veil — the same
|
|
47
|
+
* reason ScreenShell declares `contain: layout paint` for the scrim. */
|
|
48
|
+
position: relative;
|
|
49
|
+
z-index: 1;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/* Spacing/40 of air between the title block (or the feedback pill) and the
|
|
53
|
+
* capture stage. NOT the foundation's `.prizma-viewfinder__intro`, which pins
|
|
54
|
+
* its title Spacing/24 above the window — that is Face Capture's number; the
|
|
55
|
+
* ID Capture purple sections measure 40 on every single stage and result
|
|
56
|
+
* screen (see the arithmetic above). DEVIATIONS.md #IDC-20. */
|
|
57
|
+
.id-capture-band--top {
|
|
58
|
+
padding-bottom: var(--prizma-spacing-40);
|
|
59
|
+
gap: var(--prizma-spacing-8); /* Title → instruction, GUIDELINES §5 */
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/* ── Camera stage (dark) ───────────────────────────────────────────────────── */
|
|
63
|
+
|
|
64
|
+
/* The stage's nav row carries only the close X (no logo — the camera owns the
|
|
65
|
+
* screen). The foundation `.prizma-screen-nav` supplies the status-bar reserve,
|
|
66
|
+
* the 44px flow slot and the un-fixing of Core's PrizmaNavigation; the ink is
|
|
67
|
+
* the only thing the camera stage changes: Core's nav icon is the THEMED
|
|
68
|
+
* `Icon/Neutral/500`, which disappears on the always-dark camera surface, so it
|
|
69
|
+
* takes the camera's own Static ink — the same token PrizmaCaptureManual uses
|
|
70
|
+
* for the shutter and the "?" help control. DEVIATIONS.md #IDC-21. */
|
|
71
|
+
.id-capture-stage__nav .prizma-nav__icon {
|
|
72
|
+
color: var(--prizma-icon-neutral-50-static);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/* The manual-capture strip spans the content column so its "?" help control
|
|
76
|
+
* lands on the column's right edge (Figma: `Manual capture` 342 wide, x=24). */
|
|
77
|
+
.id-capture-stage__manual {
|
|
78
|
+
width: 100%;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/* The feedback pill replaces the title block on the error stages (Figma
|
|
82
|
+
* `1-5-5 … 1-5-9-id-errors`): same band, same Spacing/40 above the frame. */
|
|
83
|
+
.id-capture-stage__feedback {
|
|
84
|
+
display: flex;
|
|
85
|
+
justify-content: center;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/* ── Removed: promoted into the foundation ───────────────────────────────────
|
|
89
|
+
* `.id-capture-glyph*` (the non-status glyph slot) is now
|
|
90
|
+
* `ScreenLayout.css`'s `__glyph` — DEVIATIONS #DC-29, closed.
|
|
91
|
+
* `.id-capture-info-list` / `.id-capture-accepted-docs` (the Spacing/24 under a
|
|
92
|
+
* title block) are now the List archetype's `__list` — DEVIATIONS #F-31.
|
|
93
|
+
*/
|
|
94
|
+
|
|
95
|
+
/* ── PrizmaIdCapture on a LIGHT surface ────────────────────────────────────── */
|
|
96
|
+
/* The capture component was authored for the camera stage, so two of its layers
|
|
97
|
+
* are deliberately Static: the stand-in camera plate is Surface/Neutral/900 and
|
|
98
|
+
* the encrypted row is white ink. ID Capture's Figma also mounts the SAME
|
|
99
|
+
* component on the light result screens (`*-review`, `*-success`, `*-attempt`,
|
|
100
|
+
* `*-analyzing`), where the plate must not show through the document's 7px air
|
|
101
|
+
* and the reassurance line is drawn in body ink.
|
|
102
|
+
*
|
|
103
|
+
* The plate needs no override — Core's own `mode="overlay"` already makes the
|
|
104
|
+
* window transparent, which is what the light screens want. The ink does: the
|
|
105
|
+
* row is re-inked with the THEMED body token so it also survives dark mode,
|
|
106
|
+
* scoped to the light screens only (the camera stage keeps Core's Static white).
|
|
107
|
+
* Core gap — PrizmaIdCapture has no surface-aware encrypted row. DEVIATIONS.md #IDC-28.
|
|
108
|
+
*/
|
|
109
|
+
.id-capture-on-surface .prizma-id-capture__encrypted {
|
|
110
|
+
color: var(--prizma-text-body-800-primary);
|
|
111
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import React, { forwardRef } from 'react';
|
|
2
|
+
import { IconWifiOff } from '@incodetech/prizma-core-icons';
|
|
3
|
+
import { PrizmaResultScreen, type PrizmaResultScreenProps } from './ResultScreen';
|
|
4
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
5
|
+
import type { IdCaptureStrings } from './IdCaptureStrings';
|
|
6
|
+
import './ScreenLayout.css';
|
|
7
|
+
|
|
8
|
+
export interface IdCaptureNoConnectionScreenProps
|
|
9
|
+
extends Omit<
|
|
10
|
+
PrizmaResultScreenProps,
|
|
11
|
+
'status' | 'title' | 'subtitle' | 'glyph' | 'ctaLabel' | 'verifiedLabel' | 'navLabel'
|
|
12
|
+
> {
|
|
13
|
+
/** Module copy — this screen reads the `noConnection` slice. */
|
|
14
|
+
strings: IdCaptureStrings;
|
|
15
|
+
screenId?: string;
|
|
16
|
+
overrides?: PrizmaScreenOverrides;
|
|
17
|
+
onAction?: PrizmaScreenActionHandler;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* ID Capture — no internet connection, built on the `PrizmaResultScreen`
|
|
22
|
+
* archetype (GUIDELINES.md §6-F).
|
|
23
|
+
* Figma: purple section `1-9-10-id-no-internet` of the front-side group.
|
|
24
|
+
*
|
|
25
|
+
* Structurally identical to the Face Capture pilot's
|
|
26
|
+
* `genericErrors.noConnection` — Title + one CTA — which is why both now render
|
|
27
|
+
* the same archetype and neither composes a shell. Header and verified tag are on
|
|
28
|
+
* per the owner's non-capture rule (DEVIATIONS #F-30).
|
|
29
|
+
*
|
|
30
|
+
* The Wi-Fi glyph is Figma's `Icon / Wi-Fi` in the archetype's `glyph` slot with
|
|
31
|
+
* the foundation's `__glyph` class; Core's `PrizmaTitle` allowlist is
|
|
32
|
+
* status | spinner | none (DEVIATIONS #10, #DC-29).
|
|
33
|
+
*/
|
|
34
|
+
export const IdCaptureNoConnectionScreen = forwardRef<
|
|
35
|
+
HTMLDivElement,
|
|
36
|
+
IdCaptureNoConnectionScreenProps
|
|
37
|
+
>(
|
|
38
|
+
({ strings, screenId = 'id-capture-no-connection', overrides, onAction, ...shell }, ref) => (
|
|
39
|
+
<PrizmaResultScreen
|
|
40
|
+
ref={ref}
|
|
41
|
+
glyph={
|
|
42
|
+
<span
|
|
43
|
+
className={[
|
|
44
|
+
'prizma-screen-layout__glyph',
|
|
45
|
+
'prizma-screen-layout__glyph--negative',
|
|
46
|
+
overrides?.align === 'left' ? 'prizma-screen-layout__glyph--left' : '',
|
|
47
|
+
]
|
|
48
|
+
.filter(Boolean)
|
|
49
|
+
.join(' ')}
|
|
50
|
+
>
|
|
51
|
+
<IconWifiOff size="l" />
|
|
52
|
+
</span>
|
|
53
|
+
}
|
|
54
|
+
title={strings.noConnection.title}
|
|
55
|
+
subtitle={strings.noConnection.description}
|
|
56
|
+
ctaLabel={strings.noConnection.ctaLabel}
|
|
57
|
+
verifiedLabel={strings.verifiedLabel}
|
|
58
|
+
navLabel={strings.navLabel}
|
|
59
|
+
screenId={screenId}
|
|
60
|
+
overrides={overrides}
|
|
61
|
+
onAction={onAction}
|
|
62
|
+
{...shell}
|
|
63
|
+
/>
|
|
64
|
+
),
|
|
65
|
+
);
|
|
66
|
+
IdCaptureNoConnectionScreen.displayName = 'IdCaptureNoConnectionScreen';
|
|
67
|
+
|
|
68
|
+
export default IdCaptureNoConnectionScreen;
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import React, { forwardRef } from 'react';
|
|
2
|
+
import { IconApproval, IconBankCardSearch, IconCamera } from '@incodetech/prizma-core-icons';
|
|
3
|
+
import { PrizmaCardListCommonIssues } from '@incodetech/prizma-core-web/card-list';
|
|
4
|
+
import { PrizmaListScreen, type PrizmaListScreenProps } from './ListScreen';
|
|
5
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
6
|
+
import type { IdCaptureStrings } from './IdCaptureStrings';
|
|
7
|
+
import './ScreenLayout.css';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* The three reason rows' leading icons, in the order the purple section lists
|
|
11
|
+
* them: the camera captures the ID · it verifies authenticity · it is required
|
|
12
|
+
* to verify identity. Canonical bank only (§10).
|
|
13
|
+
*/
|
|
14
|
+
const ROW_ICONS = [
|
|
15
|
+
<IconCamera key="camera" size="m" />,
|
|
16
|
+
<IconBankCardSearch key="authenticity" size="m" />,
|
|
17
|
+
<IconApproval key="required" size="m" />,
|
|
18
|
+
];
|
|
19
|
+
|
|
20
|
+
export interface IdCapturePermissionScreenProps
|
|
21
|
+
extends Omit<
|
|
22
|
+
PrizmaListScreenProps,
|
|
23
|
+
| 'status'
|
|
24
|
+
| 'title'
|
|
25
|
+
| 'subtitle'
|
|
26
|
+
| 'children'
|
|
27
|
+
| 'ctaLabel'
|
|
28
|
+
| 'linkLabel'
|
|
29
|
+
| 'verifiedLabel'
|
|
30
|
+
| 'navLabel'
|
|
31
|
+
> {
|
|
32
|
+
/** Module copy — this screen reads the `permission` slice. */
|
|
33
|
+
strings: IdCaptureStrings;
|
|
34
|
+
screenId?: string;
|
|
35
|
+
overrides?: PrizmaScreenOverrides;
|
|
36
|
+
onAction?: PrizmaScreenActionHandler;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* ID Capture — "Camera permission is required", built on the `PrizmaListScreen`
|
|
41
|
+
* archetype (GUIDELINES.md §6-G).
|
|
42
|
+
* Figma: purple section `1-3-2-id` of the `Permissions` group, plus its
|
|
43
|
+
* `1-3-2-id-allow-camera`, `1-3-2-id-quit-process` and
|
|
44
|
+
* `1-3-2-id-allow-camera-quit-process` siblings — which differ only in which
|
|
45
|
+
* control is pressed, i.e. copy/interaction variants of this ONE screen.
|
|
46
|
+
*
|
|
47
|
+
* Warning status mark → Title → three reason rows → a tertiary "quit" link →
|
|
48
|
+
* the permission CTA. `showHeader={false}` keeps the section's logo-free chrome
|
|
49
|
+
* (the flow has not started) with the nav row still reserved.
|
|
50
|
+
*
|
|
51
|
+
* NOT built from this group: `1-3-1-id-iOS+Android` and `1-4-1-id` are the
|
|
52
|
+
* NATIVE OS permission dialogs (an iOS alert and an Android sheet drawn as
|
|
53
|
+
* documentation), and `1-4-2-id` is a step list whose rows are OS app icons
|
|
54
|
+
* (Settings, Safari, the iOS camera tile). None of them is a Prizma surface and
|
|
55
|
+
* none of their chrome exists in Core — building them would mean inventing
|
|
56
|
+
* primitives and shipping platform raster assets, both forbidden (§10, rule 1).
|
|
57
|
+
* Reported to the owner instead. DEVIATIONS.md #IDC-26.
|
|
58
|
+
*/
|
|
59
|
+
export const IdCapturePermissionScreen = forwardRef<
|
|
60
|
+
HTMLDivElement,
|
|
61
|
+
IdCapturePermissionScreenProps
|
|
62
|
+
>(
|
|
63
|
+
(
|
|
64
|
+
{
|
|
65
|
+
strings,
|
|
66
|
+
screenId = 'id-capture-permission',
|
|
67
|
+
showHeader = false,
|
|
68
|
+
overrides,
|
|
69
|
+
onAction,
|
|
70
|
+
...shell
|
|
71
|
+
},
|
|
72
|
+
ref,
|
|
73
|
+
) => (
|
|
74
|
+
<PrizmaListScreen
|
|
75
|
+
ref={ref}
|
|
76
|
+
showHeader={showHeader}
|
|
77
|
+
status="warning"
|
|
78
|
+
title={strings.permission.title}
|
|
79
|
+
subtitle={strings.permission.description}
|
|
80
|
+
ctaLabel={strings.permission.ctaLabel}
|
|
81
|
+
linkLabel={strings.permission.quitLabel}
|
|
82
|
+
verifiedLabel={strings.verifiedLabel}
|
|
83
|
+
navLabel={strings.navLabel}
|
|
84
|
+
screenId={screenId}
|
|
85
|
+
overrides={overrides}
|
|
86
|
+
onAction={onAction}
|
|
87
|
+
{...shell}
|
|
88
|
+
>
|
|
89
|
+
<PrizmaCardListCommonIssues
|
|
90
|
+
items={strings.permission.rows.map((row, i) => ({
|
|
91
|
+
icon: ROW_ICONS[i % ROW_ICONS.length],
|
|
92
|
+
title: row.title,
|
|
93
|
+
subtitle: row.description,
|
|
94
|
+
showSubtitle: Boolean(row.description),
|
|
95
|
+
}))}
|
|
96
|
+
/>
|
|
97
|
+
</PrizmaListScreen>
|
|
98
|
+
),
|
|
99
|
+
);
|
|
100
|
+
IdCapturePermissionScreen.displayName = 'IdCapturePermissionScreen';
|
|
101
|
+
|
|
102
|
+
export default IdCapturePermissionScreen;
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import React, { forwardRef, type ReactNode } from 'react';
|
|
2
|
+
import {
|
|
3
|
+
PrizmaIdCapture,
|
|
4
|
+
type PrizmaIdCaptureState,
|
|
5
|
+
} from '@incodetech/prizma-core-web/id-capture';
|
|
6
|
+
import { PrizmaResultScreen, type PrizmaResultScreenProps, type PrizmaResultStatus } from './ResultScreen';
|
|
7
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
8
|
+
import type {
|
|
9
|
+
IdCaptureDocumentType,
|
|
10
|
+
IdCaptureStrings,
|
|
11
|
+
} from './IdCaptureStrings';
|
|
12
|
+
import './ScreenLayout.css';
|
|
13
|
+
import './IdCaptureLayout.css';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Which verdict the screen reports. Each maps onto a purple section family:
|
|
17
|
+
* - `review` — `*-review` (no status icon, Retake + Continue)
|
|
18
|
+
* - `success` — `*-success`, `1-10-2-id-success-capture-only`
|
|
19
|
+
* - `error` — `*-attempt`, `*-failed-attempt` (retries left)
|
|
20
|
+
* - `exhausted` — `*-no-attempts` (retries used up)
|
|
21
|
+
* - `classification` — Classification Errors / "Scan the back of your ID"
|
|
22
|
+
*/
|
|
23
|
+
export type IdCaptureResultVerdict =
|
|
24
|
+
| 'review'
|
|
25
|
+
| 'success'
|
|
26
|
+
| 'error'
|
|
27
|
+
| 'exhausted'
|
|
28
|
+
| 'classification';
|
|
29
|
+
|
|
30
|
+
/** Verdict → the archetype's status slot (Core `PrizmaTitle` icon). */
|
|
31
|
+
const TITLE_STATUS: Record<IdCaptureResultVerdict, PrizmaResultStatus> = {
|
|
32
|
+
review: 'none',
|
|
33
|
+
success: 'success',
|
|
34
|
+
error: 'error',
|
|
35
|
+
exhausted: 'error',
|
|
36
|
+
classification: 'warning',
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Verdict → Core `PrizmaIdCapture` frame border.
|
|
41
|
+
*
|
|
42
|
+
* `classification` is the one place Figma asks for something Core does not
|
|
43
|
+
* draw: an AMBER frame around the still. Core's `BORDER_GROUP` has exactly
|
|
44
|
+
* four treatments (enabled / focused / success / error) and no warning band, so
|
|
45
|
+
* the design system wins and the still keeps the neutral `filled` frame rather
|
|
46
|
+
* than borrowing the red one — a red border would tell the user the capture
|
|
47
|
+
* failed, which is the opposite of "we got it, we just need the other side".
|
|
48
|
+
* DEVIATIONS.md #IDC-22.
|
|
49
|
+
*/
|
|
50
|
+
const FRAME_STATE: Record<IdCaptureResultVerdict, PrizmaIdCaptureState> = {
|
|
51
|
+
review: 'filled',
|
|
52
|
+
success: 'success',
|
|
53
|
+
error: 'error',
|
|
54
|
+
exhausted: 'error',
|
|
55
|
+
classification: 'filled',
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
export interface IdCaptureResultScreenProps
|
|
59
|
+
extends Omit<
|
|
60
|
+
PrizmaResultScreenProps,
|
|
61
|
+
| 'status'
|
|
62
|
+
| 'title'
|
|
63
|
+
| 'subtitle'
|
|
64
|
+
| 'children'
|
|
65
|
+
| 'disclaimer'
|
|
66
|
+
| 'ctaLabel'
|
|
67
|
+
| 'secondaryCtaLabel'
|
|
68
|
+
| 'ctaOrientation'
|
|
69
|
+
| 'verifiedLabel'
|
|
70
|
+
| 'navLabel'
|
|
71
|
+
> {
|
|
72
|
+
/** Module copy — this screen reads the slice its `verdict` names. */
|
|
73
|
+
strings: IdCaptureStrings;
|
|
74
|
+
/** Which purple result section to render. Default `success`. */
|
|
75
|
+
verdict?: IdCaptureResultVerdict;
|
|
76
|
+
/** Which document was captured — Core `PrizmaIdCapture.type`. */
|
|
77
|
+
documentType?: IdCaptureDocumentType;
|
|
78
|
+
/** Portrait document orientation — the `↕️ vertical` groups. */
|
|
79
|
+
vertical?: boolean;
|
|
80
|
+
/** The captured document still (<img>) shown inside the frame. */
|
|
81
|
+
still?: ReactNode;
|
|
82
|
+
screenId?: string;
|
|
83
|
+
overrides?: PrizmaScreenOverrides;
|
|
84
|
+
onAction?: PrizmaScreenActionHandler;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* ID Capture — the captured-document verdict screens, built on the
|
|
89
|
+
* `PrizmaResultScreen` archetype (GUIDELINES.md §6-F).
|
|
90
|
+
*
|
|
91
|
+
* ONE screen for every `*-review`, `*-success`, `*-attempt`,
|
|
92
|
+
* `*-failed-attempt` and `*-no-attempts` section across all five capture groups,
|
|
93
|
+
* plus the Classification Errors section — ~35 purple sections that are copy,
|
|
94
|
+
* status-icon, frame-state and CTA variants of a single layout.
|
|
95
|
+
*
|
|
96
|
+
* The captured still rides in the archetype's `children` slot, the attempts line
|
|
97
|
+
* in `disclaimer`, and the review/classification action pair in
|
|
98
|
+
* `secondaryCtaLabel`. This file used to hand-build the whole shell (198 lines)
|
|
99
|
+
* with its own three-band arithmetic in `IdCaptureLayout.css`; the archetype now
|
|
100
|
+
* owns every offset, with two measured consequences logged as #F-33: the title
|
|
101
|
+
* block sits Spacing/16 above the frame rather than the module's Spacing/40, and
|
|
102
|
+
* review's Retake+Continue pair stacks vertically instead of sitting side by side
|
|
103
|
+
* (the archetype has one CTA orientation).
|
|
104
|
+
*
|
|
105
|
+
* `showHeader={false}` keeps the family's chrome as Figma draws it — no logo —
|
|
106
|
+
* while still reserving the nav row, so the offsets are identical to every other
|
|
107
|
+
* screen (owner rule 2026-08-18).
|
|
108
|
+
*
|
|
109
|
+
* Everything visual belongs to Core: the status marks are `PrizmaTitle`'s icon
|
|
110
|
+
* slot (outline bank icons — the module Figma still draws the two-tone filled
|
|
111
|
+
* discs, DEVIATIONS.md #15 again), and the frame and its border are
|
|
112
|
+
* `PrizmaIdCapture`.
|
|
113
|
+
*/
|
|
114
|
+
export const IdCaptureResultScreen = forwardRef<HTMLDivElement, IdCaptureResultScreenProps>(
|
|
115
|
+
(
|
|
116
|
+
{
|
|
117
|
+
strings,
|
|
118
|
+
verdict = 'success',
|
|
119
|
+
documentType = 'id',
|
|
120
|
+
vertical = false,
|
|
121
|
+
still,
|
|
122
|
+
screenId = `id-capture-${verdict}`,
|
|
123
|
+
showHeader = false,
|
|
124
|
+
className,
|
|
125
|
+
overrides,
|
|
126
|
+
onAction,
|
|
127
|
+
...shell
|
|
128
|
+
},
|
|
129
|
+
ref,
|
|
130
|
+
) => {
|
|
131
|
+
const copy =
|
|
132
|
+
verdict === 'review'
|
|
133
|
+
? strings.review
|
|
134
|
+
: verdict === 'success'
|
|
135
|
+
? strings.success
|
|
136
|
+
: verdict === 'classification'
|
|
137
|
+
? strings.classification
|
|
138
|
+
: strings.error;
|
|
139
|
+
|
|
140
|
+
// Figma: the `*-attempt` / `*-failed-attempt` sections carry "N attempts
|
|
141
|
+
// remaining"; `*-no-attempts` swaps it for "No attempts remaining" and the
|
|
142
|
+
// CTA becomes the forward action. Both come from the same `error` slice, so
|
|
143
|
+
// the host's locale pack decides the wording; the screen only decides
|
|
144
|
+
// whether the line is rendered at all (review / success / classification
|
|
145
|
+
// have no attempts line in any purple section).
|
|
146
|
+
const attemptsLabel =
|
|
147
|
+
verdict === 'error' || verdict === 'exhausted' ? strings.error.attemptsLabel : undefined;
|
|
148
|
+
|
|
149
|
+
const secondaryLabel =
|
|
150
|
+
verdict === 'review'
|
|
151
|
+
? strings.review.retakeLabel
|
|
152
|
+
: verdict === 'classification'
|
|
153
|
+
? strings.classification.secondaryLabel
|
|
154
|
+
: undefined;
|
|
155
|
+
|
|
156
|
+
return (
|
|
157
|
+
<PrizmaResultScreen
|
|
158
|
+
ref={ref}
|
|
159
|
+
/* `id-capture-on-surface` re-inks Core's encrypted row for the LIGHT
|
|
160
|
+
result surface (DEVIATIONS #IDC-28); it carries no layout. */
|
|
161
|
+
className={['id-capture-on-surface', className ?? ''].filter(Boolean).join(' ')}
|
|
162
|
+
showHeader={showHeader}
|
|
163
|
+
status={TITLE_STATUS[verdict]}
|
|
164
|
+
title={copy.title}
|
|
165
|
+
subtitle={copy.description}
|
|
166
|
+
disclaimer={attemptsLabel}
|
|
167
|
+
ctaLabel={copy.ctaLabel}
|
|
168
|
+
secondaryCtaLabel={secondaryLabel}
|
|
169
|
+
// Figma pairs Retake | Continue side by side in the 342 column (IDC-35).
|
|
170
|
+
ctaOrientation={secondaryLabel ? 'row' : 'stacked'}
|
|
171
|
+
verifiedLabel={strings.verifiedLabel}
|
|
172
|
+
navLabel={strings.navLabel}
|
|
173
|
+
screenId={screenId}
|
|
174
|
+
overrides={overrides}
|
|
175
|
+
onAction={onAction}
|
|
176
|
+
{...shell}
|
|
177
|
+
>
|
|
178
|
+
{/* `mode="overlay"` on a LIGHT screen for the reason Core minted it:
|
|
179
|
+
it drops the stand-in camera plate, so the document's designed 7px
|
|
180
|
+
of air past the border stays the page surface instead of a dark
|
|
181
|
+
rectangle. The still, the border state and the encrypted row are
|
|
182
|
+
unaffected (DEVIATIONS.md #IDC-28). */}
|
|
183
|
+
<PrizmaIdCapture
|
|
184
|
+
type={documentType}
|
|
185
|
+
state={FRAME_STATE[verdict]}
|
|
186
|
+
isVertical={vertical}
|
|
187
|
+
mode="overlay"
|
|
188
|
+
encryptedLabel={strings.encryptedLabel}
|
|
189
|
+
still={still}
|
|
190
|
+
/>
|
|
191
|
+
</PrizmaResultScreen>
|
|
192
|
+
);
|
|
193
|
+
},
|
|
194
|
+
);
|
|
195
|
+
IdCaptureResultScreen.displayName = 'IdCaptureResultScreen';
|
|
196
|
+
|
|
197
|
+
export default IdCaptureResultScreen;
|