@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,29 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { IconLock } from '@incodetech/prizma-core-icons';
|
|
5
|
+
import { PrizmaReviewScreen } from './ReviewScreen';
|
|
6
|
+
import './ScreenLayout.css';
|
|
7
|
+
import './DocumentCaptureLayout.css';
|
|
8
|
+
/**
|
|
9
|
+
* Document Capture — uploaded-file confirmation, built on the Review archetype
|
|
10
|
+
* (GUIDELINES.md §6-H, `PrizmaReviewScreen`).
|
|
11
|
+
*
|
|
12
|
+
* Figma: purple sections `documentCapture.confirmUpload.reviewFile` /
|
|
13
|
+
* `.analyzing` / `.success` — the same review skeleton as
|
|
14
|
+
* `DocumentCaptureConfirmImageScreen`, with the camera stage swapped for the
|
|
15
|
+
* uploaded file's preview card. The archetype owns the header, the flexing
|
|
16
|
+
* media stage, the Spacing/24 CTA offset and the anchored tag (DEVIATIONS
|
|
17
|
+
* #DC-22/24, now #REV-1); what stays module-side is the media itself — the
|
|
18
|
+
* vertical preview card and the standalone encrypted row, which have no Core
|
|
19
|
+
* counterpart (`PrizmaCardDocumentContainer` is a HORIZONTAL filename + action
|
|
20
|
+
* row, and Core's encrypted block ships only inside `PrizmaIdCapture`) —
|
|
21
|
+
* DEVIATIONS #DC-26, #DC-27 — plus the file-column inset.
|
|
22
|
+
*
|
|
23
|
+
* `documentCapture.upload.selectFromLibrary` / `.selectFromFiles` sit between
|
|
24
|
+
* the tutorial and this screen in the Figma flow, but they are the iOS Photos
|
|
25
|
+
* and Files apps — OS chrome, not Prizma surfaces (DEVIATIONS.md #DC-20).
|
|
26
|
+
*/
|
|
27
|
+
export const DocumentCaptureConfirmUploadScreen = forwardRef(({ strings, stage = 'review', filename, thumbnail, progress = 45, screenId = `document-capture-confirm-upload-${stage}`, overrides, onAction, ...shell }, ref) => (_jsxs(PrizmaReviewScreen, { ref: ref, stage: stage, title: strings.confirmUpload.title, subtitle: strings.confirmUpload.subtitle, successTitle: strings.confirmUpload.successTitle, analyzingLabel: strings.confirmUpload.analyzingLabel, analyzingState: "uploading", progress: progress, stageClassName: "document-capture-review-file", primaryLabel: strings.confirmUpload.ctaLabel, secondaryLabel: strings.confirmUpload.replaceLabel, verifiedLabel: strings.verifiedLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell, children: [_jsxs("div", { className: "document-capture-file-card", children: [_jsx("span", { className: "document-capture-file-card__thumb", children: thumbnail }), filename ? _jsx("p", { className: "document-capture-file-card__name", children: filename }) : null] }), strings.encryptedLabel ? (_jsxs("p", { className: "document-capture-encrypted", children: [_jsx(IconLock, { size: "s" }), _jsx("span", { children: strings.encryptedLabel })] })) : null] })));
|
|
28
|
+
DocumentCaptureConfirmUploadScreen.displayName = 'DocumentCaptureConfirmUploadScreen';
|
|
29
|
+
export default DocumentCaptureConfirmUploadScreen;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type PrizmaResultScreenProps } from './ResultScreen';
|
|
3
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
4
|
+
import type { DocumentCaptureStrings } from './DocumentCaptureStrings';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
export interface DocumentCaptureGenericErrorScreenProps extends Omit<PrizmaResultScreenProps, 'status' | 'title' | 'subtitle' | 'disclaimer' | 'ctaLabel' | 'verifiedLabel' | 'navLabel'> {
|
|
7
|
+
/** Module copy — this screen reads the `error` slice (+ shared labels). The
|
|
8
|
+
* host passes the copy of the CURRENT verdict. */
|
|
9
|
+
strings: DocumentCaptureStrings;
|
|
10
|
+
/**
|
|
11
|
+
* `documentCapture.errors.genericErrorExhausted` — retries are used up: the
|
|
12
|
+
* status icon goes from warning to negative, the attempts line is dropped,
|
|
13
|
+
* and the CTA becomes the forward action instead of "Recapture document".
|
|
14
|
+
*/
|
|
15
|
+
exhausted?: boolean;
|
|
16
|
+
screenId?: string;
|
|
17
|
+
overrides?: PrizmaScreenOverrides;
|
|
18
|
+
onAction?: PrizmaScreenActionHandler;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Document Capture — generic error, built on the `PrizmaResultScreen` archetype
|
|
22
|
+
* (GUIDELINES.md §6-F). Figma: purple sections
|
|
23
|
+
* `documentCapture.errors.genericError` / `.genericErrorExhausted`.
|
|
24
|
+
*
|
|
25
|
+
* The two sections that DO keep the attribution chrome (nav + verified tag),
|
|
26
|
+
* alongside the tutorial and next-page families — DEVIATIONS.md #DC-22.
|
|
27
|
+
*
|
|
28
|
+
* Layout measured off the 390 sections and identical, to the pixel, to the Face
|
|
29
|
+
* Capture pilot's `resultError.*`: `top-nav/header` 8→52 · Title stretched
|
|
30
|
+
* 52→479 with its icon/heading/subtitle block vertically centered · CTA band
|
|
31
|
+
* 479→646. That centered block IS Core's `PrizmaTitle` (icon slot → Spacing/16
|
|
32
|
+
* → H2 → Spacing/12 → H5), and the band is the archetype's — this file used to
|
|
33
|
+
* repeat both by hand for want of a result template (the #FM-24 gap, now closed).
|
|
34
|
+
*/
|
|
35
|
+
export declare const DocumentCaptureGenericErrorScreen: React.ForwardRefExoticComponent<DocumentCaptureGenericErrorScreenProps & React.RefAttributes<HTMLDivElement>>;
|
|
36
|
+
export default DocumentCaptureGenericErrorScreen;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { PrizmaResultScreen } from './ResultScreen';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
/**
|
|
7
|
+
* Document Capture — generic error, built on the `PrizmaResultScreen` archetype
|
|
8
|
+
* (GUIDELINES.md §6-F). Figma: purple sections
|
|
9
|
+
* `documentCapture.errors.genericError` / `.genericErrorExhausted`.
|
|
10
|
+
*
|
|
11
|
+
* The two sections that DO keep the attribution chrome (nav + verified tag),
|
|
12
|
+
* alongside the tutorial and next-page families — DEVIATIONS.md #DC-22.
|
|
13
|
+
*
|
|
14
|
+
* Layout measured off the 390 sections and identical, to the pixel, to the Face
|
|
15
|
+
* Capture pilot's `resultError.*`: `top-nav/header` 8→52 · Title stretched
|
|
16
|
+
* 52→479 with its icon/heading/subtitle block vertically centered · CTA band
|
|
17
|
+
* 479→646. That centered block IS Core's `PrizmaTitle` (icon slot → Spacing/16
|
|
18
|
+
* → H2 → Spacing/12 → H5), and the band is the archetype's — this file used to
|
|
19
|
+
* repeat both by hand for want of a result template (the #FM-24 gap, now closed).
|
|
20
|
+
*/
|
|
21
|
+
export const DocumentCaptureGenericErrorScreen = forwardRef(({ strings, exhausted = false, screenId = exhausted
|
|
22
|
+
? 'document-capture-generic-error-exhausted'
|
|
23
|
+
: 'document-capture-generic-error', overrides, onAction, ...shell }, ref) => {
|
|
24
|
+
// Figma: the base section carries "N attempts remaining"; the exhausted
|
|
25
|
+
// section drops it (the subtitle says the limit is reached instead).
|
|
26
|
+
const attemptsLabel = exhausted ? undefined : strings.error.attemptsLabel;
|
|
27
|
+
return (_jsx(PrizmaResultScreen, { ref: ref, status: exhausted ? 'error' : 'warning', title: strings.error.title, subtitle: strings.error.description, disclaimer: attemptsLabel, ctaLabel: strings.error.ctaLabel, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell }));
|
|
28
|
+
});
|
|
29
|
+
DocumentCaptureGenericErrorScreen.displayName = 'DocumentCaptureGenericErrorScreen';
|
|
30
|
+
export default DocumentCaptureGenericErrorScreen;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import React, { type ComponentPropsWithoutRef } from 'react';
|
|
2
|
+
import './DocumentCaptureLayout.css';
|
|
3
|
+
/**
|
|
4
|
+
* DocumentCaptureIllustration — the document centerpiece of the Document
|
|
5
|
+
* Capture tutorial / next-page screens.
|
|
6
|
+
*
|
|
7
|
+
* WHY IT LIVES IN THE MODULE LAYER: `prizma-core-web` ships
|
|
8
|
+
* `PrizmaIllustrationSelfie`, `…IdTutorial`, `…IdIntro`, `…IdFlip`,
|
|
9
|
+
* `…IdHint`, `…IdFeedback`, `…NfcScan`, `…NfcIssue`, `…Geolocation`,
|
|
10
|
+
* `…DigitalId` and `…Avatar` — there is NO document / proof-of-address
|
|
11
|
+
* illustration. GUIDELINES.md §10 is the standing asset rule for that gap
|
|
12
|
+
* ("Illustrations…: inline SVG React components (Figma-sourced), tintable via
|
|
13
|
+
* tokens/currentColor"), so the artwork is inlined here verbatim from the
|
|
14
|
+
* Figma export and every paint is bound to an existing illustration token —
|
|
15
|
+
* no primitive re-implemented, no hex hardcoded. Promotion to
|
|
16
|
+
* `PrizmaIllustrationDocument` is a Core request (DEVIATIONS.md #DC-21).
|
|
17
|
+
*
|
|
18
|
+
* Figma source: the `Illustrations` frame of the purple sections
|
|
19
|
+
* `documentCapture.tutorial.*` / `documentCapture.nextPage.*`
|
|
20
|
+
* (cbFXiChmJ8cWQDHwVghBqJ) — a 342 × 358 box (`aspect-[342/358]`, max 362 ×
|
|
21
|
+
* 378.94) holding four layers, whose positions are PERCENTAGES of that box and
|
|
22
|
+
* therefore identical across every purple variant (verified against
|
|
23
|
+
* `tutorial.default` 4095:26010 and `nextPage.optional` 4095:26026):
|
|
24
|
+
*
|
|
25
|
+
* halo circle d = 91.34% of the height, centered, top 4.19%
|
|
26
|
+
* document page inset 9.05% / 20.37% / 16.97% / 20.12% (+ its Figma drop
|
|
27
|
+
* shadow, which bleeds −13.84% sideways and −9.31% / −11.97%)
|
|
28
|
+
* text lines inset 12.01% / 25.28% / 26.42% / 25.14%, opacity 0.5
|
|
29
|
+
* capture frame aspect 177.81 / 230.04, top 8.38%, bottom 16.2%, centered —
|
|
30
|
+
* a 2px white outline just outside the page edge
|
|
31
|
+
*
|
|
32
|
+
* Those percentages are resolved to the 342 × 358 viewBox once, below, so the
|
|
33
|
+
* whole thing is ONE scalable SVG instead of four positioned layers.
|
|
34
|
+
*
|
|
35
|
+
* Paint mapping (exact values, pixel-diff 0):
|
|
36
|
+
* #E5F0FF → Illustration/Surface/Halo · #C6C8D2 → artwork/grey-96
|
|
37
|
+
* white → artwork/white
|
|
38
|
+
* The export also stacked a `fill="black" fill-opacity="0.01"` plate over the
|
|
39
|
+
* page — dropped on purpose: it is invisible (a 0.15%-of-a-channel shift) and
|
|
40
|
+
* black is absent from the illustration token set, so keeping it would have
|
|
41
|
+
* meant a hardcoded literal for no visual gain.
|
|
42
|
+
*/
|
|
43
|
+
export type PrizmaDocumentCaptureIllustrationProps = Omit<ComponentPropsWithoutRef<'svg'>, 'viewBox' | 'children'>;
|
|
44
|
+
export declare const DocumentCaptureIllustration: React.ForwardRefExoticComponent<PrizmaDocumentCaptureIllustrationProps & React.RefAttributes<SVGSVGElement>>;
|
|
45
|
+
export default DocumentCaptureIllustration;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import './DocumentCaptureLayout.css';
|
|
5
|
+
export const DocumentCaptureIllustration = forwardRef(({ className, ...rest }, ref) => (_jsxs("svg", { ref: ref, className: ['document-capture-illustration', className ?? ''].filter(Boolean).join(' '), viewBox: "0 0 342 358", fill: "none", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", focusable: "false", ...rest, children: [_jsx("circle", { cx: "171", cy: "178.5", r: "163.5", fill: "var(--prizma-illustration-surface-halo)" }), _jsxs("svg", { x: "40.64", y: "7.75", width: "259.83", height: "321.15", viewBox: "0 0 221.387 273.626", overflow: "visible", children: [_jsx("g", { filter: "url(#prizma-dc-ill-shadow)", children: _jsx("path", { d: "M24 26C24 23.2386 26.2386 21 29 21H192.387C195.149 21 197.387 23.2386 197.387 26V241.626C197.387 244.387 195.149 246.626 192.387 246.626H29C26.2386 246.626 24 244.387 24 241.626V26Z", fill: "var(--prizma-illustration-artwork-white)" }) }), _jsx("defs", { children: _jsxs("filter", { id: "prizma-dc-ill-shadow", x: "0", y: "0", width: "221.387", height: "273.626", filterUnits: "userSpaceOnUse", colorInterpolationFilters: "sRGB", children: [_jsx("feFlood", { floodOpacity: "0", result: "BackgroundImageFix" }), _jsx("feColorMatrix", { in: "SourceAlpha", type: "matrix", values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0", result: "hardAlpha" }), _jsx("feOffset", { dy: "3" }), _jsx("feGaussianBlur", { stdDeviation: "12" }), _jsx("feColorMatrix", { type: "matrix", values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0" }), _jsx("feBlend", { mode: "normal", in2: "BackgroundImageFix", result: "effect1_dropShadow" }), _jsx("feBlend", { mode: "normal", in: "SourceGraphic", in2: "effect1_dropShadow", result: "shape" })] }) })] }), _jsx("svg", { x: "85.98", y: "42.996", width: "169.56", height: "220.42", viewBox: "0 0 144.456 187.768", preserveAspectRatio: "none", children: _jsxs("g", { opacity: "0.5", fill: "var(--prizma-illustration-artwork-grey-96)", children: [_jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M0.152148 23.4538C0.152148 22.9833 0.533578 22.6018 1.0041 22.6018H143.603C144.074 22.6018 144.455 22.9833 144.455 23.4538V26.0963C144.455 26.5669 144.074 26.9483 143.603 26.9483H1.0041C0.533582 26.9483 0.152148 26.5669 0.152148 26.0963V23.4538Z" }), _jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M0.152148 184.274C0.152148 183.803 0.533578 183.422 1.0041 183.422H143.603C144.074 183.422 144.455 183.803 144.455 184.274V186.916C144.455 187.387 144.074 187.768 143.603 187.768H1.0041C0.533582 187.768 0.152148 187.387 0.152148 186.916V184.274Z" }), _jsx("path", { d: "M0.152148 46.9252C0.152148 46.4546 0.533582 46.0732 1.0041 46.0732H57.5431C58.0136 46.0732 58.395 46.4546 58.395 46.9252V54.7835C58.395 55.254 58.0136 55.6355 57.5431 55.6355H1.0041C0.533582 55.6355 0.152148 55.254 0.152148 54.7835L0.152148 46.9252Z" }), _jsx("path", { d: "M0.152108 65.1805C0.152108 64.71 0.533541 64.3286 1.00406 64.3286H57.543C58.0135 64.3286 58.395 64.71 58.395 65.1805V73.0389C58.395 73.5094 58.0136 73.8908 57.543 73.8908H1.00406C0.533541 73.8908 0.152108 73.5094 0.152108 73.0389L0.152108 65.1805Z" }), _jsx("path", { d: "M0.13728 83.4351C0.145491 82.9647 0.533524 82.59 1.00397 82.5982L81.0017 83.9945C81.4722 84.0028 81.8469 84.3908 81.8387 84.8612L81.7015 92.7184C81.6933 93.1888 81.3053 93.5636 80.8348 93.5553L0.837091 92.159C0.366641 92.1508 -0.00807931 91.7627 0.000132428 91.2923L0.13728 83.4351Z" }), _jsx("path", { d: "M0.13728 101.69C0.145491 101.22 0.533524 100.845 1.00397 100.854L24.5061 101.264C24.9765 101.272 25.3512 101.66 25.343 102.13L25.2362 108.249C25.228 108.72 24.84 109.094 24.3695 109.086L0.867432 108.676C0.396982 108.668 0.0222633 108.28 0.0304751 107.809L0.13728 101.69Z" }), _jsx("path", { d: "M0.152148 1.72151C0.152148 1.25099 0.533582 0.869559 1.0041 0.869559H107.093C107.563 0.869559 107.945 1.25099 107.945 1.72151V10.4492C107.945 10.9197 107.563 11.3011 107.093 11.3011H1.0041C0.533581 11.3011 0.152148 10.9197 0.152148 10.4492V1.72151Z" }), _jsx("path", { d: "M122.723 0.851954C122.723 0.381432 123.105 0 123.575 0H143.604C144.074 0 144.456 0.381433 144.456 0.851955V9.5796C144.456 10.0501 144.074 10.4316 143.604 10.4316H123.575C123.105 10.4316 122.723 10.0501 122.723 9.5796V0.851954Z" })] }) }), _jsx("rect", { x: "67.65", y: "31", width: "206.7", height: "268", rx: "7", stroke: "var(--prizma-illustration-artwork-white)", strokeWidth: "2" })] })));
|
|
6
|
+
DocumentCaptureIllustration.displayName = 'DocumentCaptureIllustration';
|
|
7
|
+
export default DocumentCaptureIllustration;
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
/* Document Capture — module layout additions.
|
|
2
|
+
*
|
|
3
|
+
* ONLY what the foundation archetypes and Prizma Core do not already own.
|
|
4
|
+
* Every value is a token; the two unavoidable literals below carry an inline
|
|
5
|
+
* justification AND a numbered row in DEVIATIONS.md (Wave 2).
|
|
6
|
+
*
|
|
7
|
+
* Nothing here re-declares an archetype spacing rule: the content column, the
|
|
8
|
+
* 24px gutters, the CTA-band recipe (`__band`, DEVIATIONS #8), the no-nav
|
|
9
|
+
* status-bar reserve (`__content--no-nav`, #9) and the "capture stage adds no
|
|
10
|
+
* offset" rule (`__content--capture`, #12) all stay the foundation's.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
/* ── Camera stage top offset ─────────────────────────────────────────────────
|
|
14
|
+
* `documentCapture.capture.*` has NO logo nav (DEVIATIONS #DC-22) and its CONTENT
|
|
15
|
+
* frame starts at Spacing/16, not the Spacing/24 every other no-nav screen uses
|
|
16
|
+
* (measured: 54px System UI Top Bar → `center grouping container` y=16). Same
|
|
17
|
+
* `--pcs-status-bar` custom property as the foundation, so a host that draws
|
|
18
|
+
* its own chrome still overrides the reserve exactly once.
|
|
19
|
+
*
|
|
20
|
+
* ⚠ THIS RESERVE WENT MISSING AND CAME BACK — read before touching it.
|
|
21
|
+
* It used to hang off `.document-capture-content--camera`, a class this screen
|
|
22
|
+
* carried when it composed its own column. The screen was later rebuilt on the
|
|
23
|
+
* foundation's viewfinder (`.prizma-viewfinder__content`) to match
|
|
24
|
+
* IdCaptureStageScreen, and the class went with the old markup — but the rule
|
|
25
|
+
* stayed here, matching nothing. The reserve went with it: the viewfinder
|
|
26
|
+
* column declares `padding: 0 24 24`, so the title rendered at the very top of
|
|
27
|
+
* the shell, y+0, clipped by the notch (owner report 2026-09-03; measured
|
|
28
|
+
* title-to-shell gap 0px on Document Capture against 143px on ID Capture,
|
|
29
|
+
* which is only right because ITS stage draws a nav row and the nav carries the
|
|
30
|
+
* reserve — see ScreenNav.css).
|
|
31
|
+
*
|
|
32
|
+
* So it is scoped to the composition that actually ships. The 16 rather than
|
|
33
|
+
* the foundation's 24 is the measured number and the reason this rule is not
|
|
34
|
+
* just `__content--no-nav`; the Spacing/16 between the title block and the
|
|
35
|
+
* frame is `.prizma-viewfinder__intro`'s own padding-bottom, which the
|
|
36
|
+
* foundation already sets, so nothing re-declares it here.
|
|
37
|
+
*/
|
|
38
|
+
.document-capture-capture-screen .prizma-viewfinder__content {
|
|
39
|
+
padding-top: calc(var(--pcs-status-bar, 47px) + var(--prizma-spacing-16));
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/* Core's PoA stage is `height: 100%` so it fills whatever box the host gives
|
|
43
|
+
* it (IdCapture.css). Inside a flex column that has to be spelled out as a
|
|
44
|
+
* flex item, otherwise the percentage resolves against the whole content
|
|
45
|
+
* column and the Title / strip get squeezed. No spacing is added — the stage
|
|
46
|
+
* keeps owning its own frame ↔ encrypted-row geometry (DEVIATIONS #12). The
|
|
47
|
+
* camera screen and the confirm-image review both put the poa stage in a flex
|
|
48
|
+
* column, so both need it. */
|
|
49
|
+
.document-capture-capture-screen .prizma-viewfinder__content > .prizma-id-capture,
|
|
50
|
+
.document-capture-review-image > .prizma-id-capture {
|
|
51
|
+
flex: 1 1 auto;
|
|
52
|
+
min-height: 0;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/* Capture stage → manual-capture strip: Spacing/12 (Figma `center grouping
|
|
56
|
+
* container` 550 − content 538). */
|
|
57
|
+
.document-capture-capture-bar {
|
|
58
|
+
flex-shrink: 0;
|
|
59
|
+
display: flex;
|
|
60
|
+
justify-content: center;
|
|
61
|
+
margin-top: var(--prizma-spacing-12);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/* Removed: `.document-capture-band--pinned` (`margin-top: auto`). Its one
|
|
65
|
+
* consumer, `commonIssues`, is now the List archetype, whose `__list` middle
|
|
66
|
+
* flexes and pushes the band down on its own — DEVIATIONS #F-31.
|
|
67
|
+
*/
|
|
68
|
+
|
|
69
|
+
/* ── Review-stage media adapters (archetype H) ───────────────────────────────
|
|
70
|
+
* The review skeleton — header block, flexing media stage, stage → CTA Spacing/24
|
|
71
|
+
* and the analyzing flush — now lives in the foundation (`ScreenLayout.css`
|
|
72
|
+
* `.prizma-screen-layout__review-*`, consumed via `PrizmaReviewScreen`).
|
|
73
|
+
* DEVIATIONS #REV-1. Only what shapes THIS module's media stays here.
|
|
74
|
+
*/
|
|
75
|
+
|
|
76
|
+
/* Confirm-image review: the captured still keeps the same PoA frame the camera
|
|
77
|
+
* screen uses (its flex-item rule is shared above), and its encrypted row is
|
|
78
|
+
* re-tinted for the LIGHT review surface — Core paints it Text/Body/0 Static
|
|
79
|
+
* (white) for the dark camera stage; Figma draws Text/Body/800 (Primary) here.
|
|
80
|
+
* No Core file touched, no !important — DEVIATIONS #DC-25. */
|
|
81
|
+
.document-capture-review-image .prizma-id-capture__encrypted {
|
|
82
|
+
color: var(--prizma-text-body-800-primary);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/* Confirm-upload review: the file-preview card is inset by 48 inside the media
|
|
86
|
+
* stage (Figma `Container` px-48 → the 246-wide card in the 342 column). The
|
|
87
|
+
* spacing scale stops at 40, so the value is DERIVED from Spacing/24. */
|
|
88
|
+
.document-capture-review-file {
|
|
89
|
+
padding-inline: calc(var(--prizma-spacing-24) * 2);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/* ── Standalone encrypted notice ─────────────────────────────────────────────
|
|
93
|
+
* Core owns the "capture encrypted message" building block only as a private
|
|
94
|
+
* part of PrizmaIdCapture; the uploaded-file screens need it beside a card
|
|
95
|
+
* instead. Rebuilt here from the same tokens as
|
|
96
|
+
* `.prizma-id-capture__encrypted` (Spacing/8 block padding, Spacing/4 gap,
|
|
97
|
+
* Body/M Regular, 16px lock). `IconLock` is designed at 24 only, so — exactly
|
|
98
|
+
* as Core does in `IdCapture.css` — the glyph is clamped to the designed 16 in
|
|
99
|
+
* CSS; 16 is absent from the icon-size token axis (m=24, l=32, …).
|
|
100
|
+
* DEVIATIONS #DC-26.
|
|
101
|
+
*/
|
|
102
|
+
.document-capture-encrypted {
|
|
103
|
+
margin: 0;
|
|
104
|
+
flex-shrink: 0;
|
|
105
|
+
display: flex;
|
|
106
|
+
align-items: center;
|
|
107
|
+
justify-content: center;
|
|
108
|
+
gap: var(--prizma-spacing-4);
|
|
109
|
+
padding-block: var(--prizma-spacing-8);
|
|
110
|
+
color: var(--prizma-text-body-800-primary);
|
|
111
|
+
font-family: var(--prizma-body-family);
|
|
112
|
+
font-size: var(--prizma-body-m-regular-font-size);
|
|
113
|
+
font-weight: var(--prizma-body-m-regular-font-weight);
|
|
114
|
+
line-height: var(--prizma-body-m-regular-line-height);
|
|
115
|
+
letter-spacing: var(--prizma-body-m-regular-letter-spacing);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.document-capture-encrypted > svg {
|
|
119
|
+
flex: none;
|
|
120
|
+
width: 16px; /* hardcoded — Icon/Lock is designed at 24 only and Figma draws 16; same clamp as Core's .prizma-id-capture__encrypted-icon (DEVIATIONS #DC-26) */
|
|
121
|
+
height: 16px;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/* ── Uploaded-file preview card ──────────────────────────────────────────────
|
|
125
|
+
* Figma `Document Container` of `confirmUpload.*`. Core's
|
|
126
|
+
* `PrizmaCardDocumentContainer` is the HORIZONTAL filename + action row — a
|
|
127
|
+
* different component with the same Figma name — so the vertical preview card
|
|
128
|
+
* is composed here from the same Card tokens (Surface/Neutral/50 on
|
|
129
|
+
* Border/Neutral/100 at Border/Radius/large, Spacing/32 block + Spacing/24
|
|
130
|
+
* inline padding, Spacing/24 thumbnail → info gap). DEVIATIONS #DC-27.
|
|
131
|
+
*/
|
|
132
|
+
.document-capture-file-card {
|
|
133
|
+
display: flex;
|
|
134
|
+
flex-direction: column;
|
|
135
|
+
align-items: center;
|
|
136
|
+
gap: var(--prizma-spacing-24);
|
|
137
|
+
box-sizing: border-box;
|
|
138
|
+
width: 100%;
|
|
139
|
+
padding: var(--prizma-spacing-32) var(--prizma-spacing-24);
|
|
140
|
+
background: var(--prizma-surface-neutral-50);
|
|
141
|
+
border: var(--prizma-border-width-regular) solid var(--prizma-border-neutral-100);
|
|
142
|
+
border-radius: var(--prizma-border-radius-large);
|
|
143
|
+
overflow: hidden;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/* Thumbnail — Figma 120 × 160 (a 3:4 page crop). Sized by ratio off the card
|
|
147
|
+
* width so it scales with the host, capped at the design size. */
|
|
148
|
+
.document-capture-file-card__thumb {
|
|
149
|
+
position: relative;
|
|
150
|
+
flex: none;
|
|
151
|
+
width: 120px; /* hardcoded — Figma page-thumbnail width; absent from the token SOT (DEVIATIONS #DC-27) */
|
|
152
|
+
aspect-ratio: 3 / 4;
|
|
153
|
+
max-width: 100%;
|
|
154
|
+
border: var(--prizma-border-width-regular) solid var(--prizma-border-neutral-100);
|
|
155
|
+
border-radius: var(--prizma-border-radius-small);
|
|
156
|
+
overflow: hidden;
|
|
157
|
+
background: var(--prizma-surface-neutral-0);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
.document-capture-file-card__thumb > img,
|
|
161
|
+
.document-capture-file-card__thumb > svg {
|
|
162
|
+
position: absolute;
|
|
163
|
+
inset: 0;
|
|
164
|
+
width: 100%;
|
|
165
|
+
height: 100%;
|
|
166
|
+
object-fit: cover;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
.document-capture-file-card__name {
|
|
170
|
+
margin: 0;
|
|
171
|
+
width: 100%;
|
|
172
|
+
overflow-wrap: break-word;
|
|
173
|
+
text-align: center;
|
|
174
|
+
color: var(--prizma-text-body-800-primary);
|
|
175
|
+
font-family: var(--prizma-headline-family);
|
|
176
|
+
font-size: var(--prizma-headline-h5-font-size);
|
|
177
|
+
font-weight: var(--prizma-headline-h5-font-weight);
|
|
178
|
+
line-height: var(--prizma-headline-h5-line-height);
|
|
179
|
+
letter-spacing: var(--prizma-headline-h5-letter-spacing);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/* The `analyzing` loading-bar block (164px centred cap) moved to the foundation
|
|
183
|
+
* with the rest of the review skeleton — `.prizma-screen-layout__review-loading`
|
|
184
|
+
* in ScreenLayout.css. DEVIATIONS #DC-28, #REV-1. */
|
|
185
|
+
|
|
186
|
+
/* ── Illustration slot ───────────────────────────────────────────────────────
|
|
187
|
+
* The SVG carries the 342 × 358 viewBox, so `preserveAspectRatio` does the
|
|
188
|
+
* letterboxing: the slot only supplies the flexible box and the Figma
|
|
189
|
+
* max-width (362 → max-height 378.9 follows from the ratio, so it is never
|
|
190
|
+
* declared).
|
|
191
|
+
*/
|
|
192
|
+
.document-capture-illustration {
|
|
193
|
+
flex: 1 1 auto;
|
|
194
|
+
min-height: 0;
|
|
195
|
+
width: 100%;
|
|
196
|
+
max-width: 362px; /* hardcoded — Figma `Illustrations` max-width; absent from the token SOT (DEVIATIONS #DC-21) */
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/* The non-status glyph slot that used to live here (`.document-capture-glyph`)
|
|
200
|
+
* is now the foundation's `__glyph` in `ScreenLayout.css` — DEVIATIONS #DC-29,
|
|
201
|
+
* closed: three modules had a byte-identical copy of it.
|
|
202
|
+
*/
|
|
203
|
+
|
|
204
|
+
/* ── Bottom-sheet overlay ────────────────────────────────────────────────────
|
|
205
|
+
* `tutorial.methodSelection*` layers Core's `PrizmaBottomSheetContent` over the
|
|
206
|
+
* tutorial. The safe presenter (`PrizmaBottomSheet`) portals to
|
|
207
|
+
* `document.body`, which would escape the 390 × 844 screen frame and the
|
|
208
|
+
* host's `transform: scale()` — so the screen owns the scrim, exactly as
|
|
209
|
+
* bottom-sheet.md §10.3 assigns it to "the consuming surface". The scrim drinks
|
|
210
|
+
* Core's own `Surface/Overlay` token; no animation, because a screen is one
|
|
211
|
+
* static spec state. DEVIATIONS #DC-30.
|
|
212
|
+
*/
|
|
213
|
+
.document-capture-sheet-scrim {
|
|
214
|
+
position: absolute;
|
|
215
|
+
inset: 0;
|
|
216
|
+
z-index: 1;
|
|
217
|
+
background: var(--prizma-surface-overlay);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
.document-capture-sheet-panel {
|
|
221
|
+
position: absolute;
|
|
222
|
+
left: 0;
|
|
223
|
+
right: 0;
|
|
224
|
+
bottom: 0;
|
|
225
|
+
z-index: 2;
|
|
226
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import React, { type ReactNode } from 'react';
|
|
2
|
+
import { type PrizmaTutorialScreenProps } from './TutorialScreen';
|
|
3
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
4
|
+
import type { DocumentCaptureMethodSelectionVariant, DocumentCaptureStrings } from './DocumentCaptureStrings';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
import './DocumentCaptureLayout.css';
|
|
7
|
+
export interface DocumentCaptureMethodSelectionScreenProps extends Omit<PrizmaTutorialScreenProps, 'title' | 'subtitle' | 'ctaLabel' | 'linkLabel' | 'overlay' | 'verifiedLabel' | 'navLabel'> {
|
|
8
|
+
/** Module copy — this screen reads `methodSelection` + `tutorial` (the sheet
|
|
9
|
+
* is presented OVER the tutorial, which stays visible behind the scrim). */
|
|
10
|
+
strings: DocumentCaptureStrings;
|
|
11
|
+
/** `web` = the 2-row menu · `native` = the 3-row menu · `nativeUpload` = the
|
|
12
|
+
* native menu with the camera row dropped (2 rows). */
|
|
13
|
+
method?: DocumentCaptureMethodSelectionVariant;
|
|
14
|
+
/** Replace the module's document illustration. */
|
|
15
|
+
illustration?: ReactNode;
|
|
16
|
+
screenId?: string;
|
|
17
|
+
overrides?: PrizmaScreenOverrides;
|
|
18
|
+
onAction?: PrizmaScreenActionHandler;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Document Capture — capture-method selection: the `PrizmaTutorialScreen`
|
|
22
|
+
* archetype plus a presented sheet. Figma: purple sections
|
|
23
|
+
* `documentCapture.tutorial.methodSelectionWeb` (`Bottom sheet` 390 × 172, 2
|
|
24
|
+
* rows) and `.methodSelectionNative` (390 × 262, 3 rows).
|
|
25
|
+
*
|
|
26
|
+
* The screen behind the scrim is the `tutorial.default` composition verbatim —
|
|
27
|
+
* which is now literally true: it is the same archetype call the tutorial screen
|
|
28
|
+
* makes, and only the overlay differs. The sheet rides in the archetype's
|
|
29
|
+
* `overlay` slot, a shell-level layer, because the scrim and panel are positioned
|
|
30
|
+
* against the shell and cannot live in the content column (#F-32).
|
|
31
|
+
*
|
|
32
|
+
* Core's own `PrizmaBottomSheetContent` renders the panel (handle, radius,
|
|
33
|
+
* padding, Action Option rows); the row icons come from the canonical bank.
|
|
34
|
+
* The safe presenter (`PrizmaBottomSheet`) is deliberately NOT used: it portals
|
|
35
|
+
* to `document.body`, which escapes the screen frame and the host's
|
|
36
|
+
* `transform: scale()`, and a screen is one static spec state with no open/close
|
|
37
|
+
* clock. bottom-sheet.md §10.3 assigns the scrim to "the consuming surface",
|
|
38
|
+
* and here the screen IS that surface — DEVIATIONS.md #DC-30.
|
|
39
|
+
*
|
|
40
|
+
* `documentCapture.tutorial.nativeMethodSelectionOnWeb` layers the iOS action
|
|
41
|
+
* sheet ON TOP of this one; that upper layer is OS chrome, not a Prizma
|
|
42
|
+
* surface, so it is out of scope (DEVIATIONS.md #DC-20).
|
|
43
|
+
*/
|
|
44
|
+
export declare const DocumentCaptureMethodSelectionScreen: React.ForwardRefExoticComponent<DocumentCaptureMethodSelectionScreenProps & React.RefAttributes<HTMLDivElement>>;
|
|
45
|
+
export default DocumentCaptureMethodSelectionScreen;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { IconCamera, IconFolderFileOpen, IconImage, IconPaperUpload, } from '@incodetech/prizma-core-icons';
|
|
5
|
+
import { PrizmaBottomSheetContent, } from '@incodetech/prizma-core-web/bottom-sheet';
|
|
6
|
+
import { PrizmaTutorialScreen } from './TutorialScreen';
|
|
7
|
+
import { DocumentCaptureIllustration } from './DocumentCaptureIllustration';
|
|
8
|
+
import './ScreenLayout.css';
|
|
9
|
+
import './DocumentCaptureLayout.css';
|
|
10
|
+
/**
|
|
11
|
+
* Document Capture — capture-method selection: the `PrizmaTutorialScreen`
|
|
12
|
+
* archetype plus a presented sheet. Figma: purple sections
|
|
13
|
+
* `documentCapture.tutorial.methodSelectionWeb` (`Bottom sheet` 390 × 172, 2
|
|
14
|
+
* rows) and `.methodSelectionNative` (390 × 262, 3 rows).
|
|
15
|
+
*
|
|
16
|
+
* The screen behind the scrim is the `tutorial.default` composition verbatim —
|
|
17
|
+
* which is now literally true: it is the same archetype call the tutorial screen
|
|
18
|
+
* makes, and only the overlay differs. The sheet rides in the archetype's
|
|
19
|
+
* `overlay` slot, a shell-level layer, because the scrim and panel are positioned
|
|
20
|
+
* against the shell and cannot live in the content column (#F-32).
|
|
21
|
+
*
|
|
22
|
+
* Core's own `PrizmaBottomSheetContent` renders the panel (handle, radius,
|
|
23
|
+
* padding, Action Option rows); the row icons come from the canonical bank.
|
|
24
|
+
* The safe presenter (`PrizmaBottomSheet`) is deliberately NOT used: it portals
|
|
25
|
+
* to `document.body`, which escapes the screen frame and the host's
|
|
26
|
+
* `transform: scale()`, and a screen is one static spec state with no open/close
|
|
27
|
+
* clock. bottom-sheet.md §10.3 assigns the scrim to "the consuming surface",
|
|
28
|
+
* and here the screen IS that surface — DEVIATIONS.md #DC-30.
|
|
29
|
+
*
|
|
30
|
+
* `documentCapture.tutorial.nativeMethodSelectionOnWeb` layers the iOS action
|
|
31
|
+
* sheet ON TOP of this one; that upper layer is OS chrome, not a Prizma
|
|
32
|
+
* surface, so it is out of scope (DEVIATIONS.md #DC-20).
|
|
33
|
+
*/
|
|
34
|
+
export const DocumentCaptureMethodSelectionScreen = forwardRef(({ strings, method = 'web', illustration, screenId = `document-capture-method-selection-${method}`, overrides, onAction, ...shell }, ref) => {
|
|
35
|
+
const { methodSelection } = strings;
|
|
36
|
+
const takePhoto = {
|
|
37
|
+
label: methodSelection.takePhotoLabel,
|
|
38
|
+
icon: _jsx(IconCamera, { size: "m" }),
|
|
39
|
+
onClick: () => onAction?.({ type: 'cta', screenId }),
|
|
40
|
+
};
|
|
41
|
+
const cameraRoll = {
|
|
42
|
+
label: methodSelection.cameraRollLabel,
|
|
43
|
+
icon: _jsx(IconImage, { size: "m" }),
|
|
44
|
+
onClick: () => onAction?.({ type: 'secondary', screenId }),
|
|
45
|
+
};
|
|
46
|
+
const chooseFile = {
|
|
47
|
+
label: methodSelection.chooseFileLabel,
|
|
48
|
+
icon: _jsx(IconFolderFileOpen, { size: "m" }),
|
|
49
|
+
onClick: () => onAction?.({ type: 'secondary', screenId }),
|
|
50
|
+
};
|
|
51
|
+
// `nativeUpload` is `native` minus the camera row — the upload-only session
|
|
52
|
+
// cannot offer a photo, so the row is absent rather than disabled.
|
|
53
|
+
const items = method === 'native'
|
|
54
|
+
? [takePhoto, cameraRoll, chooseFile]
|
|
55
|
+
: method === 'nativeUpload'
|
|
56
|
+
? [cameraRoll, chooseFile]
|
|
57
|
+
: [
|
|
58
|
+
takePhoto,
|
|
59
|
+
{
|
|
60
|
+
label: methodSelection.uploadLabel,
|
|
61
|
+
icon: _jsx(IconPaperUpload, { size: "m" }),
|
|
62
|
+
onClick: () => onAction?.({ type: 'secondary', screenId }),
|
|
63
|
+
},
|
|
64
|
+
];
|
|
65
|
+
return (_jsx(PrizmaTutorialScreen, { ref: ref, title: strings.tutorial.title, subtitle: strings.tutorial.subtitle.default, ctaLabel: strings.tutorial.ctaLabel.default, linkLabel: strings.tutorial.skipLabel, illustration: illustration ?? _jsx(DocumentCaptureIllustration, {}), verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, overlay:
|
|
66
|
+
/* Scrim + panel own the presentation; Core owns the panel itself. */
|
|
67
|
+
_jsxs(_Fragment, { children: [_jsx("div", { className: "document-capture-sheet-scrim", "aria-hidden": "true" }), _jsx("div", { className: "document-capture-sheet-panel", children: _jsx(PrizmaBottomSheetContent, { variant: method === 'native' ? 'menu-list-3' : 'menu-list-2', ariaLabel: methodSelection.sheetLabel, items: items, showBottomBar: false }) })] }), ...shell }));
|
|
68
|
+
});
|
|
69
|
+
DocumentCaptureMethodSelectionScreen.displayName = 'DocumentCaptureMethodSelectionScreen';
|
|
70
|
+
export default DocumentCaptureMethodSelectionScreen;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import React, { type ReactNode } from 'react';
|
|
2
|
+
import { type PrizmaTutorialScreenProps } from './TutorialScreen';
|
|
3
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
4
|
+
import type { DocumentCaptureStrings } from './DocumentCaptureStrings';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
export interface DocumentCaptureNextPageScreenProps extends Omit<PrizmaTutorialScreenProps, 'title' | 'subtitle' | 'ctaLabel' | 'linkLabel' | 'verifiedLabel' | 'navLabel'> {
|
|
7
|
+
/** Module copy — this screen reads the `nextPage` slice (+ shared labels). */
|
|
8
|
+
strings: DocumentCaptureStrings;
|
|
9
|
+
/**
|
|
10
|
+
* `documentCapture.nextPage.mandatory` — the next page is required, so the
|
|
11
|
+
* "All pages captured" escape link is dropped and the subtitle changes.
|
|
12
|
+
* Default (`false`) is the `.optional` section.
|
|
13
|
+
*/
|
|
14
|
+
mandatory?: boolean;
|
|
15
|
+
/** Replace the module's document illustration. */
|
|
16
|
+
illustration?: ReactNode;
|
|
17
|
+
screenId?: string;
|
|
18
|
+
overrides?: PrizmaScreenOverrides;
|
|
19
|
+
onAction?: PrizmaScreenActionHandler;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Document Capture — next document page, built on the `PrizmaTutorialScreen`
|
|
23
|
+
* archetype (GUIDELINES.md §6-A). Figma: purple sections
|
|
24
|
+
* `documentCapture.nextPage.optional` / `.mandatory` — a copy + link-slot pair of
|
|
25
|
+
* this ONE screen.
|
|
26
|
+
*
|
|
27
|
+
* Structurally the tutorial recipe (measured identical on the 390 sections:
|
|
28
|
+
* nav 8→52, Title 68→145, illustration container flexes, CTAs 472→646), which is
|
|
29
|
+
* exactly why it now renders the same archetype instead of a second copy of it.
|
|
30
|
+
* Only `.optional` shows the escape link.
|
|
31
|
+
*/
|
|
32
|
+
export declare const DocumentCaptureNextPageScreen: React.ForwardRefExoticComponent<DocumentCaptureNextPageScreenProps & React.RefAttributes<HTMLDivElement>>;
|
|
33
|
+
export default DocumentCaptureNextPageScreen;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { PrizmaTutorialScreen } from './TutorialScreen';
|
|
5
|
+
import { DocumentCaptureIllustration } from './DocumentCaptureIllustration';
|
|
6
|
+
import './ScreenLayout.css';
|
|
7
|
+
/**
|
|
8
|
+
* Document Capture — next document page, built on the `PrizmaTutorialScreen`
|
|
9
|
+
* archetype (GUIDELINES.md §6-A). Figma: purple sections
|
|
10
|
+
* `documentCapture.nextPage.optional` / `.mandatory` — a copy + link-slot pair of
|
|
11
|
+
* this ONE screen.
|
|
12
|
+
*
|
|
13
|
+
* Structurally the tutorial recipe (measured identical on the 390 sections:
|
|
14
|
+
* nav 8→52, Title 68→145, illustration container flexes, CTAs 472→646), which is
|
|
15
|
+
* exactly why it now renders the same archetype instead of a second copy of it.
|
|
16
|
+
* Only `.optional` shows the escape link.
|
|
17
|
+
*/
|
|
18
|
+
export const DocumentCaptureNextPageScreen = forwardRef(({ strings, mandatory = false, illustration, screenId = mandatory
|
|
19
|
+
? 'document-capture-next-page-mandatory'
|
|
20
|
+
: 'document-capture-next-page', overrides, onAction, ...shell }, ref) => {
|
|
21
|
+
// Figma: `.mandatory` has no escape link (every remaining page is required).
|
|
22
|
+
// Gated here too, so a host that keeps the label in its locale pack still
|
|
23
|
+
// renders the designed mandatory screen.
|
|
24
|
+
const doneLabel = mandatory ? undefined : strings.nextPage.doneLabel;
|
|
25
|
+
return (_jsx(PrizmaTutorialScreen, { ref: ref, title: strings.nextPage.title, subtitle: mandatory ? strings.nextPage.mandatorySubtitle : strings.nextPage.subtitle, ctaLabel: strings.nextPage.ctaLabel, linkLabel: doneLabel, illustration: illustration ?? _jsx(DocumentCaptureIllustration, {}), verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell }));
|
|
26
|
+
});
|
|
27
|
+
DocumentCaptureNextPageScreen.displayName = 'DocumentCaptureNextPageScreen';
|
|
28
|
+
export default DocumentCaptureNextPageScreen;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type PrizmaResultScreenProps } from './ResultScreen';
|
|
3
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
4
|
+
import type { DocumentCaptureStrings } from './DocumentCaptureStrings';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
export interface DocumentCaptureNoConnectionScreenProps extends Omit<PrizmaResultScreenProps, 'status' | 'title' | 'subtitle' | 'glyph' | 'ctaLabel' | 'verifiedLabel' | 'navLabel'> {
|
|
7
|
+
/** Module copy — this screen reads the `noConnection` slice. */
|
|
8
|
+
strings: DocumentCaptureStrings;
|
|
9
|
+
screenId?: string;
|
|
10
|
+
overrides?: PrizmaScreenOverrides;
|
|
11
|
+
onAction?: PrizmaScreenActionHandler;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Document Capture — no internet connection (purple section
|
|
15
|
+
* `documentCapture.errors.noConnection`), built on the `PrizmaResultScreen`
|
|
16
|
+
* archetype (GUIDELINES.md §6-F).
|
|
17
|
+
*
|
|
18
|
+
* Byte-for-byte the same spec the Face Capture pilot found in its own
|
|
19
|
+
* `genericErrors` family, which is exactly what DEVIATIONS.md #9 predicted — and
|
|
20
|
+
* exactly why all three module copies of it are now one archetype call. Header
|
|
21
|
+
* and verified tag are on per the owner's non-capture rule (#F-30).
|
|
22
|
+
*
|
|
23
|
+
* The glyph is Figma's `Icon / Wi-Fi` in the archetype's `glyph` slot with the
|
|
24
|
+
* foundation's `__glyph` class, which replaced this module's byte-identical
|
|
25
|
+
* `.document-capture-glyph` copy (DEVIATIONS #10, #DC-29 — closed).
|
|
26
|
+
*/
|
|
27
|
+
export declare const DocumentCaptureNoConnectionScreen: React.ForwardRefExoticComponent<DocumentCaptureNoConnectionScreenProps & React.RefAttributes<HTMLDivElement>>;
|
|
28
|
+
export default DocumentCaptureNoConnectionScreen;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { IconWifiOff } from '@incodetech/prizma-core-icons';
|
|
5
|
+
import { PrizmaResultScreen } from './ResultScreen';
|
|
6
|
+
import './ScreenLayout.css';
|
|
7
|
+
/**
|
|
8
|
+
* Document Capture — no internet connection (purple section
|
|
9
|
+
* `documentCapture.errors.noConnection`), built on the `PrizmaResultScreen`
|
|
10
|
+
* archetype (GUIDELINES.md §6-F).
|
|
11
|
+
*
|
|
12
|
+
* Byte-for-byte the same spec the Face Capture pilot found in its own
|
|
13
|
+
* `genericErrors` family, which is exactly what DEVIATIONS.md #9 predicted — and
|
|
14
|
+
* exactly why all three module copies of it are now one archetype call. Header
|
|
15
|
+
* and verified tag are on per the owner's non-capture rule (#F-30).
|
|
16
|
+
*
|
|
17
|
+
* The glyph is Figma's `Icon / Wi-Fi` in the archetype's `glyph` slot with the
|
|
18
|
+
* foundation's `__glyph` class, which replaced this module's byte-identical
|
|
19
|
+
* `.document-capture-glyph` copy (DEVIATIONS #10, #DC-29 — closed).
|
|
20
|
+
*/
|
|
21
|
+
export const DocumentCaptureNoConnectionScreen = forwardRef(({ strings, screenId = 'document-capture-no-connection', overrides, onAction, ...shell }, ref) => (_jsx(PrizmaResultScreen, { ref: ref, glyph: _jsx("span", { className: [
|
|
22
|
+
'prizma-screen-layout__glyph',
|
|
23
|
+
'prizma-screen-layout__glyph--negative',
|
|
24
|
+
overrides?.align === 'left' ? 'prizma-screen-layout__glyph--left' : '',
|
|
25
|
+
]
|
|
26
|
+
.filter(Boolean)
|
|
27
|
+
.join(' '), children: _jsx(IconWifiOff, { size: "l" }) }), title: strings.noConnection.title, subtitle: strings.noConnection.description, ctaLabel: strings.noConnection.ctaLabel, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell })));
|
|
28
|
+
DocumentCaptureNoConnectionScreen.displayName = 'DocumentCaptureNoConnectionScreen';
|
|
29
|
+
export default DocumentCaptureNoConnectionScreen;
|