@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,104 @@
|
|
|
1
|
+
import React, { forwardRef, type ReactNode } from 'react';
|
|
2
|
+
import { IconApproval, IconCamera, IconIdFrontScan } 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 { VideoSelfieStrings } from './VideoSelfieStrings';
|
|
7
|
+
import './ScreenLayout.css';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* The three reassurance rows, in Figma order: what the camera is used for, what
|
|
11
|
+
* it protects against, and why it cannot be skipped. Canonical bank glyphs, one
|
|
12
|
+
* per row — nothing drawn here (§10).
|
|
13
|
+
*/
|
|
14
|
+
const ROW_ICONS: ReactNode[] = [
|
|
15
|
+
<IconCamera key="camera" size="m" />,
|
|
16
|
+
<IconIdFrontScan key="scan" size="m" />,
|
|
17
|
+
<IconApproval key="approval" size="m" />,
|
|
18
|
+
];
|
|
19
|
+
|
|
20
|
+
export interface VideoSelfiePermissionRequiredScreenProps
|
|
21
|
+
extends Omit<
|
|
22
|
+
PrizmaListScreenProps,
|
|
23
|
+
| 'status'
|
|
24
|
+
| 'title'
|
|
25
|
+
| 'subtitle'
|
|
26
|
+
| 'children'
|
|
27
|
+
| 'ctaLabel'
|
|
28
|
+
| 'secondaryCtaLabel'
|
|
29
|
+
| 'linkLabel'
|
|
30
|
+
| 'verifiedLabel'
|
|
31
|
+
| 'navLabel'
|
|
32
|
+
> {
|
|
33
|
+
/** Module copy — this screen reads the `permission.required` slice. */
|
|
34
|
+
strings: VideoSelfieStrings;
|
|
35
|
+
screenId?: string;
|
|
36
|
+
overrides?: PrizmaScreenOverrides;
|
|
37
|
+
onAction?: PrizmaScreenActionHandler;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Video Selfie — "Camera permission is required", built on the List archetype
|
|
42
|
+
* (GUIDELINES.md §6-G). Figma: purple section `video selfie - permissions
|
|
43
|
+
* 2.2 - permission required`.
|
|
44
|
+
*
|
|
45
|
+
* The same shape ID Capture's permission screen already ships on this
|
|
46
|
+
* archetype: the warning status mark over the title, three reassurance rows in
|
|
47
|
+
* the middle, and a band whose tertiary link ("Quit process") sits ABOVE the
|
|
48
|
+
* primary — archetype G's own fixed position for the link, and where Figma
|
|
49
|
+
* draws it.
|
|
50
|
+
*
|
|
51
|
+
* The frame ends at the "Allow permission" button — no verified tag — so
|
|
52
|
+
* `showFooter` defaults to `true` (owner rule #PI-8/#F-34 — the chrome is
|
|
53
|
+
* constant across a module's states), as on all three permission sections. The
|
|
54
|
+
* tutorial sections DO draw the tag, which is what makes this a deliberate
|
|
55
|
+
* difference rather than an omission.
|
|
56
|
+
*
|
|
57
|
+
* Figma draws the orange mark as a standalone warning glyph above the title;
|
|
58
|
+
* Core's `PrizmaTitle` models exactly that as `icon={{ type: 'status' }}`, so
|
|
59
|
+
* the archetype's `status="warning"` carries it and no glyph slot is needed.
|
|
60
|
+
*/
|
|
61
|
+
export const VideoSelfiePermissionRequiredScreen = forwardRef<
|
|
62
|
+
HTMLDivElement,
|
|
63
|
+
VideoSelfiePermissionRequiredScreenProps
|
|
64
|
+
>(
|
|
65
|
+
(
|
|
66
|
+
{
|
|
67
|
+
strings,
|
|
68
|
+
screenId = 'video-selfie-permission-required',
|
|
69
|
+
showHeader = true,
|
|
70
|
+
showFooter = true,
|
|
71
|
+
overrides,
|
|
72
|
+
onAction,
|
|
73
|
+
...shell
|
|
74
|
+
},
|
|
75
|
+
ref,
|
|
76
|
+
) => (
|
|
77
|
+
<PrizmaListScreen
|
|
78
|
+
ref={ref}
|
|
79
|
+
showHeader={showHeader}
|
|
80
|
+
showFooter={showFooter}
|
|
81
|
+
status="warning"
|
|
82
|
+
title={strings.permission.required.title}
|
|
83
|
+
ctaLabel={strings.permission.required.ctaLabel}
|
|
84
|
+
linkLabel={strings.permission.required.quitLabel}
|
|
85
|
+
verifiedLabel={strings.verifiedLabel}
|
|
86
|
+
navLabel={strings.navLabel}
|
|
87
|
+
screenId={screenId}
|
|
88
|
+
overrides={overrides}
|
|
89
|
+
onAction={onAction}
|
|
90
|
+
{...shell}
|
|
91
|
+
>
|
|
92
|
+
<PrizmaCardListCommonIssues
|
|
93
|
+
items={strings.permission.required.rows.map((row, i) => ({
|
|
94
|
+
icon: ROW_ICONS[i % ROW_ICONS.length],
|
|
95
|
+
title: row,
|
|
96
|
+
showSubtitle: false,
|
|
97
|
+
}))}
|
|
98
|
+
/>
|
|
99
|
+
</PrizmaListScreen>
|
|
100
|
+
),
|
|
101
|
+
);
|
|
102
|
+
VideoSelfiePermissionRequiredScreen.displayName = 'VideoSelfiePermissionRequiredScreen';
|
|
103
|
+
|
|
104
|
+
export default VideoSelfiePermissionRequiredScreen;
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import React, { forwardRef, type ReactNode } from 'react';
|
|
2
|
+
import { PrizmaIllustrationSelfie } from '@incodetech/prizma-core-web/illustration-selfie';
|
|
3
|
+
import { PrizmaTutorialScreen, type PrizmaTutorialScreenProps } from './TutorialScreen';
|
|
4
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
5
|
+
import type { VideoSelfieStrings } from './VideoSelfieStrings';
|
|
6
|
+
import './ScreenLayout.css';
|
|
7
|
+
|
|
8
|
+
export interface VideoSelfiePermissionScreenProps
|
|
9
|
+
extends Omit<
|
|
10
|
+
PrizmaTutorialScreenProps,
|
|
11
|
+
| 'title'
|
|
12
|
+
| 'subtitle'
|
|
13
|
+
| 'disclaimer'
|
|
14
|
+
| 'ctaLabel'
|
|
15
|
+
| 'ctaLoadingLabel'
|
|
16
|
+
| 'linkLabel'
|
|
17
|
+
| 'verifiedLabel'
|
|
18
|
+
| 'navLabel'
|
|
19
|
+
| 'illustration'
|
|
20
|
+
> {
|
|
21
|
+
/** Module copy — this screen reads the `permission.request` slice. */
|
|
22
|
+
strings: VideoSelfieStrings;
|
|
23
|
+
/** Replace the default Core artwork (a host with its own permission art). */
|
|
24
|
+
illustration?: ReactNode;
|
|
25
|
+
screenId?: string;
|
|
26
|
+
overrides?: PrizmaScreenOverrides;
|
|
27
|
+
onAction?: PrizmaScreenActionHandler;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Video Selfie — the in-page camera request, built on the Tutorial archetype
|
|
32
|
+
* (GUIDELINES.md §6-A). Figma: purple section `video selfie - permissions
|
|
33
|
+
* 2.0 - web`.
|
|
34
|
+
*
|
|
35
|
+
* Archetype A covers it exactly: title block → one centred illustration in the
|
|
36
|
+
* flexible middle → CTA → tertiary link. The link ("Learn more") sits BELOW the
|
|
37
|
+
* primary, which is archetype A's own fixed position for it (the mirror of G) —
|
|
38
|
+
* and is where Figma draws it too.
|
|
39
|
+
*
|
|
40
|
+
* Figma draws no logo on this section; the nav row is still RESERVED
|
|
41
|
+
* (`showHeader={false}`) so the offsets match every other screen — owner rule
|
|
42
|
+
* 2026-08-18.
|
|
43
|
+
*
|
|
44
|
+
* It draws no verified tag either — the frame ends at "Learn more" — so
|
|
45
|
+
* `showFooter` defaults to `true`: Figma draws these sections bare, but the
|
|
46
|
+
* owner rule keeps the chrome constant across a module's states so nothing
|
|
47
|
+
* shifts between them (#PI-8, #F-34).
|
|
48
|
+
* The tutorial sections `1.0` / `1.2` DO draw the tag, which is what makes the
|
|
49
|
+
* permission frames a deliberate difference rather than an omission. The
|
|
50
|
+
* `#PI-8` / `#F-34` carve-out that keeps the chrome on bare frames covers
|
|
51
|
+
* connectivity and generic-error screens only; none of these is one.
|
|
52
|
+
*
|
|
53
|
+
* The artwork is Core's `PrizmaIllustrationSelfie`. Figma draws a bespoke
|
|
54
|
+
* camera-bracket cluster (four capability icons inside a viewfinder crop, with
|
|
55
|
+
* a check badge) that the Core illustration bank does not ship; drawing it here
|
|
56
|
+
* would mean inventing an asset (rule 1, §10), so the nearest canonical
|
|
57
|
+
* illustration is used and the gap is reported.
|
|
58
|
+
*
|
|
59
|
+
* Sections `2.1 - iOS+Android` and `2.4 - system modal` of the same group are
|
|
60
|
+
* NOT built: they are the OS's own permission alert and screen-capture dialog
|
|
61
|
+
* drawn as documentation. A screen composed only of Core components cannot
|
|
62
|
+
* render OS chrome, and faking it would ship a fake system UI — the same call
|
|
63
|
+
* ID Capture (#IDC-26) and Document Capture (#DC-20) already made.
|
|
64
|
+
*/
|
|
65
|
+
export const VideoSelfiePermissionScreen = forwardRef<
|
|
66
|
+
HTMLDivElement,
|
|
67
|
+
VideoSelfiePermissionScreenProps
|
|
68
|
+
>(
|
|
69
|
+
(
|
|
70
|
+
{
|
|
71
|
+
strings,
|
|
72
|
+
illustration,
|
|
73
|
+
screenId = 'video-selfie-permission-request',
|
|
74
|
+
showHeader = true,
|
|
75
|
+
showFooter = true,
|
|
76
|
+
overrides,
|
|
77
|
+
onAction,
|
|
78
|
+
...shell
|
|
79
|
+
},
|
|
80
|
+
ref,
|
|
81
|
+
) => (
|
|
82
|
+
<PrizmaTutorialScreen
|
|
83
|
+
ref={ref}
|
|
84
|
+
showHeader={showHeader}
|
|
85
|
+
showFooter={showFooter}
|
|
86
|
+
title={strings.permission.request.title}
|
|
87
|
+
subtitle={strings.permission.request.subtitle}
|
|
88
|
+
ctaLabel={strings.permission.request.ctaLabel}
|
|
89
|
+
linkLabel={strings.permission.request.learnMoreLabel}
|
|
90
|
+
illustration={illustration ?? <PrizmaIllustrationSelfie decorative />}
|
|
91
|
+
verifiedLabel={strings.verifiedLabel}
|
|
92
|
+
navLabel={strings.navLabel}
|
|
93
|
+
screenId={screenId}
|
|
94
|
+
overrides={overrides}
|
|
95
|
+
onAction={onAction}
|
|
96
|
+
{...shell}
|
|
97
|
+
/>
|
|
98
|
+
),
|
|
99
|
+
);
|
|
100
|
+
VideoSelfiePermissionScreen.displayName = 'VideoSelfiePermissionScreen';
|
|
101
|
+
|
|
102
|
+
export default VideoSelfiePermissionScreen;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import React, { forwardRef } from 'react';
|
|
2
|
+
import {
|
|
3
|
+
PrizmaProcessingScreen,
|
|
4
|
+
type PrizmaProcessingScreenProps,
|
|
5
|
+
} from './ProcessingScreen';
|
|
6
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
7
|
+
import type { VideoSelfieStrings } from './VideoSelfieStrings';
|
|
8
|
+
import './ScreenLayout.css';
|
|
9
|
+
|
|
10
|
+
export interface VideoSelfieProcessingScreenProps
|
|
11
|
+
extends Omit<
|
|
12
|
+
PrizmaProcessingScreenProps,
|
|
13
|
+
'status' | 'title' | 'subtitle' | 'verifiedLabel' | 'navLabel'
|
|
14
|
+
> {
|
|
15
|
+
/** Module copy — this screen reads the `processing` slice. */
|
|
16
|
+
strings: VideoSelfieStrings;
|
|
17
|
+
screenId?: string;
|
|
18
|
+
overrides?: PrizmaScreenOverrides;
|
|
19
|
+
onAction?: PrizmaScreenActionHandler;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Video Selfie — the upload/analysis wait, built on the Processing archetype
|
|
24
|
+
* (GUIDELINES.md §6-C). Figma: purple section `video selfie - processing
|
|
25
|
+
* 12.0 - default`.
|
|
26
|
+
*
|
|
27
|
+
* The pure spinner case: a centred spinner over the title and its "kindly hold
|
|
28
|
+
* on" line, the verified tag anchored at the bottom, no CTA — which is exactly
|
|
29
|
+
* why archetype C exists and why this is not archetype F. The camera has closed
|
|
30
|
+
* by this point, so the screen follows the app theme like any ordinary screen.
|
|
31
|
+
*
|
|
32
|
+
* Figma draws no logo on the section; the nav row is still RESERVED
|
|
33
|
+
* (`showHeader={false}`) so the offsets match every other screen (owner rule
|
|
34
|
+
* 2026-08-18).
|
|
35
|
+
*/
|
|
36
|
+
export const VideoSelfieProcessingScreen = forwardRef<
|
|
37
|
+
HTMLDivElement,
|
|
38
|
+
VideoSelfieProcessingScreenProps
|
|
39
|
+
>(
|
|
40
|
+
(
|
|
41
|
+
{
|
|
42
|
+
strings,
|
|
43
|
+
screenId = 'video-selfie-processing',
|
|
44
|
+
showHeader = true,
|
|
45
|
+
overrides,
|
|
46
|
+
onAction,
|
|
47
|
+
...shell
|
|
48
|
+
},
|
|
49
|
+
ref,
|
|
50
|
+
) => (
|
|
51
|
+
<PrizmaProcessingScreen
|
|
52
|
+
ref={ref}
|
|
53
|
+
showHeader={showHeader}
|
|
54
|
+
status="loading"
|
|
55
|
+
title={strings.processing.title}
|
|
56
|
+
subtitle={strings.processing.subtitle}
|
|
57
|
+
verifiedLabel={strings.verifiedLabel}
|
|
58
|
+
navLabel={strings.navLabel}
|
|
59
|
+
screenId={screenId}
|
|
60
|
+
overrides={overrides}
|
|
61
|
+
onAction={onAction}
|
|
62
|
+
{...shell}
|
|
63
|
+
/>
|
|
64
|
+
),
|
|
65
|
+
);
|
|
66
|
+
VideoSelfieProcessingScreen.displayName = 'VideoSelfieProcessingScreen';
|
|
67
|
+
|
|
68
|
+
export default VideoSelfieProcessingScreen;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import React, { forwardRef } from 'react';
|
|
2
|
+
import { PrizmaListItem } from '@incodetech/prizma-core-web/list';
|
|
3
|
+
import { PrizmaListScreen, type PrizmaListScreenProps } from './ListScreen';
|
|
4
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
5
|
+
import type { VideoSelfieStrings } from './VideoSelfieStrings';
|
|
6
|
+
import './ScreenLayout.css';
|
|
7
|
+
|
|
8
|
+
export interface VideoSelfieRetryScreenProps
|
|
9
|
+
extends Omit<
|
|
10
|
+
PrizmaListScreenProps,
|
|
11
|
+
| 'status'
|
|
12
|
+
| 'title'
|
|
13
|
+
| 'subtitle'
|
|
14
|
+
| 'children'
|
|
15
|
+
| 'ctaLabel'
|
|
16
|
+
| 'secondaryCtaLabel'
|
|
17
|
+
| 'linkLabel'
|
|
18
|
+
| 'verifiedLabel'
|
|
19
|
+
| 'navLabel'
|
|
20
|
+
> {
|
|
21
|
+
/** Module copy — this screen reads the `errors.retry` slice. */
|
|
22
|
+
strings: VideoSelfieStrings;
|
|
23
|
+
screenId?: string;
|
|
24
|
+
overrides?: PrizmaScreenOverrides;
|
|
25
|
+
onAction?: PrizmaScreenActionHandler;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Video Selfie — the recoverable "something went wrong" with the coaching list,
|
|
30
|
+
* built on the List archetype (GUIDELINES.md §6-G). Figma: purple section
|
|
31
|
+
* `video selfie - general errors 14.1 - retry`.
|
|
32
|
+
*
|
|
33
|
+
* The one section of group 14 that is NOT archetype F: the middle is a numbered
|
|
34
|
+
* list of three things to do differently, spanning the column from the top,
|
|
35
|
+
* which is exactly the distinction `ScreenLayout.css` draws between `__flex`
|
|
36
|
+
* (centred illustration) and `__list`. The rows are Core's `PrizmaList`
|
|
37
|
+
* (`variant="circles"`) verbatim, and the Spacing/24 above them is the
|
|
38
|
+
* archetype's.
|
|
39
|
+
*
|
|
40
|
+
* The title carries no status mark — Figma draws the bare H2 here, unlike its
|
|
41
|
+
* three sibling errors — so the archetype's default `status="none"` stands.
|
|
42
|
+
* Chrome follows the module's error family (owner rule `#PI-8` / `#F-34`):
|
|
43
|
+
* header and tag both stay.
|
|
44
|
+
*/
|
|
45
|
+
export const VideoSelfieRetryScreen = forwardRef<
|
|
46
|
+
HTMLDivElement,
|
|
47
|
+
VideoSelfieRetryScreenProps
|
|
48
|
+
>(
|
|
49
|
+
(
|
|
50
|
+
{
|
|
51
|
+
strings,
|
|
52
|
+
screenId = 'video-selfie-error-retry',
|
|
53
|
+
overrides,
|
|
54
|
+
onAction,
|
|
55
|
+
...shell
|
|
56
|
+
},
|
|
57
|
+
ref,
|
|
58
|
+
) => {
|
|
59
|
+
const slice = strings.errors.retry;
|
|
60
|
+
|
|
61
|
+
return (
|
|
62
|
+
<PrizmaListScreen
|
|
63
|
+
ref={ref}
|
|
64
|
+
title={slice.title}
|
|
65
|
+
ctaLabel={slice.ctaLabel}
|
|
66
|
+
verifiedLabel={strings.verifiedLabel}
|
|
67
|
+
navLabel={strings.navLabel}
|
|
68
|
+
screenId={screenId}
|
|
69
|
+
/* Left-aligned, like `2.5`/`2.6`: a centred headline above a
|
|
70
|
+
left-led numbered list reads as a mistake (#VS-14). */
|
|
71
|
+
overrides={{ align: 'left', ...overrides }}
|
|
72
|
+
onAction={onAction}
|
|
73
|
+
{...shell}
|
|
74
|
+
>
|
|
75
|
+
{/* Core's `number` item is the 40×40 SQUIRCLE Figma draws;
|
|
76
|
+
`PrizmaList variant="circles"` maps to `number-circled`, a full round,
|
|
77
|
+
and the wrapper offers no variant reaching it — so the rows are
|
|
78
|
+
composed directly (#VS-8 precedent). DEVIATIONS #VS-16. */}
|
|
79
|
+
<ol className="video-selfie-steps__rows">
|
|
80
|
+
{slice.tips.map((tip, i) => (
|
|
81
|
+
<li key={i}>
|
|
82
|
+
<PrizmaListItem variant="number" number={i + 1} label={tip} />
|
|
83
|
+
</li>
|
|
84
|
+
))}
|
|
85
|
+
</ol>
|
|
86
|
+
</PrizmaListScreen>
|
|
87
|
+
);
|
|
88
|
+
},
|
|
89
|
+
);
|
|
90
|
+
VideoSelfieRetryScreen.displayName = 'VideoSelfieRetryScreen';
|
|
91
|
+
|
|
92
|
+
export default VideoSelfieRetryScreen;
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import React, { forwardRef, type ReactNode } from 'react';
|
|
2
|
+
import type { PrizmaSelfieCaptureState } from '@incodetech/prizma-core-web/selfie-capture';
|
|
3
|
+
import { PrizmaCaptureScreen, type PrizmaCaptureScreenProps } from './CaptureScreen';
|
|
4
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
5
|
+
import type { VideoSelfieFeedbackKind, VideoSelfieStrings } from './VideoSelfieStrings';
|
|
6
|
+
import './ScreenLayout.css';
|
|
7
|
+
|
|
8
|
+
/** Which purple liveness section to render (group 8). */
|
|
9
|
+
export type VideoSelfieSelfieState = 'start' | 'processing' | 'success' | 'failed';
|
|
10
|
+
|
|
11
|
+
/** Purple state → Core `PrizmaSelfieCapture` state. Core models the in-flight
|
|
12
|
+
* and verdict beats as capture STATES — the ring dissolves into the spinner or
|
|
13
|
+
* the status mark in its own slot (DEVIATIONS #11) — so all four are one
|
|
14
|
+
* archetype call, not a separate processing screen. */
|
|
15
|
+
const CAPTURE_STATE: Record<VideoSelfieSelfieState, PrizmaSelfieCaptureState> = {
|
|
16
|
+
start: 'ready',
|
|
17
|
+
processing: 'uploading',
|
|
18
|
+
success: 'success',
|
|
19
|
+
failed: 'error',
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export interface VideoSelfieSelfieCaptureScreenProps
|
|
23
|
+
extends Omit<
|
|
24
|
+
PrizmaCaptureScreenProps,
|
|
25
|
+
'state' | 'feedbackText' | 'statusLabels' | 'verifiedLabel' | 'navLabel'
|
|
26
|
+
> {
|
|
27
|
+
/** Module copy — this screen reads the `selfieCapture` slice. */
|
|
28
|
+
strings: VideoSelfieStrings;
|
|
29
|
+
/** Which purple section of group 8 to render. Default `start`. */
|
|
30
|
+
state?: VideoSelfieSelfieState;
|
|
31
|
+
/**
|
|
32
|
+
* Which of group 9's ELEVEN live-feedback lines to show under the ring.
|
|
33
|
+
* Only meaningful while the ring is live (`state="start"`): the sections of
|
|
34
|
+
* group 9 are that same frame with a different instruction. Omit for `8.0`,
|
|
35
|
+
* which shows the plain "Look at your front camera" line.
|
|
36
|
+
*/
|
|
37
|
+
feedback?: VideoSelfieFeedbackKind;
|
|
38
|
+
/** Live camera feed (<video>) or sample still (<img>). */
|
|
39
|
+
camera?: ReactNode;
|
|
40
|
+
screenId?: string;
|
|
41
|
+
overrides?: PrizmaScreenOverrides;
|
|
42
|
+
onAction?: PrizmaScreenActionHandler;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Video Selfie — the liveness ring (Archetype B, GUIDELINES.md §6-B).
|
|
47
|
+
* ONE screen for FIFTEEN purple sections: `selfie capture 8.0–8.3` and every
|
|
48
|
+
* `selfie capture feedback 9.1–9.11` message. They are `state` × `feedbackText`
|
|
49
|
+
* variants of Core's `PrizmaSelfieCapture`, which owns the ring, the
|
|
50
|
+
* silhouette, the ring offset (40), the instruction gap (32), the instruction
|
|
51
|
+
* typography and every verdict treatment. None of it is re-implemented (§7),
|
|
52
|
+
* and this file declares no layout at all.
|
|
53
|
+
*
|
|
54
|
+
* **Figma vs Core — Core wins, reported.** These sections draw the camera
|
|
55
|
+
* FULL-BLEED behind a scrimmed ring, on a black surface. Core's
|
|
56
|
+
* `PrizmaSelfieCapture` puts the feed inside the ring's circular window on a
|
|
57
|
+
* light surface, and pins light while the feed is open on purpose — "the
|
|
58
|
+
* capture screen stays WHITE in both modes, light is needed for the shot"
|
|
59
|
+
* (owner decision 2026-07-14, DEVIATIONS #F-27). Reshaping it here would mean
|
|
60
|
+
* re-implementing a Core primitive with a second full-bleed recipe, so the
|
|
61
|
+
* screen ships Core's treatment and the divergence is logged, exactly as the
|
|
62
|
+
* Face Capture pilot settled it.
|
|
63
|
+
*
|
|
64
|
+
* Figma also draws the journey stepper at the top of all fifteen sections.
|
|
65
|
+
* Archetype B has no slot for it and this module does not hand-roll one —
|
|
66
|
+
* reported. Nothing collapses without it: the four states and the eleven
|
|
67
|
+
* messages already render distinctly through Core's own ring treatments and
|
|
68
|
+
* instruction copy.
|
|
69
|
+
*/
|
|
70
|
+
export const VideoSelfieSelfieCaptureScreen = forwardRef<
|
|
71
|
+
HTMLDivElement,
|
|
72
|
+
VideoSelfieSelfieCaptureScreenProps
|
|
73
|
+
>(
|
|
74
|
+
(
|
|
75
|
+
{
|
|
76
|
+
strings,
|
|
77
|
+
state = 'start',
|
|
78
|
+
feedback,
|
|
79
|
+
camera,
|
|
80
|
+
screenId = `video-selfie-selfie-capture-${feedback ?? state}`,
|
|
81
|
+
overrides,
|
|
82
|
+
onAction,
|
|
83
|
+
...shell
|
|
84
|
+
},
|
|
85
|
+
ref,
|
|
86
|
+
) => {
|
|
87
|
+
const slice = strings.selfieCapture;
|
|
88
|
+
/* The live ring carries an instruction; the in-flight and verdict beats
|
|
89
|
+
carry Core's own status copy instead (its `statusLabels` slot), which is
|
|
90
|
+
why the feedback line is scoped to the live state. */
|
|
91
|
+
const feedbackText =
|
|
92
|
+
CAPTURE_STATE[state] === 'ready'
|
|
93
|
+
? feedback
|
|
94
|
+
? slice.feedback[feedback]
|
|
95
|
+
: slice.startLabel
|
|
96
|
+
: undefined;
|
|
97
|
+
|
|
98
|
+
return (
|
|
99
|
+
<PrizmaCaptureScreen
|
|
100
|
+
ref={ref}
|
|
101
|
+
state={CAPTURE_STATE[state]}
|
|
102
|
+
cameraOpen={state === 'start'}
|
|
103
|
+
camera={camera}
|
|
104
|
+
feedbackText={feedbackText}
|
|
105
|
+
statusLabels={{
|
|
106
|
+
uploading: slice.processingLabel,
|
|
107
|
+
success: slice.successLabel,
|
|
108
|
+
error: slice.failedLabel,
|
|
109
|
+
}}
|
|
110
|
+
verifiedLabel={strings.verifiedLabel}
|
|
111
|
+
navLabel={strings.navLabel}
|
|
112
|
+
screenId={screenId}
|
|
113
|
+
overrides={overrides}
|
|
114
|
+
onAction={onAction}
|
|
115
|
+
{...shell}
|
|
116
|
+
/>
|
|
117
|
+
);
|
|
118
|
+
},
|
|
119
|
+
);
|
|
120
|
+
VideoSelfieSelfieCaptureScreen.displayName = 'VideoSelfieSelfieCaptureScreen';
|
|
121
|
+
|
|
122
|
+
export default VideoSelfieSelfieCaptureScreen;
|