@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,173 @@
|
|
|
1
|
+
import React, { forwardRef, type ReactNode } from 'react';
|
|
2
|
+
import {
|
|
3
|
+
IconArrowLeft,
|
|
4
|
+
IconFolderFileOpen,
|
|
5
|
+
IconGeoPin,
|
|
6
|
+
IconLock,
|
|
7
|
+
IconLockCheck,
|
|
8
|
+
IconMobilePhone,
|
|
9
|
+
IconNumberedList,
|
|
10
|
+
IconTextAi,
|
|
11
|
+
} from '@incodetech/prizma-core-icons';
|
|
12
|
+
import { PrizmaCardListCommonIssues } from '@incodetech/prizma-core-web/card-list';
|
|
13
|
+
import { PrizmaListScreen, type PrizmaListScreenProps } from './ListScreen';
|
|
14
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
15
|
+
import type {
|
|
16
|
+
GeolocationBrowser,
|
|
17
|
+
GeolocationStepKind,
|
|
18
|
+
GeolocationStrings,
|
|
19
|
+
} from './GeolocationStrings';
|
|
20
|
+
import './ScreenLayout.css';
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Step kind → canonical bank glyph. ONE map, in one place, for the same reason
|
|
24
|
+
* Document Capture's common-issues map exists (DEVIATIONS #DC-23): Figma leads
|
|
25
|
+
* every row with OS/browser chrome the Prizma bank does not ship — a ⋮ overflow
|
|
26
|
+
* menu, a gear, a permission toggle, Safari's "AA" control and each browser's
|
|
27
|
+
* own logo. Shipping those would mean inventing primitives and bundling brand
|
|
28
|
+
* rasters, both forbidden (rule 1, GUIDELINES §10), so each row takes the
|
|
29
|
+
* nearest canonical glyph:
|
|
30
|
+
*
|
|
31
|
+
* addressBar → IconTextAi Safari's "AA" is the address-bar text control
|
|
32
|
+
* menu → IconNumberedList the ⋮ overflow opens a menu list
|
|
33
|
+
* settings → IconLock site settings sit behind the address-bar lock
|
|
34
|
+
* permissions → IconLockCheck a granted permission
|
|
35
|
+
* location → IconGeoPin near-exact
|
|
36
|
+
* device → IconMobilePhone the device's Settings app
|
|
37
|
+
* apps → IconFolderFileOpen the app list / app drawer
|
|
38
|
+
* return → IconArrowLeft "return here and refresh" (Figma draws the
|
|
39
|
+
* browser's logo — a brand raster, never bundled)
|
|
40
|
+
*
|
|
41
|
+
* Owner decision needed: mint the eight glyphs, or bless these substitutions.
|
|
42
|
+
* NOT YET RECORDED: DEVIATIONS.md has no Geolocation section, so this is an
|
|
43
|
+
* open escalation rather than a settled ruling. Verified against the frames on
|
|
44
|
+
* 2026-08-19 — every section leads its rows with OS/browser chrome, and the
|
|
45
|
+
* last row of each browser section draws that browser's own logo (Chrome disc,
|
|
46
|
+
* Firefox flame, Opera O, Samsung Internet mark).
|
|
47
|
+
*/
|
|
48
|
+
const STEP_ICONS: Record<GeolocationStepKind, ReactNode> = {
|
|
49
|
+
addressBar: <IconTextAi size="m" />,
|
|
50
|
+
menu: <IconNumberedList size="m" />,
|
|
51
|
+
settings: <IconLock size="m" />,
|
|
52
|
+
permissions: <IconLockCheck size="m" />,
|
|
53
|
+
location: <IconGeoPin size="m" />,
|
|
54
|
+
device: <IconMobilePhone size="m" />,
|
|
55
|
+
apps: <IconFolderFileOpen size="m" />,
|
|
56
|
+
return: <IconArrowLeft size="m" />,
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
export interface GeolocationBrowserStepsScreenProps
|
|
60
|
+
extends Omit<
|
|
61
|
+
PrizmaListScreenProps,
|
|
62
|
+
| 'status'
|
|
63
|
+
| 'title'
|
|
64
|
+
| 'subtitle'
|
|
65
|
+
| 'children'
|
|
66
|
+
| 'ctaLabel'
|
|
67
|
+
| 'secondaryCtaLabel'
|
|
68
|
+
| 'linkLabel'
|
|
69
|
+
| 'verifiedLabel'
|
|
70
|
+
| 'navLabel'
|
|
71
|
+
> {
|
|
72
|
+
/** Module copy — this screen reads the `browserSteps` slice. */
|
|
73
|
+
strings: GeolocationStrings;
|
|
74
|
+
/** Which browser's steps to show. Default `safariIos`. */
|
|
75
|
+
browser?: GeolocationBrowser;
|
|
76
|
+
/**
|
|
77
|
+
* Offer the second action. Default `true`. Figma's Samsung Internet section
|
|
78
|
+
* draws the primary alone, because that flow cannot skip the step.
|
|
79
|
+
*/
|
|
80
|
+
showSkip?: boolean;
|
|
81
|
+
screenId?: string;
|
|
82
|
+
overrides?: PrizmaScreenOverrides;
|
|
83
|
+
onAction?: PrizmaScreenActionHandler;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Geolocation — "Follow the next steps to allow Incode to access your
|
|
88
|
+
* location", built on the List archetype (GUIDELINES.md §6-G,
|
|
89
|
+
* `PrizmaListScreen`).
|
|
90
|
+
*
|
|
91
|
+
* ONE screen for all NINE purple sections of the Web group. They draw the
|
|
92
|
+
* identical skeleton — title block → a step list filling the middle → the
|
|
93
|
+
* refresh CTA — and differ only in the rows, because re-enabling location is a
|
|
94
|
+
* different journey in Safari, Chrome, Firefox, Opera and Samsung Internet, on
|
|
95
|
+
* iOS and on Android. Nine files would have been nine chances to drift.
|
|
96
|
+
*
|
|
97
|
+
* The rows are Core's `PrizmaCardListCommonIssues` verbatim; only the leading
|
|
98
|
+
* glyph is chosen here, from the canonical bank (see `STEP_ICONS`).
|
|
99
|
+
*
|
|
100
|
+
* The title block is LEFT-aligned for this whole family. Every
|
|
101
|
+
* `Geolocation.allowLocation.<browser>` section starts the two-line headline —
|
|
102
|
+
* and the browser label under it — flush at the gutter, over left-led step
|
|
103
|
+
* rows; a centred headline above a left-aligned list reads as a mistake. The
|
|
104
|
+
* screen therefore DEFAULTS the archetype's own `align` override to `left`
|
|
105
|
+
* rather than declaring any alignment of its own, and a host that passes
|
|
106
|
+
* `overrides.align` still wins.
|
|
107
|
+
*
|
|
108
|
+
* Two things Figma draws that this screen does not, both reported rather than
|
|
109
|
+
* worked around:
|
|
110
|
+
* - **Mixed weight inside a row.** Figma bolds the actionable fragment ("Tap
|
|
111
|
+
* **Three dots** in the top right"); Core's row `title` is a plain `string`,
|
|
112
|
+
* so the sentence renders in one weight. Core request: a `ReactNode` title.
|
|
113
|
+
* - **Primary above secondary.** Figma stacks "Refresh page" over "Skip this
|
|
114
|
+
* step" on all nine sections; archetype G's band renders the secondary first
|
|
115
|
+
* (`ListScreen.tsx`), so these screens ship inverted against their frames.
|
|
116
|
+
* The archetype owns the order and no module re-declares it — archetype G
|
|
117
|
+
* needs a `ctaOrder` slot the way archetype F already has `ctaOrientation`.
|
|
118
|
+
* ESCALATED, NOT RESOLVED: DEVIATIONS.md still has no Geolocation section, so
|
|
119
|
+
* there is no ruling to cite yet.
|
|
120
|
+
*/
|
|
121
|
+
export const GeolocationBrowserStepsScreen = forwardRef<
|
|
122
|
+
HTMLDivElement,
|
|
123
|
+
GeolocationBrowserStepsScreenProps
|
|
124
|
+
>(
|
|
125
|
+
(
|
|
126
|
+
{
|
|
127
|
+
strings,
|
|
128
|
+
browser = 'safariIos',
|
|
129
|
+
showSkip = true,
|
|
130
|
+
screenId = `geolocation-allow-location-${browser}`,
|
|
131
|
+
overrides,
|
|
132
|
+
onAction,
|
|
133
|
+
...shell
|
|
134
|
+
},
|
|
135
|
+
ref,
|
|
136
|
+
) => {
|
|
137
|
+
const slice = strings.browserSteps.browsers[browser];
|
|
138
|
+
/* Family default, not a local re-declaration: the archetype already owns a
|
|
139
|
+
left variant, so the screen only picks which of ITS variants this family
|
|
140
|
+
uses. An explicit `overrides.align` from the host still wins. */
|
|
141
|
+
const alignedOverrides: PrizmaScreenOverrides = {
|
|
142
|
+
...overrides,
|
|
143
|
+
align: overrides?.align ?? 'left',
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
return (
|
|
147
|
+
<PrizmaListScreen
|
|
148
|
+
ref={ref}
|
|
149
|
+
title={strings.browserSteps.title}
|
|
150
|
+
subtitle={slice?.label}
|
|
151
|
+
ctaLabel={strings.browserSteps.ctaLabel}
|
|
152
|
+
secondaryCtaLabel={showSkip ? strings.browserSteps.skipLabel : undefined}
|
|
153
|
+
verifiedLabel={strings.verifiedLabel}
|
|
154
|
+
navLabel={strings.navLabel}
|
|
155
|
+
screenId={screenId}
|
|
156
|
+
overrides={alignedOverrides}
|
|
157
|
+
onAction={onAction}
|
|
158
|
+
{...shell}
|
|
159
|
+
>
|
|
160
|
+
<PrizmaCardListCommonIssues
|
|
161
|
+
items={(slice?.steps ?? []).map((step) => ({
|
|
162
|
+
icon: STEP_ICONS[step.kind],
|
|
163
|
+
title: step.label,
|
|
164
|
+
showSubtitle: false,
|
|
165
|
+
}))}
|
|
166
|
+
/>
|
|
167
|
+
</PrizmaListScreen>
|
|
168
|
+
);
|
|
169
|
+
},
|
|
170
|
+
);
|
|
171
|
+
GeolocationBrowserStepsScreen.displayName = 'GeolocationBrowserStepsScreen';
|
|
172
|
+
|
|
173
|
+
export default GeolocationBrowserStepsScreen;
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import React, { forwardRef } from 'react';
|
|
2
|
+
import { IconWifiOff } from '@incodetech/prizma-core-icons';
|
|
3
|
+
import { PrizmaResultScreen, type PrizmaResultScreenProps } from './ResultScreen';
|
|
4
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
5
|
+
import type { GeolocationErrorVariant, GeolocationStrings } from './GeolocationStrings';
|
|
6
|
+
import './ScreenLayout.css';
|
|
7
|
+
|
|
8
|
+
export interface GeolocationErrorScreenProps
|
|
9
|
+
extends Omit<
|
|
10
|
+
PrizmaResultScreenProps,
|
|
11
|
+
| 'status'
|
|
12
|
+
| 'title'
|
|
13
|
+
| 'subtitle'
|
|
14
|
+
| 'glyph'
|
|
15
|
+
| 'ctaLabel'
|
|
16
|
+
| 'verifiedLabel'
|
|
17
|
+
| 'navLabel'
|
|
18
|
+
> {
|
|
19
|
+
/** Module copy — this screen reads the `error` slice its `variant` names. */
|
|
20
|
+
strings: GeolocationStrings;
|
|
21
|
+
/** Which purple `Geolocation.error.*` section to render. Default `locationUnavailable`. */
|
|
22
|
+
variant?: GeolocationErrorVariant;
|
|
23
|
+
screenId?: string;
|
|
24
|
+
overrides?: PrizmaScreenOverrides;
|
|
25
|
+
onAction?: PrizmaScreenActionHandler;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Geolocation — the error verdicts, built on the Result archetype
|
|
30
|
+
* (GUIDELINES.md §6-F, `PrizmaResultScreen`).
|
|
31
|
+
*
|
|
32
|
+
* ONE screen for the four purple `Geolocation.error.*` sections. All four draw
|
|
33
|
+
* the identical skeleton — a centred mark + title + supporting line over a
|
|
34
|
+
* single CTA — and differ only in copy and in which mark leads:
|
|
35
|
+
*
|
|
36
|
+
* - `locationUnavailable` — weak/inaccurate signal, "Try again"
|
|
37
|
+
* - `quit` — attempts exhausted, the step is required
|
|
38
|
+
* - `skip` — attempts exhausted, the step is optional
|
|
39
|
+
* - `noNetwork` — the connectivity family every module carries
|
|
40
|
+
*
|
|
41
|
+
* Figma draws the first three with a filled amber disc; Core renders the
|
|
42
|
+
* canonical OUTLINE warning mark (icon-outline sweep, DEVIATIONS #15). The
|
|
43
|
+
* module Figma is one sweep behind, exactly as Face Capture's and ID Capture's
|
|
44
|
+
* result screens were.
|
|
45
|
+
*
|
|
46
|
+
* `noNetwork` KEEPS the logo header and the verified tag even though its purple
|
|
47
|
+
* section draws neither: the owner rule of 2026-08-18 (#F-30, #F-34) makes the
|
|
48
|
+
* chrome constant across every screen so nothing shifts between states, and all
|
|
49
|
+
* modules' connectivity screens must read identically (#PI-8).
|
|
50
|
+
*
|
|
51
|
+
* The Wi-Fi mark is Figma's `Icon / Wi-Fi`; Core's `PrizmaTitle` icon allowlist
|
|
52
|
+
* is `status | spinner | none`, so it rides the archetype's `glyph` slot with
|
|
53
|
+
* the foundation's `__glyph` class, drawn from the canonical icon bank (#10).
|
|
54
|
+
*/
|
|
55
|
+
export const GeolocationErrorScreen = forwardRef<HTMLDivElement, GeolocationErrorScreenProps>(
|
|
56
|
+
(
|
|
57
|
+
{
|
|
58
|
+
strings,
|
|
59
|
+
variant = 'locationUnavailable',
|
|
60
|
+
screenId = `geolocation-error-${variant}`,
|
|
61
|
+
overrides,
|
|
62
|
+
onAction,
|
|
63
|
+
...shell
|
|
64
|
+
},
|
|
65
|
+
ref,
|
|
66
|
+
) => {
|
|
67
|
+
const noConnection = variant === 'noNetwork';
|
|
68
|
+
const copy = noConnection
|
|
69
|
+
? strings.error.noConnection
|
|
70
|
+
: variant === 'quit'
|
|
71
|
+
? strings.error.quit
|
|
72
|
+
: variant === 'skip'
|
|
73
|
+
? strings.error.skip
|
|
74
|
+
: strings.error.locationUnavailable;
|
|
75
|
+
|
|
76
|
+
return (
|
|
77
|
+
<PrizmaResultScreen
|
|
78
|
+
ref={ref}
|
|
79
|
+
/* The connectivity screen leads with the Wi-Fi glyph instead of a
|
|
80
|
+
status mark; the other three carry the canonical warning mark, which
|
|
81
|
+
is what the module Figma draws (amber, not red). */
|
|
82
|
+
status={noConnection ? 'none' : 'warning'}
|
|
83
|
+
glyph={
|
|
84
|
+
noConnection ? (
|
|
85
|
+
<span
|
|
86
|
+
className={[
|
|
87
|
+
'prizma-screen-layout__glyph',
|
|
88
|
+
'prizma-screen-layout__glyph--negative',
|
|
89
|
+
overrides?.align === 'left' ? 'prizma-screen-layout__glyph--left' : '',
|
|
90
|
+
]
|
|
91
|
+
.filter(Boolean)
|
|
92
|
+
.join(' ')}
|
|
93
|
+
>
|
|
94
|
+
<IconWifiOff size="l" />
|
|
95
|
+
</span>
|
|
96
|
+
) : undefined
|
|
97
|
+
}
|
|
98
|
+
title={copy.title}
|
|
99
|
+
subtitle={copy.subtitle}
|
|
100
|
+
ctaLabel={copy.ctaLabel}
|
|
101
|
+
verifiedLabel={strings.verifiedLabel}
|
|
102
|
+
navLabel={strings.navLabel}
|
|
103
|
+
screenId={screenId}
|
|
104
|
+
overrides={overrides}
|
|
105
|
+
onAction={onAction}
|
|
106
|
+
{...shell}
|
|
107
|
+
/>
|
|
108
|
+
);
|
|
109
|
+
},
|
|
110
|
+
);
|
|
111
|
+
GeolocationErrorScreen.displayName = 'GeolocationErrorScreen';
|
|
112
|
+
|
|
113
|
+
export default GeolocationErrorScreen;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import React, { forwardRef, type ReactNode } from 'react';
|
|
2
|
+
import { PrizmaIllustrationGeolocation } from '@incodetech/prizma-core-web/illustration-geolocation';
|
|
3
|
+
import { PrizmaTutorialScreen, type PrizmaTutorialScreenProps } from './TutorialScreen';
|
|
4
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
5
|
+
import type { GeolocationIntroState, GeolocationStrings } from './GeolocationStrings';
|
|
6
|
+
import './ScreenLayout.css';
|
|
7
|
+
|
|
8
|
+
export interface GeolocationIntroScreenProps
|
|
9
|
+
extends Omit<
|
|
10
|
+
PrizmaTutorialScreenProps,
|
|
11
|
+
| 'title'
|
|
12
|
+
| 'subtitle'
|
|
13
|
+
| 'disclaimer'
|
|
14
|
+
| 'ctaLabel'
|
|
15
|
+
| 'ctaLoadingLabel'
|
|
16
|
+
| 'illustration'
|
|
17
|
+
| 'verifiedLabel'
|
|
18
|
+
| 'navLabel'
|
|
19
|
+
> {
|
|
20
|
+
/** Module copy — this screen reads the `intro` slice (+ shared labels). */
|
|
21
|
+
strings: GeolocationStrings;
|
|
22
|
+
/** Which purple intro section to render. Default `request`. */
|
|
23
|
+
state?: GeolocationIntroState;
|
|
24
|
+
/**
|
|
25
|
+
* The resolved place shown on `located` ("Mexico City, Mexico"). Runtime data,
|
|
26
|
+
* never copy — the host's geocoder produces it, so it does not belong in
|
|
27
|
+
* `strings`. Falls back to `strings.intro.located.subtitle`.
|
|
28
|
+
*/
|
|
29
|
+
location?: string;
|
|
30
|
+
/** Replace Core's geolocation illustration (host artwork / a still). */
|
|
31
|
+
illustration?: ReactNode;
|
|
32
|
+
screenId?: string;
|
|
33
|
+
overrides?: PrizmaScreenOverrides;
|
|
34
|
+
onAction?: PrizmaScreenActionHandler;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Geolocation — the two intro sections, built on the `PrizmaTutorialScreen`
|
|
39
|
+
* archetype (GUIDELINES.md §6-A).
|
|
40
|
+
*
|
|
41
|
+
* ONE screen for both purple sections, because they draw the identical
|
|
42
|
+
* skeleton — nav → title block → illustration filling the middle → CTA → tag —
|
|
43
|
+
* and differ only in copy and in which state of the illustration is showing:
|
|
44
|
+
*
|
|
45
|
+
* - `request` (`geolocation.default`) — "We need to determine your current
|
|
46
|
+
* location", inactive artwork, CTA asks for permission.
|
|
47
|
+
* - `located` (`Geolocation.continue`) — "You are currently in:" with the
|
|
48
|
+
* resolved place, active artwork (brand pin dropped), CTA advances the flow.
|
|
49
|
+
*
|
|
50
|
+
* The artwork is Core's own `PrizmaIllustrationGeolocation`, whose `active`
|
|
51
|
+
* axis is exactly this pair of states — nothing is inlined here (§10).
|
|
52
|
+
*
|
|
53
|
+
* Its drawing differs from the module Figma's, which draws a folded street map
|
|
54
|
+
* with a pin dropped on it — grey with a ✕ through the pin on `geolocation.default`,
|
|
55
|
+
* brand blue on `Geolocation.continue`. Core's illustration wins (rule 4), and
|
|
56
|
+
* the divergence is ESCALATED, NOT RESOLVED: DEVIATIONS.md still has no
|
|
57
|
+
* Geolocation section, so there is no numbered ruling to cite yet.
|
|
58
|
+
*
|
|
59
|
+
* Figma also draws a nav ✕ on both sections; it is deliberately not built here
|
|
60
|
+
* (#PI-9).
|
|
61
|
+
*/
|
|
62
|
+
export const GeolocationIntroScreen = forwardRef<HTMLDivElement, GeolocationIntroScreenProps>(
|
|
63
|
+
(
|
|
64
|
+
{
|
|
65
|
+
strings,
|
|
66
|
+
state = 'request',
|
|
67
|
+
location,
|
|
68
|
+
illustration,
|
|
69
|
+
screenId = `geolocation-intro-${state}`,
|
|
70
|
+
overrides,
|
|
71
|
+
onAction,
|
|
72
|
+
...shell
|
|
73
|
+
},
|
|
74
|
+
ref,
|
|
75
|
+
) => {
|
|
76
|
+
const located = state === 'located';
|
|
77
|
+
const copy = located ? strings.intro.located : strings.intro.request;
|
|
78
|
+
|
|
79
|
+
return (
|
|
80
|
+
<PrizmaTutorialScreen
|
|
81
|
+
ref={ref}
|
|
82
|
+
title={copy.title}
|
|
83
|
+
subtitle={located ? (location ?? copy.subtitle) : copy.subtitle}
|
|
84
|
+
ctaLabel={copy.ctaLabel}
|
|
85
|
+
illustration={
|
|
86
|
+
illustration ?? <PrizmaIllustrationGeolocation active={located} decorative />
|
|
87
|
+
}
|
|
88
|
+
verifiedLabel={strings.verifiedLabel}
|
|
89
|
+
navLabel={strings.navLabel}
|
|
90
|
+
screenId={screenId}
|
|
91
|
+
overrides={overrides}
|
|
92
|
+
onAction={onAction}
|
|
93
|
+
{...shell}
|
|
94
|
+
/>
|
|
95
|
+
);
|
|
96
|
+
},
|
|
97
|
+
);
|
|
98
|
+
GeolocationIntroScreen.displayName = 'GeolocationIntroScreen';
|
|
99
|
+
|
|
100
|
+
export default GeolocationIntroScreen;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import React, { forwardRef } from 'react';
|
|
2
|
+
import { PrizmaResultScreen, type PrizmaResultScreenProps } from './ResultScreen';
|
|
3
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
4
|
+
import type {
|
|
5
|
+
GeolocationPermissionVariant,
|
|
6
|
+
GeolocationStrings,
|
|
7
|
+
} from './GeolocationStrings';
|
|
8
|
+
import './ScreenLayout.css';
|
|
9
|
+
|
|
10
|
+
export interface GeolocationPermissionScreenProps
|
|
11
|
+
extends Omit<
|
|
12
|
+
PrizmaResultScreenProps,
|
|
13
|
+
| 'status'
|
|
14
|
+
| 'title'
|
|
15
|
+
| 'subtitle'
|
|
16
|
+
| 'glyph'
|
|
17
|
+
| 'ctaLabel'
|
|
18
|
+
| 'secondaryCtaLabel'
|
|
19
|
+
| 'verifiedLabel'
|
|
20
|
+
| 'navLabel'
|
|
21
|
+
> {
|
|
22
|
+
/** Module copy — this screen reads the `permission` slice. */
|
|
23
|
+
strings: GeolocationStrings;
|
|
24
|
+
/** Which second action the flow offers. Default `skip`. */
|
|
25
|
+
variant?: GeolocationPermissionVariant;
|
|
26
|
+
screenId?: string;
|
|
27
|
+
overrides?: PrizmaScreenOverrides;
|
|
28
|
+
onAction?: PrizmaScreenActionHandler;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Geolocation — "Allow location access", built on the Result archetype
|
|
33
|
+
* (GUIDELINES.md §6-F, `PrizmaResultScreen`).
|
|
34
|
+
*
|
|
35
|
+
* ONE screen for the two purple sections `Geolocation.AllowLocation` and
|
|
36
|
+
* `Geolocation.AllowLocation.quit`: the user declined the OS prompt, so the
|
|
37
|
+
* screen reports the blocked state (warning mark → title → subtitle) and offers
|
|
38
|
+
* to open the OS settings. They differ only in the second action — skip the
|
|
39
|
+
* step, or quit the process — which is a copy variant, not a second screen.
|
|
40
|
+
*
|
|
41
|
+
* The warning mark is Core's outline status icon, not the module Figma's filled
|
|
42
|
+
* amber disc: the outline sweep of 2026-07-28 settled that for every module
|
|
43
|
+
* (DEVIATIONS #15, #DC-34).
|
|
44
|
+
*
|
|
45
|
+
* Figma draws the filled primary ABOVE the outlined second action on both
|
|
46
|
+
* sections ("Open settings" over "Skip this step" / "Quit process"); archetype F
|
|
47
|
+
* stacks the secondary first (`ResultScreen.tsx`), so these two screens ship
|
|
48
|
+
* inverted against their frames. The archetype owns the order and no module
|
|
49
|
+
* re-declares it — archetype F needs a `ctaOrder` slot alongside the
|
|
50
|
+
* `ctaOrientation` it already has. ESCALATED, NOT RESOLVED: DEVIATIONS.md still
|
|
51
|
+
* has no Geolocation section, so there is no ruling to cite yet.
|
|
52
|
+
*/
|
|
53
|
+
export const GeolocationPermissionScreen = forwardRef<
|
|
54
|
+
HTMLDivElement,
|
|
55
|
+
GeolocationPermissionScreenProps
|
|
56
|
+
>(
|
|
57
|
+
(
|
|
58
|
+
{
|
|
59
|
+
strings,
|
|
60
|
+
variant = 'skip',
|
|
61
|
+
screenId = `geolocation-permission-${variant}`,
|
|
62
|
+
overrides,
|
|
63
|
+
onAction,
|
|
64
|
+
...shell
|
|
65
|
+
},
|
|
66
|
+
ref,
|
|
67
|
+
) => (
|
|
68
|
+
<PrizmaResultScreen
|
|
69
|
+
ref={ref}
|
|
70
|
+
status="warning"
|
|
71
|
+
title={strings.permission.title}
|
|
72
|
+
subtitle={strings.permission.subtitle}
|
|
73
|
+
ctaLabel={strings.permission.ctaLabel}
|
|
74
|
+
secondaryCtaLabel={
|
|
75
|
+
variant === 'quit' ? strings.permission.quitLabel : strings.permission.skipLabel
|
|
76
|
+
}
|
|
77
|
+
verifiedLabel={strings.verifiedLabel}
|
|
78
|
+
navLabel={strings.navLabel}
|
|
79
|
+
screenId={screenId}
|
|
80
|
+
overrides={overrides}
|
|
81
|
+
onAction={onAction}
|
|
82
|
+
{...shell}
|
|
83
|
+
/>
|
|
84
|
+
),
|
|
85
|
+
);
|
|
86
|
+
GeolocationPermissionScreen.displayName = 'GeolocationPermissionScreen';
|
|
87
|
+
|
|
88
|
+
export default GeolocationPermissionScreen;
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
// Geolocation — copy contract.
|
|
2
|
+
//
|
|
3
|
+
// Figma: `📍 Geolocation - Screens specs + Localization` and
|
|
4
|
+
// `📍 Geolocation 🌐 Web - Allow location - Screens specs + Localization`
|
|
5
|
+
// (xg1t3GnUS95A4bLrM3lyOG, page 2002:1727). The two parent groups hold these
|
|
6
|
+
// purple sections:
|
|
7
|
+
//
|
|
8
|
+
// geolocation.default — the location request intro
|
|
9
|
+
// geolocation.permission — the NATIVE iOS permission alert (not built, see below)
|
|
10
|
+
// Geolocation.AllowLocation — permission refused, "Skip this step"
|
|
11
|
+
// Geolocation.AllowLocation.quit — permission refused, "Quit process"
|
|
12
|
+
// Geolocation.continue — located, shows the resolved place
|
|
13
|
+
// Geolocation.error.locationUnavailable— signal too weak, retry
|
|
14
|
+
// Geolocation.error.quit — attempts exhausted, step is required
|
|
15
|
+
// Geolocation.error.skip — attempts exhausted, step is optional
|
|
16
|
+
// Geolocation.error.noNetwork — the connectivity family every module carries
|
|
17
|
+
// Geolocation.allowLocation.<browser> — nine per-browser "turn location on" step lists
|
|
18
|
+
//
|
|
19
|
+
// `geolocation.permission` is the iOS system alert ("Allow 'Incode' to use your
|
|
20
|
+
// location?" over a live Apple Maps tile) drawn as flow documentation. It is not
|
|
21
|
+
// a Prizma surface: none of its chrome exists in Core and rebuilding it would
|
|
22
|
+
// mean inventing primitives and shipping platform rasters — both forbidden
|
|
23
|
+
// (rule 1, GUIDELINES §10). Same call as ID Capture's OS dialogs (DEVIATIONS
|
|
24
|
+
// #IDC-26) and Document Capture's iOS action sheets (#DC-20).
|
|
25
|
+
//
|
|
26
|
+
// No hardcoded English anywhere in a screen: every visible string arrives here,
|
|
27
|
+
// so the host's locale pack drives the module (the file ships ES + PT columns).
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* The two intro sections. Same layout — title block, geolocation illustration,
|
|
31
|
+
* one CTA — so they are states of one screen rather than two screens:
|
|
32
|
+
* - `request` — `geolocation.default`, location not yet known (inactive artwork)
|
|
33
|
+
* - `located` — `Geolocation.continue`, the resolved place in the subtitle
|
|
34
|
+
* (active artwork: brand pin dropped on the map)
|
|
35
|
+
*/
|
|
36
|
+
export type GeolocationIntroState = 'request' | 'located';
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* The `Geolocation.AllowLocation*` sections. Identical screens except for the
|
|
40
|
+
* second action: the flow either lets the user skip the step or forces a quit.
|
|
41
|
+
*/
|
|
42
|
+
export type GeolocationPermissionVariant = 'skip' | 'quit';
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* The `Geolocation.error.*` sections.
|
|
46
|
+
* - `locationUnavailable` — weak signal, retry is offered
|
|
47
|
+
* - `quit` — attempts exhausted and the step is required
|
|
48
|
+
* - `skip` — attempts exhausted but the step is optional
|
|
49
|
+
* - `noNetwork` — the connectivity family (Wi-Fi glyph, DEVIATIONS #10)
|
|
50
|
+
*/
|
|
51
|
+
export type GeolocationErrorVariant =
|
|
52
|
+
| 'locationUnavailable'
|
|
53
|
+
| 'quit'
|
|
54
|
+
| 'skip'
|
|
55
|
+
| 'noNetwork';
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* The nine `Geolocation.allowLocation.*` sections of the Web group. Each is the
|
|
59
|
+
* same screen with a different step list, because "turn location back on" is a
|
|
60
|
+
* different journey in every browser.
|
|
61
|
+
*
|
|
62
|
+
* `samsungAndroid` is the section Figma labels `…web.opera.Android` a second
|
|
63
|
+
* time (4936:72487): its rows read "Sites and downloads" / "Site permissions"
|
|
64
|
+
* and its return row draws the Samsung Internet mark, so it is Samsung Internet,
|
|
65
|
+
* not a second Opera. Named for what it draws.
|
|
66
|
+
*/
|
|
67
|
+
export type GeolocationBrowser =
|
|
68
|
+
| 'safariIos'
|
|
69
|
+
| 'chromeIos'
|
|
70
|
+
| 'firefoxIos'
|
|
71
|
+
| 'operaIos'
|
|
72
|
+
| 'chromeAndroid'
|
|
73
|
+
| 'firefoxAndroid'
|
|
74
|
+
| 'operaAndroid'
|
|
75
|
+
| 'samsungAndroid'
|
|
76
|
+
| 'unrecognizedAndroid';
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* What a browser step is ABOUT, not what glyph it draws. The screen owns the
|
|
80
|
+
* kind → canonical bank icon map so no host ever passes artwork, and so the
|
|
81
|
+
* substitutions live in exactly one place (DEVIATIONS #DC-23 precedent — Figma
|
|
82
|
+
* draws OS/browser chrome the Prizma icon bank does not ship).
|
|
83
|
+
*/
|
|
84
|
+
export type GeolocationStepKind =
|
|
85
|
+
/** The browser's address bar (Safari's "AA" control). */
|
|
86
|
+
| 'addressBar'
|
|
87
|
+
/** The ⋮ / ⋯ overflow menu. */
|
|
88
|
+
| 'menu'
|
|
89
|
+
/** A settings screen (browser settings, site settings). */
|
|
90
|
+
| 'settings'
|
|
91
|
+
/** A permissions list. */
|
|
92
|
+
| 'permissions'
|
|
93
|
+
/** The location permission itself. */
|
|
94
|
+
| 'location'
|
|
95
|
+
/** The device's own Settings app. */
|
|
96
|
+
| 'device'
|
|
97
|
+
/** The app list / app drawer. */
|
|
98
|
+
| 'apps'
|
|
99
|
+
/** "Return here and refresh" — Figma draws the browser's own logo. */
|
|
100
|
+
| 'return';
|
|
101
|
+
|
|
102
|
+
/** One row of a browser's step list. */
|
|
103
|
+
export interface GeolocationStep {
|
|
104
|
+
/** Chooses the leading canonical icon. Never artwork. */
|
|
105
|
+
kind: GeolocationStepKind;
|
|
106
|
+
/**
|
|
107
|
+
* The whole instruction as one line. Figma bolds the actionable fragment
|
|
108
|
+
* inside the sentence; Core's row title is a plain `string`, so the emphasis
|
|
109
|
+
* is not expressible — reported, not worked around (see the screen's docs).
|
|
110
|
+
*/
|
|
111
|
+
label: string;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/** One browser's slice of the step-list screen. */
|
|
115
|
+
export interface GeolocationBrowserSteps {
|
|
116
|
+
/**
|
|
117
|
+
* The browser name under the title ("Safari", "Chrome · Android"). Figma
|
|
118
|
+
* draws it on the Safari section only and leaves the other eight to identify
|
|
119
|
+
* themselves through artwork — each section's last row leads with that
|
|
120
|
+
* browser's own logo. Prizma never bundles brand rasters (rule 1,
|
|
121
|
+
* GUIDELINES §10), so without a label those sections are indistinguishable:
|
|
122
|
+
* `…chrome.iOS`, `…firefox.iOS` and `…chrome.android` carry the same four
|
|
123
|
+
* rows and would render as one screen three times. Every browser therefore
|
|
124
|
+
* SHOULD carry a label, extending the precedent Figma itself sets on Safari.
|
|
125
|
+
* Still optional so a host that ships its own logo artwork can drop it.
|
|
126
|
+
*/
|
|
127
|
+
label?: string;
|
|
128
|
+
/** The steps, in order. */
|
|
129
|
+
steps: GeolocationStep[];
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
export interface GeolocationStrings {
|
|
133
|
+
/** "verified by" attribution in the footer tag. */
|
|
134
|
+
verifiedLabel: string;
|
|
135
|
+
/** Accessible name for the logo nav row. */
|
|
136
|
+
navLabel?: string;
|
|
137
|
+
|
|
138
|
+
/** geolocation.default + Geolocation.continue */
|
|
139
|
+
intro: {
|
|
140
|
+
/** `geolocation.default` — "We need to determine your current location". */
|
|
141
|
+
request: {
|
|
142
|
+
title: string;
|
|
143
|
+
subtitle?: string;
|
|
144
|
+
/** Primary CTA ("Continue"). */
|
|
145
|
+
ctaLabel: string;
|
|
146
|
+
};
|
|
147
|
+
/**
|
|
148
|
+
* `Geolocation.continue` — "You are currently in:". The place itself
|
|
149
|
+
* ("Mexico City, Mexico") is runtime data, not copy: it arrives as the
|
|
150
|
+
* screen's `location` prop and lands in the subtitle. `subtitle` here is the
|
|
151
|
+
* fallback for hosts that have no resolved place to show.
|
|
152
|
+
*/
|
|
153
|
+
located: {
|
|
154
|
+
title: string;
|
|
155
|
+
subtitle?: string;
|
|
156
|
+
ctaLabel: string;
|
|
157
|
+
};
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
/** Geolocation.AllowLocation + Geolocation.AllowLocation.quit */
|
|
161
|
+
permission: {
|
|
162
|
+
/** H2 ("Allow location access"). */
|
|
163
|
+
title: string;
|
|
164
|
+
/** H5 ("to complete the process"). */
|
|
165
|
+
subtitle?: string;
|
|
166
|
+
/** Primary CTA ("Open settings"). */
|
|
167
|
+
ctaLabel: string;
|
|
168
|
+
/** Second action on the `skip` variant ("Skip this step"). */
|
|
169
|
+
skipLabel: string;
|
|
170
|
+
/** Second action on the `quit` variant ("Quit process"). */
|
|
171
|
+
quitLabel: string;
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
/** Geolocation.allowLocation.<browser> — the Web group's nine sections. */
|
|
175
|
+
browserSteps: {
|
|
176
|
+
/** H2, shared by all nine ("Follow the next steps to allow Incode to access your location"). */
|
|
177
|
+
title: string;
|
|
178
|
+
/** Primary CTA ("Refresh page"). */
|
|
179
|
+
ctaLabel: string;
|
|
180
|
+
/** Second action ("Skip this step"). Omit on flows where the step is required. */
|
|
181
|
+
skipLabel?: string;
|
|
182
|
+
/** One entry per browser. */
|
|
183
|
+
browsers: Record<GeolocationBrowser, GeolocationBrowserSteps>;
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
/** Geolocation.error.* — one slice per variant. */
|
|
187
|
+
error: {
|
|
188
|
+
locationUnavailable: { title: string; subtitle?: string; ctaLabel: string };
|
|
189
|
+
quit: { title: string; subtitle?: string; ctaLabel: string };
|
|
190
|
+
skip: { title: string; subtitle?: string; ctaLabel: string };
|
|
191
|
+
noConnection: { title: string; subtitle?: string; ctaLabel: string };
|
|
192
|
+
};
|
|
193
|
+
}
|