datakeen-session-react 1.1.199-rc.2 → 1.1.199-rc.4
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/LICENSE +218 -0
- package/README.md +1 -17
- package/dist/cjs/_virtual/_commonjsHelpers.js +0 -1
- package/dist/cjs/_virtual/heic2any.js +0 -1
- package/dist/cjs/_virtual/heic2any2.js +0 -1
- package/dist/cjs/assets/Face Scan Square.svg.js +0 -1
- package/dist/cjs/assets/Lightbulb.svg.js +0 -1
- package/dist/cjs/assets/Monitor Camera.svg.js +0 -1
- package/dist/cjs/assets/User Hands.svg.js +0 -1
- package/dist/cjs/assets/before-document.png.js +0 -1
- package/dist/cjs/assets/before-passport.png.js +0 -1
- package/dist/cjs/assets/before-photo.png.js +0 -1
- package/dist/cjs/assets/before-verso.png.js +0 -1
- package/dist/cjs/assets/check.svg.js +0 -1
- package/dist/cjs/assets/icons/shield_magic_link.svg.js +0 -1
- package/dist/cjs/assets/selfietake.svg.js +0 -1
- package/dist/cjs/components/DatakeenSession.js +0 -1
- package/dist/cjs/components/document-collection/DocumentCollection.js +0 -1
- package/dist/cjs/components/document-collection/DocumentCollectionIntroduction.js +0 -1
- package/dist/cjs/components/document-collection/DocumentCollectionMethodSelection.js +0 -1
- package/dist/cjs/components/document-collection/DocumentCollectionSelection.js +0 -1
- package/dist/cjs/components/document-collection/DocumentCollectionUpload.js +0 -1
- package/dist/cjs/components/document-collection/DocumentError.js +0 -1
- package/dist/cjs/components/document-collection/DocumentProcessing.js +0 -1
- package/dist/cjs/components/document-collection/DocumentSuccess.js +0 -1
- package/dist/cjs/components/document-video/DocumentVideoCapture.js +0 -1
- package/dist/cjs/components/document-video/DocumentVideoConfirmation.js +0 -1
- package/dist/cjs/components/document-video/document-video-flow/DocumentVideoFlow.js +0 -1
- package/dist/cjs/components/document-video/document-video-flow/DocumentVideoInstructions.js +0 -1
- package/dist/cjs/components/document-video/document-video-flow/DocumentVideoProcessing.js +0 -1
- package/dist/cjs/components/document-video/document-video-flow/DocumentVideoRecorder.js +0 -1
- package/dist/cjs/components/icons/ElectronicIcon.js +0 -1
- package/dist/cjs/components/icons/PoweredByIcon.js +0 -1
- package/dist/cjs/components/icons/PreIntroIcon.js +0 -1
- package/dist/cjs/components/icons/StartIcon.js +0 -1
- package/dist/cjs/components/id-check/BeforePhoto.js +0 -1
- package/dist/cjs/components/id-check/BeforeVersoPhoto.js +0 -1
- package/dist/cjs/components/id-check/CameraError.js +0 -1
- package/dist/cjs/components/id-check/CameraMask.js +0 -1
- package/dist/cjs/components/id-check/OrientationToggle.js +0 -1
- package/dist/cjs/components/id-check/Photo.js +0 -1
- package/dist/cjs/components/id-check/PhotoConfirmation.js +0 -1
- package/dist/cjs/components/id-check/PhotoPreview.js +0 -1
- package/dist/cjs/components/jdi/JDDWorkInProgress.js +0 -1
- package/dist/cjs/components/jdi/JDICountrySelection.js +0 -1
- package/dist/cjs/components/jdi/JDIDocumentSelection.js +0 -1
- package/dist/cjs/components/jdi/JDIDocumentUpload.js +0 -1
- package/dist/cjs/components/jdi/JDIError.js +0 -1
- package/dist/cjs/components/jdi/JDIPreIntroduction.js +0 -1
- package/dist/cjs/components/jdi/JDIProcessing.js +0 -1
- package/dist/cjs/components/jdi/JDISuccess.js +0 -1
- package/dist/cjs/components/legal-consent/LegalConsentNode.js +0 -1
- package/dist/cjs/components/nfc-scan/BiometricSymbol.js +0 -1
- package/dist/cjs/components/nfc-scan/NfcChipGate.js +0 -1
- package/dist/cjs/components/nfc-scan/NfcFallbackSurvey.js +0 -1
- package/dist/cjs/components/nfc-scan/NfcOnboardingNotice.js +0 -1
- package/dist/cjs/components/nfc-scan/NfcScanNode.js +0 -1
- package/dist/cjs/components/nfc-scan/NfcSuccessAnimation.js +0 -1
- package/dist/cjs/components/nfc-scan/PuceCniSymbol.js +0 -1
- package/dist/cjs/components/selfie/SelfieConfirmation.js +0 -1
- package/dist/cjs/components/selfie/Video.css.js +0 -1
- package/dist/cjs/components/selfie/Video.js +0 -1
- package/dist/cjs/components/selfie/VideoFixes.css.js +0 -1
- package/dist/cjs/components/selfie/VideoResetStyles.js +0 -1
- package/dist/cjs/components/selfie/hooks/useLiveFrameCapture.js +0 -1
- package/dist/cjs/components/selfie/hooks/useVideoRecorderStyles.js +0 -1
- package/dist/cjs/components/selfie/selfie-flow/InstructionsSelfie.js +0 -1
- package/dist/cjs/components/selfie/selfie-flow/SelfieFlow.js +0 -1
- package/dist/cjs/components/selfie/selfie-flow/SelfiePreIntroduction.js +0 -1
- package/dist/cjs/components/selfie/selfie-flow/SelfieProcessing.js +0 -1
- package/dist/cjs/components/selfie/selfie-flow/SelfieRecorder.js +0 -1
- package/dist/cjs/components/selfie/utils/selfieCaptureUtils.js +0 -1
- package/dist/cjs/components/selfie/utils/unisseyStrings.js +0 -1
- package/dist/cjs/components/selfie/utils/videoElementStyles.js +0 -1
- package/dist/cjs/components/session/DocumentCheck.js +0 -1
- package/dist/cjs/components/session/EndFlow.js +0 -1
- package/dist/cjs/components/session/MobileRedirect.js +0 -1
- package/dist/cjs/components/session/PdfGeneration.js +0 -1
- package/dist/cjs/components/session/Selfie.js +0 -1
- package/dist/cjs/components/session/SessionContent.js +0 -1
- package/dist/cjs/components/session/SessionExpired.js +0 -1
- package/dist/cjs/components/session/StartSession.js +0 -1
- package/dist/cjs/components/session/UserInputForm/AddressFields.js +0 -1
- package/dist/cjs/components/session/UserInputForm/ContactFields.js +0 -1
- package/dist/cjs/components/session/UserInputForm/CustomFormFields.js +2 -11
- package/dist/cjs/components/session/UserInputForm/DatePickerField.js +0 -1
- package/dist/cjs/components/session/UserInputForm/IdentityFields.js +0 -1
- package/dist/cjs/components/session/UserInputForm/LegalEntityFields.js +0 -1
- package/dist/cjs/components/session/UserInputForm/LegalRepFields.js +0 -1
- package/dist/cjs/components/session/UserInputForm/NationalityField.js +0 -1
- package/dist/cjs/components/session/UserInputForm.js +4 -2
- package/dist/cjs/components/session/VideoWorkInProgress.js +0 -1
- package/dist/cjs/components/session/controleJdiPolicy.js +0 -1
- package/dist/cjs/components/session/endScreenIcons.js +0 -1
- package/dist/cjs/components/signature-electronic/DocusealSignature.js +0 -1
- package/dist/cjs/components/signature-electronic/SignatureElectronic.js +0 -1
- package/dist/cjs/components/signature-electronic/SignatureElectronicIntroduction.js +0 -1
- package/dist/cjs/components/signature-electronic/SignedDocumentPreview.js +0 -1
- package/dist/cjs/components/start-flow/Start.js +0 -1
- package/dist/cjs/components/states/ErrorState.js +0 -1
- package/dist/cjs/components/states/LoadingState.js +0 -1
- package/dist/cjs/components/states/NoSessionIdState.js +0 -1
- package/dist/cjs/components/template/ComplementaryMandateNodeHandler.js +0 -1
- package/dist/cjs/components/template/ConditionNodeHandler.js +0 -1
- package/dist/cjs/components/template/ExternalVerificationNodeHandler.js +0 -1
- package/dist/cjs/components/template/TemplateNodeRenderer.js +0 -1
- package/dist/cjs/components/template/conditionNodePolicy.js +0 -1
- package/dist/cjs/components/ui/Body.js +0 -1
- package/dist/cjs/components/ui/Button.js +0 -1
- package/dist/cjs/components/ui/ButtonDesktop.js +0 -1
- package/dist/cjs/components/ui/Card.js +0 -1
- package/dist/cjs/components/ui/MobilePageLayout.js +0 -1
- package/dist/cjs/components/ui/PDFPreview.js +0 -1
- package/dist/cjs/components/ui/PageActions.js +0 -1
- package/dist/cjs/components/ui/Paper.js +0 -1
- package/dist/cjs/components/ui/PoweredBy.js +0 -1
- package/dist/cjs/components/ui/QRCodeDisplay.js +0 -1
- package/dist/cjs/components/ui/SelectComponent.js +0 -1
- package/dist/cjs/components/ui/Subtitle.js +0 -1
- package/dist/cjs/components/ui/Title.js +0 -1
- package/dist/cjs/config/env.js +0 -1
- package/dist/cjs/constants/userInputForm.js +0 -1
- package/dist/cjs/context/ConfigContext.js +0 -1
- package/dist/cjs/context/DocumentContext.js +0 -1
- package/dist/cjs/context/SessionContext.js +0 -1
- package/dist/cjs/hooks/useClientInfo.js +0 -1
- package/dist/cjs/hooks/useCountryOptions.js +0 -1
- package/dist/cjs/hooks/useI18n.js +0 -1
- package/dist/cjs/hooks/useIsMobile.js +0 -1
- package/dist/cjs/hooks/useNfcSseStatus.js +0 -1
- package/dist/cjs/hooks/useRouteCSS.js +0 -1
- package/dist/cjs/hooks/useSession.js +0 -1
- package/dist/cjs/hooks/useSessionData.js +0 -1
- package/dist/cjs/hooks/useStepCSS.js +0 -1
- package/dist/cjs/hooks/useStepNavigation.js +18 -1
- package/dist/cjs/hooks/useTemplateLoader.js +0 -1
- package/dist/cjs/hooks/useUserInputForm.js +38 -1
- package/dist/cjs/i18n/country/country.en.json.js +0 -1
- package/dist/cjs/i18n/country/country.fr.json.js +0 -1
- package/dist/cjs/i18n/country/country.iso2.en.json.js +0 -1
- package/dist/cjs/i18n/country/country.iso2.fr.json.js +0 -1
- package/dist/cjs/i18n/documents/documents.en.json.js +0 -1
- package/dist/cjs/i18n/documents/documents.fr.json.js +0 -1
- package/dist/cjs/i18n/en.json.js +0 -1
- package/dist/cjs/i18n/es.json.js +0 -1
- package/dist/cjs/i18n/fr.json.js +0 -1
- package/dist/cjs/i18n/index.js +0 -1
- package/dist/cjs/index.css.js +0 -1
- package/dist/cjs/index.js +0 -1
- package/dist/cjs/node_modules/date-fns/locale/_lib/buildFormatLongFn.js +0 -1
- package/dist/cjs/node_modules/date-fns/locale/_lib/buildLocalizeFn.js +0 -1
- package/dist/cjs/node_modules/date-fns/locale/_lib/buildMatchFn.js +0 -1
- package/dist/cjs/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js +0 -1
- package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/formatDistance.js +0 -1
- package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/formatLong.js +0 -1
- package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/formatRelative.js +0 -1
- package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/localize.js +0 -1
- package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/match.js +0 -1
- package/dist/cjs/node_modules/date-fns/locale/en-US.js +0 -1
- package/dist/cjs/node_modules/date-fns/locale/fr/_lib/formatDistance.js +0 -1
- package/dist/cjs/node_modules/date-fns/locale/fr/_lib/formatLong.js +0 -1
- package/dist/cjs/node_modules/date-fns/locale/fr/_lib/formatRelative.js +0 -1
- package/dist/cjs/node_modules/date-fns/locale/fr/_lib/localize.js +0 -1
- package/dist/cjs/node_modules/date-fns/locale/fr/_lib/match.js +0 -1
- package/dist/cjs/node_modules/date-fns/locale/fr.js +0 -1
- package/dist/cjs/node_modules/heic2any/dist/heic2any.js +0 -1
- package/dist/cjs/node_modules/pdfjs-dist/legacy/build/pdf.js +0 -1
- package/dist/cjs/node_modules/pdfjs-dist/legacy/build/pdf.worker.js +0 -1
- package/dist/cjs/node_modules/style-inject/dist/style-inject.es.js +0 -1
- package/dist/cjs/node_modules/tslib/tslib.es6.js +0 -1
- package/dist/cjs/providers/I18nProvider.js +0 -1
- package/dist/cjs/services/analysis.js +0 -1
- package/dist/cjs/services/api.js +0 -1
- package/dist/cjs/services/auditTrailService.js +0 -1
- package/dist/cjs/services/cameraService.js +0 -1
- package/dist/cjs/services/documentEdgeDetectionService.js +0 -1
- package/dist/cjs/services/documentTemplate.js +0 -1
- package/dist/cjs/services/iadService.js +0 -1
- package/dist/cjs/services/integrationService.js +0 -1
- package/dist/cjs/services/pollingService.js +0 -1
- package/dist/cjs/services/professionalImageQuality.js +0 -1
- package/dist/cjs/services/retryService.js +0 -1
- package/dist/cjs/services/sessionCredentials.js +0 -1
- package/dist/cjs/services/sessionMemoryStore.js +0 -1
- package/dist/cjs/services/sessionService.js +0 -1
- package/dist/cjs/services/utils.js +0 -1
- package/dist/cjs/types/session.js +0 -1
- package/dist/cjs/utils/analysisErrors.js +0 -1
- package/dist/cjs/utils/apiAnalysis.js +0 -1
- package/dist/cjs/utils/conditionEvaluator.js +0 -1
- package/dist/cjs/utils/countryFlags.js +0 -1
- package/dist/cjs/utils/cssLoader.js +0 -1
- package/dist/cjs/utils/customFieldIds.js +0 -1
- package/dist/cjs/utils/customFieldLocks.js +27 -0
- package/dist/cjs/utils/customFieldValidation.js +0 -1
- package/dist/cjs/utils/documentLabels.js +0 -1
- package/dist/cjs/utils/europeanCountries.js +0 -1
- package/dist/cjs/utils/fileConverter.js +0 -1
- package/dist/cjs/utils/imageConverter.js +0 -1
- package/dist/cjs/utils/imageProcessing.js +0 -1
- package/dist/cjs/utils/isMobileDevice.js +0 -1
- package/dist/cjs/utils/isoCountryCodes.js +0 -1
- package/dist/cjs/utils/jdiCodes.js +0 -1
- package/dist/cjs/utils/labelToKey.js +0 -1
- package/dist/cjs/utils/listFieldUtils.js +0 -1
- package/dist/cjs/utils/mimeTypes.js +0 -1
- package/dist/cjs/utils/navigation.js +0 -1
- package/dist/cjs/utils/renderInlineMarkdown.js +0 -1
- package/dist/cjs/utils/sessionStatus.js +0 -1
- package/dist/cjs/utils/userInputForm.js +0 -1
- package/dist/cjs/utils/utils.js +0 -1
- package/dist/cjs/utils/validationUtils.js +0 -1
- package/dist/esm/_virtual/_commonjsHelpers.js +0 -1
- package/dist/esm/_virtual/heic2any.js +0 -1
- package/dist/esm/_virtual/heic2any2.js +0 -1
- package/dist/esm/assets/Face Scan Square.svg.js +0 -1
- package/dist/esm/assets/Lightbulb.svg.js +0 -1
- package/dist/esm/assets/Monitor Camera.svg.js +0 -1
- package/dist/esm/assets/User Hands.svg.js +0 -1
- package/dist/esm/assets/before-document.png.js +0 -1
- package/dist/esm/assets/before-passport.png.js +0 -1
- package/dist/esm/assets/before-photo.png.js +0 -1
- package/dist/esm/assets/before-verso.png.js +0 -1
- package/dist/esm/assets/check.svg.js +0 -1
- package/dist/esm/assets/icons/shield_magic_link.svg.js +0 -1
- package/dist/esm/assets/selfietake.svg.js +0 -1
- package/dist/esm/components/DatakeenSession.js +0 -1
- package/dist/esm/components/document-collection/DocumentCollection.js +0 -1
- package/dist/esm/components/document-collection/DocumentCollectionIntroduction.js +0 -1
- package/dist/esm/components/document-collection/DocumentCollectionMethodSelection.js +0 -1
- package/dist/esm/components/document-collection/DocumentCollectionSelection.js +0 -1
- package/dist/esm/components/document-collection/DocumentCollectionUpload.js +0 -1
- package/dist/esm/components/document-collection/DocumentError.js +0 -1
- package/dist/esm/components/document-collection/DocumentProcessing.js +0 -1
- package/dist/esm/components/document-collection/DocumentSuccess.js +0 -1
- package/dist/esm/components/document-video/DocumentVideoCapture.js +0 -1
- package/dist/esm/components/document-video/DocumentVideoConfirmation.js +0 -1
- package/dist/esm/components/document-video/document-video-flow/DocumentVideoFlow.js +0 -1
- package/dist/esm/components/document-video/document-video-flow/DocumentVideoInstructions.js +0 -1
- package/dist/esm/components/document-video/document-video-flow/DocumentVideoProcessing.js +0 -1
- package/dist/esm/components/document-video/document-video-flow/DocumentVideoRecorder.js +0 -1
- package/dist/esm/components/icons/ElectronicIcon.js +0 -1
- package/dist/esm/components/icons/PoweredByIcon.js +0 -1
- package/dist/esm/components/icons/PreIntroIcon.js +0 -1
- package/dist/esm/components/icons/StartIcon.js +0 -1
- package/dist/esm/components/id-check/BeforePhoto.js +0 -1
- package/dist/esm/components/id-check/BeforeVersoPhoto.js +0 -1
- package/dist/esm/components/id-check/CameraError.js +0 -1
- package/dist/esm/components/id-check/CameraMask.js +0 -1
- package/dist/esm/components/id-check/OrientationToggle.js +0 -1
- package/dist/esm/components/id-check/Photo.js +0 -1
- package/dist/esm/components/id-check/PhotoConfirmation.js +0 -1
- package/dist/esm/components/id-check/PhotoPreview.js +0 -1
- package/dist/esm/components/jdi/JDDWorkInProgress.js +0 -1
- package/dist/esm/components/jdi/JDICountrySelection.js +0 -1
- package/dist/esm/components/jdi/JDIDocumentSelection.js +0 -1
- package/dist/esm/components/jdi/JDIDocumentUpload.js +0 -1
- package/dist/esm/components/jdi/JDIError.js +0 -1
- package/dist/esm/components/jdi/JDIPreIntroduction.js +0 -1
- package/dist/esm/components/jdi/JDIProcessing.js +0 -1
- package/dist/esm/components/jdi/JDISuccess.js +0 -1
- package/dist/esm/components/legal-consent/LegalConsentNode.js +0 -1
- package/dist/esm/components/nfc-scan/BiometricSymbol.js +0 -1
- package/dist/esm/components/nfc-scan/NfcChipGate.js +0 -1
- package/dist/esm/components/nfc-scan/NfcFallbackSurvey.js +0 -1
- package/dist/esm/components/nfc-scan/NfcOnboardingNotice.js +0 -1
- package/dist/esm/components/nfc-scan/NfcScanNode.js +0 -1
- package/dist/esm/components/nfc-scan/NfcSuccessAnimation.js +0 -1
- package/dist/esm/components/nfc-scan/PuceCniSymbol.js +0 -1
- package/dist/esm/components/selfie/SelfieConfirmation.js +0 -1
- package/dist/esm/components/selfie/Video.css.js +0 -1
- package/dist/esm/components/selfie/Video.js +0 -1
- package/dist/esm/components/selfie/VideoFixes.css.js +0 -1
- package/dist/esm/components/selfie/VideoResetStyles.js +0 -1
- package/dist/esm/components/selfie/hooks/useLiveFrameCapture.js +0 -1
- package/dist/esm/components/selfie/hooks/useVideoRecorderStyles.js +0 -1
- package/dist/esm/components/selfie/selfie-flow/InstructionsSelfie.js +0 -1
- package/dist/esm/components/selfie/selfie-flow/SelfieFlow.js +0 -1
- package/dist/esm/components/selfie/selfie-flow/SelfiePreIntroduction.js +0 -1
- package/dist/esm/components/selfie/selfie-flow/SelfieProcessing.js +0 -1
- package/dist/esm/components/selfie/selfie-flow/SelfieRecorder.js +0 -1
- package/dist/esm/components/selfie/utils/selfieCaptureUtils.js +0 -1
- package/dist/esm/components/selfie/utils/unisseyStrings.js +0 -1
- package/dist/esm/components/selfie/utils/videoElementStyles.js +0 -1
- package/dist/esm/components/session/DocumentCheck.js +0 -1
- package/dist/esm/components/session/EndFlow.js +0 -1
- package/dist/esm/components/session/MobileRedirect.js +0 -1
- package/dist/esm/components/session/PdfGeneration.js +0 -1
- package/dist/esm/components/session/Selfie.js +0 -1
- package/dist/esm/components/session/SessionContent.js +0 -1
- package/dist/esm/components/session/SessionExpired.js +0 -1
- package/dist/esm/components/session/StartSession.js +0 -1
- package/dist/esm/components/session/UserInputForm/AddressFields.js +0 -1
- package/dist/esm/components/session/UserInputForm/ContactFields.js +0 -1
- package/dist/esm/components/session/UserInputForm/CustomFormFields.js +1 -10
- package/dist/esm/components/session/UserInputForm/DatePickerField.js +0 -1
- package/dist/esm/components/session/UserInputForm/IdentityFields.js +0 -1
- package/dist/esm/components/session/UserInputForm/LegalEntityFields.js +0 -1
- package/dist/esm/components/session/UserInputForm/LegalRepFields.js +0 -1
- package/dist/esm/components/session/UserInputForm/NationalityField.js +0 -1
- package/dist/esm/components/session/UserInputForm.js +4 -2
- package/dist/esm/components/session/VideoWorkInProgress.js +0 -1
- package/dist/esm/components/session/controleJdiPolicy.js +0 -1
- package/dist/esm/components/session/endScreenIcons.js +0 -1
- package/dist/esm/components/signature-electronic/DocusealSignature.js +0 -1
- package/dist/esm/components/signature-electronic/SignatureElectronic.js +0 -1
- package/dist/esm/components/signature-electronic/SignatureElectronicIntroduction.js +0 -1
- package/dist/esm/components/signature-electronic/SignedDocumentPreview.js +0 -1
- package/dist/esm/components/start-flow/Start.js +0 -1
- package/dist/esm/components/states/ErrorState.js +0 -1
- package/dist/esm/components/states/LoadingState.js +0 -1
- package/dist/esm/components/states/NoSessionIdState.js +0 -1
- package/dist/esm/components/template/ComplementaryMandateNodeHandler.js +0 -1
- package/dist/esm/components/template/ConditionNodeHandler.js +0 -1
- package/dist/esm/components/template/ExternalVerificationNodeHandler.js +0 -1
- package/dist/esm/components/template/TemplateNodeRenderer.js +0 -1
- package/dist/esm/components/template/conditionNodePolicy.js +0 -1
- package/dist/esm/components/ui/Body.js +0 -1
- package/dist/esm/components/ui/Button.js +0 -1
- package/dist/esm/components/ui/ButtonDesktop.js +0 -1
- package/dist/esm/components/ui/Card.js +0 -1
- package/dist/esm/components/ui/MobilePageLayout.js +0 -1
- package/dist/esm/components/ui/PDFPreview.js +0 -1
- package/dist/esm/components/ui/PageActions.js +0 -1
- package/dist/esm/components/ui/Paper.js +0 -1
- package/dist/esm/components/ui/PoweredBy.js +0 -1
- package/dist/esm/components/ui/QRCodeDisplay.js +0 -1
- package/dist/esm/components/ui/SelectComponent.js +0 -1
- package/dist/esm/components/ui/Subtitle.js +0 -1
- package/dist/esm/components/ui/Title.js +0 -1
- package/dist/esm/config/env.js +0 -1
- package/dist/esm/constants/userInputForm.js +0 -1
- package/dist/esm/context/ConfigContext.js +0 -1
- package/dist/esm/context/DocumentContext.js +0 -1
- package/dist/esm/context/SessionContext.js +0 -1
- package/dist/esm/hooks/useClientInfo.js +0 -1
- package/dist/esm/hooks/useCountryOptions.js +0 -1
- package/dist/esm/hooks/useI18n.js +0 -1
- package/dist/esm/hooks/useIsMobile.js +0 -1
- package/dist/esm/hooks/useNfcSseStatus.js +0 -1
- package/dist/esm/hooks/useRouteCSS.js +0 -1
- package/dist/esm/hooks/useSession.js +0 -1
- package/dist/esm/hooks/useSessionData.js +0 -1
- package/dist/esm/hooks/useStepCSS.js +0 -1
- package/dist/esm/hooks/useStepNavigation.js +18 -1
- package/dist/esm/hooks/useTemplateLoader.js +0 -1
- package/dist/esm/hooks/useUserInputForm.js +38 -1
- package/dist/esm/i18n/country/country.en.json.js +0 -1
- package/dist/esm/i18n/country/country.fr.json.js +0 -1
- package/dist/esm/i18n/country/country.iso2.en.json.js +0 -1
- package/dist/esm/i18n/country/country.iso2.fr.json.js +0 -1
- package/dist/esm/i18n/documents/documents.en.json.js +0 -1
- package/dist/esm/i18n/documents/documents.fr.json.js +0 -1
- package/dist/esm/i18n/en.json.js +0 -1
- package/dist/esm/i18n/es.json.js +0 -1
- package/dist/esm/i18n/fr.json.js +0 -1
- package/dist/esm/i18n/index.js +0 -1
- package/dist/esm/index.css.js +0 -1
- package/dist/esm/index.js +0 -1
- package/dist/esm/node_modules/date-fns/locale/_lib/buildFormatLongFn.js +0 -1
- package/dist/esm/node_modules/date-fns/locale/_lib/buildLocalizeFn.js +0 -1
- package/dist/esm/node_modules/date-fns/locale/_lib/buildMatchFn.js +0 -1
- package/dist/esm/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js +0 -1
- package/dist/esm/node_modules/date-fns/locale/en-US/_lib/formatDistance.js +0 -1
- package/dist/esm/node_modules/date-fns/locale/en-US/_lib/formatLong.js +0 -1
- package/dist/esm/node_modules/date-fns/locale/en-US/_lib/formatRelative.js +0 -1
- package/dist/esm/node_modules/date-fns/locale/en-US/_lib/localize.js +0 -1
- package/dist/esm/node_modules/date-fns/locale/en-US/_lib/match.js +0 -1
- package/dist/esm/node_modules/date-fns/locale/en-US.js +0 -1
- package/dist/esm/node_modules/date-fns/locale/fr/_lib/formatDistance.js +0 -1
- package/dist/esm/node_modules/date-fns/locale/fr/_lib/formatLong.js +0 -1
- package/dist/esm/node_modules/date-fns/locale/fr/_lib/formatRelative.js +0 -1
- package/dist/esm/node_modules/date-fns/locale/fr/_lib/localize.js +0 -1
- package/dist/esm/node_modules/date-fns/locale/fr/_lib/match.js +0 -1
- package/dist/esm/node_modules/date-fns/locale/fr.js +0 -1
- package/dist/esm/node_modules/heic2any/dist/heic2any.js +0 -1
- package/dist/esm/node_modules/pdfjs-dist/legacy/build/pdf.js +0 -1
- package/dist/esm/node_modules/pdfjs-dist/legacy/build/pdf.worker.js +0 -1
- package/dist/esm/node_modules/style-inject/dist/style-inject.es.js +0 -1
- package/dist/esm/node_modules/tslib/tslib.es6.js +0 -1
- package/dist/esm/providers/I18nProvider.js +0 -1
- package/dist/esm/services/analysis.js +0 -1
- package/dist/esm/services/api.js +0 -1
- package/dist/esm/services/auditTrailService.js +0 -1
- package/dist/esm/services/cameraService.js +0 -1
- package/dist/esm/services/documentEdgeDetectionService.js +0 -1
- package/dist/esm/services/documentTemplate.js +0 -1
- package/dist/esm/services/iadService.js +0 -1
- package/dist/esm/services/integrationService.js +0 -1
- package/dist/esm/services/pollingService.js +0 -1
- package/dist/esm/services/professionalImageQuality.js +0 -1
- package/dist/esm/services/retryService.js +0 -1
- package/dist/esm/services/sessionCredentials.js +0 -1
- package/dist/esm/services/sessionMemoryStore.js +0 -1
- package/dist/esm/services/sessionService.js +0 -1
- package/dist/esm/services/utils.js +0 -1
- package/dist/esm/types/session.js +0 -1
- package/dist/esm/utils/analysisErrors.js +0 -1
- package/dist/esm/utils/apiAnalysis.js +0 -1
- package/dist/esm/utils/conditionEvaluator.js +0 -1
- package/dist/esm/utils/countryFlags.js +0 -1
- package/dist/esm/utils/cssLoader.js +0 -1
- package/dist/esm/utils/customFieldIds.js +0 -1
- package/dist/esm/utils/customFieldLocks.js +24 -0
- package/dist/esm/utils/customFieldValidation.js +0 -1
- package/dist/esm/utils/documentLabels.js +0 -1
- package/dist/esm/utils/europeanCountries.js +0 -1
- package/dist/esm/utils/fileConverter.js +0 -1
- package/dist/esm/utils/imageConverter.js +0 -1
- package/dist/esm/utils/imageProcessing.js +0 -1
- package/dist/esm/utils/isMobileDevice.js +0 -1
- package/dist/esm/utils/isoCountryCodes.js +0 -1
- package/dist/esm/utils/jdiCodes.js +0 -1
- package/dist/esm/utils/labelToKey.js +0 -1
- package/dist/esm/utils/listFieldUtils.js +0 -1
- package/dist/esm/utils/mimeTypes.js +0 -1
- package/dist/esm/utils/navigation.js +0 -1
- package/dist/esm/utils/renderInlineMarkdown.js +0 -1
- package/dist/esm/utils/sessionStatus.js +0 -1
- package/dist/esm/utils/userInputForm.js +0 -1
- package/dist/esm/utils/utils.js +0 -1
- package/dist/esm/utils/validationUtils.js +0 -1
- package/package.json +9 -2
- package/.gitlab/issue_templates/bug.md +0 -14
- package/.gitlab/issue_templates/feature.md +0 -11
- package/.gitlab/issue_templates/task.md +0 -11
- package/.gitlab/merge_request_templates/default.md +0 -15
- package/.gitlab/merge_request_templates/hotfix.md +0 -15
- package/.gitlab-ci.yml +0 -290
- package/CLAUDE.md +0 -233
- package/__mocks__/@unissey-web/sdk-react.js +0 -17
- package/__mocks__/fileMock.js +0 -1
- package/__mocks__/pdfjs-dist/legacy/build/pdf.js +0 -5
- package/__mocks__/pdfjs-dist/legacy/build/pdf.worker.js +0 -1
- package/assets/logo.svg +0 -56
- package/axios.install.md +0 -2
- package/babel.config.js +0 -15
- package/dist/cjs/_virtual/_commonjsHelpers.js.map +0 -1
- package/dist/cjs/_virtual/heic2any.js.map +0 -1
- package/dist/cjs/_virtual/heic2any2.js.map +0 -1
- package/dist/cjs/assets/Face Scan Square.svg.js.map +0 -1
- package/dist/cjs/assets/Lightbulb.svg.js.map +0 -1
- package/dist/cjs/assets/Monitor Camera.svg.js.map +0 -1
- package/dist/cjs/assets/User Hands.svg.js.map +0 -1
- package/dist/cjs/assets/before-document.png.js.map +0 -1
- package/dist/cjs/assets/before-passport.png.js.map +0 -1
- package/dist/cjs/assets/before-photo.png.js.map +0 -1
- package/dist/cjs/assets/before-verso.png.js.map +0 -1
- package/dist/cjs/assets/check.svg.js.map +0 -1
- package/dist/cjs/assets/icons/shield_magic_link.svg.js.map +0 -1
- package/dist/cjs/assets/selfietake.svg.js.map +0 -1
- package/dist/cjs/components/DatakeenSession.js.map +0 -1
- package/dist/cjs/components/document-collection/DocumentCollection.js.map +0 -1
- package/dist/cjs/components/document-collection/DocumentCollectionIntroduction.js.map +0 -1
- package/dist/cjs/components/document-collection/DocumentCollectionMethodSelection.js.map +0 -1
- package/dist/cjs/components/document-collection/DocumentCollectionSelection.js.map +0 -1
- package/dist/cjs/components/document-collection/DocumentCollectionUpload.js.map +0 -1
- package/dist/cjs/components/document-collection/DocumentError.js.map +0 -1
- package/dist/cjs/components/document-collection/DocumentProcessing.js.map +0 -1
- package/dist/cjs/components/document-collection/DocumentSuccess.js.map +0 -1
- package/dist/cjs/components/document-video/DocumentVideoCapture.js.map +0 -1
- package/dist/cjs/components/document-video/DocumentVideoConfirmation.js.map +0 -1
- package/dist/cjs/components/document-video/document-video-flow/DocumentVideoFlow.js.map +0 -1
- package/dist/cjs/components/document-video/document-video-flow/DocumentVideoInstructions.js.map +0 -1
- package/dist/cjs/components/document-video/document-video-flow/DocumentVideoProcessing.js.map +0 -1
- package/dist/cjs/components/document-video/document-video-flow/DocumentVideoRecorder.js.map +0 -1
- package/dist/cjs/components/icons/ElectronicIcon.js.map +0 -1
- package/dist/cjs/components/icons/PoweredByIcon.js.map +0 -1
- package/dist/cjs/components/icons/PreIntroIcon.js.map +0 -1
- package/dist/cjs/components/icons/StartIcon.js.map +0 -1
- package/dist/cjs/components/id-check/BeforePhoto.js.map +0 -1
- package/dist/cjs/components/id-check/BeforeVersoPhoto.js.map +0 -1
- package/dist/cjs/components/id-check/CameraError.js.map +0 -1
- package/dist/cjs/components/id-check/CameraMask.js.map +0 -1
- package/dist/cjs/components/id-check/OrientationToggle.js.map +0 -1
- package/dist/cjs/components/id-check/Photo.js.map +0 -1
- package/dist/cjs/components/id-check/PhotoConfirmation.js.map +0 -1
- package/dist/cjs/components/id-check/PhotoPreview.js.map +0 -1
- package/dist/cjs/components/jdi/JDDWorkInProgress.js.map +0 -1
- package/dist/cjs/components/jdi/JDICountrySelection.js.map +0 -1
- package/dist/cjs/components/jdi/JDIDocumentSelection.js.map +0 -1
- package/dist/cjs/components/jdi/JDIDocumentUpload.js.map +0 -1
- package/dist/cjs/components/jdi/JDIError.js.map +0 -1
- package/dist/cjs/components/jdi/JDIPreIntroduction.js.map +0 -1
- package/dist/cjs/components/jdi/JDIProcessing.js.map +0 -1
- package/dist/cjs/components/jdi/JDISuccess.js.map +0 -1
- package/dist/cjs/components/legal-consent/LegalConsentNode.js.map +0 -1
- package/dist/cjs/components/nfc-scan/BiometricSymbol.js.map +0 -1
- package/dist/cjs/components/nfc-scan/NfcChipGate.js.map +0 -1
- package/dist/cjs/components/nfc-scan/NfcFallbackSurvey.js.map +0 -1
- package/dist/cjs/components/nfc-scan/NfcOnboardingNotice.js.map +0 -1
- package/dist/cjs/components/nfc-scan/NfcScanNode.js.map +0 -1
- package/dist/cjs/components/nfc-scan/NfcSuccessAnimation.js.map +0 -1
- package/dist/cjs/components/nfc-scan/PuceCniSymbol.js.map +0 -1
- package/dist/cjs/components/selfie/SelfieConfirmation.js.map +0 -1
- package/dist/cjs/components/selfie/Video.css.js.map +0 -1
- package/dist/cjs/components/selfie/Video.js.map +0 -1
- package/dist/cjs/components/selfie/VideoFixes.css.js.map +0 -1
- package/dist/cjs/components/selfie/VideoResetStyles.js.map +0 -1
- package/dist/cjs/components/selfie/hooks/useLiveFrameCapture.js.map +0 -1
- package/dist/cjs/components/selfie/hooks/useVideoRecorderStyles.js.map +0 -1
- package/dist/cjs/components/selfie/selfie-flow/InstructionsSelfie.js.map +0 -1
- package/dist/cjs/components/selfie/selfie-flow/SelfieFlow.js.map +0 -1
- package/dist/cjs/components/selfie/selfie-flow/SelfiePreIntroduction.js.map +0 -1
- package/dist/cjs/components/selfie/selfie-flow/SelfieProcessing.js.map +0 -1
- package/dist/cjs/components/selfie/selfie-flow/SelfieRecorder.js.map +0 -1
- package/dist/cjs/components/selfie/utils/selfieCaptureUtils.js.map +0 -1
- package/dist/cjs/components/selfie/utils/unisseyStrings.js.map +0 -1
- package/dist/cjs/components/selfie/utils/videoElementStyles.js.map +0 -1
- package/dist/cjs/components/session/DocumentCheck.js.map +0 -1
- package/dist/cjs/components/session/EndFlow.js.map +0 -1
- package/dist/cjs/components/session/MobileRedirect.js.map +0 -1
- package/dist/cjs/components/session/PdfGeneration.js.map +0 -1
- package/dist/cjs/components/session/Selfie.js.map +0 -1
- package/dist/cjs/components/session/SessionContent.js.map +0 -1
- package/dist/cjs/components/session/SessionExpired.js.map +0 -1
- package/dist/cjs/components/session/StartSession.js.map +0 -1
- package/dist/cjs/components/session/UserInputForm/AddressFields.js.map +0 -1
- package/dist/cjs/components/session/UserInputForm/ContactFields.js.map +0 -1
- package/dist/cjs/components/session/UserInputForm/CustomFormFields.js.map +0 -1
- package/dist/cjs/components/session/UserInputForm/DatePickerField.js.map +0 -1
- package/dist/cjs/components/session/UserInputForm/IdentityFields.js.map +0 -1
- package/dist/cjs/components/session/UserInputForm/LegalEntityFields.js.map +0 -1
- package/dist/cjs/components/session/UserInputForm/LegalRepFields.js.map +0 -1
- package/dist/cjs/components/session/UserInputForm/NationalityField.js.map +0 -1
- package/dist/cjs/components/session/UserInputForm.js.map +0 -1
- package/dist/cjs/components/session/VideoWorkInProgress.js.map +0 -1
- package/dist/cjs/components/session/controleJdiPolicy.js.map +0 -1
- package/dist/cjs/components/session/endScreenIcons.js.map +0 -1
- package/dist/cjs/components/signature-electronic/DocusealSignature.js.map +0 -1
- package/dist/cjs/components/signature-electronic/SignatureElectronic.js.map +0 -1
- package/dist/cjs/components/signature-electronic/SignatureElectronicIntroduction.js.map +0 -1
- package/dist/cjs/components/signature-electronic/SignedDocumentPreview.js.map +0 -1
- package/dist/cjs/components/start-flow/Start.js.map +0 -1
- package/dist/cjs/components/states/ErrorState.js.map +0 -1
- package/dist/cjs/components/states/LoadingState.js.map +0 -1
- package/dist/cjs/components/states/NoSessionIdState.js.map +0 -1
- package/dist/cjs/components/template/ComplementaryMandateNodeHandler.js.map +0 -1
- package/dist/cjs/components/template/ConditionNodeHandler.js.map +0 -1
- package/dist/cjs/components/template/ExternalVerificationNodeHandler.js.map +0 -1
- package/dist/cjs/components/template/TemplateNodeRenderer.js.map +0 -1
- package/dist/cjs/components/template/conditionNodePolicy.js.map +0 -1
- package/dist/cjs/components/ui/Body.js.map +0 -1
- package/dist/cjs/components/ui/Button.js.map +0 -1
- package/dist/cjs/components/ui/ButtonDesktop.js.map +0 -1
- package/dist/cjs/components/ui/Card.js.map +0 -1
- package/dist/cjs/components/ui/MobilePageLayout.js.map +0 -1
- package/dist/cjs/components/ui/PDFPreview.js.map +0 -1
- package/dist/cjs/components/ui/PageActions.js.map +0 -1
- package/dist/cjs/components/ui/Paper.js.map +0 -1
- package/dist/cjs/components/ui/PoweredBy.js.map +0 -1
- package/dist/cjs/components/ui/QRCodeDisplay.js.map +0 -1
- package/dist/cjs/components/ui/SelectComponent.js.map +0 -1
- package/dist/cjs/components/ui/Subtitle.js.map +0 -1
- package/dist/cjs/components/ui/Title.js.map +0 -1
- package/dist/cjs/config/env.js.map +0 -1
- package/dist/cjs/constants/userInputForm.js.map +0 -1
- package/dist/cjs/context/ConfigContext.js.map +0 -1
- package/dist/cjs/context/DocumentContext.js.map +0 -1
- package/dist/cjs/context/SessionContext.js.map +0 -1
- package/dist/cjs/hooks/useClientInfo.js.map +0 -1
- package/dist/cjs/hooks/useCountryOptions.js.map +0 -1
- package/dist/cjs/hooks/useI18n.js.map +0 -1
- package/dist/cjs/hooks/useIsMobile.js.map +0 -1
- package/dist/cjs/hooks/useNfcSseStatus.js.map +0 -1
- package/dist/cjs/hooks/useRouteCSS.js.map +0 -1
- package/dist/cjs/hooks/useSession.js.map +0 -1
- package/dist/cjs/hooks/useSessionData.js.map +0 -1
- package/dist/cjs/hooks/useStepCSS.js.map +0 -1
- package/dist/cjs/hooks/useStepNavigation.js.map +0 -1
- package/dist/cjs/hooks/useTemplateLoader.js.map +0 -1
- package/dist/cjs/hooks/useUserInputForm.js.map +0 -1
- package/dist/cjs/i18n/country/country.en.json.js.map +0 -1
- package/dist/cjs/i18n/country/country.fr.json.js.map +0 -1
- package/dist/cjs/i18n/country/country.iso2.en.json.js.map +0 -1
- package/dist/cjs/i18n/country/country.iso2.fr.json.js.map +0 -1
- package/dist/cjs/i18n/documents/documents.en.json.js.map +0 -1
- package/dist/cjs/i18n/documents/documents.fr.json.js.map +0 -1
- package/dist/cjs/i18n/en.json.js.map +0 -1
- package/dist/cjs/i18n/es.json.js.map +0 -1
- package/dist/cjs/i18n/fr.json.js.map +0 -1
- package/dist/cjs/i18n/index.js.map +0 -1
- package/dist/cjs/index.css.js.map +0 -1
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/node_modules/date-fns/locale/_lib/buildFormatLongFn.js.map +0 -1
- package/dist/cjs/node_modules/date-fns/locale/_lib/buildLocalizeFn.js.map +0 -1
- package/dist/cjs/node_modules/date-fns/locale/_lib/buildMatchFn.js.map +0 -1
- package/dist/cjs/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js.map +0 -1
- package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/formatDistance.js.map +0 -1
- package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/formatLong.js.map +0 -1
- package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/formatRelative.js.map +0 -1
- package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/localize.js.map +0 -1
- package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/match.js.map +0 -1
- package/dist/cjs/node_modules/date-fns/locale/en-US.js.map +0 -1
- package/dist/cjs/node_modules/date-fns/locale/fr/_lib/formatDistance.js.map +0 -1
- package/dist/cjs/node_modules/date-fns/locale/fr/_lib/formatLong.js.map +0 -1
- package/dist/cjs/node_modules/date-fns/locale/fr/_lib/formatRelative.js.map +0 -1
- package/dist/cjs/node_modules/date-fns/locale/fr/_lib/localize.js.map +0 -1
- package/dist/cjs/node_modules/date-fns/locale/fr/_lib/match.js.map +0 -1
- package/dist/cjs/node_modules/date-fns/locale/fr.js.map +0 -1
- package/dist/cjs/node_modules/heic2any/dist/heic2any.js.map +0 -1
- package/dist/cjs/node_modules/pdfjs-dist/legacy/build/pdf.js.map +0 -1
- package/dist/cjs/node_modules/pdfjs-dist/legacy/build/pdf.worker.js.map +0 -1
- package/dist/cjs/node_modules/style-inject/dist/style-inject.es.js.map +0 -1
- package/dist/cjs/node_modules/tslib/tslib.es6.js.map +0 -1
- package/dist/cjs/providers/I18nProvider.js.map +0 -1
- package/dist/cjs/services/analysis.js.map +0 -1
- package/dist/cjs/services/api.js.map +0 -1
- package/dist/cjs/services/auditTrailService.js.map +0 -1
- package/dist/cjs/services/cameraService.js.map +0 -1
- package/dist/cjs/services/documentEdgeDetectionService.js.map +0 -1
- package/dist/cjs/services/documentTemplate.js.map +0 -1
- package/dist/cjs/services/iadService.js.map +0 -1
- package/dist/cjs/services/integrationService.js.map +0 -1
- package/dist/cjs/services/pollingService.js.map +0 -1
- package/dist/cjs/services/professionalImageQuality.js.map +0 -1
- package/dist/cjs/services/retryService.js.map +0 -1
- package/dist/cjs/services/sessionCredentials.js.map +0 -1
- package/dist/cjs/services/sessionMemoryStore.js.map +0 -1
- package/dist/cjs/services/sessionService.js.map +0 -1
- package/dist/cjs/services/utils.js.map +0 -1
- package/dist/cjs/types/session.js.map +0 -1
- package/dist/cjs/utils/analysisErrors.js.map +0 -1
- package/dist/cjs/utils/apiAnalysis.js.map +0 -1
- package/dist/cjs/utils/conditionEvaluator.js.map +0 -1
- package/dist/cjs/utils/countryFlags.js.map +0 -1
- package/dist/cjs/utils/cssLoader.js.map +0 -1
- package/dist/cjs/utils/customFieldIds.js.map +0 -1
- package/dist/cjs/utils/customFieldValidation.js.map +0 -1
- package/dist/cjs/utils/documentLabels.js.map +0 -1
- package/dist/cjs/utils/europeanCountries.js.map +0 -1
- package/dist/cjs/utils/fileConverter.js.map +0 -1
- package/dist/cjs/utils/imageConverter.js.map +0 -1
- package/dist/cjs/utils/imageProcessing.js.map +0 -1
- package/dist/cjs/utils/isMobileDevice.js.map +0 -1
- package/dist/cjs/utils/isoCountryCodes.js.map +0 -1
- package/dist/cjs/utils/jdiCodes.js.map +0 -1
- package/dist/cjs/utils/labelToKey.js.map +0 -1
- package/dist/cjs/utils/listFieldUtils.js.map +0 -1
- package/dist/cjs/utils/mimeTypes.js.map +0 -1
- package/dist/cjs/utils/navigation.js.map +0 -1
- package/dist/cjs/utils/renderInlineMarkdown.js.map +0 -1
- package/dist/cjs/utils/sessionStatus.js.map +0 -1
- package/dist/cjs/utils/userInputForm.js.map +0 -1
- package/dist/cjs/utils/utils.js.map +0 -1
- package/dist/cjs/utils/validationUtils.js.map +0 -1
- package/dist/esm/_virtual/_commonjsHelpers.js.map +0 -1
- package/dist/esm/_virtual/heic2any.js.map +0 -1
- package/dist/esm/_virtual/heic2any2.js.map +0 -1
- package/dist/esm/assets/Face Scan Square.svg.js.map +0 -1
- package/dist/esm/assets/Lightbulb.svg.js.map +0 -1
- package/dist/esm/assets/Monitor Camera.svg.js.map +0 -1
- package/dist/esm/assets/User Hands.svg.js.map +0 -1
- package/dist/esm/assets/before-document.png.js.map +0 -1
- package/dist/esm/assets/before-passport.png.js.map +0 -1
- package/dist/esm/assets/before-photo.png.js.map +0 -1
- package/dist/esm/assets/before-verso.png.js.map +0 -1
- package/dist/esm/assets/check.svg.js.map +0 -1
- package/dist/esm/assets/icons/shield_magic_link.svg.js.map +0 -1
- package/dist/esm/assets/selfietake.svg.js.map +0 -1
- package/dist/esm/components/DatakeenSession.js.map +0 -1
- package/dist/esm/components/document-collection/DocumentCollection.js.map +0 -1
- package/dist/esm/components/document-collection/DocumentCollectionIntroduction.js.map +0 -1
- package/dist/esm/components/document-collection/DocumentCollectionMethodSelection.js.map +0 -1
- package/dist/esm/components/document-collection/DocumentCollectionSelection.js.map +0 -1
- package/dist/esm/components/document-collection/DocumentCollectionUpload.js.map +0 -1
- package/dist/esm/components/document-collection/DocumentError.js.map +0 -1
- package/dist/esm/components/document-collection/DocumentProcessing.js.map +0 -1
- package/dist/esm/components/document-collection/DocumentSuccess.js.map +0 -1
- package/dist/esm/components/document-video/DocumentVideoCapture.js.map +0 -1
- package/dist/esm/components/document-video/DocumentVideoConfirmation.js.map +0 -1
- package/dist/esm/components/document-video/document-video-flow/DocumentVideoFlow.js.map +0 -1
- package/dist/esm/components/document-video/document-video-flow/DocumentVideoInstructions.js.map +0 -1
- package/dist/esm/components/document-video/document-video-flow/DocumentVideoProcessing.js.map +0 -1
- package/dist/esm/components/document-video/document-video-flow/DocumentVideoRecorder.js.map +0 -1
- package/dist/esm/components/icons/ElectronicIcon.js.map +0 -1
- package/dist/esm/components/icons/PoweredByIcon.js.map +0 -1
- package/dist/esm/components/icons/PreIntroIcon.js.map +0 -1
- package/dist/esm/components/icons/StartIcon.js.map +0 -1
- package/dist/esm/components/id-check/BeforePhoto.js.map +0 -1
- package/dist/esm/components/id-check/BeforeVersoPhoto.js.map +0 -1
- package/dist/esm/components/id-check/CameraError.js.map +0 -1
- package/dist/esm/components/id-check/CameraMask.js.map +0 -1
- package/dist/esm/components/id-check/OrientationToggle.js.map +0 -1
- package/dist/esm/components/id-check/Photo.js.map +0 -1
- package/dist/esm/components/id-check/PhotoConfirmation.js.map +0 -1
- package/dist/esm/components/id-check/PhotoPreview.js.map +0 -1
- package/dist/esm/components/jdi/JDDWorkInProgress.js.map +0 -1
- package/dist/esm/components/jdi/JDICountrySelection.js.map +0 -1
- package/dist/esm/components/jdi/JDIDocumentSelection.js.map +0 -1
- package/dist/esm/components/jdi/JDIDocumentUpload.js.map +0 -1
- package/dist/esm/components/jdi/JDIError.js.map +0 -1
- package/dist/esm/components/jdi/JDIPreIntroduction.js.map +0 -1
- package/dist/esm/components/jdi/JDIProcessing.js.map +0 -1
- package/dist/esm/components/jdi/JDISuccess.js.map +0 -1
- package/dist/esm/components/legal-consent/LegalConsentNode.js.map +0 -1
- package/dist/esm/components/nfc-scan/BiometricSymbol.js.map +0 -1
- package/dist/esm/components/nfc-scan/NfcChipGate.js.map +0 -1
- package/dist/esm/components/nfc-scan/NfcFallbackSurvey.js.map +0 -1
- package/dist/esm/components/nfc-scan/NfcOnboardingNotice.js.map +0 -1
- package/dist/esm/components/nfc-scan/NfcScanNode.js.map +0 -1
- package/dist/esm/components/nfc-scan/NfcSuccessAnimation.js.map +0 -1
- package/dist/esm/components/nfc-scan/PuceCniSymbol.js.map +0 -1
- package/dist/esm/components/selfie/SelfieConfirmation.js.map +0 -1
- package/dist/esm/components/selfie/Video.css.js.map +0 -1
- package/dist/esm/components/selfie/Video.js.map +0 -1
- package/dist/esm/components/selfie/VideoFixes.css.js.map +0 -1
- package/dist/esm/components/selfie/VideoResetStyles.js.map +0 -1
- package/dist/esm/components/selfie/hooks/useLiveFrameCapture.js.map +0 -1
- package/dist/esm/components/selfie/hooks/useVideoRecorderStyles.js.map +0 -1
- package/dist/esm/components/selfie/selfie-flow/InstructionsSelfie.js.map +0 -1
- package/dist/esm/components/selfie/selfie-flow/SelfieFlow.js.map +0 -1
- package/dist/esm/components/selfie/selfie-flow/SelfiePreIntroduction.js.map +0 -1
- package/dist/esm/components/selfie/selfie-flow/SelfieProcessing.js.map +0 -1
- package/dist/esm/components/selfie/selfie-flow/SelfieRecorder.js.map +0 -1
- package/dist/esm/components/selfie/utils/selfieCaptureUtils.js.map +0 -1
- package/dist/esm/components/selfie/utils/unisseyStrings.js.map +0 -1
- package/dist/esm/components/selfie/utils/videoElementStyles.js.map +0 -1
- package/dist/esm/components/session/DocumentCheck.js.map +0 -1
- package/dist/esm/components/session/EndFlow.js.map +0 -1
- package/dist/esm/components/session/MobileRedirect.js.map +0 -1
- package/dist/esm/components/session/PdfGeneration.js.map +0 -1
- package/dist/esm/components/session/Selfie.js.map +0 -1
- package/dist/esm/components/session/SessionContent.js.map +0 -1
- package/dist/esm/components/session/SessionExpired.js.map +0 -1
- package/dist/esm/components/session/StartSession.js.map +0 -1
- package/dist/esm/components/session/UserInputForm/AddressFields.js.map +0 -1
- package/dist/esm/components/session/UserInputForm/ContactFields.js.map +0 -1
- package/dist/esm/components/session/UserInputForm/CustomFormFields.js.map +0 -1
- package/dist/esm/components/session/UserInputForm/DatePickerField.js.map +0 -1
- package/dist/esm/components/session/UserInputForm/IdentityFields.js.map +0 -1
- package/dist/esm/components/session/UserInputForm/LegalEntityFields.js.map +0 -1
- package/dist/esm/components/session/UserInputForm/LegalRepFields.js.map +0 -1
- package/dist/esm/components/session/UserInputForm/NationalityField.js.map +0 -1
- package/dist/esm/components/session/UserInputForm.js.map +0 -1
- package/dist/esm/components/session/VideoWorkInProgress.js.map +0 -1
- package/dist/esm/components/session/controleJdiPolicy.js.map +0 -1
- package/dist/esm/components/session/endScreenIcons.js.map +0 -1
- package/dist/esm/components/signature-electronic/DocusealSignature.js.map +0 -1
- package/dist/esm/components/signature-electronic/SignatureElectronic.js.map +0 -1
- package/dist/esm/components/signature-electronic/SignatureElectronicIntroduction.js.map +0 -1
- package/dist/esm/components/signature-electronic/SignedDocumentPreview.js.map +0 -1
- package/dist/esm/components/start-flow/Start.js.map +0 -1
- package/dist/esm/components/states/ErrorState.js.map +0 -1
- package/dist/esm/components/states/LoadingState.js.map +0 -1
- package/dist/esm/components/states/NoSessionIdState.js.map +0 -1
- package/dist/esm/components/template/ComplementaryMandateNodeHandler.js.map +0 -1
- package/dist/esm/components/template/ConditionNodeHandler.js.map +0 -1
- package/dist/esm/components/template/ExternalVerificationNodeHandler.js.map +0 -1
- package/dist/esm/components/template/TemplateNodeRenderer.js.map +0 -1
- package/dist/esm/components/template/conditionNodePolicy.js.map +0 -1
- package/dist/esm/components/ui/Body.js.map +0 -1
- package/dist/esm/components/ui/Button.js.map +0 -1
- package/dist/esm/components/ui/ButtonDesktop.js.map +0 -1
- package/dist/esm/components/ui/Card.js.map +0 -1
- package/dist/esm/components/ui/MobilePageLayout.js.map +0 -1
- package/dist/esm/components/ui/PDFPreview.js.map +0 -1
- package/dist/esm/components/ui/PageActions.js.map +0 -1
- package/dist/esm/components/ui/Paper.js.map +0 -1
- package/dist/esm/components/ui/PoweredBy.js.map +0 -1
- package/dist/esm/components/ui/QRCodeDisplay.js.map +0 -1
- package/dist/esm/components/ui/SelectComponent.js.map +0 -1
- package/dist/esm/components/ui/Subtitle.js.map +0 -1
- package/dist/esm/components/ui/Title.js.map +0 -1
- package/dist/esm/config/env.js.map +0 -1
- package/dist/esm/constants/userInputForm.js.map +0 -1
- package/dist/esm/context/ConfigContext.js.map +0 -1
- package/dist/esm/context/DocumentContext.js.map +0 -1
- package/dist/esm/context/SessionContext.js.map +0 -1
- package/dist/esm/hooks/useClientInfo.js.map +0 -1
- package/dist/esm/hooks/useCountryOptions.js.map +0 -1
- package/dist/esm/hooks/useI18n.js.map +0 -1
- package/dist/esm/hooks/useIsMobile.js.map +0 -1
- package/dist/esm/hooks/useNfcSseStatus.js.map +0 -1
- package/dist/esm/hooks/useRouteCSS.js.map +0 -1
- package/dist/esm/hooks/useSession.js.map +0 -1
- package/dist/esm/hooks/useSessionData.js.map +0 -1
- package/dist/esm/hooks/useStepCSS.js.map +0 -1
- package/dist/esm/hooks/useStepNavigation.js.map +0 -1
- package/dist/esm/hooks/useTemplateLoader.js.map +0 -1
- package/dist/esm/hooks/useUserInputForm.js.map +0 -1
- package/dist/esm/i18n/country/country.en.json.js.map +0 -1
- package/dist/esm/i18n/country/country.fr.json.js.map +0 -1
- package/dist/esm/i18n/country/country.iso2.en.json.js.map +0 -1
- package/dist/esm/i18n/country/country.iso2.fr.json.js.map +0 -1
- package/dist/esm/i18n/documents/documents.en.json.js.map +0 -1
- package/dist/esm/i18n/documents/documents.fr.json.js.map +0 -1
- package/dist/esm/i18n/en.json.js.map +0 -1
- package/dist/esm/i18n/es.json.js.map +0 -1
- package/dist/esm/i18n/fr.json.js.map +0 -1
- package/dist/esm/i18n/index.js.map +0 -1
- package/dist/esm/index.css.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/node_modules/date-fns/locale/_lib/buildFormatLongFn.js.map +0 -1
- package/dist/esm/node_modules/date-fns/locale/_lib/buildLocalizeFn.js.map +0 -1
- package/dist/esm/node_modules/date-fns/locale/_lib/buildMatchFn.js.map +0 -1
- package/dist/esm/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js.map +0 -1
- package/dist/esm/node_modules/date-fns/locale/en-US/_lib/formatDistance.js.map +0 -1
- package/dist/esm/node_modules/date-fns/locale/en-US/_lib/formatLong.js.map +0 -1
- package/dist/esm/node_modules/date-fns/locale/en-US/_lib/formatRelative.js.map +0 -1
- package/dist/esm/node_modules/date-fns/locale/en-US/_lib/localize.js.map +0 -1
- package/dist/esm/node_modules/date-fns/locale/en-US/_lib/match.js.map +0 -1
- package/dist/esm/node_modules/date-fns/locale/en-US.js.map +0 -1
- package/dist/esm/node_modules/date-fns/locale/fr/_lib/formatDistance.js.map +0 -1
- package/dist/esm/node_modules/date-fns/locale/fr/_lib/formatLong.js.map +0 -1
- package/dist/esm/node_modules/date-fns/locale/fr/_lib/formatRelative.js.map +0 -1
- package/dist/esm/node_modules/date-fns/locale/fr/_lib/localize.js.map +0 -1
- package/dist/esm/node_modules/date-fns/locale/fr/_lib/match.js.map +0 -1
- package/dist/esm/node_modules/date-fns/locale/fr.js.map +0 -1
- package/dist/esm/node_modules/heic2any/dist/heic2any.js.map +0 -1
- package/dist/esm/node_modules/pdfjs-dist/legacy/build/pdf.js.map +0 -1
- package/dist/esm/node_modules/pdfjs-dist/legacy/build/pdf.worker.js.map +0 -1
- package/dist/esm/node_modules/style-inject/dist/style-inject.es.js.map +0 -1
- package/dist/esm/node_modules/tslib/tslib.es6.js.map +0 -1
- package/dist/esm/providers/I18nProvider.js.map +0 -1
- package/dist/esm/services/analysis.js.map +0 -1
- package/dist/esm/services/api.js.map +0 -1
- package/dist/esm/services/auditTrailService.js.map +0 -1
- package/dist/esm/services/cameraService.js.map +0 -1
- package/dist/esm/services/documentEdgeDetectionService.js.map +0 -1
- package/dist/esm/services/documentTemplate.js.map +0 -1
- package/dist/esm/services/iadService.js.map +0 -1
- package/dist/esm/services/integrationService.js.map +0 -1
- package/dist/esm/services/pollingService.js.map +0 -1
- package/dist/esm/services/professionalImageQuality.js.map +0 -1
- package/dist/esm/services/retryService.js.map +0 -1
- package/dist/esm/services/sessionCredentials.js.map +0 -1
- package/dist/esm/services/sessionMemoryStore.js.map +0 -1
- package/dist/esm/services/sessionService.js.map +0 -1
- package/dist/esm/services/utils.js.map +0 -1
- package/dist/esm/types/session.js.map +0 -1
- package/dist/esm/utils/analysisErrors.js.map +0 -1
- package/dist/esm/utils/apiAnalysis.js.map +0 -1
- package/dist/esm/utils/conditionEvaluator.js.map +0 -1
- package/dist/esm/utils/countryFlags.js.map +0 -1
- package/dist/esm/utils/cssLoader.js.map +0 -1
- package/dist/esm/utils/customFieldIds.js.map +0 -1
- package/dist/esm/utils/customFieldValidation.js.map +0 -1
- package/dist/esm/utils/documentLabels.js.map +0 -1
- package/dist/esm/utils/europeanCountries.js.map +0 -1
- package/dist/esm/utils/fileConverter.js.map +0 -1
- package/dist/esm/utils/imageConverter.js.map +0 -1
- package/dist/esm/utils/imageProcessing.js.map +0 -1
- package/dist/esm/utils/isMobileDevice.js.map +0 -1
- package/dist/esm/utils/isoCountryCodes.js.map +0 -1
- package/dist/esm/utils/jdiCodes.js.map +0 -1
- package/dist/esm/utils/labelToKey.js.map +0 -1
- package/dist/esm/utils/listFieldUtils.js.map +0 -1
- package/dist/esm/utils/mimeTypes.js.map +0 -1
- package/dist/esm/utils/navigation.js.map +0 -1
- package/dist/esm/utils/renderInlineMarkdown.js.map +0 -1
- package/dist/esm/utils/sessionStatus.js.map +0 -1
- package/dist/esm/utils/userInputForm.js.map +0 -1
- package/dist/esm/utils/utils.js.map +0 -1
- package/dist/esm/utils/validationUtils.js.map +0 -1
- package/docs/COMPLEMENTARY_MANDATE.md +0 -22
- package/docs/GITLAB_BADGES_SETUP.md +0 -317
- package/docs/JOURNEY_NODE_BUILDER.md +0 -222
- package/docs/POLLING_SYSTEM.md +0 -699
- package/docs/README.md +0 -254
- package/docs/SESSION_TOKEN_MIGRATION.md +0 -52
- package/docs/condition-node.md +0 -651
- package/docs/configuration.md +0 -113
- package/docs/dynamic-configuration.md +0 -97
- package/docs/environment.md +0 -27
- package/docs/migration-guide.md +0 -120
- package/docs/multi-runs.md +0 -111
- package/docs/navigation-history.md +0 -163
- package/docs/sdk_integration_guide.md +0 -58
- package/eslint.config.js +0 -13
- package/examples/analysis-progress-example.tsx +0 -220
- package/examples/sdk-configuration.ts +0 -187
- package/examples/test-updated-urls.ts +0 -162
- package/examples/usage-example.tsx +0 -49
- package/jest.config.js +0 -32
- package/postcss.config.js +0 -6
- package/renovate.json +0 -242
- package/rollup.asset-url-plugin.js +0 -38
- package/rollup.dev.config.js +0 -65
- package/setupTests.js +0 -41
- package/tailwind.config.js +0 -11
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SessionContent.js","sources":["../../../../../src/components/session/SessionContent.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport StartSession from \"../session/StartSession\";\nimport MobileRedirect from \"../session/MobileRedirect\";\nimport EndFlow from \"../session/EndFlow\";\nimport LoadingState from \"../states/LoadingState\";\nimport TemplateNodeRenderer from \"../template/TemplateNodeRenderer\";\nimport { getOrderedJourneySteps } from \"../../services/sessionService\";\nimport { isSessionFinished } from \"../../utils/sessionStatus\";\nimport type { SessionData, stepObject } from \"../../types/session\";\nimport type { UserInput } from \"../../types/userInput\";\nimport type { ContactInfo } from \"../../types/contactInfo\";\nimport { useI18n } from \"../../hooks/useI18n\";\n\ninterface SessionContentProps {\n step: number;\n loading: boolean;\n session: SessionData | null;\n sessionId: string;\n stepObject: stepObject;\n stepHistory: number[];\n userInput: UserInput;\n setUserInput: React.Dispatch<React.SetStateAction<UserInput>>;\n contactInfo: ContactInfo;\n setContactInfo: React.Dispatch<React.SetStateAction<ContactInfo>>;\n}\n\nconst SessionContent: React.FC<SessionContentProps> = ({\n step,\n loading,\n session,\n sessionId,\n stepObject,\n stepHistory,\n userInput,\n setUserInput,\n contactInfo,\n setContactInfo,\n}) => {\n const { setLanguage, currentLanguage, t } = useI18n();\n // If is mobile template, isMobileCapture should be true for document-selection nodes\n const isMobileTemplate = session?.template?.platforms?.mobile === true;\n const showQRCodeInstructions =\n isMobileTemplate && session?.template?.showQRCode === true;\n const isDesktopAllowed = session?.template?.platforms?.desktop === true;\n\n // Get QR code title and description from Start node\n const startNode = session?.template?.nodes?.find(\n (node: any) => node.type === \"start\"\n );\n const qrCodeTitle = startNode?.qrCodeTitle;\n const qrCodeDescription = startNode?.qrCodeDescription;\n\n // Handle template step progression\n const handleContinueOnPC = () => {\n if (!session?.template) return;\n\n const templateNodes = getOrderedJourneySteps(session.template);\n // When user clicks \"Continue on PC\" from MobileRedirect (step 0.5), go to step 1\n // For other steps, calculate templateIndex normally\n const templateIndex =\n step === 0.5 ? 0 : showQRCodeInstructions ? step - 1.5 : step - 1;\n\n if (templateIndex < templateNodes.length - 1) {\n const nextStep =\n step === 0.5\n ? 1\n : showQRCodeInstructions\n ? templateIndex + 2.5\n : templateIndex + 2;\n stepObject.setStep(nextStep);\n } else {\n // Last step, finish the process\n const endNode = session.template.nodes.find(\n (node: { type: string }) => node.type === \"end\"\n );\n if (endNode) {\n // Continue to the next node which will be the \"end\" node\n stepObject.setStep(\n step === 0.5\n ? 1\n : showQRCodeInstructions\n ? templateIndex + 2.5\n : templateIndex + 2\n );\n } else {\n stepObject.setStep(0);\n }\n }\n };\n\n // Change languages dynamically based on session template\n useEffect(() => {\n if (session?.template?.languages && session.template.languages.length > 0) {\n const language = session.template.languages[0]; // Use the first language\n\n // Check if language is different from current\n if (language !== currentLanguage) {\n setLanguage(language);\n }\n }\n }, []);\n\n // Special check: if the session is already finished, display EndFlow\n // directly (raw \"ended\" or a consolidated result status).\n if (isSessionFinished(session?.status)) {\n return (\n <EndFlow\n sessionId={sessionId}\n sessionStatus={session?.status}\n callbackURL={session?.callbackURL}\n compliantCase={session?.template?.endScreenConfig?.compliant}\n nonCompliantCase={session?.template?.endScreenConfig?.nonCompliant}\n alreadyFinished={session?.status !== \"ended\"}\n />\n );\n }\n\n // Render step content\n switch (step) {\n case 0:\n return (\n <StartSession\n stepObject={stepObject}\n session={session}\n showQRCodeInstructions={showQRCodeInstructions}\n />\n );\n\n case 0.5:\n // MobileRedirect step - only shown if showQRCodeInstructions is true\n return (\n <MobileRedirect\n sessionId={sessionId}\n onBack={() => stepObject.setStep(0)}\n onContinueOnPC={handleContinueOnPC}\n isDesktopAllowed={isDesktopAllowed}\n title={qrCodeTitle}\n subtitle={qrCodeDescription}\n />\n );\n\n default:\n // From step 1 onwards, use dynamic logic based on template\n if (step >= 1) {\n if (loading) {\n return (\n <LoadingState\n message={t(\"loading.document\")}\n subtitle={t(\"loading.preparing_document\")}\n />\n );\n }\n\n if (session?.template) {\n return (\n <TemplateNodeRenderer\n session={session}\n sessionId={sessionId}\n stepObject={stepObject}\n stepHistory={stepHistory}\n templateIndex={step - 1}\n onContinueOnPC={handleContinueOnPC}\n userInput={userInput}\n setUserInput={setUserInput}\n contactInfo={contactInfo}\n setContactInfo={setContactInfo}\n isMobileTemplate={isMobileTemplate}\n />\n );\n } else {\n console.log(\n \"❌ SessionContent - No template found, showing fallback\"\n );\n // Fallback if template is not available\n return (\n <div className=\"flex flex-col items-center justify-center h-full p-4 text-center\">\n <div className=\"animate-spin rounded-full h-12 w-12 border-t-2 border-b-2 border-primary mb-4\"></div>\n <h2 className=\"text-xl font-bold text-gray-700 mb-2\">\n {t(\"session_content.preparing_verification\")}\n </h2>\n <p className=\"text-gray-600 mb-4\">\n {t(\"session_content.please_wait\")}\n </p>\n <div className=\"bg-blue-50 border border-blue-200 rounded-lg p-3 mt-4 max-w-xs mx-auto\">\n <p className=\"text-sm text-blue-600\">\n {t(\"session_content.configuring_steps\")}\n </p>\n <button\n onClick={() => window.location.reload()}\n className=\"mt-2 px-3 py-1 bg-blue-600 text-white text-xs rounded\"\n >\n Actualiser si nécessaire\n </button>\n </div>\n </div>\n );\n }\n }\n\n return null;\n }\n};\n\nexport default SessionContent;\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SessionExpired.js","sources":["../../../../../src/components/session/SessionExpired.tsx"],"sourcesContent":["import React from \"react\";\nimport Button from \"../ui/Button\";\nimport shieldIcon from \"../../assets/icons/shield_magic_link.svg\";\nimport { useI18n } from \"../../hooks/useI18n\";\n\ninterface SessionExpiredProps {\n onRetry?: () => void;\n}\n\n/**\n * SessionExpired Component\n *\n * Displays a session expired message with a retry button\n */\nconst SessionExpired: React.FC<SessionExpiredProps> = ({ onRetry }) => {\n const { t } = useI18n();\n\n const handleRetry = () => {\n if (onRetry) {\n onRetry();\n } else {\n window.location.reload();\n }\n };\n\n return (\n <div className=\"flex flex-col items-center justify-center h-full text-center p-6\">\n <div className=\"mb-6\">\n <img src={shieldIcon} alt={t(\"session.expired.image_alt\", \"Session expirée\")} />\n </div>\n <h2 className=\"text-2xl font-bold text-red-600 mb-4\">{t(\"session.expired.title\", \"Session expirée\")}</h2>\n <p className=\"text-gray-600 mb-6\">{t(\"session.expired.description\", \"Cette session n'est plus valide, veuillez recommencer.\")}</p>\n <Button onClick={handleRetry} className=\"w-full\">\n {t(\"session.expired.retry\", \"Réessayer\")}\n </Button>\n </div>\n );\n};\n\nexport default SessionExpired;\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;AASA;;;;AAIG;AACH,IAAM,cAAc,GAAkC,UAAC,EAAW,EAAA;AAAT,IAAA,IAAA,OAAO,GAAA,EAAA,CAAA,OAAA;AACtD,IAAA,IAAA,CAAC,GAAK,OAAO,EAAE,EAAd;AAET,IAAA,IAAM,WAAW,GAAG,YAAA;QAClB,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,EAAE;QACX;aAAO;AACL,YAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;QAC1B;AACF,IAAA,CAAC;AAED,IAAA,QACEA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,kEAAkE,EAAA,QAAA,EAAA,CAC/EC,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,MAAM,EAAA,QAAA,EACnBA,GAAA,CAAA,KAAA,EAAA,EAAK,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,2BAA2B,EAAE,iBAAiB,CAAC,EAAA,CAAI,EAAA,CAC5E,EACNA,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,sCAAsC,EAAA,QAAA,EAAE,CAAC,CAAC,uBAAuB,EAAE,iBAAiB,CAAC,EAAA,CAAM,EACzGA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,oBAAoB,EAAA,QAAA,EAAE,CAAC,CAAC,6BAA6B,EAAE,wDAAwD,CAAC,EAAA,CAAK,EAClIA,GAAA,CAAC,MAAM,EAAA,EAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAC,QAAQ,EAAA,QAAA,EAC7C,CAAC,CAAC,uBAAuB,EAAE,WAAW,CAAC,EAAA,CACjC,CAAA,EAAA,CACL;AAEV;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StartSession.js","sources":["../../../../../src/components/session/StartSession.tsx"],"sourcesContent":["import type { stepObject } from \"../../types/session\";\nimport { type SessionData } from \"../../types/session\";\nimport Start from \"../start-flow/Start\";\n\ninterface StartSessionProps {\n stepObject: stepObject;\n session: SessionData | null;\n showQRCodeInstructions: boolean;\n}\n\n// Le consentement est porté par le nœud `legal-consent` du parcours : l'accueil\n// enchaîne directement sur le QR code (si configuré) ou le premier nœud.\nconst StartSession = ({ stepObject, session, showQRCodeInstructions }: StartSessionProps) => {\n const { setStep } = stepObject;\n\n const startNode = session?.template?.nodes?.find((node) => node.type === \"start\");\n\n return (\n <div className=\"w-full h-full\">\n <Start\n setStep={() => setStep(showQRCodeInstructions ? 0.5 : 1)}\n welcomeTitle={startNode?.welcomeTitle}\n welcomeSubtitle={startNode?.welcomeSubtitle}\n welcomeDescription={startNode?.welcomeDescription}\n welcomeImage={startNode?.welcomeImage}\n session={session ?? undefined}\n />\n </div>\n );\n};\n\nexport default StartSession;\n"],"names":["_jsx"],"mappings":";;;AAUA;AACA;AACA,IAAM,YAAY,GAAG,UAAC,EAAkE,EAAA;;AAAhE,IAAA,IAAA,UAAU,gBAAA,EAAE,OAAO,GAAA,EAAA,CAAA,OAAA,EAAE,sBAAsB,GAAA,EAAA,CAAA,sBAAA;AACzD,IAAA,IAAA,OAAO,GAAK,UAAU,CAAA,OAAf;AAEf,IAAA,IAAM,SAAS,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,MAAA,GAAA,MAAA,GAAP,OAAO,CAAE,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,IAAI,CAAC,UAAC,IAAI,EAAA,EAAK,OAAA,IAAI,CAAC,IAAI,KAAK,OAAO,CAAA,CAArB,CAAqB,CAAC;AAEjF,IAAA,QACEA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,eAAe,YAC5BA,GAAA,CAAC,KAAK,EAAA,EACJ,OAAO,EAAE,YAAA,EAAM,OAAA,OAAO,CAAC,sBAAsB,GAAG,GAAG,GAAG,CAAC,CAAC,CAAA,CAAzC,CAAyC,EACxD,YAAY,EAAE,SAAS,aAAT,SAAS,KAAA,MAAA,GAAA,MAAA,GAAT,SAAS,CAAE,YAAY,EACrC,eAAe,EAAE,SAAS,KAAA,IAAA,IAAT,SAAS,KAAA,MAAA,GAAA,MAAA,GAAT,SAAS,CAAE,eAAe,EAC3C,kBAAkB,EAAE,SAAS,KAAA,IAAA,IAAT,SAAS,KAAA,MAAA,GAAA,MAAA,GAAT,SAAS,CAAE,kBAAkB,EACjD,YAAY,EAAE,SAAS,KAAA,IAAA,IAAT,SAAS,uBAAT,SAAS,CAAE,YAAY,EACrC,OAAO,EAAE,OAAO,KAAA,IAAA,IAAP,OAAO,cAAP,OAAO,GAAI,SAAS,EAAA,CAC7B,EAAA,CACE;AAEV;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AddressFields.js","sources":["../../../../../../src/components/session/UserInputForm/AddressFields.tsx"],"sourcesContent":["import * as Label from \"@radix-ui/react-label\";\nimport clsx from \"clsx\";\nimport { Select } from \"../../ui/SelectComponent\";\nimport type {\n AddressSuggestion,\n RequestedFields,\n UserInputFormErrors,\n UserInputFormState,\n} from \"../../../types/userInputForm\";\nimport { useI18n } from \"../../../hooks/useI18n\";\nimport { useCountryOptions } from \"../../../hooks/useCountryOptions\";\n\ninterface AddressFieldsProps {\n form: UserInputFormState;\n errors: UserInputFormErrors;\n requestedFields: RequestedFields;\n addressSuggestions: AddressSuggestion[];\n showSuggestions: boolean;\n onFieldChange: (key: keyof UserInputFormState, value: string) => void;\n onAddressChange: (value: string) => void;\n onAddressFocus: () => void;\n onAddressBlur: () => void;\n onApplySuggestion: (suggestion: AddressSuggestion) => void;\n}\n\nconst AddressFields = ({\n form,\n errors,\n requestedFields,\n addressSuggestions,\n showSuggestions,\n onFieldChange,\n onAddressChange,\n onAddressFocus,\n onAddressBlur,\n onApplySuggestion,\n}: AddressFieldsProps) => {\n const { t } = useI18n();\n const countryOptions = useCountryOptions(\"user_input_form.select.country\");\n\n if (!requestedFields.has(\"adresse\")) {\n return null;\n }\n\n return (\n <>\n <div className=\"relative space-y-2\">\n <Label.Root\n htmlFor=\"addressLine1\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.address_line1\")}\n </Label.Root>\n <input\n id=\"addressLine1\"\n type=\"text\"\n value={form.addressLine1 || \"\"}\n onChange={(event) => onAddressChange(event.target.value)}\n onFocus={onAddressFocus}\n onBlur={onAddressBlur}\n placeholder={t(\"user_input_form.placeholders.address_line1\")}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.addressLine1\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover:border-gray-400\"\n )}\n autoComplete=\"street-address\"\n />\n {showSuggestions && addressSuggestions.length > 0 && (\n <div className=\"absolute z-20 mt-1 max-h-48 w-full overflow-auto rounded-lg border border-gray-200 bg-white shadow-lg\">\n {addressSuggestions.map((suggestion) => (\n <button\n key={suggestion.id}\n type=\"button\"\n className=\"w-full px-3 py-2 text-left text-sm hover:bg-gray-100\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => onApplySuggestion(suggestion)}\n >\n <div className=\"flex flex-col\">\n <span className=\"text-sm text-gray-900\">\n {suggestion.label}\n </span>\n {(suggestion.city ||\n suggestion.postalCode ||\n suggestion.country ||\n suggestion.countryCode) && (\n <span className=\"text-xs text-gray-500\">\n {[\n [suggestion.postalCode, suggestion.city]\n .filter(Boolean)\n .join(\" \"),\n suggestion.country ||\n suggestion.countryCode?.toUpperCase(),\n ]\n .filter(Boolean)\n .join(\", \")}\n </span>\n )}\n </div>\n </button>\n ))}\n </div>\n )}\n {errors.addressLine1 && (\n <p className=\"flex items-center gap-1 text-sm text-red-600\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.address_line1_required\")}\n </p>\n )}\n </div>\n\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"addressLine2\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.address_line2\")}\n </Label.Root>\n <input\n id=\"addressLine2\"\n type=\"text\"\n value={form.addressLine2 || \"\"}\n onChange={(event) =>\n onFieldChange(\"addressLine2\", event.target.value)\n }\n placeholder={t(\"user_input_form.placeholders.address_line2\")}\n className=\"w-full rounded-lg border border-gray-300 px-3 py-3 text-base transition-colors hover:border-gray-400 focus:border-transparent focus:outline-none focus:ring-2 focus:ring-[#11E5C5]\"\n autoComplete=\"address-line2\"\n />\n </div>\n\n <div className=\"grid grid-cols-[140px_minmax(0,1fr)] gap-3 md:grid-cols-[160px_minmax(0,1fr)]\">\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"postalCode\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.postal_code\")}\n </Label.Root>\n <input\n id=\"postalCode\"\n type=\"text\"\n value={form.postalCode || \"\"}\n onChange={(event) =>\n onFieldChange(\"postalCode\", event.target.value)\n }\n placeholder={t(\"user_input_form.placeholders.postal_code\")}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.postalCode\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover-border-gray-400\"\n )}\n autoComplete=\"postal-code\"\n />\n {errors.postalCode && (\n <p className=\"flex items-center gap-1 text-sm text-red-600\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.postal_code_required\")}\n </p>\n )}\n </div>\n\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"city\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.city\")}\n </Label.Root>\n <input\n id=\"city\"\n type=\"text\"\n value={form.city || \"\"}\n onChange={(event) => onFieldChange(\"city\", event.target.value)}\n placeholder={t(\"user_input_form.placeholders.city\")}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.city\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover-border-gray-400\"\n )}\n autoComplete=\"address-level2\"\n />\n {errors.city && (\n <p className=\"flex items-center gap-1 text-sm text-red-600\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.city_required\")}\n </p>\n )}\n </div>\n </div>\n\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"country\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.country\")}\n </Label.Root>\n <Select\n options={countryOptions}\n value={form.countryCode || \"\"}\n onValueChange={(value) => onFieldChange(\"countryCode\", value)}\n placeholder={t(\"user_input_form.select.country\")}\n error={Boolean(errors.country)}\n allowCustomValue\n />\n {errors.country && (\n <p className=\"flex items-center gap-1 text-sm text-red-600\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.country_required\")}\n </p>\n )}\n </div>\n </>\n );\n};\n\nexport default AddressFields;\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ContactFields.js","sources":["../../../../../../src/components/session/UserInputForm/ContactFields.tsx"],"sourcesContent":["import { Fragment } from \"react\";\nimport * as Label from \"@radix-ui/react-label\";\nimport clsx from \"clsx\";\nimport {\n RequestedFields,\n UserInputFormErrors,\n UserInputFormState,\n} from \"../../../types/userInputForm\";\nimport { FIELD_LABELS } from \"../../../constants/userInputForm\";\nimport { useI18n } from \"../../../hooks/useI18n\";\n\ninterface ContactFieldsProps {\n form: UserInputFormState;\n errors: UserInputFormErrors;\n requestedFields: RequestedFields;\n onFieldChange: (key: keyof UserInputFormState, value: string) => void;\n}\n\nconst ContactFields = ({\n form,\n errors,\n requestedFields,\n onFieldChange,\n}: ContactFieldsProps) => {\n const { t } = useI18n();\n\n return (\n <Fragment>\n {requestedFields.has(\"email\") && (\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"email\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(FIELD_LABELS.email)}\n </Label.Root>\n <input\n id=\"email\"\n type=\"email\"\n value={form.email || \"\"}\n onChange={(event) => onFieldChange(\"email\", event.target.value)}\n placeholder={t(\"user_input_form.placeholders.email\")}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.email\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover:border-gray-400\"\n )}\n autoComplete=\"email\"\n />\n {errors.email && (\n <p className=\"text-red-600 text-sm flex items-center gap-1\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.email_invalid\")}\n </p>\n )}\n </div>\n )}\n\n {requestedFields.has(\"sms\") && (\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"phoneNumber\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(FIELD_LABELS.sms)}\n </Label.Root>\n <input\n id=\"phoneNumber\"\n type=\"tel\"\n value={form.phoneNumber || \"\"}\n onChange={(event) => onFieldChange(\"phoneNumber\", event.target.value)}\n placeholder={t(\"user_input_form.placeholders.phone\")}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.phoneNumber\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover-border-gray-400\"\n )}\n autoComplete=\"tel\"\n />\n {errors.phoneNumber && (\n <p className=\"text-red-600 text-sm flex items-center gap-1\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.phone_invalid\")}\n </p>\n )}\n </div>\n )}\n </Fragment>\n );\n};\n\nexport default ContactFields;\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;AAkBA,IAAM,aAAa,GAAG,UAAC,EAKF,EAAA;QAJnB,IAAI,GAAA,EAAA,CAAA,IAAA,EACJ,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,eAAe,GAAA,EAAA,CAAA,eAAA,EACf,aAAa,GAAA,EAAA,CAAA,aAAA;AAEL,IAAA,IAAA,CAAC,GAAK,OAAO,EAAE,EAAd;AAET,IAAA,QACEA,IAAA,CAAC,QAAQ,eACN,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,KAC3BA,cAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,CACxBC,GAAA,CAAC,KAAK,CAAC,IAAI,EAAA,EACT,OAAO,EAAC,OAAO,EACf,SAAS,EAAC,wDAAwD,YAEjE,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,EAAA,CACX,EACbA,eACE,EAAE,EAAC,OAAO,EACV,IAAI,EAAC,OAAO,EACZ,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,EACvB,QAAQ,EAAE,UAAC,KAAK,EAAA,EAAK,OAAA,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,CAA1C,CAA0C,EAC/D,WAAW,EAAE,CAAC,CAAC,oCAAoC,CAAC,EACpD,SAAS,EAAE,IAAI,CACb,sJAAsJ,EACtJ,MAAM,CAAC;AACL,8BAAE;8BACA,uCAAuC,CAC5C,EACD,YAAY,EAAC,OAAO,EAAA,CACpB,EACD,MAAM,CAAC,KAAK,KACXD,IAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,8CAA8C,EAAA,QAAA,EAAA,CACzDC,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,cAAc,EAAA,QAAA,EAAA,QAAA,EAAA,CAAS,EACtC,CAAC,CAAC,sCAAsC,CAAC,CAAA,EAAA,CACxC,CACL,CAAA,EAAA,CACG,CACP,EAEA,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,KACzBD,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,CACxBC,GAAA,CAAC,KAAK,CAAC,IAAI,EAAA,EACT,OAAO,EAAC,aAAa,EACrB,SAAS,EAAC,wDAAwD,YAEjE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,EAAA,CACT,EACbA,GAAA,CAAA,OAAA,EAAA,EACE,EAAE,EAAC,aAAa,EAChB,IAAI,EAAC,KAAK,EACV,KAAK,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE,EAC7B,QAAQ,EAAE,UAAC,KAAK,EAAA,EAAK,OAAA,aAAa,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,CAAhD,CAAgD,EACrE,WAAW,EAAE,CAAC,CAAC,oCAAoC,CAAC,EACpD,SAAS,EAAE,IAAI,CACb,sJAAsJ,EACtJ,MAAM,CAAC;AACL,8BAAE;AACF,8BAAE,uCAAuC,CAC5C,EACD,YAAY,EAAC,KAAK,EAAA,CAClB,EACD,MAAM,CAAC,WAAW,KACjBD,YAAG,SAAS,EAAC,8CAA8C,EAAA,QAAA,EAAA,CACzDC,cAAM,SAAS,EAAC,cAAc,EAAA,QAAA,EAAA,QAAA,EAAA,CAAS,EACtC,CAAC,CAAC,sCAAsC,CAAC,IACxC,CACL,CAAA,EAAA,CACG,CACP,CAAA,EAAA,CACQ;AAEf;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CustomFormFields.js","sources":["../../../../../../src/components/session/UserInputForm/CustomFormFields.tsx"],"sourcesContent":["import { Fragment, useRef } from \"react\";\nimport * as Label from \"@radix-ui/react-label\";\nimport clsx from \"clsx\";\nimport { Select } from \"../../ui/SelectComponent\";\nimport type { CustomField, ListColumn } from \"../../../types/session\";\nimport { useI18n } from \"../../../hooks/useI18n\";\nimport AddressFields from \"./AddressFields\";\nimport type { AddressSuggestion } from \"../../../types/userInputForm\";\nimport {\n createEmptyListRow,\n ensureMinimumListRows,\n getListFieldMinRows,\n normalizeListColumns,\n} from \"../../../utils/listFieldUtils\";\nimport { cellErrorKey } from \"../../../utils/customFieldValidation\";\nimport { DatePickerField } from \"./DatePickerField\";\n\ntype CellErrorValue = string | boolean;\n\n/**\n * Sous-composant dédié au rendu d'une cellule du tableau dynamique.\n * Nécessaire pour que les hooks internes à Select soient toujours appelés\n * de façon stable (règle des hooks React).\n */\nconst ListCell = ({\n col,\n value,\n hasError,\n cellClasses,\n onChange,\n language,\n}: {\n col: ListColumn;\n value: string;\n hasError: boolean;\n cellClasses: string;\n onChange: (val: string) => void;\n language: string;\n}) => {\n if (col.type === \"enum\") {\n return (\n <Select\n options={(col.options ?? []).map((opt) => ({ value: opt, label: opt }))}\n value={value}\n onValueChange={onChange}\n placeholder={col.placeholder || col.label}\n error={hasError}\n compact\n />\n );\n }\n if (col.type === \"email\") {\n return (\n <input\n type=\"email\"\n value={value}\n onChange={(e) => onChange(e.target.value)}\n placeholder={col.placeholder || col.label}\n className={cellClasses}\n autoComplete=\"off\"\n inputMode=\"email\"\n />\n );\n }\n if (col.type === \"date\") {\n return (\n <DatePickerField\n value={value}\n dateFormat={col.dateFormat ?? \"dd/mm/yyyy\"}\n placeholder={col.placeholder}\n hasError={hasError}\n language={language}\n onChange={onChange}\n className={cellClasses}\n />\n );\n }\n return (\n <input\n type=\"text\"\n value={value}\n onChange={(e) => onChange(e.target.value)}\n placeholder={col.placeholder || col.label}\n className={cellClasses}\n autoComplete=\"off\"\n />\n );\n};\n\ninterface CustomFormFieldsProps {\n customFields: CustomField[];\n formData: Record<string, any>;\n errors: Record<string, CellErrorValue>;\n cellErrors?: Record<string, Record<string, CellErrorValue>>;\n onFieldChange: (fieldId: string, value: any) => void;\n // Address autocomplete props (for address field type)\n addressSuggestions?: AddressSuggestion[];\n showSuggestions?: boolean;\n onAddressChange?: (fieldId: string, value: string) => void;\n onAddressFocus?: (fieldId: string) => void;\n onAddressBlur?: (fieldId: string) => void;\n onApplySuggestion?: (fieldId: string, suggestion: AddressSuggestion) => void;\n}\n\nconst CustomFormFields = ({\n customFields,\n formData,\n errors,\n cellErrors = {},\n onFieldChange,\n addressSuggestions = [],\n showSuggestions = false,\n onAddressChange,\n onAddressFocus,\n onAddressBlur,\n onApplySuggestion,\n}: CustomFormFieldsProps) => {\n const { t, currentLanguage } = useI18n();\n\n const renderField = (field: CustomField) => {\n const hasError = Boolean(errors[field.id]);\n const value = formData[field.id];\n\n // Classes communes (EXACTEMENT comme IdentityFields/ContactFields)\n const inputClasses = clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n hasError\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover:border-gray-400\",\n );\n\n switch (field.valueType) {\n case \"text\":\n return (\n <input\n id={field.id}\n type=\"text\"\n value={value || \"\"}\n onChange={(e) => onFieldChange(field.id, e.target.value)}\n placeholder={field.placeholder}\n className={inputClasses}\n autoComplete=\"off\"\n />\n );\n\n case \"number\":\n return (\n <input\n id={field.id}\n type=\"number\"\n inputMode=\"numeric\"\n value={value || \"\"}\n onChange={(e) => onFieldChange(field.id, e.target.value)}\n placeholder={field.placeholder}\n className={inputClasses}\n />\n );\n\n case \"date\":\n return (\n <DatePickerField\n id={field.id}\n value={value || \"\"}\n dateFormat={field.dateFormat ?? \"dd/mm/yyyy\"}\n placeholder={field.placeholder}\n hasError={hasError}\n language={currentLanguage}\n onChange={(v) => onFieldChange(field.id, v)}\n className={inputClasses}\n />\n );\n\n case \"boolean\":\n return (\n <div className=\"flex items-center gap-2\">\n <input\n id={field.id}\n type=\"checkbox\"\n checked={value || false}\n onChange={(e) => onFieldChange(field.id, e.target.checked)}\n className=\"h-4 w-4 text-[#11E5C5] border-gray-300 rounded focus:ring-[#11E5C5]\"\n />\n {field.description && (\n <span className=\"text-sm text-gray-600\">{field.description}</span>\n )}\n </div>\n );\n\n case \"enum\":\n return (\n <Select\n options={(field.enumOptions || []).map((opt) => ({\n value: opt,\n label: opt,\n }))}\n value={value || \"\"}\n onValueChange={(val) => onFieldChange(field.id, val)}\n placeholder={field.placeholder || t(\"custom_form.select_option\")}\n error={hasError}\n />\n );\n\n case \"email\":\n return (\n <input\n id={field.id}\n type=\"email\"\n value={value || \"\"}\n onChange={(e) => onFieldChange(field.id, e.target.value)}\n placeholder={field.placeholder}\n className={inputClasses}\n autoComplete=\"off\"\n inputMode=\"email\"\n />\n );\n\n case \"address\":\n // For address, use the existing AddressFields component\n const addressValue = value || {};\n const addressForm = {\n lastName: \"\",\n firstName: \"\",\n birthDate: \"\",\n day: \"\",\n month: \"\",\n year: \"\",\n email: \"\",\n phoneNumber: \"\",\n sms: \"\",\n addressLine1: addressValue.addressLine1 || \"\",\n addressLine2: addressValue.addressLine2 || \"\",\n postalCode: addressValue.postalCode || \"\",\n city: addressValue.city || \"\",\n countryCode: addressValue.countryCode || \"\",\n nationality: \"\",\n companyName: \"\",\n siret: \"\",\n tva: \"\",\n };\n\n return (\n <AddressFields\n form={addressForm}\n errors={{\n addressLine1: hasError,\n addressLine2: false,\n postalCode: hasError,\n city: hasError,\n country: hasError,\n }}\n requestedFields={new Set([\"adresse\"])}\n onFieldChange={(key, val) => {\n const updatedAddress = {\n ...addressValue,\n [key]: val,\n };\n onFieldChange(field.id, updatedAddress);\n }}\n addressSuggestions={addressSuggestions}\n showSuggestions={showSuggestions}\n onAddressChange={(val) => {\n const updatedAddress = {\n ...addressValue,\n addressLine1: val,\n };\n onFieldChange(field.id, updatedAddress);\n onAddressChange?.(field.id, val);\n }}\n onAddressFocus={() => onAddressFocus?.(field.id)}\n onAddressBlur={() => onAddressBlur?.(field.id)}\n onApplySuggestion={(suggestion) => {\n const updatedAddress = {\n addressLine1: suggestion.label || \"\",\n addressLine2: addressValue.addressLine2 || \"\",\n postalCode: suggestion.postalCode || \"\",\n city: suggestion.city || \"\",\n countryCode: suggestion.countryCode || \"\",\n };\n onFieldChange(field.id, updatedAddress);\n onApplySuggestion?.(field.id, suggestion);\n }}\n />\n );\n\n case \"list\": {\n const persistedRows: Record<string, string>[] = Array.isArray(value)\n ? value\n : [];\n const columns: ListColumn[] = normalizeListColumns(field.listColumns);\n const minRows = getListFieldMinRows(field);\n const rows = ensureMinimumListRows(persistedRows, columns, minRows);\n const gridTemplateColumns = `repeat(${columns.length}, minmax(180px, 1fr)) 32px`;\n const gridMinWidth = `${columns.length * 180 + (columns.length - 1) * 8 + 32}px`;\n const fieldCellErrors = cellErrors[field.id] ?? {};\n\n if (columns.length === 0) {\n return (\n <p className=\"text-sm text-red-600\">\n {t(\n \"custom_form.list_missing_columns\",\n \"Ce tableau n'a pas de colonnes configurées.\",\n )}\n </p>\n );\n }\n\n const handleRowChange = (\n rowIndex: number,\n colName: string,\n colValue: string,\n ) => {\n const updated = [...rows];\n updated[rowIndex] = { ...updated[rowIndex], [colName]: colValue };\n onFieldChange(field.id, updated);\n };\n\n const handleAddRow = () => {\n const emptyRow = createEmptyListRow(columns);\n onFieldChange(field.id, [...rows, emptyRow]);\n };\n\n const handleRemoveRow = (rowIndex: number) => {\n if (rows.length <= minRows) {\n return;\n }\n\n onFieldChange(\n field.id,\n rows.filter((_, i) => i !== rowIndex),\n );\n };\n\n return (\n <div className=\"space-y-3 overflow-x-auto\">\n {columns.length > 0 && (\n <div\n className=\"grid gap-2 items-center w-full\"\n style={{\n gridTemplateColumns,\n minWidth: gridMinWidth,\n }}\n >\n {columns.map((col) => (\n <span\n key={col.label}\n className=\"text-xs font-semibold text-gray-600 uppercase tracking-wide truncate\"\n >\n {col.label}\n </span>\n ))}\n <span />\n </div>\n )}\n\n {rows.map((row, rowIndex) => (\n <div\n key={rowIndex}\n className=\"grid gap-2 items-start w-full\"\n style={{\n gridTemplateColumns,\n minWidth: gridMinWidth,\n }}\n >\n {columns.map((col) => {\n const cellErr =\n fieldCellErrors[cellErrorKey(rowIndex, col.label)];\n const cellHasError = Boolean(cellErr);\n const cellInputClasses = clsx(\n \"w-full px-2 py-2 border rounded-lg text-sm transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n cellHasError\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover:border-gray-400\",\n );\n return (\n <div\n key={col.label}\n className=\"flex flex-col gap-1 min-w-0\"\n >\n <ListCell\n col={col}\n value={row[col.label] || \"\"}\n // Volontairement `cellHasError` seul : l'ancien\n // `|| hasError` peignait tout le tableau en rouge dès\n // qu'une seule cellule était invalide, sans permettre\n // de repérer laquelle. Le cas « pas assez de lignes »\n // reste signalé par le message sous le champ.\n hasError={cellHasError}\n cellClasses={cellInputClasses}\n onChange={(val) =>\n handleRowChange(rowIndex, col.label, val)\n }\n language={currentLanguage}\n />\n {typeof cellErr === \"string\" && (\n <span className=\"text-xs text-red-600\">\n {cellErr}\n </span>\n )}\n </div>\n );\n })}\n <button\n type=\"button\"\n onClick={() => handleRemoveRow(rowIndex)}\n className={clsx(\n \"flex items-center justify-center w-8 h-8 rounded-full transition-colors\",\n rows.length <= minRows\n ? \"text-gray-300 cursor-not-allowed\"\n : \"text-gray-400 hover:text-red-500 hover:bg-red-50\",\n )}\n aria-label={t(\"custom_form.remove_row\", \"Supprimer la ligne\")}\n disabled={rows.length <= minRows}\n >\n ✕\n </button>\n </div>\n ))}\n\n <button\n type=\"button\"\n onClick={handleAddRow}\n className=\"flex items-center gap-2 text-sm text-[#11E5C5] hover:underline font-medium\"\n >\n + {t(\"custom_form.add_row\", \"Ajouter une ligne\")}\n </button>\n </div>\n );\n }\n\n default:\n return null;\n }\n };\n\n // Un champ est masqué quand il est verrouillé depuis l'API :\n // - hard lock (lockedFromApi sans editableIfMissing) → toujours masqué ;\n // - soft lock (editableIfMissing) → masqué uniquement si l'API a fourni une\n // valeur ; sinon le champ redevient éditable par l'utilisateur final.\n const isValuePresent = (value: unknown): boolean => {\n if (value === null || value === undefined) return false;\n if (typeof value === \"string\") return value.trim().length > 0;\n if (Array.isArray(value)) return value.length > 0;\n return true;\n };\n\n // La décision de visibilité d'un soft lock se fige à l'OUVERTURE du nœud,\n // pas à chaque frappe : on capture une seule fois (au mount, via ref) les\n // soft locks dont l'API n'avait fourni AUCUNE valeur. Ceux-là restent\n // éditables ensuite, même quand l'utilisateur commence à taper (sinon le\n // champ se masquerait dès le 1er caractère puisque formData deviendrait\n // non vide). Le composant est remonté par nœud (key={node.id}), donc le\n // snapshot est bien réinitialisé à chaque entrée de nœud.\n const editableSoftLocksRef = useRef<Set<string> | null>(null);\n if (editableSoftLocksRef.current === null) {\n const ids = new Set<string>();\n for (const f of customFields) {\n if (f.lockedFromApi && f.editableIfMissing && !isValuePresent(formData[f.id])) {\n ids.add(f.id);\n }\n }\n editableSoftLocksRef.current = ids;\n }\n const editableSoftLocks = editableSoftLocksRef.current;\n\n const isLockedHidden = (f: CustomField): boolean => {\n if (!f.lockedFromApi) return false;\n if (!f.editableIfMissing) return true;\n // soft lock : visible seulement s'il était vide à l'ouverture du nœud\n return !editableSoftLocks.has(f.id);\n };\n\n const visibleFields = customFields.filter((f) => !isLockedHidden(f));\n\n return (\n <Fragment>\n {visibleFields.map((field) => (\n <div key={field.id} className=\"space-y-2\">\n <Label.Root\n htmlFor={field.id}\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {field.label}\n {field.required && <span className=\"text-red-500 ml-1\">*</span>}\n </Label.Root>\n\n {field.description && field.valueType !== \"boolean\" && (\n <p className=\"text-xs text-gray-500 -mt-1\">{field.description}</p>\n )}\n\n {renderField(field)}\n\n {(() => {\n const fieldCellErrs = cellErrors[field.id];\n if (fieldCellErrs && Object.keys(fieldCellErrs).length > 0) {\n return null;\n }\n const fieldErr = errors[field.id];\n if (!fieldErr) return null;\n const message =\n typeof fieldErr === \"string\"\n ? fieldErr\n : field.required && !formData[field.id]\n ? t(\"custom_form.required_field\")\n : t(\"custom_form.invalid_value\");\n return (\n <p className=\"text-red-600 text-sm flex items-center gap-1\">\n <span className=\"text-red-500\">⚠</span>\n {message}\n </p>\n );\n })()}\n </div>\n ))}\n </Fragment>\n );\n};\n\nexport default CustomFormFields;\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DatePickerField.js","sources":["../../../../../../src/components/session/UserInputForm/DatePickerField.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { format, parse, isValid, type Locale } from \"date-fns\";\nimport { fr, enUS } from \"date-fns/locale\";\nimport { ChevronLeft, ChevronRight, Calendar } from \"lucide-react\";\nimport { DayPicker } from \"react-day-picker\";\nimport type { MonthCaptionProps, ChevronProps } from \"react-day-picker\";\nimport * as Popover from \"@radix-ui/react-popover\";\nimport clsx from \"clsx\";\nimport type { DateDisplayFormat } from \"../../../types/session\";\nimport { useI18n } from \"../../../hooks/useI18n\";\n\n// ─── helpers ──────────────────────────────────────────────────────────────────\n\nconst FORMAT_TO_DATEFNS: Record<DateDisplayFormat, string> = {\n \"dd/mm/yyyy\": \"dd/MM/yyyy\",\n \"mm/dd/yyyy\": \"MM/dd/yyyy\",\n \"yyyy-mm-dd\": \"yyyy-MM-dd\",\n};\n\n// Auto-inserts separator after 2nd and 4th digit while the user types.\nconst autoInsertSeparator = (\n prev: string,\n next: string,\n separator: \"/\" | \"-\",\n): string => {\n const digits = next.replace(/[^\\d]/g, \"\");\n let out = \"\";\n for (let i = 0; i < digits.length && i < 8; i++) {\n if (i === 2 || i === 4) out += separator;\n out += digits[i];\n }\n if (next.length < prev.length) return next;\n return out;\n};\n\n// ─── mini calendar (DayPicker v9 wrapper) ─────────────────────────────────────\n\ntype CalendarMode = \"day\" | \"month\" | \"year\";\n\ninterface MiniCalendarProps {\n selected: Date | undefined;\n onSelect: (d: Date | undefined) => void;\n locale: Locale;\n}\n\nconst MONTH_LABELS_FR = [\"Jan\", \"Fév\", \"Mar\", \"Avr\", \"Mai\", \"Jun\", \"Jul\", \"Aoû\", \"Sep\", \"Oct\", \"Nov\", \"Déc\"];\nconst MONTH_LABELS_EN = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n\nconst MiniCalendar: React.FC<MiniCalendarProps> = ({ selected, onSelect, locale }) => {\n const [mode, setMode] = React.useState<CalendarMode>(\"day\");\n const [displayMonth, setDisplayMonth] = React.useState<Date>(selected ?? new Date());\n const [tempYear, setTempYear] = React.useState<number | null>(null);\n\n const isFr = locale === fr;\n const monthLabels = isFr ? MONTH_LABELS_FR : MONTH_LABELS_EN;\n\n const yearGrid: number[] = React.useMemo(() => {\n const base = displayMonth.getFullYear();\n return Array.from({ length: 15 }, (_, i) => base - 7 + i);\n }, [displayMonth]);\n\n const navYear = (dir: 1 | -1) => {\n const d = new Date(displayMonth);\n d.setFullYear(d.getFullYear() + dir * 15);\n setDisplayMonth(d);\n };\n\n // Custom MonthCaption pour v9 — reçoit calendarMonth\n const CustomMonthCaption = React.useCallback(\n ({ calendarMonth }: MonthCaptionProps) => {\n const dm = calendarMonth.date;\n return (\n <div className=\"flex items-center justify-center gap-1 text-sm font-semibold select-none py-1\">\n <button\n type=\"button\"\n onClick={() => { setDisplayMonth(dm); setMode(\"month\"); }}\n className=\"hover:text-[#11E5C5] transition-colors capitalize\"\n >\n {dm.toLocaleString(isFr ? \"fr-FR\" : \"en-US\", { month: \"long\" })}\n </button>\n <button\n type=\"button\"\n onClick={() => { setDisplayMonth(dm); setMode(\"year\"); }}\n className=\"hover:text-[#11E5C5] transition-colors\"\n >\n {dm.getFullYear()}\n </button>\n </div>\n );\n },\n [isFr],\n );\n\n // Custom Chevron pour v9 — orientation \"left\" | \"right\"\n const CustomChevron = React.useCallback(\n ({ orientation }: ChevronProps) =>\n orientation === \"left\"\n ? <ChevronLeft className=\"size-4\" />\n : <ChevronRight className=\"size-4\" />,\n [],\n );\n\n if (mode === \"year\") {\n return (\n <div className=\"p-3 w-[252px]\">\n <div className=\"flex items-center justify-between mb-3\">\n <button type=\"button\" onClick={() => navYear(-1)} className=\"p-1 rounded hover:bg-gray-100\">\n <ChevronLeft className=\"size-4\" />\n </button>\n <span className=\"text-sm font-semibold\">\n {yearGrid[0]} – {yearGrid[yearGrid.length - 1]}\n </span>\n <button type=\"button\" onClick={() => navYear(1)} className=\"p-1 rounded hover:bg-gray-100\">\n <ChevronRight className=\"size-4\" />\n </button>\n </div>\n <div className=\"grid grid-cols-3 gap-1\">\n {yearGrid.map((y) => (\n <button\n key={y}\n type=\"button\"\n onClick={() => { setTempYear(y); setMode(\"month\"); }}\n className={clsx(\n \"rounded py-1.5 text-sm transition-colors\",\n y === displayMonth.getFullYear()\n ? \"bg-[#11E5C5] text-white font-semibold\"\n : \"hover:bg-gray-100\",\n )}\n >\n {y}\n </button>\n ))}\n </div>\n </div>\n );\n }\n\n if (mode === \"month\") {\n const year = tempYear ?? displayMonth.getFullYear();\n return (\n <div className=\"p-3 w-[252px]\">\n <div className=\"text-sm font-semibold text-center mb-3\">{year}</div>\n <div className=\"grid grid-cols-3 gap-1\">\n {monthLabels.map((m, i) => (\n <button\n key={m}\n type=\"button\"\n onClick={() => {\n const d = new Date(year, i, 1);\n setDisplayMonth(d);\n setTempYear(null);\n setMode(\"day\");\n }}\n className={clsx(\n \"rounded py-1.5 text-sm transition-colors\",\n i === displayMonth.getMonth() && year === displayMonth.getFullYear()\n ? \"bg-[#11E5C5] text-white font-semibold\"\n : \"hover:bg-gray-100\",\n )}\n >\n {m}\n </button>\n ))}\n </div>\n </div>\n );\n }\n\n return (\n <DayPicker\n mode=\"single\"\n selected={selected}\n onSelect={onSelect}\n month={displayMonth}\n onMonthChange={setDisplayMonth}\n locale={locale}\n showOutsideDays\n navLayout=\"around\"\n components={{\n MonthCaption: CustomMonthCaption,\n Chevron: CustomChevron,\n }}\n />\n );\n};\n\n// ─── DatePickerField (export) ──────────────────────────────────────────────────\n\ninterface DatePickerFieldProps {\n id?: string;\n value: string;\n dateFormat: DateDisplayFormat;\n placeholder?: string;\n hasError?: boolean;\n language?: string;\n onChange: (value: string) => void;\n className?: string;\n}\n\nexport const DatePickerField: React.FC<DatePickerFieldProps> = ({\n id,\n value,\n dateFormat,\n placeholder,\n hasError = false,\n language = \"fr\",\n onChange,\n className,\n}) => {\n const { t } = useI18n();\n const locale = language === \"en\" ? enUS : fr;\n const dfnsFmt = FORMAT_TO_DATEFNS[dateFormat] ?? \"dd/MM/yyyy\";\n const separator = dateFormat === \"yyyy-mm-dd\" ? \"-\" : \"/\";\n\n const [inputValue, setInputValue] = React.useState(value ?? \"\");\n const [open, setOpen] = React.useState(false);\n\n React.useEffect(() => {\n setInputValue(value ?? \"\");\n }, [value]);\n\n const parseInputToDate = (raw: string): Date | undefined => {\n if (raw.length < 10) return undefined;\n const d = parse(raw, dfnsFmt, new Date(), { locale });\n return isValid(d) ? d : undefined;\n };\n\n const selectedDate = parseInputToDate(inputValue);\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const next = autoInsertSeparator(inputValue, e.target.value, separator);\n if (next.length > 10) return;\n setInputValue(next);\n if (next.length === 10) {\n const d = parse(next, dfnsFmt, new Date(), { locale });\n if (isValid(d)) {\n onChange(next);\n setOpen(false);\n }\n } else if (next === \"\") {\n onChange(\"\");\n }\n };\n\n const handleCalendarSelect = (d: Date | undefined) => {\n if (!d) return;\n const formatted = format(d, dfnsFmt, { locale });\n setInputValue(formatted);\n onChange(formatted);\n setOpen(false);\n };\n\n const defaultPlaceholder = placeholder ?? dfnsFmt.toUpperCase();\n\n const inputClasses = clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent bg-transparent\",\n hasError ? \"border-red-500 bg-red-50\" : \"border-gray-300 hover:border-gray-400\",\n className,\n );\n\n return (\n <Popover.Root open={open} onOpenChange={setOpen}>\n <Popover.Trigger asChild>\n <div className=\"relative\">\n <input\n id={id}\n type=\"text\"\n value={inputValue}\n onChange={handleInputChange}\n placeholder={defaultPlaceholder}\n className={clsx(inputClasses, \"pr-10\")}\n autoComplete=\"off\"\n inputMode=\"numeric\"\n onFocus={() => setOpen(true)}\n aria-label={t(\"custom_form.select_option\", \"Date\")}\n />\n <button\n type=\"button\"\n tabIndex={-1}\n onClick={() => setOpen((o) => !o)}\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600\"\n >\n <Calendar className=\"size-4\" />\n </button>\n </div>\n </Popover.Trigger>\n\n <Popover.Portal>\n <Popover.Content\n side=\"bottom\"\n align=\"start\"\n sideOffset={4}\n className=\"z-50 rounded-lg border border-gray-200 bg-white shadow-lg focus:outline-none\"\n onOpenAutoFocus={(e) => e.preventDefault()}\n >\n <MiniCalendar\n selected={selectedDate}\n onSelect={handleCalendarSelect}\n locale={locale}\n />\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n );\n};\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;;;;;AAWA;AAEA,IAAM,iBAAiB,GAAsC;AAC3D,IAAA,YAAY,EAAE,YAAY;AAC1B,IAAA,YAAY,EAAE,YAAY;AAC1B,IAAA,YAAY,EAAE,YAAY;CAC3B;AAED;AACA,IAAM,mBAAmB,GAAG,UAC1B,IAAY,EACZ,IAAY,EACZ,SAAoB,EAAA;IAEpB,IAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;IACzC,IAAI,GAAG,GAAG,EAAE;AACZ,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC/C,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,GAAG,IAAI,SAAS;AACxC,QAAA,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC;IAClB;AACA,IAAA,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;AAAE,QAAA,OAAO,IAAI;AAC1C,IAAA,OAAO,GAAG;AACZ,CAAC;AAYD,IAAM,eAAe,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;AAC5G,IAAM,eAAe,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;AAE5G,IAAM,YAAY,GAAgC,UAAC,EAA8B,EAAA;AAA5B,IAAA,IAAA,QAAQ,cAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,MAAM,GAAA,EAAA,CAAA,MAAA;AACvE,IAAA,IAAA,EAAA,GAAkB,KAAK,CAAC,QAAQ,CAAe,KAAK,CAAC,EAApD,IAAI,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,OAAO,QAAuC;IACrD,IAAA,EAAA,GAAkC,KAAK,CAAC,QAAQ,CAAO,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,MAAA,GAAR,QAAQ,GAAI,IAAI,IAAI,EAAE,CAAC,EAA7E,YAAY,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,eAAe,GAAA,EAAA,CAAA,CAAA,CAAgD;AAC9E,IAAA,IAAA,EAAA,GAA0B,KAAK,CAAC,QAAQ,CAAgB,IAAI,CAAC,EAA5D,QAAQ,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,WAAW,QAAuC;AAEnE,IAAA,IAAM,IAAI,GAAG,MAAM,KAAK,EAAE;IAC1B,IAAM,WAAW,GAAG,IAAI,GAAG,eAAe,GAAG,eAAe;AAE5D,IAAA,IAAM,QAAQ,GAAa,KAAK,CAAC,OAAO,CAAC,YAAA;AACvC,QAAA,IAAM,IAAI,GAAG,YAAY,CAAC,WAAW,EAAE;QACvC,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,UAAC,CAAC,EAAE,CAAC,EAAA,EAAK,OAAA,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA,CAAZ,CAAY,CAAC;AAC3D,IAAA,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;IAElB,IAAM,OAAO,GAAG,UAAC,GAAW,EAAA;AAC1B,QAAA,IAAM,CAAC,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC;AAChC,QAAA,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;QACzC,eAAe,CAAC,CAAC,CAAC;AACpB,IAAA,CAAC;;AAGD,IAAA,IAAM,kBAAkB,GAAG,KAAK,CAAC,WAAW,CAC1C,UAAC,EAAoC,EAAA;AAAlC,QAAA,IAAA,aAAa,GAAA,EAAA,CAAA,aAAA;AACd,QAAA,IAAM,EAAE,GAAG,aAAa,CAAC,IAAI;AAC7B,QAAA,QACEA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,+EAA+E,EAAA,QAAA,EAAA,CAC5FC,gBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,YAAA,EAAQ,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EACzD,SAAS,EAAC,mDAAmD,YAE5D,EAAE,CAAC,cAAc,CAAC,IAAI,GAAG,OAAO,GAAG,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAA,CACxD,EACTA,gBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,YAAA,EAAQ,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EACxD,SAAS,EAAC,wCAAwC,EAAA,QAAA,EAEjD,EAAE,CAAC,WAAW,EAAE,EAAA,CACV,CAAA,EAAA,CACL;AAEV,IAAA,CAAC,EACD,CAAC,IAAI,CAAC,CACP;;AAGD,IAAA,IAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CACrC,UAAC,EAA6B,EAAA;AAA3B,QAAA,IAAA,WAAW,GAAA,EAAA,CAAA,WAAA;QACZ,OAAA,WAAW,KAAK;AACd,cAAEA,GAAA,CAAC,WAAW,IAAC,SAAS,EAAC,QAAQ,EAAA;AACjC,cAAEA,GAAA,CAAC,YAAY,IAAC,SAAS,EAAC,QAAQ,EAAA,CAAG;IAFvC,CAEuC,EACzC,EAAE,CACH;AAED,IAAA,IAAI,IAAI,KAAK,MAAM,EAAE;AACnB,QAAA,QACED,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,eAAe,EAAA,QAAA,EAAA,CAC5BA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,wCAAwC,EAAA,QAAA,EAAA,CACrDC,GAAA,CAAA,QAAA,EAAA,EAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,YAAA,EAAM,OAAA,OAAO,CAAC,EAAE,CAAC,CAAA,CAAX,CAAW,EAAE,SAAS,EAAC,+BAA+B,EAAA,QAAA,EACzFA,GAAA,CAAC,WAAW,EAAA,EAAC,SAAS,EAAC,QAAQ,EAAA,CAAG,GAC3B,EACTD,IAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,uBAAuB,EAAA,QAAA,EAAA,CACpC,QAAQ,CAAC,CAAC,CAAC,EAAA,UAAA,EAAK,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA,EAAA,CACzC,EACPC,GAAA,CAAA,QAAA,EAAA,EAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,YAAA,EAAM,OAAA,OAAO,CAAC,CAAC,CAAC,CAAA,CAAV,CAAU,EAAE,SAAS,EAAC,+BAA+B,EAAA,QAAA,EACxFA,GAAA,CAAC,YAAY,IAAC,SAAS,EAAC,QAAQ,EAAA,CAAG,EAAA,CAC5B,CAAA,EAAA,CACL,EACNA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,wBAAwB,EAAA,QAAA,EACpC,QAAQ,CAAC,GAAG,CAAC,UAAC,CAAC,EAAA,EAAK,QACnBA,GAAA,CAAA,QAAA,EAAA,EAEE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,YAAA,EAAQ,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EACpD,SAAS,EAAE,IAAI,CACb,0CAA0C,EAC1C,CAAC,KAAK,YAAY,CAAC,WAAW;AAC5B,8BAAE;AACF,8BAAE,mBAAmB,CACxB,EAAA,QAAA,EAEA,CAAC,EAAA,EAVG,CAAC,CAWC,GAbU,CAcpB,CAAC,EAAA,CACE,CAAA,EAAA,CACF;IAEV;AAEA,IAAA,IAAI,IAAI,KAAK,OAAO,EAAE;AACpB,QAAA,IAAM,MAAI,GAAG,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,MAAA,GAAR,QAAQ,GAAI,YAAY,CAAC,WAAW,EAAE;AACnD,QAAA,QACED,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,eAAe,aAC5BC,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,wCAAwC,YAAE,MAAI,EAAA,CAAO,EACpEA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,wBAAwB,EAAA,QAAA,EACpC,WAAW,CAAC,GAAG,CAAC,UAAC,CAAC,EAAE,CAAC,EAAA,EAAK,QACzBA,gBAEE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,YAAA;4BACP,IAAM,CAAC,GAAG,IAAI,IAAI,CAAC,MAAI,EAAE,CAAC,EAAE,CAAC,CAAC;4BAC9B,eAAe,CAAC,CAAC,CAAC;4BAClB,WAAW,CAAC,IAAI,CAAC;4BACjB,OAAO,CAAC,KAAK,CAAC;AAChB,wBAAA,CAAC,EACD,SAAS,EAAE,IAAI,CACb,0CAA0C,EAC1C,CAAC,KAAK,YAAY,CAAC,QAAQ,EAAE,IAAI,MAAI,KAAK,YAAY,CAAC,WAAW;AAChE,8BAAE;AACF,8BAAE,mBAAmB,CACxB,EAAA,QAAA,EAEA,CAAC,EAAA,EAfG,CAAC,CAgBC,GAlBgB,CAmB1B,CAAC,EAAA,CACE,CAAA,EAAA,CACF;IAEV;AAEA,IAAA,QACEA,GAAA,CAAC,SAAS,EAAA,EACR,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,YAAY,EACnB,aAAa,EAAE,eAAe,EAC9B,MAAM,EAAE,MAAM,EACd,eAAe,QACf,SAAS,EAAC,QAAQ,EAClB,UAAU,EAAE;AACV,YAAA,YAAY,EAAE,kBAAkB;AAChC,YAAA,OAAO,EAAE,aAAa;AACvB,SAAA,EAAA,CACD;AAEN,CAAC;AAeM,IAAM,eAAe,GAAmC,UAAC,EAS/D,EAAA;;AARC,IAAA,IAAA,EAAE,GAAA,EAAA,CAAA,EAAA,EACF,KAAK,GAAA,EAAA,CAAA,KAAA,EACL,UAAU,GAAA,EAAA,CAAA,UAAA,EACV,WAAW,GAAA,EAAA,CAAA,WAAA,EACX,EAAA,GAAA,EAAA,CAAA,QAAgB,EAAhB,QAAQ,GAAA,EAAA,KAAA,MAAA,GAAG,KAAK,GAAA,EAAA,EAChB,EAAA,GAAA,EAAA,CAAA,QAAe,EAAf,QAAQ,GAAA,EAAA,KAAA,MAAA,GAAG,IAAI,GAAA,EAAA,EACf,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,SAAS,GAAA,EAAA,CAAA,SAAA;AAED,IAAA,IAAA,CAAC,GAAK,OAAO,EAAE,EAAd;AACT,IAAA,IAAM,MAAM,GAAG,QAAQ,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE;IAC5C,IAAM,OAAO,GAAG,CAAA,EAAA,GAAA,iBAAiB,CAAC,UAAU,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,YAAY;AAC7D,IAAA,IAAM,SAAS,GAAG,UAAU,KAAK,YAAY,GAAG,GAAG,GAAG,GAAG;AAEnD,IAAA,IAAA,KAA8B,KAAK,CAAC,QAAQ,CAAC,KAAK,aAAL,KAAK,KAAA,MAAA,GAAL,KAAK,GAAI,EAAE,CAAC,EAAxD,UAAU,QAAA,EAAE,aAAa,QAA+B;AACzD,IAAA,IAAA,EAAA,GAAkB,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAtC,IAAI,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,OAAO,QAAyB;IAE7C,KAAK,CAAC,SAAS,CAAC,YAAA;QACd,aAAa,CAAC,KAAK,KAAA,IAAA,IAAL,KAAK,cAAL,KAAK,GAAI,EAAE,CAAC;AAC5B,IAAA,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IAEX,IAAM,gBAAgB,GAAG,UAAC,GAAW,EAAA;AACnC,QAAA,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE;AAAE,YAAA,OAAO,SAAS;AACrC,QAAA,IAAM,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,EAAE,EAAE,MAAM,EAAA,MAAA,EAAE,CAAC;AACrD,QAAA,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS;AACnC,IAAA,CAAC;AAED,IAAA,IAAM,YAAY,GAAG,gBAAgB,CAAC,UAAU,CAAC;IAEjD,IAAM,iBAAiB,GAAG,UAAC,CAAsC,EAAA;AAC/D,QAAA,IAAM,IAAI,GAAG,mBAAmB,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC;AACvE,QAAA,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE;YAAE;QACtB,aAAa,CAAC,IAAI,CAAC;AACnB,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,EAAE,EAAE;AACtB,YAAA,IAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,EAAE,EAAE,MAAM,EAAA,MAAA,EAAE,CAAC;AACtD,YAAA,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE;gBACd,QAAQ,CAAC,IAAI,CAAC;gBACd,OAAO,CAAC,KAAK,CAAC;YAChB;QACF;AAAO,aAAA,IAAI,IAAI,KAAK,EAAE,EAAE;YACtB,QAAQ,CAAC,EAAE,CAAC;QACd;AACF,IAAA,CAAC;IAED,IAAM,oBAAoB,GAAG,UAAC,CAAmB,EAAA;AAC/C,QAAA,IAAI,CAAC,CAAC;YAAE;AACR,QAAA,IAAM,SAAS,GAAG,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,MAAM,EAAA,MAAA,EAAE,CAAC;QAChD,aAAa,CAAC,SAAS,CAAC;QACxB,QAAQ,CAAC,SAAS,CAAC;QACnB,OAAO,CAAC,KAAK,CAAC;AAChB,IAAA,CAAC;AAED,IAAA,IAAM,kBAAkB,GAAG,WAAW,KAAA,IAAA,IAAX,WAAW,KAAA,MAAA,GAAX,WAAW,GAAI,OAAO,CAAC,WAAW,EAAE;AAE/D,IAAA,IAAM,YAAY,GAAG,IAAI,CACvB,qKAAqK,EACrK,QAAQ,GAAG,0BAA0B,GAAG,uCAAuC,EAC/E,SAAS,CACV;AAED,IAAA,QACED,IAAA,CAAC,OAAO,CAAC,IAAI,EAAA,EAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAA,QAAA,EAAA,CAC7CC,GAAA,CAAC,OAAO,CAAC,OAAO,IAAC,OAAO,EAAA,IAAA,EAAA,QAAA,EACtBD,cAAK,SAAS,EAAC,UAAU,EAAA,QAAA,EAAA,CACvBC,GAAA,CAAA,OAAA,EAAA,EACE,EAAE,EAAE,EAAE,EACN,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,iBAAiB,EAC3B,WAAW,EAAE,kBAAkB,EAC/B,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,EACtC,YAAY,EAAC,KAAK,EAClB,SAAS,EAAC,SAAS,EACnB,OAAO,EAAE,YAAA,EAAM,OAAA,OAAO,CAAC,IAAI,CAAC,CAAA,CAAb,CAAa,gBAChB,CAAC,CAAC,2BAA2B,EAAE,MAAM,CAAC,EAAA,CAClD,EACFA,gBACE,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,EAAE,EACZ,OAAO,EAAE,YAAA,EAAM,OAAA,OAAO,CAAC,UAAC,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,CAAA,CAAF,CAAE,CAAC,CAAA,CAAlB,CAAkB,EACjC,SAAS,EAAC,6EAA6E,EAAA,QAAA,EAEvFA,IAAC,QAAQ,EAAA,EAAC,SAAS,EAAC,QAAQ,GAAG,EAAA,CACxB,CAAA,EAAA,CACL,GACU,EAElBA,GAAA,CAAC,OAAO,CAAC,MAAM,cACbA,GAAA,CAAC,OAAO,CAAC,OAAO,EAAA,EACd,IAAI,EAAC,QAAQ,EACb,KAAK,EAAC,OAAO,EACb,UAAU,EAAE,CAAC,EACb,SAAS,EAAC,8EAA8E,EACxF,eAAe,EAAE,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,cAAc,EAAE,EAAlB,CAAkB,EAAA,QAAA,EAE1CA,IAAC,YAAY,EAAA,EACX,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,oBAAoB,EAC9B,MAAM,EAAE,MAAM,EAAA,CACd,GACc,EAAA,CACH,CAAA,EAAA,CACJ;AAEnB;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IdentityFields.js","sources":["../../../../../../src/components/session/UserInputForm/IdentityFields.tsx"],"sourcesContent":["import { Fragment, useMemo, useRef } from \"react\";\nimport * as Label from \"@radix-ui/react-label\";\nimport clsx from \"clsx\";\nimport { Select } from \"../../ui/SelectComponent\";\nimport {\n DAY_OPTIONS,\n FIELD_LABELS,\n MONTH_OPTIONS,\n YEAR_OPTIONS,\n} from \"../../../constants/userInputForm\";\nimport type {\n RequestedFields,\n UserInputFormErrors,\n UserInputFormState,\n} from \"../../../types/userInputForm\";\nimport { useI18n } from \"../../../hooks/useI18n\";\n\ninterface IdentityFieldsProps {\n form: UserInputFormState;\n errors: UserInputFormErrors;\n requestedFields: RequestedFields;\n onFieldChange: (key: keyof UserInputFormState, value: string) => void;\n}\n\nconst IdentityFields = ({\n form,\n errors,\n requestedFields,\n onFieldChange,\n}: IdentityFieldsProps) => {\n const { t } = useI18n();\n const dayRef = useRef<HTMLInputElement>(null);\n const monthRef = useRef<HTMLInputElement>(null);\n const yearRef = useRef<HTMLInputElement>(null);\n\n const monthOptionsWithTranslation = useMemo(\n () =>\n MONTH_OPTIONS.map((option, index) => ({\n ...option,\n label: (index + 1).toString().padStart(2, \"0\"),\n })),\n []\n );\n\n const handleDayChange = (value: string) => {\n onFieldChange(\"day\", value);\n if (value.length === 2) {\n monthRef.current?.focus();\n }\n };\n\n const handleMonthChange = (value: string) => {\n onFieldChange(\"month\", value);\n if (value.length === 2) {\n yearRef.current?.focus();\n }\n };\n\n const handleYearChange = (value: string) => {\n onFieldChange(\"year\", value);\n if (value.length === 4) {\n yearRef.current?.blur();\n }\n };\n\n return (\n <Fragment>\n {requestedFields.has(\"prenom\") && (\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"firstName\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(FIELD_LABELS.prenom)}\n </Label.Root>\n <input\n id=\"firstName\"\n type=\"text\"\n value={form.firstName || \"\"}\n onChange={(event) => onFieldChange(\"firstName\", event.target.value)}\n placeholder={t(\"user_input_form.placeholders.first_name\")}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.firstName\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover-border-gray-400\"\n )}\n autoComplete=\"off\"\n />\n {errors.firstName && (\n <p className=\"text-red-600 text-sm flex items-center gap-1\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.first_name_required\")}\n </p>\n )}\n </div>\n )}\n\n {requestedFields.has(\"nom\") && (\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"lastName\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(FIELD_LABELS.nom)}\n </Label.Root>\n <input\n id=\"lastName\"\n type=\"text\"\n value={form.lastName || \"\"}\n onChange={(event) => onFieldChange(\"lastName\", event.target.value)}\n placeholder={t(\"user_input_form.placeholders.last_name\")}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.lastName\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover-border-gray-400\"\n )}\n autoComplete=\"off\"\n />\n {errors.lastName && (\n <p className=\"text-red-600 text-sm flex items-center gap-1\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.last_name_required\")}\n </p>\n )}\n </div>\n )}\n\n {requestedFields.has(\"date_naissance\") && (\n <div className=\"space-y-2\">\n <Label.Root className=\"block text-sm md:text-base font-semibold text-gray-900\">\n {t(FIELD_LABELS.date_naissance)}\n </Label.Root>\n <div className=\"grid grid-cols-3 gap-2 md:gap-3\">\n <Select\n ref={dayRef}\n options={DAY_OPTIONS}\n value={form.day || \"\"}\n onValueChange={handleDayChange}\n placeholder=\"JJ\"\n error={Boolean(errors.birthDate || errors.notMajor)}\n allowCustomValue\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n maxLength={2}\n />\n <Select\n ref={monthRef}\n options={monthOptionsWithTranslation}\n value={form.month || \"\"}\n onValueChange={handleMonthChange}\n placeholder=\"MM\"\n error={Boolean(errors.birthDate || errors.notMajor)}\n allowCustomValue\n inputMode=\"numeric\"\n maxLength={9}\n />\n <Select\n ref={yearRef}\n options={YEAR_OPTIONS}\n value={form.year || \"\"}\n onValueChange={handleYearChange}\n placeholder=\"AAAA\"\n error={Boolean(errors.birthDate || errors.notMajor)}\n allowCustomValue\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n maxLength={4}\n />\n </div>\n {errors.birthDate && (\n <p className=\"text-red-600 text-sm flex items-center gap-1\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.birth_date_required\")}\n </p>\n )}\n {errors.notMajor && (\n <p className=\"text-red-600 text-sm flex items-center gap-1\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.not_major\")}\n </p>\n )}\n </div>\n )}\n </Fragment>\n );\n};\n\nexport default IdentityFields;\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LegalEntityFields.js","sources":["../../../../../../src/components/session/UserInputForm/LegalEntityFields.tsx"],"sourcesContent":["import { Fragment } from \"react\";\nimport * as Label from \"@radix-ui/react-label\";\nimport clsx from \"clsx\";\nimport { FIELD_LABELS } from \"../../../constants/userInputForm\";\nimport type {\n RequestedFields,\n UserInputFormErrors,\n UserInputFormState,\n} from \"../../../types/userInputForm\";\nimport { useI18n } from \"../../../hooks/useI18n\";\n\ninterface LegalEntityFieldsProps {\n form: UserInputFormState;\n errors: UserInputFormErrors;\n requestedFields: RequestedFields;\n onFieldChange: (key: keyof UserInputFormState, value: string) => void;\n}\n\nconst LegalEntityFields = ({\n form,\n errors,\n requestedFields,\n onFieldChange,\n}: LegalEntityFieldsProps) => {\n const { t } = useI18n();\n\n return (\n <Fragment>\n <h3 className=\"text-lg md:text-xl font-semibold text-gray-900\">\n {t(\"user_input_form.company_information\", \"Informations de société\")}\n </h3>\n\n {/* Nom (Raison sociale pour personne morale) */}\n {requestedFields.has(\"nom\") && (\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"companyName\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(FIELD_LABELS.company, \"Company Name\")}\n </Label.Root>\n <input\n id=\"companyName\"\n type=\"text\"\n value={form.companyName || \"\"}\n onChange={(event) =>\n onFieldChange(\"companyName\", event.target.value)\n }\n placeholder={t(\"user_input_form.placeholders.company_name\", \"\")}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.companyName\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover-border-gray-400\"\n )}\n autoComplete=\"off\"\n />\n {errors.companyName && (\n <p className=\"text-red-600 text-sm flex items-center gap-1\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.last_name_required\")}\n </p>\n )}\n </div>\n )}\n\n {/* Registration Number (SIREN / Company Registration Number) */}\n {requestedFields.has(\"registrationNumber\") && (\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"registrationNumber\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(FIELD_LABELS.registrationNumber, \"Company Registration Number\")}\n </Label.Root>\n <input\n id=\"registrationNumber\"\n type=\"text\"\n value={form.registrationNumber || \"\"}\n onChange={(event) =>\n onFieldChange(\"registrationNumber\", event.target.value)\n }\n placeholder={t(\n \"user_input_form.placeholders.registration_number\",\n \"e.g. 362 521 879\"\n )}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.registrationNumber\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover-border-gray-400\"\n )}\n autoComplete=\"off\"\n />\n {errors.registrationNumber && (\n <p className=\"text-red-600 text-sm flex items-center gap-1\">\n <span className=\"text-red-500\">⚠</span>\n {t(\n \"user_input_form.errors.registration_number_required\",\n \"Please enter your company registration number\"\n )}\n </p>\n )}\n </div>\n )}\n\n {/* SIRET */}\n {requestedFields.has(\"siret\") && (\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"siret\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(FIELD_LABELS.siret, \"SIRET Number\")}\n </Label.Root>\n <input\n id=\"siret\"\n type=\"text\"\n value={form.siret || \"\"}\n onChange={(event) => onFieldChange(\"siret\", event.target.value)}\n placeholder={t(\n \"user_input_form.placeholders.siret\",\n \"Ex : 362 521 879 00034\"\n )}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.siret\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover-border-gray-400\"\n )}\n autoComplete=\"off\"\n />\n {errors.siret && (\n <p className=\"text-red-600 text-sm flex items-center gap-1\">\n <span className=\"text-red-500\">⚠</span>\n {t(\n \"user_input_form.errors.siret_required\",\n \"Please enter a valid SIRET number\"\n )}\n </p>\n )}\n </div>\n )}\n\n {/* TVA */}\n {requestedFields.has(\"tva\") && (\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"tva\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(FIELD_LABELS.tva, \"VAT Number\")}\n </Label.Root>\n <input\n id=\"tva\"\n type=\"text\"\n value={form.tva || \"\"}\n onChange={(event) => onFieldChange(\"tva\", event.target.value)}\n placeholder={t(\n \"user_input_form.placeholders.vat_number\",\n \"Ex : FR32362521879\"\n )}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.tva\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover-border-gray-400\"\n )}\n autoComplete=\"off\"\n />\n {errors.tva && (\n <p className=\"text-red-600 text-sm flex items-center gap-1\">\n <span className=\"text-red-500\">⚠</span>\n {t(\n \"user_input_form.errors.tva_required\",\n \"Please enter a valid VAT number\"\n )}\n </p>\n )}\n </div>\n )}\n </Fragment>\n );\n};\n\nexport default LegalEntityFields;\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LegalRepFields.js","sources":["../../../../../../src/components/session/UserInputForm/LegalRepFields.tsx"],"sourcesContent":["import { Fragment } from \"react\";\nimport * as Label from \"@radix-ui/react-label\";\nimport clsx from \"clsx\";\nimport type {\n RequestedFields,\n UserInputFormErrors,\n UserInputFormState,\n} from \"../../../types/userInputForm\";\nimport { useI18n } from \"../../../hooks/useI18n\";\n\ninterface LegalRepFieldsProps {\n form: UserInputFormState;\n errors: UserInputFormErrors;\n requestedFields: RequestedFields;\n onFieldChange: (key: keyof UserInputFormState, value: string) => void;\n}\n\nconst LegalRepFields = ({\n form,\n errors,\n requestedFields,\n onFieldChange,\n}: LegalRepFieldsProps) => {\n const { t } = useI18n();\n\n return (\n <Fragment>\n {requestedFields.has(\"legalRepresentativeNom\") && (\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"legalRepresentativeLastName\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\n \"user_input_form.fields.legal_representative_last_name\",\n \"Nom du représentant légal\",\n )}\n </Label.Root>\n <input\n id=\"legalRepresentativeLastName\"\n type=\"text\"\n value={form.legalRepresentativeLastName || \"\"}\n onChange={(event) =>\n onFieldChange(\"legalRepresentativeLastName\", event.target.value)\n }\n placeholder={t(\n \"user_input_form.placeholders.legal_representative_last_name\",\n \"Nom\",\n )}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.legalRepresentativeLastName\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover-border-gray-400\",\n )}\n autoComplete=\"off\"\n />\n {errors.legalRepresentativeLastName && (\n <p className=\"text-red-600 text-sm flex items-center gap-1\">\n <span className=\"text-red-500\">⚠</span>\n {t(\n \"user_input_form.errors.legal_representative_last_name_required\",\n )}\n </p>\n )}\n </div>\n )}\n\n {requestedFields.has(\"legalRepresentativePrenom\") && (\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"legalRepresentativeFirstName\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\n \"user_input_form.fields.legal_representative_first_name\",\n \"Prénom du représentant légal\",\n )}\n </Label.Root>\n <input\n id=\"legalRepresentativeFirstName\"\n type=\"text\"\n value={form.legalRepresentativeFirstName || \"\"}\n onChange={(event) =>\n onFieldChange(\"legalRepresentativeFirstName\", event.target.value)\n }\n placeholder={t(\n \"user_input_form.placeholders.legal_representative_first_name\",\n \"Prénom\",\n )}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.legalRepresentativeFirstName\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover-border-gray-400\",\n )}\n autoComplete=\"off\"\n />\n {errors.legalRepresentativeFirstName && (\n <p className=\"text-red-600 text-sm flex items-center gap-1\">\n <span className=\"text-red-500\">⚠</span>\n {t(\n \"user_input_form.errors.legal_representative_first_name_required\",\n )}\n </p>\n )}\n </div>\n )}\n\n {/* RL personne morale (délégation de pouvoir) : remplace Nom/Prénom par\n le SIREN de la société mandataire. Mode fixé par le concepteur du\n parcours (requestedFields), jamais choisi par l'utilisateur final. */}\n {requestedFields.has(\"legalRepresentativeSiren\") && (\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"legalRepresentativeSiren\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\n \"user_input_form.fields.legal_representative_siren\",\n \"SIREN du représentant légal\",\n )}\n </Label.Root>\n <input\n id=\"legalRepresentativeSiren\"\n type=\"text\"\n inputMode=\"numeric\"\n value={form.legalRepresentativeSiren || \"\"}\n onChange={(event) =>\n onFieldChange(\"legalRepresentativeSiren\", event.target.value)\n }\n placeholder={t(\n \"user_input_form.placeholders.legal_representative_siren\",\n \"9 chiffres\",\n )}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.legalRepresentativeSiren\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover-border-gray-400\",\n )}\n autoComplete=\"off\"\n />\n {errors.legalRepresentativeSiren && (\n <p className=\"text-red-600 text-sm flex items-center gap-1\">\n <span className=\"text-red-500\">⚠</span>\n {t(\n \"user_input_form.errors.legal_representative_siren_required\",\n )}\n </p>\n )}\n </div>\n )}\n </Fragment>\n );\n};\n\nexport default LegalRepFields;\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NationalityField.js","sources":["../../../../../../src/components/session/UserInputForm/NationalityField.tsx"],"sourcesContent":["import * as Label from \"@radix-ui/react-label\";\nimport { Select } from \"../../ui/SelectComponent\";\nimport { FIELD_LABELS } from \"../../../constants/userInputForm\";\nimport type {\n RequestedFields,\n UserInputFormErrors,\n UserInputFormState,\n} from \"../../../types/userInputForm\";\nimport { useI18n } from \"../../../hooks/useI18n\";\nimport { useCountryOptions } from \"../../../hooks/useCountryOptions\";\n\ninterface NationalityFieldProps {\n form: UserInputFormState;\n errors: UserInputFormErrors;\n requestedFields: RequestedFields;\n onFieldChange: (key: keyof UserInputFormState, value: string) => void;\n}\n\nconst NationalityField = ({\n form,\n errors,\n requestedFields,\n onFieldChange,\n}: NationalityFieldProps) => {\n const { t } = useI18n();\n const countryOptions = useCountryOptions(\"user_input_form.select.nationality\");\n\n if (!requestedFields.has(\"nationalite\")) {\n return null;\n }\n\n return (\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"nationality\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(FIELD_LABELS.nationalite)}\n </Label.Root>\n <Select\n options={countryOptions}\n value={form.nationality || \"\"}\n onValueChange={(value) => onFieldChange(\"nationality\", value)}\n placeholder={t(\"user_input_form.select.nationality\")}\n error={Boolean(errors.nationality)}\n />\n {errors.nationality && (\n <p className=\"text-red-600 text-sm flex items-center gap-1\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.nationality_required\")}\n </p>\n )}\n </div>\n );\n};\n\nexport default NationalityField;\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;AAkBA,IAAM,gBAAgB,GAAG,UAAC,EAKF,EAAA;QAJtB,IAAI,GAAA,EAAA,CAAA,IAAA,EACJ,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,eAAe,GAAA,EAAA,CAAA,eAAA,EACf,aAAa,GAAA,EAAA,CAAA,aAAA;AAEL,IAAA,IAAA,CAAC,GAAK,OAAO,EAAE,EAAd;AACT,IAAA,IAAM,cAAc,GAAG,iBAAiB,CAAC,oCAAoC,CAAC;IAE9E,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE;AACvC,QAAA,OAAO,IAAI;IACb;IAEA,QACEA,cAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,CACxBC,GAAA,CAAC,KAAK,CAAC,IAAI,IACT,OAAO,EAAC,aAAa,EACrB,SAAS,EAAC,wDAAwD,EAAA,QAAA,EAEjE,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,EAAA,CACjB,EACbA,GAAA,CAAC,MAAM,IACL,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE,EAC7B,aAAa,EAAE,UAAC,KAAK,EAAA,EAAK,OAAA,aAAa,CAAC,aAAa,EAAE,KAAK,CAAC,CAAA,CAAnC,CAAmC,EAC7D,WAAW,EAAE,CAAC,CAAC,oCAAoC,CAAC,EACpD,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,EAAA,CAClC,EACD,MAAM,CAAC,WAAW,KACjBD,IAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,8CAA8C,EAAA,QAAA,EAAA,CACzDC,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,cAAc,EAAA,QAAA,EAAA,QAAA,EAAA,CAAS,EACtC,CAAC,CAAC,6CAA6C,CAAC,CAAA,EAAA,CAC/C,CACL,CAAA,EAAA,CACG;AAEV;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"UserInputForm.js","sources":["../../../../../src/components/session/UserInputForm.tsx"],"sourcesContent":["import type { UserInputFormProps } from \"../../types/userInput\";\nimport Button from \"../ui/Button\";\nimport PageActions from \"../ui/PageActions\";\nimport Title from \"../ui/Title\";\nimport Subtitle from \"../ui/Subtitle\";\nimport { useI18n } from \"../../hooks/useI18n\";\nimport { useUserInputForm } from \"../../hooks/useUserInputForm\";\nimport IdentityFields from \"./UserInputForm/IdentityFields\";\nimport LegalEntityFields from \"./UserInputForm/LegalEntityFields\";\nimport LegalRepFields from \"./UserInputForm/LegalRepFields\";\nimport ContactFields from \"./UserInputForm/ContactFields\";\nimport AddressFields from \"./UserInputForm/AddressFields\";\nimport NationalityField from \"./UserInputForm/NationalityField\";\nimport CustomFormFields from \"./UserInputForm/CustomFormFields\";\nimport MobilePageLayout from \"../ui/MobilePageLayout\";\n\nconst UserInputForm = (props: UserInputFormProps) => {\n const { t } = useI18n();\n const hasListCustomField =\n props.node.informationType === \"custom\" &&\n (props.node.customFields || []).some((field) => field.valueType === \"list\");\n\n const {\n form,\n errors,\n informationType,\n requestedFields,\n pageTitle,\n pageDescription,\n addressSuggestions,\n showSuggestions,\n handleFieldChange,\n handleAddressChange,\n handleAddressFocus,\n handleAddressBlur,\n applyAddressSuggestion,\n goOnNextStep,\n goOnPreviousStep,\n customFormData,\n customFormErrors,\n customFormCellErrors,\n handleCustomFieldChange,\n customFields,\n } = useUserInputForm(props);\n\n return (\n <MobilePageLayout\n contentClassName=\"overflow-y-auto\"\n footerClassName=\"md:sticky md:bottom-0 md:bg-white md:pt-4 md:z-20\"\n footer={\n <PageActions\n primary={\n <Button onClick={goOnNextStep}>\n {t(\"user_input_form.buttons.continue\")}\n </Button>\n }\n secondary={props.stepObject.canGoBack ? (\n <Button variant=\"secondary\" onClick={goOnPreviousStep}>\n {t(\"user_input_form.buttons.back\")}\n </Button>\n ) : undefined}\n />\n }\n >\n {typeof process !== \"undefined\" &&\n process.env?.NODE_ENV === \"development\" && (\n <div className=\"fixed right-0 top-0 z-50 bg-green-500 p-2 text-xs text-white\">\n UserInputForm Rendered ✓\n </div>\n )}\n\n <div className=\"px-4 py-6 pt-11 md:px-8 md:py-8\">\n <div\n className={`mx-auto w-full space-y-6 ${\n hasListCustomField\n ? \"max-w-[98vw] md:max-w-[1300px] lg:max-w-[1500px]\"\n : \"max-w-md\"\n }`}\n >\n <div className=\"space-y-4 text-center\">\n <Title className=\"text-xl md:text-2xl lg:text-3xl\">\n {pageTitle}\n </Title>\n <Subtitle className=\"text-sm leading-relaxed text-gray-600 md:text-base whitespace-pre-line\">\n {pageDescription}\n </Subtitle>\n </div>\n\n <div className=\"space-y-6 z-30\">\n {informationType === \"identity\" && (\n <IdentityFields\n form={form}\n errors={errors}\n requestedFields={requestedFields}\n onFieldChange={handleFieldChange}\n />\n )}\n\n {informationType === \"identity-legal-rep\" && (\n <LegalRepFields\n form={form}\n errors={errors}\n requestedFields={requestedFields}\n onFieldChange={handleFieldChange}\n />\n )}\n\n {informationType === \"identity-legal\" && (\n <>\n <LegalEntityFields\n form={form}\n errors={errors}\n requestedFields={requestedFields}\n onFieldChange={handleFieldChange}\n />\n {requestedFields.has(\"adresse\") && (\n <div className=\"space-y-4\">\n <h3 className=\"text-lg md:text-xl font-semibold text-gray-900\">\n {t(\n \"user_input_form.registered_office_address\",\n \"Adresse du siège social\",\n )}\n </h3>\n <AddressFields\n form={form}\n errors={errors}\n requestedFields={requestedFields}\n onFieldChange={handleFieldChange}\n addressSuggestions={addressSuggestions}\n showSuggestions={showSuggestions}\n onAddressChange={handleAddressChange}\n onAddressFocus={handleAddressFocus}\n onAddressBlur={handleAddressBlur}\n onApplySuggestion={applyAddressSuggestion}\n />\n </div>\n )}\n </>\n )}\n\n {informationType === \"contact\" && (\n <ContactFields\n form={form}\n errors={errors}\n requestedFields={requestedFields}\n onFieldChange={handleFieldChange}\n />\n )}\n\n {informationType === \"address\" && (\n <AddressFields\n form={form}\n errors={errors}\n requestedFields={requestedFields}\n onFieldChange={handleFieldChange}\n addressSuggestions={addressSuggestions}\n showSuggestions={showSuggestions}\n onAddressChange={handleAddressChange}\n onAddressFocus={handleAddressFocus}\n onAddressBlur={handleAddressBlur}\n onApplySuggestion={applyAddressSuggestion}\n />\n )}\n\n {informationType === \"nationality\" && (\n <NationalityField\n form={form}\n errors={errors}\n requestedFields={requestedFields}\n onFieldChange={handleFieldChange}\n />\n )}\n\n {informationType === \"custom\" && customFields.length > 0 && (\n <CustomFormFields\n customFields={customFields}\n formData={customFormData}\n errors={customFormErrors}\n cellErrors={customFormCellErrors}\n onFieldChange={handleCustomFieldChange}\n addressSuggestions={addressSuggestions}\n showSuggestions={showSuggestions}\n onAddressChange={(fieldId, val) => handleAddressChange(val)}\n onAddressFocus={(fieldId) => handleAddressFocus()}\n onAddressBlur={(fieldId) => handleAddressBlur()}\n onApplySuggestion={(fieldId, suggestion) =>\n applyAddressSuggestion(suggestion)\n }\n />\n )}\n </div>\n </div>\n </div>\n </MobilePageLayout>\n );\n};\n\nexport default UserInputForm;\n"],"names":["_jsxs","_jsx","_Fragment"],"mappings":";;;;;;;;;;;;;;;;AAgBA,IAAM,aAAa,GAAG,UAAC,KAAyB,EAAA;;AACtC,IAAA,IAAA,CAAC,GAAK,OAAO,EAAE,EAAd;IACT,IAAM,kBAAkB,GACtB,KAAK,CAAC,IAAI,CAAC,eAAe,KAAK,QAAQ;QACvC,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,EAAE,IAAI,CAAC,UAAC,KAAK,EAAA,EAAK,OAAA,KAAK,CAAC,SAAS,KAAK,MAAM,CAAA,CAA1B,CAA0B,CAAC;AAEvE,IAAA,IAAA,EAAA,GAqBF,gBAAgB,CAAC,KAAK,CAAC,EApBzB,IAAI,GAAA,EAAA,CAAA,IAAA,EACJ,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,eAAe,GAAA,EAAA,CAAA,eAAA,EACf,eAAe,GAAA,EAAA,CAAA,eAAA,EACf,SAAS,GAAA,EAAA,CAAA,SAAA,EACT,eAAe,GAAA,EAAA,CAAA,eAAA,EACf,kBAAkB,GAAA,EAAA,CAAA,kBAAA,EAClB,eAAe,GAAA,EAAA,CAAA,eAAA,EACf,iBAAiB,GAAA,EAAA,CAAA,iBAAA,EACjB,mBAAmB,GAAA,EAAA,CAAA,mBAAA,EACnB,kBAAkB,GAAA,EAAA,CAAA,kBAAA,EAClB,iBAAiB,GAAA,EAAA,CAAA,iBAAA,EACjB,sBAAsB,GAAA,EAAA,CAAA,sBAAA,EACtB,YAAY,kBAAA,EACZ,gBAAgB,GAAA,EAAA,CAAA,gBAAA,EAChB,cAAc,GAAA,EAAA,CAAA,cAAA,EACd,gBAAgB,sBAAA,EAChB,oBAAoB,GAAA,EAAA,CAAA,oBAAA,EACpB,uBAAuB,GAAA,EAAA,CAAA,uBAAA,EACvB,YAAY,kBACa;AAE3B,IAAA,QACEA,IAAA,CAAC,gBAAgB,EAAA,EACf,gBAAgB,EAAC,iBAAiB,EAClC,eAAe,EAAC,mDAAmD,EACnE,MAAM,EACJC,GAAA,CAAC,WAAW,EAAA,EACV,OAAO,EACLA,GAAA,CAAC,MAAM,EAAA,EAAC,OAAO,EAAE,YAAY,EAAA,QAAA,EAC1B,CAAC,CAAC,kCAAkC,CAAC,EAAA,CAC/B,EAEX,SAAS,EAAE,KAAK,CAAC,UAAU,CAAC,SAAS,IACnCA,GAAA,CAAC,MAAM,EAAA,EAAC,OAAO,EAAC,WAAW,EAAC,OAAO,EAAE,gBAAgB,EAAA,QAAA,EAClD,CAAC,CAAC,8BAA8B,CAAC,GAC3B,IACP,SAAS,EAAA,CACb,EAAA,QAAA,EAAA,CAGH,OAAO,OAAO,KAAK,WAAW;gBAC7B,CAAA,CAAA,EAAA,GAAA,OAAO,CAAC,GAAG,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,QAAQ,MAAK,aAAa,KACrCA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,8DAA8D,EAAA,QAAA,EAAA,+BAAA,EAAA,CAEvE,CACP,EAEHA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,iCAAiC,EAAA,QAAA,EAC9CD,IAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,2BAAA,CAAA,MAAA,CACT;AACE,0BAAE;AACF,0BAAE,UAAU,CACd,aAEFA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,uBAAuB,EAAA,QAAA,EAAA,CACpCC,IAAC,KAAK,EAAA,EAAC,SAAS,EAAC,iCAAiC,YAC/C,SAAS,EAAA,CACJ,EACRA,GAAA,CAAC,QAAQ,IAAC,SAAS,EAAC,wEAAwE,EAAA,QAAA,EACzF,eAAe,GACP,CAAA,EAAA,CACP,EAEND,cAAK,SAAS,EAAC,gBAAgB,EAAA,QAAA,EAAA,CAC5B,eAAe,KAAK,UAAU,KAC7BC,GAAA,CAAC,cAAc,IACb,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,iBAAiB,EAAA,CAChC,CACH,EAEA,eAAe,KAAK,oBAAoB,KACvCA,GAAA,CAAC,cAAc,IACb,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,iBAAiB,EAAA,CAChC,CACH,EAEA,eAAe,KAAK,gBAAgB,KACnCD,IAAA,CAAAE,QAAA,EAAA,EAAA,QAAA,EAAA,CACED,GAAA,CAAC,iBAAiB,EAAA,EAChB,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,iBAAiB,EAAA,CAChC,EACD,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,KAC7BD,cAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,CACxBC,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,gDAAgD,YAC3D,CAAC,CACA,2CAA2C,EAC3C,yBAAyB,CAC1B,EAAA,CACE,EACLA,GAAA,CAAC,aAAa,IACZ,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,iBAAiB,EAChC,kBAAkB,EAAE,kBAAkB,EACtC,eAAe,EAAE,eAAe,EAChC,eAAe,EAAE,mBAAmB,EACpC,cAAc,EAAE,kBAAkB,EAClC,aAAa,EAAE,iBAAiB,EAChC,iBAAiB,EAAE,sBAAsB,EAAA,CACzC,CAAA,EAAA,CACE,CACP,CAAA,EAAA,CACA,CACJ,EAEA,eAAe,KAAK,SAAS,KAC5BA,GAAA,CAAC,aAAa,IACZ,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,iBAAiB,EAAA,CAChC,CACH,EAEA,eAAe,KAAK,SAAS,KAC5BA,IAAC,aAAa,EAAA,EACZ,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,iBAAiB,EAChC,kBAAkB,EAAE,kBAAkB,EACtC,eAAe,EAAE,eAAe,EAChC,eAAe,EAAE,mBAAmB,EACpC,cAAc,EAAE,kBAAkB,EAClC,aAAa,EAAE,iBAAiB,EAChC,iBAAiB,EAAE,sBAAsB,EAAA,CACzC,CACH,EAEA,eAAe,KAAK,aAAa,KAChCA,IAAC,gBAAgB,EAAA,EACf,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,iBAAiB,EAAA,CAChC,CACH,EAEA,eAAe,KAAK,QAAQ,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,KACtDA,IAAC,gBAAgB,EAAA,EACf,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,gBAAgB,EACxB,UAAU,EAAE,oBAAoB,EAChC,aAAa,EAAE,uBAAuB,EACtC,kBAAkB,EAAE,kBAAkB,EACtC,eAAe,EAAE,eAAe,EAChC,eAAe,EAAE,UAAC,OAAO,EAAE,GAAG,EAAA,EAAK,OAAA,mBAAmB,CAAC,GAAG,CAAC,CAAA,CAAxB,CAAwB,EAC3D,cAAc,EAAE,UAAC,OAAO,EAAA,EAAK,OAAA,kBAAkB,EAAE,EAApB,CAAoB,EACjD,aAAa,EAAE,UAAC,OAAO,EAAA,EAAK,OAAA,iBAAiB,EAAE,CAAA,CAAnB,CAAmB,EAC/C,iBAAiB,EAAE,UAAC,OAAO,EAAE,UAAU,EAAA;wCACrC,OAAA,sBAAsB,CAAC,UAAU,CAAC;AAAlC,oCAAA,CAAkC,GAEpC,CACH,CAAA,EAAA,CACG,IACF,EAAA,CACF,CAAA,EAAA,CACW;AAEvB;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"VideoWorkInProgress.js","sources":["../../../../../src/components/session/VideoWorkInProgress.tsx"],"sourcesContent":["import React from \"react\";\nimport Button from \"../ui/Button\";\nimport ButtonDesktop from \"../ui/ButtonDesktop\";\nimport useIsMobile from \"../../hooks/useIsMobile\";\n\ninterface VideoWorkInProgressProps {\n onContinue: () => void;\n}\n\nconst VideoWorkInProgress: React.FC<VideoWorkInProgressProps> = ({ onContinue }) => {\n const isMobile = useIsMobile();\n\n return (\n <div className=\"flex flex-col justify-between h-full w-full\">\n {/* Main content area */}\n <div className=\"flex-1 flex items-start justify-center md:items-center px-4 py-8\">\n <div className=\"w-full max-w-md mx-auto text-center space-y-6\">\n {/* Work in progress icon */}\n <div className=\"text-6xl mb-6\">🎥</div>\n \n {/* Title */}\n <h1 className=\"text-2xl md:text-3xl font-bold text-gray-800 mb-4\">\n Capture vidéo en cours de développement\n </h1>\n \n {/* Subtitle */}\n <p className=\"text-gray-600 text-lg mb-6\">\n Cette fonctionnalité de capture vidéo est actuellement en développement.\n </p>\n \n {/* Info box */}\n <div className=\"bg-purple-50 border border-purple-200 rounded-lg p-4 mb-8\">\n <div className=\"flex items-center justify-center mb-2\">\n <div className=\"text-purple-500 text-2xl mr-2\">📹</div>\n <h3 className=\"text-purple-800 font-semibold\">Capture Vidéo - En développement</h3>\n </div>\n <p className=\"text-purple-700 text-sm\">\n La fonctionnalité de capture vidéo sera bientôt disponible avec des contrôles avancés. \n Vous pouvez continuer le processus pour passer à l'étape suivante.\n </p>\n </div>\n </div>\n </div>\n\n {/* Bottom navigation */}\n <div className=\"flex-shrink-0 p-4 border-t border-gray-200 bg-white\">\n {isMobile ? (\n <div className=\"w-full\">\n <Button onClick={onContinue} className=\"w-full py-3\">\n Continuer\n </Button>\n </div>\n ) : (\n <div className=\"flex justify-end max-w-4xl mx-auto\">\n <ButtonDesktop onClick={onContinue} type=\"continue\">\n Continuer\n </ButtonDesktop>\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default VideoWorkInProgress;"],"names":["_jsxs","_jsx"],"mappings":";;;;;AASA,IAAM,mBAAmB,GAAuC,UAAC,EAAc,EAAA;AAAZ,IAAA,IAAA,UAAU,GAAA,EAAA,CAAA,UAAA;AAC3E,IAAA,IAAM,QAAQ,GAAG,WAAW,EAAE;IAE9B,QACEA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,6CAA6C,EAAA,QAAA,EAAA,CAE1DC,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,kEAAkE,EAAA,QAAA,EAC/ED,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,+CAA+C,EAAA,QAAA,EAAA,CAE5DC,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,eAAe,EAAA,QAAA,EAAA,cAAA,EAAA,CAAS,EAGvCA,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,mDAAmD,EAAA,QAAA,EAAA,mDAAA,EAAA,CAE5D,EAGLA,WAAG,SAAS,EAAC,4BAA4B,EAAA,QAAA,EAAA,yFAAA,EAAA,CAErC,EAGJD,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,2DAA2D,EAAA,QAAA,EAAA,CACxEA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,uCAAuC,EAAA,QAAA,EAAA,CACpDC,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,+BAA+B,EAAA,QAAA,EAAA,cAAA,EAAA,CAAS,EACvDA,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,+BAA+B,EAAA,QAAA,EAAA,4CAAA,EAAA,CAAsC,CAAA,EAAA,CAC/E,EACNA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,yBAAyB,EAAA,QAAA,EAAA,8LAAA,EAAA,CAGlC,CAAA,EAAA,CACA,CAAA,EAAA,CACF,EAAA,CACF,EAGNA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,qDAAqD,EAAA,QAAA,EACjE,QAAQ,IACPA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,QAAQ,EAAA,QAAA,EACrBA,GAAA,CAAC,MAAM,EAAA,EAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAC,aAAa,EAAA,QAAA,EAAA,WAAA,EAAA,CAE3C,EAAA,CACL,KAENA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,oCAAoC,EAAA,QAAA,EACjDA,GAAA,CAAC,aAAa,EAAA,EAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAC,UAAU,EAAA,QAAA,EAAA,WAAA,EAAA,CAEnC,EAAA,CACZ,CACP,EAAA,CACG,CAAA,EAAA,CACF;AAEV;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"controleJdiPolicy.js","sources":["../../../../../src/components/session/controleJdiPolicy.ts"],"sourcesContent":["/**\n * Politique de routage du nœud controle-jdi quand les resoumissions sont\n * épuisées sur un code bloquant — miroir de `conditionNodePolicy.ts`\n * (nœud condition), extrait en fonctions pures pour rester testable sans\n * monter DocumentCheck.tsx en entier.\n *\n * Décision produit (rétrocompat) : la sortie \"false\" du nœud controle-jdi\n * est OPTIONNELLE. Un nœud legacy sans sortie \"false\" câblée doit conserver\n * EXACTEMENT son comportement actuel (écran d'erreur + bouton \"continuer\n * quand même\"). Le routage automatique true/false ne s'active que si\n * l'auteur du parcours a explicitement câblé une sortie \"false\".\n */\n\nexport type MaxResubmissionAction = 'end-journey' | 'force-true';\n\nexport const DEFAULT_MAX_RESUBMISSION_ACTION: MaxResubmissionAction = 'end-journey';\n\nexport function normalizeMaxResubmissionAction(value?: string): MaxResubmissionAction {\n return value === 'force-true' ? 'force-true' : DEFAULT_MAX_RESUBMISSION_ACTION;\n}\n\nexport function hasExceededResubmissionAttempts(\n retryCountAfterFailure: number,\n maxAttempts: number,\n): boolean {\n return retryCountAfterFailure >= maxAttempts;\n}\n\nexport interface ResolveControleJdiOutcomeRouteParams {\n /** Le code JDI reçu est-il configuré comme bloquant pour ce nœud ? */\n isBlockingCode: boolean;\n /** Le nombre de tentatives (après cet échec) a-t-il atteint/dépassé le maximum ? */\n hasExceededAttempts: boolean;\n /** Une arête sortante avec sourceHandle=\"false\" existe-t-elle sur ce nœud ? */\n hasFalseEdge: boolean;\n action: MaxResubmissionAction;\n}\n\nexport interface ControleJdiOutcomeRoute {\n /** Handle à suivre pour la navigation automatique, ou undefined si aucune navigation auto. */\n handle: 'true' | 'false' | undefined;\n /** Faut-il afficher l'écran d'erreur (JDIError) avec bouton réessayer/continuer quand même ? */\n showErrorScreen: boolean;\n}\n\n/**\n * Point de décision unique pour le routage du nœud controle-jdi après un\n * résultat d'analyse.\n *\n * - Succès (code non bloquant) → toujours \"true\" (sûr même sur un nœud\n * legacy à une seule arête : `findOutgoingEdge` retombe sur la première\n * arête si aucune n'a le handle \"true\").\n * - Échec, tentatives non épuisées → écran d'erreur actuel (retry possible).\n * - Échec épuisé, PAS de sortie \"false\" câblée → écran d'erreur actuel\n * inchangé (rétrocompat totale, aucune navigation automatique).\n * - Échec épuisé, sortie \"false\" câblée → navigation automatique silencieuse\n * selon `action` (miroir de `conditionMaxRetryAction`).\n */\nexport function resolveControleJdiOutcomeRoute(\n params: ResolveControleJdiOutcomeRouteParams,\n): ControleJdiOutcomeRoute {\n const { isBlockingCode: blocking, hasExceededAttempts, hasFalseEdge, action } = params;\n\n if (!blocking) {\n return { handle: 'true', showErrorScreen: false };\n }\n\n if (!hasExceededAttempts || !hasFalseEdge) {\n return { handle: undefined, showErrorScreen: true };\n }\n\n return { handle: action === 'force-true' ? 'true' : 'false', showErrorScreen: false };\n}\n"],"names":[],"mappings":"AAAA;;;;;;;;;;;AAWG;AAII,IAAM,+BAA+B,GAA0B;AAEhE,SAAU,8BAA8B,CAAC,KAAc,EAAA;IAC3D,OAAO,KAAK,KAAK,YAAY,GAAG,YAAY,GAAG,+BAA+B;AAChF;AAEM,SAAU,+BAA+B,CAC7C,sBAA8B,EAC9B,WAAmB,EAAA;IAEnB,OAAO,sBAAsB,IAAI,WAAW;AAC9C;AAmBA;;;;;;;;;;;;AAYG;AACG,SAAU,8BAA8B,CAC5C,MAA4C,EAAA;AAEpC,IAAA,IAA0B,mBAAmB,GAA2B,MAAM,CAAA,mBAAjC,EAAE,YAAY,GAAa,MAAM,CAAA,YAAnB,CAAA,CAAE,MAAM,GAAK,MAAM;AAMtF,IAAA,IAAI,CAAC,mBAAmB,IAAI,CAAC,YAAY,EAAE;QACzC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE;IACrD;AAEA,IAAA,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,YAAY,GAAG,MAAM,GAAG,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE;AACvF;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"endScreenIcons.js","sources":["../../../../../src/components/session/endScreenIcons.ts"],"sourcesContent":["import {\n HeartHandshake,\n Send,\n Mail,\n CheckCircle,\n Clock,\n ShieldCheck,\n User,\n Info,\n LucideIcon,\n} from \"lucide-react\";\nimport type { EndScreenIcon } from \"../../types/session\";\n\n/**\n * Catalogue d'icônes des écrans de fin : clé partagée avec le builder\n * (qui utilise solar-icon-set) → composant lucide-react pour le rendu SDK.\n */\nconst END_SCREEN_ICONS: Record<EndScreenIcon, LucideIcon> = {\n thanks: HeartHandshake,\n send: Send,\n mail: Mail,\n check: CheckCircle,\n clock: Clock,\n shield: ShieldCheck,\n user: User,\n info: Info,\n};\n\n/** Résout une clé d'icône vers son composant lucide, avec fallback `Info`. */\nexport const resolveEndScreenIcon = (icon?: string): LucideIcon => {\n if (icon && icon in END_SCREEN_ICONS) {\n return END_SCREEN_ICONS[icon as EndScreenIcon];\n }\n return Info;\n};\n"],"names":[],"mappings":";;AAaA;;;AAGG;AACH,IAAM,gBAAgB,GAAsC;AAC1D,IAAA,MAAM,EAAE,cAAc;AACtB,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,KAAK,EAAE,WAAW;AAClB,IAAA,KAAK,EAAE,KAAK;AACZ,IAAA,MAAM,EAAE,WAAW;AACnB,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,IAAI,EAAE,IAAI;CACX;AAED;AACO,IAAM,oBAAoB,GAAG,UAAC,IAAa,EAAA;AAChD,IAAA,IAAI,IAAI,IAAI,IAAI,IAAI,gBAAgB,EAAE;AACpC,QAAA,OAAO,gBAAgB,CAAC,IAAqB,CAAC;IAChD;AACA,IAAA,OAAO,IAAI;AACb;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DocusealSignature.js","sources":["../../../../../src/components/signature-electronic/DocusealSignature.tsx"],"sourcesContent":["import React, { useEffect, useState, useCallback } from \"react\";\nimport { DocusealForm } from \"@docuseal/react\";\nimport LoadingState from \"../states/LoadingState\";\nimport { useTranslation } from \"react-i18next\";\nimport sdkI18n from \"../../i18n\";\nimport { getDocusealSigningToken } from \"../../services/integrationService\";\nimport { logSignatureDocumentOpened, logDocumentSigned } from \"../../services/auditTrailService\";\n\nconst DEFAULT_DOCUSEAL_HOST = \"docuseal.datakeen.co\";\n\nconst normalizeDocusealHost = (rawHost?: string | null): string => {\n const candidate = (rawHost ?? \"\").trim() || DEFAULT_DOCUSEAL_HOST;\n // Just return the domain, stripping any protocol to let the component handle it\n return candidate.replace(/^https?:\\/\\//i, \"\").replace(/\\/+$/, \"\");\n};\n\ninterface DocusealSignatureProps {\n sessionId: string;\n templateId: string;\n templateName?: string;\n onComplete: () => void;\n onBack: () => void;\n /** Pre-filled field values from previous information-input steps */\n prefillValues?: Record<string, string>;\n /** Field names that should be read-only in the signing form */\n readonlyFieldNames?: string[];\n}\n\nconst DocusealSignature: React.FC<DocusealSignatureProps> = ({\n sessionId,\n templateId,\n templateName = \"Document\",\n onComplete,\n onBack,\n prefillValues,\n readonlyFieldNames,\n}) => {\n const { t } = useTranslation(\"translation\", { i18n: sdkI18n });\n const [token, setToken] = useState<string | null>(null);\n const [host, setHost] = useState<string>(DEFAULT_DOCUSEAL_HOST);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n\n useEffect(() => {\n\n const fetchData = async () => {\n try {\n setLoading(true);\n\n const data = await getDocusealSigningToken(sessionId, templateId);\n const normalizedHost = normalizeDocusealHost(data?.host);\n\n setToken(data.token);\n setHost(normalizedHost);\n } catch (err) {\n setError(t(\"signature.token_error\", \"Erreur lors du chargement de la signature.\"));\n } finally {\n setLoading(false);\n }\n };\n\n fetchData();\n }, [sessionId, templateId, t]);\n\n const handleInit = useCallback(async () => {\n try {\n await logSignatureDocumentOpened(sessionId, {\n templateId,\n templateName: templateName || \"Document\",\n sessionId,\n });\n } catch (error) {\n console.error(\"[DocusealSignature] Failed to log SIGNATURE_DOCUMENT_OPENED:\", error);\n }\n }, [sessionId, templateId, templateName]);\n\n const handleComplete = useCallback(async () => {\n try {\n await logDocumentSigned(sessionId, {\n templateId,\n templateName: templateName || \"Document\",\n sessionId,\n });\n } catch (error) {\n console.error(\"[DocusealSignature] Failed to log DOCUMENT_SIGNED:\", error);\n }\n\n onComplete();\n }, [sessionId, templateId, templateName, onComplete]);\n\n if (loading) {\n return <LoadingState message={t(\"signature.loading\", \"Chargement du document...\")} subtitle=\"\" />;\n }\n\n if (error || !token) {\n return (\n <div className=\"flex flex-col items-center justify-center h-full p-4 text-center\">\n <div className=\"text-red-500 text-4xl mb-4\">⚠️</div>\n <h2 className=\"text-xl font-bold text-red-600 mb-2\">{t(\"signature.error_title\", \"Erreur\")}</h2>\n <p className=\"text-gray-600 mb-4\">{error || t(\"signature.generic_error\", \"Impossible de charger le document.\")}</p>\n <button\n className=\"px-4 py-2 bg-primary text-white rounded hover:bg-primary-dark transition-colors\"\n onClick={onBack}\n >\n {t(\"buttons.back\", \"Retour\")}\n </button>\n </div>\n );\n }\n\n const src = `https://${host}/s/${token}`;\n\n const customCss = `\n input[type=\"date\"] {\n width: 100% !important;\n min-height: 48px !important;\n padding: 10px 14px !important;\n font-size: 18px !important;\n box-sizing: border-box !important;\n }\n `;\n\n return (\n <div className=\"w-full flex-1 flex flex-col\" style={{ minHeight: \"600px\" }}>\n <DocusealForm\n src={src}\n host={host}\n withTitle={false}\n withSendCopyButton={false}\n values={prefillValues}\n readonlyFields={readonlyFieldNames}\n onComplete={handleComplete}\n onInit={handleInit}\n className=\"flex-1 w-full h-[600px]\"\n customCss={customCss}\n />\n </div>\n );\n};\n\nexport default DocusealSignature;\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SignatureElectronic.js","sources":["../../../../../src/components/signature-electronic/SignatureElectronic.tsx"],"sourcesContent":["import React, { useState, useMemo, useEffect } from \"react\";\nimport type { stepObject, SessionTemplateNode, SessionData } from \"../../types/session\";\nimport type { UserInput } from \"../../types/userInput\";\nimport type { ContactInfo } from \"../../types/contactInfo\";\nimport { useTranslation } from \"react-i18next\";\nimport sdkI18n from \"../../i18n\";\nimport SignatureElectronicIntroduction from \"./SignatureElectronicIntroduction\";\nimport DocusealSignature from \"./DocusealSignature\";\nimport SignedDocumentPreview from \"./SignedDocumentPreview\";\nimport { updateSessionStatus } from \"../../services/sessionService\";\n\n/**\n * Maps an InformationFieldKey (journey field) to the corresponding UserInput key.\n * This bridges the admin-defined field names to the actual data collected in the SDK.\n */\nconst FIELD_KEY_TO_USER_INPUT: Record<string, (ui: UserInput, ci?: ContactInfo) => string | undefined> = {\n nom: (ui) => ui.lastName,\n denomination_sociale: (ui) => ui.companyName,\n prenom: (ui) => ui.firstName,\n date_naissance: (ui) => ui.birthDate,\n email: (ui, ci) => ui.email || ci?.email,\n sms: (ui, ci) => ui.sms || ui.phoneNumber || ci?.phoneNumber,\n adresse: (ui) => [ui.addressLine1, ui.addressLine2, ui.postalCode, ui.city, ui.countryCode].filter(Boolean).join(', '),\n nationalite: (ui) => ui.nationality,\n siret: (ui) => ui.siret,\n tva: (ui) => ui.tva,\n};\n\ninterface SignatureElectronicProps {\n sessionId: string;\n stepObject: stepObject;\n node: SessionTemplateNode;\n session: SessionData;\n title?: string;\n description?: string;\n external_id?: string;\n fieldMappings?: SessionTemplateNode['fieldMappings'];\n userInput?: UserInput;\n contactInfo?: ContactInfo;\n}\n\nconst SignatureElectronic: React.FC<SignatureElectronicProps> = ({\n sessionId,\n stepObject,\n node,\n session,\n title,\n description,\n external_id,\n fieldMappings,\n userInput,\n contactInfo,\n}) => {\n const { t } = useTranslation(\"translation\", { i18n: sdkI18n });\n const signatureViewStorageKey = useMemo(() => `dk-signature-open:${sessionId}:${external_id ?? \"no-template\"}`, [sessionId, external_id]);\n const [showSignature, setShowSignature] = useState<boolean>(() => {\n if (typeof window === \"undefined\") return false;\n return window.sessionStorage.getItem(signatureViewStorageKey) === \"1\";\n });\n const [showSignedDocumentPreview, setShowSignedDocumentPreview] = useState<boolean>(false);\n const [signedAt, setSignedAt] = useState<string | null>(null);\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n\n if (showSignature) {\n window.sessionStorage.setItem(signatureViewStorageKey, \"1\");\n } else {\n window.sessionStorage.removeItem(signatureViewStorageKey);\n }\n }, [showSignature, signatureViewStorageKey]);\n\n /**\n * Build the pre-fill values object from userInput + fieldMappings.\n * Maps each configured field to its value from userInput.\n * Used by DocusealForm's `values` prop for client-side pre-filling.\n */\n const prefillValues = useMemo<Record<string, string> | undefined>(() => {\n if (!fieldMappings || !userInput) return undefined;\n\n const values: Record<string, string> = {};\n\n fieldMappings.forEach(mapping => {\n const resolver = FIELD_KEY_TO_USER_INPUT[mapping.sourceFieldId];\n let value: string | undefined;\n\n if (resolver) {\n value = resolver(userInput, contactInfo);\n } else if (userInput.customFormData) {\n const raw = userInput.customFormData[mapping.sourceFieldId];\n value = raw != null ? String(raw) : undefined;\n }\n\n if (value !== undefined && value !== '') {\n values[mapping.sourceFieldId] = value;\n }\n });\n\n return Object.keys(values).length > 0 ? values : undefined;\n }, [fieldMappings, userInput, contactInfo]);\n\n /**\n * Build the list of field names that should be read-only in the signing form.\n * Only includes fields that are both mapped AND marked as readonly by the admin.\n */\n const readonlyFieldNames = useMemo<string[] | undefined>(() => {\n if (!fieldMappings) return undefined;\n\n const names = fieldMappings\n .filter(m => m.readonly)\n .map(m => m.sourceFieldId);\n\n return names.length > 0 ? names : undefined;\n }, [fieldMappings]);\n\n const handleContinue = () => {\n setShowSignature(true);\n };\n\n const handleComplete = async () => {\n if (typeof window !== \"undefined\") {\n window.sessionStorage.removeItem(signatureViewStorageKey);\n }\n try {\n await updateSessionStatus(sessionId, \"conform\");\n } catch (err) {\n console.error(\"[SignatureElectronic] Failed to update session status:\", err);\n // Non-bloquant : l'utilisateur avance quoi qu'il arrive\n }\n // Toujours montrer le document réellement signé avant de continuer\n // (rassure l'utilisateur — pas de bascule directe vers l'étape suivante).\n setSignedAt(new Date().toISOString());\n setShowSignedDocumentPreview(true);\n };\n\n const handleContinueFromPreview = () => {\n // Progress to the next step via graph edges (pas d'arithmétique — évite de sauter dans la mauvaise branche)\n stepObject.goToNextStep(node.id, session.template);\n };\n\n const handleBack = () => {\n if (showSignature) {\n setShowSignature(false);\n } else {\n if (typeof window !== \"undefined\") {\n window.sessionStorage.removeItem(signatureViewStorageKey);\n }\n stepObject.goBack();\n }\n };\n\n if (showSignedDocumentPreview) {\n return (\n <SignedDocumentPreview\n sessionId={sessionId}\n nodeId={node.id}\n nodeTitle={node.pageTitle || node.title}\n completedAt={signedAt}\n logo={session?.template?.logo}\n title={node.signedScreenTitle}\n description={node.signedScreenDescription}\n downloadHint={node.signedScreenDownloadHint}\n onContinue={handleContinueFromPreview}\n />\n );\n }\n\n if (showSignature && external_id) {\n return (\n <DocusealSignature\n sessionId={sessionId}\n templateId={external_id}\n templateName={title}\n onComplete={handleComplete}\n onBack={handleBack}\n prefillValues={prefillValues}\n readonlyFieldNames={readonlyFieldNames}\n />\n );\n }\n\n if (showSignature && !external_id) {\n // No template configured — show error instead of silently falling back to intro\n return (\n <div className=\"flex flex-col items-center justify-center h-full p-4 text-center\">\n <div className=\"text-red-500 text-4xl mb-4\">⚠️</div>\n <h2 className=\"text-xl font-bold text-red-600 mb-2\">\n {t(\"signature.error_title\", \"Erreur\")}\n </h2>\n <p className=\"text-gray-600 mb-4\">\n {t(\"signature.no_template\", \"Le modèle de signature n'est pas configuré.\")}\n </p>\n <button\n className=\"px-4 py-2 bg-primary text-white rounded hover:bg-primary-dark transition-colors\"\n onClick={handleBack}\n >\n {t(\"buttons.back\", \"Retour\")}\n </button>\n </div>\n );\n }\n\n return (\n <SignatureElectronicIntroduction\n onContinue={handleContinue}\n onBack={stepObject.canGoBack ? handleBack : undefined}\n title={title}\n description={description}\n />\n );\n};\n\nexport default SignatureElectronic;\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SignatureElectronicIntroduction.js","sources":["../../../../../src/components/signature-electronic/SignatureElectronicIntroduction.tsx"],"sourcesContent":["import React from \"react\";\nimport Title from \"../ui/Title\";\nimport Subtitle from \"../ui/Subtitle\";\nimport Button from \"../ui/Button\";\nimport PageActions from \"../ui/PageActions\";\nimport { useTranslation } from \"react-i18next\";\nimport sdkI18n from \"../../i18n\";\nimport MobilePageLayout from \"../ui/MobilePageLayout\";\nimport ElectronicIcon from \"../icons/ElectronicIcon\";\n\ninterface SignatureElectronicIntroductionProps {\n onContinue: () => void;\n onBack?: () => void;\n title?: string;\n description?: string;\n}\n\nconst SignatureElectronicIntroduction: React.FC<SignatureElectronicIntroductionProps> = ({\n onContinue,\n onBack,\n title: propTitle,\n description: propDescription,\n}) => {\n const { t } = useTranslation(\"translation\", { i18n: sdkI18n });\n\n const title = propTitle || t(\"signature.introduction_title\", \"Signature électronique\");\n const description = propDescription || t(\"signature.introduction_description\", \"Veuillez signer le document pour continuer.\");\n\n const handleContinueClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n onContinue();\n };\n\n const handleBackClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n onBack?.();\n };\n\n return (\n <MobilePageLayout\n footer={\n <PageActions\n primary={\n <Button onClick={handleContinueClick} type=\"button\">\n {t(\"buttons.continue\", \"Commencer\")}\n </Button>\n }\n secondary={onBack ? (\n <Button variant=\"secondary\" onClick={handleBackClick} type=\"button\">\n {t(\"buttons.back\", \"Retour\")}\n </Button>\n ) : undefined}\n />\n }\n >\n <div className=\"px-4 py-6 md:px-8 md:py-8\">\n <div className=\"w-full max-w-md mx-auto space-y-6\">\n {/* Header */}\n <div className=\"text-center space-y-4\">\n <Title className=\"text-xl md:text-2xl lg:text-3xl\">{title}</Title>\n <Subtitle className=\"text-sm md:text-base text-gray-600 leading-relaxed whitespace-pre-line\">\n {description}\n </Subtitle>\n </div>\n\n <div className=\"flex justify-center items-center w-full py-6\">\n <ElectronicIcon className=\"w-full max-w-xs md:max-w-sm\" />\n </div>\n\n {/* Information box */}\n <div className=\"bg-blue-50 border border-blue-200 rounded-lg p-4\">\n <div className=\"flex\">\n <div className=\"shrink-0\">\n <svg\n className=\"h-5 w-5 text-blue-400\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </div>\n <div className=\"ml-3\">\n <h3 className=\"text-sm font-medium text-blue-800\">\n {t(\"signature.info_title\", \"Instruction\")}\n </h3>\n <div className=\"mt-2 text-sm text-blue-700\">\n <p>{t(\"signature.info_description\", \"Vous allez être redirigé vers un formulaire de signature sécurisé. Assurez-vous d'avoir une connexion stable.\")}</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </MobilePageLayout>\n );\n};\n\nexport default SignatureElectronicIntroduction;\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SignedDocumentPreview.js","sources":["../../../../../src/components/signature-electronic/SignedDocumentPreview.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from \"react\";\nimport { PenTool } from \"lucide-react\";\nimport { useTranslation } from \"react-i18next\";\nimport sdkI18n from \"../../i18n\";\nimport { apiService } from \"../../services/api\";\nimport LoadingState from \"../states/LoadingState\";\nimport MobilePageLayout from \"../ui/MobilePageLayout\";\nimport PageActions from \"../ui/PageActions\";\nimport Button from \"../ui/Button\";\nimport Title from \"../ui/Title\";\n\ninterface SignedDocumentPreviewProps {\n sessionId: string;\n nodeId: string;\n nodeTitle: string;\n completedAt: string | null;\n logo?: string;\n title?: string;\n description?: string;\n downloadHint?: string;\n onContinue: () => void;\n}\n\nconst STATUS_POLL_INTERVAL_MS = 2000;\n// DocuSeal flags a submission \"completed\" before generating the flattened\n// signed PDF — 15 attempts (30s) leaves enough margin for that async step.\nconst MAX_STATUS_POLL_ATTEMPTS = 15;\n\nconst SignedDocumentPreview: React.FC<SignedDocumentPreviewProps> = ({\n sessionId,\n nodeId,\n nodeTitle,\n completedAt,\n logo,\n title: propTitle,\n description: propDescription,\n downloadHint: propDownloadHint,\n onContinue,\n}) => {\n const { t, i18n } = useTranslation(\"translation\", { i18n: sdkI18n });\n const title = propTitle?.trim() || t(\"signed_document.title\", \"Votre document est signé\");\n const description = propDescription?.trim() || t(\n \"signed_document.ready_text\",\n \"Merci d'avoir signé le document, vous pouvez le consulter en cliquant ci-dessous :\",\n );\n const downloadHint = propDownloadHint?.trim() || t(\n \"signed_document.download_hint\",\n \"Si vous souhaitez conserver ce document, vous pouvez le télécharger depuis cette page.\",\n );\n const [status, setStatus] = useState<\"polling\" | \"ready\" | \"error\" | \"declined\" | \"expired\">(\n \"polling\",\n );\n const [viewUrl, setViewUrl] = useState<string | null>(null);\n const cancelledRef = useRef(false);\n\n useEffect(() => {\n cancelledRef.current = false;\n let attempts = 0;\n let objectUrl: string | undefined;\n let timer: ReturnType<typeof setTimeout> | undefined;\n\n const fetchAccessLink = async () => {\n const response = await apiService.get(\n `/session/sdk/${sessionId}/signed-document/${nodeId}.pdf`,\n { responseType: 'blob' },\n );\n if (!cancelledRef.current) {\n const url = URL.createObjectURL(response.data);\n objectUrl = url;\n setViewUrl(url);\n setStatus('ready');\n }\n };\n\n const poll = async () => {\n try {\n const statusResponse = await apiService.get(\n `/session/sdk/${sessionId}/signed-document/${nodeId}/status`,\n );\n const ready = !!statusResponse.data?.data?.ready;\n const error = statusResponse.data?.data?.error as\n | \"declined\"\n | \"expired\"\n | undefined;\n\n if (error === \"declined\" || error === \"expired\") {\n if (!cancelledRef.current) setStatus(error);\n return;\n }\n\n if (ready) {\n try {\n await fetchAccessLink();\n return;\n } catch (err) {\n // DocuSeal can report the submission \"completed\" before the\n // signed document is actually linked — treat like \"not ready\n // yet\" instead of failing permanently on the first miss.\n console.error(\n \"[SignedDocumentPreview] Failed to fetch access link:\",\n err,\n );\n }\n }\n\n attempts += 1;\n if (attempts >= MAX_STATUS_POLL_ATTEMPTS) {\n if (!cancelledRef.current) setStatus(\"error\");\n return;\n }\n timer = setTimeout(poll, STATUS_POLL_INTERVAL_MS);\n } catch (err) {\n console.error(\"[SignedDocumentPreview] Failed to poll signed document status:\", err);\n attempts += 1;\n if (attempts >= MAX_STATUS_POLL_ATTEMPTS) {\n if (!cancelledRef.current) setStatus(\"error\");\n return;\n }\n timer = setTimeout(poll, STATUS_POLL_INTERVAL_MS);\n }\n };\n\n poll();\n\n return () => {\n cancelledRef.current = true;\n if (timer) clearTimeout(timer);\n if (objectUrl) URL.revokeObjectURL(objectUrl);\n };\n }, [sessionId, nodeId]);\n\n if (status === \"polling\") {\n return (\n <LoadingState\n message={t(\"signed_document.loading\", \"Préparation du document signé...\")}\n subtitle=\"\"\n />\n );\n }\n\n const formattedDate = completedAt\n ? new Intl.DateTimeFormat(i18n.language || \"fr\", {\n day: \"numeric\",\n month: \"long\",\n year: \"numeric\",\n }).format(new Date(completedAt))\n : null;\n\n return (\n <MobilePageLayout\n footer={\n <PageActions\n primary={\n <Button onClick={onContinue} type=\"button\">\n {t(\"buttons.continue\", \"Continuer\")}\n </Button>\n }\n />\n }\n >\n <div className=\"flex flex-col items-center h-full px-4 py-8 md:px-8 text-center gap-6\">\n {logo && <img src={logo} alt=\"\" className=\"h-12 max-w-[200px] object-contain\" />}\n\n {status === \"ready\" && viewUrl && (\n <>\n <Title>{title}</Title>\n\n <div className=\"w-full max-w-md bg-gray-50 rounded-lg p-4 flex items-start gap-3 text-left\">\n <PenTool className=\"w-5 h-5 shrink-0 mt-0.5 text-gray-500\" />\n <div>\n <p className=\"font-semibold text-gray-900 break-all\">{nodeTitle}</p>\n {formattedDate && (\n <p className=\"text-xs text-gray-500 mt-1\">\n {t(\"signed_document.submitted_on\", \"Soumis le\")} {formattedDate}\n </p>\n )}\n </div>\n </div>\n\n <p className=\"text-sm text-gray-600 whitespace-pre-line\">\n {description}\n </p>\n\n <a\n href={viewUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-primary underline font-medium\"\n >\n {t(\"signed_document.view_link\", \"Consulter le document ↗\")}\n </a>\n\n <p className=\"text-sm text-gray-600 whitespace-pre-line\">\n {downloadHint}\n </p>\n </>\n )}\n\n {status === \"error\" && (\n <p className=\"text-sm text-gray-600 py-8\">\n {t(\n \"signed_document.error\",\n \"Le document n'a pas pu être chargé, mais votre signature est bien enregistrée. Vous pouvez continuer.\",\n )}\n </p>\n )}\n {status === \"declined\" && (\n <p className=\"text-sm text-gray-600 py-8\">\n {t(\"signed_document.declined\", \"Vous avez refusé de signer ce document.\")}\n </p>\n )}\n {status === \"expired\" && (\n <p className=\"text-sm text-gray-600 py-8\">\n {t(\"signed_document.expired\", \"Le lien de signature a expiré.\")}\n </p>\n )}\n </div>\n </MobilePageLayout>\n );\n};\n\nexport default SignedDocumentPreview;\n"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Start.js","sources":["../../../../../src/components/start-flow/Start.tsx"],"sourcesContent":["import { useI18n } from \"../..\";\nimport { SessionData } from \"../../types/session\";\nimport StartIcon from \"../icons/StartIcon\";\nimport Button from \"../ui/Button\";\nimport PageActions from \"../ui/PageActions\";\nimport Subtitle from \"../ui/Subtitle\";\nimport Title from \"../ui/Title\";\nimport MobilePageLayout from \"../ui/MobilePageLayout\";\n\ninterface StartProps {\n setStep: (nubr: number) => void;\n welcomeTitle?: string;\n welcomeSubtitle?: string;\n welcomeDescription?: string;\n welcomeImage?: string;\n session?: SessionData;\n}\n\nconst Start = ({\n setStep,\n welcomeTitle,\n welcomeSubtitle,\n welcomeDescription,\n welcomeImage,\n session,\n}: StartProps) => {\n const { t } = useI18n();\n\n const displayTitle =\n welcomeTitle || t(\"start.welcome_title\", \"Vérifions votre identité\");\n const displaySubtitle =\n welcomeSubtitle ||\n t(\"start.welcome_subtitle\", \"Nous devons vérifier votre identité\");\n const displayDescription =\n welcomeDescription || t(\"start.welcome_description\");\n\n const goOnNextStep = () => {\n setStep(1);\n };\n\n return (\n <MobilePageLayout\n footer={\n <PageActions\n primary={\n <Button onClick={goOnNextStep}>{t(\"start_verification\")}</Button>\n }\n />\n }\n session={session}\n >\n <div className=\"flex flex-col items-center px-4 py-8 md:px-8\">\n <div className=\"w-full max-w-md mx-auto text-center space-y-6 flex flex-col\">\n {/* Icon/Image - shown on top for both mobile and desktop */}\n <div className=\"flex justify-center\">\n {welcomeImage ? (\n <img\n src={welcomeImage}\n alt=\"Welcome image\"\n className=\"max-w-48 w-auto h-auto rounded-lg\"\n />\n ) : (\n <StartIcon className=\"w-48 h-48\" />\n )}\n </div>\n\n {/* Text content */}\n <div className=\"space-y-4\">\n <Title className=\"text-xl md:text-2xl lg:text-3xl\">\n {displayTitle}\n </Title>\n <Subtitle className=\"text-sm md:text-base text-gray-600 leading-relaxed whitespace-pre-line\">\n {displaySubtitle}\n </Subtitle>\n </div>\n\n {/* Terms notice */}\n <div className=\"md:block mt-8\">\n <p className=\"text-xs text-gray-500 leading-relaxed max-w-sm mx-auto whitespace-pre-line\">\n {displayDescription}\n </p>\n </div>\n </div>\n </div>\n </MobilePageLayout>\n );\n};\n\nexport default Start;\n"],"names":["_jsx","_jsxs"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,IAAM,KAAK,GAAG,UAAC,EAOF,EAAA;AANX,IAAA,IAAA,OAAO,GAAA,EAAA,CAAA,OAAA,EACP,YAAY,GAAA,EAAA,CAAA,YAAA,EACZ,eAAe,GAAA,EAAA,CAAA,eAAA,EACf,kBAAkB,wBAAA,EAClB,YAAY,GAAA,EAAA,CAAA,YAAA,EACZ,OAAO,GAAA,EAAA,CAAA,OAAA;AAEC,IAAA,IAAA,CAAC,GAAK,OAAO,EAAE,EAAd;IAET,IAAM,YAAY,GAChB,YAAY,IAAI,CAAC,CAAC,qBAAqB,EAAE,0BAA0B,CAAC;IACtE,IAAM,eAAe,GACnB,eAAe;AACf,QAAA,CAAC,CAAC,wBAAwB,EAAE,qCAAqC,CAAC;IACpE,IAAM,kBAAkB,GACtB,kBAAkB,IAAI,CAAC,CAAC,2BAA2B,CAAC;AAEtD,IAAA,IAAM,YAAY,GAAG,YAAA;QACnB,OAAO,CAAC,CAAC,CAAC;AACZ,IAAA,CAAC;IAED,QACEA,GAAA,CAAC,gBAAgB,EAAA,EACf,MAAM,EACJA,GAAA,CAAC,WAAW,EAAA,EACV,OAAO,EACLA,GAAA,CAAC,MAAM,EAAA,EAAC,OAAO,EAAE,YAAY,EAAA,QAAA,EAAG,CAAC,CAAC,oBAAoB,CAAC,EAAA,CAAU,EAAA,CAEnE,EAEJ,OAAO,EAAE,OAAO,EAAA,QAAA,EAEhBA,aAAK,SAAS,EAAC,8CAA8C,EAAA,QAAA,EAC3DC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,6DAA6D,EAAA,QAAA,EAAA,CAE1ED,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,qBAAqB,EAAA,QAAA,EACjC,YAAY,IACXA,GAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,YAAY,EACjB,GAAG,EAAC,eAAe,EACnB,SAAS,EAAC,mCAAmC,EAAA,CAC7C,KAEFA,GAAA,CAAC,SAAS,EAAA,EAAC,SAAS,EAAC,WAAW,EAAA,CAAG,CACpC,EAAA,CACG,EAGNC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,CACxBD,GAAA,CAAC,KAAK,EAAA,EAAC,SAAS,EAAC,iCAAiC,EAAA,QAAA,EAC/C,YAAY,EAAA,CACP,EACRA,GAAA,CAAC,QAAQ,EAAA,EAAC,SAAS,EAAC,wEAAwE,EAAA,QAAA,EACzF,eAAe,EAAA,CACP,CAAA,EAAA,CACP,EAGNA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,eAAe,EAAA,QAAA,EAC5BA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,4EAA4E,EAAA,QAAA,EACtF,kBAAkB,EAAA,CACjB,EAAA,CACA,CAAA,EAAA,CACF,EAAA,CACF,EAAA,CACW;AAEvB;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorState.js","sources":["../../../../../src/components/states/ErrorState.tsx"],"sourcesContent":["import React from \"react\";\nimport { useI18n } from \"../../hooks/useI18n\";\n\ninterface ErrorStateProps {\n error: string;\n onRetry?: () => void;\n}\n\nconst ErrorState: React.FC<ErrorStateProps> = ({ error, onRetry }) => {\n const { t } = useI18n();\n\n return (\n <div className=\"flex flex-col items-center justify-center h-full text-center px-4\">\n <div className=\"text-red-500 text-4xl mb-4\">⚠️</div>\n <h2 className=\"text-xl font-bold text-red-600 mb-2\">\n {t(\"error_state.loading_error\")}\n </h2>\n <p className=\"text-gray-600 mb-4\">{error}</p>\n <button\n className=\"px-4 py-2 bg-primary text-white rounded hover:bg-primary-dark transition-colors\"\n onClick={onRetry || (() => window.location.reload())}\n >\n {t(\"error_state.retry\")}\n </button>\n </div>\n );\n};\n\nexport default ErrorState;\n"],"names":["_jsxs","_jsx"],"mappings":";;;AAQA,IAAM,UAAU,GAA8B,UAAC,EAAkB,EAAA;QAAhB,KAAK,GAAA,EAAA,CAAA,KAAA,EAAE,OAAO,GAAA,EAAA,CAAA,OAAA;AACrD,IAAA,IAAA,CAAC,GAAK,OAAO,EAAE,EAAd;AAET,IAAA,QACEA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,mEAAmE,EAAA,QAAA,EAAA,CAChFC,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,4BAA4B,EAAA,QAAA,EAAA,cAAA,EAAA,CAAS,EACpDA,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,qCAAqC,EAAA,QAAA,EAChD,CAAC,CAAC,2BAA2B,CAAC,EAAA,CAC5B,EACLA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,oBAAoB,EAAA,QAAA,EAAE,KAAK,EAAA,CAAK,EAC7CA,GAAA,CAAA,QAAA,EAAA,EACE,SAAS,EAAC,iFAAiF,EAC3F,OAAO,EAAE,OAAO,KAAK,YAAA,EAAM,OAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAA,CAAxB,CAAwB,CAAC,EAAA,QAAA,EAEnD,CAAC,CAAC,mBAAmB,CAAC,EAAA,CAChB,CAAA,EAAA,CACL;AAEV;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LoadingState.js","sources":["../../../../../src/components/states/LoadingState.tsx"],"sourcesContent":["import React from \"react\";\nimport { useI18n } from \"../../hooks/useI18n\";\n\ninterface LoadingStateProps {\n message?: string;\n subtitle?: string;\n}\n\nconst LoadingState: React.FC<LoadingStateProps> = ({\n message,\n subtitle,\n}) => {\n const { t } = useI18n();\n\n const displayMessage = message || t(\"loading.session\");\n const displaySubtitle = subtitle || t(\"loading.preparing_verification\");\n\n return (\n <div className=\"flex flex-col items-center justify-center h-full\">\n <div className=\"animate-spin rounded-full h-16 w-16 border-t-3 border-b-3 border-primary mb-4\"></div>\n <p className=\"mt-4 text-gray-600 font-medium text-lg animate-pulse\">\n {displayMessage}\n </p>\n <p className=\"text-gray-400 text-sm mt-2\">{displaySubtitle}</p>\n </div>\n );\n};\n\nexport default LoadingState;\n"],"names":["_jsxs","_jsx"],"mappings":";;;AAQA,IAAM,YAAY,GAAgC,UAAC,EAGlD,EAAA;QAFC,OAAO,GAAA,EAAA,CAAA,OAAA,EACP,QAAQ,GAAA,EAAA,CAAA,QAAA;AAEA,IAAA,IAAA,CAAC,GAAK,OAAO,EAAE,EAAd;IAET,IAAM,cAAc,GAAG,OAAO,IAAI,CAAC,CAAC,iBAAiB,CAAC;IACtD,IAAM,eAAe,GAAG,QAAQ,IAAI,CAAC,CAAC,gCAAgC,CAAC;AAEvE,IAAA,QACEA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,kDAAkD,EAAA,QAAA,EAAA,CAC/DC,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,+EAA+E,EAAA,CAAO,EACrGA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,sDAAsD,EAAA,QAAA,EAChE,cAAc,EAAA,CACb,EACJA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,4BAA4B,EAAA,QAAA,EAAE,eAAe,EAAA,CAAK,CAAA,EAAA,CAC3D;AAEV;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NoSessionIdState.js","sources":["../../../../../src/components/states/NoSessionIdState.tsx"],"sourcesContent":["import React from \"react\";\n\nconst NoSessionIdState: React.FC = () => {\n return (\n <div className=\"flex flex-col items-center justify-center h-screen\">\n <h1 className=\"text-2xl font-bold\">Session ID is required</h1>\n </div>\n );\n};\n\nexport default NoSessionIdState;\n"],"names":["_jsx"],"mappings":";;AAEA,IAAM,gBAAgB,GAAa,YAAA;AACjC,IAAA,QACEA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,oDAAoD,EAAA,QAAA,EACjEA,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,oBAAoB,EAAA,QAAA,EAAA,wBAAA,EAAA,CAA4B,EAAA,CAC1D;AAEV;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ComplementaryMandateNodeHandler.js","sources":["../../../../../src/components/template/ComplementaryMandateNodeHandler.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { useI18n } from '../../hooks/useI18n';\nimport { checkComplementaryMandate } from '../../services/sessionService';\nimport type { ComplementaryMandateOutcome } from '../../types/session';\nimport LoadingState from '../states/LoadingState';\nimport Button from '../ui/Button';\n\nexport default function ComplementaryMandateNodeHandler({ sessionId, nodeId, onOutcome }: { sessionId: string; nodeId: string; onOutcome: (outcome: ComplementaryMandateOutcome) => void }) {\n const { t } = useI18n();\n const [error, setError] = useState(false);\n const [attempt, setAttempt] = useState(0);\n const callback = useRef(onOutcome);\n callback.current = onOutcome;\n useEffect(() => {\n let active = true;\n setError(false);\n checkComplementaryMandate(sessionId, nodeId).then(({ outcome }) => {\n if (active) callback.current(outcome);\n }).catch(() => { if (active) setError(true); });\n return () => { active = false; };\n }, [sessionId, nodeId, attempt]);\n if (!error) return <LoadingState message={t('complementary_mandate.loading')} />;\n return <div className=\"flex flex-col items-center gap-4 p-6\">\n <p role=\"alert\">{t('complementary_mandate.error')}</p>\n <Button onClick={() => setAttempt(value => value + 1)}>{t('complementary_mandate.retry')}</Button>\n </div>;\n}\n"],"names":["_jsx","_jsxs"],"mappings":";;;;;;;AAOc,SAAU,+BAA+B,CAAC,EAAkI,EAAA;AAAhI,IAAA,IAAA,SAAS,eAAA,EAAE,MAAM,GAAA,EAAA,CAAA,MAAA,EAAE,SAAS,GAAA,EAAA,CAAA,SAAA;AAC5E,IAAA,IAAA,CAAC,GAAK,OAAO,EAAE,EAAd;IACH,IAAA,EAAA,GAAoB,QAAQ,CAAC,KAAK,CAAC,EAAlC,KAAK,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,CAAA,CAAmB;IACnC,IAAA,EAAA,GAAwB,QAAQ,CAAC,CAAC,CAAC,EAAlC,OAAO,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,UAAU,GAAA,EAAA,CAAA,CAAA,CAAe;AACzC,IAAA,IAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAClC,IAAA,QAAQ,CAAC,OAAO,GAAG,SAAS;AAC5B,IAAA,SAAS,CAAC,YAAA;QACR,IAAI,MAAM,GAAG,IAAI;QACjB,QAAQ,CAAC,KAAK,CAAC;QACf,yBAAyB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,UAAC,EAAW,EAAA;AAAT,YAAA,IAAA,OAAO,GAAA,EAAA,CAAA,OAAA;AAC1D,YAAA,IAAI,MAAM;AAAE,gBAAA,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;AACvC,QAAA,CAAC,CAAC,CAAC,KAAK,CAAC,YAAA,EAAQ,IAAI,MAAM;AAAE,YAAA,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,QAAA,OAAO,cAAQ,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC;IAClC,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAChC,IAAA,IAAI,CAAC,KAAK;QAAE,OAAOA,GAAA,CAAC,YAAY,EAAA,EAAC,OAAO,EAAE,CAAC,CAAC,+BAA+B,CAAC,EAAA,CAAI;IAChF,OAAOC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,sCAAsC,aAC1DD,GAAA,CAAA,GAAA,EAAA,EAAG,IAAI,EAAC,OAAO,EAAA,QAAA,EAAE,CAAC,CAAC,6BAA6B,CAAC,EAAA,CAAK,EACtDA,IAAC,MAAM,EAAA,EAAC,OAAO,EAAE,YAAA,EAAM,OAAA,UAAU,CAAC,UAAA,KAAK,EAAA,EAAI,OAAA,KAAK,GAAG,CAAC,CAAA,CAAT,CAAS,CAAC,CAAA,CAA9B,CAA8B,YAAG,CAAC,CAAC,6BAA6B,CAAC,EAAA,CAAU,IAC9F;AACR;;;;"}
|