@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,88 @@
|
|
|
1
|
+
import React, { forwardRef } from 'react';
|
|
2
|
+
import { IconCameraFlip } from '@incodetech/prizma-core-icons';
|
|
3
|
+
import { PrizmaResultScreen, type PrizmaResultScreenProps } from './ResultScreen';
|
|
4
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
5
|
+
import type { VideoSelfieStrings } from './VideoSelfieStrings';
|
|
6
|
+
import './ScreenLayout.css';
|
|
7
|
+
|
|
8
|
+
export interface VideoSelfieFlipCameraScreenProps
|
|
9
|
+
extends Omit<
|
|
10
|
+
PrizmaResultScreenProps,
|
|
11
|
+
'status' | 'title' | 'subtitle' | 'children' | 'verifiedLabel' | 'navLabel'
|
|
12
|
+
> {
|
|
13
|
+
/** Module copy — this screen reads the `flipCamera` slice. */
|
|
14
|
+
strings: VideoSelfieStrings;
|
|
15
|
+
screenId?: string;
|
|
16
|
+
overrides?: PrizmaScreenOverrides;
|
|
17
|
+
onAction?: PrizmaScreenActionHandler;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Video Selfie — the camera-swap interstitial, built on the Result archetype
|
|
22
|
+
* (GUIDELINES.md §6-F). Figma: purple section `video selfie - flip camera
|
|
23
|
+
* 7.0 - switch to front`.
|
|
24
|
+
*
|
|
25
|
+
* The sibling of the flip-ID screen and deliberately its opposite: the camera
|
|
26
|
+
* is still open, so the section is drawn on the DARK surface with white copy.
|
|
27
|
+
* The archetype takes `theme="dark"` straight from `PrizmaScreenShell` — the
|
|
28
|
+
* same switch `DocumentCaptureCaptureScreen` uses — so the Title and every
|
|
29
|
+
* other token-bound child flips THROUGH the design system rather than around it
|
|
30
|
+
* (DEVIATIONS #DC-32). No hardcoded white anywhere.
|
|
31
|
+
*
|
|
32
|
+
* The mark is the canonical bank's `IconCameraFlip` in the archetype's own
|
|
33
|
+
* `glyph` slot (`PrizmaTitle.icon` only accepts status | spinner | none —
|
|
34
|
+
* DEVIATIONS #10), wrapped in the foundation's `__glyph` class so no module CSS
|
|
35
|
+
* is needed for it. No CTA and no verified tag: the section draws neither.
|
|
36
|
+
*
|
|
37
|
+
* Figma also draws the journey stepper at the top of this section. Archetype F
|
|
38
|
+
* has no slot for it and this module does not hand-roll one — reported.
|
|
39
|
+
*/
|
|
40
|
+
export const VideoSelfieFlipCameraScreen = forwardRef<
|
|
41
|
+
HTMLDivElement,
|
|
42
|
+
VideoSelfieFlipCameraScreenProps
|
|
43
|
+
>(
|
|
44
|
+
(
|
|
45
|
+
{
|
|
46
|
+
strings,
|
|
47
|
+
screenId = 'video-selfie-flip-camera',
|
|
48
|
+
/* A camera screen (dark, feed open, stepper drawn) — the chrome
|
|
49
|
+
contract drops the LOGO and keeps the footer (#VS-15). */
|
|
50
|
+
showHeader = false,
|
|
51
|
+
showFooter = true,
|
|
52
|
+
overrides,
|
|
53
|
+
onAction,
|
|
54
|
+
...shell
|
|
55
|
+
},
|
|
56
|
+
ref,
|
|
57
|
+
) => (
|
|
58
|
+
<PrizmaResultScreen
|
|
59
|
+
ref={ref}
|
|
60
|
+
theme="dark"
|
|
61
|
+
showHeader={showHeader}
|
|
62
|
+
showFooter={showFooter}
|
|
63
|
+
glyph={
|
|
64
|
+
<span
|
|
65
|
+
className={[
|
|
66
|
+
'prizma-screen-layout__glyph',
|
|
67
|
+
'prizma-screen-layout__glyph--neutral',
|
|
68
|
+
overrides?.align === 'left' ? 'prizma-screen-layout__glyph--left' : '',
|
|
69
|
+
]
|
|
70
|
+
.filter(Boolean)
|
|
71
|
+
.join(' ')}
|
|
72
|
+
>
|
|
73
|
+
<IconCameraFlip size="l" />
|
|
74
|
+
</span>
|
|
75
|
+
}
|
|
76
|
+
title={strings.flipCamera.title}
|
|
77
|
+
verifiedLabel={strings.verifiedLabel}
|
|
78
|
+
navLabel={strings.navLabel}
|
|
79
|
+
screenId={screenId}
|
|
80
|
+
overrides={overrides}
|
|
81
|
+
onAction={onAction}
|
|
82
|
+
{...shell}
|
|
83
|
+
/>
|
|
84
|
+
),
|
|
85
|
+
);
|
|
86
|
+
VideoSelfieFlipCameraScreen.displayName = 'VideoSelfieFlipCameraScreen';
|
|
87
|
+
|
|
88
|
+
export default VideoSelfieFlipCameraScreen;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import React, { forwardRef } from 'react';
|
|
2
|
+
import { PrizmaIllustrationIdFlip } from '@incodetech/prizma-core-web/illustration-id-flip';
|
|
3
|
+
import { PrizmaResultScreen, type PrizmaResultScreenProps } from './ResultScreen';
|
|
4
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
5
|
+
import type { VideoSelfieStrings } from './VideoSelfieStrings';
|
|
6
|
+
import './ScreenLayout.css';
|
|
7
|
+
|
|
8
|
+
export interface VideoSelfieFlipIdScreenProps
|
|
9
|
+
extends Omit<
|
|
10
|
+
PrizmaResultScreenProps,
|
|
11
|
+
'status' | 'title' | 'subtitle' | 'children' | 'verifiedLabel' | 'navLabel'
|
|
12
|
+
> {
|
|
13
|
+
/** Module copy — this screen reads the `flipId` slice. */
|
|
14
|
+
strings: VideoSelfieStrings;
|
|
15
|
+
screenId?: string;
|
|
16
|
+
overrides?: PrizmaScreenOverrides;
|
|
17
|
+
onAction?: PrizmaScreenActionHandler;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Video Selfie — the flip interstitial between the two document sides, built on
|
|
22
|
+
* the Result archetype (GUIDELINES.md §6-F). Figma: purple section
|
|
23
|
+
* `video selfie - flip id 4.0 - default`.
|
|
24
|
+
*
|
|
25
|
+
* The module's shortest screen and the one moment the camera closes: a bare H2
|
|
26
|
+
* over the spinning-card artwork, no logo, no CTA (the flow advances itself),
|
|
27
|
+
* no verified tag and — alone among the camera-adjacent sections — no stepper.
|
|
28
|
+
* The archetype covers it exactly: `status="none"` for the bare title, the
|
|
29
|
+
* artwork in `children`, no `ctaLabel` so no band renders, `showHeader={true}`
|
|
30
|
+
* to drop the logo while still reserving the nav row so the offsets match every
|
|
31
|
+
* other screen (owner rule 2026-08-18), and `showFooter={true}` — the chrome is constant (#PI-8/#F-34) — because the
|
|
32
|
+
* section draws no tag.
|
|
33
|
+
*
|
|
34
|
+
* The artwork is Core's `PrizmaIllustrationIdFlip` in its `interstitial`
|
|
35
|
+
* variant — the card spinning inside the static circular arrows, exactly what
|
|
36
|
+
* this moment was designed for. Never redrawn here (§7, §10). Identical
|
|
37
|
+
* treatment to `IdCaptureFlipScreen`, which is the point: the same beat looks
|
|
38
|
+
* the same in every module.
|
|
39
|
+
*/
|
|
40
|
+
export const VideoSelfieFlipIdScreen = forwardRef<
|
|
41
|
+
HTMLDivElement,
|
|
42
|
+
VideoSelfieFlipIdScreenProps
|
|
43
|
+
>(
|
|
44
|
+
(
|
|
45
|
+
{
|
|
46
|
+
strings,
|
|
47
|
+
screenId = 'video-selfie-flip-id',
|
|
48
|
+
showHeader = true,
|
|
49
|
+
showFooter = true,
|
|
50
|
+
overrides,
|
|
51
|
+
onAction,
|
|
52
|
+
...shell
|
|
53
|
+
},
|
|
54
|
+
ref,
|
|
55
|
+
) => (
|
|
56
|
+
<PrizmaResultScreen
|
|
57
|
+
ref={ref}
|
|
58
|
+
showHeader={showHeader}
|
|
59
|
+
showFooter={showFooter}
|
|
60
|
+
title={strings.flipId.title}
|
|
61
|
+
verifiedLabel={strings.verifiedLabel}
|
|
62
|
+
navLabel={strings.navLabel}
|
|
63
|
+
screenId={screenId}
|
|
64
|
+
overrides={overrides}
|
|
65
|
+
onAction={onAction}
|
|
66
|
+
{...shell}
|
|
67
|
+
>
|
|
68
|
+
<PrizmaIllustrationIdFlip variant="interstitial" />
|
|
69
|
+
</PrizmaResultScreen>
|
|
70
|
+
),
|
|
71
|
+
);
|
|
72
|
+
VideoSelfieFlipIdScreen.displayName = 'VideoSelfieFlipIdScreen';
|
|
73
|
+
|
|
74
|
+
export default VideoSelfieFlipIdScreen;
|
|
@@ -0,0 +1,213 @@
|
|
|
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 { PrizmaLoadingSpinner } from '@incodetech/prizma-core-web/loading-spinner';
|
|
7
|
+
import { PrizmaSnackbar } from '@incodetech/prizma-core-web/snackbar';
|
|
8
|
+
import { PrizmaStepper } from '@incodetech/prizma-core-web/stepper';
|
|
9
|
+
import { PrizmaTag } from '@incodetech/prizma-core-web/tag';
|
|
10
|
+
import { PrizmaScreenShell, type PrizmaScreenShellProps } from './ScreenShell';
|
|
11
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
12
|
+
import type {
|
|
13
|
+
VideoSelfieDocumentType,
|
|
14
|
+
VideoSelfieIdErrorSeverity,
|
|
15
|
+
VideoSelfieIdSide,
|
|
16
|
+
VideoSelfieStrings,
|
|
17
|
+
} from './VideoSelfieStrings';
|
|
18
|
+
import './ScreenLayout.css';
|
|
19
|
+
import './ViewfinderScreen.css';
|
|
20
|
+
import './VideoSelfieLayout.css';
|
|
21
|
+
|
|
22
|
+
/** Which purple stage section to render (groups 3, 5 and 6). */
|
|
23
|
+
export type VideoSelfieIdCaptureState =
|
|
24
|
+
| 'default'
|
|
25
|
+
| 'shown'
|
|
26
|
+
| 'processing'
|
|
27
|
+
| 'allGood'
|
|
28
|
+
| 'error';
|
|
29
|
+
|
|
30
|
+
/** Purple stage state → Core `PrizmaIdCapture` state. The frame border, the
|
|
31
|
+
* analyzing sweep, the scrim and the encrypted row are ALL Core's. */
|
|
32
|
+
const CAPTURE_STATE: Record<VideoSelfieIdCaptureState, PrizmaIdCaptureState> = {
|
|
33
|
+
default: 'empty',
|
|
34
|
+
shown: 'filled',
|
|
35
|
+
processing: 'analyzing',
|
|
36
|
+
allGood: 'success',
|
|
37
|
+
error: 'error',
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
/** Which beat of the seven-step journey each side occupies — front is step 2
|
|
41
|
+
* (the microphone grant is step 1), back is step 3. */
|
|
42
|
+
const STEP: Record<VideoSelfieIdSide, 2 | 3> = { front: 2, back: 3 };
|
|
43
|
+
|
|
44
|
+
export interface VideoSelfieIdCaptureScreenProps
|
|
45
|
+
extends Omit<PrizmaScreenShellProps, 'dark' | 'title' | 'children'> {
|
|
46
|
+
/** Module copy — this screen reads the `idCapture` slice (+ shared labels). */
|
|
47
|
+
strings: VideoSelfieStrings;
|
|
48
|
+
/** Which face of the document. Drives the stepper beat only — the frame
|
|
49
|
+
* geometry is identical (Figma draws no title on these sections). */
|
|
50
|
+
side?: VideoSelfieIdSide;
|
|
51
|
+
/** Which document the journey collects — Core `PrizmaIdCapture.type` and the
|
|
52
|
+
* Stepper's own `documentType`. Default `id`. */
|
|
53
|
+
documentType?: VideoSelfieDocumentType;
|
|
54
|
+
/** Which purple stage section to render. Default `default`. */
|
|
55
|
+
state?: VideoSelfieIdCaptureState;
|
|
56
|
+
/** Whether the rejection invites a retry (`6.1`/`6.3`) or is terminal
|
|
57
|
+
* (`6.2`/`6.4`). Read only when `state="error"`. */
|
|
58
|
+
errorSeverity?: VideoSelfieIdErrorSeverity;
|
|
59
|
+
/** Live camera feed (<video>) or sample still (<img>) behind the frame. */
|
|
60
|
+
camera?: ReactNode;
|
|
61
|
+
/** The captured document still, for the states Core draws one in. */
|
|
62
|
+
still?: ReactNode;
|
|
63
|
+
screenId?: string;
|
|
64
|
+
overrides?: PrizmaScreenOverrides;
|
|
65
|
+
onAction?: PrizmaScreenActionHandler;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Video Selfie — the document stage (Archetype D, GUIDELINES.md §6-D; always
|
|
70
|
+
* dark). ONE screen for TWELVE purple sections: `id capture front 3.0–3.3`,
|
|
71
|
+
* `id capture back 5.0–5.3` and every `id capture … errors 6.1–6.4` variant.
|
|
72
|
+
* They are `side` × `state` × `errorSeverity` variants of Core's
|
|
73
|
+
* `PrizmaIdCapture`, which is exactly how the component is axed.
|
|
74
|
+
*
|
|
75
|
+
* Composed like `IdCaptureStageScreen` / `DocumentCaptureCaptureScreen`: the
|
|
76
|
+
* feed runs full-bleed on `.prizma-viewfinder__surface` and
|
|
77
|
+
* `mode="overlay" scrim` cuts a transparent window through the veil, so Core
|
|
78
|
+
* owns the window, the tokenized scrim, the four border treatments, the
|
|
79
|
+
* analyzing sweep and the encrypted row. None of it is re-implemented (§7).
|
|
80
|
+
*
|
|
81
|
+
* Two things this module's Figma does that the foundation does not model, both
|
|
82
|
+
* reported rather than silently reshaped:
|
|
83
|
+
*
|
|
84
|
+
* - **The journey stepper.** Every camera section draws Core's `PrizmaStepper`
|
|
85
|
+
* in the band the logo nav normally occupies, and it is the ONLY difference
|
|
86
|
+
* between `3.0` and `5.0` — drop it and the front and back defaults render
|
|
87
|
+
* identically. No archetype has a slot for it. This screen owns its whole
|
|
88
|
+
* composition (archetype D is a recipe, not a component), so the band lives
|
|
89
|
+
* in `VideoSelfieLayout.css` and carries the foundation's own
|
|
90
|
+
* `--pcs-status-bar` reserve — no new number. The archetype-based screens of
|
|
91
|
+
* this module ship WITHOUT the stepper rather than growing a second copy.
|
|
92
|
+
*
|
|
93
|
+
* - **The status card.** Figma floats a dark rounded card OVER the document
|
|
94
|
+
* ("Processing…", "All good!", "Name verification failed, try again"). Core
|
|
95
|
+
* ships no such container, and inventing one is forbidden (rule 1), so the
|
|
96
|
+
* message rides in the band UNDER the frame using Core's own parts — the
|
|
97
|
+
* `PrizmaLoadingSpinner` for the in-flight beat and `PrizmaSnackbar`
|
|
98
|
+
* (`success` / `error`) for the verdicts. Core's frame border already carries
|
|
99
|
+
* the verdict colour, so nothing is lost but the overlap.
|
|
100
|
+
*
|
|
101
|
+
* No logo and NO encrypted row (the verified tag IS kept — capture screens drop only the logo, #VS-3): all twenty-four sections draw
|
|
102
|
+
* nothing at all between the bottom of the document frame and the bottom of the
|
|
103
|
+
* screen (GUIDELINES §1 — follow the module's section, not the default). Core's
|
|
104
|
+
* `showEncryptedLabel` is therefore pinned `false`: it is a `PrizmaIdCapture`
|
|
105
|
+
* default that other modules' Figma does draw, and leaving it on painted a lock
|
|
106
|
+
* + "All data is encrypted" row on every state of this stage. The label was
|
|
107
|
+
* dropped from `VideoSelfieStrings` with it — no other screen in the module
|
|
108
|
+
* reads one.
|
|
109
|
+
*/
|
|
110
|
+
export const VideoSelfieIdCaptureScreen = forwardRef<
|
|
111
|
+
HTMLDivElement,
|
|
112
|
+
VideoSelfieIdCaptureScreenProps
|
|
113
|
+
>(
|
|
114
|
+
(
|
|
115
|
+
{
|
|
116
|
+
strings,
|
|
117
|
+
side = 'front',
|
|
118
|
+
documentType = 'id',
|
|
119
|
+
state = 'default',
|
|
120
|
+
errorSeverity = 'tryAgain',
|
|
121
|
+
camera,
|
|
122
|
+
still,
|
|
123
|
+
screenId = `video-selfie-id-capture-${side}-${state}`,
|
|
124
|
+
overrides,
|
|
125
|
+
onAction,
|
|
126
|
+
className,
|
|
127
|
+
...shell
|
|
128
|
+
},
|
|
129
|
+
ref,
|
|
130
|
+
) => {
|
|
131
|
+
const errorLabel = strings.idCapture.errors[errorSeverity];
|
|
132
|
+
|
|
133
|
+
return (
|
|
134
|
+
<PrizmaScreenShell ref={ref} dark className={className} {...shell}>
|
|
135
|
+
<div className="prizma-viewfinder__surface">{camera}</div>
|
|
136
|
+
<div className="video-selfie-stepper">
|
|
137
|
+
<PrizmaStepper
|
|
138
|
+
steps={7}
|
|
139
|
+
currentState={STEP[side]}
|
|
140
|
+
documentType={documentType}
|
|
141
|
+
completedValueText={strings.stepperCompletedLabel}
|
|
142
|
+
/>
|
|
143
|
+
</div>
|
|
144
|
+
<div
|
|
145
|
+
className={[
|
|
146
|
+
'prizma-viewfinder__content',
|
|
147
|
+
overrides?.align === 'left' ? 'prizma-viewfinder__content--left' : '',
|
|
148
|
+
]
|
|
149
|
+
.filter(Boolean)
|
|
150
|
+
.join(' ')}
|
|
151
|
+
>
|
|
152
|
+
<div className="video-selfie-band" />
|
|
153
|
+
<PrizmaIdCapture
|
|
154
|
+
type={documentType}
|
|
155
|
+
state={CAPTURE_STATE[state]}
|
|
156
|
+
isVertical
|
|
157
|
+
mode="overlay"
|
|
158
|
+
scrim
|
|
159
|
+
showEncryptedLabel={false}
|
|
160
|
+
still={still}
|
|
161
|
+
/>
|
|
162
|
+
{/* Centred ON the frame, not below it — `3.2`/`5.2` put the spinner
|
|
163
|
+
and its caption over the document (DEVIATIONS #VS-7). */}
|
|
164
|
+
{state === 'processing' ? (
|
|
165
|
+
<div className="video-selfie-stage-status">
|
|
166
|
+
<PrizmaLoadingSpinner
|
|
167
|
+
showTitle
|
|
168
|
+
titleText={strings.idCapture.processingLabel}
|
|
169
|
+
loadingLabel={strings.idCapture.processingLabel}
|
|
170
|
+
/>
|
|
171
|
+
</div>
|
|
172
|
+
) : null}
|
|
173
|
+
{/* `3.3`/`5.3` and every `6.x` draw the verdict in the SAME dark card,
|
|
174
|
+
centred on the document, as `3.2`/`5.2` draw the spinner — three
|
|
175
|
+
identical Figma treatments had become two different ones once the
|
|
176
|
+
spinner moved (owner QA 2026-08-19). DEVIATIONS #VS-13. */}
|
|
177
|
+
{state === 'allGood' || state === 'error' ? (
|
|
178
|
+
<div className="video-selfie-stage-status">
|
|
179
|
+
{state === 'allGood' ? (
|
|
180
|
+
<PrizmaSnackbar state="success" role="status">
|
|
181
|
+
{strings.idCapture.successLabel}
|
|
182
|
+
</PrizmaSnackbar>
|
|
183
|
+
) : (
|
|
184
|
+
/* NOT `isMultiline`: that modifier switches the row to
|
|
185
|
+
`align-items: flex-start` so an icon anchors to the top of
|
|
186
|
+
WRAPPED text. The rejection copy renders on ONE line, so it
|
|
187
|
+
only pushed the icon 6.9px below the text centre
|
|
188
|
+
(owner-reported 2026-08-19: "the text is not even aligned to
|
|
189
|
+
the icon"). CORE REQUEST: have the Snackbar follow actual
|
|
190
|
+
wrapping rather than a prop the caller has to predict.
|
|
191
|
+
DEVIATIONS #VS-9. */
|
|
192
|
+
<PrizmaSnackbar state="error" role="alert">
|
|
193
|
+
{errorLabel}
|
|
194
|
+
</PrizmaSnackbar>
|
|
195
|
+
)}
|
|
196
|
+
</div>
|
|
197
|
+
) : null}
|
|
198
|
+
</div>
|
|
199
|
+
{/* Capture screens keep the FOOTER and drop only the logo — the chrome
|
|
200
|
+
contract in types.ts, and the same treatment `IdCaptureStageScreen`
|
|
201
|
+
gives its camera stage. The tag had been dropped entirely here, so
|
|
202
|
+
the attribution vanished on the module's densest screens
|
|
203
|
+
(owner-reported 2026-08-19). DEVIATIONS #VS-3. */}
|
|
204
|
+
<div className="prizma-screen-layout__footer">
|
|
205
|
+
<PrizmaTag label={strings.verifiedLabel} />
|
|
206
|
+
</div>
|
|
207
|
+
</PrizmaScreenShell>
|
|
208
|
+
);
|
|
209
|
+
},
|
|
210
|
+
);
|
|
211
|
+
VideoSelfieIdCaptureScreen.displayName = 'VideoSelfieIdCaptureScreen';
|
|
212
|
+
|
|
213
|
+
export default VideoSelfieIdCaptureScreen;
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
/* Video Selfie — module layout additions.
|
|
2
|
+
*
|
|
3
|
+
* ONLY what the foundation archetypes do not already own, and nothing that
|
|
4
|
+
* re-declares an archetype offset. Every value is a token; each departure from
|
|
5
|
+
* GUIDELINES.md is reported back to the owner (see the module's screen files
|
|
6
|
+
* and the agent's `archetypeGaps` report).
|
|
7
|
+
*
|
|
8
|
+
* The module's structural discovery is that EVERY camera screen in the flow —
|
|
9
|
+
* the two document stages, the liveness ring, the two spoken steps and two of
|
|
10
|
+
* the generic errors — draws Core's `PrizmaStepper` in the band the logo nav
|
|
11
|
+
* normally occupies. No archetype has a slot for it (reported), so the three
|
|
12
|
+
* screens whose whole composition this module owns (the document stage and the
|
|
13
|
+
* spoken step) carry the band here.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/* ── Journey stepper band ────────────────────────────────────────────────────
|
|
17
|
+
* Figma draws the Stepper as the first thing under the OS status bar — no logo
|
|
18
|
+
* row above it (`top content` frame, y=54, the Stepper 342 wide at x=24 on
|
|
19
|
+
* every section). The status-bar reserve is NOT a new number: it is the
|
|
20
|
+
* foundation's own `--pcs-status-bar` custom property, the same one
|
|
21
|
+
* `ScreenNav.css` and `ScreenLayout.css`'s `--no-nav` variant read, so a host
|
|
22
|
+
* that draws its own chrome still overrides it in one place.
|
|
23
|
+
*
|
|
24
|
+
* The horizontal inset is the content column's own Spacing/24 gutter — these
|
|
25
|
+
* screens have no `.prizma-screen-layout__content` wrapper (they are camera
|
|
26
|
+
* surfaces), so the band carries the same gutter Core's stage sits in.
|
|
27
|
+
*
|
|
28
|
+
* REPORTED: archetypes B (Capture), C (Processing), F (Result) and G (List)
|
|
29
|
+
* need a `stepper` slot in their nav band so the rest of the module's screens
|
|
30
|
+
* can draw it too. Nothing is worked around here — those screens ship WITHOUT
|
|
31
|
+
* the stepper rather than hand-rolling a second copy of this band. */
|
|
32
|
+
.video-selfie-stepper {
|
|
33
|
+
flex-shrink: 0;
|
|
34
|
+
/* Above PrizmaIdCapture's overlay scrim, which is an absolutely positioned
|
|
35
|
+
* box-shadow that would otherwise paint over this non-positioned sibling —
|
|
36
|
+
* the same reason `IdCaptureLayout.css` lifts its bands. */
|
|
37
|
+
position: relative;
|
|
38
|
+
/* z-index 2, not 1: PrizmaIdCapture's HUD bands ALSO lift themselves to 1, so
|
|
39
|
+
* at the same level DOM order decided and the scrim painted over the stepper
|
|
40
|
+
* (owner-reported 2026-08-19: "the stepper is not correctly visible and looks
|
|
41
|
+
* hidden, probably it's behind the overlay"). 2 is the anchored-chrome layer
|
|
42
|
+
* ScreenLayout.css already reserves for the tag and shutter, which must sit
|
|
43
|
+
* above the scrim for exactly the same reason. DEVIATIONS #VS-2. */
|
|
44
|
+
z-index: 2;
|
|
45
|
+
margin-top: var(--pcs-status-bar, 47px);
|
|
46
|
+
padding-inline: var(--prizma-spacing-24);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/* ── The flexible bands around a camera stage ────────────────────────────────
|
|
50
|
+
* Pure flex distribution — NO padding, NO margin, no spacing token at all. The
|
|
51
|
+
* band exists so the HUD copy (the recording indicator, the stage's status
|
|
52
|
+
* message) sits in the air the stage leaves, instead of the module inventing an
|
|
53
|
+
* offset the archetype layer would otherwise own. */
|
|
54
|
+
.video-selfie-band {
|
|
55
|
+
flex: 1;
|
|
56
|
+
min-height: 0;
|
|
57
|
+
display: flex;
|
|
58
|
+
flex-direction: column;
|
|
59
|
+
align-items: center;
|
|
60
|
+
justify-content: center;
|
|
61
|
+
width: 100%;
|
|
62
|
+
position: relative;
|
|
63
|
+
z-index: 1;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/* ── Recording indicator (10.1 / 11.1 / 11.3 / 11.5) ─────────────────────────
|
|
67
|
+
* A sound-wave glyph over the "Recording…" HUD line. The glyph ink is Core's
|
|
68
|
+
* own Static camera ink — the token `PrizmaCaptureManual` uses for the shutter
|
|
69
|
+
* — so it survives on the always-dark camera surface. The copy itself is the
|
|
70
|
+
* foundation's `.prizma-viewfinder__title`; nothing about it is re-declared. */
|
|
71
|
+
.video-selfie-recording {
|
|
72
|
+
display: flex;
|
|
73
|
+
flex-direction: column;
|
|
74
|
+
align-items: center;
|
|
75
|
+
gap: var(--prizma-spacing-16);
|
|
76
|
+
color: var(--prizma-icon-neutral-50-static);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/* ── The spoken-step card (groups 10 and 11) ─────────────────────────────────
|
|
80
|
+
* Figma layers Core's Modal over the live camera (`modal-light` instance). The
|
|
81
|
+
* safe presenter portals to `document.body`, which would escape the 390×844
|
|
82
|
+
* screen frame and the host's `transform: scale()`, so the screen owns the
|
|
83
|
+
* scrim and the panel and Core owns the card — the recipe Document Capture's
|
|
84
|
+
* method sheet already established (DEVIATIONS #DC-30). */
|
|
85
|
+
.video-selfie-sheet-scrim {
|
|
86
|
+
position: absolute;
|
|
87
|
+
inset: 0;
|
|
88
|
+
z-index: 2;
|
|
89
|
+
background: var(--prizma-surface-overlay);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.video-selfie-sheet-panel {
|
|
93
|
+
position: absolute;
|
|
94
|
+
left: 0;
|
|
95
|
+
right: 0;
|
|
96
|
+
bottom: 0;
|
|
97
|
+
z-index: 3;
|
|
98
|
+
padding: var(--prizma-spacing-16);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/* The confirmation dialog (10.4) is a true centred modal over a dimmed screen,
|
|
102
|
+
* not a bottom-anchored card. */
|
|
103
|
+
.video-selfie-sheet-panel--centered {
|
|
104
|
+
top: 0;
|
|
105
|
+
display: flex;
|
|
106
|
+
align-items: center;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/* The card's verdict mark (10.3 / 11.x success). The glyph itself is the
|
|
110
|
+
* canonical bank icon Core's own `PrizmaTitle` uses for `status: success`
|
|
111
|
+
* (`IconStatusPositive` at Title/Icon/Size); only the INK is set here, because
|
|
112
|
+
* Core's per-status tint lives on `.prizma-title__status-icon--success` and
|
|
113
|
+
* `PrizmaModalContent` has no status slot to inherit it from. Same treatment
|
|
114
|
+
* `IdCaptureLayout.css` gives the camera stage's nav icon. */
|
|
115
|
+
.video-selfie-sheet-status {
|
|
116
|
+
display: flex;
|
|
117
|
+
width: 100%;
|
|
118
|
+
justify-content: center;
|
|
119
|
+
color: var(--prizma-icon-status-positive);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.video-selfie-sheet-status > svg {
|
|
123
|
+
display: block;
|
|
124
|
+
width: var(--prizma-title-icon-size);
|
|
125
|
+
height: var(--prizma-title-icon-size);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/* ── The OS settings walk-through (2.5) ──────────────────────────────────────
|
|
129
|
+
* Two labelled sections inside archetype G's list slot: a numbered step list
|
|
130
|
+
* and a plain note. CONTENT typography only — the offset above the block is
|
|
131
|
+
* the archetype's `__list` Spacing/24 and is not touched. */
|
|
132
|
+
.video-selfie-steps {
|
|
133
|
+
display: flex;
|
|
134
|
+
flex-direction: column;
|
|
135
|
+
gap: var(--prizma-spacing-16);
|
|
136
|
+
width: 100%;
|
|
137
|
+
text-align: start;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
.video-selfie-steps__heading {
|
|
141
|
+
margin: 0;
|
|
142
|
+
font-family: var(--prizma-headline-family);
|
|
143
|
+
font-size: var(--prizma-headline-h5-font-size);
|
|
144
|
+
font-weight: var(--prizma-headline-h5-font-weight);
|
|
145
|
+
line-height: var(--prizma-headline-h5-line-height);
|
|
146
|
+
letter-spacing: var(--prizma-headline-h5-letter-spacing);
|
|
147
|
+
color: var(--prizma-text-body-800-primary);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
.video-selfie-steps__note {
|
|
151
|
+
margin: 0;
|
|
152
|
+
font-size: var(--prizma-body-m-regular-font-size);
|
|
153
|
+
font-weight: var(--prizma-body-m-regular-font-weight);
|
|
154
|
+
line-height: var(--prizma-body-m-regular-line-height);
|
|
155
|
+
color: var(--prizma-text-body-500-secondary);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/* ── The captured document inside the vertical frame ─────────────────────────
|
|
159
|
+
* Groups 3 and 5 draw the ID UPRIGHT in a portrait frame: the card is rotated a
|
|
160
|
+
* quarter turn so its long edge runs down the screen, exactly as `3.2` and
|
|
161
|
+
* `5.2` show it (the licence's text reads bottom-to-top).
|
|
162
|
+
*
|
|
163
|
+
* The sample scans are landscape (328×202). Dropped into a portrait frame with
|
|
164
|
+
* Core's `object-fit: cover` they scaled 4.2× to fill the height and lost their
|
|
165
|
+
* sides — the band of static the owner reported (2026-08-19: "horizontal and
|
|
166
|
+
* zoomed in to fit height, when it should be 90 degrees to fit the frame").
|
|
167
|
+
* Rotating instead of cropping keeps the whole document legible.
|
|
168
|
+
*
|
|
169
|
+
* `width`/`height` are swapped BEFORE the rotation because a rotated element
|
|
170
|
+
* still lays out on its pre-transform box: the image is sized to the frame's
|
|
171
|
+
* height × width, then turned, so it lands exactly frame-sized. No literal —
|
|
172
|
+
* both are percentages of whatever box Core gives it. DEVIATIONS #VS-6.
|
|
173
|
+
*/
|
|
174
|
+
/* The captured document is landscape (a card scan); the VERTICAL frame is
|
|
175
|
+
* portrait. `object-fit: cover` cropped its sides away and blew it up 4.2× —
|
|
176
|
+
* the band of static the owner reported. Figma turns the card a quarter turn
|
|
177
|
+
* instead, so the whole document stays legible with its text running up the
|
|
178
|
+
* side, exactly as `3.2` / `5.2` draw it.
|
|
179
|
+
*
|
|
180
|
+
* The image is sized to the frame's height × width BEFORE the turn, because a
|
|
181
|
+
* rotated element still lays out on its pre-transform box — so after the 90°
|
|
182
|
+
* it lands exactly frame-sized. Both values are percentages of whatever box
|
|
183
|
+
* Core gives it, so nothing is hardcoded. DEVIATIONS #VS-6. */
|
|
184
|
+
.prizma-id-capture--vertical .prizma-id-capture__still {
|
|
185
|
+
/* A size container, so the image can be measured against the frame's OWN
|
|
186
|
+
box — `cqh`/`cqw` below are the only way to swap width and height without
|
|
187
|
+
writing either number down. The frame has definite dimensions, which is
|
|
188
|
+
what `container-type: size` requires. */
|
|
189
|
+
container-type: size;
|
|
190
|
+
display: grid;
|
|
191
|
+
place-items: center;
|
|
192
|
+
overflow: hidden;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
.prizma-id-capture--vertical .prizma-id-capture__still > img {
|
|
196
|
+
/* Swapped on purpose: the image is laid out at the frame's HEIGHT × WIDTH,
|
|
197
|
+
then turned a quarter, so it lands exactly frame-sized. */
|
|
198
|
+
width: 100cqh;
|
|
199
|
+
height: 100cqw;
|
|
200
|
+
max-width: none;
|
|
201
|
+
object-fit: cover;
|
|
202
|
+
transform: rotate(90deg);
|
|
203
|
+
transform-origin: center;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
/* ── Stage status, centred ON the frame ──────────────────────────────────────
|
|
208
|
+
* `3.2` / `5.2` centre the spinner and its "Processing…" caption OVER the
|
|
209
|
+
* document, on the dark rounded container the design uses for stage status —
|
|
210
|
+
* not below the frame, where it sat (owner-reported 2026-08-19: "the processing
|
|
211
|
+
* loader looks broken in the bottom of the capture screen, it should be in the
|
|
212
|
+
* middle"). Absolutely positioned against the viewfinder content so the frame
|
|
213
|
+
* and the bands keep their own flex distribution untouched. DEVIATIONS #VS-7.
|
|
214
|
+
*/
|
|
215
|
+
.video-selfie-stage-status {
|
|
216
|
+
position: absolute;
|
|
217
|
+
inset: 0;
|
|
218
|
+
z-index: 2;
|
|
219
|
+
display: flex;
|
|
220
|
+
align-items: center;
|
|
221
|
+
justify-content: center;
|
|
222
|
+
pointer-events: none;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
.video-selfie-stage-status > * {
|
|
226
|
+
padding: var(--prizma-spacing-16) var(--prizma-spacing-24);
|
|
227
|
+
border-radius: var(--prizma-border-radius-medium);
|
|
228
|
+
background: var(--prizma-surface-neutral-900-80-static);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/* ── Tutorial step rows ──────────────────────────────────────────────────────
|
|
232
|
+
* The <ul> Core's `PrizmaList` would normally supply. Composed here only
|
|
233
|
+
* because the wrapper's icon variants cap at six rows and the tutorial draws
|
|
234
|
+
* seven (#VS-8); the gap is the variant's OWN Spacing/12 — nothing new.
|
|
235
|
+
*/
|
|
236
|
+
.video-selfie-tutorial-list {
|
|
237
|
+
display: flex;
|
|
238
|
+
flex-direction: column;
|
|
239
|
+
align-items: flex-start;
|
|
240
|
+
width: 100%;
|
|
241
|
+
margin: 0;
|
|
242
|
+
padding: 0;
|
|
243
|
+
list-style: none;
|
|
244
|
+
gap: var(--prizma-spacing-12);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/* Step rows — the <ol> `PrizmaList` would supply, composed here only because
|
|
248
|
+
* the wrapper has no variant reaching Core's plain `number` squircle (#VS-16).
|
|
249
|
+
* The gap is the icon family's own Spacing/12; nothing new is declared. */
|
|
250
|
+
.video-selfie-steps__rows {
|
|
251
|
+
display: flex;
|
|
252
|
+
flex-direction: column;
|
|
253
|
+
align-items: flex-start;
|
|
254
|
+
width: 100%;
|
|
255
|
+
margin: 0;
|
|
256
|
+
padding: 0;
|
|
257
|
+
list-style: none;
|
|
258
|
+
gap: var(--prizma-spacing-12);
|
|
259
|
+
}
|