@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,151 @@
|
|
|
1
|
+
import React, { forwardRef, type ReactNode } from 'react';
|
|
2
|
+
import {
|
|
3
|
+
IconCamera,
|
|
4
|
+
IconFolderFileOpen,
|
|
5
|
+
IconImage,
|
|
6
|
+
IconPaperUpload,
|
|
7
|
+
} from '@incodetech/prizma-core-icons';
|
|
8
|
+
import {
|
|
9
|
+
PrizmaBottomSheetContent,
|
|
10
|
+
type PrizmaActionOptionItem,
|
|
11
|
+
} from '@incodetech/prizma-core-web/bottom-sheet';
|
|
12
|
+
import { PrizmaTutorialScreen, type PrizmaTutorialScreenProps } from './TutorialScreen';
|
|
13
|
+
import { DocumentCaptureIllustration } from './DocumentCaptureIllustration';
|
|
14
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
15
|
+
import type {
|
|
16
|
+
DocumentCaptureMethodSelectionVariant,
|
|
17
|
+
DocumentCaptureStrings,
|
|
18
|
+
} from './DocumentCaptureStrings';
|
|
19
|
+
import './ScreenLayout.css';
|
|
20
|
+
import './DocumentCaptureLayout.css';
|
|
21
|
+
|
|
22
|
+
export interface DocumentCaptureMethodSelectionScreenProps
|
|
23
|
+
extends Omit<
|
|
24
|
+
PrizmaTutorialScreenProps,
|
|
25
|
+
| 'title'
|
|
26
|
+
| 'subtitle'
|
|
27
|
+
| 'ctaLabel'
|
|
28
|
+
| 'linkLabel'
|
|
29
|
+
| 'overlay'
|
|
30
|
+
| 'verifiedLabel'
|
|
31
|
+
| 'navLabel'
|
|
32
|
+
> {
|
|
33
|
+
/** Module copy — this screen reads `methodSelection` + `tutorial` (the sheet
|
|
34
|
+
* is presented OVER the tutorial, which stays visible behind the scrim). */
|
|
35
|
+
strings: DocumentCaptureStrings;
|
|
36
|
+
/** `web` = the 2-row menu · `native` = the 3-row menu · `nativeUpload` = the
|
|
37
|
+
* native menu with the camera row dropped (2 rows). */
|
|
38
|
+
method?: DocumentCaptureMethodSelectionVariant;
|
|
39
|
+
/** Replace the module's document illustration. */
|
|
40
|
+
illustration?: ReactNode;
|
|
41
|
+
screenId?: string;
|
|
42
|
+
overrides?: PrizmaScreenOverrides;
|
|
43
|
+
onAction?: PrizmaScreenActionHandler;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Document Capture — capture-method selection: the `PrizmaTutorialScreen`
|
|
48
|
+
* archetype plus a presented sheet. Figma: purple sections
|
|
49
|
+
* `documentCapture.tutorial.methodSelectionWeb` (`Bottom sheet` 390 × 172, 2
|
|
50
|
+
* rows) and `.methodSelectionNative` (390 × 262, 3 rows).
|
|
51
|
+
*
|
|
52
|
+
* The screen behind the scrim is the `tutorial.default` composition verbatim —
|
|
53
|
+
* which is now literally true: it is the same archetype call the tutorial screen
|
|
54
|
+
* makes, and only the overlay differs. The sheet rides in the archetype's
|
|
55
|
+
* `overlay` slot, a shell-level layer, because the scrim and panel are positioned
|
|
56
|
+
* against the shell and cannot live in the content column (#F-32).
|
|
57
|
+
*
|
|
58
|
+
* Core's own `PrizmaBottomSheetContent` renders the panel (handle, radius,
|
|
59
|
+
* padding, Action Option rows); the row icons come from the canonical bank.
|
|
60
|
+
* The safe presenter (`PrizmaBottomSheet`) is deliberately NOT used: it portals
|
|
61
|
+
* to `document.body`, which escapes the screen frame and the host's
|
|
62
|
+
* `transform: scale()`, and a screen is one static spec state with no open/close
|
|
63
|
+
* clock. bottom-sheet.md §10.3 assigns the scrim to "the consuming surface",
|
|
64
|
+
* and here the screen IS that surface — DEVIATIONS.md #DC-30.
|
|
65
|
+
*
|
|
66
|
+
* `documentCapture.tutorial.nativeMethodSelectionOnWeb` layers the iOS action
|
|
67
|
+
* sheet ON TOP of this one; that upper layer is OS chrome, not a Prizma
|
|
68
|
+
* surface, so it is out of scope (DEVIATIONS.md #DC-20).
|
|
69
|
+
*/
|
|
70
|
+
export const DocumentCaptureMethodSelectionScreen = forwardRef<
|
|
71
|
+
HTMLDivElement,
|
|
72
|
+
DocumentCaptureMethodSelectionScreenProps
|
|
73
|
+
>(
|
|
74
|
+
(
|
|
75
|
+
{
|
|
76
|
+
strings,
|
|
77
|
+
method = 'web',
|
|
78
|
+
illustration,
|
|
79
|
+
screenId = `document-capture-method-selection-${method}`,
|
|
80
|
+
overrides,
|
|
81
|
+
onAction,
|
|
82
|
+
...shell
|
|
83
|
+
},
|
|
84
|
+
ref,
|
|
85
|
+
) => {
|
|
86
|
+
const { methodSelection } = strings;
|
|
87
|
+
const takePhoto: PrizmaActionOptionItem = {
|
|
88
|
+
label: methodSelection.takePhotoLabel,
|
|
89
|
+
icon: <IconCamera size="m" />,
|
|
90
|
+
onClick: () => onAction?.({ type: 'cta', screenId }),
|
|
91
|
+
};
|
|
92
|
+
const cameraRoll: PrizmaActionOptionItem = {
|
|
93
|
+
label: methodSelection.cameraRollLabel,
|
|
94
|
+
icon: <IconImage size="m" />,
|
|
95
|
+
onClick: () => onAction?.({ type: 'secondary', screenId }),
|
|
96
|
+
};
|
|
97
|
+
const chooseFile: PrizmaActionOptionItem = {
|
|
98
|
+
label: methodSelection.chooseFileLabel,
|
|
99
|
+
icon: <IconFolderFileOpen size="m" />,
|
|
100
|
+
onClick: () => onAction?.({ type: 'secondary', screenId }),
|
|
101
|
+
};
|
|
102
|
+
// `nativeUpload` is `native` minus the camera row — the upload-only session
|
|
103
|
+
// cannot offer a photo, so the row is absent rather than disabled.
|
|
104
|
+
const items: PrizmaActionOptionItem[] =
|
|
105
|
+
method === 'native'
|
|
106
|
+
? [takePhoto, cameraRoll, chooseFile]
|
|
107
|
+
: method === 'nativeUpload'
|
|
108
|
+
? [cameraRoll, chooseFile]
|
|
109
|
+
: [
|
|
110
|
+
takePhoto,
|
|
111
|
+
{
|
|
112
|
+
label: methodSelection.uploadLabel,
|
|
113
|
+
icon: <IconPaperUpload size="m" />,
|
|
114
|
+
onClick: () => onAction?.({ type: 'secondary', screenId }),
|
|
115
|
+
},
|
|
116
|
+
];
|
|
117
|
+
|
|
118
|
+
return (
|
|
119
|
+
<PrizmaTutorialScreen
|
|
120
|
+
ref={ref}
|
|
121
|
+
title={strings.tutorial.title}
|
|
122
|
+
subtitle={strings.tutorial.subtitle.default}
|
|
123
|
+
ctaLabel={strings.tutorial.ctaLabel.default}
|
|
124
|
+
linkLabel={strings.tutorial.skipLabel}
|
|
125
|
+
illustration={illustration ?? <DocumentCaptureIllustration />}
|
|
126
|
+
verifiedLabel={strings.verifiedLabel}
|
|
127
|
+
navLabel={strings.navLabel}
|
|
128
|
+
screenId={screenId}
|
|
129
|
+
overrides={overrides}
|
|
130
|
+
overlay={
|
|
131
|
+
/* Scrim + panel own the presentation; Core owns the panel itself. */
|
|
132
|
+
<>
|
|
133
|
+
<div className="document-capture-sheet-scrim" aria-hidden="true" />
|
|
134
|
+
<div className="document-capture-sheet-panel">
|
|
135
|
+
<PrizmaBottomSheetContent
|
|
136
|
+
variant={method === 'native' ? 'menu-list-3' : 'menu-list-2'}
|
|
137
|
+
ariaLabel={methodSelection.sheetLabel}
|
|
138
|
+
items={items}
|
|
139
|
+
showBottomBar={false}
|
|
140
|
+
/>
|
|
141
|
+
</div>
|
|
142
|
+
</>
|
|
143
|
+
}
|
|
144
|
+
{...shell}
|
|
145
|
+
/>
|
|
146
|
+
);
|
|
147
|
+
},
|
|
148
|
+
);
|
|
149
|
+
DocumentCaptureMethodSelectionScreen.displayName = 'DocumentCaptureMethodSelectionScreen';
|
|
150
|
+
|
|
151
|
+
export default DocumentCaptureMethodSelectionScreen;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import React, { forwardRef, type ReactNode } from 'react';
|
|
2
|
+
import { PrizmaTutorialScreen, type PrizmaTutorialScreenProps } from './TutorialScreen';
|
|
3
|
+
import { DocumentCaptureIllustration } from './DocumentCaptureIllustration';
|
|
4
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
5
|
+
import type { DocumentCaptureStrings } from './DocumentCaptureStrings';
|
|
6
|
+
import './ScreenLayout.css';
|
|
7
|
+
|
|
8
|
+
export interface DocumentCaptureNextPageScreenProps
|
|
9
|
+
extends Omit<
|
|
10
|
+
PrizmaTutorialScreenProps,
|
|
11
|
+
'title' | 'subtitle' | 'ctaLabel' | 'linkLabel' | 'verifiedLabel' | 'navLabel'
|
|
12
|
+
> {
|
|
13
|
+
/** Module copy — this screen reads the `nextPage` slice (+ shared labels). */
|
|
14
|
+
strings: DocumentCaptureStrings;
|
|
15
|
+
/**
|
|
16
|
+
* `documentCapture.nextPage.mandatory` — the next page is required, so the
|
|
17
|
+
* "All pages captured" escape link is dropped and the subtitle changes.
|
|
18
|
+
* Default (`false`) is the `.optional` section.
|
|
19
|
+
*/
|
|
20
|
+
mandatory?: boolean;
|
|
21
|
+
/** Replace the module's document illustration. */
|
|
22
|
+
illustration?: ReactNode;
|
|
23
|
+
screenId?: string;
|
|
24
|
+
overrides?: PrizmaScreenOverrides;
|
|
25
|
+
onAction?: PrizmaScreenActionHandler;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Document Capture — next document page, built on the `PrizmaTutorialScreen`
|
|
30
|
+
* archetype (GUIDELINES.md §6-A). Figma: purple sections
|
|
31
|
+
* `documentCapture.nextPage.optional` / `.mandatory` — a copy + link-slot pair of
|
|
32
|
+
* this ONE screen.
|
|
33
|
+
*
|
|
34
|
+
* Structurally the tutorial recipe (measured identical on the 390 sections:
|
|
35
|
+
* nav 8→52, Title 68→145, illustration container flexes, CTAs 472→646), which is
|
|
36
|
+
* exactly why it now renders the same archetype instead of a second copy of it.
|
|
37
|
+
* Only `.optional` shows the escape link.
|
|
38
|
+
*/
|
|
39
|
+
export const DocumentCaptureNextPageScreen = forwardRef<
|
|
40
|
+
HTMLDivElement,
|
|
41
|
+
DocumentCaptureNextPageScreenProps
|
|
42
|
+
>(
|
|
43
|
+
(
|
|
44
|
+
{
|
|
45
|
+
strings,
|
|
46
|
+
mandatory = false,
|
|
47
|
+
illustration,
|
|
48
|
+
screenId = mandatory
|
|
49
|
+
? 'document-capture-next-page-mandatory'
|
|
50
|
+
: 'document-capture-next-page',
|
|
51
|
+
overrides,
|
|
52
|
+
onAction,
|
|
53
|
+
...shell
|
|
54
|
+
},
|
|
55
|
+
ref,
|
|
56
|
+
) => {
|
|
57
|
+
// Figma: `.mandatory` has no escape link (every remaining page is required).
|
|
58
|
+
// Gated here too, so a host that keeps the label in its locale pack still
|
|
59
|
+
// renders the designed mandatory screen.
|
|
60
|
+
const doneLabel = mandatory ? undefined : strings.nextPage.doneLabel;
|
|
61
|
+
|
|
62
|
+
return (
|
|
63
|
+
<PrizmaTutorialScreen
|
|
64
|
+
ref={ref}
|
|
65
|
+
title={strings.nextPage.title}
|
|
66
|
+
subtitle={mandatory ? strings.nextPage.mandatorySubtitle : strings.nextPage.subtitle}
|
|
67
|
+
ctaLabel={strings.nextPage.ctaLabel}
|
|
68
|
+
linkLabel={doneLabel}
|
|
69
|
+
illustration={illustration ?? <DocumentCaptureIllustration />}
|
|
70
|
+
verifiedLabel={strings.verifiedLabel}
|
|
71
|
+
navLabel={strings.navLabel}
|
|
72
|
+
screenId={screenId}
|
|
73
|
+
overrides={overrides}
|
|
74
|
+
onAction={onAction}
|
|
75
|
+
{...shell}
|
|
76
|
+
/>
|
|
77
|
+
);
|
|
78
|
+
},
|
|
79
|
+
);
|
|
80
|
+
DocumentCaptureNextPageScreen.displayName = 'DocumentCaptureNextPageScreen';
|
|
81
|
+
|
|
82
|
+
export default DocumentCaptureNextPageScreen;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import React, { forwardRef } from 'react';
|
|
2
|
+
import { IconWifiOff } from '@incodetech/prizma-core-icons';
|
|
3
|
+
import { PrizmaResultScreen, type PrizmaResultScreenProps } from './ResultScreen';
|
|
4
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
5
|
+
import type { DocumentCaptureStrings } from './DocumentCaptureStrings';
|
|
6
|
+
import './ScreenLayout.css';
|
|
7
|
+
|
|
8
|
+
export interface DocumentCaptureNoConnectionScreenProps
|
|
9
|
+
extends Omit<
|
|
10
|
+
PrizmaResultScreenProps,
|
|
11
|
+
'status' | 'title' | 'subtitle' | 'glyph' | 'ctaLabel' | 'verifiedLabel' | 'navLabel'
|
|
12
|
+
> {
|
|
13
|
+
/** Module copy — this screen reads the `noConnection` slice. */
|
|
14
|
+
strings: DocumentCaptureStrings;
|
|
15
|
+
screenId?: string;
|
|
16
|
+
overrides?: PrizmaScreenOverrides;
|
|
17
|
+
onAction?: PrizmaScreenActionHandler;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Document Capture — no internet connection (purple section
|
|
22
|
+
* `documentCapture.errors.noConnection`), built on the `PrizmaResultScreen`
|
|
23
|
+
* archetype (GUIDELINES.md §6-F).
|
|
24
|
+
*
|
|
25
|
+
* Byte-for-byte the same spec the Face Capture pilot found in its own
|
|
26
|
+
* `genericErrors` family, which is exactly what DEVIATIONS.md #9 predicted — and
|
|
27
|
+
* exactly why all three module copies of it are now one archetype call. Header
|
|
28
|
+
* and verified tag are on per the owner's non-capture rule (#F-30).
|
|
29
|
+
*
|
|
30
|
+
* The glyph is Figma's `Icon / Wi-Fi` in the archetype's `glyph` slot with the
|
|
31
|
+
* foundation's `__glyph` class, which replaced this module's byte-identical
|
|
32
|
+
* `.document-capture-glyph` copy (DEVIATIONS #10, #DC-29 — closed).
|
|
33
|
+
*/
|
|
34
|
+
export const DocumentCaptureNoConnectionScreen = forwardRef<
|
|
35
|
+
HTMLDivElement,
|
|
36
|
+
DocumentCaptureNoConnectionScreenProps
|
|
37
|
+
>(
|
|
38
|
+
(
|
|
39
|
+
{
|
|
40
|
+
strings,
|
|
41
|
+
screenId = 'document-capture-no-connection',
|
|
42
|
+
overrides,
|
|
43
|
+
onAction,
|
|
44
|
+
...shell
|
|
45
|
+
},
|
|
46
|
+
ref,
|
|
47
|
+
) => (
|
|
48
|
+
<PrizmaResultScreen
|
|
49
|
+
ref={ref}
|
|
50
|
+
glyph={
|
|
51
|
+
<span
|
|
52
|
+
className={[
|
|
53
|
+
'prizma-screen-layout__glyph',
|
|
54
|
+
'prizma-screen-layout__glyph--negative',
|
|
55
|
+
overrides?.align === 'left' ? 'prizma-screen-layout__glyph--left' : '',
|
|
56
|
+
]
|
|
57
|
+
.filter(Boolean)
|
|
58
|
+
.join(' ')}
|
|
59
|
+
>
|
|
60
|
+
<IconWifiOff size="l" />
|
|
61
|
+
</span>
|
|
62
|
+
}
|
|
63
|
+
title={strings.noConnection.title}
|
|
64
|
+
subtitle={strings.noConnection.description}
|
|
65
|
+
ctaLabel={strings.noConnection.ctaLabel}
|
|
66
|
+
verifiedLabel={strings.verifiedLabel}
|
|
67
|
+
navLabel={strings.navLabel}
|
|
68
|
+
screenId={screenId}
|
|
69
|
+
overrides={overrides}
|
|
70
|
+
onAction={onAction}
|
|
71
|
+
{...shell}
|
|
72
|
+
/>
|
|
73
|
+
),
|
|
74
|
+
);
|
|
75
|
+
DocumentCaptureNoConnectionScreen.displayName = 'DocumentCaptureNoConnectionScreen';
|
|
76
|
+
|
|
77
|
+
export default DocumentCaptureNoConnectionScreen;
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
// Document Capture module — copy contract.
|
|
2
|
+
//
|
|
3
|
+
// Every Document Capture screen receives the SAME
|
|
4
|
+
// `strings: DocumentCaptureStrings` object (rule: all copy via props, no
|
|
5
|
+
// hardcoded English — GUIDELINES.md §9). The object is the module's locale
|
|
6
|
+
// pack: one instance drives the whole flow, which is what the FlowPlayer steps
|
|
7
|
+
// through. Sample copy lives only in previews / host apps.
|
|
8
|
+
//
|
|
9
|
+
// Authoritative screen list: the PURPLE "screen specs" sections of the
|
|
10
|
+
// Document Capture Figma file (cbFXiChmJ8cWQDHwVghBqJ, page 4094:15561) —
|
|
11
|
+
// tutorial (4 purple variants + 3 method-selection variants) · commonIssues ·
|
|
12
|
+
// nextPage (optional / mandatory) · capture (default / filled) · confirmImage
|
|
13
|
+
// (reviewPhoto / analyzing / success) · confirmUpload (reviewFile / analyzing /
|
|
14
|
+
// success + 2 native picker specs) · errors (noConnection / genericError /
|
|
15
|
+
// genericErrorExhausted).
|
|
16
|
+
//
|
|
17
|
+
// FOUR purple variants document OS-NATIVE chrome, not Prizma screens, and are
|
|
18
|
+
// therefore NOT part of this contract (DEVIATIONS.md #DC-20):
|
|
19
|
+
// `tutorial.uploadOnlySelector`, `tutorial.nativeMethodSelectionOnWeb`,
|
|
20
|
+
// `upload.selectFromLibrary`, `upload.selectFromFiles`.
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Which purple `documentCapture.tutorial.*` intro variant to render. They are
|
|
24
|
+
* copy variants of ONE screen (DocumentCaptureTutorialScreen) — the layout is
|
|
25
|
+
* identical; only the subtitle and the CTA label change with the capture
|
|
26
|
+
* methods the session enables.
|
|
27
|
+
*/
|
|
28
|
+
export type DocumentCaptureTutorialVariant =
|
|
29
|
+
/** `tutorial.default` — camera AND upload allowed ("Continue"). */
|
|
30
|
+
| 'default'
|
|
31
|
+
/** `tutorial.captureOnly` — camera only ("Capture document"). */
|
|
32
|
+
| 'captureOnly'
|
|
33
|
+
/** `tutorial.uploadOnly` — upload only ("Upload document"). */
|
|
34
|
+
| 'uploadOnly';
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Which `documentCapture.tutorial.methodSelection*` sheet to render.
|
|
38
|
+
*
|
|
39
|
+
* web — the 2-row menu: Take photo · Upload document (menu-list-2)
|
|
40
|
+
* native — the 3-row menu: Take photo · Camera roll · Choose file
|
|
41
|
+
* (menu-list-3)
|
|
42
|
+
* nativeUpload — the same native menu with the camera row DROPPED, so 2 rows:
|
|
43
|
+
* Camera roll · Choose file (menu-list-2)
|
|
44
|
+
*
|
|
45
|
+
* `nativeUpload` has no purple spec section of its own. It comes off the iOS
|
|
46
|
+
* full flow (`cbFXiChmJ8cWQDHwVghBqJ`, node 4415:38025), where the upload-only
|
|
47
|
+
* leg presents a `methodSelectionNative` instance whose sheet measures 206 tall
|
|
48
|
+
* against the spec'd 262 — exactly one row less, with "Take photo" hidden,
|
|
49
|
+
* because a session that does not allow the camera cannot offer it. The flow is
|
|
50
|
+
* right and the spec set is one variant short; recorded as such rather than
|
|
51
|
+
* quietly rendering the 3-row sheet in a flow that forbids the camera.
|
|
52
|
+
* Flagged for the owner: 2026-09-02, Camila.
|
|
53
|
+
*/
|
|
54
|
+
export type DocumentCaptureMethodSelectionVariant = 'web' | 'native' | 'nativeUpload';
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* The three purple states shared by `confirmImage.*` and `confirmUpload.*`.
|
|
58
|
+
* Identical layout, identical stage — only the header block (title vs loading
|
|
59
|
+
* bar), the stage verdict and the CTA row change.
|
|
60
|
+
*/
|
|
61
|
+
export type DocumentCaptureConfirmStage = 'review' | 'analyzing' | 'success';
|
|
62
|
+
|
|
63
|
+
/** One `commonIssues` row: an H5 title + a Body/M description. */
|
|
64
|
+
export interface DocumentCaptureIssueStrings {
|
|
65
|
+
title: string;
|
|
66
|
+
description?: string;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export interface DocumentCaptureStrings {
|
|
70
|
+
/** Accessible name for the logo nav region (i18n — no baked-in English). */
|
|
71
|
+
navLabel?: string;
|
|
72
|
+
/** "verified by" attribution copy for the footer tag. */
|
|
73
|
+
verifiedLabel: string;
|
|
74
|
+
/** "All data is encrypted" reassurance row under every capture / review
|
|
75
|
+
* stage. Omit to drop the row (Core's `showEncryptedLabel` boolean). */
|
|
76
|
+
encryptedLabel?: string;
|
|
77
|
+
|
|
78
|
+
/** documentCapture.tutorial.default / .captureOnly / .uploadOnly — the
|
|
79
|
+
* subtitle and CTA label are per-variant; everything else is shared. */
|
|
80
|
+
tutorial: {
|
|
81
|
+
title: string;
|
|
82
|
+
/** Per-variant description (H5). */
|
|
83
|
+
subtitle: Record<DocumentCaptureTutorialVariant, string>;
|
|
84
|
+
/** Per-variant primary CTA ("Continue" / "Capture document" / …). */
|
|
85
|
+
ctaLabel: Record<DocumentCaptureTutorialVariant, string>;
|
|
86
|
+
/** Tertiary link under the CTA ("Skip this step"). Omit to drop it. */
|
|
87
|
+
skipLabel?: string;
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
/** documentCapture.tutorial.methodSelectionWeb / .methodSelectionNative —
|
|
91
|
+
* the action rows of the capture-method sheet. `web` shows the first two,
|
|
92
|
+
* `native` all three. */
|
|
93
|
+
methodSelection: {
|
|
94
|
+
/** Accessible name of the sheet (Core requires it on the menu variants). */
|
|
95
|
+
sheetLabel: string;
|
|
96
|
+
/** "Take photo" */
|
|
97
|
+
takePhotoLabel: string;
|
|
98
|
+
/** "Upload document" (web) */
|
|
99
|
+
uploadLabel: string;
|
|
100
|
+
/** "Choose from camera roll" (native only) */
|
|
101
|
+
cameraRollLabel: string;
|
|
102
|
+
/** "Choose file" (native only) */
|
|
103
|
+
chooseFileLabel: string;
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
/** documentCapture.commonIssues.default */
|
|
107
|
+
commonIssues: {
|
|
108
|
+
title: string;
|
|
109
|
+
/** The four rows, in Figma order: out of frame · folded · shadows ·
|
|
110
|
+
* dirty lens. Icons come from the canonical bank, not from copy
|
|
111
|
+
* (DEVIATIONS.md #DC-23). */
|
|
112
|
+
issues: readonly DocumentCaptureIssueStrings[];
|
|
113
|
+
/** "Try again" */
|
|
114
|
+
ctaLabel: string;
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
/** documentCapture.nextPage.optional / .mandatory */
|
|
118
|
+
nextPage: {
|
|
119
|
+
title: string;
|
|
120
|
+
/** `optional` subtitle ("If there's another page…"). */
|
|
121
|
+
subtitle: string;
|
|
122
|
+
/** `mandatory` subtitle ("Take a photo of the next page to continue."). */
|
|
123
|
+
mandatorySubtitle: string;
|
|
124
|
+
/** "Next page" */
|
|
125
|
+
ctaLabel: string;
|
|
126
|
+
/** "All pages captured" — the tertiary link, `optional` only. */
|
|
127
|
+
doneLabel?: string;
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
/** documentCapture.capture.default / .filled — the dark camera stage. */
|
|
131
|
+
capture: {
|
|
132
|
+
/** White H2 above the frame ("Show your full document"). */
|
|
133
|
+
title: string;
|
|
134
|
+
/** Muted instruction under it. */
|
|
135
|
+
subtitle?: string;
|
|
136
|
+
/** Accessible name of the shutter button. */
|
|
137
|
+
captureLabel: string;
|
|
138
|
+
/** Accessible name of the "?" help control. */
|
|
139
|
+
helpLabel: string;
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
/** documentCapture.confirmImage.reviewPhoto / .analyzing / .success */
|
|
143
|
+
confirmImage: {
|
|
144
|
+
/** `review` title ("Review your document"). */
|
|
145
|
+
title: string;
|
|
146
|
+
/** `review` description. */
|
|
147
|
+
subtitle?: string;
|
|
148
|
+
/** Loading-bar caption on `analyzing` ("Analyzing..."). */
|
|
149
|
+
analyzingLabel: string;
|
|
150
|
+
/** H2 on `success` ("Successfully processed!"). */
|
|
151
|
+
successTitle: string;
|
|
152
|
+
/** Secondary CTA on `review` ("Replace"). */
|
|
153
|
+
replaceLabel: string;
|
|
154
|
+
/** Primary CTA on `review` / `success` ("Continue"). */
|
|
155
|
+
ctaLabel: string;
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
/** documentCapture.confirmUpload.reviewFile / .analyzing / .success */
|
|
159
|
+
confirmUpload: {
|
|
160
|
+
/** `review` title ("Review your document"). */
|
|
161
|
+
title: string;
|
|
162
|
+
/** `review` description. */
|
|
163
|
+
subtitle?: string;
|
|
164
|
+
/** Loading-bar caption on `analyzing` ("Uploading..."). */
|
|
165
|
+
analyzingLabel: string;
|
|
166
|
+
/** H2 on `success` ("Successfully processed!"). */
|
|
167
|
+
successTitle: string;
|
|
168
|
+
/** Secondary CTA on `review` ("Replace"). */
|
|
169
|
+
replaceLabel: string;
|
|
170
|
+
/** Primary CTA on `review` / `success` ("Continue"). */
|
|
171
|
+
ctaLabel: string;
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
/** documentCapture.errors.genericError / .genericErrorExhausted — the host
|
|
175
|
+
* passes the copy of the CURRENT verdict; the exhausted variant changes
|
|
176
|
+
* icon + copy + CTA through the same slice. */
|
|
177
|
+
error: {
|
|
178
|
+
title: string;
|
|
179
|
+
description?: string;
|
|
180
|
+
/** "2 attempts remaining" — omit on the exhausted variant. */
|
|
181
|
+
attemptsLabel?: string;
|
|
182
|
+
/** "Recapture document" / "Continue" */
|
|
183
|
+
ctaLabel: string;
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
/** documentCapture.errors.noConnection */
|
|
187
|
+
noConnection: {
|
|
188
|
+
title: string;
|
|
189
|
+
description?: string;
|
|
190
|
+
ctaLabel: string;
|
|
191
|
+
};
|
|
192
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import React, { forwardRef, type ReactNode } from 'react';
|
|
2
|
+
import { PrizmaTutorialScreen, type PrizmaTutorialScreenProps } from './TutorialScreen';
|
|
3
|
+
import { DocumentCaptureIllustration } from './DocumentCaptureIllustration';
|
|
4
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
5
|
+
import type {
|
|
6
|
+
DocumentCaptureStrings,
|
|
7
|
+
DocumentCaptureTutorialVariant,
|
|
8
|
+
} from './DocumentCaptureStrings';
|
|
9
|
+
import './ScreenLayout.css';
|
|
10
|
+
|
|
11
|
+
export interface DocumentCaptureTutorialScreenProps
|
|
12
|
+
extends Omit<
|
|
13
|
+
PrizmaTutorialScreenProps,
|
|
14
|
+
'title' | 'subtitle' | 'ctaLabel' | 'linkLabel' | 'verifiedLabel' | 'navLabel'
|
|
15
|
+
> {
|
|
16
|
+
/** Module copy — this screen reads the `tutorial` slice (+ shared labels). */
|
|
17
|
+
strings: DocumentCaptureStrings;
|
|
18
|
+
/** Which purple `documentCapture.tutorial.*` intro section to render. */
|
|
19
|
+
variant?: DocumentCaptureTutorialVariant;
|
|
20
|
+
/** Replace the module's document illustration. */
|
|
21
|
+
illustration?: ReactNode;
|
|
22
|
+
screenId?: string;
|
|
23
|
+
overrides?: PrizmaScreenOverrides;
|
|
24
|
+
onAction?: PrizmaScreenActionHandler;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Document Capture — tutorial, built on the `PrizmaTutorialScreen` archetype
|
|
29
|
+
* (GUIDELINES.md §6-A). Figma: purple sections
|
|
30
|
+
* `documentCapture.tutorial.default` / `.captureOnly` / `.uploadOnly` — copy
|
|
31
|
+
* variants of this ONE screen (subtitle + CTA label).
|
|
32
|
+
*
|
|
33
|
+
* Measured off the 390 sections (CONTENT 654 tall, `px-24 py-8`):
|
|
34
|
+
* nav 8→52 · Title 68→127 (nav + Spacing/24) · illustration container flexes ·
|
|
35
|
+
* CTAs 472→646 = primary + the "Skip this step" tertiary link + Tag.
|
|
36
|
+
*
|
|
37
|
+
* There is NO disclaimer on any Document Capture tutorial variant — the slot
|
|
38
|
+
* GUIDELINES §6-A reserves is simply unused.
|
|
39
|
+
*
|
|
40
|
+
* It used to hand-build the shell because the archetype hardcoded a single
|
|
41
|
+
* `PrizmaButton` with no link slot. The archetype now carries `linkLabel` (#F-32);
|
|
42
|
+
* the link's gap above the tag comes from the band's flat Spacing/16 rather than
|
|
43
|
+
* `PrizmaButtonGroup`'s Spacing/12, a 4px consolidation logged as #F-32.
|
|
44
|
+
*/
|
|
45
|
+
export const DocumentCaptureTutorialScreen = forwardRef<
|
|
46
|
+
HTMLDivElement,
|
|
47
|
+
DocumentCaptureTutorialScreenProps
|
|
48
|
+
>(
|
|
49
|
+
(
|
|
50
|
+
{
|
|
51
|
+
strings,
|
|
52
|
+
variant = 'default',
|
|
53
|
+
illustration,
|
|
54
|
+
screenId = `document-capture-tutorial-${variant}`,
|
|
55
|
+
overrides,
|
|
56
|
+
onAction,
|
|
57
|
+
...shell
|
|
58
|
+
},
|
|
59
|
+
ref,
|
|
60
|
+
) => (
|
|
61
|
+
<PrizmaTutorialScreen
|
|
62
|
+
ref={ref}
|
|
63
|
+
title={strings.tutorial.title}
|
|
64
|
+
subtitle={strings.tutorial.subtitle[variant]}
|
|
65
|
+
ctaLabel={strings.tutorial.ctaLabel[variant]}
|
|
66
|
+
linkLabel={strings.tutorial.skipLabel}
|
|
67
|
+
illustration={illustration ?? <DocumentCaptureIllustration />}
|
|
68
|
+
verifiedLabel={strings.verifiedLabel}
|
|
69
|
+
navLabel={strings.navLabel}
|
|
70
|
+
screenId={screenId}
|
|
71
|
+
overrides={overrides}
|
|
72
|
+
onAction={onAction}
|
|
73
|
+
{...shell}
|
|
74
|
+
/>
|
|
75
|
+
),
|
|
76
|
+
);
|
|
77
|
+
DocumentCaptureTutorialScreen.displayName = 'DocumentCaptureTutorialScreen';
|
|
78
|
+
|
|
79
|
+
export default DocumentCaptureTutorialScreen;
|