@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,75 @@
|
|
|
1
|
+
import React, { type ReactNode } from 'react';
|
|
2
|
+
import { type PrizmaScreenShellProps } from './ScreenShell';
|
|
3
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
4
|
+
import type { VideoSelfieDocumentType, VideoSelfieIdErrorSeverity, VideoSelfieIdSide, VideoSelfieStrings } from './VideoSelfieStrings';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
import './ViewfinderScreen.css';
|
|
7
|
+
import './VideoSelfieLayout.css';
|
|
8
|
+
/** Which purple stage section to render (groups 3, 5 and 6). */
|
|
9
|
+
export type VideoSelfieIdCaptureState = 'default' | 'shown' | 'processing' | 'allGood' | 'error';
|
|
10
|
+
export interface VideoSelfieIdCaptureScreenProps extends Omit<PrizmaScreenShellProps, 'dark' | 'title' | 'children'> {
|
|
11
|
+
/** Module copy — this screen reads the `idCapture` slice (+ shared labels). */
|
|
12
|
+
strings: VideoSelfieStrings;
|
|
13
|
+
/** Which face of the document. Drives the stepper beat only — the frame
|
|
14
|
+
* geometry is identical (Figma draws no title on these sections). */
|
|
15
|
+
side?: VideoSelfieIdSide;
|
|
16
|
+
/** Which document the journey collects — Core `PrizmaIdCapture.type` and the
|
|
17
|
+
* Stepper's own `documentType`. Default `id`. */
|
|
18
|
+
documentType?: VideoSelfieDocumentType;
|
|
19
|
+
/** Which purple stage section to render. Default `default`. */
|
|
20
|
+
state?: VideoSelfieIdCaptureState;
|
|
21
|
+
/** Whether the rejection invites a retry (`6.1`/`6.3`) or is terminal
|
|
22
|
+
* (`6.2`/`6.4`). Read only when `state="error"`. */
|
|
23
|
+
errorSeverity?: VideoSelfieIdErrorSeverity;
|
|
24
|
+
/** Live camera feed (<video>) or sample still (<img>) behind the frame. */
|
|
25
|
+
camera?: ReactNode;
|
|
26
|
+
/** The captured document still, for the states Core draws one in. */
|
|
27
|
+
still?: ReactNode;
|
|
28
|
+
screenId?: string;
|
|
29
|
+
overrides?: PrizmaScreenOverrides;
|
|
30
|
+
onAction?: PrizmaScreenActionHandler;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Video Selfie — the document stage (Archetype D, GUIDELINES.md §6-D; always
|
|
34
|
+
* dark). ONE screen for TWELVE purple sections: `id capture front 3.0–3.3`,
|
|
35
|
+
* `id capture back 5.0–5.3` and every `id capture … errors 6.1–6.4` variant.
|
|
36
|
+
* They are `side` × `state` × `errorSeverity` variants of Core's
|
|
37
|
+
* `PrizmaIdCapture`, which is exactly how the component is axed.
|
|
38
|
+
*
|
|
39
|
+
* Composed like `IdCaptureStageScreen` / `DocumentCaptureCaptureScreen`: the
|
|
40
|
+
* feed runs full-bleed on `.prizma-viewfinder__surface` and
|
|
41
|
+
* `mode="overlay" scrim` cuts a transparent window through the veil, so Core
|
|
42
|
+
* owns the window, the tokenized scrim, the four border treatments, the
|
|
43
|
+
* analyzing sweep and the encrypted row. None of it is re-implemented (§7).
|
|
44
|
+
*
|
|
45
|
+
* Two things this module's Figma does that the foundation does not model, both
|
|
46
|
+
* reported rather than silently reshaped:
|
|
47
|
+
*
|
|
48
|
+
* - **The journey stepper.** Every camera section draws Core's `PrizmaStepper`
|
|
49
|
+
* in the band the logo nav normally occupies, and it is the ONLY difference
|
|
50
|
+
* between `3.0` and `5.0` — drop it and the front and back defaults render
|
|
51
|
+
* identically. No archetype has a slot for it. This screen owns its whole
|
|
52
|
+
* composition (archetype D is a recipe, not a component), so the band lives
|
|
53
|
+
* in `VideoSelfieLayout.css` and carries the foundation's own
|
|
54
|
+
* `--pcs-status-bar` reserve — no new number. The archetype-based screens of
|
|
55
|
+
* this module ship WITHOUT the stepper rather than growing a second copy.
|
|
56
|
+
*
|
|
57
|
+
* - **The status card.** Figma floats a dark rounded card OVER the document
|
|
58
|
+
* ("Processing…", "All good!", "Name verification failed, try again"). Core
|
|
59
|
+
* ships no such container, and inventing one is forbidden (rule 1), so the
|
|
60
|
+
* message rides in the band UNDER the frame using Core's own parts — the
|
|
61
|
+
* `PrizmaLoadingSpinner` for the in-flight beat and `PrizmaSnackbar`
|
|
62
|
+
* (`success` / `error`) for the verdicts. Core's frame border already carries
|
|
63
|
+
* the verdict colour, so nothing is lost but the overlap.
|
|
64
|
+
*
|
|
65
|
+
* No logo and NO encrypted row (the verified tag IS kept — capture screens drop only the logo, #VS-3): all twenty-four sections draw
|
|
66
|
+
* nothing at all between the bottom of the document frame and the bottom of the
|
|
67
|
+
* screen (GUIDELINES §1 — follow the module's section, not the default). Core's
|
|
68
|
+
* `showEncryptedLabel` is therefore pinned `false`: it is a `PrizmaIdCapture`
|
|
69
|
+
* default that other modules' Figma does draw, and leaving it on painted a lock
|
|
70
|
+
* + "All data is encrypted" row on every state of this stage. The label was
|
|
71
|
+
* dropped from `VideoSelfieStrings` with it — no other screen in the module
|
|
72
|
+
* reads one.
|
|
73
|
+
*/
|
|
74
|
+
export declare const VideoSelfieIdCaptureScreen: React.ForwardRefExoticComponent<VideoSelfieIdCaptureScreenProps & React.RefAttributes<HTMLDivElement>>;
|
|
75
|
+
export default VideoSelfieIdCaptureScreen;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { PrizmaIdCapture, } from '@incodetech/prizma-core-web/id-capture';
|
|
5
|
+
import { PrizmaLoadingSpinner } from '@incodetech/prizma-core-web/loading-spinner';
|
|
6
|
+
import { PrizmaSnackbar } from '@incodetech/prizma-core-web/snackbar';
|
|
7
|
+
import { PrizmaStepper } from '@incodetech/prizma-core-web/stepper';
|
|
8
|
+
import { PrizmaTag } from '@incodetech/prizma-core-web/tag';
|
|
9
|
+
import { PrizmaScreenShell } from './ScreenShell';
|
|
10
|
+
import './ScreenLayout.css';
|
|
11
|
+
import './ViewfinderScreen.css';
|
|
12
|
+
import './VideoSelfieLayout.css';
|
|
13
|
+
/** Purple stage state → Core `PrizmaIdCapture` state. The frame border, the
|
|
14
|
+
* analyzing sweep, the scrim and the encrypted row are ALL Core's. */
|
|
15
|
+
const CAPTURE_STATE = {
|
|
16
|
+
default: 'empty',
|
|
17
|
+
shown: 'filled',
|
|
18
|
+
processing: 'analyzing',
|
|
19
|
+
allGood: 'success',
|
|
20
|
+
error: 'error',
|
|
21
|
+
};
|
|
22
|
+
/** Which beat of the seven-step journey each side occupies — front is step 2
|
|
23
|
+
* (the microphone grant is step 1), back is step 3. */
|
|
24
|
+
const STEP = { front: 2, back: 3 };
|
|
25
|
+
/**
|
|
26
|
+
* Video Selfie — the document stage (Archetype D, GUIDELINES.md §6-D; always
|
|
27
|
+
* dark). ONE screen for TWELVE purple sections: `id capture front 3.0–3.3`,
|
|
28
|
+
* `id capture back 5.0–5.3` and every `id capture … errors 6.1–6.4` variant.
|
|
29
|
+
* They are `side` × `state` × `errorSeverity` variants of Core's
|
|
30
|
+
* `PrizmaIdCapture`, which is exactly how the component is axed.
|
|
31
|
+
*
|
|
32
|
+
* Composed like `IdCaptureStageScreen` / `DocumentCaptureCaptureScreen`: the
|
|
33
|
+
* feed runs full-bleed on `.prizma-viewfinder__surface` and
|
|
34
|
+
* `mode="overlay" scrim` cuts a transparent window through the veil, so Core
|
|
35
|
+
* owns the window, the tokenized scrim, the four border treatments, the
|
|
36
|
+
* analyzing sweep and the encrypted row. None of it is re-implemented (§7).
|
|
37
|
+
*
|
|
38
|
+
* Two things this module's Figma does that the foundation does not model, both
|
|
39
|
+
* reported rather than silently reshaped:
|
|
40
|
+
*
|
|
41
|
+
* - **The journey stepper.** Every camera section draws Core's `PrizmaStepper`
|
|
42
|
+
* in the band the logo nav normally occupies, and it is the ONLY difference
|
|
43
|
+
* between `3.0` and `5.0` — drop it and the front and back defaults render
|
|
44
|
+
* identically. No archetype has a slot for it. This screen owns its whole
|
|
45
|
+
* composition (archetype D is a recipe, not a component), so the band lives
|
|
46
|
+
* in `VideoSelfieLayout.css` and carries the foundation's own
|
|
47
|
+
* `--pcs-status-bar` reserve — no new number. The archetype-based screens of
|
|
48
|
+
* this module ship WITHOUT the stepper rather than growing a second copy.
|
|
49
|
+
*
|
|
50
|
+
* - **The status card.** Figma floats a dark rounded card OVER the document
|
|
51
|
+
* ("Processing…", "All good!", "Name verification failed, try again"). Core
|
|
52
|
+
* ships no such container, and inventing one is forbidden (rule 1), so the
|
|
53
|
+
* message rides in the band UNDER the frame using Core's own parts — the
|
|
54
|
+
* `PrizmaLoadingSpinner` for the in-flight beat and `PrizmaSnackbar`
|
|
55
|
+
* (`success` / `error`) for the verdicts. Core's frame border already carries
|
|
56
|
+
* the verdict colour, so nothing is lost but the overlap.
|
|
57
|
+
*
|
|
58
|
+
* No logo and NO encrypted row (the verified tag IS kept — capture screens drop only the logo, #VS-3): all twenty-four sections draw
|
|
59
|
+
* nothing at all between the bottom of the document frame and the bottom of the
|
|
60
|
+
* screen (GUIDELINES §1 — follow the module's section, not the default). Core's
|
|
61
|
+
* `showEncryptedLabel` is therefore pinned `false`: it is a `PrizmaIdCapture`
|
|
62
|
+
* default that other modules' Figma does draw, and leaving it on painted a lock
|
|
63
|
+
* + "All data is encrypted" row on every state of this stage. The label was
|
|
64
|
+
* dropped from `VideoSelfieStrings` with it — no other screen in the module
|
|
65
|
+
* reads one.
|
|
66
|
+
*/
|
|
67
|
+
export const VideoSelfieIdCaptureScreen = forwardRef(({ strings, side = 'front', documentType = 'id', state = 'default', errorSeverity = 'tryAgain', camera, still, screenId = `video-selfie-id-capture-${side}-${state}`, overrides, onAction, className, ...shell }, ref) => {
|
|
68
|
+
const errorLabel = strings.idCapture.errors[errorSeverity];
|
|
69
|
+
return (_jsxs(PrizmaScreenShell, { ref: ref, dark: true, className: className, ...shell, children: [_jsx("div", { className: "prizma-viewfinder__surface", children: camera }), _jsx("div", { className: "video-selfie-stepper", children: _jsx(PrizmaStepper, { steps: 7, currentState: STEP[side], documentType: documentType, completedValueText: strings.stepperCompletedLabel }) }), _jsxs("div", { className: [
|
|
70
|
+
'prizma-viewfinder__content',
|
|
71
|
+
overrides?.align === 'left' ? 'prizma-viewfinder__content--left' : '',
|
|
72
|
+
]
|
|
73
|
+
.filter(Boolean)
|
|
74
|
+
.join(' '), children: [_jsx("div", { className: "video-selfie-band" }), _jsx(PrizmaIdCapture, { type: documentType, state: CAPTURE_STATE[state], isVertical: true, mode: "overlay", scrim: true, showEncryptedLabel: false, still: still }), state === 'processing' ? (_jsx("div", { className: "video-selfie-stage-status", children: _jsx(PrizmaLoadingSpinner, { showTitle: true, titleText: strings.idCapture.processingLabel, loadingLabel: strings.idCapture.processingLabel }) })) : null, state === 'allGood' || state === 'error' ? (_jsx("div", { className: "video-selfie-stage-status", children: state === 'allGood' ? (_jsx(PrizmaSnackbar, { state: "success", role: "status", children: strings.idCapture.successLabel })) : (
|
|
75
|
+
/* NOT `isMultiline`: that modifier switches the row to
|
|
76
|
+
`align-items: flex-start` so an icon anchors to the top of
|
|
77
|
+
WRAPPED text. The rejection copy renders on ONE line, so it
|
|
78
|
+
only pushed the icon 6.9px below the text centre
|
|
79
|
+
(owner-reported 2026-08-19: "the text is not even aligned to
|
|
80
|
+
the icon"). CORE REQUEST: have the Snackbar follow actual
|
|
81
|
+
wrapping rather than a prop the caller has to predict.
|
|
82
|
+
DEVIATIONS #VS-9. */
|
|
83
|
+
_jsx(PrizmaSnackbar, { state: "error", role: "alert", children: errorLabel })) })) : null] }), _jsx("div", { className: "prizma-screen-layout__footer", children: _jsx(PrizmaTag, { label: strings.verifiedLabel }) })] }));
|
|
84
|
+
});
|
|
85
|
+
VideoSelfieIdCaptureScreen.displayName = 'VideoSelfieIdCaptureScreen';
|
|
86
|
+
export default VideoSelfieIdCaptureScreen;
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
/* Video Selfie — module layout additions.
|
|
2
|
+
*
|
|
3
|
+
* ONLY what the foundation archetypes do not already own, and nothing that
|
|
4
|
+
* re-declares an archetype offset. Every value is a token; each departure from
|
|
5
|
+
* GUIDELINES.md is reported back to the owner (see the module's screen files
|
|
6
|
+
* and the agent's `archetypeGaps` report).
|
|
7
|
+
*
|
|
8
|
+
* The module's structural discovery is that EVERY camera screen in the flow —
|
|
9
|
+
* the two document stages, the liveness ring, the two spoken steps and two of
|
|
10
|
+
* the generic errors — draws Core's `PrizmaStepper` in the band the logo nav
|
|
11
|
+
* normally occupies. No archetype has a slot for it (reported), so the three
|
|
12
|
+
* screens whose whole composition this module owns (the document stage and the
|
|
13
|
+
* spoken step) carry the band here.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/* ── Journey stepper band ────────────────────────────────────────────────────
|
|
17
|
+
* Figma draws the Stepper as the first thing under the OS status bar — no logo
|
|
18
|
+
* row above it (`top content` frame, y=54, the Stepper 342 wide at x=24 on
|
|
19
|
+
* every section). The status-bar reserve is NOT a new number: it is the
|
|
20
|
+
* foundation's own `--pcs-status-bar` custom property, the same one
|
|
21
|
+
* `ScreenNav.css` and `ScreenLayout.css`'s `--no-nav` variant read, so a host
|
|
22
|
+
* that draws its own chrome still overrides it in one place.
|
|
23
|
+
*
|
|
24
|
+
* The horizontal inset is the content column's own Spacing/24 gutter — these
|
|
25
|
+
* screens have no `.prizma-screen-layout__content` wrapper (they are camera
|
|
26
|
+
* surfaces), so the band carries the same gutter Core's stage sits in.
|
|
27
|
+
*
|
|
28
|
+
* REPORTED: archetypes B (Capture), C (Processing), F (Result) and G (List)
|
|
29
|
+
* need a `stepper` slot in their nav band so the rest of the module's screens
|
|
30
|
+
* can draw it too. Nothing is worked around here — those screens ship WITHOUT
|
|
31
|
+
* the stepper rather than hand-rolling a second copy of this band. */
|
|
32
|
+
.video-selfie-stepper {
|
|
33
|
+
flex-shrink: 0;
|
|
34
|
+
/* Above PrizmaIdCapture's overlay scrim, which is an absolutely positioned
|
|
35
|
+
* box-shadow that would otherwise paint over this non-positioned sibling —
|
|
36
|
+
* the same reason `IdCaptureLayout.css` lifts its bands. */
|
|
37
|
+
position: relative;
|
|
38
|
+
/* z-index 2, not 1: PrizmaIdCapture's HUD bands ALSO lift themselves to 1, so
|
|
39
|
+
* at the same level DOM order decided and the scrim painted over the stepper
|
|
40
|
+
* (owner-reported 2026-08-19: "the stepper is not correctly visible and looks
|
|
41
|
+
* hidden, probably it's behind the overlay"). 2 is the anchored-chrome layer
|
|
42
|
+
* ScreenLayout.css already reserves for the tag and shutter, which must sit
|
|
43
|
+
* above the scrim for exactly the same reason. DEVIATIONS #VS-2. */
|
|
44
|
+
z-index: 2;
|
|
45
|
+
margin-top: var(--pcs-status-bar, 47px);
|
|
46
|
+
padding-inline: var(--prizma-spacing-24);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/* ── The flexible bands around a camera stage ────────────────────────────────
|
|
50
|
+
* Pure flex distribution — NO padding, NO margin, no spacing token at all. The
|
|
51
|
+
* band exists so the HUD copy (the recording indicator, the stage's status
|
|
52
|
+
* message) sits in the air the stage leaves, instead of the module inventing an
|
|
53
|
+
* offset the archetype layer would otherwise own. */
|
|
54
|
+
.video-selfie-band {
|
|
55
|
+
flex: 1;
|
|
56
|
+
min-height: 0;
|
|
57
|
+
display: flex;
|
|
58
|
+
flex-direction: column;
|
|
59
|
+
align-items: center;
|
|
60
|
+
justify-content: center;
|
|
61
|
+
width: 100%;
|
|
62
|
+
position: relative;
|
|
63
|
+
z-index: 1;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/* ── Recording indicator (10.1 / 11.1 / 11.3 / 11.5) ─────────────────────────
|
|
67
|
+
* A sound-wave glyph over the "Recording…" HUD line. The glyph ink is Core's
|
|
68
|
+
* own Static camera ink — the token `PrizmaCaptureManual` uses for the shutter
|
|
69
|
+
* — so it survives on the always-dark camera surface. The copy itself is the
|
|
70
|
+
* foundation's `.prizma-viewfinder__title`; nothing about it is re-declared. */
|
|
71
|
+
.video-selfie-recording {
|
|
72
|
+
display: flex;
|
|
73
|
+
flex-direction: column;
|
|
74
|
+
align-items: center;
|
|
75
|
+
gap: var(--prizma-spacing-16);
|
|
76
|
+
color: var(--prizma-icon-neutral-50-static);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/* ── The spoken-step card (groups 10 and 11) ─────────────────────────────────
|
|
80
|
+
* Figma layers Core's Modal over the live camera (`modal-light` instance). The
|
|
81
|
+
* safe presenter portals to `document.body`, which would escape the 390×844
|
|
82
|
+
* screen frame and the host's `transform: scale()`, so the screen owns the
|
|
83
|
+
* scrim and the panel and Core owns the card — the recipe Document Capture's
|
|
84
|
+
* method sheet already established (DEVIATIONS #DC-30). */
|
|
85
|
+
.video-selfie-sheet-scrim {
|
|
86
|
+
position: absolute;
|
|
87
|
+
inset: 0;
|
|
88
|
+
z-index: 2;
|
|
89
|
+
background: var(--prizma-surface-overlay);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.video-selfie-sheet-panel {
|
|
93
|
+
position: absolute;
|
|
94
|
+
left: 0;
|
|
95
|
+
right: 0;
|
|
96
|
+
bottom: 0;
|
|
97
|
+
z-index: 3;
|
|
98
|
+
padding: var(--prizma-spacing-16);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/* The confirmation dialog (10.4) is a true centred modal over a dimmed screen,
|
|
102
|
+
* not a bottom-anchored card. */
|
|
103
|
+
.video-selfie-sheet-panel--centered {
|
|
104
|
+
top: 0;
|
|
105
|
+
display: flex;
|
|
106
|
+
align-items: center;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/* The card's verdict mark (10.3 / 11.x success). The glyph itself is the
|
|
110
|
+
* canonical bank icon Core's own `PrizmaTitle` uses for `status: success`
|
|
111
|
+
* (`IconStatusPositive` at Title/Icon/Size); only the INK is set here, because
|
|
112
|
+
* Core's per-status tint lives on `.prizma-title__status-icon--success` and
|
|
113
|
+
* `PrizmaModalContent` has no status slot to inherit it from. Same treatment
|
|
114
|
+
* `IdCaptureLayout.css` gives the camera stage's nav icon. */
|
|
115
|
+
.video-selfie-sheet-status {
|
|
116
|
+
display: flex;
|
|
117
|
+
width: 100%;
|
|
118
|
+
justify-content: center;
|
|
119
|
+
color: var(--prizma-icon-status-positive);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.video-selfie-sheet-status > svg {
|
|
123
|
+
display: block;
|
|
124
|
+
width: var(--prizma-title-icon-size);
|
|
125
|
+
height: var(--prizma-title-icon-size);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/* ── The OS settings walk-through (2.5) ──────────────────────────────────────
|
|
129
|
+
* Two labelled sections inside archetype G's list slot: a numbered step list
|
|
130
|
+
* and a plain note. CONTENT typography only — the offset above the block is
|
|
131
|
+
* the archetype's `__list` Spacing/24 and is not touched. */
|
|
132
|
+
.video-selfie-steps {
|
|
133
|
+
display: flex;
|
|
134
|
+
flex-direction: column;
|
|
135
|
+
gap: var(--prizma-spacing-16);
|
|
136
|
+
width: 100%;
|
|
137
|
+
text-align: start;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
.video-selfie-steps__heading {
|
|
141
|
+
margin: 0;
|
|
142
|
+
font-family: var(--prizma-headline-family);
|
|
143
|
+
font-size: var(--prizma-headline-h5-font-size);
|
|
144
|
+
font-weight: var(--prizma-headline-h5-font-weight);
|
|
145
|
+
line-height: var(--prizma-headline-h5-line-height);
|
|
146
|
+
letter-spacing: var(--prizma-headline-h5-letter-spacing);
|
|
147
|
+
color: var(--prizma-text-body-800-primary);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
.video-selfie-steps__note {
|
|
151
|
+
margin: 0;
|
|
152
|
+
font-size: var(--prizma-body-m-regular-font-size);
|
|
153
|
+
font-weight: var(--prizma-body-m-regular-font-weight);
|
|
154
|
+
line-height: var(--prizma-body-m-regular-line-height);
|
|
155
|
+
color: var(--prizma-text-body-500-secondary);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/* ── The captured document inside the vertical frame ─────────────────────────
|
|
159
|
+
* Groups 3 and 5 draw the ID UPRIGHT in a portrait frame: the card is rotated a
|
|
160
|
+
* quarter turn so its long edge runs down the screen, exactly as `3.2` and
|
|
161
|
+
* `5.2` show it (the licence's text reads bottom-to-top).
|
|
162
|
+
*
|
|
163
|
+
* The sample scans are landscape (328×202). Dropped into a portrait frame with
|
|
164
|
+
* Core's `object-fit: cover` they scaled 4.2× to fill the height and lost their
|
|
165
|
+
* sides — the band of static the owner reported (2026-08-19: "horizontal and
|
|
166
|
+
* zoomed in to fit height, when it should be 90 degrees to fit the frame").
|
|
167
|
+
* Rotating instead of cropping keeps the whole document legible.
|
|
168
|
+
*
|
|
169
|
+
* `width`/`height` are swapped BEFORE the rotation because a rotated element
|
|
170
|
+
* still lays out on its pre-transform box: the image is sized to the frame's
|
|
171
|
+
* height × width, then turned, so it lands exactly frame-sized. No literal —
|
|
172
|
+
* both are percentages of whatever box Core gives it. DEVIATIONS #VS-6.
|
|
173
|
+
*/
|
|
174
|
+
/* The captured document is landscape (a card scan); the VERTICAL frame is
|
|
175
|
+
* portrait. `object-fit: cover` cropped its sides away and blew it up 4.2× —
|
|
176
|
+
* the band of static the owner reported. Figma turns the card a quarter turn
|
|
177
|
+
* instead, so the whole document stays legible with its text running up the
|
|
178
|
+
* side, exactly as `3.2` / `5.2` draw it.
|
|
179
|
+
*
|
|
180
|
+
* The image is sized to the frame's height × width BEFORE the turn, because a
|
|
181
|
+
* rotated element still lays out on its pre-transform box — so after the 90°
|
|
182
|
+
* it lands exactly frame-sized. Both values are percentages of whatever box
|
|
183
|
+
* Core gives it, so nothing is hardcoded. DEVIATIONS #VS-6. */
|
|
184
|
+
.prizma-id-capture--vertical .prizma-id-capture__still {
|
|
185
|
+
/* A size container, so the image can be measured against the frame's OWN
|
|
186
|
+
box — `cqh`/`cqw` below are the only way to swap width and height without
|
|
187
|
+
writing either number down. The frame has definite dimensions, which is
|
|
188
|
+
what `container-type: size` requires. */
|
|
189
|
+
container-type: size;
|
|
190
|
+
display: grid;
|
|
191
|
+
place-items: center;
|
|
192
|
+
overflow: hidden;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
.prizma-id-capture--vertical .prizma-id-capture__still > img {
|
|
196
|
+
/* Swapped on purpose: the image is laid out at the frame's HEIGHT × WIDTH,
|
|
197
|
+
then turned a quarter, so it lands exactly frame-sized. */
|
|
198
|
+
width: 100cqh;
|
|
199
|
+
height: 100cqw;
|
|
200
|
+
max-width: none;
|
|
201
|
+
object-fit: cover;
|
|
202
|
+
transform: rotate(90deg);
|
|
203
|
+
transform-origin: center;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
/* ── Stage status, centred ON the frame ──────────────────────────────────────
|
|
208
|
+
* `3.2` / `5.2` centre the spinner and its "Processing…" caption OVER the
|
|
209
|
+
* document, on the dark rounded container the design uses for stage status —
|
|
210
|
+
* not below the frame, where it sat (owner-reported 2026-08-19: "the processing
|
|
211
|
+
* loader looks broken in the bottom of the capture screen, it should be in the
|
|
212
|
+
* middle"). Absolutely positioned against the viewfinder content so the frame
|
|
213
|
+
* and the bands keep their own flex distribution untouched. DEVIATIONS #VS-7.
|
|
214
|
+
*/
|
|
215
|
+
.video-selfie-stage-status {
|
|
216
|
+
position: absolute;
|
|
217
|
+
inset: 0;
|
|
218
|
+
z-index: 2;
|
|
219
|
+
display: flex;
|
|
220
|
+
align-items: center;
|
|
221
|
+
justify-content: center;
|
|
222
|
+
pointer-events: none;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
.video-selfie-stage-status > * {
|
|
226
|
+
padding: var(--prizma-spacing-16) var(--prizma-spacing-24);
|
|
227
|
+
border-radius: var(--prizma-border-radius-medium);
|
|
228
|
+
background: var(--prizma-surface-neutral-900-80-static);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/* ── Tutorial step rows ──────────────────────────────────────────────────────
|
|
232
|
+
* The <ul> Core's `PrizmaList` would normally supply. Composed here only
|
|
233
|
+
* because the wrapper's icon variants cap at six rows and the tutorial draws
|
|
234
|
+
* seven (#VS-8); the gap is the variant's OWN Spacing/12 — nothing new.
|
|
235
|
+
*/
|
|
236
|
+
.video-selfie-tutorial-list {
|
|
237
|
+
display: flex;
|
|
238
|
+
flex-direction: column;
|
|
239
|
+
align-items: flex-start;
|
|
240
|
+
width: 100%;
|
|
241
|
+
margin: 0;
|
|
242
|
+
padding: 0;
|
|
243
|
+
list-style: none;
|
|
244
|
+
gap: var(--prizma-spacing-12);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/* Step rows — the <ol> `PrizmaList` would supply, composed here only because
|
|
248
|
+
* the wrapper has no variant reaching Core's plain `number` squircle (#VS-16).
|
|
249
|
+
* The gap is the icon family's own Spacing/12; nothing new is declared. */
|
|
250
|
+
.video-selfie-steps__rows {
|
|
251
|
+
display: flex;
|
|
252
|
+
flex-direction: column;
|
|
253
|
+
align-items: flex-start;
|
|
254
|
+
width: 100%;
|
|
255
|
+
margin: 0;
|
|
256
|
+
padding: 0;
|
|
257
|
+
list-style: none;
|
|
258
|
+
gap: var(--prizma-spacing-12);
|
|
259
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type PrizmaListScreenProps } from './ListScreen';
|
|
3
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
4
|
+
import type { VideoSelfieStrings } from './VideoSelfieStrings';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
export interface VideoSelfiePermissionRequiredScreenProps extends Omit<PrizmaListScreenProps, 'status' | 'title' | 'subtitle' | 'children' | 'ctaLabel' | 'secondaryCtaLabel' | 'linkLabel' | 'verifiedLabel' | 'navLabel'> {
|
|
7
|
+
/** Module copy — this screen reads the `permission.required` slice. */
|
|
8
|
+
strings: VideoSelfieStrings;
|
|
9
|
+
screenId?: string;
|
|
10
|
+
overrides?: PrizmaScreenOverrides;
|
|
11
|
+
onAction?: PrizmaScreenActionHandler;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Video Selfie — "Camera permission is required", built on the List archetype
|
|
15
|
+
* (GUIDELINES.md §6-G). Figma: purple section `video selfie - permissions
|
|
16
|
+
* 2.2 - permission required`.
|
|
17
|
+
*
|
|
18
|
+
* The same shape ID Capture's permission screen already ships on this
|
|
19
|
+
* archetype: the warning status mark over the title, three reassurance rows in
|
|
20
|
+
* the middle, and a band whose tertiary link ("Quit process") sits ABOVE the
|
|
21
|
+
* primary — archetype G's own fixed position for the link, and where Figma
|
|
22
|
+
* draws it.
|
|
23
|
+
*
|
|
24
|
+
* The frame ends at the "Allow permission" button — no verified tag — so
|
|
25
|
+
* `showFooter` defaults to `true` (owner rule #PI-8/#F-34 — the chrome is
|
|
26
|
+
* constant across a module's states), as on all three permission sections. The
|
|
27
|
+
* tutorial sections DO draw the tag, which is what makes this a deliberate
|
|
28
|
+
* difference rather than an omission.
|
|
29
|
+
*
|
|
30
|
+
* Figma draws the orange mark as a standalone warning glyph above the title;
|
|
31
|
+
* Core's `PrizmaTitle` models exactly that as `icon={{ type: 'status' }}`, so
|
|
32
|
+
* the archetype's `status="warning"` carries it and no glyph slot is needed.
|
|
33
|
+
*/
|
|
34
|
+
export declare const VideoSelfiePermissionRequiredScreen: React.ForwardRefExoticComponent<VideoSelfiePermissionRequiredScreenProps & React.RefAttributes<HTMLDivElement>>;
|
|
35
|
+
export default VideoSelfiePermissionRequiredScreen;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { IconApproval, IconCamera, IconIdFrontScan } 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
|
+
* The three reassurance rows, in Figma order: what the camera is used for, what
|
|
10
|
+
* it protects against, and why it cannot be skipped. Canonical bank glyphs, one
|
|
11
|
+
* per row — nothing drawn here (§10).
|
|
12
|
+
*/
|
|
13
|
+
const ROW_ICONS = [
|
|
14
|
+
_jsx(IconCamera, { size: "m" }, "camera"),
|
|
15
|
+
_jsx(IconIdFrontScan, { size: "m" }, "scan"),
|
|
16
|
+
_jsx(IconApproval, { size: "m" }, "approval"),
|
|
17
|
+
];
|
|
18
|
+
/**
|
|
19
|
+
* Video Selfie — "Camera permission is required", built on the List archetype
|
|
20
|
+
* (GUIDELINES.md §6-G). Figma: purple section `video selfie - permissions
|
|
21
|
+
* 2.2 - permission required`.
|
|
22
|
+
*
|
|
23
|
+
* The same shape ID Capture's permission screen already ships on this
|
|
24
|
+
* archetype: the warning status mark over the title, three reassurance rows in
|
|
25
|
+
* the middle, and a band whose tertiary link ("Quit process") sits ABOVE the
|
|
26
|
+
* primary — archetype G's own fixed position for the link, and where Figma
|
|
27
|
+
* draws it.
|
|
28
|
+
*
|
|
29
|
+
* The frame ends at the "Allow permission" button — no verified tag — so
|
|
30
|
+
* `showFooter` defaults to `true` (owner rule #PI-8/#F-34 — the chrome is
|
|
31
|
+
* constant across a module's states), as on all three permission sections. The
|
|
32
|
+
* tutorial sections DO draw the tag, which is what makes this a deliberate
|
|
33
|
+
* difference rather than an omission.
|
|
34
|
+
*
|
|
35
|
+
* Figma draws the orange mark as a standalone warning glyph above the title;
|
|
36
|
+
* Core's `PrizmaTitle` models exactly that as `icon={{ type: 'status' }}`, so
|
|
37
|
+
* the archetype's `status="warning"` carries it and no glyph slot is needed.
|
|
38
|
+
*/
|
|
39
|
+
export const VideoSelfiePermissionRequiredScreen = forwardRef(({ strings, screenId = 'video-selfie-permission-required', showHeader = true, showFooter = true, overrides, onAction, ...shell }, ref) => (_jsx(PrizmaListScreen, { ref: ref, showHeader: showHeader, showFooter: showFooter, status: "warning", title: strings.permission.required.title, ctaLabel: strings.permission.required.ctaLabel, linkLabel: strings.permission.required.quitLabel, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell, children: _jsx(PrizmaCardListCommonIssues, { items: strings.permission.required.rows.map((row, i) => ({
|
|
40
|
+
icon: ROW_ICONS[i % ROW_ICONS.length],
|
|
41
|
+
title: row,
|
|
42
|
+
showSubtitle: false,
|
|
43
|
+
})) }) })));
|
|
44
|
+
VideoSelfiePermissionRequiredScreen.displayName = 'VideoSelfiePermissionRequiredScreen';
|
|
45
|
+
export default VideoSelfiePermissionRequiredScreen;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import React, { type ReactNode } from 'react';
|
|
2
|
+
import { type PrizmaTutorialScreenProps } from './TutorialScreen';
|
|
3
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
4
|
+
import type { VideoSelfieStrings } from './VideoSelfieStrings';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
export interface VideoSelfiePermissionScreenProps extends Omit<PrizmaTutorialScreenProps, 'title' | 'subtitle' | 'disclaimer' | 'ctaLabel' | 'ctaLoadingLabel' | 'linkLabel' | 'verifiedLabel' | 'navLabel' | 'illustration'> {
|
|
7
|
+
/** Module copy — this screen reads the `permission.request` slice. */
|
|
8
|
+
strings: VideoSelfieStrings;
|
|
9
|
+
/** Replace the default Core artwork (a host with its own permission art). */
|
|
10
|
+
illustration?: ReactNode;
|
|
11
|
+
screenId?: string;
|
|
12
|
+
overrides?: PrizmaScreenOverrides;
|
|
13
|
+
onAction?: PrizmaScreenActionHandler;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Video Selfie — the in-page camera request, built on the Tutorial archetype
|
|
17
|
+
* (GUIDELINES.md §6-A). Figma: purple section `video selfie - permissions
|
|
18
|
+
* 2.0 - web`.
|
|
19
|
+
*
|
|
20
|
+
* Archetype A covers it exactly: title block → one centred illustration in the
|
|
21
|
+
* flexible middle → CTA → tertiary link. The link ("Learn more") sits BELOW the
|
|
22
|
+
* primary, which is archetype A's own fixed position for it (the mirror of G) —
|
|
23
|
+
* and is where Figma draws it too.
|
|
24
|
+
*
|
|
25
|
+
* Figma draws no logo on this section; the nav row is still RESERVED
|
|
26
|
+
* (`showHeader={false}`) so the offsets match every other screen — owner rule
|
|
27
|
+
* 2026-08-18.
|
|
28
|
+
*
|
|
29
|
+
* It draws no verified tag either — the frame ends at "Learn more" — so
|
|
30
|
+
* `showFooter` defaults to `true`: Figma draws these sections bare, but the
|
|
31
|
+
* owner rule keeps the chrome constant across a module's states so nothing
|
|
32
|
+
* shifts between them (#PI-8, #F-34).
|
|
33
|
+
* The tutorial sections `1.0` / `1.2` DO draw the tag, which is what makes the
|
|
34
|
+
* permission frames a deliberate difference rather than an omission. The
|
|
35
|
+
* `#PI-8` / `#F-34` carve-out that keeps the chrome on bare frames covers
|
|
36
|
+
* connectivity and generic-error screens only; none of these is one.
|
|
37
|
+
*
|
|
38
|
+
* The artwork is Core's `PrizmaIllustrationSelfie`. Figma draws a bespoke
|
|
39
|
+
* camera-bracket cluster (four capability icons inside a viewfinder crop, with
|
|
40
|
+
* a check badge) that the Core illustration bank does not ship; drawing it here
|
|
41
|
+
* would mean inventing an asset (rule 1, §10), so the nearest canonical
|
|
42
|
+
* illustration is used and the gap is reported.
|
|
43
|
+
*
|
|
44
|
+
* Sections `2.1 - iOS+Android` and `2.4 - system modal` of the same group are
|
|
45
|
+
* NOT built: they are the OS's own permission alert and screen-capture dialog
|
|
46
|
+
* drawn as documentation. A screen composed only of Core components cannot
|
|
47
|
+
* render OS chrome, and faking it would ship a fake system UI — the same call
|
|
48
|
+
* ID Capture (#IDC-26) and Document Capture (#DC-20) already made.
|
|
49
|
+
*/
|
|
50
|
+
export declare const VideoSelfiePermissionScreen: React.ForwardRefExoticComponent<VideoSelfiePermissionScreenProps & React.RefAttributes<HTMLDivElement>>;
|
|
51
|
+
export default VideoSelfiePermissionScreen;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { PrizmaIllustrationSelfie } from '@incodetech/prizma-core-web/illustration-selfie';
|
|
5
|
+
import { PrizmaTutorialScreen } from './TutorialScreen';
|
|
6
|
+
import './ScreenLayout.css';
|
|
7
|
+
/**
|
|
8
|
+
* Video Selfie — the in-page camera request, built on the Tutorial archetype
|
|
9
|
+
* (GUIDELINES.md §6-A). Figma: purple section `video selfie - permissions
|
|
10
|
+
* 2.0 - web`.
|
|
11
|
+
*
|
|
12
|
+
* Archetype A covers it exactly: title block → one centred illustration in the
|
|
13
|
+
* flexible middle → CTA → tertiary link. The link ("Learn more") sits BELOW the
|
|
14
|
+
* primary, which is archetype A's own fixed position for it (the mirror of G) —
|
|
15
|
+
* and is where Figma draws it too.
|
|
16
|
+
*
|
|
17
|
+
* Figma draws no logo on this section; the nav row is still RESERVED
|
|
18
|
+
* (`showHeader={false}`) so the offsets match every other screen — owner rule
|
|
19
|
+
* 2026-08-18.
|
|
20
|
+
*
|
|
21
|
+
* It draws no verified tag either — the frame ends at "Learn more" — so
|
|
22
|
+
* `showFooter` defaults to `true`: Figma draws these sections bare, but the
|
|
23
|
+
* owner rule keeps the chrome constant across a module's states so nothing
|
|
24
|
+
* shifts between them (#PI-8, #F-34).
|
|
25
|
+
* The tutorial sections `1.0` / `1.2` DO draw the tag, which is what makes the
|
|
26
|
+
* permission frames a deliberate difference rather than an omission. The
|
|
27
|
+
* `#PI-8` / `#F-34` carve-out that keeps the chrome on bare frames covers
|
|
28
|
+
* connectivity and generic-error screens only; none of these is one.
|
|
29
|
+
*
|
|
30
|
+
* The artwork is Core's `PrizmaIllustrationSelfie`. Figma draws a bespoke
|
|
31
|
+
* camera-bracket cluster (four capability icons inside a viewfinder crop, with
|
|
32
|
+
* a check badge) that the Core illustration bank does not ship; drawing it here
|
|
33
|
+
* would mean inventing an asset (rule 1, §10), so the nearest canonical
|
|
34
|
+
* illustration is used and the gap is reported.
|
|
35
|
+
*
|
|
36
|
+
* Sections `2.1 - iOS+Android` and `2.4 - system modal` of the same group are
|
|
37
|
+
* NOT built: they are the OS's own permission alert and screen-capture dialog
|
|
38
|
+
* drawn as documentation. A screen composed only of Core components cannot
|
|
39
|
+
* render OS chrome, and faking it would ship a fake system UI — the same call
|
|
40
|
+
* ID Capture (#IDC-26) and Document Capture (#DC-20) already made.
|
|
41
|
+
*/
|
|
42
|
+
export const VideoSelfiePermissionScreen = forwardRef(({ strings, illustration, screenId = 'video-selfie-permission-request', showHeader = true, showFooter = true, overrides, onAction, ...shell }, ref) => (_jsx(PrizmaTutorialScreen, { ref: ref, showHeader: showHeader, showFooter: showFooter, title: strings.permission.request.title, subtitle: strings.permission.request.subtitle, ctaLabel: strings.permission.request.ctaLabel, linkLabel: strings.permission.request.learnMoreLabel, illustration: illustration ?? _jsx(PrizmaIllustrationSelfie, { decorative: true }), verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell })));
|
|
43
|
+
VideoSelfiePermissionScreen.displayName = 'VideoSelfiePermissionScreen';
|
|
44
|
+
export default VideoSelfiePermissionScreen;
|
|
@@ -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 { VideoSelfieStrings } from './VideoSelfieStrings';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
export interface VideoSelfieProcessingScreenProps extends Omit<PrizmaProcessingScreenProps, 'status' | 'title' | 'subtitle' | 'verifiedLabel' | 'navLabel'> {
|
|
7
|
+
/** Module copy — this screen reads the `processing` slice. */
|
|
8
|
+
strings: VideoSelfieStrings;
|
|
9
|
+
screenId?: string;
|
|
10
|
+
overrides?: PrizmaScreenOverrides;
|
|
11
|
+
onAction?: PrizmaScreenActionHandler;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Video Selfie — the upload/analysis wait, built on the Processing archetype
|
|
15
|
+
* (GUIDELINES.md §6-C). Figma: purple section `video selfie - processing
|
|
16
|
+
* 12.0 - default`.
|
|
17
|
+
*
|
|
18
|
+
* The pure spinner case: a centred spinner over the title and its "kindly hold
|
|
19
|
+
* on" line, the verified tag anchored at the bottom, no CTA — which is exactly
|
|
20
|
+
* why archetype C exists and why this is not archetype F. The camera has closed
|
|
21
|
+
* by this point, so the screen follows the app theme like any ordinary screen.
|
|
22
|
+
*
|
|
23
|
+
* Figma draws no logo on the section; the nav row is still RESERVED
|
|
24
|
+
* (`showHeader={false}`) so the offsets match every other screen (owner rule
|
|
25
|
+
* 2026-08-18).
|
|
26
|
+
*/
|
|
27
|
+
export declare const VideoSelfieProcessingScreen: React.ForwardRefExoticComponent<VideoSelfieProcessingScreenProps & React.RefAttributes<HTMLDivElement>>;
|
|
28
|
+
export default VideoSelfieProcessingScreen;
|
|
@@ -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
|
+
* Video Selfie — the upload/analysis wait, built on the Processing archetype
|
|
8
|
+
* (GUIDELINES.md §6-C). Figma: purple section `video selfie - processing
|
|
9
|
+
* 12.0 - default`.
|
|
10
|
+
*
|
|
11
|
+
* The pure spinner case: a centred spinner over the title and its "kindly hold
|
|
12
|
+
* on" line, the verified tag anchored at the bottom, no CTA — which is exactly
|
|
13
|
+
* why archetype C exists and why this is not archetype F. The camera has closed
|
|
14
|
+
* by this point, so the screen follows the app theme like any ordinary screen.
|
|
15
|
+
*
|
|
16
|
+
* Figma draws no logo on the section; the nav row is still RESERVED
|
|
17
|
+
* (`showHeader={false}`) so the offsets match every other screen (owner rule
|
|
18
|
+
* 2026-08-18).
|
|
19
|
+
*/
|
|
20
|
+
export const VideoSelfieProcessingScreen = forwardRef(({ strings, screenId = 'video-selfie-processing', showHeader = true, overrides, onAction, ...shell }, ref) => (_jsx(PrizmaProcessingScreen, { ref: ref, showHeader: showHeader, status: "loading", title: strings.processing.title, subtitle: strings.processing.subtitle, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell })));
|
|
21
|
+
VideoSelfieProcessingScreen.displayName = 'VideoSelfieProcessingScreen';
|
|
22
|
+
export default VideoSelfieProcessingScreen;
|