@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,127 @@
|
|
|
1
|
+
import React, { forwardRef } from 'react';
|
|
2
|
+
import { PrizmaLoadingBar } from '@incodetech/prizma-core-web/loading-bar';
|
|
3
|
+
import { PrizmaListScreen, type PrizmaListScreenProps } from './ListScreen';
|
|
4
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
5
|
+
import type { NfcStrings } from './NfcStrings';
|
|
6
|
+
import './ScreenLayout.css';
|
|
7
|
+
|
|
8
|
+
/** Which moment of the read this is. The two moments the Prizma layer actually
|
|
9
|
+
* draws: the bar filling under "Scanning..", then full and green under "Done".
|
|
10
|
+
* There is no `error` member — the failed read never reaches this layer; see
|
|
11
|
+
* the note below. */
|
|
12
|
+
export type NfcScanningState = 'scanning' | 'done';
|
|
13
|
+
|
|
14
|
+
/** State → Core `PrizmaLoadingBar` phase + the progress the section draws. */
|
|
15
|
+
const BAR: Record<NfcScanningState, { state: 'analyzing' | 'success'; progress: number }> = {
|
|
16
|
+
scanning: { state: 'analyzing', progress: 15 },
|
|
17
|
+
done: { state: 'success', progress: 100 },
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export interface NfcScanningScreenProps
|
|
21
|
+
extends Omit<
|
|
22
|
+
PrizmaListScreenProps,
|
|
23
|
+
| 'title'
|
|
24
|
+
| 'subtitle'
|
|
25
|
+
| 'children'
|
|
26
|
+
| 'ctaLabel'
|
|
27
|
+
| 'secondaryCtaLabel'
|
|
28
|
+
| 'linkLabel'
|
|
29
|
+
| 'verifiedLabel'
|
|
30
|
+
| 'navLabel'
|
|
31
|
+
> {
|
|
32
|
+
/** Module copy — this screen reads the `scanning` slice. */
|
|
33
|
+
strings: NfcStrings;
|
|
34
|
+
/** Which moment of the read to render. Default `scanning`. */
|
|
35
|
+
state?: NfcScanningState;
|
|
36
|
+
/** Override the bar's fill (runtime data, never copy). */
|
|
37
|
+
progress?: number;
|
|
38
|
+
screenId?: string;
|
|
39
|
+
overrides?: PrizmaScreenOverrides;
|
|
40
|
+
onAction?: PrizmaScreenActionHandler;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* NFC — the read in flight: "Scanning.." → "Done". The Prizma layer of the
|
|
45
|
+
* `nfc.scanning` group (22469:32916).
|
|
46
|
+
*
|
|
47
|
+
* **What this screen is, and what it deliberately is not.** All ten of that
|
|
48
|
+
* group's purple sections draw the PLATFORM's own NFC dialog — iOS's "Ready to
|
|
49
|
+
* scan" sheet with its status glyph and Cancel row, and Android's equivalent on
|
|
50
|
+
* a blacked-out backdrop. Those are OS chrome, not Prizma surfaces: a screen
|
|
51
|
+
* composed only of Core components cannot render them, and faking them would
|
|
52
|
+
* ship a counterfeit system UI. Same ruling as ID Capture's OS permission
|
|
53
|
+
* dialogs (#IDC-26) and Document Capture's iOS action sheet / Photos picker
|
|
54
|
+
* (#DC-20). What IS a Prizma surface is the screen UNDER the sheet — visible
|
|
55
|
+
* through it in the iOS sections, and the whole screen once the sheet is
|
|
56
|
+
* dismissed — and that is what this file builds: nav → title block → the
|
|
57
|
+
* progress bar and its "Hold still.." line.
|
|
58
|
+
*
|
|
59
|
+
* Only TWO of the ten sections carry a distinct Prizma layer, and they are the
|
|
60
|
+
* two states above: `nfc.scanning.scanning` (22469:34999) and
|
|
61
|
+
* `nfc.scanning.success` (22469:36706, "Done" + the full green bar). The other
|
|
62
|
+
* eight have no screen of their own:
|
|
63
|
+
* - the four `*ready` sections sit over `NfcTutorialScreen`, unchanged;
|
|
64
|
+
* - `androidscanning` / `androiddone` / `androidscanningError` black the app out
|
|
65
|
+
* entirely behind Android's sheet — there is nothing of ours to draw;
|
|
66
|
+
* - `scanningerror` (23291:19865) and `androidscanningError` (22526:20450) put
|
|
67
|
+
* the words "We couldn't scan the chip" INSIDE the OS sheet. Re-checked frame
|
|
68
|
+
* by frame on 2026-08-19: behind the iOS sheet the Prizma layer is
|
|
69
|
+
* byte-for-byte `nfc.scanning.scanning` — same "Scanning.." title, same
|
|
70
|
+
* subtitle, same partly-filled bar, same "Hold still..". So this file has NO
|
|
71
|
+
* `error` state: hoisting the sheet's copy into the title block would invent a
|
|
72
|
+
* screen Figma never draws, and a `failed` bar appears nowhere in the group.
|
|
73
|
+
* A failed read is communicated by the OS sheet, then by `NfcTryAgainScreen`.
|
|
74
|
+
*
|
|
75
|
+
* Archetype G (`PrizmaListScreen`) carries it — the frames put the bar at
|
|
76
|
+
* Spacing/24 under a top-aligned title block, which is exactly G's middle slot
|
|
77
|
+
* (F would centre the pair and drop the title). The bar is Core's
|
|
78
|
+
* `PrizmaLoadingBar`, capped at Figma's 164px by the foundation's own
|
|
79
|
+
* `__review-loading` rule (#DC-28 / #REV-1) rather than a second copy of that
|
|
80
|
+
* literal in a module file.
|
|
81
|
+
*
|
|
82
|
+
* One Core-wins colour call, already settled: Figma fills the in-flight bar
|
|
83
|
+
* GREEN, Core fills it brand blue because "green is reserved for success"
|
|
84
|
+
* (owner, 2026-07-11 — DEVIATIONS #DC-28). `done` is genuinely green.
|
|
85
|
+
*/
|
|
86
|
+
export const NfcScanningScreen = forwardRef<HTMLDivElement, NfcScanningScreenProps>(
|
|
87
|
+
(
|
|
88
|
+
{
|
|
89
|
+
strings,
|
|
90
|
+
state = 'scanning',
|
|
91
|
+
progress,
|
|
92
|
+
screenId = `nfc-scanning-${state}`,
|
|
93
|
+
overrides,
|
|
94
|
+
onAction,
|
|
95
|
+
...shell
|
|
96
|
+
},
|
|
97
|
+
ref,
|
|
98
|
+
) => {
|
|
99
|
+
const bar = BAR[state];
|
|
100
|
+
const slice = strings.scanning[state];
|
|
101
|
+
|
|
102
|
+
return (
|
|
103
|
+
<PrizmaListScreen
|
|
104
|
+
ref={ref}
|
|
105
|
+
title={slice.title}
|
|
106
|
+
subtitle={slice.subtitle}
|
|
107
|
+
verifiedLabel={strings.verifiedLabel}
|
|
108
|
+
navLabel={strings.navLabel}
|
|
109
|
+
screenId={screenId}
|
|
110
|
+
overrides={overrides}
|
|
111
|
+
onAction={onAction}
|
|
112
|
+
{...shell}
|
|
113
|
+
>
|
|
114
|
+
<div className="prizma-screen-layout__review-loading">
|
|
115
|
+
<PrizmaLoadingBar
|
|
116
|
+
progress={progress ?? bar.progress}
|
|
117
|
+
state={bar.state}
|
|
118
|
+
title={strings.scanning.progressLabel}
|
|
119
|
+
/>
|
|
120
|
+
</div>
|
|
121
|
+
</PrizmaListScreen>
|
|
122
|
+
);
|
|
123
|
+
},
|
|
124
|
+
);
|
|
125
|
+
NfcScanningScreen.displayName = 'NfcScanningScreen';
|
|
126
|
+
|
|
127
|
+
export default NfcScanningScreen;
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import React, { forwardRef } from 'react';
|
|
2
|
+
import { IconStatusWarning } from '@incodetech/prizma-core-icons';
|
|
3
|
+
import { PrizmaModalContent } from '@incodetech/prizma-core-web/modal';
|
|
4
|
+
import { PrizmaTutorialScreen, type PrizmaTutorialScreenProps } from './TutorialScreen';
|
|
5
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
6
|
+
import type { NfcStrings } from './NfcStrings';
|
|
7
|
+
import './ScreenLayout.css';
|
|
8
|
+
import './NfcLayout.css';
|
|
9
|
+
|
|
10
|
+
export interface NfcSettingsScreenProps
|
|
11
|
+
extends Omit<
|
|
12
|
+
PrizmaTutorialScreenProps,
|
|
13
|
+
| 'title'
|
|
14
|
+
| 'subtitle'
|
|
15
|
+
| 'ctaLabel'
|
|
16
|
+
| 'linkLabel'
|
|
17
|
+
| 'illustration'
|
|
18
|
+
| 'overlay'
|
|
19
|
+
| 'verifiedLabel'
|
|
20
|
+
| 'navLabel'
|
|
21
|
+
> {
|
|
22
|
+
/** Module copy — this screen reads the `settings` slice. */
|
|
23
|
+
strings: NfcStrings;
|
|
24
|
+
screenId?: string;
|
|
25
|
+
overrides?: PrizmaScreenOverrides;
|
|
26
|
+
onAction?: PrizmaScreenActionHandler;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* NFC — "Enable NFC scanning", the dialog shown when the device has NFC but it
|
|
31
|
+
* is switched off. Purple section `nfc.error.nfcsettings` (23003:23652).
|
|
32
|
+
*
|
|
33
|
+
* The section is a Core `Modal` on a scrim over a backgrounded app: there is no
|
|
34
|
+
* Prizma surface behind it at all (its CONTENT frame holds the Modal instance
|
|
35
|
+
* and nothing else). Core's `PrizmaModalContent` renders the card verbatim; the
|
|
36
|
+
* screen supplies only the scrim and the centring frame, exactly as Document
|
|
37
|
+
* Capture's method sheet does (#DC-30) — the safe presenter portals to
|
|
38
|
+
* `document.body` and would escape the screen frame.
|
|
39
|
+
*
|
|
40
|
+
* TWO shortcomings, both reported rather than worked around:
|
|
41
|
+
* - **No archetype models "an overlay over nothing".** `PrizmaTutorialScreen`
|
|
42
|
+
* is used purely because A's `overlay` is the only shell-level slot in the
|
|
43
|
+
* archetype layer; its own content is emptied out (no illustration, no CTA,
|
|
44
|
+
* header and footer off) and its required `title` is passed the empty string
|
|
45
|
+
* so nothing renders behind the scrim. That is a workaround at the archetype
|
|
46
|
+
* BOUNDARY, not inside a module file, and it is the gap being reported.
|
|
47
|
+
* - **⚠️ KNOWN MISMATCH — the status mark lands below the copy.** Figma stacks
|
|
48
|
+
* the amber mark ABOVE the title (mark → "Enable NFC scanning" → the two-line
|
|
49
|
+
* body → the filled blue button). Core's only mark-shaped slot is
|
|
50
|
+
* `with-image`, and `Modal.tsx` renders it AFTER the content block — title
|
|
51
|
+
* (l. 218), subtitle (l. 220), body, THEN `prizma-modal__image` (l. 224) —
|
|
52
|
+
* so the rendered card is title → body → mark → button. Re-confirmed against
|
|
53
|
+
* Core source on 2026-08-19; `title` is typed `string`, so the mark cannot
|
|
54
|
+
* ride along in the heading either. Every in-module alternative (hand-rolling
|
|
55
|
+
* the card, or reordering Core's own BEM children from `NfcLayout.css`) is a
|
|
56
|
+
* local workaround around a missing archetype/Core slot, which rule 2 forbids
|
|
57
|
+
* — so this state SHIPS KNOWINGLY WRONG rather than being treated as matching
|
|
58
|
+
* the frame, and the fix is Core-side. **Core request: a status-mark slot on
|
|
59
|
+
* `PrizmaModalContent` rendered ABOVE the title, mirroring `PrizmaTitle`'s
|
|
60
|
+
* status-icon position; this screen switches to it the day it lands.**
|
|
61
|
+
* The mark itself is the bank's OUTLINE `IconStatusWarning`, not Figma's
|
|
62
|
+
* filled disc (#15), wearing Core's OWN `prizma-title__status-icon--warning`
|
|
63
|
+
* class so both the Title/Icon/Size (40) and the amber token come from the
|
|
64
|
+
* design system — the #PI-7 idiom of borrowing a Core modifier through
|
|
65
|
+
* `className` rather than redeclaring anything.
|
|
66
|
+
*/
|
|
67
|
+
export const NfcSettingsScreen = forwardRef<HTMLDivElement, NfcSettingsScreenProps>(
|
|
68
|
+
(
|
|
69
|
+
{
|
|
70
|
+
strings,
|
|
71
|
+
screenId = 'nfc-settings',
|
|
72
|
+
showHeader = false,
|
|
73
|
+
showFooter = false,
|
|
74
|
+
overrides,
|
|
75
|
+
onAction,
|
|
76
|
+
...shell
|
|
77
|
+
},
|
|
78
|
+
ref,
|
|
79
|
+
) => (
|
|
80
|
+
<PrizmaTutorialScreen
|
|
81
|
+
ref={ref}
|
|
82
|
+
/* Nothing renders behind the scrim — see the note above. Not copy, so
|
|
83
|
+
nothing to translate. */
|
|
84
|
+
title=""
|
|
85
|
+
showHeader={showHeader}
|
|
86
|
+
showFooter={showFooter}
|
|
87
|
+
verifiedLabel={strings.verifiedLabel}
|
|
88
|
+
navLabel={strings.navLabel}
|
|
89
|
+
screenId={screenId}
|
|
90
|
+
overrides={overrides}
|
|
91
|
+
onAction={onAction}
|
|
92
|
+
overlay={
|
|
93
|
+
<>
|
|
94
|
+
<div className="nfc-modal-scrim" aria-hidden="true" />
|
|
95
|
+
<div className="nfc-modal-panel">
|
|
96
|
+
<PrizmaModalContent
|
|
97
|
+
variant="with-image"
|
|
98
|
+
title={strings.settings.title}
|
|
99
|
+
subtitle={strings.settings.subtitle}
|
|
100
|
+
ariaLabel={strings.settings.dialogLabel}
|
|
101
|
+
image={
|
|
102
|
+
<IconStatusWarning
|
|
103
|
+
size="m"
|
|
104
|
+
className="prizma-title__status-icon prizma-title__status-icon--warning"
|
|
105
|
+
/>
|
|
106
|
+
}
|
|
107
|
+
showCloseIcon={false}
|
|
108
|
+
buttonGroupProps={{
|
|
109
|
+
showPrimary: true,
|
|
110
|
+
showSecondary: false,
|
|
111
|
+
primaryLabel: strings.settings.ctaLabel,
|
|
112
|
+
onPrimaryClick: () => onAction?.({ type: 'cta', screenId }),
|
|
113
|
+
}}
|
|
114
|
+
/>
|
|
115
|
+
</div>
|
|
116
|
+
</>
|
|
117
|
+
}
|
|
118
|
+
{...shell}
|
|
119
|
+
/>
|
|
120
|
+
),
|
|
121
|
+
);
|
|
122
|
+
NfcSettingsScreen.displayName = 'NfcSettingsScreen';
|
|
123
|
+
|
|
124
|
+
export default NfcSettingsScreen;
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
// NFC — every string the module's screens render.
|
|
2
|
+
//
|
|
3
|
+
// Screens are pure presentational components (GUIDELINES.md §9): no English is
|
|
4
|
+
// baked into a screen file, so the whole module is translated by swapping this
|
|
5
|
+
// one object. Mirrors the module's Figma localization columns (🇺🇸 US · 🇪🇸 ES ·
|
|
6
|
+
// 🇵🇹 PT) on `dlEkkopentyypbxlYjDWTZ`, page `19971:96836`.
|
|
7
|
+
|
|
8
|
+
/** Which document's chip is being read. Drives artwork AND copy on every
|
|
9
|
+
* family that has a passport/ID split (symbol · tutorial · tryAgain ·
|
|
10
|
+
* commonIssues). */
|
|
11
|
+
export type NfcDocumentType = 'passport' | 'id';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Which common-issue row this is. The kind — not the copy — picks the row's
|
|
15
|
+
* canonical bank glyph (`NfcCommonIssuesScreen`), so a translated label never
|
|
16
|
+
* changes the icon. `passportTooFar` / `idTooFar` are two kinds rather than one
|
|
17
|
+
* because the bank draws the document itself in the glyph.
|
|
18
|
+
*/
|
|
19
|
+
export type NfcIssueKind =
|
|
20
|
+
| 'passportInCover'
|
|
21
|
+
| 'passportTooFar'
|
|
22
|
+
| 'idTooFar'
|
|
23
|
+
| 'chipOtherPage'
|
|
24
|
+
| 'phoneMoved'
|
|
25
|
+
| 'phoneCover';
|
|
26
|
+
|
|
27
|
+
export interface NfcIssueStrings {
|
|
28
|
+
/** Which glyph leads the row. */
|
|
29
|
+
kind: NfcIssueKind;
|
|
30
|
+
/** The row's single line of copy. */
|
|
31
|
+
label: string;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/** One title + subtitle pair. Used by every family that varies only in copy. */
|
|
35
|
+
export interface NfcHeadingStrings {
|
|
36
|
+
title: string;
|
|
37
|
+
subtitle: string;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export interface NfcStrings {
|
|
41
|
+
/** "verified by" attribution copy for the footer tag. */
|
|
42
|
+
verifiedLabel: string;
|
|
43
|
+
/** Accessible name for the nav region. */
|
|
44
|
+
navLabel: string;
|
|
45
|
+
|
|
46
|
+
/** `nfc.symbol.{passport,id}` — "Is this symbol visible…?" */
|
|
47
|
+
symbol: {
|
|
48
|
+
passport: { title: string };
|
|
49
|
+
id: { title: string };
|
|
50
|
+
/** Filled primary. */
|
|
51
|
+
yesLabel: string;
|
|
52
|
+
/** Outlined secondary. */
|
|
53
|
+
noLabel: string;
|
|
54
|
+
/** Accessible name for the chip-location artwork. */
|
|
55
|
+
illustrationLabel: string;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
/** `nfc.tutorial.{passport,id}` — the pre-scan instruction. */
|
|
59
|
+
tutorial: {
|
|
60
|
+
passport: NfcHeadingStrings;
|
|
61
|
+
id: NfcHeadingStrings;
|
|
62
|
+
ctaLabel: string;
|
|
63
|
+
illustrationLabel: string;
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* `nfc.scanning.*` — the Prizma layer that runs UNDER the platform's own NFC
|
|
68
|
+
* sheet: title block + progress bar. The sheet itself is OS chrome and is not
|
|
69
|
+
* a screen this package can build (see `NfcScanningScreen`).
|
|
70
|
+
*
|
|
71
|
+
* Two entries only. There is no `error` copy here: on the failure frames
|
|
72
|
+
* (`nfc.scanning.scanningerror` · `.androidscanningError`) the words "We
|
|
73
|
+
* couldn't scan the chip" belong to the OS sheet, and the Prizma layer behind
|
|
74
|
+
* it is still the `scanning` one.
|
|
75
|
+
*/
|
|
76
|
+
scanning: {
|
|
77
|
+
scanning: NfcHeadingStrings;
|
|
78
|
+
done: NfcHeadingStrings;
|
|
79
|
+
/** The line under the bar ("Hold still.."). */
|
|
80
|
+
progressLabel: string;
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
/** `nfc.tryagain.*` — retry instructions, one per passport page + the ID. */
|
|
84
|
+
tryAgain: {
|
|
85
|
+
passport: NfcHeadingStrings;
|
|
86
|
+
firstPage: NfcHeadingStrings;
|
|
87
|
+
photoPage: NfcHeadingStrings;
|
|
88
|
+
backPage: NfcHeadingStrings;
|
|
89
|
+
id: NfcHeadingStrings;
|
|
90
|
+
/** Filled primary. */
|
|
91
|
+
ctaLabel: string;
|
|
92
|
+
/** Outlined secondary — opens the common-issues sheet. */
|
|
93
|
+
helpLabel: string;
|
|
94
|
+
illustrationLabel: string;
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
/** `nfc.commonissues.{id,passport}` — the help sheet. */
|
|
98
|
+
commonIssues: {
|
|
99
|
+
title: string;
|
|
100
|
+
ctaLabel: string;
|
|
101
|
+
/** Accessible name for the row list. */
|
|
102
|
+
listLabel: string;
|
|
103
|
+
/** Three rows on the ID sheet, five on the passport one. */
|
|
104
|
+
issues: Record<NfcDocumentType, NfcIssueStrings[]>;
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
/** `nfc.loading.default` — chip read, identity being verified. */
|
|
108
|
+
loading: NfcHeadingStrings;
|
|
109
|
+
|
|
110
|
+
/** `nfc.success.default` — the verdict. No button. */
|
|
111
|
+
success: { title: string };
|
|
112
|
+
|
|
113
|
+
/** `nfc.error.{unable,generalerror}` — the two verdict errors. */
|
|
114
|
+
error: {
|
|
115
|
+
unable: NfcHeadingStrings & { ctaLabel: string };
|
|
116
|
+
general: { title: string; ctaLabel: string };
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
/** `nfc.error.nfcsettings` — the "turn NFC on" dialog. */
|
|
120
|
+
settings: {
|
|
121
|
+
title: string;
|
|
122
|
+
subtitle: string;
|
|
123
|
+
ctaLabel: string;
|
|
124
|
+
/** Accessible name for the dialog. */
|
|
125
|
+
dialogLabel: string;
|
|
126
|
+
};
|
|
127
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
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 NfcSuccessScreenProps
|
|
11
|
+
extends Omit<
|
|
12
|
+
PrizmaProcessingScreenProps,
|
|
13
|
+
'status' | 'title' | 'subtitle' | 'verifiedLabel' | 'navLabel'
|
|
14
|
+
> {
|
|
15
|
+
/** Module copy — this screen reads the `success` slice. */
|
|
16
|
+
strings: NfcStrings;
|
|
17
|
+
screenId?: string;
|
|
18
|
+
overrides?: PrizmaScreenOverrides;
|
|
19
|
+
onAction?: PrizmaScreenActionHandler;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* NFC — "Identity successfully verified", the module's positive verdict.
|
|
24
|
+
* Purple section `nfc.success.default` (19975:109249).
|
|
25
|
+
*
|
|
26
|
+
* Archetype C, not F: the section draws NO button (the flow advances on its
|
|
27
|
+
* own), and §6-F reserves C for exactly the pure no-CTA case — the same split
|
|
28
|
+
* Email Input's success takes while Phone Input's, which does draw a button,
|
|
29
|
+
* sits on F (#EI-4).
|
|
30
|
+
*
|
|
31
|
+
* Figma draws the check as a filled green disc; Core renders the single-colour
|
|
32
|
+
* OUTLINE mark from the icon bank (icon-outline sweep, owner 2026-07-28), so
|
|
33
|
+
* this screen shows the outline — the module Figma is one sweep behind, exactly
|
|
34
|
+
* as recorded for every other module's status marks (#15, #DC-34).
|
|
35
|
+
*/
|
|
36
|
+
export const NfcSuccessScreen = forwardRef<HTMLDivElement, NfcSuccessScreenProps>(
|
|
37
|
+
(
|
|
38
|
+
{ strings, screenId = 'nfc-success', overrides, onAction, ...shell },
|
|
39
|
+
ref,
|
|
40
|
+
) => (
|
|
41
|
+
<PrizmaProcessingScreen
|
|
42
|
+
ref={ref}
|
|
43
|
+
status="success"
|
|
44
|
+
title={strings.success.title}
|
|
45
|
+
verifiedLabel={strings.verifiedLabel}
|
|
46
|
+
navLabel={strings.navLabel}
|
|
47
|
+
screenId={screenId}
|
|
48
|
+
overrides={overrides}
|
|
49
|
+
onAction={onAction}
|
|
50
|
+
{...shell}
|
|
51
|
+
/>
|
|
52
|
+
),
|
|
53
|
+
);
|
|
54
|
+
NfcSuccessScreen.displayName = 'NfcSuccessScreen';
|
|
55
|
+
|
|
56
|
+
export default NfcSuccessScreen;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import React, { forwardRef } from 'react';
|
|
2
|
+
import { PrizmaIllustrationNfcLocation } from '@incodetech/prizma-core-web/illustration-nfc-scan';
|
|
3
|
+
import { PrizmaListScreen, type PrizmaListScreenProps } from './ListScreen';
|
|
4
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
5
|
+
import type { NfcDocumentType, NfcStrings } from './NfcStrings';
|
|
6
|
+
import './ScreenLayout.css';
|
|
7
|
+
|
|
8
|
+
export interface NfcSymbolScreenProps
|
|
9
|
+
extends Omit<
|
|
10
|
+
PrizmaListScreenProps,
|
|
11
|
+
| 'title'
|
|
12
|
+
| 'subtitle'
|
|
13
|
+
| 'children'
|
|
14
|
+
| 'ctaLabel'
|
|
15
|
+
| 'secondaryCtaLabel'
|
|
16
|
+
| 'linkLabel'
|
|
17
|
+
| 'verifiedLabel'
|
|
18
|
+
| 'navLabel'
|
|
19
|
+
> {
|
|
20
|
+
/** Module copy — this screen reads the `symbol` slice. */
|
|
21
|
+
strings: NfcStrings;
|
|
22
|
+
/** Which purple section: `nfc.symbol.passport` or `nfc.symbol.id`. */
|
|
23
|
+
documentType?: NfcDocumentType;
|
|
24
|
+
screenId?: string;
|
|
25
|
+
overrides?: PrizmaScreenOverrides;
|
|
26
|
+
onAction?: PrizmaScreenActionHandler;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* NFC — "Is this symbol visible on your passport cover / on the front or back
|
|
31
|
+
* of your ID?", the gate that decides whether the chip flow can run at all.
|
|
32
|
+
* Purple sections `nfc.symbol.passport` (19974:74431) and `nfc.symbol.id`
|
|
33
|
+
* (19978:116624).
|
|
34
|
+
*
|
|
35
|
+
* Built on the List archetype (GUIDELINES.md §6-G, `PrizmaListScreen`) rather
|
|
36
|
+
* than the Tutorial one, because the frames TOP-align the title at the nav's
|
|
37
|
+
* Spacing/24 and hang the artwork under it — which is exactly what G's middle
|
|
38
|
+
* slot does — while archetype A's `__flex` centres its illustration in the
|
|
39
|
+
* whole middle and would drop the title ~84px. G's slot is a generic middle,
|
|
40
|
+
* not a list-only slot; the class name is the only thing that says otherwise.
|
|
41
|
+
*
|
|
42
|
+
* The artwork is Core's own `PrizmaIllustrationNfcLocation` — the "where is the
|
|
43
|
+
* chip" companion from the same Figma section as the scan animation — so
|
|
44
|
+
* nothing is inlined here (GUIDELINES §10).
|
|
45
|
+
*
|
|
46
|
+
* ONE thing Figma draws that this screen does not: the two answers side by
|
|
47
|
+
* side, "No" left and "Yes" right. Archetype G has no `ctaOrientation` (only F
|
|
48
|
+
* does, #F-33), and a screen never declares its own button layout, so the pair
|
|
49
|
+
* stacks — primary "Yes" above secondary "No", which is the standing order rule
|
|
50
|
+
* (#GEO-1). Reported as an archetype gap rather than worked around.
|
|
51
|
+
*/
|
|
52
|
+
export const NfcSymbolScreen = forwardRef<HTMLDivElement, NfcSymbolScreenProps>(
|
|
53
|
+
(
|
|
54
|
+
{
|
|
55
|
+
strings,
|
|
56
|
+
documentType = 'passport',
|
|
57
|
+
screenId = `nfc-symbol-${documentType}`,
|
|
58
|
+
overrides,
|
|
59
|
+
onAction,
|
|
60
|
+
...shell
|
|
61
|
+
},
|
|
62
|
+
ref,
|
|
63
|
+
) => (
|
|
64
|
+
<PrizmaListScreen
|
|
65
|
+
ref={ref}
|
|
66
|
+
title={strings.symbol[documentType].title}
|
|
67
|
+
ctaLabel={strings.symbol.yesLabel}
|
|
68
|
+
secondaryCtaLabel={strings.symbol.noLabel}
|
|
69
|
+
verifiedLabel={strings.verifiedLabel}
|
|
70
|
+
navLabel={strings.navLabel}
|
|
71
|
+
screenId={screenId}
|
|
72
|
+
overrides={overrides}
|
|
73
|
+
onAction={onAction}
|
|
74
|
+
{...shell}
|
|
75
|
+
>
|
|
76
|
+
<PrizmaIllustrationNfcLocation
|
|
77
|
+
type={documentType}
|
|
78
|
+
ariaLabel={strings.symbol.illustrationLabel}
|
|
79
|
+
/>
|
|
80
|
+
</PrizmaListScreen>
|
|
81
|
+
),
|
|
82
|
+
);
|
|
83
|
+
NfcSymbolScreen.displayName = 'NfcSymbolScreen';
|
|
84
|
+
|
|
85
|
+
export default NfcSymbolScreen;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import React, { forwardRef, type ReactNode } from 'react';
|
|
2
|
+
import { PrizmaIllustrationNfcScan } from '@incodetech/prizma-core-web/illustration-nfc-scan';
|
|
3
|
+
import { PrizmaListScreen, type PrizmaListScreenProps } from './ListScreen';
|
|
4
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
5
|
+
import type { NfcDocumentType, NfcStrings } from './NfcStrings';
|
|
6
|
+
import './ScreenLayout.css';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Which retry instruction to show. The four passport values are the pages a
|
|
10
|
+
* passport read walks through — `nfc.tryagain.passport` (the cover),
|
|
11
|
+
* `.passportfirstpage`, `.passportphotopage`, `.passportbackpage` — and `id` is
|
|
12
|
+
* the single-surface ID section.
|
|
13
|
+
*/
|
|
14
|
+
export type NfcTryAgainStep = 'passport' | 'firstPage' | 'photoPage' | 'backPage' | 'id';
|
|
15
|
+
|
|
16
|
+
/** Which document each step belongs to — picks the artwork. */
|
|
17
|
+
const DOCUMENT_BY_STEP: Record<NfcTryAgainStep, NfcDocumentType> = {
|
|
18
|
+
passport: 'passport',
|
|
19
|
+
firstPage: 'passport',
|
|
20
|
+
photoPage: 'passport',
|
|
21
|
+
backPage: 'passport',
|
|
22
|
+
id: 'id',
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export interface NfcTryAgainScreenProps
|
|
26
|
+
extends Omit<
|
|
27
|
+
PrizmaListScreenProps,
|
|
28
|
+
| 'title'
|
|
29
|
+
| 'subtitle'
|
|
30
|
+
| 'children'
|
|
31
|
+
| 'ctaLabel'
|
|
32
|
+
| 'secondaryCtaLabel'
|
|
33
|
+
| 'linkLabel'
|
|
34
|
+
| 'verifiedLabel'
|
|
35
|
+
| 'navLabel'
|
|
36
|
+
> {
|
|
37
|
+
/** Module copy — this screen reads the `tryAgain` slice. */
|
|
38
|
+
strings: NfcStrings;
|
|
39
|
+
/** Which purple section to render. Default `passport`. */
|
|
40
|
+
step?: NfcTryAgainStep;
|
|
41
|
+
/** Replace Core's NFC artwork. */
|
|
42
|
+
illustration?: ReactNode;
|
|
43
|
+
screenId?: string;
|
|
44
|
+
overrides?: PrizmaScreenOverrides;
|
|
45
|
+
onAction?: PrizmaScreenActionHandler;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* NFC — the retry instructions: "Let's try again" for the cover, then one
|
|
50
|
+
* screen per passport page ("Scan the first page" / "the photo page" / "the
|
|
51
|
+
* back page"), plus the ID's own. Purple sections `nfc.tryagain.*`
|
|
52
|
+
* (22469:40368), five in all.
|
|
53
|
+
*
|
|
54
|
+
* ONE screen for all five: they draw the identical skeleton — title block →
|
|
55
|
+
* document artwork filling the middle → Help + Try again — and differ only in
|
|
56
|
+
* the instruction, so five files would have been five chances to drift. The
|
|
57
|
+
* artwork is Core's `PrizmaIllustrationNfcScan`, frozen (`animated={false}`)
|
|
58
|
+
* because these sections draw the document at rest, not the scan loop.
|
|
59
|
+
*
|
|
60
|
+
* Archetype G (`PrizmaListScreen`) for the same reason as `NfcSymbolScreen`:
|
|
61
|
+
* the frames top-align the title at Spacing/24 under the nav and hang the
|
|
62
|
+
* artwork below it.
|
|
63
|
+
*
|
|
64
|
+
* TWO things Figma draws that this screen does not, both reported rather than
|
|
65
|
+
* worked around:
|
|
66
|
+
* - **The page-position dots.** Every passport section carries a 52 × 7 row of
|
|
67
|
+
* four dots under the artwork, marking which page is being read. Core ships
|
|
68
|
+
* no pagination/dots primitive — `PrizmaStepper` is a journey stepper with
|
|
69
|
+
* labelled segments and icons, a different thing — and GUIDELINES §10 forbids
|
|
70
|
+
* inventing one. The step is still legible: each section's title names the
|
|
71
|
+
* page. **Core request: a dots/page-indicator primitive.**
|
|
72
|
+
* - **Help | Try again side by side.** Archetype G has no `ctaOrientation`
|
|
73
|
+
* (only F does, #F-33), so the pair stacks: primary "Try again" above
|
|
74
|
+
* secondary "Help", per the standing order rule (#GEO-1).
|
|
75
|
+
*/
|
|
76
|
+
export const NfcTryAgainScreen = forwardRef<HTMLDivElement, NfcTryAgainScreenProps>(
|
|
77
|
+
(
|
|
78
|
+
{
|
|
79
|
+
strings,
|
|
80
|
+
step = 'passport',
|
|
81
|
+
illustration,
|
|
82
|
+
screenId = `nfc-try-again-${step}`,
|
|
83
|
+
overrides,
|
|
84
|
+
onAction,
|
|
85
|
+
...shell
|
|
86
|
+
},
|
|
87
|
+
ref,
|
|
88
|
+
) => (
|
|
89
|
+
<PrizmaListScreen
|
|
90
|
+
ref={ref}
|
|
91
|
+
title={strings.tryAgain[step].title}
|
|
92
|
+
subtitle={strings.tryAgain[step].subtitle}
|
|
93
|
+
ctaLabel={strings.tryAgain.ctaLabel}
|
|
94
|
+
secondaryCtaLabel={strings.tryAgain.helpLabel}
|
|
95
|
+
verifiedLabel={strings.verifiedLabel}
|
|
96
|
+
navLabel={strings.navLabel}
|
|
97
|
+
screenId={screenId}
|
|
98
|
+
overrides={overrides}
|
|
99
|
+
onAction={onAction}
|
|
100
|
+
{...shell}
|
|
101
|
+
>
|
|
102
|
+
{illustration ?? (
|
|
103
|
+
<PrizmaIllustrationNfcScan
|
|
104
|
+
type={DOCUMENT_BY_STEP[step]}
|
|
105
|
+
animated={false}
|
|
106
|
+
ariaLabel={strings.tryAgain.illustrationLabel}
|
|
107
|
+
/>
|
|
108
|
+
)}
|
|
109
|
+
</PrizmaListScreen>
|
|
110
|
+
),
|
|
111
|
+
);
|
|
112
|
+
NfcTryAgainScreen.displayName = 'NfcTryAgainScreen';
|
|
113
|
+
|
|
114
|
+
export default NfcTryAgainScreen;
|