@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
package/src/flows.ts
ADDED
|
@@ -0,0 +1,711 @@
|
|
|
1
|
+
// Per-module screen sequences — the data the FlowPlayer prototypes step
|
|
2
|
+
// through. A flow is pure data: ordered `{ screenId, component }` entries plus
|
|
3
|
+
// the fixed `variant` props that pin a component to ONE Figma spec section when
|
|
4
|
+
// a single component covers several (GUIDELINES.md §8).
|
|
5
|
+
//
|
|
6
|
+
// Flows carry NO copy: every screen takes the module's one `strings` object, so
|
|
7
|
+
// the player renders `<step.component strings={strings} {...step.variant} />`.
|
|
8
|
+
|
|
9
|
+
import type { ComponentType } from 'react';
|
|
10
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
11
|
+
import type {
|
|
12
|
+
FaceCaptureCapturingState,
|
|
13
|
+
FaceCaptureStrings,
|
|
14
|
+
} from './FaceCaptureStrings';
|
|
15
|
+
import { FaceCaptureTutorialScreen } from './FaceCaptureTutorialScreen';
|
|
16
|
+
import { FaceCaptureCapturingScreen } from './FaceCaptureCapturingScreen';
|
|
17
|
+
import { FaceCaptureManualCaptureScreen } from './FaceCaptureManualCaptureScreen';
|
|
18
|
+
import { FaceCaptureLoadingScreen } from './FaceCaptureLoadingScreen';
|
|
19
|
+
import { FaceCaptureResultSuccessScreen } from './FaceCaptureResultSuccessScreen';
|
|
20
|
+
import { FaceCaptureResultErrorScreen } from './FaceCaptureResultErrorScreen';
|
|
21
|
+
import { FaceCaptureNoConnectionScreen } from './FaceCaptureNoConnectionScreen';
|
|
22
|
+
import type {
|
|
23
|
+
FaceMatchComparisonVariant,
|
|
24
|
+
FaceMatchLivenessVerdict,
|
|
25
|
+
FaceMatchResultStatus,
|
|
26
|
+
FaceMatchStrings,
|
|
27
|
+
} from './FaceMatchStrings';
|
|
28
|
+
import { FaceMatchComparisonScreen } from './FaceMatchComparisonScreen';
|
|
29
|
+
import { FaceMatchComparisonCompactScreen } from './FaceMatchComparisonCompactScreen';
|
|
30
|
+
import { FaceMatchResultScreen } from './FaceMatchResultScreen';
|
|
31
|
+
import type {
|
|
32
|
+
DocumentCaptureConfirmStage,
|
|
33
|
+
DocumentCaptureMethodSelectionVariant,
|
|
34
|
+
DocumentCaptureStrings,
|
|
35
|
+
DocumentCaptureTutorialVariant,
|
|
36
|
+
} from './DocumentCaptureStrings';
|
|
37
|
+
import { DocumentCaptureTutorialScreen } from './DocumentCaptureTutorialScreen';
|
|
38
|
+
import { DocumentCaptureMethodSelectionScreen } from './DocumentCaptureMethodSelectionScreen';
|
|
39
|
+
import { DocumentCaptureCaptureScreen } from './DocumentCaptureCaptureScreen';
|
|
40
|
+
import { DocumentCaptureConfirmImageScreen } from './DocumentCaptureConfirmImageScreen';
|
|
41
|
+
import { DocumentCaptureConfirmUploadScreen } from './DocumentCaptureConfirmUploadScreen';
|
|
42
|
+
import { DocumentCaptureNextPageScreen } from './DocumentCaptureNextPageScreen';
|
|
43
|
+
import { DocumentCaptureCommonIssuesScreen } from './DocumentCaptureCommonIssuesScreen';
|
|
44
|
+
import { DocumentCaptureGenericErrorScreen } from './DocumentCaptureGenericErrorScreen';
|
|
45
|
+
import { DocumentCaptureNoConnectionScreen } from './DocumentCaptureNoConnectionScreen';
|
|
46
|
+
import type {
|
|
47
|
+
IdCaptureDocumentType,
|
|
48
|
+
IdCaptureSide,
|
|
49
|
+
IdCaptureStageState,
|
|
50
|
+
IdCaptureStrings,
|
|
51
|
+
} from './IdCaptureStrings';
|
|
52
|
+
import {
|
|
53
|
+
IdCaptureTutorialScreen,
|
|
54
|
+
type IdCaptureTutorialVariant,
|
|
55
|
+
} from './IdCaptureTutorialScreen';
|
|
56
|
+
import { IdCaptureStageScreen } from './IdCaptureStageScreen';
|
|
57
|
+
import {
|
|
58
|
+
IdCaptureResultScreen,
|
|
59
|
+
type IdCaptureResultVerdict,
|
|
60
|
+
} from './IdCaptureResultScreen';
|
|
61
|
+
import { IdCaptureAnalyzingScreen } from './IdCaptureAnalyzingScreen';
|
|
62
|
+
import { IdCaptureFlipScreen } from './IdCaptureFlipScreen';
|
|
63
|
+
import { IdCaptureHoldOnScreen } from './IdCaptureHoldOnScreen';
|
|
64
|
+
import { IdCaptureNoConnectionScreen } from './IdCaptureNoConnectionScreen';
|
|
65
|
+
import { IdCaptureDocumentSelectionScreen } from './IdCaptureDocumentSelectionScreen';
|
|
66
|
+
import { IdCaptureAgeVerificationScreen } from './IdCaptureAgeVerificationScreen';
|
|
67
|
+
import { IdCaptureCommonIssuesScreen } from './IdCaptureCommonIssuesScreen';
|
|
68
|
+
import { IdCapturePermissionScreen } from './IdCapturePermissionScreen';
|
|
69
|
+
import { IdCaptureDocumentErrorScreen } from './IdCaptureDocumentErrorScreen';
|
|
70
|
+
|
|
71
|
+
/** The prop shape EVERY Face Capture screen accepts — the flow player needs
|
|
72
|
+
* nothing more to render any step. */
|
|
73
|
+
export interface FaceCaptureScreenProps {
|
|
74
|
+
strings: FaceCaptureStrings;
|
|
75
|
+
screenId?: string;
|
|
76
|
+
overrides?: PrizmaScreenOverrides;
|
|
77
|
+
onAction?: PrizmaScreenActionHandler;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/** Fixed variant props: they select the Figma spec section, never the copy. */
|
|
81
|
+
export interface FaceCaptureFlowVariant {
|
|
82
|
+
/** FaceCaptureTutorialScreen — `faceCapture.tutorial.loading`. */
|
|
83
|
+
ctaLoading?: boolean;
|
|
84
|
+
/** FaceCaptureCapturingScreen — which of the 15 `capturing.*` sections. */
|
|
85
|
+
state?: FaceCaptureCapturingState;
|
|
86
|
+
/** FaceCaptureLoadingScreen — `loading.uploading` vs `loading.processing`. */
|
|
87
|
+
stage?: 'uploading' | 'processing';
|
|
88
|
+
/** FaceCaptureResultErrorScreen — the `*Exhausted` half of the error pairs. */
|
|
89
|
+
exhausted?: boolean;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export interface FaceCaptureFlowStep {
|
|
93
|
+
/** Stable screen id — also what the screen reports through `onAction`. */
|
|
94
|
+
screenId: string;
|
|
95
|
+
component: ComponentType<FaceCaptureScreenProps>;
|
|
96
|
+
variant?: FaceCaptureFlowVariant;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Face Capture — the happy path, in the order the purple Figma sections are
|
|
101
|
+
* numbered (1 tutorial → 2 capturing → 3 manualCapture → 4 loading →
|
|
102
|
+
* 5 resultSuccess), which is also GUIDELINES.md §8's canonical capture
|
|
103
|
+
* sequence.
|
|
104
|
+
*
|
|
105
|
+
* `faceCapture.resultError.*` and `faceCapture.genericErrors.noConnection` are
|
|
106
|
+
* NOT steps: they are branches the host swaps in when a verdict or the network
|
|
107
|
+
* fails. They are exported separately so a player can offer them without
|
|
108
|
+
* implying they follow success.
|
|
109
|
+
*/
|
|
110
|
+
export const faceCaptureFlow: readonly FaceCaptureFlowStep[] = [
|
|
111
|
+
{ screenId: 'face-capture-tutorial', component: FaceCaptureTutorialScreen },
|
|
112
|
+
{
|
|
113
|
+
screenId: 'face-capture-capturing',
|
|
114
|
+
component: FaceCaptureCapturingScreen,
|
|
115
|
+
variant: { state: 'initiating' },
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
screenId: 'face-capture-capturing-align',
|
|
119
|
+
component: FaceCaptureCapturingScreen,
|
|
120
|
+
variant: { state: 'alignFace' },
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
screenId: 'face-capture-capturing-ready',
|
|
124
|
+
component: FaceCaptureCapturingScreen,
|
|
125
|
+
variant: { state: 'getReady' },
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
screenId: 'face-capture-uploading',
|
|
129
|
+
component: FaceCaptureLoadingScreen,
|
|
130
|
+
variant: { stage: 'uploading' },
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
screenId: 'face-capture-processing',
|
|
134
|
+
component: FaceCaptureLoadingScreen,
|
|
135
|
+
variant: { stage: 'processing' },
|
|
136
|
+
},
|
|
137
|
+
{ screenId: 'face-capture-success', component: FaceCaptureResultSuccessScreen },
|
|
138
|
+
];
|
|
139
|
+
|
|
140
|
+
/** The off-path screens: manual capture (offered when auto-capture is turned
|
|
141
|
+
* off or gives up), the two error verdicts, and the connectivity error. */
|
|
142
|
+
export const faceCaptureBranches: readonly FaceCaptureFlowStep[] = [
|
|
143
|
+
{
|
|
144
|
+
screenId: 'face-capture-manual-capture',
|
|
145
|
+
component: FaceCaptureManualCaptureScreen,
|
|
146
|
+
},
|
|
147
|
+
{ screenId: 'face-capture-error', component: FaceCaptureResultErrorScreen },
|
|
148
|
+
{
|
|
149
|
+
screenId: 'face-capture-error-exhausted',
|
|
150
|
+
component: FaceCaptureResultErrorScreen,
|
|
151
|
+
variant: { exhausted: true },
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
screenId: 'face-capture-no-connection',
|
|
155
|
+
component: FaceCaptureNoConnectionScreen,
|
|
156
|
+
},
|
|
157
|
+
];
|
|
158
|
+
|
|
159
|
+
/* ── Face Match ─────────────────────────────────────────────────────────────
|
|
160
|
+
* Purple sections of the Face Match Figma file (BXeJ6Q3TXahJVWEt8QoMVA, page
|
|
161
|
+
* 18:19332): faceMatch.comparison (5) · comparisonCompact (1) · error (3) ·
|
|
162
|
+
* success (3).
|
|
163
|
+
*
|
|
164
|
+
* NOTE ON REUSE: no Face Capture component appears in these flows. Face Match
|
|
165
|
+
* ships no tutorial and no capture stage — its images come from the modules
|
|
166
|
+
* upstream — and its three screens each differ structurally from the Face
|
|
167
|
+
* Capture screen they superficially resemble: the comparison view is a new
|
|
168
|
+
* two/three-photo composition, `comparisonCompact.matching` really centers (so
|
|
169
|
+
* it is archetype C, while FaceCaptureLoadingScreen is archetype B), and the six
|
|
170
|
+
* result sections need a positive status and a verdict Snackbar that
|
|
171
|
+
* FaceCaptureResultErrorScreen has no slot for. What IS reused is the
|
|
172
|
+
* foundation: PrizmaProcessingScreen verbatim, plus ScreenShell / ScreenNav /
|
|
173
|
+
* ScreenLayout.css. DEVIATIONS.md #24. */
|
|
174
|
+
|
|
175
|
+
/** The prop shape EVERY Face Match screen accepts. */
|
|
176
|
+
export interface FaceMatchScreenProps {
|
|
177
|
+
strings: FaceMatchStrings;
|
|
178
|
+
screenId?: string;
|
|
179
|
+
overrides?: PrizmaScreenOverrides;
|
|
180
|
+
onAction?: PrizmaScreenActionHandler;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/** Fixed variant props: they select the Figma spec section, never the copy. */
|
|
184
|
+
export interface FaceMatchFlowVariant {
|
|
185
|
+
/** FaceMatchComparisonScreen — which purple photo set. */
|
|
186
|
+
variant?: FaceMatchComparisonVariant;
|
|
187
|
+
/** FaceMatchComparisonScreen — the converged `*.matching` sections. */
|
|
188
|
+
matching?: boolean;
|
|
189
|
+
/** FaceMatchResultScreen — `success.*` vs `error.*`. */
|
|
190
|
+
status?: FaceMatchResultStatus;
|
|
191
|
+
/** FaceMatchResultScreen — the `*.liveness{Success,Failed}` halves. */
|
|
192
|
+
liveness?: FaceMatchLivenessVerdict;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
export interface FaceMatchFlowStep {
|
|
196
|
+
/** Stable screen id — also what the screen reports through `onAction`. */
|
|
197
|
+
screenId: string;
|
|
198
|
+
component: ComponentType<FaceMatchScreenProps>;
|
|
199
|
+
variant?: FaceMatchFlowVariant;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Face Match — the happy path: the two captured photos are presented, they
|
|
204
|
+
* converge while the comparison runs, and the verdict is a match.
|
|
205
|
+
*
|
|
206
|
+
* The other comparison variants (`nfc`, `firstAndSecondID`,
|
|
207
|
+
* `threeFacesMatching`), the photo-less compact matching state and the failing /
|
|
208
|
+
* liveness verdicts are branches, exported separately.
|
|
209
|
+
*/
|
|
210
|
+
export const faceMatchFlow: readonly FaceMatchFlowStep[] = [
|
|
211
|
+
{
|
|
212
|
+
screenId: 'face-match-comparison',
|
|
213
|
+
component: FaceMatchComparisonScreen,
|
|
214
|
+
variant: { variant: 'selfieId' },
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
screenId: 'face-match-comparison-matching',
|
|
218
|
+
component: FaceMatchComparisonScreen,
|
|
219
|
+
variant: { variant: 'selfieId', matching: true },
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
screenId: 'face-match-matched',
|
|
223
|
+
component: FaceMatchResultScreen,
|
|
224
|
+
variant: { status: 'matched' },
|
|
225
|
+
},
|
|
226
|
+
];
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* The off-path screens: the three-photo comparison variants (NFC portrait, or a
|
|
230
|
+
* second document, joining the selfie), the compact matching state shown when
|
|
231
|
+
* the captures are not displayed, and the five remaining verdicts.
|
|
232
|
+
*
|
|
233
|
+
* `comparison.threeFacesMatching` is the converged state of BOTH three-photo
|
|
234
|
+
* variants — Figma authors it once, with the labels hidden, so `nfc` stands in
|
|
235
|
+
* for either.
|
|
236
|
+
*/
|
|
237
|
+
export const faceMatchBranches: readonly FaceMatchFlowStep[] = [
|
|
238
|
+
{
|
|
239
|
+
screenId: 'face-match-comparison-nfc',
|
|
240
|
+
component: FaceMatchComparisonScreen,
|
|
241
|
+
variant: { variant: 'nfc' },
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
screenId: 'face-match-comparison-first-and-second-id',
|
|
245
|
+
component: FaceMatchComparisonScreen,
|
|
246
|
+
variant: { variant: 'firstAndSecondID' },
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
screenId: 'face-match-comparison-three-faces-matching',
|
|
250
|
+
component: FaceMatchComparisonScreen,
|
|
251
|
+
variant: { variant: 'nfc', matching: true },
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
screenId: 'face-match-comparison-compact',
|
|
255
|
+
component: FaceMatchComparisonCompactScreen,
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
screenId: 'face-match-not-matched',
|
|
259
|
+
component: FaceMatchResultScreen,
|
|
260
|
+
variant: { status: 'notMatched' },
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
screenId: 'face-match-matched-liveness-success',
|
|
264
|
+
component: FaceMatchResultScreen,
|
|
265
|
+
variant: { status: 'matched', liveness: 'success' },
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
screenId: 'face-match-matched-liveness-failed',
|
|
269
|
+
component: FaceMatchResultScreen,
|
|
270
|
+
variant: { status: 'matched', liveness: 'failed' },
|
|
271
|
+
},
|
|
272
|
+
{
|
|
273
|
+
screenId: 'face-match-not-matched-liveness-success',
|
|
274
|
+
component: FaceMatchResultScreen,
|
|
275
|
+
variant: { status: 'notMatched', liveness: 'success' },
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
screenId: 'face-match-not-matched-liveness-failed',
|
|
279
|
+
component: FaceMatchResultScreen,
|
|
280
|
+
variant: { status: 'notMatched', liveness: 'failed' },
|
|
281
|
+
},
|
|
282
|
+
];
|
|
283
|
+
|
|
284
|
+
/* ══════════════════════════════════════════════════════════════════════════
|
|
285
|
+
Document Capture (wave 2)
|
|
286
|
+
══════════════════════════════════════════════════════════════════════════ */
|
|
287
|
+
|
|
288
|
+
/** The prop shape EVERY Document Capture screen accepts. */
|
|
289
|
+
export interface DocumentCaptureScreenProps {
|
|
290
|
+
strings: DocumentCaptureStrings;
|
|
291
|
+
screenId?: string;
|
|
292
|
+
overrides?: PrizmaScreenOverrides;
|
|
293
|
+
onAction?: PrizmaScreenActionHandler;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
/** Fixed variant props: they select the Figma spec section, never the copy. */
|
|
297
|
+
export interface DocumentCaptureFlowVariant {
|
|
298
|
+
/** DocumentCaptureTutorialScreen — which `tutorial.*` intro section. */
|
|
299
|
+
variant?: DocumentCaptureTutorialVariant;
|
|
300
|
+
/** DocumentCaptureMethodSelectionScreen — 2-row (web), 3-row (native), or the
|
|
301
|
+
* native pair without the camera row (nativeUpload). */
|
|
302
|
+
method?: DocumentCaptureMethodSelectionVariant;
|
|
303
|
+
/** DocumentCaptureCaptureScreen — `capture.default` vs `capture.filled`. */
|
|
304
|
+
state?: 'empty' | 'filled';
|
|
305
|
+
/** DocumentCaptureConfirm*Screen — review / analyzing / success. */
|
|
306
|
+
stage?: DocumentCaptureConfirmStage;
|
|
307
|
+
/** DocumentCaptureNextPageScreen — the `.mandatory` half of the pair. */
|
|
308
|
+
mandatory?: boolean;
|
|
309
|
+
/** DocumentCaptureGenericErrorScreen — the `*Exhausted` half of the pair. */
|
|
310
|
+
exhausted?: boolean;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
export interface DocumentCaptureFlowStep {
|
|
314
|
+
/** Stable screen id — also what the screen reports through `onAction`. */
|
|
315
|
+
screenId: string;
|
|
316
|
+
component: ComponentType<DocumentCaptureScreenProps>;
|
|
317
|
+
variant?: DocumentCaptureFlowVariant;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
/**
|
|
321
|
+
* Document Capture BRANCHES at the tutorial: the method sheet sends the user
|
|
322
|
+
* down the camera path or the upload path, and the two paths have different
|
|
323
|
+
* confirmation screens (`confirmImage.*` vs `confirmUpload.*`). So the module
|
|
324
|
+
* ships three sequences instead of one:
|
|
325
|
+
*
|
|
326
|
+
* documentCaptureFlow the shared head — tutorial → method sheet
|
|
327
|
+
* documentCaptureCameraFlow capture → confirmImage(review→analyzing→success)
|
|
328
|
+
* documentCaptureUploadFlow confirmUpload(review→analyzing→success)
|
|
329
|
+
*
|
|
330
|
+
* `documentCaptureBranchesByMethod` maps the sheet's two answers onto the two
|
|
331
|
+
* tails, so a player can resolve the branch without hardcoding screen ids.
|
|
332
|
+
*
|
|
333
|
+
* Not steps in any sequence: `commonIssues` (help, reachable from the camera
|
|
334
|
+
* stage's "?" control), the two generic-error verdicts, and the connectivity
|
|
335
|
+
* error. They are exported as `documentCaptureBranches`.
|
|
336
|
+
*/
|
|
337
|
+
export const documentCaptureFlow: readonly DocumentCaptureFlowStep[] = [
|
|
338
|
+
{
|
|
339
|
+
screenId: 'document-capture-tutorial-default',
|
|
340
|
+
component: DocumentCaptureTutorialScreen,
|
|
341
|
+
variant: { variant: 'default' },
|
|
342
|
+
},
|
|
343
|
+
{
|
|
344
|
+
screenId: 'document-capture-method-selection-web',
|
|
345
|
+
component: DocumentCaptureMethodSelectionScreen,
|
|
346
|
+
variant: { method: 'web' },
|
|
347
|
+
},
|
|
348
|
+
];
|
|
349
|
+
|
|
350
|
+
/** Tail A — "Take photo": the dark camera stage, then the photo confirmation. */
|
|
351
|
+
export const documentCaptureCameraFlow: readonly DocumentCaptureFlowStep[] = [
|
|
352
|
+
{
|
|
353
|
+
screenId: 'document-capture-capture-empty',
|
|
354
|
+
component: DocumentCaptureCaptureScreen,
|
|
355
|
+
variant: { state: 'empty' },
|
|
356
|
+
},
|
|
357
|
+
{
|
|
358
|
+
screenId: 'document-capture-capture-filled',
|
|
359
|
+
component: DocumentCaptureCaptureScreen,
|
|
360
|
+
variant: { state: 'filled' },
|
|
361
|
+
},
|
|
362
|
+
{
|
|
363
|
+
screenId: 'document-capture-confirm-image-review',
|
|
364
|
+
component: DocumentCaptureConfirmImageScreen,
|
|
365
|
+
variant: { stage: 'review' },
|
|
366
|
+
},
|
|
367
|
+
{
|
|
368
|
+
screenId: 'document-capture-confirm-image-analyzing',
|
|
369
|
+
component: DocumentCaptureConfirmImageScreen,
|
|
370
|
+
variant: { stage: 'analyzing' },
|
|
371
|
+
},
|
|
372
|
+
{
|
|
373
|
+
screenId: 'document-capture-confirm-image-success',
|
|
374
|
+
component: DocumentCaptureConfirmImageScreen,
|
|
375
|
+
variant: { stage: 'success' },
|
|
376
|
+
},
|
|
377
|
+
];
|
|
378
|
+
|
|
379
|
+
/** Tail B — "Upload document": the picker is OS chrome (DEVIATIONS #20), so the
|
|
380
|
+
* Prizma sequence resumes at the file confirmation. */
|
|
381
|
+
export const documentCaptureUploadFlow: readonly DocumentCaptureFlowStep[] = [
|
|
382
|
+
{
|
|
383
|
+
screenId: 'document-capture-confirm-upload-review',
|
|
384
|
+
component: DocumentCaptureConfirmUploadScreen,
|
|
385
|
+
variant: { stage: 'review' },
|
|
386
|
+
},
|
|
387
|
+
{
|
|
388
|
+
screenId: 'document-capture-confirm-upload-analyzing',
|
|
389
|
+
component: DocumentCaptureConfirmUploadScreen,
|
|
390
|
+
variant: { stage: 'analyzing' },
|
|
391
|
+
},
|
|
392
|
+
{
|
|
393
|
+
screenId: 'document-capture-confirm-upload-success',
|
|
394
|
+
component: DocumentCaptureConfirmUploadScreen,
|
|
395
|
+
variant: { stage: 'success' },
|
|
396
|
+
},
|
|
397
|
+
];
|
|
398
|
+
|
|
399
|
+
/** The method sheet's two answers → the tail each one leads to. */
|
|
400
|
+
export const documentCaptureBranchesByMethod: Readonly<
|
|
401
|
+
Record<'camera' | 'upload', readonly DocumentCaptureFlowStep[]>
|
|
402
|
+
> = {
|
|
403
|
+
camera: documentCaptureCameraFlow,
|
|
404
|
+
upload: documentCaptureUploadFlow,
|
|
405
|
+
};
|
|
406
|
+
|
|
407
|
+
/** The off-path screens: the two native method sheets, the multi-page prompt,
|
|
408
|
+
* the common-issues help, the two error verdicts, and the connectivity error. */
|
|
409
|
+
export const documentCaptureBranches: readonly DocumentCaptureFlowStep[] = [
|
|
410
|
+
{
|
|
411
|
+
screenId: 'document-capture-tutorial-captureOnly',
|
|
412
|
+
component: DocumentCaptureTutorialScreen,
|
|
413
|
+
variant: { variant: 'captureOnly' },
|
|
414
|
+
},
|
|
415
|
+
{
|
|
416
|
+
screenId: 'document-capture-tutorial-uploadOnly',
|
|
417
|
+
component: DocumentCaptureTutorialScreen,
|
|
418
|
+
variant: { variant: 'uploadOnly' },
|
|
419
|
+
},
|
|
420
|
+
{
|
|
421
|
+
screenId: 'document-capture-method-selection-native',
|
|
422
|
+
component: DocumentCaptureMethodSelectionScreen,
|
|
423
|
+
variant: { method: 'native' },
|
|
424
|
+
},
|
|
425
|
+
{
|
|
426
|
+
screenId: 'document-capture-method-selection-nativeUpload',
|
|
427
|
+
component: DocumentCaptureMethodSelectionScreen,
|
|
428
|
+
variant: { method: 'nativeUpload' },
|
|
429
|
+
},
|
|
430
|
+
{
|
|
431
|
+
screenId: 'document-capture-next-page',
|
|
432
|
+
component: DocumentCaptureNextPageScreen,
|
|
433
|
+
},
|
|
434
|
+
{
|
|
435
|
+
screenId: 'document-capture-next-page-mandatory',
|
|
436
|
+
component: DocumentCaptureNextPageScreen,
|
|
437
|
+
variant: { mandatory: true },
|
|
438
|
+
},
|
|
439
|
+
{
|
|
440
|
+
screenId: 'document-capture-common-issues',
|
|
441
|
+
component: DocumentCaptureCommonIssuesScreen,
|
|
442
|
+
},
|
|
443
|
+
{
|
|
444
|
+
screenId: 'document-capture-generic-error',
|
|
445
|
+
component: DocumentCaptureGenericErrorScreen,
|
|
446
|
+
},
|
|
447
|
+
{
|
|
448
|
+
screenId: 'document-capture-generic-error-exhausted',
|
|
449
|
+
component: DocumentCaptureGenericErrorScreen,
|
|
450
|
+
variant: { exhausted: true },
|
|
451
|
+
},
|
|
452
|
+
{
|
|
453
|
+
screenId: 'document-capture-no-connection',
|
|
454
|
+
component: DocumentCaptureNoConnectionScreen,
|
|
455
|
+
},
|
|
456
|
+
];
|
|
457
|
+
|
|
458
|
+
/* ── ID Capture ───────────────────────────────────────────────────────────── */
|
|
459
|
+
|
|
460
|
+
/** The prop shape EVERY ID Capture screen accepts — the flow player needs
|
|
461
|
+
* nothing more to render any step. */
|
|
462
|
+
export interface IdCaptureScreenProps {
|
|
463
|
+
strings: IdCaptureStrings;
|
|
464
|
+
screenId?: string;
|
|
465
|
+
overrides?: PrizmaScreenOverrides;
|
|
466
|
+
onAction?: PrizmaScreenActionHandler;
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
/** Fixed variant props: they select the Figma spec section, never the copy. */
|
|
470
|
+
export interface IdCaptureFlowVariant {
|
|
471
|
+
/** IdCaptureTutorialScreen — which of the three tutorial sections. */
|
|
472
|
+
variant?: IdCaptureTutorialVariant;
|
|
473
|
+
/** IdCaptureStageScreen / IdCaptureResultScreen / IdCaptureAnalyzingScreen —
|
|
474
|
+
* `id` vs `passport` (the `Passport capture` groups). */
|
|
475
|
+
documentType?: IdCaptureDocumentType;
|
|
476
|
+
/** IdCaptureStageScreen — which face of a two-sided document. */
|
|
477
|
+
side?: IdCaptureSide;
|
|
478
|
+
/** The `↕️ vertical` groups. */
|
|
479
|
+
vertical?: boolean;
|
|
480
|
+
/** IdCaptureStageScreen — which stage section. */
|
|
481
|
+
state?: IdCaptureStageState;
|
|
482
|
+
/** IdCaptureStageScreen — the `*-manual` sections. */
|
|
483
|
+
manual?: boolean;
|
|
484
|
+
/** IdCaptureResultScreen — which verdict section. */
|
|
485
|
+
verdict?: IdCaptureResultVerdict;
|
|
486
|
+
/** IdCaptureDocumentErrorScreen — the `-empty` section. */
|
|
487
|
+
empty?: boolean;
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
export interface IdCaptureFlowStep {
|
|
491
|
+
/** Stable screen id — also what the screen reports through `onAction`. */
|
|
492
|
+
screenId: string;
|
|
493
|
+
component: ComponentType<IdCaptureScreenProps>;
|
|
494
|
+
variant?: IdCaptureFlowVariant;
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
/**
|
|
498
|
+
* ID Capture — the happy path of a TWO-SIDED document, in the order the purple
|
|
499
|
+
* sections are numbered: document selection (1-1) → tutorial (1-2) → camera
|
|
500
|
+
* stage (1-5 … 1-8) → analyzing (1-9-1) → review (1-9-2) → front success (1-10)
|
|
501
|
+
* → flip (1-11) → back stage (1-12 … 1-15) → back analyzing (1-16-1) → back
|
|
502
|
+
* success (1-17) → hold on (1-18).
|
|
503
|
+
*
|
|
504
|
+
* The passport path is the same list without the flip and the back half, with
|
|
505
|
+
* `documentType: 'passport'` on every capture step (the `Passport capture`
|
|
506
|
+
* group's numbering, 3-x, mirrors it exactly) — see `idCapturePassportFlow`.
|
|
507
|
+
* Failures and the chrome-free error screens are branches, not steps, so they
|
|
508
|
+
* are exported separately: nothing about them follows success.
|
|
509
|
+
*/
|
|
510
|
+
export const idCaptureFlow: readonly IdCaptureFlowStep[] = [
|
|
511
|
+
{
|
|
512
|
+
screenId: 'id-capture-document-selection',
|
|
513
|
+
component: IdCaptureDocumentSelectionScreen,
|
|
514
|
+
},
|
|
515
|
+
{
|
|
516
|
+
screenId: 'id-capture-tutorial-front',
|
|
517
|
+
component: IdCaptureTutorialScreen,
|
|
518
|
+
variant: { variant: 'front' },
|
|
519
|
+
},
|
|
520
|
+
{
|
|
521
|
+
screenId: 'id-capture-front-empty',
|
|
522
|
+
component: IdCaptureStageScreen,
|
|
523
|
+
variant: { side: 'front', state: 'empty' },
|
|
524
|
+
},
|
|
525
|
+
{
|
|
526
|
+
screenId: 'id-capture-front-hint',
|
|
527
|
+
component: IdCaptureStageScreen,
|
|
528
|
+
variant: { side: 'front', state: 'hint' },
|
|
529
|
+
},
|
|
530
|
+
{
|
|
531
|
+
screenId: 'id-capture-front-countdown',
|
|
532
|
+
component: IdCaptureStageScreen,
|
|
533
|
+
variant: { side: 'front', state: 'countdown' },
|
|
534
|
+
},
|
|
535
|
+
{
|
|
536
|
+
screenId: 'id-capture-front-flash',
|
|
537
|
+
component: IdCaptureStageScreen,
|
|
538
|
+
variant: { side: 'front', state: 'flash' },
|
|
539
|
+
},
|
|
540
|
+
{ screenId: 'id-capture-analyzing', component: IdCaptureAnalyzingScreen },
|
|
541
|
+
{
|
|
542
|
+
screenId: 'id-capture-review',
|
|
543
|
+
component: IdCaptureResultScreen,
|
|
544
|
+
variant: { verdict: 'review' },
|
|
545
|
+
},
|
|
546
|
+
{
|
|
547
|
+
screenId: 'id-capture-front-success',
|
|
548
|
+
component: IdCaptureResultScreen,
|
|
549
|
+
variant: { verdict: 'success' },
|
|
550
|
+
},
|
|
551
|
+
{ screenId: 'id-capture-flip', component: IdCaptureFlipScreen },
|
|
552
|
+
{
|
|
553
|
+
screenId: 'id-capture-tutorial-back',
|
|
554
|
+
component: IdCaptureTutorialScreen,
|
|
555
|
+
variant: { variant: 'back' },
|
|
556
|
+
},
|
|
557
|
+
{
|
|
558
|
+
screenId: 'id-capture-back-empty',
|
|
559
|
+
component: IdCaptureStageScreen,
|
|
560
|
+
variant: { side: 'back', state: 'empty' },
|
|
561
|
+
},
|
|
562
|
+
{
|
|
563
|
+
screenId: 'id-capture-back-countdown',
|
|
564
|
+
component: IdCaptureStageScreen,
|
|
565
|
+
variant: { side: 'back', state: 'countdown' },
|
|
566
|
+
},
|
|
567
|
+
{
|
|
568
|
+
screenId: 'id-capture-back-analyzing',
|
|
569
|
+
component: IdCaptureAnalyzingScreen,
|
|
570
|
+
},
|
|
571
|
+
{
|
|
572
|
+
screenId: 'id-capture-back-success',
|
|
573
|
+
component: IdCaptureResultScreen,
|
|
574
|
+
variant: { verdict: 'success' },
|
|
575
|
+
},
|
|
576
|
+
{ screenId: 'id-capture-hold-on', component: IdCaptureHoldOnScreen },
|
|
577
|
+
];
|
|
578
|
+
|
|
579
|
+
/** The single-sided passport path — the `Passport capture` group (3-x). */
|
|
580
|
+
export const idCapturePassportFlow: readonly IdCaptureFlowStep[] = [
|
|
581
|
+
{
|
|
582
|
+
screenId: 'id-capture-tutorial-passport',
|
|
583
|
+
component: IdCaptureTutorialScreen,
|
|
584
|
+
variant: { variant: 'passport' },
|
|
585
|
+
},
|
|
586
|
+
{
|
|
587
|
+
screenId: 'id-capture-passport-empty',
|
|
588
|
+
component: IdCaptureStageScreen,
|
|
589
|
+
variant: { documentType: 'passport', state: 'empty' },
|
|
590
|
+
},
|
|
591
|
+
{
|
|
592
|
+
screenId: 'id-capture-passport-hint',
|
|
593
|
+
component: IdCaptureStageScreen,
|
|
594
|
+
variant: { documentType: 'passport', state: 'hint' },
|
|
595
|
+
},
|
|
596
|
+
{
|
|
597
|
+
screenId: 'id-capture-passport-countdown',
|
|
598
|
+
component: IdCaptureStageScreen,
|
|
599
|
+
variant: { documentType: 'passport', state: 'countdown' },
|
|
600
|
+
},
|
|
601
|
+
{
|
|
602
|
+
screenId: 'id-capture-passport-analyzing',
|
|
603
|
+
component: IdCaptureAnalyzingScreen,
|
|
604
|
+
variant: { documentType: 'passport' },
|
|
605
|
+
},
|
|
606
|
+
{
|
|
607
|
+
screenId: 'id-capture-passport-review',
|
|
608
|
+
component: IdCaptureResultScreen,
|
|
609
|
+
variant: { documentType: 'passport', verdict: 'review' },
|
|
610
|
+
},
|
|
611
|
+
{
|
|
612
|
+
screenId: 'id-capture-passport-success',
|
|
613
|
+
component: IdCaptureResultScreen,
|
|
614
|
+
variant: { documentType: 'passport', verdict: 'success' },
|
|
615
|
+
},
|
|
616
|
+
];
|
|
617
|
+
|
|
618
|
+
/**
|
|
619
|
+
* The off-path screens: the manual stage (offered when auto-capture is turned
|
|
620
|
+
* off or gives up), the five on-camera error stages, every verdict failure, the
|
|
621
|
+
* help sheet, the permission gate, the document-error screens and the
|
|
622
|
+
* connectivity error.
|
|
623
|
+
*
|
|
624
|
+
* The `↕️ vertical` groups are not separate branches — they are the same steps
|
|
625
|
+
* with `vertical: true`, which is why `idCaptureVerticalOf` exists below.
|
|
626
|
+
*/
|
|
627
|
+
export const idCaptureBranches: readonly IdCaptureFlowStep[] = [
|
|
628
|
+
{
|
|
629
|
+
screenId: 'id-capture-permission',
|
|
630
|
+
component: IdCapturePermissionScreen,
|
|
631
|
+
},
|
|
632
|
+
{
|
|
633
|
+
screenId: 'id-capture-age-verification',
|
|
634
|
+
component: IdCaptureAgeVerificationScreen,
|
|
635
|
+
},
|
|
636
|
+
{
|
|
637
|
+
screenId: 'id-capture-front-manual',
|
|
638
|
+
component: IdCaptureStageScreen,
|
|
639
|
+
variant: { state: 'empty', manual: true },
|
|
640
|
+
},
|
|
641
|
+
{
|
|
642
|
+
screenId: 'id-capture-front-error-wrong-side',
|
|
643
|
+
component: IdCaptureStageScreen,
|
|
644
|
+
variant: { state: 'error-wrong-side' },
|
|
645
|
+
},
|
|
646
|
+
{
|
|
647
|
+
screenId: 'id-capture-front-error-not-aligned',
|
|
648
|
+
component: IdCaptureStageScreen,
|
|
649
|
+
variant: { state: 'error-not-aligned' },
|
|
650
|
+
},
|
|
651
|
+
{
|
|
652
|
+
screenId: 'id-capture-front-error-blurry',
|
|
653
|
+
component: IdCaptureStageScreen,
|
|
654
|
+
variant: { state: 'error-blurry' },
|
|
655
|
+
},
|
|
656
|
+
{
|
|
657
|
+
screenId: 'id-capture-front-error-glare',
|
|
658
|
+
component: IdCaptureStageScreen,
|
|
659
|
+
variant: { state: 'error-glare' },
|
|
660
|
+
},
|
|
661
|
+
{
|
|
662
|
+
screenId: 'id-capture-front-error-too-dark',
|
|
663
|
+
component: IdCaptureStageScreen,
|
|
664
|
+
variant: { state: 'error-too-dark' },
|
|
665
|
+
},
|
|
666
|
+
{ screenId: 'id-capture-common-issues', component: IdCaptureCommonIssuesScreen },
|
|
667
|
+
{
|
|
668
|
+
screenId: 'id-capture-error',
|
|
669
|
+
component: IdCaptureResultScreen,
|
|
670
|
+
variant: { verdict: 'error' },
|
|
671
|
+
},
|
|
672
|
+
{
|
|
673
|
+
screenId: 'id-capture-exhausted',
|
|
674
|
+
component: IdCaptureResultScreen,
|
|
675
|
+
variant: { verdict: 'exhausted' },
|
|
676
|
+
},
|
|
677
|
+
{
|
|
678
|
+
screenId: 'id-capture-classification',
|
|
679
|
+
component: IdCaptureResultScreen,
|
|
680
|
+
variant: { verdict: 'classification' },
|
|
681
|
+
},
|
|
682
|
+
{
|
|
683
|
+
screenId: 'id-capture-document-error',
|
|
684
|
+
component: IdCaptureDocumentErrorScreen,
|
|
685
|
+
},
|
|
686
|
+
{
|
|
687
|
+
screenId: 'id-capture-document-error-empty',
|
|
688
|
+
component: IdCaptureDocumentErrorScreen,
|
|
689
|
+
variant: { empty: true },
|
|
690
|
+
},
|
|
691
|
+
{
|
|
692
|
+
screenId: 'id-capture-no-connection',
|
|
693
|
+
component: IdCaptureNoConnectionScreen,
|
|
694
|
+
},
|
|
695
|
+
];
|
|
696
|
+
|
|
697
|
+
/**
|
|
698
|
+
* The `ID capture ↕️ vertical` (2-x) and `Passport capture ↕️ vertical` (4-x)
|
|
699
|
+
* groups: the SAME steps with the portrait frame. Kept as a derivation rather
|
|
700
|
+
* than two more literal lists, because that is precisely what the Figma groups
|
|
701
|
+
* are — the numbering, the states and the copy are identical and only
|
|
702
|
+
* `PrizmaIdCapture.isVertical` flips.
|
|
703
|
+
*/
|
|
704
|
+
export const idCaptureVerticalOf = (
|
|
705
|
+
steps: readonly IdCaptureFlowStep[],
|
|
706
|
+
): readonly IdCaptureFlowStep[] =>
|
|
707
|
+
steps.map((step) => ({
|
|
708
|
+
...step,
|
|
709
|
+
screenId: `${step.screenId}-vertical`,
|
|
710
|
+
variant: { ...step.variant, vertical: true },
|
|
711
|
+
}));
|