@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,112 @@
|
|
|
1
|
+
/** Which document's chip is being read. Drives artwork AND copy on every
|
|
2
|
+
* family that has a passport/ID split (symbol · tutorial · tryAgain ·
|
|
3
|
+
* commonIssues). */
|
|
4
|
+
export type NfcDocumentType = 'passport' | 'id';
|
|
5
|
+
/**
|
|
6
|
+
* Which common-issue row this is. The kind — not the copy — picks the row's
|
|
7
|
+
* canonical bank glyph (`NfcCommonIssuesScreen`), so a translated label never
|
|
8
|
+
* changes the icon. `passportTooFar` / `idTooFar` are two kinds rather than one
|
|
9
|
+
* because the bank draws the document itself in the glyph.
|
|
10
|
+
*/
|
|
11
|
+
export type NfcIssueKind = 'passportInCover' | 'passportTooFar' | 'idTooFar' | 'chipOtherPage' | 'phoneMoved' | 'phoneCover';
|
|
12
|
+
export interface NfcIssueStrings {
|
|
13
|
+
/** Which glyph leads the row. */
|
|
14
|
+
kind: NfcIssueKind;
|
|
15
|
+
/** The row's single line of copy. */
|
|
16
|
+
label: string;
|
|
17
|
+
}
|
|
18
|
+
/** One title + subtitle pair. Used by every family that varies only in copy. */
|
|
19
|
+
export interface NfcHeadingStrings {
|
|
20
|
+
title: string;
|
|
21
|
+
subtitle: string;
|
|
22
|
+
}
|
|
23
|
+
export interface NfcStrings {
|
|
24
|
+
/** "verified by" attribution copy for the footer tag. */
|
|
25
|
+
verifiedLabel: string;
|
|
26
|
+
/** Accessible name for the nav region. */
|
|
27
|
+
navLabel: string;
|
|
28
|
+
/** `nfc.symbol.{passport,id}` — "Is this symbol visible…?" */
|
|
29
|
+
symbol: {
|
|
30
|
+
passport: {
|
|
31
|
+
title: string;
|
|
32
|
+
};
|
|
33
|
+
id: {
|
|
34
|
+
title: string;
|
|
35
|
+
};
|
|
36
|
+
/** Filled primary. */
|
|
37
|
+
yesLabel: string;
|
|
38
|
+
/** Outlined secondary. */
|
|
39
|
+
noLabel: string;
|
|
40
|
+
/** Accessible name for the chip-location artwork. */
|
|
41
|
+
illustrationLabel: string;
|
|
42
|
+
};
|
|
43
|
+
/** `nfc.tutorial.{passport,id}` — the pre-scan instruction. */
|
|
44
|
+
tutorial: {
|
|
45
|
+
passport: NfcHeadingStrings;
|
|
46
|
+
id: NfcHeadingStrings;
|
|
47
|
+
ctaLabel: string;
|
|
48
|
+
illustrationLabel: string;
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* `nfc.scanning.*` — the Prizma layer that runs UNDER the platform's own NFC
|
|
52
|
+
* sheet: title block + progress bar. The sheet itself is OS chrome and is not
|
|
53
|
+
* a screen this package can build (see `NfcScanningScreen`).
|
|
54
|
+
*
|
|
55
|
+
* Two entries only. There is no `error` copy here: on the failure frames
|
|
56
|
+
* (`nfc.scanning.scanningerror` · `.androidscanningError`) the words "We
|
|
57
|
+
* couldn't scan the chip" belong to the OS sheet, and the Prizma layer behind
|
|
58
|
+
* it is still the `scanning` one.
|
|
59
|
+
*/
|
|
60
|
+
scanning: {
|
|
61
|
+
scanning: NfcHeadingStrings;
|
|
62
|
+
done: NfcHeadingStrings;
|
|
63
|
+
/** The line under the bar ("Hold still.."). */
|
|
64
|
+
progressLabel: string;
|
|
65
|
+
};
|
|
66
|
+
/** `nfc.tryagain.*` — retry instructions, one per passport page + the ID. */
|
|
67
|
+
tryAgain: {
|
|
68
|
+
passport: NfcHeadingStrings;
|
|
69
|
+
firstPage: NfcHeadingStrings;
|
|
70
|
+
photoPage: NfcHeadingStrings;
|
|
71
|
+
backPage: NfcHeadingStrings;
|
|
72
|
+
id: NfcHeadingStrings;
|
|
73
|
+
/** Filled primary. */
|
|
74
|
+
ctaLabel: string;
|
|
75
|
+
/** Outlined secondary — opens the common-issues sheet. */
|
|
76
|
+
helpLabel: string;
|
|
77
|
+
illustrationLabel: string;
|
|
78
|
+
};
|
|
79
|
+
/** `nfc.commonissues.{id,passport}` — the help sheet. */
|
|
80
|
+
commonIssues: {
|
|
81
|
+
title: string;
|
|
82
|
+
ctaLabel: string;
|
|
83
|
+
/** Accessible name for the row list. */
|
|
84
|
+
listLabel: string;
|
|
85
|
+
/** Three rows on the ID sheet, five on the passport one. */
|
|
86
|
+
issues: Record<NfcDocumentType, NfcIssueStrings[]>;
|
|
87
|
+
};
|
|
88
|
+
/** `nfc.loading.default` — chip read, identity being verified. */
|
|
89
|
+
loading: NfcHeadingStrings;
|
|
90
|
+
/** `nfc.success.default` — the verdict. No button. */
|
|
91
|
+
success: {
|
|
92
|
+
title: string;
|
|
93
|
+
};
|
|
94
|
+
/** `nfc.error.{unable,generalerror}` — the two verdict errors. */
|
|
95
|
+
error: {
|
|
96
|
+
unable: NfcHeadingStrings & {
|
|
97
|
+
ctaLabel: string;
|
|
98
|
+
};
|
|
99
|
+
general: {
|
|
100
|
+
title: string;
|
|
101
|
+
ctaLabel: string;
|
|
102
|
+
};
|
|
103
|
+
};
|
|
104
|
+
/** `nfc.error.nfcsettings` — the "turn NFC on" dialog. */
|
|
105
|
+
settings: {
|
|
106
|
+
title: string;
|
|
107
|
+
subtitle: string;
|
|
108
|
+
ctaLabel: string;
|
|
109
|
+
/** Accessible name for the dialog. */
|
|
110
|
+
dialogLabel: string;
|
|
111
|
+
};
|
|
112
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
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
|
+
export {};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type PrizmaProcessingScreenProps } from './ProcessingScreen';
|
|
3
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
4
|
+
import type { NfcStrings } from './NfcStrings';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
export interface NfcSuccessScreenProps extends Omit<PrizmaProcessingScreenProps, 'status' | 'title' | 'subtitle' | 'verifiedLabel' | 'navLabel'> {
|
|
7
|
+
/** Module copy — this screen reads the `success` slice. */
|
|
8
|
+
strings: NfcStrings;
|
|
9
|
+
screenId?: string;
|
|
10
|
+
overrides?: PrizmaScreenOverrides;
|
|
11
|
+
onAction?: PrizmaScreenActionHandler;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* NFC — "Identity successfully verified", the module's positive verdict.
|
|
15
|
+
* Purple section `nfc.success.default` (19975:109249).
|
|
16
|
+
*
|
|
17
|
+
* Archetype C, not F: the section draws NO button (the flow advances on its
|
|
18
|
+
* own), and §6-F reserves C for exactly the pure no-CTA case — the same split
|
|
19
|
+
* Email Input's success takes while Phone Input's, which does draw a button,
|
|
20
|
+
* sits on F (#EI-4).
|
|
21
|
+
*
|
|
22
|
+
* Figma draws the check as a filled green disc; Core renders the single-colour
|
|
23
|
+
* OUTLINE mark from the icon bank (icon-outline sweep, owner 2026-07-28), so
|
|
24
|
+
* this screen shows the outline — the module Figma is one sweep behind, exactly
|
|
25
|
+
* as recorded for every other module's status marks (#15, #DC-34).
|
|
26
|
+
*/
|
|
27
|
+
export declare const NfcSuccessScreen: React.ForwardRefExoticComponent<NfcSuccessScreenProps & React.RefAttributes<HTMLDivElement>>;
|
|
28
|
+
export default NfcSuccessScreen;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { PrizmaProcessingScreen, } from './ProcessingScreen';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
/**
|
|
7
|
+
* NFC — "Identity successfully verified", the module's positive verdict.
|
|
8
|
+
* Purple section `nfc.success.default` (19975:109249).
|
|
9
|
+
*
|
|
10
|
+
* Archetype C, not F: the section draws NO button (the flow advances on its
|
|
11
|
+
* own), and §6-F reserves C for exactly the pure no-CTA case — the same split
|
|
12
|
+
* Email Input's success takes while Phone Input's, which does draw a button,
|
|
13
|
+
* sits on F (#EI-4).
|
|
14
|
+
*
|
|
15
|
+
* Figma draws the check as a filled green disc; Core renders the single-colour
|
|
16
|
+
* OUTLINE mark from the icon bank (icon-outline sweep, owner 2026-07-28), so
|
|
17
|
+
* this screen shows the outline — the module Figma is one sweep behind, exactly
|
|
18
|
+
* as recorded for every other module's status marks (#15, #DC-34).
|
|
19
|
+
*/
|
|
20
|
+
export const NfcSuccessScreen = forwardRef(({ strings, screenId = 'nfc-success', overrides, onAction, ...shell }, ref) => (_jsx(PrizmaProcessingScreen, { ref: ref, status: "success", title: strings.success.title, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell })));
|
|
21
|
+
NfcSuccessScreen.displayName = 'NfcSuccessScreen';
|
|
22
|
+
export default NfcSuccessScreen;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type PrizmaListScreenProps } from './ListScreen';
|
|
3
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
4
|
+
import type { NfcDocumentType, NfcStrings } from './NfcStrings';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
export interface NfcSymbolScreenProps extends Omit<PrizmaListScreenProps, 'title' | 'subtitle' | 'children' | 'ctaLabel' | 'secondaryCtaLabel' | 'linkLabel' | 'verifiedLabel' | 'navLabel'> {
|
|
7
|
+
/** Module copy — this screen reads the `symbol` slice. */
|
|
8
|
+
strings: NfcStrings;
|
|
9
|
+
/** Which purple section: `nfc.symbol.passport` or `nfc.symbol.id`. */
|
|
10
|
+
documentType?: NfcDocumentType;
|
|
11
|
+
screenId?: string;
|
|
12
|
+
overrides?: PrizmaScreenOverrides;
|
|
13
|
+
onAction?: PrizmaScreenActionHandler;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* NFC — "Is this symbol visible on your passport cover / on the front or back
|
|
17
|
+
* of your ID?", the gate that decides whether the chip flow can run at all.
|
|
18
|
+
* Purple sections `nfc.symbol.passport` (19974:74431) and `nfc.symbol.id`
|
|
19
|
+
* (19978:116624).
|
|
20
|
+
*
|
|
21
|
+
* Built on the List archetype (GUIDELINES.md §6-G, `PrizmaListScreen`) rather
|
|
22
|
+
* than the Tutorial one, because the frames TOP-align the title at the nav's
|
|
23
|
+
* Spacing/24 and hang the artwork under it — which is exactly what G's middle
|
|
24
|
+
* slot does — while archetype A's `__flex` centres its illustration in the
|
|
25
|
+
* whole middle and would drop the title ~84px. G's slot is a generic middle,
|
|
26
|
+
* not a list-only slot; the class name is the only thing that says otherwise.
|
|
27
|
+
*
|
|
28
|
+
* The artwork is Core's own `PrizmaIllustrationNfcLocation` — the "where is the
|
|
29
|
+
* chip" companion from the same Figma section as the scan animation — so
|
|
30
|
+
* nothing is inlined here (GUIDELINES §10).
|
|
31
|
+
*
|
|
32
|
+
* ONE thing Figma draws that this screen does not: the two answers side by
|
|
33
|
+
* side, "No" left and "Yes" right. Archetype G has no `ctaOrientation` (only F
|
|
34
|
+
* does, #F-33), and a screen never declares its own button layout, so the pair
|
|
35
|
+
* stacks — primary "Yes" above secondary "No", which is the standing order rule
|
|
36
|
+
* (#GEO-1). Reported as an archetype gap rather than worked around.
|
|
37
|
+
*/
|
|
38
|
+
export declare const NfcSymbolScreen: React.ForwardRefExoticComponent<NfcSymbolScreenProps & React.RefAttributes<HTMLDivElement>>;
|
|
39
|
+
export default NfcSymbolScreen;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { PrizmaIllustrationNfcLocation } from '@incodetech/prizma-core-web/illustration-nfc-scan';
|
|
5
|
+
import { PrizmaListScreen } from './ListScreen';
|
|
6
|
+
import './ScreenLayout.css';
|
|
7
|
+
/**
|
|
8
|
+
* NFC — "Is this symbol visible on your passport cover / on the front or back
|
|
9
|
+
* of your ID?", the gate that decides whether the chip flow can run at all.
|
|
10
|
+
* Purple sections `nfc.symbol.passport` (19974:74431) and `nfc.symbol.id`
|
|
11
|
+
* (19978:116624).
|
|
12
|
+
*
|
|
13
|
+
* Built on the List archetype (GUIDELINES.md §6-G, `PrizmaListScreen`) rather
|
|
14
|
+
* than the Tutorial one, because the frames TOP-align the title at the nav's
|
|
15
|
+
* Spacing/24 and hang the artwork under it — which is exactly what G's middle
|
|
16
|
+
* slot does — while archetype A's `__flex` centres its illustration in the
|
|
17
|
+
* whole middle and would drop the title ~84px. G's slot is a generic middle,
|
|
18
|
+
* not a list-only slot; the class name is the only thing that says otherwise.
|
|
19
|
+
*
|
|
20
|
+
* The artwork is Core's own `PrizmaIllustrationNfcLocation` — the "where is the
|
|
21
|
+
* chip" companion from the same Figma section as the scan animation — so
|
|
22
|
+
* nothing is inlined here (GUIDELINES §10).
|
|
23
|
+
*
|
|
24
|
+
* ONE thing Figma draws that this screen does not: the two answers side by
|
|
25
|
+
* side, "No" left and "Yes" right. Archetype G has no `ctaOrientation` (only F
|
|
26
|
+
* does, #F-33), and a screen never declares its own button layout, so the pair
|
|
27
|
+
* stacks — primary "Yes" above secondary "No", which is the standing order rule
|
|
28
|
+
* (#GEO-1). Reported as an archetype gap rather than worked around.
|
|
29
|
+
*/
|
|
30
|
+
export const NfcSymbolScreen = forwardRef(({ strings, documentType = 'passport', screenId = `nfc-symbol-${documentType}`, overrides, onAction, ...shell }, ref) => (_jsx(PrizmaListScreen, { ref: ref, title: strings.symbol[documentType].title, ctaLabel: strings.symbol.yesLabel, secondaryCtaLabel: strings.symbol.noLabel, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell, children: _jsx(PrizmaIllustrationNfcLocation, { type: documentType, ariaLabel: strings.symbol.illustrationLabel }) })));
|
|
31
|
+
NfcSymbolScreen.displayName = 'NfcSymbolScreen';
|
|
32
|
+
export default NfcSymbolScreen;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import React, { type ReactNode } from 'react';
|
|
2
|
+
import { type PrizmaListScreenProps } from './ListScreen';
|
|
3
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
4
|
+
import type { NfcStrings } from './NfcStrings';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
/**
|
|
7
|
+
* Which retry instruction to show. The four passport values are the pages a
|
|
8
|
+
* passport read walks through — `nfc.tryagain.passport` (the cover),
|
|
9
|
+
* `.passportfirstpage`, `.passportphotopage`, `.passportbackpage` — and `id` is
|
|
10
|
+
* the single-surface ID section.
|
|
11
|
+
*/
|
|
12
|
+
export type NfcTryAgainStep = 'passport' | 'firstPage' | 'photoPage' | 'backPage' | 'id';
|
|
13
|
+
export interface NfcTryAgainScreenProps extends Omit<PrizmaListScreenProps, 'title' | 'subtitle' | 'children' | 'ctaLabel' | 'secondaryCtaLabel' | 'linkLabel' | 'verifiedLabel' | 'navLabel'> {
|
|
14
|
+
/** Module copy — this screen reads the `tryAgain` slice. */
|
|
15
|
+
strings: NfcStrings;
|
|
16
|
+
/** Which purple section to render. Default `passport`. */
|
|
17
|
+
step?: NfcTryAgainStep;
|
|
18
|
+
/** Replace Core's NFC artwork. */
|
|
19
|
+
illustration?: ReactNode;
|
|
20
|
+
screenId?: string;
|
|
21
|
+
overrides?: PrizmaScreenOverrides;
|
|
22
|
+
onAction?: PrizmaScreenActionHandler;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* NFC — the retry instructions: "Let's try again" for the cover, then one
|
|
26
|
+
* screen per passport page ("Scan the first page" / "the photo page" / "the
|
|
27
|
+
* back page"), plus the ID's own. Purple sections `nfc.tryagain.*`
|
|
28
|
+
* (22469:40368), five in all.
|
|
29
|
+
*
|
|
30
|
+
* ONE screen for all five: they draw the identical skeleton — title block →
|
|
31
|
+
* document artwork filling the middle → Help + Try again — and differ only in
|
|
32
|
+
* the instruction, so five files would have been five chances to drift. The
|
|
33
|
+
* artwork is Core's `PrizmaIllustrationNfcScan`, frozen (`animated={false}`)
|
|
34
|
+
* because these sections draw the document at rest, not the scan loop.
|
|
35
|
+
*
|
|
36
|
+
* Archetype G (`PrizmaListScreen`) for the same reason as `NfcSymbolScreen`:
|
|
37
|
+
* the frames top-align the title at Spacing/24 under the nav and hang the
|
|
38
|
+
* artwork below it.
|
|
39
|
+
*
|
|
40
|
+
* TWO things Figma draws that this screen does not, both reported rather than
|
|
41
|
+
* worked around:
|
|
42
|
+
* - **The page-position dots.** Every passport section carries a 52 × 7 row of
|
|
43
|
+
* four dots under the artwork, marking which page is being read. Core ships
|
|
44
|
+
* no pagination/dots primitive — `PrizmaStepper` is a journey stepper with
|
|
45
|
+
* labelled segments and icons, a different thing — and GUIDELINES §10 forbids
|
|
46
|
+
* inventing one. The step is still legible: each section's title names the
|
|
47
|
+
* page. **Core request: a dots/page-indicator primitive.**
|
|
48
|
+
* - **Help | Try again side by side.** Archetype G has no `ctaOrientation`
|
|
49
|
+
* (only F does, #F-33), so the pair stacks: primary "Try again" above
|
|
50
|
+
* secondary "Help", per the standing order rule (#GEO-1).
|
|
51
|
+
*/
|
|
52
|
+
export declare const NfcTryAgainScreen: React.ForwardRefExoticComponent<NfcTryAgainScreenProps & React.RefAttributes<HTMLDivElement>>;
|
|
53
|
+
export default NfcTryAgainScreen;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { PrizmaIllustrationNfcScan } from '@incodetech/prizma-core-web/illustration-nfc-scan';
|
|
5
|
+
import { PrizmaListScreen } from './ListScreen';
|
|
6
|
+
import './ScreenLayout.css';
|
|
7
|
+
/** Which document each step belongs to — picks the artwork. */
|
|
8
|
+
const DOCUMENT_BY_STEP = {
|
|
9
|
+
passport: 'passport',
|
|
10
|
+
firstPage: 'passport',
|
|
11
|
+
photoPage: 'passport',
|
|
12
|
+
backPage: 'passport',
|
|
13
|
+
id: 'id',
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* NFC — the retry instructions: "Let's try again" for the cover, then one
|
|
17
|
+
* screen per passport page ("Scan the first page" / "the photo page" / "the
|
|
18
|
+
* back page"), plus the ID's own. Purple sections `nfc.tryagain.*`
|
|
19
|
+
* (22469:40368), five in all.
|
|
20
|
+
*
|
|
21
|
+
* ONE screen for all five: they draw the identical skeleton — title block →
|
|
22
|
+
* document artwork filling the middle → Help + Try again — and differ only in
|
|
23
|
+
* the instruction, so five files would have been five chances to drift. The
|
|
24
|
+
* artwork is Core's `PrizmaIllustrationNfcScan`, frozen (`animated={false}`)
|
|
25
|
+
* because these sections draw the document at rest, not the scan loop.
|
|
26
|
+
*
|
|
27
|
+
* Archetype G (`PrizmaListScreen`) for the same reason as `NfcSymbolScreen`:
|
|
28
|
+
* the frames top-align the title at Spacing/24 under the nav and hang the
|
|
29
|
+
* artwork below it.
|
|
30
|
+
*
|
|
31
|
+
* TWO things Figma draws that this screen does not, both reported rather than
|
|
32
|
+
* worked around:
|
|
33
|
+
* - **The page-position dots.** Every passport section carries a 52 × 7 row of
|
|
34
|
+
* four dots under the artwork, marking which page is being read. Core ships
|
|
35
|
+
* no pagination/dots primitive — `PrizmaStepper` is a journey stepper with
|
|
36
|
+
* labelled segments and icons, a different thing — and GUIDELINES §10 forbids
|
|
37
|
+
* inventing one. The step is still legible: each section's title names the
|
|
38
|
+
* page. **Core request: a dots/page-indicator primitive.**
|
|
39
|
+
* - **Help | Try again side by side.** Archetype G has no `ctaOrientation`
|
|
40
|
+
* (only F does, #F-33), so the pair stacks: primary "Try again" above
|
|
41
|
+
* secondary "Help", per the standing order rule (#GEO-1).
|
|
42
|
+
*/
|
|
43
|
+
export const NfcTryAgainScreen = forwardRef(({ strings, step = 'passport', illustration, screenId = `nfc-try-again-${step}`, overrides, onAction, ...shell }, ref) => (_jsx(PrizmaListScreen, { ref: ref, title: strings.tryAgain[step].title, subtitle: strings.tryAgain[step].subtitle, ctaLabel: strings.tryAgain.ctaLabel, secondaryCtaLabel: strings.tryAgain.helpLabel, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell, children: illustration ?? (_jsx(PrizmaIllustrationNfcScan, { type: DOCUMENT_BY_STEP[step], animated: false, ariaLabel: strings.tryAgain.illustrationLabel })) })));
|
|
44
|
+
NfcTryAgainScreen.displayName = 'NfcTryAgainScreen';
|
|
45
|
+
export default NfcTryAgainScreen;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import React, { type ReactNode } from 'react';
|
|
2
|
+
import { type PrizmaTutorialScreenProps } from './TutorialScreen';
|
|
3
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
4
|
+
import type { NfcDocumentType, NfcStrings } from './NfcStrings';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
export interface NfcTutorialScreenProps extends Omit<PrizmaTutorialScreenProps, 'title' | 'subtitle' | 'ctaLabel' | 'illustration' | 'verifiedLabel' | 'navLabel'> {
|
|
7
|
+
/** Module copy — this screen reads the `tutorial` slice. */
|
|
8
|
+
strings: NfcStrings;
|
|
9
|
+
/** Which purple section: `nfc.tutorial.passport` or `nfc.tutorial.id`. */
|
|
10
|
+
documentType?: NfcDocumentType;
|
|
11
|
+
/** Replace Core's NFC artwork (hosts that ship their own document art). */
|
|
12
|
+
illustration?: ReactNode;
|
|
13
|
+
screenId?: string;
|
|
14
|
+
overrides?: PrizmaScreenOverrides;
|
|
15
|
+
onAction?: PrizmaScreenActionHandler;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* NFC — "Let's scan your passport chip" / "Read the chip on the ID", the
|
|
19
|
+
* instruction screen the CTA starts the read from. Purple sections
|
|
20
|
+
* `nfc.tutorial.passport` (19974:80984) and `nfc.tutorial.id` (19978:115144),
|
|
21
|
+
* on the Tutorial archetype (GUIDELINES.md §6-A).
|
|
22
|
+
*
|
|
23
|
+
* The centrepiece is Core's `PrizmaIllustrationNfcScan` — the looping
|
|
24
|
+
* phone-approaches-the-chip composition whose Figma frames ARE the two
|
|
25
|
+
* `iOS Animation` / `Android Animation` layers these sections draw. The screen
|
|
26
|
+
* supplies no artwork of its own.
|
|
27
|
+
*
|
|
28
|
+
* This is also what the four `nfc.scanning.*ready` sections show: they are this
|
|
29
|
+
* exact screen with the platform's NFC sheet presented over it, so they need no
|
|
30
|
+
* screen of their own (see `NfcScanningScreen`).
|
|
31
|
+
*/
|
|
32
|
+
export declare const NfcTutorialScreen: React.ForwardRefExoticComponent<NfcTutorialScreenProps & React.RefAttributes<HTMLDivElement>>;
|
|
33
|
+
export default NfcTutorialScreen;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { PrizmaIllustrationNfcScan } from '@incodetech/prizma-core-web/illustration-nfc-scan';
|
|
5
|
+
import { PrizmaTutorialScreen } from './TutorialScreen';
|
|
6
|
+
import './ScreenLayout.css';
|
|
7
|
+
/**
|
|
8
|
+
* NFC — "Let's scan your passport chip" / "Read the chip on the ID", the
|
|
9
|
+
* instruction screen the CTA starts the read from. Purple sections
|
|
10
|
+
* `nfc.tutorial.passport` (19974:80984) and `nfc.tutorial.id` (19978:115144),
|
|
11
|
+
* on the Tutorial archetype (GUIDELINES.md §6-A).
|
|
12
|
+
*
|
|
13
|
+
* The centrepiece is Core's `PrizmaIllustrationNfcScan` — the looping
|
|
14
|
+
* phone-approaches-the-chip composition whose Figma frames ARE the two
|
|
15
|
+
* `iOS Animation` / `Android Animation` layers these sections draw. The screen
|
|
16
|
+
* supplies no artwork of its own.
|
|
17
|
+
*
|
|
18
|
+
* This is also what the four `nfc.scanning.*ready` sections show: they are this
|
|
19
|
+
* exact screen with the platform's NFC sheet presented over it, so they need no
|
|
20
|
+
* screen of their own (see `NfcScanningScreen`).
|
|
21
|
+
*/
|
|
22
|
+
export const NfcTutorialScreen = forwardRef(({ strings, documentType = 'passport', illustration, screenId = `nfc-tutorial-${documentType}`, overrides, onAction, ...shell }, ref) => (_jsx(PrizmaTutorialScreen, { ref: ref, title: strings.tutorial[documentType].title, subtitle: strings.tutorial[documentType].subtitle, ctaLabel: strings.tutorial.ctaLabel, illustration: illustration ?? (_jsx(PrizmaIllustrationNfcScan, { type: documentType, ariaLabel: strings.tutorial.illustrationLabel })), verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell })));
|
|
23
|
+
NfcTutorialScreen.displayName = 'NfcTutorialScreen';
|
|
24
|
+
export default NfcTutorialScreen;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type PrizmaResultScreenProps } from './ResultScreen';
|
|
3
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
4
|
+
import type { PermissionsStrings } from './PermissionsStrings';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
export interface PermissionsAllowScreenProps extends Omit<PrizmaResultScreenProps, 'status' | 'title' | 'subtitle' | 'glyph' | 'ctaLabel' | 'linkLabel' | 'verifiedLabel' | 'navLabel'> {
|
|
7
|
+
/** Family copy — this screen reads the `allow` slice. */
|
|
8
|
+
strings: PermissionsStrings;
|
|
9
|
+
screenId?: string;
|
|
10
|
+
overrides?: PrizmaScreenOverrides;
|
|
11
|
+
onAction?: PrizmaScreenActionHandler;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Permissions — "Allow Incode to access your camera", built on the Result
|
|
15
|
+
* archetype (GUIDELINES.md §6-F, `PrizmaResultScreen`).
|
|
16
|
+
*
|
|
17
|
+
* Figma: `1-3-2-id-allow-camera` of the `Permissions` section
|
|
18
|
+
* (qGJjfL4O0JSjz1x4tOjJn8, 3:1193). The sibling of
|
|
19
|
+
* `PermissionsRequiredScreen`, and the reason they are two screens rather than
|
|
20
|
+
* one with a variant: this frame states the ask in a centred title + supporting
|
|
21
|
+
* line, that one argues it with a list of reasons hung under the title. Result
|
|
22
|
+
* centres its column, List hangs it from the top — different archetypes, so
|
|
23
|
+
* different screens.
|
|
24
|
+
*
|
|
25
|
+
* `1-3-2-id-allow-camera-quit-process` is the SAME screen with an iOS confirm
|
|
26
|
+
* alert layered over it — an OS surface, not a second Prizma screen (see
|
|
27
|
+
* `PermissionsStrings.ts`).
|
|
28
|
+
*
|
|
29
|
+
* `showHeader={false}` keeps the section's logo-free chrome (the flow has not
|
|
30
|
+
* started) with the nav row still reserved.
|
|
31
|
+
*
|
|
32
|
+
* TWO things Figma draws that this screen does not, both reported rather than
|
|
33
|
+
* worked around:
|
|
34
|
+
* - **The filled amber disc.** Core renders the canonical OUTLINE warning mark
|
|
35
|
+
* (icon-outline sweep, DEVIATIONS #15).
|
|
36
|
+
* - **"Quit process" above the CTA.** Archetype F renders its tertiary link
|
|
37
|
+
* BELOW the button stack (`ResultScreen.tsx`), so this screen ships inverted
|
|
38
|
+
* against its frame. The archetype owns the order and no screen re-declares
|
|
39
|
+
* it — F needs a `ctaOrder` slot alongside the `ctaOrientation` it already
|
|
40
|
+
* has, exactly as Geolocation escalated for the same reason. Borrowing
|
|
41
|
+
* `bandContent` to fake the position is the workaround #VS-17 rejected.
|
|
42
|
+
*/
|
|
43
|
+
export declare const PermissionsAllowScreen: React.ForwardRefExoticComponent<PermissionsAllowScreenProps & React.RefAttributes<HTMLDivElement>>;
|
|
44
|
+
export default PermissionsAllowScreen;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { PrizmaResultScreen } from './ResultScreen';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
/**
|
|
7
|
+
* Permissions — "Allow Incode to access your camera", built on the Result
|
|
8
|
+
* archetype (GUIDELINES.md §6-F, `PrizmaResultScreen`).
|
|
9
|
+
*
|
|
10
|
+
* Figma: `1-3-2-id-allow-camera` of the `Permissions` section
|
|
11
|
+
* (qGJjfL4O0JSjz1x4tOjJn8, 3:1193). The sibling of
|
|
12
|
+
* `PermissionsRequiredScreen`, and the reason they are two screens rather than
|
|
13
|
+
* one with a variant: this frame states the ask in a centred title + supporting
|
|
14
|
+
* line, that one argues it with a list of reasons hung under the title. Result
|
|
15
|
+
* centres its column, List hangs it from the top — different archetypes, so
|
|
16
|
+
* different screens.
|
|
17
|
+
*
|
|
18
|
+
* `1-3-2-id-allow-camera-quit-process` is the SAME screen with an iOS confirm
|
|
19
|
+
* alert layered over it — an OS surface, not a second Prizma screen (see
|
|
20
|
+
* `PermissionsStrings.ts`).
|
|
21
|
+
*
|
|
22
|
+
* `showHeader={false}` keeps the section's logo-free chrome (the flow has not
|
|
23
|
+
* started) with the nav row still reserved.
|
|
24
|
+
*
|
|
25
|
+
* TWO things Figma draws that this screen does not, both reported rather than
|
|
26
|
+
* worked around:
|
|
27
|
+
* - **The filled amber disc.** Core renders the canonical OUTLINE warning mark
|
|
28
|
+
* (icon-outline sweep, DEVIATIONS #15).
|
|
29
|
+
* - **"Quit process" above the CTA.** Archetype F renders its tertiary link
|
|
30
|
+
* BELOW the button stack (`ResultScreen.tsx`), so this screen ships inverted
|
|
31
|
+
* against its frame. The archetype owns the order and no screen re-declares
|
|
32
|
+
* it — F needs a `ctaOrder` slot alongside the `ctaOrientation` it already
|
|
33
|
+
* has, exactly as Geolocation escalated for the same reason. Borrowing
|
|
34
|
+
* `bandContent` to fake the position is the workaround #VS-17 rejected.
|
|
35
|
+
*/
|
|
36
|
+
export const PermissionsAllowScreen = forwardRef(({ strings, screenId = 'permissions-allow', showHeader = false, overrides, onAction, ...shell }, ref) => (_jsx(PrizmaResultScreen, { ref: ref, showHeader: showHeader, status: "warning", title: strings.allow.title, subtitle: strings.allow.subtitle, ctaLabel: strings.allow.ctaLabel, linkLabel: strings.allow.quitLabel, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell })));
|
|
37
|
+
PermissionsAllowScreen.displayName = 'PermissionsAllowScreen';
|
|
38
|
+
export default PermissionsAllowScreen;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type PrizmaListScreenProps } from './ListScreen';
|
|
3
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
4
|
+
import type { PermissionsBrowser, PermissionsStrings } from './PermissionsStrings';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
export interface PermissionsBrowserStepsScreenProps extends Omit<PrizmaListScreenProps, 'status' | 'title' | 'subtitle' | 'children' | 'ctaLabel' | 'linkLabel' | 'verifiedLabel' | 'navLabel'> {
|
|
7
|
+
/** Family copy — this screen reads the `browserSteps` slice. */
|
|
8
|
+
strings: PermissionsStrings;
|
|
9
|
+
/** Which browser's steps to show. Default `safariIos`. */
|
|
10
|
+
browser?: PermissionsBrowser;
|
|
11
|
+
screenId?: string;
|
|
12
|
+
overrides?: PrizmaScreenOverrides;
|
|
13
|
+
onAction?: PrizmaScreenActionHandler;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Permissions — "Follow the next steps to allow Incode to access your camera",
|
|
17
|
+
* built on the List archetype (GUIDELINES.md §6-G, `PrizmaListScreen`).
|
|
18
|
+
*
|
|
19
|
+
* Figma: `1-4-2-id` of the `Permissions` section, plus the four
|
|
20
|
+
* `Android browsers` frames of the Web full-flow board (4:8159 — Chrome,
|
|
21
|
+
* Firefox, Samsung Internet, Opera). ONE screen for all five: they draw the
|
|
22
|
+
* identical skeleton — title block → a step list filling the middle → the
|
|
23
|
+
* refresh CTA — and differ only in the rows, because re-enabling the camera is
|
|
24
|
+
* a different journey in each browser. Five files would have been five chances
|
|
25
|
+
* to drift.
|
|
26
|
+
*
|
|
27
|
+
* The rows are Core's `PrizmaCardListCommonIssues` verbatim; only the leading
|
|
28
|
+
* glyph is chosen here, from the canonical bank (see `STEP_ICONS`).
|
|
29
|
+
*
|
|
30
|
+
* The title block is LEFT-aligned for this whole family. Every frame starts the
|
|
31
|
+
* two-line headline flush at the gutter over left-led step rows; a centred
|
|
32
|
+
* headline above a left-aligned list reads as a mistake. The screen therefore
|
|
33
|
+
* DEFAULTS the archetype's own `align` override to `left` rather than declaring
|
|
34
|
+
* any alignment of its own, and a host that passes `overrides.align` still wins.
|
|
35
|
+
*
|
|
36
|
+
* One thing Figma draws that this screen does not: **mixed weight inside a
|
|
37
|
+
* row.** Figma bolds the actionable fragment ("Tap **Three dots** in the top
|
|
38
|
+
* right"); Core's row `title` is a plain `string`, so the sentence renders in
|
|
39
|
+
* one weight. Core request already open from Geolocation: a `ReactNode` title.
|
|
40
|
+
*/
|
|
41
|
+
export declare const PermissionsBrowserStepsScreen: React.ForwardRefExoticComponent<PermissionsBrowserStepsScreenProps & React.RefAttributes<HTMLDivElement>>;
|
|
42
|
+
export default PermissionsBrowserStepsScreen;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { IconArrowLeft, IconCamera, IconFolderFileOpen, IconLock, IconLockCheck, IconMobilePhone, IconNumberedList, IconTextAi, } from '@incodetech/prizma-core-icons';
|
|
5
|
+
import { PrizmaCardListCommonIssues } from '@incodetech/prizma-core-web/card-list';
|
|
6
|
+
import { PrizmaListScreen } from './ListScreen';
|
|
7
|
+
import './ScreenLayout.css';
|
|
8
|
+
/**
|
|
9
|
+
* Step kind → canonical bank glyph. ONE map, in one place, for the same reason
|
|
10
|
+
* Geolocation's exists (`GeolocationBrowserStepsScreen`) and Document Capture's
|
|
11
|
+
* before it (DEVIATIONS #DC-23): Figma leads every row with OS/browser chrome
|
|
12
|
+
* the Prizma bank does not ship — a ⋮ overflow menu, a gear tile, a permission
|
|
13
|
+
* toggle, Safari's "AA" control and each browser's own logo on the last row.
|
|
14
|
+
* Shipping those would mean inventing primitives and bundling brand rasters,
|
|
15
|
+
* both forbidden (rule 1, GUIDELINES §10), so each row takes the nearest
|
|
16
|
+
* canonical glyph:
|
|
17
|
+
*
|
|
18
|
+
* settings → IconLock site settings sit behind the address-bar lock
|
|
19
|
+
* browser → IconTextAi Safari's "AA" is the address-bar text control
|
|
20
|
+
* menu → IconNumberedList the ⋮ overflow opens a menu list
|
|
21
|
+
* permissions → IconLockCheck a granted permission
|
|
22
|
+
* camera → IconCamera exact
|
|
23
|
+
* toggle → IconLockCheck the Allow/Ask switch
|
|
24
|
+
* device → IconMobilePhone the device's Settings app
|
|
25
|
+
* apps → IconFolderFileOpen the app list / app drawer
|
|
26
|
+
* return → IconArrowLeft "return here and refresh" (Figma draws the
|
|
27
|
+
* browser's own logo — never bundled)
|
|
28
|
+
*
|
|
29
|
+
* This is the SAME substitution table Geolocation already escalated to the
|
|
30
|
+
* owner, extended by `camera`/`toggle`/`browser` for this family. Mint the
|
|
31
|
+
* glyphs or bless the substitutions — one decision covers both families.
|
|
32
|
+
*/
|
|
33
|
+
const STEP_ICONS = {
|
|
34
|
+
settings: _jsx(IconLock, { size: "m" }),
|
|
35
|
+
browser: _jsx(IconTextAi, { size: "m" }),
|
|
36
|
+
menu: _jsx(IconNumberedList, { size: "m" }),
|
|
37
|
+
permissions: _jsx(IconLockCheck, { size: "m" }),
|
|
38
|
+
camera: _jsx(IconCamera, { size: "m" }),
|
|
39
|
+
toggle: _jsx(IconLockCheck, { size: "m" }),
|
|
40
|
+
device: _jsx(IconMobilePhone, { size: "m" }),
|
|
41
|
+
apps: _jsx(IconFolderFileOpen, { size: "m" }),
|
|
42
|
+
return: _jsx(IconArrowLeft, { size: "m" }),
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Permissions — "Follow the next steps to allow Incode to access your camera",
|
|
46
|
+
* built on the List archetype (GUIDELINES.md §6-G, `PrizmaListScreen`).
|
|
47
|
+
*
|
|
48
|
+
* Figma: `1-4-2-id` of the `Permissions` section, plus the four
|
|
49
|
+
* `Android browsers` frames of the Web full-flow board (4:8159 — Chrome,
|
|
50
|
+
* Firefox, Samsung Internet, Opera). ONE screen for all five: they draw the
|
|
51
|
+
* identical skeleton — title block → a step list filling the middle → the
|
|
52
|
+
* refresh CTA — and differ only in the rows, because re-enabling the camera is
|
|
53
|
+
* a different journey in each browser. Five files would have been five chances
|
|
54
|
+
* to drift.
|
|
55
|
+
*
|
|
56
|
+
* The rows are Core's `PrizmaCardListCommonIssues` verbatim; only the leading
|
|
57
|
+
* glyph is chosen here, from the canonical bank (see `STEP_ICONS`).
|
|
58
|
+
*
|
|
59
|
+
* The title block is LEFT-aligned for this whole family. Every frame starts the
|
|
60
|
+
* two-line headline flush at the gutter over left-led step rows; a centred
|
|
61
|
+
* headline above a left-aligned list reads as a mistake. The screen therefore
|
|
62
|
+
* DEFAULTS the archetype's own `align` override to `left` rather than declaring
|
|
63
|
+
* any alignment of its own, and a host that passes `overrides.align` still wins.
|
|
64
|
+
*
|
|
65
|
+
* One thing Figma draws that this screen does not: **mixed weight inside a
|
|
66
|
+
* row.** Figma bolds the actionable fragment ("Tap **Three dots** in the top
|
|
67
|
+
* right"); Core's row `title` is a plain `string`, so the sentence renders in
|
|
68
|
+
* one weight. Core request already open from Geolocation: a `ReactNode` title.
|
|
69
|
+
*/
|
|
70
|
+
export const PermissionsBrowserStepsScreen = forwardRef(({ strings, browser = 'safariIos', screenId = `permissions-browser-steps-${browser}`, showHeader = false, overrides, onAction, ...shell }, ref) => {
|
|
71
|
+
const slice = strings.browserSteps.browsers[browser];
|
|
72
|
+
/* Family default, not a local re-declaration: the archetype already owns a
|
|
73
|
+
left variant, so the screen only picks which of ITS variants this family
|
|
74
|
+
uses. An explicit `overrides.align` from the host still wins. */
|
|
75
|
+
const alignedOverrides = {
|
|
76
|
+
...overrides,
|
|
77
|
+
align: overrides?.align ?? 'left',
|
|
78
|
+
};
|
|
79
|
+
return (_jsx(PrizmaListScreen, { ref: ref, showHeader: showHeader, title: strings.browserSteps.title, subtitle: slice?.label, ctaLabel: strings.browserSteps.ctaLabel, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: alignedOverrides, onAction: onAction, ...shell, children: _jsx(PrizmaCardListCommonIssues, { items: (slice?.steps ?? []).map((step) => ({
|
|
80
|
+
icon: STEP_ICONS[step.kind],
|
|
81
|
+
title: step.label,
|
|
82
|
+
showSubtitle: false,
|
|
83
|
+
})) }) }));
|
|
84
|
+
});
|
|
85
|
+
PermissionsBrowserStepsScreen.displayName = 'PermissionsBrowserStepsScreen';
|
|
86
|
+
export default PermissionsBrowserStepsScreen;
|