@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,222 @@
|
|
|
1
|
+
import type { PrizmaConsentSegment } from '@incodetech/prizma-core-web/checkbox';
|
|
2
|
+
/**
|
|
3
|
+
* The two readings of the accept-and-sign screen. They are the same skeleton —
|
|
4
|
+
* title block → document row → consent stack → CTA — with a different clause
|
|
5
|
+
* set, a different CTA verb and, on `certificate`, a link to the application
|
|
6
|
+
* form:
|
|
7
|
+
* - `accept` — `QSign.AcceptSign.*` in the generic parent: "Accept and
|
|
8
|
+
* sign", five QTSP/eIDAS clauses, "Finish signing", no link.
|
|
9
|
+
* - `certificate` — the same sections in the `x Namirial` parent: "Review and
|
|
10
|
+
* sign", two clauses, "Sign", plus the "Certificate application form" link
|
|
11
|
+
* that opens the `terms` document screen.
|
|
12
|
+
*/
|
|
13
|
+
export type QualifiedSignatureAcceptVariant = 'accept' | 'certificate';
|
|
14
|
+
/**
|
|
15
|
+
* The three purple states each accept section is drawn in:
|
|
16
|
+
* - `default` — every box unticked, the CTA in Core's disabled surface
|
|
17
|
+
* (`QSign.AcceptSign.default`)
|
|
18
|
+
* - `selected` — every box ticked, the CTA live (`…selectedCheckox`)
|
|
19
|
+
* - `loading` — the clauses and the document action greyed while the signature
|
|
20
|
+
* is created, spinner in the CTA (`…loadingsign`). The spinner rides the
|
|
21
|
+
* BUTTON, never a field — the standing module rule (DEVIATIONS #PI-5).
|
|
22
|
+
*/
|
|
23
|
+
export type QualifiedSignatureAcceptState = 'default' | 'selected' | 'loading';
|
|
24
|
+
/**
|
|
25
|
+
* The two full-surface document screens:
|
|
26
|
+
* - `document` — `QSign.AcceptSign.viewdoc`, the contract itself behind the
|
|
27
|
+
* document row's "View" action
|
|
28
|
+
* - `terms` — `QSign.T&C`, the certificate application form behind the
|
|
29
|
+
* partner variant's link
|
|
30
|
+
*/
|
|
31
|
+
export type QualifiedSignatureDocumentVariant = 'document' | 'terms';
|
|
32
|
+
/**
|
|
33
|
+
* The FIVE verdict frames. Both purple parents draw success twice and error
|
|
34
|
+
* twice, and each pair differs in what the signer can do next:
|
|
35
|
+
* - `signed` — `QSign.success` (10196:67485): the positive mark with
|
|
36
|
+
* "Continue" and a "Download PDF" underlined link
|
|
37
|
+
* - `signedPlain` — `QSign.success` (10196:67494): the same mark and line
|
|
38
|
+
* with NO actions at all
|
|
39
|
+
* - `signedPartner` — the `x Namirial` parent's own success frame (6086:40135),
|
|
40
|
+
* a THIRD reading rather than a copy of either: the mark and line, a signer
|
|
41
|
+
* attribution row, then a STACKED pair — "Done" primary above a "Download
|
|
42
|
+
* document" OUTLINED secondary. The outlined button is a different control
|
|
43
|
+
* from `signed`'s underlined link, so it gets its own slice
|
|
44
|
+
* - `error` — `QSign.AcceptSign.error` (10196:67436): the warning mark
|
|
45
|
+
* over "Something went wrong", no actions
|
|
46
|
+
* - `errorRetry` — the SECOND error frame both parents draw (10196:67445 /
|
|
47
|
+
* the partner's 8363:21429): the same warning mark over "Signature failed"
|
|
48
|
+
* plus a full-width "Try again" primary. This is the only recovery
|
|
49
|
+
* affordance anywhere in the signing flow
|
|
50
|
+
*/
|
|
51
|
+
export type QualifiedSignatureResultVariant = 'signed' | 'signedPlain' | 'signedPartner' | 'error' | 'errorRetry';
|
|
52
|
+
/**
|
|
53
|
+
* The two readings of the in-flight screen:
|
|
54
|
+
* - `processing` — `QSign.AcceptSign.processing` (10196:67395): spinner + H2,
|
|
55
|
+
* nothing else on the frame
|
|
56
|
+
* - `signing` — the partner's own 6086:39544: "Creating your signature…"
|
|
57
|
+
* under the spinner PLUS a bottom-anchored attribution row ("Signing as …")
|
|
58
|
+
* sitting immediately above the verified tag, not under the title
|
|
59
|
+
*/
|
|
60
|
+
export type QualifiedSignatureProcessingVariant = 'processing' | 'signing';
|
|
61
|
+
/**
|
|
62
|
+
* One consent clause of the accept screen. Runtime DATA, not module copy — the
|
|
63
|
+
* clause set is written by the Qualified Trust Service Provider and changes with
|
|
64
|
+
* it (five Incode-QTSP clauses in one purple parent, two Namirial clauses in the
|
|
65
|
+
* other), exactly as Phone Input takes its dial codes and CURP its state
|
|
66
|
+
* catalogue as data rather than strings.
|
|
67
|
+
*
|
|
68
|
+
* `segments` is Core's OWN `PrizmaConsentSegment[]`: plain strings render as
|
|
69
|
+
* copy, objects render as inline links inside the clause — which is how the
|
|
70
|
+
* fourth Incode clause carries both "Terms of Use" and "Privacy Policy" without
|
|
71
|
+
* either being hand-rolled.
|
|
72
|
+
*/
|
|
73
|
+
export interface QualifiedSignatureTerm {
|
|
74
|
+
/** Stable key for the row (also the value reported back by a host). */
|
|
75
|
+
id: string;
|
|
76
|
+
/** The clause body, as Core's consent segments. */
|
|
77
|
+
segments: PrizmaConsentSegment[];
|
|
78
|
+
}
|
|
79
|
+
/** Copy for one reading of the accept-and-sign screen. */
|
|
80
|
+
export interface QualifiedSignatureAcceptCopy {
|
|
81
|
+
/** H2 ("Accept and sign" / "Review and sign"). */
|
|
82
|
+
title: string;
|
|
83
|
+
/** H5 below the title. */
|
|
84
|
+
subtitle?: string;
|
|
85
|
+
/** Primary CTA ("Finish signing" / "Sign"). */
|
|
86
|
+
ctaLabel: string;
|
|
87
|
+
/** Accessible busy label while the signature is created (`loading`). */
|
|
88
|
+
ctaLoadingLabel?: string;
|
|
89
|
+
/**
|
|
90
|
+
* Underlined tertiary link below the primary — the partner variant's
|
|
91
|
+
* "Certificate application form", which opens the `terms` document screen.
|
|
92
|
+
* Emits `secondary` so a host can tell it from the primary (DEVIATIONS #PI-10).
|
|
93
|
+
*/
|
|
94
|
+
linkLabel?: string;
|
|
95
|
+
}
|
|
96
|
+
export interface QualifiedSignatureStrings {
|
|
97
|
+
/** "verified by" attribution in the footer tag. */
|
|
98
|
+
verifiedLabel: string;
|
|
99
|
+
/** Accessible name for the logo nav row. */
|
|
100
|
+
navLabel?: string;
|
|
101
|
+
/** QSign.upload.default — the intro that asks for the file. */
|
|
102
|
+
upload: {
|
|
103
|
+
/** H2 ("Upload a document to sign"). */
|
|
104
|
+
title: string;
|
|
105
|
+
/** H5 ("Supports PDF files"). */
|
|
106
|
+
subtitle?: string;
|
|
107
|
+
/** Hint above the CTA. The purple section draws none. */
|
|
108
|
+
disclaimer?: string;
|
|
109
|
+
/** Primary CTA ("Upload document"). */
|
|
110
|
+
ctaLabel: string;
|
|
111
|
+
};
|
|
112
|
+
/** QSign.reviewDoc.default — the uploaded file confirmed before signing. */
|
|
113
|
+
review: {
|
|
114
|
+
/** H2 ("Review your document"). */
|
|
115
|
+
title: string;
|
|
116
|
+
/** H5 ("Make sure you've selected the correct file…"). */
|
|
117
|
+
subtitle?: string;
|
|
118
|
+
/** Primary CTA ("Continue"). */
|
|
119
|
+
ctaLabel: string;
|
|
120
|
+
/** Secondary CTA ("Replace"). */
|
|
121
|
+
replaceLabel: string;
|
|
122
|
+
/** The reassurance row under the card ("All data is encrypted"). */
|
|
123
|
+
encryptedLabel?: string;
|
|
124
|
+
};
|
|
125
|
+
/** QSign.AcceptSign.{default,selectedCheckox,loadingsign} — both readings. */
|
|
126
|
+
accept: {
|
|
127
|
+
/** Action on the document row — Core's tertiary link ("View"). */
|
|
128
|
+
viewLabel: string;
|
|
129
|
+
/** Accessible name for the consent stack. */
|
|
130
|
+
termsLabel?: string;
|
|
131
|
+
/** The generic five-clause reading. */
|
|
132
|
+
accept: QualifiedSignatureAcceptCopy;
|
|
133
|
+
/** The partner two-clause reading. */
|
|
134
|
+
certificate: QualifiedSignatureAcceptCopy;
|
|
135
|
+
};
|
|
136
|
+
/** The two full-surface document screens. */
|
|
137
|
+
document: {
|
|
138
|
+
/**
|
|
139
|
+
* QSign.AcceptSign.viewdoc. **The purple section draws no heading at all**
|
|
140
|
+
* — GUIDELINES §4 ("every screen has exactly one H2") is the side that wins,
|
|
141
|
+
* so the screen carries one and the Figma frame is the side to change
|
|
142
|
+
* (module deviation row). Keep it short: it sits above the page.
|
|
143
|
+
*/
|
|
144
|
+
document: {
|
|
145
|
+
title: string;
|
|
146
|
+
};
|
|
147
|
+
/** QSign.T&C ("Certificate Application Form"), left-aligned in Figma. */
|
|
148
|
+
terms: {
|
|
149
|
+
title: string;
|
|
150
|
+
};
|
|
151
|
+
};
|
|
152
|
+
/** The two in-flight screens. */
|
|
153
|
+
processing: {
|
|
154
|
+
/** QSign.AcceptSign.processing — the pure spinner screen. */
|
|
155
|
+
processing: {
|
|
156
|
+
/** H2 ("Processing…"). */
|
|
157
|
+
title: string;
|
|
158
|
+
subtitle?: string;
|
|
159
|
+
};
|
|
160
|
+
/** The partner's own in-flight frame. */
|
|
161
|
+
signing: {
|
|
162
|
+
/** H2 under the spinner ("Creating your signature…"). */
|
|
163
|
+
title: string;
|
|
164
|
+
subtitle?: string;
|
|
165
|
+
/**
|
|
166
|
+
* The attribution row anchored at the BOTTOM of the frame, immediately
|
|
167
|
+
* above the verified tag ("Signing as Maria Andersson").
|
|
168
|
+
*
|
|
169
|
+
* ONE composed line, not a prefix the screen concatenates a name onto:
|
|
170
|
+
* the host's locale pack interpolates the signer, exactly as Phone
|
|
171
|
+
* Input's OTP subtitle carries the masked destination number.
|
|
172
|
+
*/
|
|
173
|
+
signingAsLabel: string;
|
|
174
|
+
};
|
|
175
|
+
};
|
|
176
|
+
/** The five verdict screens. */
|
|
177
|
+
result: {
|
|
178
|
+
/** QSign.success with actions ("Signed successfully!" + "Download PDF"). */
|
|
179
|
+
signed: {
|
|
180
|
+
title: string;
|
|
181
|
+
subtitle?: string;
|
|
182
|
+
/** Primary CTA ("Continue"). */
|
|
183
|
+
ctaLabel: string;
|
|
184
|
+
/** Underlined tertiary link ("Download PDF"). Emits `secondary`. */
|
|
185
|
+
downloadLabel?: string;
|
|
186
|
+
};
|
|
187
|
+
/** QSign.success drawn with no actions. */
|
|
188
|
+
signedPlain: {
|
|
189
|
+
title: string;
|
|
190
|
+
subtitle?: string;
|
|
191
|
+
};
|
|
192
|
+
/** The partner's success frame — attribution row over a STACKED pair. */
|
|
193
|
+
signedPartner: {
|
|
194
|
+
title: string;
|
|
195
|
+
subtitle?: string;
|
|
196
|
+
/**
|
|
197
|
+
* The attribution row above the buttons ("Signed by Maria Andersson ·
|
|
198
|
+
* 17 Jun 2026"). ONE composed line for the same reason as
|
|
199
|
+
* `processing.signing.signingAsLabel` — the locale pack owns the order of
|
|
200
|
+
* signer and date.
|
|
201
|
+
*/
|
|
202
|
+
signedByLabel: string;
|
|
203
|
+
/** Primary CTA ("Done"). Emits `cta`. */
|
|
204
|
+
ctaLabel: string;
|
|
205
|
+
/** OUTLINED secondary below the primary ("Download document"). Emits
|
|
206
|
+
* `secondary`. A real Button, not `signed`'s underlined link. */
|
|
207
|
+
secondaryCtaLabel: string;
|
|
208
|
+
};
|
|
209
|
+
/** QSign.AcceptSign.error ("Something went wrong"). Figma draws no button. */
|
|
210
|
+
error: {
|
|
211
|
+
title: string;
|
|
212
|
+
subtitle?: string;
|
|
213
|
+
};
|
|
214
|
+
/** The retry frame ("Signature failed" + "Try again"). */
|
|
215
|
+
errorRetry: {
|
|
216
|
+
title: string;
|
|
217
|
+
subtitle?: string;
|
|
218
|
+
/** Full-width primary CTA ("Try again"). Emits `cta`. */
|
|
219
|
+
ctaLabel: string;
|
|
220
|
+
};
|
|
221
|
+
};
|
|
222
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// Qualified Signature — copy contract.
|
|
2
|
+
//
|
|
3
|
+
// Figma: `✍️ Signature (Qualified)` (XO9YGKlEsGUyag8CGbSUsi, canvas 6086:28669).
|
|
4
|
+
// TWO purple parent sections, which are the SAME flow drawn twice:
|
|
5
|
+
//
|
|
6
|
+
// `✍️ Signature (Qualified) - Screens specs + Localization` (10196:67086)
|
|
7
|
+
// 1.QSign.uploadDocument → QSign.upload.default · QSign.reviewDoc.default
|
|
8
|
+
// (+ QSign.upload.select — the iOS Files app)
|
|
9
|
+
// QSign.AcceptSign → default · selectedCheckox · loadingsign ·
|
|
10
|
+
// processing · viewdoc
|
|
11
|
+
// Qsign.error → QSign.AcceptSign.error
|
|
12
|
+
// Qsign.success → QSign.success ×2 (with and without actions)
|
|
13
|
+
//
|
|
14
|
+
// `✍️ Signature (Qualified) x Namirial …` (6074:64811) — the partner reading of
|
|
15
|
+
// the SAME AcceptSign / error / success frames, plus `QSign.T&C`, the
|
|
16
|
+
// certificate-application text the partner variant links to.
|
|
17
|
+
//
|
|
18
|
+
// This is the regulated sibling of Electronic Signature: the extra steps are the
|
|
19
|
+
// eIDAS/QTSP consent clauses the signer must tick before a Qualified Electronic
|
|
20
|
+
// Signature can be created, and the certificate-application form behind them.
|
|
21
|
+
//
|
|
22
|
+
// No hardcoded English anywhere in a screen: every visible string arrives here,
|
|
23
|
+
// so the host's locale pack drives the module (the Figma file ships ES + PT
|
|
24
|
+
// columns beside the EN one).
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import React, { type ReactNode } from 'react';
|
|
2
|
+
import { type PrizmaTutorialScreenProps } from './TutorialScreen';
|
|
3
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
4
|
+
import type { QualifiedSignatureStrings } from './QualifiedSignatureStrings';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
export interface QualifiedSignatureUploadScreenProps extends Omit<PrizmaTutorialScreenProps, 'title' | 'subtitle' | 'disclaimer' | 'ctaLabel' | 'verifiedLabel' | 'navLabel'> {
|
|
7
|
+
/** Module copy — this screen reads the `upload` slice. */
|
|
8
|
+
strings: QualifiedSignatureStrings;
|
|
9
|
+
/** Replace the document illustration (a host may ship its own artwork). */
|
|
10
|
+
illustration?: ReactNode;
|
|
11
|
+
screenId?: string;
|
|
12
|
+
overrides?: PrizmaScreenOverrides;
|
|
13
|
+
onAction?: PrizmaScreenActionHandler;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Qualified Signature — the intro that asks for the file, built on the Tutorial
|
|
17
|
+
* archetype (GUIDELINES.md §6-A, `PrizmaTutorialScreen`).
|
|
18
|
+
*
|
|
19
|
+
* Figma: purple section `QSign.upload.default` (10196:67095). Measured off the
|
|
20
|
+
* 390 frame (CONTENT 654, `top container` 342×127): nav 8→52 · Title 68→127
|
|
21
|
+
* (nav + Spacing/24) · `illustration container` flexes · `Call to Actions`
|
|
22
|
+
* 536→638 = the primary + the Tag. Exactly the archetype's own rhythm, so this
|
|
23
|
+
* file declares no layout.
|
|
24
|
+
*
|
|
25
|
+
* The illustration is `DocumentCaptureIllustration` — NOT a fourth inline copy
|
|
26
|
+
* of the same artwork. The Figma `Illustrations` frame here is 310.47 × 325 and
|
|
27
|
+
* Document Capture's is 342 × 358: the SAME ratio to five decimals (0.90775),
|
|
28
|
+
* with the same three layers (halo ellipse `bg` · `documents` page · the
|
|
29
|
+
* `frame-border` outline), i.e. one asset drawn at two scales. Core still ships
|
|
30
|
+
* no document illustration, so the standing request stands — DEVIATIONS #DC-21
|
|
31
|
+
* asked to promote it to `PrizmaIllustrationDocument`; a second module now
|
|
32
|
+
* depends on a Document-Capture-named export, which is the strongest argument
|
|
33
|
+
* yet for the promotion.
|
|
34
|
+
*
|
|
35
|
+
* `QSign.upload.select` (10196:67173), the section between this screen and the
|
|
36
|
+
* review, is the **iOS Files app** — OS chrome, not a Prizma surface. Not built,
|
|
37
|
+
* for the reason DEVIATIONS #DC-20 settled: a screen composed only of Core
|
|
38
|
+
* components cannot render OS chrome, and faking it would ship a fake system UI.
|
|
39
|
+
* A host that needs the picker calls the platform API.
|
|
40
|
+
*/
|
|
41
|
+
export declare const QualifiedSignatureUploadScreen: React.ForwardRefExoticComponent<QualifiedSignatureUploadScreenProps & React.RefAttributes<HTMLDivElement>>;
|
|
42
|
+
export default QualifiedSignatureUploadScreen;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { PrizmaTutorialScreen } from './TutorialScreen';
|
|
5
|
+
import { DocumentCaptureIllustration } from './DocumentCaptureIllustration';
|
|
6
|
+
import './ScreenLayout.css';
|
|
7
|
+
/**
|
|
8
|
+
* Qualified Signature — the intro that asks for the file, built on the Tutorial
|
|
9
|
+
* archetype (GUIDELINES.md §6-A, `PrizmaTutorialScreen`).
|
|
10
|
+
*
|
|
11
|
+
* Figma: purple section `QSign.upload.default` (10196:67095). Measured off the
|
|
12
|
+
* 390 frame (CONTENT 654, `top container` 342×127): nav 8→52 · Title 68→127
|
|
13
|
+
* (nav + Spacing/24) · `illustration container` flexes · `Call to Actions`
|
|
14
|
+
* 536→638 = the primary + the Tag. Exactly the archetype's own rhythm, so this
|
|
15
|
+
* file declares no layout.
|
|
16
|
+
*
|
|
17
|
+
* The illustration is `DocumentCaptureIllustration` — NOT a fourth inline copy
|
|
18
|
+
* of the same artwork. The Figma `Illustrations` frame here is 310.47 × 325 and
|
|
19
|
+
* Document Capture's is 342 × 358: the SAME ratio to five decimals (0.90775),
|
|
20
|
+
* with the same three layers (halo ellipse `bg` · `documents` page · the
|
|
21
|
+
* `frame-border` outline), i.e. one asset drawn at two scales. Core still ships
|
|
22
|
+
* no document illustration, so the standing request stands — DEVIATIONS #DC-21
|
|
23
|
+
* asked to promote it to `PrizmaIllustrationDocument`; a second module now
|
|
24
|
+
* depends on a Document-Capture-named export, which is the strongest argument
|
|
25
|
+
* yet for the promotion.
|
|
26
|
+
*
|
|
27
|
+
* `QSign.upload.select` (10196:67173), the section between this screen and the
|
|
28
|
+
* review, is the **iOS Files app** — OS chrome, not a Prizma surface. Not built,
|
|
29
|
+
* for the reason DEVIATIONS #DC-20 settled: a screen composed only of Core
|
|
30
|
+
* components cannot render OS chrome, and faking it would ship a fake system UI.
|
|
31
|
+
* A host that needs the picker calls the platform API.
|
|
32
|
+
*/
|
|
33
|
+
export const QualifiedSignatureUploadScreen = forwardRef(({ strings, illustration, screenId = 'qualified-signature-upload', overrides, onAction, ...shell }, ref) => (_jsx(PrizmaTutorialScreen, { ref: ref, title: strings.upload.title, subtitle: strings.upload.subtitle, disclaimer: strings.upload.disclaimer, ctaLabel: strings.upload.ctaLabel, illustration: illustration ?? _jsx(DocumentCaptureIllustration, {}), verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell })));
|
|
34
|
+
QualifiedSignatureUploadScreen.displayName = 'QualifiedSignatureUploadScreen';
|
|
35
|
+
export default QualifiedSignatureUploadScreen;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import React, { type ReactNode } from 'react';
|
|
2
|
+
import { type PrizmaScreenShellProps } from './ScreenShell';
|
|
3
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenChromeProps, PrizmaScreenOverrides } from './types';
|
|
4
|
+
import './ScreenLayout.css';
|
|
5
|
+
/** `loading` renders Core's spinner slot; the verdicts render its status mark. */
|
|
6
|
+
export type PrizmaResultStatus = 'loading' | 'success' | 'error' | 'warning' | 'none';
|
|
7
|
+
export interface PrizmaResultScreenProps extends Omit<PrizmaScreenShellProps, 'dark' | 'title' | 'children'>, PrizmaScreenChromeProps {
|
|
8
|
+
/** The status mark above the title. `none` renders the title alone. */
|
|
9
|
+
status?: PrizmaResultStatus;
|
|
10
|
+
/**
|
|
11
|
+
* An optional block between the logo nav and the content — a journey stepper.
|
|
12
|
+
* Video Selfie draws Core's `PrizmaStepper` on EVERY screen of the flow, not
|
|
13
|
+
* just its camera stages, and it is the only chrome that tells the steps
|
|
14
|
+
* apart; the archetypes had a slot on E alone, so the rest of the module shed
|
|
15
|
+
* it (owner-reported 2026-08-19). Takes a `ReactNode` so the module supplies
|
|
16
|
+
* Core's own component — no primitive invented, and both offsets live once in
|
|
17
|
+
* `ScreenLayout.css` (`.prizma-screen-layout__progress`). Omit it and nothing
|
|
18
|
+
* renders, so every existing consumer is byte-identical. DEVIATIONS #VS-4.
|
|
19
|
+
*/
|
|
20
|
+
progress?: ReactNode;
|
|
21
|
+
/** H2 result line ("Verification complete", "Face not aligned"). */
|
|
22
|
+
title: string;
|
|
23
|
+
/** Supporting copy below the title. */
|
|
24
|
+
subtitle?: string;
|
|
25
|
+
/**
|
|
26
|
+
* A non-status glyph ABOVE the title — Core's `PrizmaTitle.icon` allowlist is
|
|
27
|
+
* `status | spinner | none`, so anything else (a Wi-Fi mark on a connectivity
|
|
28
|
+
* error) is composed here rather than forced into the slot. DEVIATIONS #10.
|
|
29
|
+
*/
|
|
30
|
+
glyph?: ReactNode;
|
|
31
|
+
/**
|
|
32
|
+
* Anything between the title block and the CTA band: a verdict Snackbar
|
|
33
|
+
* (Face Match), the captured document still (ID Capture), a hint list. Kept as
|
|
34
|
+
* a slot so one template covers every module's result screen instead of each
|
|
35
|
+
* hand-building the same skeleton.
|
|
36
|
+
*/
|
|
37
|
+
children?: ReactNode;
|
|
38
|
+
/**
|
|
39
|
+
* Content that belongs INSIDE the CTA band, above the buttons — Face Match's
|
|
40
|
+
* verdict Snackbar sits there in Figma (Spacing/32 above the CTA, reached as
|
|
41
|
+
* the band's own 16 plus the slot's 16). Distinct from `children`, which sits
|
|
42
|
+
* with the centered title block.
|
|
43
|
+
*/
|
|
44
|
+
bandContent?: ReactNode;
|
|
45
|
+
/**
|
|
46
|
+
* How the two CTAs sit. `stacked` (default) puts the secondary above the
|
|
47
|
+
* primary; `row` pairs them side by side, which is what ID Capture's review
|
|
48
|
+
* screen draws (Retake | Continue, ~166/163 in a 342 column).
|
|
49
|
+
*/
|
|
50
|
+
ctaOrientation?: 'stacked' | 'row';
|
|
51
|
+
/** Legal/hint copy directly above the CTA. Supplies the designed 28px
|
|
52
|
+
* text→CTA gap through its own padding (DEVIATIONS #8). */
|
|
53
|
+
disclaimer?: string;
|
|
54
|
+
/** Primary CTA. Omit for result screens that only report. */
|
|
55
|
+
ctaLabel?: string;
|
|
56
|
+
/** Secondary CTA rendered BELOW the primary (#GEO-1). */
|
|
57
|
+
secondaryCtaLabel?: string;
|
|
58
|
+
/**
|
|
59
|
+
* A tertiary underlined LINK, rendered BELOW the button stack — the position
|
|
60
|
+
* archetype A uses. Video Selfie's `14.3`/`14.4` draw "Retry" first with
|
|
61
|
+
* "Quit process" underneath; with no slot here the module had to borrow
|
|
62
|
+
* `bandContent`, which renders ABOVE the buttons and put the link on the
|
|
63
|
+
* wrong side (owner QA 2026-08-19). `bandContent` returns to its intended
|
|
64
|
+
* job (Face Match's verdict Snackbar). DEVIATIONS #VS-17.
|
|
65
|
+
*/
|
|
66
|
+
linkLabel?: string;
|
|
67
|
+
/** "verified by" attribution copy for the footer tag. */
|
|
68
|
+
verifiedLabel: string;
|
|
69
|
+
navLabel?: string;
|
|
70
|
+
screenId?: string;
|
|
71
|
+
overrides?: PrizmaScreenOverrides;
|
|
72
|
+
onAction?: PrizmaScreenActionHandler;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Archetype F — Result.
|
|
76
|
+
*
|
|
77
|
+
* The "centered status + CTA band + tag" recipe. It exists because three
|
|
78
|
+
* modules hand-built it independently — `FaceCaptureResultErrorScreen` (100
|
|
79
|
+
* lines), `FaceMatchResultScreen` (143) and `IdCaptureResultScreen` (198) —
|
|
80
|
+
* each differing only in what sat between the title and the CTA. Every
|
|
81
|
+
* hand-build was a fresh chance to get the spacing subtly wrong, which is
|
|
82
|
+
* exactly how the tag ended up at 0 on some screens and 16 on others.
|
|
83
|
+
*
|
|
84
|
+
* Layout: nav (or reserved row) → vertically centered title block → optional
|
|
85
|
+
* slot → CTA band (secondary, primary, disclaimer at a flat Spacing/16) →
|
|
86
|
+
* anchored footer tag. Every offset comes from ScreenLayout.css; this file
|
|
87
|
+
* declares none of its own.
|
|
88
|
+
*
|
|
89
|
+
* `ProcessingScreen` stays the pure spinner/no-CTA case; reach for this one as
|
|
90
|
+
* soon as a result screen needs a button.
|
|
91
|
+
*/
|
|
92
|
+
export declare const PrizmaResultScreen: React.ForwardRefExoticComponent<PrizmaResultScreenProps & React.RefAttributes<HTMLDivElement>>;
|
|
93
|
+
export default PrizmaResultScreen;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { PrizmaTitle } from '@incodetech/prizma-core-web/title';
|
|
5
|
+
import { PrizmaButton } from '@incodetech/prizma-core-web/button';
|
|
6
|
+
import { PrizmaDisclaimer } from '@incodetech/prizma-core-web/disclaimer';
|
|
7
|
+
import { PrizmaTag } from '@incodetech/prizma-core-web/tag';
|
|
8
|
+
import { PrizmaScreenShell } from './ScreenShell';
|
|
9
|
+
import { PrizmaScreenNav } from './ScreenNav';
|
|
10
|
+
import './ScreenLayout.css';
|
|
11
|
+
/**
|
|
12
|
+
* Archetype F — Result.
|
|
13
|
+
*
|
|
14
|
+
* The "centered status + CTA band + tag" recipe. It exists because three
|
|
15
|
+
* modules hand-built it independently — `FaceCaptureResultErrorScreen` (100
|
|
16
|
+
* lines), `FaceMatchResultScreen` (143) and `IdCaptureResultScreen` (198) —
|
|
17
|
+
* each differing only in what sat between the title and the CTA. Every
|
|
18
|
+
* hand-build was a fresh chance to get the spacing subtly wrong, which is
|
|
19
|
+
* exactly how the tag ended up at 0 on some screens and 16 on others.
|
|
20
|
+
*
|
|
21
|
+
* Layout: nav (or reserved row) → vertically centered title block → optional
|
|
22
|
+
* slot → CTA band (secondary, primary, disclaimer at a flat Spacing/16) →
|
|
23
|
+
* anchored footer tag. Every offset comes from ScreenLayout.css; this file
|
|
24
|
+
* declares none of its own.
|
|
25
|
+
*
|
|
26
|
+
* `ProcessingScreen` stays the pure spinner/no-CTA case; reach for this one as
|
|
27
|
+
* soon as a result screen needs a button.
|
|
28
|
+
*/
|
|
29
|
+
export const PrizmaResultScreen = forwardRef(({ progress, status = 'none', title, subtitle, glyph, children, bandContent, disclaimer, ctaOrientation = 'stacked', ctaLabel, secondaryCtaLabel, linkLabel, verifiedLabel, navLabel, screenId, showHeader = true, showFooter = true, overrides, onAction, ...shell }, ref) => (_jsxs(PrizmaScreenShell, { ref: ref, ...shell, children: [_jsx(PrizmaScreenNav, { reserved: !showHeader, logo: overrides?.logo, navLabel: navLabel }), progress ? (_jsx("div", { className: "prizma-screen-layout__progress", children: progress })) : null, _jsxs("div", { className: "prizma-screen-layout__content prizma-screen-layout__content--centered", children: [glyph, _jsx(PrizmaTitle, { variant: overrides?.align === 'left' ? 'left' : 'centered', title: title, showSubtitle: Boolean(subtitle), subtitle: subtitle, icon: status === 'loading'
|
|
30
|
+
? { type: 'spinner' }
|
|
31
|
+
: status === 'none'
|
|
32
|
+
? { type: 'none' }
|
|
33
|
+
: { type: 'status', status } }), children] }), ctaLabel || secondaryCtaLabel || linkLabel || disclaimer || bandContent ? (_jsxs("div", { className: "prizma-screen-layout__band prizma-screen-layout__band--result", children: [bandContent ? (_jsx("div", { className: "prizma-screen-layout__band__content", children: bandContent })) : null, disclaimer ? _jsx(PrizmaDisclaimer, { text: disclaimer }) : null, _jsxs("div", { className: ctaOrientation === 'row'
|
|
34
|
+
? 'prizma-screen-layout__band__ctas prizma-screen-layout__band__ctas--row'
|
|
35
|
+
: 'prizma-screen-layout__band__ctas', children: [ctaLabel ? (_jsx(PrizmaButton, { variant: "primary", size: "L", onClick: () => onAction?.({ type: 'cta', screenId }), children: ctaLabel })) : null, secondaryCtaLabel ? (_jsx(PrizmaButton, { variant: "secondary", size: "L", onClick: () => onAction?.({ type: 'secondary', screenId }), children: secondaryCtaLabel })) : null, linkLabel ? (_jsx(PrizmaButton, { variant: "tertiary-link", size: "L", onClick: () => onAction?.({ type: 'tertiary', screenId }), children: linkLabel })) : null] })] })) : null, showFooter ? (_jsx("div", { className: "prizma-screen-layout__footer", children: _jsx(PrizmaTag, { label: verifiedLabel }) })) : null] })));
|
|
36
|
+
PrizmaResultScreen.displayName = 'PrizmaResultScreen';
|
|
37
|
+
export default PrizmaResultScreen;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import React, { type ReactNode } from 'react';
|
|
2
|
+
import { type PrizmaScreenShellProps } from './ScreenShell';
|
|
3
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenChromeProps, PrizmaScreenOverrides } from './types';
|
|
4
|
+
import './ScreenLayout.css';
|
|
5
|
+
/**
|
|
6
|
+
* The three stages every captured-media review section shares. Identical
|
|
7
|
+
* skeleton — only the header block (Title vs loading bar), the media's own
|
|
8
|
+
* state and the presence of the CTA row change. Named to match the modules'
|
|
9
|
+
* own stage axis (`DocumentCaptureConfirmStage`, Video Selfie's review step).
|
|
10
|
+
*/
|
|
11
|
+
export type PrizmaReviewStage = 'review' | 'analyzing' | 'success';
|
|
12
|
+
export interface PrizmaReviewScreenProps extends Omit<PrizmaScreenShellProps, 'dark' | 'title' | 'children'>, Pick<PrizmaScreenChromeProps, 'showHeader' | 'showFooter'> {
|
|
13
|
+
/** Which review stage to render. Default `review`. */
|
|
14
|
+
stage?: PrizmaReviewStage;
|
|
15
|
+
/** H2 review/base title ("Review your document"). */
|
|
16
|
+
title: string;
|
|
17
|
+
/** Supporting copy under the title — drawn on `review` only (Figma). */
|
|
18
|
+
subtitle?: string;
|
|
19
|
+
/** Title shown on `success`; falls back to `title` when omitted. */
|
|
20
|
+
successTitle?: string;
|
|
21
|
+
/** Caption inside the loading bar on `analyzing`. */
|
|
22
|
+
analyzingLabel?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Which Core `PrizmaLoadingBar` treatment the `analyzing` stage runs — the
|
|
25
|
+
* captured-photo review shows the `analyzing` sweep, the uploaded-file review
|
|
26
|
+
* shows `uploading`. Default `analyzing`.
|
|
27
|
+
*/
|
|
28
|
+
analyzingState?: 'analyzing' | 'uploading';
|
|
29
|
+
/** Loading-bar progress on `analyzing`, 0–100. */
|
|
30
|
+
progress?: number;
|
|
31
|
+
/**
|
|
32
|
+
* The flexing captured-media slot: a `PrizmaIdCapture` still, an uploaded-file
|
|
33
|
+
* preview card, a portrait review. Kept a slot so one template serves every
|
|
34
|
+
* module's review screen — the module supplies the media in the right state
|
|
35
|
+
* for the stage; the archetype owns every offset around it.
|
|
36
|
+
*/
|
|
37
|
+
children: ReactNode;
|
|
38
|
+
/**
|
|
39
|
+
* Extra class on the media stage for per-media adapters that Core does not
|
|
40
|
+
* own (an uploaded-file column inset, the light-surface encrypted re-tint).
|
|
41
|
+
* These shape CONTENT, never archetype spacing — the header, stage flex, CTA
|
|
42
|
+
* offset and footer all come from ScreenLayout.css regardless.
|
|
43
|
+
*/
|
|
44
|
+
stageClassName?: string;
|
|
45
|
+
/** Primary CTA — the forward action. Drawn on `review` and `success`. */
|
|
46
|
+
primaryLabel: string;
|
|
47
|
+
/** Secondary CTA ("Replace" / "Retake") — drawn on `review` only. */
|
|
48
|
+
secondaryLabel?: string;
|
|
49
|
+
/** "verified by" attribution copy for the footer tag. */
|
|
50
|
+
verifiedLabel: string;
|
|
51
|
+
navLabel?: string;
|
|
52
|
+
screenId?: string;
|
|
53
|
+
overrides?: PrizmaScreenOverrides;
|
|
54
|
+
onAction?: PrizmaScreenActionHandler;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Archetype H — Review (captured-media confirmation).
|
|
58
|
+
*
|
|
59
|
+
* The "header → flexing captured-media stage → CTA band → tag" recipe, with a
|
|
60
|
+
* `review → analyzing → success` stage axis. It exists because two Document
|
|
61
|
+
* Capture screens hand-built it independently (`DocumentCaptureConfirmImage`,
|
|
62
|
+
* `DocumentCaptureConfirmUpload`) with their own three-band arithmetic in
|
|
63
|
+
* `DocumentCaptureLayout.css`, and Video Selfie's review step needs the same
|
|
64
|
+
* skeleton — a captured still under a title, confirmed or replaced.
|
|
65
|
+
*
|
|
66
|
+
* It is NOT archetype F (Result): F centres a small status + CTA block, while a
|
|
67
|
+
* review TOP-aligns the header over a large media stage that flexes to fill the
|
|
68
|
+
* middle, and adds an in-flight `analyzing` state (the Title swaps for Core's
|
|
69
|
+
* `PrizmaLoadingBar` and the CTA row drops). `IdCaptureResultScreen`'s review
|
|
70
|
+
* verdict stays on F — its small on-surface still fits F's centred column, and
|
|
71
|
+
* splitting one file across two archetypes buys nothing (owner call 2026-08-18).
|
|
72
|
+
*
|
|
73
|
+
* Layout (measured off the Document Capture 390 sections, DEVIATIONS #DC-22/24):
|
|
74
|
+
* no logo nav → header block (Title or loading bar) → Spacing/32 → media stage
|
|
75
|
+
* (flexes, centred) → Spacing/24 → CTA band (`review`/`success`) → anchored
|
|
76
|
+
* VerifiedTag. `analyzing` drops the band and the stage carries the Spacing/24
|
|
77
|
+
* to the bottom itself. Every offset lives in ScreenLayout.css; this file
|
|
78
|
+
* declares none of its own.
|
|
79
|
+
*/
|
|
80
|
+
export declare const PrizmaReviewScreen: React.ForwardRefExoticComponent<PrizmaReviewScreenProps & React.RefAttributes<HTMLDivElement>>;
|
|
81
|
+
export default PrizmaReviewScreen;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { PrizmaTitle } from '@incodetech/prizma-core-web/title';
|
|
5
|
+
import { PrizmaButtonGroup } from '@incodetech/prizma-core-web/button-group';
|
|
6
|
+
import { PrizmaLoadingBar } from '@incodetech/prizma-core-web/loading-bar';
|
|
7
|
+
import { PrizmaTag } from '@incodetech/prizma-core-web/tag';
|
|
8
|
+
import { PrizmaScreenShell } from './ScreenShell';
|
|
9
|
+
import { PrizmaScreenNav } from './ScreenNav';
|
|
10
|
+
import './ScreenLayout.css';
|
|
11
|
+
/**
|
|
12
|
+
* Archetype H — Review (captured-media confirmation).
|
|
13
|
+
*
|
|
14
|
+
* The "header → flexing captured-media stage → CTA band → tag" recipe, with a
|
|
15
|
+
* `review → analyzing → success` stage axis. It exists because two Document
|
|
16
|
+
* Capture screens hand-built it independently (`DocumentCaptureConfirmImage`,
|
|
17
|
+
* `DocumentCaptureConfirmUpload`) with their own three-band arithmetic in
|
|
18
|
+
* `DocumentCaptureLayout.css`, and Video Selfie's review step needs the same
|
|
19
|
+
* skeleton — a captured still under a title, confirmed or replaced.
|
|
20
|
+
*
|
|
21
|
+
* It is NOT archetype F (Result): F centres a small status + CTA block, while a
|
|
22
|
+
* review TOP-aligns the header over a large media stage that flexes to fill the
|
|
23
|
+
* middle, and adds an in-flight `analyzing` state (the Title swaps for Core's
|
|
24
|
+
* `PrizmaLoadingBar` and the CTA row drops). `IdCaptureResultScreen`'s review
|
|
25
|
+
* verdict stays on F — its small on-surface still fits F's centred column, and
|
|
26
|
+
* splitting one file across two archetypes buys nothing (owner call 2026-08-18).
|
|
27
|
+
*
|
|
28
|
+
* Layout (measured off the Document Capture 390 sections, DEVIATIONS #DC-22/24):
|
|
29
|
+
* no logo nav → header block (Title or loading bar) → Spacing/32 → media stage
|
|
30
|
+
* (flexes, centred) → Spacing/24 → CTA band (`review`/`success`) → anchored
|
|
31
|
+
* VerifiedTag. `analyzing` drops the band and the stage carries the Spacing/24
|
|
32
|
+
* to the bottom itself. Every offset lives in ScreenLayout.css; this file
|
|
33
|
+
* declares none of its own.
|
|
34
|
+
*/
|
|
35
|
+
export const PrizmaReviewScreen = forwardRef(({ stage = 'review', title, subtitle, successTitle, analyzingLabel, analyzingState = 'analyzing', progress = 0, children, stageClassName, primaryLabel, secondaryLabel, verifiedLabel, navLabel, showHeader, showFooter = true, screenId, overrides, onAction, ...shell }, ref) => {
|
|
36
|
+
// Review screens are the capture family: no logo unless the client opts in
|
|
37
|
+
// by supplying one (types.ts chrome contract). `showHeader` still wins when
|
|
38
|
+
// set explicitly.
|
|
39
|
+
const withNav = showHeader ?? Boolean(overrides?.logo);
|
|
40
|
+
const showSecondary = stage === 'review' && Boolean(secondaryLabel);
|
|
41
|
+
const showBand = stage !== 'analyzing' && Boolean(primaryLabel || secondaryLabel);
|
|
42
|
+
return (_jsxs(PrizmaScreenShell, { ref: ref, ...shell, children: [withNav ? (_jsx(PrizmaScreenNav, { logo: overrides?.logo, navLabel: navLabel })) : null, _jsxs("div", { className: [
|
|
43
|
+
'prizma-screen-layout__content',
|
|
44
|
+
withNav ? '' : 'prizma-screen-layout__content--no-nav',
|
|
45
|
+
]
|
|
46
|
+
.filter(Boolean)
|
|
47
|
+
.join(' '), children: [_jsx("div", { className: "prizma-screen-layout__review-header", children: stage === 'analyzing' ? (_jsx("div", { className: "prizma-screen-layout__review-loading", children: _jsx(PrizmaLoadingBar, { state: analyzingState, progress: progress, title: analyzingLabel }) })) : (_jsx(PrizmaTitle, { variant: overrides?.align === 'left' ? 'left' : 'centered', title: stage === 'success' ? successTitle ?? title : title, showSubtitle: stage === 'review' && Boolean(subtitle), subtitle: subtitle, icon: stage === 'success' ? { type: 'status', status: 'success' } : undefined })) }), _jsx("div", { className: [
|
|
48
|
+
'prizma-screen-layout__review-stage',
|
|
49
|
+
stage === 'analyzing' ? 'prizma-screen-layout__review-stage--flush' : '',
|
|
50
|
+
stageClassName ?? '',
|
|
51
|
+
]
|
|
52
|
+
.filter(Boolean)
|
|
53
|
+
.join(' '), children: children }), showBand ? (_jsx("div", { className: "prizma-screen-layout__band prizma-screen-layout__band--review", children: _jsx(PrizmaButtonGroup, { orientation: "horizontal-v1", showSecondary: showSecondary, primaryLabel: primaryLabel, onPrimaryClick: () => onAction?.({ type: 'cta', screenId }), secondaryLabel: secondaryLabel, onSecondaryClick: () => onAction?.({ type: 'secondary', screenId }) }) })) : null, showFooter ? (_jsx("div", { className: "prizma-screen-layout__band__tag", children: _jsx(PrizmaTag, { label: verifiedLabel }) })) : null] })] }));
|
|
54
|
+
});
|
|
55
|
+
PrizmaReviewScreen.displayName = 'PrizmaReviewScreen';
|
|
56
|
+
export default PrizmaReviewScreen;
|