@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,89 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { PrizmaIdCapture, } from '@incodetech/prizma-core-web/id-capture';
|
|
5
|
+
import { PrizmaResultScreen } from './ResultScreen';
|
|
6
|
+
import './ScreenLayout.css';
|
|
7
|
+
import './IdCaptureLayout.css';
|
|
8
|
+
/** Verdict → the archetype's status slot (Core `PrizmaTitle` icon). */
|
|
9
|
+
const TITLE_STATUS = {
|
|
10
|
+
review: 'none',
|
|
11
|
+
success: 'success',
|
|
12
|
+
error: 'error',
|
|
13
|
+
exhausted: 'error',
|
|
14
|
+
classification: 'warning',
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Verdict → Core `PrizmaIdCapture` frame border.
|
|
18
|
+
*
|
|
19
|
+
* `classification` is the one place Figma asks for something Core does not
|
|
20
|
+
* draw: an AMBER frame around the still. Core's `BORDER_GROUP` has exactly
|
|
21
|
+
* four treatments (enabled / focused / success / error) and no warning band, so
|
|
22
|
+
* the design system wins and the still keeps the neutral `filled` frame rather
|
|
23
|
+
* than borrowing the red one — a red border would tell the user the capture
|
|
24
|
+
* failed, which is the opposite of "we got it, we just need the other side".
|
|
25
|
+
* DEVIATIONS.md #IDC-22.
|
|
26
|
+
*/
|
|
27
|
+
const FRAME_STATE = {
|
|
28
|
+
review: 'filled',
|
|
29
|
+
success: 'success',
|
|
30
|
+
error: 'error',
|
|
31
|
+
exhausted: 'error',
|
|
32
|
+
classification: 'filled',
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* ID Capture — the captured-document verdict screens, built on the
|
|
36
|
+
* `PrizmaResultScreen` archetype (GUIDELINES.md §6-F).
|
|
37
|
+
*
|
|
38
|
+
* ONE screen for every `*-review`, `*-success`, `*-attempt`,
|
|
39
|
+
* `*-failed-attempt` and `*-no-attempts` section across all five capture groups,
|
|
40
|
+
* plus the Classification Errors section — ~35 purple sections that are copy,
|
|
41
|
+
* status-icon, frame-state and CTA variants of a single layout.
|
|
42
|
+
*
|
|
43
|
+
* The captured still rides in the archetype's `children` slot, the attempts line
|
|
44
|
+
* in `disclaimer`, and the review/classification action pair in
|
|
45
|
+
* `secondaryCtaLabel`. This file used to hand-build the whole shell (198 lines)
|
|
46
|
+
* with its own three-band arithmetic in `IdCaptureLayout.css`; the archetype now
|
|
47
|
+
* owns every offset, with two measured consequences logged as #F-33: the title
|
|
48
|
+
* block sits Spacing/16 above the frame rather than the module's Spacing/40, and
|
|
49
|
+
* review's Retake+Continue pair stacks vertically instead of sitting side by side
|
|
50
|
+
* (the archetype has one CTA orientation).
|
|
51
|
+
*
|
|
52
|
+
* `showHeader={false}` keeps the family's chrome as Figma draws it — no logo —
|
|
53
|
+
* while still reserving the nav row, so the offsets are identical to every other
|
|
54
|
+
* screen (owner rule 2026-08-18).
|
|
55
|
+
*
|
|
56
|
+
* Everything visual belongs to Core: the status marks are `PrizmaTitle`'s icon
|
|
57
|
+
* slot (outline bank icons — the module Figma still draws the two-tone filled
|
|
58
|
+
* discs, DEVIATIONS.md #15 again), and the frame and its border are
|
|
59
|
+
* `PrizmaIdCapture`.
|
|
60
|
+
*/
|
|
61
|
+
export const IdCaptureResultScreen = forwardRef(({ strings, verdict = 'success', documentType = 'id', vertical = false, still, screenId = `id-capture-${verdict}`, showHeader = false, className, overrides, onAction, ...shell }, ref) => {
|
|
62
|
+
const copy = verdict === 'review'
|
|
63
|
+
? strings.review
|
|
64
|
+
: verdict === 'success'
|
|
65
|
+
? strings.success
|
|
66
|
+
: verdict === 'classification'
|
|
67
|
+
? strings.classification
|
|
68
|
+
: strings.error;
|
|
69
|
+
// Figma: the `*-attempt` / `*-failed-attempt` sections carry "N attempts
|
|
70
|
+
// remaining"; `*-no-attempts` swaps it for "No attempts remaining" and the
|
|
71
|
+
// CTA becomes the forward action. Both come from the same `error` slice, so
|
|
72
|
+
// the host's locale pack decides the wording; the screen only decides
|
|
73
|
+
// whether the line is rendered at all (review / success / classification
|
|
74
|
+
// have no attempts line in any purple section).
|
|
75
|
+
const attemptsLabel = verdict === 'error' || verdict === 'exhausted' ? strings.error.attemptsLabel : undefined;
|
|
76
|
+
const secondaryLabel = verdict === 'review'
|
|
77
|
+
? strings.review.retakeLabel
|
|
78
|
+
: verdict === 'classification'
|
|
79
|
+
? strings.classification.secondaryLabel
|
|
80
|
+
: undefined;
|
|
81
|
+
return (_jsx(PrizmaResultScreen, { ref: ref,
|
|
82
|
+
/* `id-capture-on-surface` re-inks Core's encrypted row for the LIGHT
|
|
83
|
+
result surface (DEVIATIONS #IDC-28); it carries no layout. */
|
|
84
|
+
className: ['id-capture-on-surface', className ?? ''].filter(Boolean).join(' '), showHeader: showHeader, status: TITLE_STATUS[verdict], title: copy.title, subtitle: copy.description, disclaimer: attemptsLabel, ctaLabel: copy.ctaLabel, secondaryCtaLabel: secondaryLabel,
|
|
85
|
+
// Figma pairs Retake | Continue side by side in the 342 column (IDC-35).
|
|
86
|
+
ctaOrientation: secondaryLabel ? 'row' : 'stacked', verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell, children: _jsx(PrizmaIdCapture, { type: documentType, state: FRAME_STATE[verdict], isVertical: vertical, mode: "overlay", encryptedLabel: strings.encryptedLabel, still: still }) }));
|
|
87
|
+
});
|
|
88
|
+
IdCaptureResultScreen.displayName = 'IdCaptureResultScreen';
|
|
89
|
+
export default IdCaptureResultScreen;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import React, { type ReactNode } from 'react';
|
|
2
|
+
import { type PrizmaScreenShellProps } from './ScreenShell';
|
|
3
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
4
|
+
import type { IdCaptureDocumentType, IdCaptureFeedbackKind, IdCaptureSide, IdCaptureStageState, IdCaptureStrings } from './IdCaptureStrings';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
import './ViewfinderScreen.css';
|
|
7
|
+
import './IdCaptureLayout.css';
|
|
8
|
+
export interface IdCaptureStageScreenProps extends Omit<PrizmaScreenShellProps, 'dark' | 'title' | 'children'> {
|
|
9
|
+
/** Module copy — this screen reads the `stage` / `feedback` slices. */
|
|
10
|
+
strings: IdCaptureStrings;
|
|
11
|
+
/** Which document is being captured — Core `PrizmaIdCapture.type`. */
|
|
12
|
+
documentType?: IdCaptureDocumentType;
|
|
13
|
+
/** Which face of a two-sided document (drives the title copy only; the frame
|
|
14
|
+
* geometry is identical). Passports are single-sided. */
|
|
15
|
+
side?: IdCaptureSide;
|
|
16
|
+
/** Portrait document orientation — Core `PrizmaIdCapture.isVertical`. The
|
|
17
|
+
* `ID capture ↕️ vertical` / `Passport capture ↕️ vertical` groups. */
|
|
18
|
+
vertical?: boolean;
|
|
19
|
+
/** Which purple stage section to render. */
|
|
20
|
+
state?: IdCaptureStageState;
|
|
21
|
+
/** Manual mode (`*-manual`): the shutter + the numbered tooltip appear. */
|
|
22
|
+
manual?: boolean;
|
|
23
|
+
/** Show the close control in the stage nav (Figma: present on every stage
|
|
24
|
+
* except `*-empty`). */
|
|
25
|
+
showClose?: boolean;
|
|
26
|
+
/** Override the feedback pill the state carries by default; `null` suppresses
|
|
27
|
+
* it (a host whose pipeline reports an error with no designed pill). */
|
|
28
|
+
feedback?: IdCaptureFeedbackKind | null;
|
|
29
|
+
/** Live camera feed (<video>) or sample still (<img>) behind the frame. */
|
|
30
|
+
camera?: ReactNode;
|
|
31
|
+
/** The captured document still (<img>) — `filled` / `flash` / error stages. */
|
|
32
|
+
still?: ReactNode;
|
|
33
|
+
/** Digit shown by the countdown Timer (`*-countdown` sections 1..3). */
|
|
34
|
+
countdownValue?: 1 | 2 | 3;
|
|
35
|
+
screenId?: string;
|
|
36
|
+
overrides?: PrizmaScreenOverrides;
|
|
37
|
+
onAction?: PrizmaScreenActionHandler;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* ID Capture — the camera stage (Archetype D, GUIDELINES.md §6-D; always dark).
|
|
41
|
+
*
|
|
42
|
+
* ONE screen for ~45 purple sections: every `*-empty`, `*-hint`, `*-manual`,
|
|
43
|
+
* `*-filled`, `*-countdown`, `*-flash` and `*-errors` section of all five
|
|
44
|
+
* capture groups (`ID capture - front side`, `ID capture - back side`,
|
|
45
|
+
* `Passport capture`, `ID capture ↕️ vertical`, `Passport capture ↕️ vertical`).
|
|
46
|
+
* They are `type` × `isVertical` × `state` variants of Core's
|
|
47
|
+
* `PrizmaIdCapture`, which is exactly how the component is axed — so the frame
|
|
48
|
+
* geometry, the four border treatments, the hand-hint artwork, the Timer, the
|
|
49
|
+
* flash bloom, the glare/darkener/not-aligned overlays and the "All data is
|
|
50
|
+
* encrypted" row are ALL Core's, never re-implemented (§7).
|
|
51
|
+
*
|
|
52
|
+
* NOT built on the `PrizmaViewfinderScreen` archetype: that archetype hardcodes
|
|
53
|
+
* `CaptureOverlay` (the face/document vignette) plus its own lock-and-encrypted
|
|
54
|
+
* row, and ID Capture's stage is `PrizmaIdCapture` — which carries the document
|
|
55
|
+
* geometry AND the encrypted row itself. Wrapping the archetype would have
|
|
56
|
+
* double-drawn the reassurance line. Foundation gap reported to the owner (a
|
|
57
|
+
* `stage` slot on ViewfinderScreen); no foundation file edited. The archetype's
|
|
58
|
+
* camera-surface and HUD-typography classes ARE reused as-is
|
|
59
|
+
* (`.prizma-viewfinder__surface` / `__content` / `__title` / `__instruction`),
|
|
60
|
+
* so nothing about the dark stage is re-declared here.
|
|
61
|
+
*
|
|
62
|
+
* Spacing comes from the measured three-band recipe in `IdCaptureLayout.css`
|
|
63
|
+
* (title block bottom-anchored Spacing/40 above the frame, manual strip flush
|
|
64
|
+
* to the column's bottom padding) — no offsets are invented here, and
|
|
65
|
+
* PrizmaIdCapture's own frame→encrypted-row adjacency is left untouched
|
|
66
|
+
* (DEVIATIONS.md #12's lesson: never stack an offset a Core component carries).
|
|
67
|
+
*/
|
|
68
|
+
export declare const IdCaptureStageScreen: React.ForwardRefExoticComponent<IdCaptureStageScreenProps & React.RefAttributes<HTMLDivElement>>;
|
|
69
|
+
export default IdCaptureStageScreen;
|
|
@@ -0,0 +1,88 @@
|
|
|
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 { PrizmaNavigation } from '@incodetech/prizma-core-web/navigation';
|
|
5
|
+
import { PrizmaIdCapture, } from '@incodetech/prizma-core-web/id-capture';
|
|
6
|
+
import { PrizmaCaptureManual } from '@incodetech/prizma-core-web/capture-manual';
|
|
7
|
+
import { PrizmaCaptureFeedback } from '@incodetech/prizma-core-web/capture-feedback';
|
|
8
|
+
import { PrizmaTag } from '@incodetech/prizma-core-web/tag';
|
|
9
|
+
import { PrizmaScreenShell } from './ScreenShell';
|
|
10
|
+
import './ScreenLayout.css';
|
|
11
|
+
import './ViewfinderScreen.css';
|
|
12
|
+
import './IdCaptureLayout.css';
|
|
13
|
+
/**
|
|
14
|
+
* Purple stage state → Core `PrizmaIdCapture` state. The mapping is 1:1 except
|
|
15
|
+
* `flash`, which Figma spells "flash" and Core spells `photo-flash`.
|
|
16
|
+
*/
|
|
17
|
+
const CAPTURE_STATE = {
|
|
18
|
+
empty: 'empty',
|
|
19
|
+
hint: 'hint',
|
|
20
|
+
filled: 'filled',
|
|
21
|
+
focused: 'focused',
|
|
22
|
+
countdown: 'countdown',
|
|
23
|
+
flash: 'photo-flash',
|
|
24
|
+
'error-wrong-side': 'error-wrong-side',
|
|
25
|
+
'error-not-aligned': 'error-not-aligned',
|
|
26
|
+
'error-blurry': 'error',
|
|
27
|
+
'error-glare': 'error-glare',
|
|
28
|
+
'error-too-dark': 'error-too-dark',
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Which feedback pill each error stage carries by default (Figma
|
|
32
|
+
* `1-5-5 … 1-5-9-id-errors`, left to right). `blurry` has no frame overlay in
|
|
33
|
+
* Core — the message IS the pill (PrizmaIdCapture's `error` state is the plain
|
|
34
|
+
* red border precisely for this case, see its `error` doc comment).
|
|
35
|
+
*/
|
|
36
|
+
const STAGE_FEEDBACK = {
|
|
37
|
+
'error-wrong-side': 'show-front',
|
|
38
|
+
'error-not-aligned': 'not-aligned',
|
|
39
|
+
'error-blurry': 'blurry',
|
|
40
|
+
'error-glare': 'glare',
|
|
41
|
+
'error-too-dark': 'too-dark',
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* ID Capture — the camera stage (Archetype D, GUIDELINES.md §6-D; always dark).
|
|
45
|
+
*
|
|
46
|
+
* ONE screen for ~45 purple sections: every `*-empty`, `*-hint`, `*-manual`,
|
|
47
|
+
* `*-filled`, `*-countdown`, `*-flash` and `*-errors` section of all five
|
|
48
|
+
* capture groups (`ID capture - front side`, `ID capture - back side`,
|
|
49
|
+
* `Passport capture`, `ID capture ↕️ vertical`, `Passport capture ↕️ vertical`).
|
|
50
|
+
* They are `type` × `isVertical` × `state` variants of Core's
|
|
51
|
+
* `PrizmaIdCapture`, which is exactly how the component is axed — so the frame
|
|
52
|
+
* geometry, the four border treatments, the hand-hint artwork, the Timer, the
|
|
53
|
+
* flash bloom, the glare/darkener/not-aligned overlays and the "All data is
|
|
54
|
+
* encrypted" row are ALL Core's, never re-implemented (§7).
|
|
55
|
+
*
|
|
56
|
+
* NOT built on the `PrizmaViewfinderScreen` archetype: that archetype hardcodes
|
|
57
|
+
* `CaptureOverlay` (the face/document vignette) plus its own lock-and-encrypted
|
|
58
|
+
* row, and ID Capture's stage is `PrizmaIdCapture` — which carries the document
|
|
59
|
+
* geometry AND the encrypted row itself. Wrapping the archetype would have
|
|
60
|
+
* double-drawn the reassurance line. Foundation gap reported to the owner (a
|
|
61
|
+
* `stage` slot on ViewfinderScreen); no foundation file edited. The archetype's
|
|
62
|
+
* camera-surface and HUD-typography classes ARE reused as-is
|
|
63
|
+
* (`.prizma-viewfinder__surface` / `__content` / `__title` / `__instruction`),
|
|
64
|
+
* so nothing about the dark stage is re-declared here.
|
|
65
|
+
*
|
|
66
|
+
* Spacing comes from the measured three-band recipe in `IdCaptureLayout.css`
|
|
67
|
+
* (title block bottom-anchored Spacing/40 above the frame, manual strip flush
|
|
68
|
+
* to the column's bottom padding) — no offsets are invented here, and
|
|
69
|
+
* PrizmaIdCapture's own frame→encrypted-row adjacency is left untouched
|
|
70
|
+
* (DEVIATIONS.md #12's lesson: never stack an offset a Core component carries).
|
|
71
|
+
*/
|
|
72
|
+
export const IdCaptureStageScreen = forwardRef(({ strings, documentType = 'id', side = 'front', vertical = false, state = 'empty', manual = false, showClose = state !== 'empty', feedback, camera, still, countdownValue = 3, screenId = `id-capture-${documentType}-${side}-${state}`, overrides, onAction, className, ...shell }, ref) => {
|
|
73
|
+
const slice = documentType === 'passport'
|
|
74
|
+
? strings.stage.passport
|
|
75
|
+
: side === 'back'
|
|
76
|
+
? strings.stage.back
|
|
77
|
+
: strings.stage.front;
|
|
78
|
+
const pillKind = feedback === undefined ? STAGE_FEEDBACK[state] : feedback;
|
|
79
|
+
const pillCopy = pillKind ? strings.feedback[pillKind] : undefined;
|
|
80
|
+
return (_jsxs(PrizmaScreenShell, { ref: ref, dark: true, className: className, ...shell, children: [_jsx("div", { className: "prizma-viewfinder__surface", children: camera }), _jsx("header", { className: "prizma-screen-nav id-capture-stage__nav", children: _jsx(PrizmaNavigation, { showIncodeLogo: false, showRightIcon: showClose, closeLabel: strings.closeLabel, "aria-label": strings.navLabel, onRightIconClick: () => onAction?.({ type: 'secondary', screenId }) }) }), _jsxs("div", { className: [
|
|
81
|
+
'prizma-viewfinder__content',
|
|
82
|
+
overrides?.align === 'left' ? 'prizma-viewfinder__content--left' : '',
|
|
83
|
+
]
|
|
84
|
+
.filter(Boolean)
|
|
85
|
+
.join(' '), children: [_jsx("div", { className: "id-capture-band id-capture-band--top", children: pillKind && pillCopy ? (_jsx("div", { className: "id-capture-stage__feedback", children: _jsx(PrizmaCaptureFeedback, { feedback: pillKind, title: pillCopy.title, subtitle: pillCopy.subtitle }) })) : (_jsxs(_Fragment, { children: [_jsx("h2", { className: "prizma-viewfinder__title", children: slice.title }), slice.instruction && !manual ? (_jsx("p", { className: "prizma-viewfinder__instruction", children: slice.instruction })) : null] })) }), _jsx(PrizmaIdCapture, { type: documentType, state: CAPTURE_STATE[state], isVertical: vertical, mode: "overlay", scrim: true, countdownValue: countdownValue, encryptedLabel: strings.encryptedLabel, announcement: strings.stage.stateLabels?.[state], still: still }), _jsx("div", { className: "id-capture-band" })] }), _jsx("div", { className: "prizma-screen-layout__capture-strip", children: _jsx(PrizmaCaptureManual, { className: "id-capture-stage__manual", variant: "id-capture", showButton: manual, showTooltip: manual, showHelpIcon: true, tooltipText: manual ? strings.stage.manualTooltip : undefined, ariaLabel: strings.stage.captureLabel, helpLabel: strings.stage.helpLabel, onCapture: () => onAction?.({ type: 'cta', screenId }), onHelp: () => onAction?.({ type: 'help', screenId }) }) }), _jsx("div", { className: "prizma-screen-layout__footer", children: _jsx(PrizmaTag, { label: strings.verifiedLabel }) })] }));
|
|
86
|
+
});
|
|
87
|
+
IdCaptureStageScreen.displayName = 'IdCaptureStageScreen';
|
|
88
|
+
export default IdCaptureStageScreen;
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
/** Which document the flow is capturing — Core `PrizmaIdCapture.type` minus
|
|
2
|
+
* `poa` (that belongs to the Document Capture module, not this one). */
|
|
3
|
+
export type IdCaptureDocumentType = 'id' | 'passport';
|
|
4
|
+
/** Which face of a two-sided document. Passports are single-sided, so `back`
|
|
5
|
+
* is only reachable for `id` (Figma: the `Passport capture` groups have no
|
|
6
|
+
* back-side sections). */
|
|
7
|
+
export type IdCaptureSide = 'front' | 'back';
|
|
8
|
+
/**
|
|
9
|
+
* The camera-stage sub-states — one per purple `*-empty` / `*-hint` /
|
|
10
|
+
* `*-manual` / `*-filled` / `*-countdown` / `*-flash` / `*-errors` spec
|
|
11
|
+
* section. They are state/copy variants of ONE screen
|
|
12
|
+
* (IdCaptureStageScreen), not separate screens; each maps to a
|
|
13
|
+
* `PrizmaIdCaptureState`.
|
|
14
|
+
*/
|
|
15
|
+
export type IdCaptureStageState = 'empty' | 'hint' | 'filled' | 'focused' | 'countdown' | 'flash' | 'error-wrong-side' | 'error-not-aligned' | 'error-blurry' | 'error-glare' | 'error-too-dark';
|
|
16
|
+
/** The on-camera feedback pill variants the error stages carry — Core
|
|
17
|
+
* `PrizmaCaptureFeedbackType` (Figma: `Capture feedback / ID`, and the
|
|
18
|
+
* `Dynamic feedback messages` copy table in the front-side group). */
|
|
19
|
+
export type IdCaptureFeedbackKind = 'show-front' | 'show-back' | 'not-aligned' | 'blurry' | 'glare' | 'too-dark';
|
|
20
|
+
/** One feedback pill's copy. */
|
|
21
|
+
export interface IdCaptureFeedbackCopy {
|
|
22
|
+
title: string;
|
|
23
|
+
subtitle?: string;
|
|
24
|
+
}
|
|
25
|
+
/** A single row of an informational list (permission reasons, common issues,
|
|
26
|
+
* age-verification steps) — Core `PrizmaCardListCommonIssues` rows. */
|
|
27
|
+
export interface IdCaptureListRow {
|
|
28
|
+
title: string;
|
|
29
|
+
description?: string;
|
|
30
|
+
}
|
|
31
|
+
export interface IdCaptureStrings {
|
|
32
|
+
/** Accessible name for the logo nav region (i18n — no baked-in English). */
|
|
33
|
+
navLabel?: string;
|
|
34
|
+
/** Accessible name for the close control on the camera stages. */
|
|
35
|
+
closeLabel?: string;
|
|
36
|
+
/** "verified by" attribution copy for the footer tag. */
|
|
37
|
+
verifiedLabel: string;
|
|
38
|
+
/** "All data is encrypted" reassurance row — rendered by PrizmaIdCapture
|
|
39
|
+
* itself on every stage and every screen that shows the captured still. */
|
|
40
|
+
encryptedLabel?: string;
|
|
41
|
+
/** Document selection — `1-1-1-id` / `1-1-1-Document Chooser V2`. */
|
|
42
|
+
documentSelection: {
|
|
43
|
+
title: string;
|
|
44
|
+
subtitle?: string;
|
|
45
|
+
/** Row label for the identity-card option. */
|
|
46
|
+
idLabel: string;
|
|
47
|
+
/** Row label for the passport option. */
|
|
48
|
+
passportLabel: string;
|
|
49
|
+
};
|
|
50
|
+
/** Age verification — `1-1-2-id`. */
|
|
51
|
+
ageVerification: {
|
|
52
|
+
title: string;
|
|
53
|
+
subtitle?: string;
|
|
54
|
+
/** The three reassurance rows, in order. */
|
|
55
|
+
rows: IdCaptureListRow[];
|
|
56
|
+
ctaLabel: string;
|
|
57
|
+
};
|
|
58
|
+
/** Tutorial — `1-2-1-id` (front) · `4-2-1-back-id` (back) · `3-2-1-id`
|
|
59
|
+
* (passport). Copy variants of one screen; the host picks the slice. */
|
|
60
|
+
tutorial: {
|
|
61
|
+
front: {
|
|
62
|
+
title: string;
|
|
63
|
+
subtitle?: string;
|
|
64
|
+
};
|
|
65
|
+
back: {
|
|
66
|
+
title: string;
|
|
67
|
+
subtitle?: string;
|
|
68
|
+
};
|
|
69
|
+
passport: {
|
|
70
|
+
title: string;
|
|
71
|
+
subtitle?: string;
|
|
72
|
+
};
|
|
73
|
+
/** "The photo will be taken automatically" */
|
|
74
|
+
disclaimer?: string;
|
|
75
|
+
ctaLabel: string;
|
|
76
|
+
/** Visible/accessible copy while the CTA is loading. */
|
|
77
|
+
ctaLoadingLabel?: string;
|
|
78
|
+
};
|
|
79
|
+
/** Camera stage — `*-empty` / `*-hint` / `*-filled` / `*-countdown` /
|
|
80
|
+
* `*-flash` / `*-manual` / `*-errors`. The white H2 above the frame plus
|
|
81
|
+
* its muted instruction line, per side/document. */
|
|
82
|
+
stage: {
|
|
83
|
+
front: {
|
|
84
|
+
title: string;
|
|
85
|
+
instruction?: string;
|
|
86
|
+
};
|
|
87
|
+
back: {
|
|
88
|
+
title: string;
|
|
89
|
+
instruction?: string;
|
|
90
|
+
};
|
|
91
|
+
passport: {
|
|
92
|
+
title: string;
|
|
93
|
+
instruction?: string;
|
|
94
|
+
};
|
|
95
|
+
/** Manual mode — the tooltip bubble above the shutter
|
|
96
|
+
* ("1. Fill the frame with your ID / 2. Press the button"). */
|
|
97
|
+
manualTooltip?: string;
|
|
98
|
+
/** Accessible name of the shutter button (manual mode). */
|
|
99
|
+
captureLabel?: string;
|
|
100
|
+
/** Accessible name of the "?" help control. */
|
|
101
|
+
helpLabel?: string;
|
|
102
|
+
/** Visually-hidden state announcements, per stage state — forwarded to
|
|
103
|
+
* `PrizmaIdCapture.stateLabels`. */
|
|
104
|
+
stateLabels?: Partial<Record<IdCaptureStageState, string>>;
|
|
105
|
+
};
|
|
106
|
+
/** The on-camera feedback pills the error stages carry. */
|
|
107
|
+
feedback: Partial<Record<IdCaptureFeedbackKind, IdCaptureFeedbackCopy>>;
|
|
108
|
+
/** Analyzing / processing the captured still — `*-analyzing`. */
|
|
109
|
+
analyzing: {
|
|
110
|
+
title: string;
|
|
111
|
+
};
|
|
112
|
+
/** Review the captured still — `*-review`. Two actions, no status icon. */
|
|
113
|
+
review: {
|
|
114
|
+
title: string;
|
|
115
|
+
description?: string;
|
|
116
|
+
/** Secondary action — "Retake". */
|
|
117
|
+
retakeLabel: string;
|
|
118
|
+
/** Primary action — "Continue". */
|
|
119
|
+
ctaLabel: string;
|
|
120
|
+
};
|
|
121
|
+
/** Capture succeeded — `*-success` / `1-10-2-id-success-capture-only`. */
|
|
122
|
+
success: {
|
|
123
|
+
title: string;
|
|
124
|
+
description?: string;
|
|
125
|
+
ctaLabel: string;
|
|
126
|
+
};
|
|
127
|
+
/** Capture failed with retries left / exhausted — `*-attempt`,
|
|
128
|
+
* `*-failed-attempt`, `*-no-attempts`. The host passes the copy of the
|
|
129
|
+
* CURRENT verdict (wrong side, glare, blur, …). */
|
|
130
|
+
error: {
|
|
131
|
+
title: string;
|
|
132
|
+
description?: string;
|
|
133
|
+
/** "1 attempt remaining" — omit on the exhausted variant. */
|
|
134
|
+
attemptsLabel?: string;
|
|
135
|
+
ctaLabel: string;
|
|
136
|
+
};
|
|
137
|
+
/** Classification could not decide the document — Classification Errors /
|
|
138
|
+
* "Scan the back of your ID". Warning verdict with two actions. */
|
|
139
|
+
classification: {
|
|
140
|
+
title: string;
|
|
141
|
+
description?: string;
|
|
142
|
+
/** Primary — "Scan back of ID". */
|
|
143
|
+
ctaLabel: string;
|
|
144
|
+
/** Secondary — "ID has no back side". */
|
|
145
|
+
secondaryLabel: string;
|
|
146
|
+
};
|
|
147
|
+
/** Document not accepted — `1-9-12` / `1-9-13-id-documenterror` and the
|
|
148
|
+
* `-empty` variant. */
|
|
149
|
+
documentError: {
|
|
150
|
+
title: string;
|
|
151
|
+
description?: string;
|
|
152
|
+
/** ISO country code for the bundled flag raster (e.g. "US"). */
|
|
153
|
+
countryCode?: string;
|
|
154
|
+
/** Emoji fallback for countries outside the bundled flag bank. */
|
|
155
|
+
flag?: string;
|
|
156
|
+
/** Country name shown in the accepted-documents card. */
|
|
157
|
+
country?: string;
|
|
158
|
+
/** Accepted document names, in order. */
|
|
159
|
+
documents?: string[];
|
|
160
|
+
/** Placeholder copy for the `-empty` variant (no list available). */
|
|
161
|
+
emptyMessage?: string;
|
|
162
|
+
attemptsLabel?: string;
|
|
163
|
+
ctaLabel: string;
|
|
164
|
+
};
|
|
165
|
+
/** Flip interstitial — `1-11-1-id-flip`. Title only, no CTA. */
|
|
166
|
+
flip: {
|
|
167
|
+
title: string;
|
|
168
|
+
};
|
|
169
|
+
/** Common issues help sheet — `1-5-2-id-common-issues`. */
|
|
170
|
+
commonIssues: {
|
|
171
|
+
title: string;
|
|
172
|
+
rows: IdCaptureListRow[];
|
|
173
|
+
/** Tertiary link — "Take the photo manually". */
|
|
174
|
+
manualLabel: string;
|
|
175
|
+
ctaLabel: string;
|
|
176
|
+
};
|
|
177
|
+
/** Camera permission — `1-3-2-id` and its `allow-camera` /
|
|
178
|
+
* `quit-process` copy variants. */
|
|
179
|
+
permission: {
|
|
180
|
+
title: string;
|
|
181
|
+
description?: string;
|
|
182
|
+
rows: IdCaptureListRow[];
|
|
183
|
+
/** Tertiary link — "Quit process". */
|
|
184
|
+
quitLabel: string;
|
|
185
|
+
ctaLabel: string;
|
|
186
|
+
};
|
|
187
|
+
/** Server-side verification wait — `1-18-1-id-hold-on`,
|
|
188
|
+
* `1-4.1-1-id-hold-on`. */
|
|
189
|
+
holdOn: {
|
|
190
|
+
title: string;
|
|
191
|
+
description?: string;
|
|
192
|
+
};
|
|
193
|
+
/** No internet — `1-9-10-id-no-internet`. */
|
|
194
|
+
noConnection: {
|
|
195
|
+
title: string;
|
|
196
|
+
description?: string;
|
|
197
|
+
ctaLabel: string;
|
|
198
|
+
};
|
|
199
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// ID Capture module — copy contract.
|
|
2
|
+
//
|
|
3
|
+
// Every ID Capture screen receives the SAME `strings: IdCaptureStrings` object
|
|
4
|
+
// (rule: all copy via props, no hardcoded English — GUIDELINES.md §9). The
|
|
5
|
+
// object is the module's locale pack: one instance drives the whole flow, which
|
|
6
|
+
// is what the FlowPlayer steps through. Sample copy lives only in previews /
|
|
7
|
+
// host apps.
|
|
8
|
+
//
|
|
9
|
+
// Authoritative screen list: the PURPLE "screen specs" sections of the ID
|
|
10
|
+
// Capture Figma file (U1EOfl9RQ1rOlOIuQw3rhL, page 16285:41282) — 13 parent
|
|
11
|
+
// groups, 100 purple sections. They collapse onto 12 screens because the four
|
|
12
|
+
// capture families (ID horizontal / ID vertical / passport horizontal /
|
|
13
|
+
// passport vertical, front and back) are the SAME screens parameterized by
|
|
14
|
+
// `PrizmaIdCapture`'s own `type` × `isVertical` × `state` axes.
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import React, { type ReactNode } from 'react';
|
|
2
|
+
import { type PrizmaTutorialScreenProps } from './TutorialScreen';
|
|
3
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
4
|
+
import type { IdCaptureStrings } from './IdCaptureStrings';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
/** Which purple tutorial section to render. Each is a copy + illustration
|
|
7
|
+
* variant of this ONE screen: `1-2-1-id` (front) · `4-2-1-back-id` (back) ·
|
|
8
|
+
* `3-2-1-id` (passport). */
|
|
9
|
+
export type IdCaptureTutorialVariant = 'front' | 'back' | 'passport';
|
|
10
|
+
export interface IdCaptureTutorialScreenProps extends Omit<PrizmaTutorialScreenProps, 'title' | 'subtitle' | 'disclaimer' | 'ctaLabel' | 'ctaLoadingLabel' | 'verifiedLabel' | 'navLabel'> {
|
|
11
|
+
/** Module copy — this screen reads the `tutorial` slice (+ shared labels). */
|
|
12
|
+
strings: IdCaptureStrings;
|
|
13
|
+
/** Which purple tutorial section to render. Default `front`. */
|
|
14
|
+
variant?: IdCaptureTutorialVariant;
|
|
15
|
+
/** CTA shows the designed loading treatment (the tutorial's loading state). */
|
|
16
|
+
ctaLoading?: boolean;
|
|
17
|
+
/** Replace the default Core ID-tutorial illustration. */
|
|
18
|
+
illustration?: ReactNode;
|
|
19
|
+
screenId?: string;
|
|
20
|
+
overrides?: PrizmaScreenOverrides;
|
|
21
|
+
onAction?: PrizmaScreenActionHandler;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* ID Capture — tutorial, built on the `PrizmaTutorialScreen` archetype
|
|
25
|
+
* (GUIDELINES.md §6-A). Figma: purple sections `1-2-1-id` / `4-2-1-back-id` /
|
|
26
|
+
* `3-2-1-id` of the `Tutorial` group.
|
|
27
|
+
*
|
|
28
|
+
* Composed from the foundation pieces until the archetype grew a CTA-loading
|
|
29
|
+
* slot (#F-32) — the one thing that had forced this module, like the Face Capture
|
|
30
|
+
* pilot, to rebuild the tutorial skeleton by hand.
|
|
31
|
+
*
|
|
32
|
+
* The three illustrations are Core's `PrizmaIllustrationIdTutorial` variants,
|
|
33
|
+
* including the composed `id-back` face — never redrawn here (§7, §10).
|
|
34
|
+
*/
|
|
35
|
+
export declare const IdCaptureTutorialScreen: React.ForwardRefExoticComponent<IdCaptureTutorialScreenProps & React.RefAttributes<HTMLDivElement>>;
|
|
36
|
+
export default IdCaptureTutorialScreen;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { PrizmaIllustrationIdTutorial } from '@incodetech/prizma-core-web/illustration-id-tutorial';
|
|
5
|
+
import { PrizmaTutorialScreen } from './TutorialScreen';
|
|
6
|
+
import './ScreenLayout.css';
|
|
7
|
+
/** Tutorial variant → Core `PrizmaIllustrationIdTutorial` type. */
|
|
8
|
+
const ILLUSTRATION_TYPE = {
|
|
9
|
+
front: 'id-front',
|
|
10
|
+
back: 'id-back',
|
|
11
|
+
passport: 'passport',
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* ID Capture — tutorial, built on the `PrizmaTutorialScreen` archetype
|
|
15
|
+
* (GUIDELINES.md §6-A). Figma: purple sections `1-2-1-id` / `4-2-1-back-id` /
|
|
16
|
+
* `3-2-1-id` of the `Tutorial` group.
|
|
17
|
+
*
|
|
18
|
+
* Composed from the foundation pieces until the archetype grew a CTA-loading
|
|
19
|
+
* slot (#F-32) — the one thing that had forced this module, like the Face Capture
|
|
20
|
+
* pilot, to rebuild the tutorial skeleton by hand.
|
|
21
|
+
*
|
|
22
|
+
* The three illustrations are Core's `PrizmaIllustrationIdTutorial` variants,
|
|
23
|
+
* including the composed `id-back` face — never redrawn here (§7, §10).
|
|
24
|
+
*/
|
|
25
|
+
export const IdCaptureTutorialScreen = forwardRef(({ strings, variant = 'front', ctaLoading = false, illustration, screenId = `id-capture-tutorial-${variant}`, overrides, onAction, ...shell }, ref) => {
|
|
26
|
+
const slice = strings.tutorial[variant];
|
|
27
|
+
return (_jsx(PrizmaTutorialScreen, { ref: ref, title: slice.title, subtitle: slice.subtitle, disclaimer: strings.tutorial.disclaimer, ctaLabel: strings.tutorial.ctaLabel, ctaLoading: ctaLoading, ctaLoadingLabel: strings.tutorial.ctaLoadingLabel, illustration: illustration ?? _jsx(PrizmaIllustrationIdTutorial, { type: ILLUSTRATION_TYPE[variant] }), verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell }));
|
|
28
|
+
});
|
|
29
|
+
IdCaptureTutorialScreen.displayName = 'IdCaptureTutorialScreen';
|
|
30
|
+
export default IdCaptureTutorialScreen;
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import React, { type ReactNode } from 'react';
|
|
2
|
+
import { type PrizmaScreenShellProps } from './ScreenShell';
|
|
3
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenChromeProps, PrizmaScreenOverrides } from './types';
|
|
4
|
+
import './ScreenLayout.css';
|
|
5
|
+
/** Same vocabulary as `PrizmaResultScreen`: `loading` renders Core's spinner
|
|
6
|
+
* slot, the verdicts render its status mark, `none` shows the title alone. */
|
|
7
|
+
export type PrizmaListStatus = 'loading' | 'success' | 'error' | 'warning' | 'none';
|
|
8
|
+
export interface PrizmaListScreenProps extends Omit<PrizmaScreenShellProps, 'dark' | 'title' | 'children'>, PrizmaScreenChromeProps {
|
|
9
|
+
/** The status mark above the title. `none` (default) renders the title alone. */
|
|
10
|
+
status?: PrizmaListStatus;
|
|
11
|
+
/**
|
|
12
|
+
* An optional block between the logo nav and the content — a journey stepper.
|
|
13
|
+
* Video Selfie draws Core's `PrizmaStepper` on EVERY screen of the flow, not
|
|
14
|
+
* just its camera stages, and it is the only chrome that tells the steps
|
|
15
|
+
* apart; the archetypes had a slot on E alone, so the rest of the module shed
|
|
16
|
+
* it (owner-reported 2026-08-19). Takes a `ReactNode` so the module supplies
|
|
17
|
+
* Core's own component — no primitive invented, and both offsets live once in
|
|
18
|
+
* `ScreenLayout.css` (`.prizma-screen-layout__progress`). Omit it and nothing
|
|
19
|
+
* renders, so every existing consumer is byte-identical. DEVIATIONS #VS-4.
|
|
20
|
+
*/
|
|
21
|
+
progress?: ReactNode;
|
|
22
|
+
/** H2 screen title ("Common issues", "Camera permission is required"). */
|
|
23
|
+
title: string;
|
|
24
|
+
/** Supporting copy below the title (H5). */
|
|
25
|
+
subtitle?: string;
|
|
26
|
+
/**
|
|
27
|
+
* A non-status glyph ABOVE the title — Core's `PrizmaTitle.icon` allowlist is
|
|
28
|
+
* `status | spinner | none`, so anything else (the question mark on ID
|
|
29
|
+
* Capture's common issues) is composed here. Wrap it in
|
|
30
|
+
* `prizma-screen-layout__glyph` (+ `--neutral` / `--negative`); the slot's
|
|
31
|
+
* geometry and its Spacing/16 live in `ScreenLayout.css`. DEVIATIONS #10.
|
|
32
|
+
*/
|
|
33
|
+
glyph?: ReactNode;
|
|
34
|
+
/**
|
|
35
|
+
* THE list — a Core `PrizmaCardListCommonIssues`,
|
|
36
|
+
* `PrizmaCardListVerificationOptions`, `PrizmaCardDocumentList`… It fills the
|
|
37
|
+
* middle between the title block and the CTA band; the archetype supplies the
|
|
38
|
+
* Spacing/24 below the title and nothing else, so the list keeps its own row
|
|
39
|
+
* rhythm.
|
|
40
|
+
*/
|
|
41
|
+
children?: ReactNode;
|
|
42
|
+
/** Hang the list off the BOTTOM of the middle instead of the top — the
|
|
43
|
+
* document chooser's option rows. Default `'start'`. */
|
|
44
|
+
listAlign?: 'start' | 'end';
|
|
45
|
+
/**
|
|
46
|
+
* Let the list PAN inside the column when the section draws a middle taller
|
|
47
|
+
* than the 844 frame — the archetype-G twin of `scrollFields` on E. The
|
|
48
|
+
* title, the CTA band and the anchored tag hold still while the rows scroll,
|
|
49
|
+
* instead of the surplus painting over them. DEVIATIONS #VS-12.
|
|
50
|
+
*/
|
|
51
|
+
scrollList?: boolean;
|
|
52
|
+
/** Legal/hint copy directly above the CTA. Supplies the designed 28px
|
|
53
|
+
* text→CTA gap through its own padding (DEVIATIONS #8). */
|
|
54
|
+
disclaimer?: string;
|
|
55
|
+
/** Primary CTA. Omit for list screens whose rows ARE the actions (the
|
|
56
|
+
* document chooser: Core makes each row a real `<button>`). */
|
|
57
|
+
ctaLabel?: string;
|
|
58
|
+
/** Secondary CTA (a second filled action) rendered ABOVE the primary. */
|
|
59
|
+
secondaryCtaLabel?: string;
|
|
60
|
+
/** Tertiary underlined LINK above the primary — "Take the photo manually"
|
|
61
|
+
* (common issues) and "Quit process" (permission). Figma draws Core's
|
|
62
|
+
* `tertiary-link` composite in the band's top slot. */
|
|
63
|
+
linkLabel?: string;
|
|
64
|
+
/** "verified by" attribution copy for the footer tag. */
|
|
65
|
+
verifiedLabel: string;
|
|
66
|
+
navLabel?: string;
|
|
67
|
+
screenId?: string;
|
|
68
|
+
overrides?: PrizmaScreenOverrides;
|
|
69
|
+
onAction?: PrizmaScreenActionHandler;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Archetype G — List.
|
|
73
|
+
*
|
|
74
|
+
* Nav (or reserved row) → optional glyph → title block → a Core card / option
|
|
75
|
+
* list filling the middle → CTA band → anchored footer tag.
|
|
76
|
+
*
|
|
77
|
+
* It exists because EIGHT screens hand-built it independently: ID Capture's
|
|
78
|
+
* common issues, permission, age verification and document chooser, Document
|
|
79
|
+
* Capture's common issues, and the document-error card lists. Each re-declared
|
|
80
|
+
* the title→list offset (24 on the ID screens, 32 on Document Capture's) and
|
|
81
|
+
* each inserted the verified tag by hand — which is how the tag ended up at 0 on
|
|
82
|
+
* some screens and 16 on others (DEVIATIONS #F-29, #F-31).
|
|
83
|
+
*
|
|
84
|
+
* CTA band order is the family's designed one: disclaimer → tertiary link →
|
|
85
|
+
* secondary → primary. The link sits ABOVE the primary here (Figma
|
|
86
|
+
* `tertiaryPosition="top"` on `1-5-2-id-common-issues` and `1-3-2-id`), which is
|
|
87
|
+
* the mirror of Archetype A, where it sits below. Stacked at the foundation's
|
|
88
|
+
* flat Spacing/16 (DEVIATIONS #8) — every offset comes from ScreenLayout.css and
|
|
89
|
+
* this file declares none of its own.
|
|
90
|
+
*
|
|
91
|
+
* Reach for `PrizmaResultScreen` instead when the middle is a centred verdict
|
|
92
|
+
* rather than a list.
|
|
93
|
+
*/
|
|
94
|
+
export declare const PrizmaListScreen: React.ForwardRefExoticComponent<PrizmaListScreenProps & React.RefAttributes<HTMLDivElement>>;
|
|
95
|
+
export default PrizmaListScreen;
|