@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,213 @@
|
|
|
1
|
+
import React, { forwardRef, type ReactNode } from 'react';
|
|
2
|
+
import { PrizmaTitle } from '@incodetech/prizma-core-web/title';
|
|
3
|
+
import { PrizmaButton } from '@incodetech/prizma-core-web/button';
|
|
4
|
+
import { PrizmaDisclaimer } from '@incodetech/prizma-core-web/disclaimer';
|
|
5
|
+
import { PrizmaTag } from '@incodetech/prizma-core-web/tag';
|
|
6
|
+
import { PrizmaScreenShell, type PrizmaScreenShellProps } from './ScreenShell';
|
|
7
|
+
import { PrizmaScreenNav } from './ScreenNav';
|
|
8
|
+
import type {
|
|
9
|
+
PrizmaScreenActionHandler,
|
|
10
|
+
PrizmaScreenChromeProps,
|
|
11
|
+
PrizmaScreenOverrides,
|
|
12
|
+
} from './types';
|
|
13
|
+
import './ScreenLayout.css';
|
|
14
|
+
|
|
15
|
+
/** Same vocabulary as `PrizmaResultScreen`: `loading` renders Core's spinner
|
|
16
|
+
* slot, the verdicts render its status mark, `none` shows the title alone. */
|
|
17
|
+
export type PrizmaListStatus = 'loading' | 'success' | 'error' | 'warning' | 'none';
|
|
18
|
+
|
|
19
|
+
export interface PrizmaListScreenProps
|
|
20
|
+
extends Omit<PrizmaScreenShellProps, 'dark' | 'title' | 'children'>,
|
|
21
|
+
PrizmaScreenChromeProps {
|
|
22
|
+
/** The status mark above the title. `none` (default) renders the title alone. */
|
|
23
|
+
status?: PrizmaListStatus;
|
|
24
|
+
/**
|
|
25
|
+
* An optional block between the logo nav and the content — a journey stepper.
|
|
26
|
+
* Video Selfie draws Core's `PrizmaStepper` on EVERY screen of the flow, not
|
|
27
|
+
* just its camera stages, and it is the only chrome that tells the steps
|
|
28
|
+
* apart; the archetypes had a slot on E alone, so the rest of the module shed
|
|
29
|
+
* it (owner-reported 2026-08-19). Takes a `ReactNode` so the module supplies
|
|
30
|
+
* Core's own component — no primitive invented, and both offsets live once in
|
|
31
|
+
* `ScreenLayout.css` (`.prizma-screen-layout__progress`). Omit it and nothing
|
|
32
|
+
* renders, so every existing consumer is byte-identical. DEVIATIONS #VS-4.
|
|
33
|
+
*/
|
|
34
|
+
progress?: ReactNode;
|
|
35
|
+
/** H2 screen title ("Common issues", "Camera permission is required"). */
|
|
36
|
+
title: string;
|
|
37
|
+
/** Supporting copy below the title (H5). */
|
|
38
|
+
subtitle?: string;
|
|
39
|
+
/**
|
|
40
|
+
* A non-status glyph ABOVE the title — Core's `PrizmaTitle.icon` allowlist is
|
|
41
|
+
* `status | spinner | none`, so anything else (the question mark on ID
|
|
42
|
+
* Capture's common issues) is composed here. Wrap it in
|
|
43
|
+
* `prizma-screen-layout__glyph` (+ `--neutral` / `--negative`); the slot's
|
|
44
|
+
* geometry and its Spacing/16 live in `ScreenLayout.css`. DEVIATIONS #10.
|
|
45
|
+
*/
|
|
46
|
+
glyph?: ReactNode;
|
|
47
|
+
/**
|
|
48
|
+
* THE list — a Core `PrizmaCardListCommonIssues`,
|
|
49
|
+
* `PrizmaCardListVerificationOptions`, `PrizmaCardDocumentList`… It fills the
|
|
50
|
+
* middle between the title block and the CTA band; the archetype supplies the
|
|
51
|
+
* Spacing/24 below the title and nothing else, so the list keeps its own row
|
|
52
|
+
* rhythm.
|
|
53
|
+
*/
|
|
54
|
+
children?: ReactNode;
|
|
55
|
+
/** Hang the list off the BOTTOM of the middle instead of the top — the
|
|
56
|
+
* document chooser's option rows. Default `'start'`. */
|
|
57
|
+
listAlign?: 'start' | 'end';
|
|
58
|
+
/**
|
|
59
|
+
* Let the list PAN inside the column when the section draws a middle taller
|
|
60
|
+
* than the 844 frame — the archetype-G twin of `scrollFields` on E. The
|
|
61
|
+
* title, the CTA band and the anchored tag hold still while the rows scroll,
|
|
62
|
+
* instead of the surplus painting over them. DEVIATIONS #VS-12.
|
|
63
|
+
*/
|
|
64
|
+
scrollList?: boolean;
|
|
65
|
+
/** Legal/hint copy directly above the CTA. Supplies the designed 28px
|
|
66
|
+
* text→CTA gap through its own padding (DEVIATIONS #8). */
|
|
67
|
+
disclaimer?: string;
|
|
68
|
+
/** Primary CTA. Omit for list screens whose rows ARE the actions (the
|
|
69
|
+
* document chooser: Core makes each row a real `<button>`). */
|
|
70
|
+
ctaLabel?: string;
|
|
71
|
+
/** Secondary CTA (a second filled action) rendered ABOVE the primary. */
|
|
72
|
+
secondaryCtaLabel?: string;
|
|
73
|
+
/** Tertiary underlined LINK above the primary — "Take the photo manually"
|
|
74
|
+
* (common issues) and "Quit process" (permission). Figma draws Core's
|
|
75
|
+
* `tertiary-link` composite in the band's top slot. */
|
|
76
|
+
linkLabel?: string;
|
|
77
|
+
/** "verified by" attribution copy for the footer tag. */
|
|
78
|
+
verifiedLabel: string;
|
|
79
|
+
navLabel?: string;
|
|
80
|
+
screenId?: string;
|
|
81
|
+
overrides?: PrizmaScreenOverrides;
|
|
82
|
+
onAction?: PrizmaScreenActionHandler;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Archetype G — List.
|
|
87
|
+
*
|
|
88
|
+
* Nav (or reserved row) → optional glyph → title block → a Core card / option
|
|
89
|
+
* list filling the middle → CTA band → anchored footer tag.
|
|
90
|
+
*
|
|
91
|
+
* It exists because EIGHT screens hand-built it independently: ID Capture's
|
|
92
|
+
* common issues, permission, age verification and document chooser, Document
|
|
93
|
+
* Capture's common issues, and the document-error card lists. Each re-declared
|
|
94
|
+
* the title→list offset (24 on the ID screens, 32 on Document Capture's) and
|
|
95
|
+
* each inserted the verified tag by hand — which is how the tag ended up at 0 on
|
|
96
|
+
* some screens and 16 on others (DEVIATIONS #F-29, #F-31).
|
|
97
|
+
*
|
|
98
|
+
* CTA band order is the family's designed one: disclaimer → tertiary link →
|
|
99
|
+
* secondary → primary. The link sits ABOVE the primary here (Figma
|
|
100
|
+
* `tertiaryPosition="top"` on `1-5-2-id-common-issues` and `1-3-2-id`), which is
|
|
101
|
+
* the mirror of Archetype A, where it sits below. Stacked at the foundation's
|
|
102
|
+
* flat Spacing/16 (DEVIATIONS #8) — every offset comes from ScreenLayout.css and
|
|
103
|
+
* this file declares none of its own.
|
|
104
|
+
*
|
|
105
|
+
* Reach for `PrizmaResultScreen` instead when the middle is a centred verdict
|
|
106
|
+
* rather than a list.
|
|
107
|
+
*/
|
|
108
|
+
export const PrizmaListScreen = forwardRef<HTMLDivElement, PrizmaListScreenProps>(
|
|
109
|
+
(
|
|
110
|
+
{
|
|
111
|
+
progress,
|
|
112
|
+
status = 'none',
|
|
113
|
+
title,
|
|
114
|
+
subtitle,
|
|
115
|
+
glyph,
|
|
116
|
+
children,
|
|
117
|
+
listAlign = 'start',
|
|
118
|
+
scrollList = false,
|
|
119
|
+
disclaimer,
|
|
120
|
+
ctaLabel,
|
|
121
|
+
secondaryCtaLabel,
|
|
122
|
+
linkLabel,
|
|
123
|
+
verifiedLabel,
|
|
124
|
+
navLabel,
|
|
125
|
+
screenId,
|
|
126
|
+
showHeader = true,
|
|
127
|
+
showFooter = true,
|
|
128
|
+
overrides,
|
|
129
|
+
onAction,
|
|
130
|
+
...shell
|
|
131
|
+
},
|
|
132
|
+
ref,
|
|
133
|
+
) => (
|
|
134
|
+
<PrizmaScreenShell ref={ref} {...shell}>
|
|
135
|
+
<PrizmaScreenNav reserved={!showHeader} logo={overrides?.logo} navLabel={navLabel} />
|
|
136
|
+
{progress ? (
|
|
137
|
+
<div className="prizma-screen-layout__progress">{progress}</div>
|
|
138
|
+
) : null}
|
|
139
|
+
<div className="prizma-screen-layout__content">
|
|
140
|
+
{glyph}
|
|
141
|
+
<PrizmaTitle
|
|
142
|
+
variant={overrides?.align === 'left' ? 'left' : 'centered'}
|
|
143
|
+
title={title}
|
|
144
|
+
showSubtitle={Boolean(subtitle)}
|
|
145
|
+
subtitle={subtitle}
|
|
146
|
+
icon={
|
|
147
|
+
status === 'loading'
|
|
148
|
+
? { type: 'spinner' }
|
|
149
|
+
: status === 'none'
|
|
150
|
+
? { type: 'none' }
|
|
151
|
+
: { type: 'status', status }
|
|
152
|
+
}
|
|
153
|
+
/>
|
|
154
|
+
<div
|
|
155
|
+
className={[
|
|
156
|
+
'prizma-screen-layout__list',
|
|
157
|
+
listAlign === 'end' ? 'prizma-screen-layout__list--end' : '',
|
|
158
|
+
scrollList ? 'prizma-screen-layout__list--scroll' : '',
|
|
159
|
+
]
|
|
160
|
+
.filter(Boolean)
|
|
161
|
+
.join(' ')}
|
|
162
|
+
>
|
|
163
|
+
{children}
|
|
164
|
+
</div>
|
|
165
|
+
{ctaLabel || secondaryCtaLabel || linkLabel || disclaimer ? (
|
|
166
|
+
<div className="prizma-screen-layout__band">
|
|
167
|
+
{disclaimer ? <PrizmaDisclaimer text={disclaimer} /> : null}
|
|
168
|
+
{linkLabel ? (
|
|
169
|
+
<PrizmaButton
|
|
170
|
+
variant="tertiary-link"
|
|
171
|
+
size="L"
|
|
172
|
+
onClick={() => onAction?.({ type: 'secondary', screenId })}
|
|
173
|
+
>
|
|
174
|
+
{linkLabel}
|
|
175
|
+
</PrizmaButton>
|
|
176
|
+
) : null}
|
|
177
|
+
{/* THE PRIMARY ALWAYS SITS ABOVE THE SECONDARY (owner rule
|
|
178
|
+
2026-08-19, DEVIATIONS #GEO-1). The rule governs the
|
|
179
|
+
primary/secondary pair only — the tertiary link keeps this
|
|
180
|
+
archetype's own fixed position ABOVE both (§6-G, the mirror of
|
|
181
|
+
A where it sits below), which is an explicit exception. */}
|
|
182
|
+
{ctaLabel ? (
|
|
183
|
+
<PrizmaButton
|
|
184
|
+
variant="primary"
|
|
185
|
+
size="L"
|
|
186
|
+
onClick={() => onAction?.({ type: 'cta', screenId })}
|
|
187
|
+
>
|
|
188
|
+
{ctaLabel}
|
|
189
|
+
</PrizmaButton>
|
|
190
|
+
) : null}
|
|
191
|
+
{secondaryCtaLabel ? (
|
|
192
|
+
<PrizmaButton
|
|
193
|
+
variant="secondary"
|
|
194
|
+
size="L"
|
|
195
|
+
onClick={() => onAction?.({ type: 'secondary', screenId })}
|
|
196
|
+
>
|
|
197
|
+
{secondaryCtaLabel}
|
|
198
|
+
</PrizmaButton>
|
|
199
|
+
) : null}
|
|
200
|
+
</div>
|
|
201
|
+
) : null}
|
|
202
|
+
</div>
|
|
203
|
+
{showFooter ? (
|
|
204
|
+
<div className="prizma-screen-layout__footer">
|
|
205
|
+
<PrizmaTag label={verifiedLabel} />
|
|
206
|
+
</div>
|
|
207
|
+
) : null}
|
|
208
|
+
</PrizmaScreenShell>
|
|
209
|
+
),
|
|
210
|
+
);
|
|
211
|
+
PrizmaListScreen.displayName = 'PrizmaListScreen';
|
|
212
|
+
|
|
213
|
+
export default PrizmaListScreen;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import React, { forwardRef } from 'react';
|
|
2
|
+
import { PrizmaProcessingScreen, type PrizmaProcessingScreenProps } from './ProcessingScreen';
|
|
3
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
4
|
+
import type { LoadersStrings, LoadersVariant } from './LoadersStrings';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
|
|
7
|
+
export interface LoaderScreenProps
|
|
8
|
+
extends Omit<
|
|
9
|
+
PrizmaProcessingScreenProps,
|
|
10
|
+
'status' | 'title' | 'subtitle' | 'verifiedLabel' | 'navLabel'
|
|
11
|
+
> {
|
|
12
|
+
/** Family copy — this screen reads the `variants` slice its `variant` names. */
|
|
13
|
+
strings: LoadersStrings;
|
|
14
|
+
/** Which copy pair to render. Default `processing`. */
|
|
15
|
+
variant?: LoadersVariant;
|
|
16
|
+
screenId?: string;
|
|
17
|
+
overrides?: PrizmaScreenOverrides;
|
|
18
|
+
onAction?: PrizmaScreenActionHandler;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Loaders — the generic wait screen, built on the Processing archetype
|
|
23
|
+
* (GUIDELINES.md §6-C, `PrizmaProcessingScreen`).
|
|
24
|
+
*
|
|
25
|
+
* Figma: `Module Generic Screens` frames `67:2388` ("Processing…") and
|
|
26
|
+
* `67:3593` ("Just a moment…"). ONE screen for both, and for every module
|
|
27
|
+
* loader after them: logo header → Core's spinner → status line → reassurance
|
|
28
|
+
* line → the verified tag, with no CTA. The archetype already IS this recipe;
|
|
29
|
+
* this component exists so the family has a name a designer can point at and a
|
|
30
|
+
* copy contract a host can fill, not to add layout.
|
|
31
|
+
*
|
|
32
|
+
* Reach for `PrizmaResultScreen` the moment a wait screen needs a button — a
|
|
33
|
+
* loader with a "Cancel" is a result screen, and the missing CTA band here is
|
|
34
|
+
* exactly what made three modules hand-build the skeleton (see
|
|
35
|
+
* `ResultScreen.tsx`).
|
|
36
|
+
*/
|
|
37
|
+
export const LoaderScreen = forwardRef<HTMLDivElement, LoaderScreenProps>(
|
|
38
|
+
(
|
|
39
|
+
{
|
|
40
|
+
strings,
|
|
41
|
+
variant = 'processing',
|
|
42
|
+
screenId = `loaders-${variant}`,
|
|
43
|
+
overrides,
|
|
44
|
+
onAction,
|
|
45
|
+
...shell
|
|
46
|
+
},
|
|
47
|
+
ref,
|
|
48
|
+
) => {
|
|
49
|
+
const copy = strings.variants[variant];
|
|
50
|
+
|
|
51
|
+
return (
|
|
52
|
+
<PrizmaProcessingScreen
|
|
53
|
+
ref={ref}
|
|
54
|
+
status="loading"
|
|
55
|
+
title={copy.title}
|
|
56
|
+
subtitle={copy.subtitle}
|
|
57
|
+
verifiedLabel={strings.verifiedLabel}
|
|
58
|
+
navLabel={strings.navLabel}
|
|
59
|
+
screenId={screenId}
|
|
60
|
+
overrides={overrides}
|
|
61
|
+
onAction={onAction}
|
|
62
|
+
{...shell}
|
|
63
|
+
/>
|
|
64
|
+
);
|
|
65
|
+
},
|
|
66
|
+
);
|
|
67
|
+
LoaderScreen.displayName = 'LoaderScreen';
|
|
68
|
+
|
|
69
|
+
export default LoaderScreen;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
// Loaders — copy contract for the GENERIC family.
|
|
2
|
+
//
|
|
3
|
+
// Figma: `Module Generic Screens` (qGJjfL4O0JSjz1x4tOjJn8), frames `67:2388`
|
|
4
|
+
// and `67:3593`.
|
|
5
|
+
//
|
|
6
|
+
// The wait screen every module shows while the server thinks. It is drawn once
|
|
7
|
+
// in the generic file and reused verbatim — logo header, Core's spinner, a
|
|
8
|
+
// status line, a reassurance line, the verified tag — because a user who sees a
|
|
9
|
+
// different loader between two steps reads it as a different product.
|
|
10
|
+
//
|
|
11
|
+
// The family has no flow of its own: a loader is always ENTERED from the module
|
|
12
|
+
// that is waiting and LEFT for that module's next screen, so there is nothing
|
|
13
|
+
// to draw. Core Lab lists it as a library of states.
|
|
14
|
+
//
|
|
15
|
+
// No hardcoded English anywhere in a screen: every visible string arrives here.
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The two frames in the generic file. They are the same screen with different
|
|
19
|
+
* copy — which is the point of the family: the loader is a shape, and the two
|
|
20
|
+
* entries here are examples of filling it, not a closed set. A module that
|
|
21
|
+
* waits for something else supplies its own pair of strings under a new key.
|
|
22
|
+
*/
|
|
23
|
+
export type LoadersVariant = 'processing' | 'validating';
|
|
24
|
+
|
|
25
|
+
export interface LoadersCopy {
|
|
26
|
+
/** H2 status line ("Processing…"). */
|
|
27
|
+
title: string;
|
|
28
|
+
/** Reassurance line under it ("This won't take long."). */
|
|
29
|
+
subtitle?: string;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export interface LoadersStrings {
|
|
33
|
+
/** Accessible name for the logo nav region (i18n — no baked-in English). */
|
|
34
|
+
navLabel?: string;
|
|
35
|
+
/** "verified by" attribution copy for the footer tag. */
|
|
36
|
+
verifiedLabel: string;
|
|
37
|
+
variants: Record<LoadersVariant, LoadersCopy>;
|
|
38
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import React, { forwardRef, type ReactNode } from 'react';
|
|
2
|
+
import {
|
|
3
|
+
IconChipNotFound,
|
|
4
|
+
IconIdTooFar,
|
|
5
|
+
IconPassportCover,
|
|
6
|
+
IconPassportTooFar,
|
|
7
|
+
IconPhoneCover,
|
|
8
|
+
IconPhoneMoved,
|
|
9
|
+
} from '@incodetech/prizma-core-icons';
|
|
10
|
+
import { PrizmaList } from '@incodetech/prizma-core-web/list';
|
|
11
|
+
import { PrizmaListScreen, type PrizmaListScreenProps } from './ListScreen';
|
|
12
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
13
|
+
import type { NfcDocumentType, NfcIssueKind, NfcStrings } from './NfcStrings';
|
|
14
|
+
import './ScreenLayout.css';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Issue kind → canonical bank glyph. Unlike Document Capture's and
|
|
18
|
+
* Geolocation's maps (#DC-23), NOTHING here is a substitution: the bank ships
|
|
19
|
+
* this module's five glyphs by name — the NFC sweep minted `passport-cover`,
|
|
20
|
+
* `passport-too-far`, `id-too-far`, `chip-not-found`, `phone-moved` and
|
|
21
|
+
* `phone-cover` — so every row draws the icon its Figma section draws.
|
|
22
|
+
*/
|
|
23
|
+
const ISSUE_ICONS: Record<NfcIssueKind, ReactNode> = {
|
|
24
|
+
passportInCover: <IconPassportCover size="m" />,
|
|
25
|
+
passportTooFar: <IconPassportTooFar size="m" />,
|
|
26
|
+
idTooFar: <IconIdTooFar size="m" />,
|
|
27
|
+
chipOtherPage: <IconChipNotFound size="m" />,
|
|
28
|
+
phoneMoved: <IconPhoneMoved size="m" />,
|
|
29
|
+
phoneCover: <IconPhoneCover size="m" />,
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export interface NfcCommonIssuesScreenProps
|
|
33
|
+
extends Omit<
|
|
34
|
+
PrizmaListScreenProps,
|
|
35
|
+
'title' | 'children' | 'ctaLabel' | 'verifiedLabel' | 'navLabel'
|
|
36
|
+
> {
|
|
37
|
+
/** Module copy — this screen reads the `commonIssues` slice. */
|
|
38
|
+
strings: NfcStrings;
|
|
39
|
+
/** Which purple section: `nfc.commonissues.id` (3 rows) or `.passport` (5). */
|
|
40
|
+
documentType?: NfcDocumentType;
|
|
41
|
+
screenId?: string;
|
|
42
|
+
overrides?: PrizmaScreenOverrides;
|
|
43
|
+
onAction?: PrizmaScreenActionHandler;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* NFC — the "Common issues" help sheet reached from the retry screen's Help
|
|
48
|
+
* button. Purple sections `nfc.commonissues.id` (19976:109863, three rows) and
|
|
49
|
+
* `nfc.commonissues.passport` (19976:112072, five), on the List archetype
|
|
50
|
+
* (GUIDELINES.md §6-G).
|
|
51
|
+
*
|
|
52
|
+
* Like ID Capture's and Document Capture's help sheets, these sections draw no
|
|
53
|
+
* logo, so `showHeader={false}` drops the wordmark while the nav row stays
|
|
54
|
+
* reserved — the content starts where every other screen's does and the tag
|
|
55
|
+
* keeps its one fixed position (#F-34, #F-29).
|
|
56
|
+
*
|
|
57
|
+
* The rows are Core's `PrizmaList variant="icons-m"`, which IS the `List`
|
|
58
|
+
* instance the sections place: a 40px leading icon slot, a single-line label,
|
|
59
|
+
* rows stacked by the component's own rhythm. (Figma spaces its rows 16 apart
|
|
60
|
+
* and Core's icons-m gap is Spacing/12 — Core wins, a 4px family-level
|
|
61
|
+
* difference that no module re-declares.) `PrizmaCardListCommonIssues`, which
|
|
62
|
+
* two other modules use for their help sheets, is deliberately NOT used here:
|
|
63
|
+
* it is the two-line title+description row, and these rows have one line.
|
|
64
|
+
*/
|
|
65
|
+
export const NfcCommonIssuesScreen = forwardRef<HTMLDivElement, NfcCommonIssuesScreenProps>(
|
|
66
|
+
(
|
|
67
|
+
{
|
|
68
|
+
strings,
|
|
69
|
+
documentType = 'passport',
|
|
70
|
+
screenId = `nfc-common-issues-${documentType}`,
|
|
71
|
+
showHeader = false,
|
|
72
|
+
overrides,
|
|
73
|
+
onAction,
|
|
74
|
+
...shell
|
|
75
|
+
},
|
|
76
|
+
ref,
|
|
77
|
+
) => (
|
|
78
|
+
<PrizmaListScreen
|
|
79
|
+
ref={ref}
|
|
80
|
+
showHeader={showHeader}
|
|
81
|
+
title={strings.commonIssues.title}
|
|
82
|
+
ctaLabel={strings.commonIssues.ctaLabel}
|
|
83
|
+
verifiedLabel={strings.verifiedLabel}
|
|
84
|
+
navLabel={strings.navLabel}
|
|
85
|
+
screenId={screenId}
|
|
86
|
+
overrides={overrides}
|
|
87
|
+
onAction={onAction}
|
|
88
|
+
{...shell}
|
|
89
|
+
>
|
|
90
|
+
<PrizmaList
|
|
91
|
+
variant="icons-m"
|
|
92
|
+
aria-label={strings.commonIssues.listLabel}
|
|
93
|
+
items={strings.commonIssues.issues[documentType].map((issue) => ({
|
|
94
|
+
variant: 'icon-m' as const,
|
|
95
|
+
label: issue.label,
|
|
96
|
+
icon: ISSUE_ICONS[issue.kind],
|
|
97
|
+
}))}
|
|
98
|
+
/>
|
|
99
|
+
</PrizmaListScreen>
|
|
100
|
+
),
|
|
101
|
+
);
|
|
102
|
+
NfcCommonIssuesScreen.displayName = 'NfcCommonIssuesScreen';
|
|
103
|
+
|
|
104
|
+
export default NfcCommonIssuesScreen;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import React, { forwardRef } from 'react';
|
|
2
|
+
import { PrizmaResultScreen, type PrizmaResultScreenProps } from './ResultScreen';
|
|
3
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
4
|
+
import type { NfcStrings } from './NfcStrings';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Which error verdict. `unable` is the pre-flight refusal (the device or the
|
|
9
|
+
* document cannot do NFC at all); `general` is the read failing on a chip that
|
|
10
|
+
* should have worked.
|
|
11
|
+
*/
|
|
12
|
+
export type NfcErrorVariant = 'unable' | 'general';
|
|
13
|
+
|
|
14
|
+
export interface NfcErrorScreenProps
|
|
15
|
+
extends Omit<
|
|
16
|
+
PrizmaResultScreenProps,
|
|
17
|
+
| 'status'
|
|
18
|
+
| 'title'
|
|
19
|
+
| 'subtitle'
|
|
20
|
+
| 'children'
|
|
21
|
+
| 'ctaLabel'
|
|
22
|
+
| 'secondaryCtaLabel'
|
|
23
|
+
| 'verifiedLabel'
|
|
24
|
+
| 'navLabel'
|
|
25
|
+
> {
|
|
26
|
+
/** Module copy — this screen reads the `error` slice. */
|
|
27
|
+
strings: NfcStrings;
|
|
28
|
+
/** Which purple section to render. Default `unable`. */
|
|
29
|
+
variant?: NfcErrorVariant;
|
|
30
|
+
screenId?: string;
|
|
31
|
+
overrides?: PrizmaScreenOverrides;
|
|
32
|
+
onAction?: PrizmaScreenActionHandler;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* NFC — the two error verdicts, on the Result archetype (GUIDELINES.md §6-F):
|
|
37
|
+
*
|
|
38
|
+
* - `unable` — `nfc.error.unable` (19975:107734): a WARNING mark over "We're
|
|
39
|
+
* sorry, you're unable to continue the process" + "Only passports and phones
|
|
40
|
+
* with NFC are allowed."
|
|
41
|
+
* - `general` — `nfc.error.generalerror` (19975:108644): a NEGATIVE mark over
|
|
42
|
+
* "Unable to authenticate document chip", no supporting line.
|
|
43
|
+
*
|
|
44
|
+
* The two are one screen because they differ only in mark and copy; the amber
|
|
45
|
+
* vs red distinction is real and deliberate (a device that CANNOT do NFC is not
|
|
46
|
+
* a failed read), so it rides Core's own status axis rather than a colour
|
|
47
|
+
* literal.
|
|
48
|
+
*
|
|
49
|
+
* Chrome: both sections draw the verdict alone — no logo row, no tag. Both are
|
|
50
|
+
* kept, which is the standing ruling for the error family (#PI-8, restated by
|
|
51
|
+
* the owner 2026-08-19 and applied to four modules' connectivity screens), so
|
|
52
|
+
* nothing shifts between the module's states (#F-29).
|
|
53
|
+
*/
|
|
54
|
+
export const NfcErrorScreen = forwardRef<HTMLDivElement, NfcErrorScreenProps>(
|
|
55
|
+
(
|
|
56
|
+
{
|
|
57
|
+
strings,
|
|
58
|
+
variant = 'unable',
|
|
59
|
+
screenId = `nfc-error-${variant}`,
|
|
60
|
+
overrides,
|
|
61
|
+
onAction,
|
|
62
|
+
...shell
|
|
63
|
+
},
|
|
64
|
+
ref,
|
|
65
|
+
) => (
|
|
66
|
+
<PrizmaResultScreen
|
|
67
|
+
ref={ref}
|
|
68
|
+
status={variant === 'unable' ? 'warning' : 'error'}
|
|
69
|
+
title={strings.error[variant].title}
|
|
70
|
+
subtitle={variant === 'unable' ? strings.error.unable.subtitle : undefined}
|
|
71
|
+
ctaLabel={strings.error[variant].ctaLabel}
|
|
72
|
+
verifiedLabel={strings.verifiedLabel}
|
|
73
|
+
navLabel={strings.navLabel}
|
|
74
|
+
screenId={screenId}
|
|
75
|
+
overrides={overrides}
|
|
76
|
+
onAction={onAction}
|
|
77
|
+
{...shell}
|
|
78
|
+
/>
|
|
79
|
+
),
|
|
80
|
+
);
|
|
81
|
+
NfcErrorScreen.displayName = 'NfcErrorScreen';
|
|
82
|
+
|
|
83
|
+
export default NfcErrorScreen;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/* NFC — module-owned layer.
|
|
2
|
+
*
|
|
3
|
+
* Only ONE thing lives here, and it is presentation, not archetype spacing: the
|
|
4
|
+
* scrim + centring frame that presents Core's `PrizmaModalContent` on the
|
|
5
|
+
* `nfc.error.nfcsettings` section. No offset, size or type value in this file
|
|
6
|
+
* duplicates anything the archetypes own — every screen offset in this module
|
|
7
|
+
* comes from `ScreenLayout.css`.
|
|
8
|
+
*
|
|
9
|
+
* Why the screen owns the presentation: Core's safe presenter (`PrizmaModal`)
|
|
10
|
+
* `createPortal`s to `document.body`, which escapes the 390 × 844 screen frame
|
|
11
|
+
* and the host's `transform: scale()` (DEVIATIONS #17), and a screen is one
|
|
12
|
+
* static spec state with no open/close clock. This is the same division of
|
|
13
|
+
* labour Document Capture's bottom sheet already uses (#DC-30) — Core owns the
|
|
14
|
+
* card, the surface owns the scrim.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
.nfc-modal-scrim {
|
|
18
|
+
position: absolute;
|
|
19
|
+
inset: 0;
|
|
20
|
+
z-index: 1;
|
|
21
|
+
background: var(--prizma-surface-overlay);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/* Centres the dialog in the frame. `PrizmaModalContent` is `width: 100%` up to
|
|
25
|
+
* its own `Modal/Size/Max-width`, so the only thing added here is the gutter
|
|
26
|
+
* Figma draws (12 each side of the 390 frame) — a Spacing token, not a literal. */
|
|
27
|
+
.nfc-modal-panel {
|
|
28
|
+
position: absolute;
|
|
29
|
+
inset: 0;
|
|
30
|
+
z-index: 2;
|
|
31
|
+
display: flex;
|
|
32
|
+
align-items: center;
|
|
33
|
+
justify-content: center;
|
|
34
|
+
padding-inline: var(--prizma-spacing-12);
|
|
35
|
+
box-sizing: border-box;
|
|
36
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import React, { forwardRef } from 'react';
|
|
2
|
+
import {
|
|
3
|
+
PrizmaProcessingScreen,
|
|
4
|
+
type PrizmaProcessingScreenProps,
|
|
5
|
+
} from './ProcessingScreen';
|
|
6
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
7
|
+
import type { NfcStrings } from './NfcStrings';
|
|
8
|
+
import './ScreenLayout.css';
|
|
9
|
+
|
|
10
|
+
export interface NfcProcessingScreenProps
|
|
11
|
+
extends Omit<
|
|
12
|
+
PrizmaProcessingScreenProps,
|
|
13
|
+
'status' | 'title' | 'subtitle' | 'verifiedLabel' | 'navLabel'
|
|
14
|
+
> {
|
|
15
|
+
/** Module copy — this screen reads the `loading` slice. */
|
|
16
|
+
strings: NfcStrings;
|
|
17
|
+
screenId?: string;
|
|
18
|
+
overrides?: PrizmaScreenOverrides;
|
|
19
|
+
onAction?: PrizmaScreenActionHandler;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* NFC — "Hold on a sec.. / We're verifying your identity": the chip has been
|
|
24
|
+
* read and the data is being checked. Purple section `nfc.loading.default`
|
|
25
|
+
* (19974:82917), on the Processing archetype (GUIDELINES.md §6-C).
|
|
26
|
+
*
|
|
27
|
+
* A pure spinner + title screen with no button, which is the case §6-F reserves
|
|
28
|
+
* for C rather than the Result archetype — the same split Email Input's success
|
|
29
|
+
* screen sits on (#EI-4).
|
|
30
|
+
*
|
|
31
|
+
* Chrome: the section draws neither the logo nor the tag (its CONTENT frame
|
|
32
|
+
* holds only the `Loading spinner` instance). Both are kept, per the owner rule
|
|
33
|
+
* that non-capture screens show header AND footer and that fixed chrome never
|
|
34
|
+
* moves between states (#F-30, #F-29, and the #PI-8 restatement).
|
|
35
|
+
*/
|
|
36
|
+
export const NfcProcessingScreen = forwardRef<HTMLDivElement, NfcProcessingScreenProps>(
|
|
37
|
+
(
|
|
38
|
+
{ strings, screenId = 'nfc-loading', overrides, onAction, ...shell },
|
|
39
|
+
ref,
|
|
40
|
+
) => (
|
|
41
|
+
<PrizmaProcessingScreen
|
|
42
|
+
ref={ref}
|
|
43
|
+
status="loading"
|
|
44
|
+
title={strings.loading.title}
|
|
45
|
+
subtitle={strings.loading.subtitle}
|
|
46
|
+
verifiedLabel={strings.verifiedLabel}
|
|
47
|
+
navLabel={strings.navLabel}
|
|
48
|
+
screenId={screenId}
|
|
49
|
+
overrides={overrides}
|
|
50
|
+
onAction={onAction}
|
|
51
|
+
{...shell}
|
|
52
|
+
/>
|
|
53
|
+
),
|
|
54
|
+
);
|
|
55
|
+
NfcProcessingScreen.displayName = 'NfcProcessingScreen';
|
|
56
|
+
|
|
57
|
+
export default NfcProcessingScreen;
|