datakeen-session-react 1.1.140-rc.38 → 1.1.140-rc.39
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/dist/cjs/components/document-collection/DocumentError.js +2 -0
- package/dist/cjs/components/document-collection/DocumentError.js.map +1 -1
- package/dist/cjs/components/session/DocumentCheck.js +2 -2
- package/dist/cjs/components/session/DocumentCheck.js.map +1 -1
- package/dist/cjs/components/signature-electronic/DocusealSignature.js +2 -1
- package/dist/cjs/components/signature-electronic/DocusealSignature.js.map +1 -1
- package/dist/cjs/components/signature-electronic/SignatureElectronic.js +2 -1
- package/dist/cjs/components/signature-electronic/SignatureElectronic.js.map +1 -1
- package/dist/cjs/components/signature-electronic/SignatureElectronicIntroduction.js +2 -1
- package/dist/cjs/components/signature-electronic/SignatureElectronicIntroduction.js.map +1 -1
- package/dist/cjs/components/start-flow/CGU.js +2 -1
- package/dist/cjs/components/start-flow/CGU.js.map +1 -1
- package/dist/cjs/components/start-flow/Start.js +2 -1
- package/dist/cjs/components/start-flow/Start.js.map +1 -1
- package/dist/cjs/components/template/ExternalVerificationNodeHandler.js +2 -1
- package/dist/cjs/components/template/ExternalVerificationNodeHandler.js.map +1 -1
- package/dist/cjs/i18n/en.json.js +9 -1
- package/dist/cjs/i18n/en.json.js.map +1 -1
- package/dist/cjs/i18n/fr.json.js +9 -1
- package/dist/cjs/i18n/fr.json.js.map +1 -1
- package/dist/esm/components/document-collection/DocumentError.js +2 -0
- package/dist/esm/components/document-collection/DocumentError.js.map +1 -1
- package/dist/esm/components/session/DocumentCheck.js +2 -2
- package/dist/esm/components/session/DocumentCheck.js.map +1 -1
- package/dist/esm/components/signature-electronic/DocusealSignature.js +2 -1
- package/dist/esm/components/signature-electronic/DocusealSignature.js.map +1 -1
- package/dist/esm/components/signature-electronic/SignatureElectronic.js +2 -1
- package/dist/esm/components/signature-electronic/SignatureElectronic.js.map +1 -1
- package/dist/esm/components/signature-electronic/SignatureElectronicIntroduction.js +2 -1
- package/dist/esm/components/signature-electronic/SignatureElectronicIntroduction.js.map +1 -1
- package/dist/esm/components/start-flow/CGU.js +2 -1
- package/dist/esm/components/start-flow/CGU.js.map +1 -1
- package/dist/esm/components/start-flow/Start.js +2 -1
- package/dist/esm/components/start-flow/Start.js.map +1 -1
- package/dist/esm/components/template/ExternalVerificationNodeHandler.js +2 -1
- package/dist/esm/components/template/ExternalVerificationNodeHandler.js.map +1 -1
- package/dist/esm/i18n/en.json.js +9 -1
- package/dist/esm/i18n/en.json.js.map +1 -1
- package/dist/esm/i18n/fr.json.js +9 -1
- package/dist/esm/i18n/fr.json.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
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 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();\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={\n <Button variant=\"secondary\" onClick={handleBackClick} type=\"button\">\n {t(\"buttons.back\", \"Retour\")}\n </Button>\n }\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":["useTranslation","_jsx","MobilePageLayout","PageActions","Button","_jsxs","Title","Subtitle","ElectronicIcon"],"mappings":"
|
|
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={\n <Button variant=\"secondary\" onClick={handleBackClick} type=\"button\">\n {t(\"buttons.back\", \"Retour\")}\n </Button>\n }\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":["useTranslation","sdkI18n","_jsx","MobilePageLayout","PageActions","Button","_jsxs","Title","Subtitle","ElectronicIcon"],"mappings":"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"}
|
|
@@ -35,10 +35,11 @@ require('../jdi/JDIProcessing.js');
|
|
|
35
35
|
require('../../services/cameraService.js');
|
|
36
36
|
require('../../services/documentDetectionService.js');
|
|
37
37
|
require('lucide-react');
|
|
38
|
-
require('react-i18next');
|
|
39
38
|
require('../document-collection/DocumentProcessing.js');
|
|
40
39
|
require('../../constants/userInputForm.js');
|
|
41
40
|
require('../session/UserInputForm/CustomFormFields.js');
|
|
41
|
+
require('react-i18next');
|
|
42
|
+
require('../../i18n/index.js');
|
|
42
43
|
require('@docuseal/react');
|
|
43
44
|
require('../../services/professionalImageQuality.js');
|
|
44
45
|
require('../../providers/I18nProvider.js');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CGU.js","sources":["../../../../../src/components/start-flow/CGU.tsx"],"sourcesContent":["import Body from \"../ui/Body\";\nimport Title from \"../ui/Title\";\nimport { useState } from \"react\";\nimport { updateSessionStatus } from \"../../services/sessionService\";\n\n// For checkbox\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { CheckIcon } from \"@radix-ui/react-icons\";\nimport Button from \"../ui/Button\";\nimport PageActions from \"../ui/PageActions\";\nimport { useI18n } from \"../..\";\nimport LanguageSelector from \"../ui/LanguageSelector\";\nimport MobilePageLayout from \"../ui/MobilePageLayout\";\nimport { SessionData } from \"../../types/session\";\n\ninterface CGUProps {\n setStep: (nubr: number) => void;\n sessionId?: string;\n showQRCodeInstructions: boolean;\n languages?: string[];\n session?: SessionData;\n onBack?: () => void;\n}\n\nconst CGU = ({\n setStep,\n sessionId,\n showQRCodeInstructions,\n languages,\n session,\n onBack,\n}: CGUProps) => {\n const { t, setLanguage } = useI18n();\n const [selectedLanguage, setSelectedLanguage] = useState(\n languages ? languages[0] : \"fr\"\n );\n const [checked, setChecked] = useState(false);\n const [error, setError] = useState(false);\n const [submitError, setSubmitError] = useState<string | null>(null);\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const handleCheckboxChange = (value: boolean) => {\n setChecked(value);\n setError(false);\n setSubmitError(null);\n };\n\n const goOnNextStep = async () => {\n if (!checked) {\n setError(true);\n return;\n }\n\n const nextStep = showQRCodeInstructions ? 0.5 : 1;\n\n if (!sessionId) {\n setStep(nextStep);\n return;\n }\n\n setIsSubmitting(true);\n try {\n await updateSessionStatus(sessionId, \"started\");\n setStep(nextStep);\n } catch (statusError) {\n console.error(t(\"CGU.error.console_update_status\"), statusError);\n setSubmitError(t(\"CGU.error.general\"));\n } finally {\n setIsSubmitting(false);\n }\n };\n\n const handleLanguageChange = (langId: string) => {\n const lang = languages?.find((l) => l === langId);\n if (lang) {\n setLanguage(lang);\n setSelectedLanguage(lang);\n }\n };\n\n return (\n <MobilePageLayout\n session={session ?? undefined}\n footer={\n <div className=\"w-full space-y-4\">\n {/* Error message */}\n {(error || submitError) && (\n <div className=\"bg-red-50 border border-red-200 rounded-lg p-3\">\n <Body className=\"text-red-600 text-sm text-center\">\n {submitError ? submitError : t(\"CGU.error.required\")}\n </Body>\n </div>\n )}\n\n {/* Consent checkbox */}\n <div className=\"flex items-start gap-3 p-3 bg-gray-50 rounded-lg\">\n <CheckboxPrimitive.Root\n id=\"checkbox\"\n checked={checked}\n onCheckedChange={(value) => handleCheckboxChange(!!value)}\n className={`mt-1 h-5 w-5 shrink-0 rounded border bg-white transition-colors\n data-[state=checked]:bg-[var(--dk-btn-bg)] data-[state=checked]:border-[var(--dk-btn-bg)]\n ${error\n ? \"border-red-500\"\n : \"border-gray-300 hover:border-gray-400\"\n }\n `}\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-white\">\n <CheckIcon className=\"h-4 w-4\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n\n <LabelPrimitive.Root htmlFor=\"checkbox\" className=\"cursor-pointer\">\n <Body\n className={`text-left text-sm leading-relaxed ${error ? \"text-red-600\" : \"text-gray-700\"\n }`}\n >\n {t(\"CGU.checkbox_text\")}\n </Body>\n </LabelPrimitive.Root>\n </div>\n\n {/* Buttons */}\n <PageActions\n primary={\n <Button\n onClick={goOnNextStep}\n disabled={!checked || isSubmitting}\n >\n {isSubmitting\n ? t(\"CGU.button.loading\")\n : t(\"CGU.button.continue\")}\n </Button>\n }\n secondary={\n onBack ? (\n <Button variant=\"secondary\" onClick={onBack}>\n {t(\"jdi.country_selection.back\")}\n </Button>\n ) : undefined\n }\n />\n </div>\n }\n >\n <div className=\"px-4 py-8 md:px-8 flex flex-col\">\n <div className=\"w-full max-w-2xl mx-auto space-y-6\">\n <div className=\"text-center justify-center items-center\">\n <Title className=\"text-xl md:text-2xl lg:text-3xl mb-6\">\n {t(\"CGU.terms_of_use\")}\n </Title>\n\n {/* Language selector */}\n {languages && languages.length > 1 && (\n <div className=\"flex justify-center items-center mb-6\">\n <LanguageSelector\n className=\"w-64 mx-auto\"\n languages={languages}\n />\n </div>\n )}\n </div>\n\n {/* Terms content */}\n <div className=\"bg-gray-50 rounded-lg p-4 md:p-6\">\n <Body className=\"text-left text-sm md:text-base leading-relaxed space-y-4\">\n <p>{t(\"CGU.title\")}</p>\n <p>{t(\"CGU.description\")}</p>\n <p>\n {t(\"CGU.description2_before\")}{\" \"}\n <a\n href={t(\"CGU.privacy_url\")}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"underline text-blue-600 hover:text-blue-800\"\n >\n {t(\"CGU.privacy_link_label\")}\n </a>\n {t(\"CGU.description2_after\")}\n </p>\n <p>\n {t(\"CGU.by_proceeding_before\")}{\" \"}\n <a\n href={t(\"CGU.cgu_url\")}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"underline text-blue-600 hover:text-blue-800\"\n >\n {t(\"CGU.cgu_link_label\")}\n </a>\n {t(\"CGU.by_proceeding_after\")}\n </p>\n </Body>\n </div>\n </div>\n </div>\n </MobilePageLayout>\n );\n};\n\nexport default CGU;\n"],"names":["useI18n","useState","__awaiter","updateSessionStatus","_jsx","MobilePageLayout","_jsxs","Body","CheckboxPrimitive","CheckIcon","LabelPrimitive","PageActions","Button","Title","LanguageSelector"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CGU.js","sources":["../../../../../src/components/start-flow/CGU.tsx"],"sourcesContent":["import Body from \"../ui/Body\";\nimport Title from \"../ui/Title\";\nimport { useState } from \"react\";\nimport { updateSessionStatus } from \"../../services/sessionService\";\n\n// For checkbox\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { CheckIcon } from \"@radix-ui/react-icons\";\nimport Button from \"../ui/Button\";\nimport PageActions from \"../ui/PageActions\";\nimport { useI18n } from \"../..\";\nimport LanguageSelector from \"../ui/LanguageSelector\";\nimport MobilePageLayout from \"../ui/MobilePageLayout\";\nimport { SessionData } from \"../../types/session\";\n\ninterface CGUProps {\n setStep: (nubr: number) => void;\n sessionId?: string;\n showQRCodeInstructions: boolean;\n languages?: string[];\n session?: SessionData;\n onBack?: () => void;\n}\n\nconst CGU = ({\n setStep,\n sessionId,\n showQRCodeInstructions,\n languages,\n session,\n onBack,\n}: CGUProps) => {\n const { t, setLanguage } = useI18n();\n const [selectedLanguage, setSelectedLanguage] = useState(\n languages ? languages[0] : \"fr\"\n );\n const [checked, setChecked] = useState(false);\n const [error, setError] = useState(false);\n const [submitError, setSubmitError] = useState<string | null>(null);\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const handleCheckboxChange = (value: boolean) => {\n setChecked(value);\n setError(false);\n setSubmitError(null);\n };\n\n const goOnNextStep = async () => {\n if (!checked) {\n setError(true);\n return;\n }\n\n const nextStep = showQRCodeInstructions ? 0.5 : 1;\n\n if (!sessionId) {\n setStep(nextStep);\n return;\n }\n\n setIsSubmitting(true);\n try {\n await updateSessionStatus(sessionId, \"started\");\n setStep(nextStep);\n } catch (statusError) {\n console.error(t(\"CGU.error.console_update_status\"), statusError);\n setSubmitError(t(\"CGU.error.general\"));\n } finally {\n setIsSubmitting(false);\n }\n };\n\n const handleLanguageChange = (langId: string) => {\n const lang = languages?.find((l) => l === langId);\n if (lang) {\n setLanguage(lang);\n setSelectedLanguage(lang);\n }\n };\n\n return (\n <MobilePageLayout\n session={session ?? undefined}\n footer={\n <div className=\"w-full space-y-4\">\n {/* Error message */}\n {(error || submitError) && (\n <div className=\"bg-red-50 border border-red-200 rounded-lg p-3\">\n <Body className=\"text-red-600 text-sm text-center\">\n {submitError ? submitError : t(\"CGU.error.required\")}\n </Body>\n </div>\n )}\n\n {/* Consent checkbox */}\n <div className=\"flex items-start gap-3 p-3 bg-gray-50 rounded-lg\">\n <CheckboxPrimitive.Root\n id=\"checkbox\"\n checked={checked}\n onCheckedChange={(value) => handleCheckboxChange(!!value)}\n className={`mt-1 h-5 w-5 shrink-0 rounded border bg-white transition-colors\n data-[state=checked]:bg-[var(--dk-btn-bg)] data-[state=checked]:border-[var(--dk-btn-bg)]\n ${error\n ? \"border-red-500\"\n : \"border-gray-300 hover:border-gray-400\"\n }\n `}\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-white\">\n <CheckIcon className=\"h-4 w-4\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n\n <LabelPrimitive.Root htmlFor=\"checkbox\" className=\"cursor-pointer\">\n <Body\n className={`text-left text-sm leading-relaxed ${error ? \"text-red-600\" : \"text-gray-700\"\n }`}\n >\n {t(\"CGU.checkbox_text\")}\n </Body>\n </LabelPrimitive.Root>\n </div>\n\n {/* Buttons */}\n <PageActions\n primary={\n <Button\n onClick={goOnNextStep}\n disabled={!checked || isSubmitting}\n >\n {isSubmitting\n ? t(\"CGU.button.loading\")\n : t(\"CGU.button.continue\")}\n </Button>\n }\n secondary={\n onBack ? (\n <Button variant=\"secondary\" onClick={onBack}>\n {t(\"jdi.country_selection.back\")}\n </Button>\n ) : undefined\n }\n />\n </div>\n }\n >\n <div className=\"px-4 py-8 md:px-8 flex flex-col\">\n <div className=\"w-full max-w-2xl mx-auto space-y-6\">\n <div className=\"text-center justify-center items-center\">\n <Title className=\"text-xl md:text-2xl lg:text-3xl mb-6\">\n {t(\"CGU.terms_of_use\")}\n </Title>\n\n {/* Language selector */}\n {languages && languages.length > 1 && (\n <div className=\"flex justify-center items-center mb-6\">\n <LanguageSelector\n className=\"w-64 mx-auto\"\n languages={languages}\n />\n </div>\n )}\n </div>\n\n {/* Terms content */}\n <div className=\"bg-gray-50 rounded-lg p-4 md:p-6\">\n <Body className=\"text-left text-sm md:text-base leading-relaxed space-y-4\">\n <p>{t(\"CGU.title\")}</p>\n <p>{t(\"CGU.description\")}</p>\n <p>\n {t(\"CGU.description2_before\")}{\" \"}\n <a\n href={t(\"CGU.privacy_url\")}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"underline text-blue-600 hover:text-blue-800\"\n >\n {t(\"CGU.privacy_link_label\")}\n </a>\n {t(\"CGU.description2_after\")}\n </p>\n <p>\n {t(\"CGU.by_proceeding_before\")}{\" \"}\n <a\n href={t(\"CGU.cgu_url\")}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"underline text-blue-600 hover:text-blue-800\"\n >\n {t(\"CGU.cgu_link_label\")}\n </a>\n {t(\"CGU.by_proceeding_after\")}\n </p>\n </Body>\n </div>\n </div>\n </div>\n </MobilePageLayout>\n );\n};\n\nexport default CGU;\n"],"names":["useI18n","useState","__awaiter","updateSessionStatus","_jsx","MobilePageLayout","_jsxs","Body","CheckboxPrimitive","CheckIcon","LabelPrimitive","PageActions","Button","Title","LanguageSelector"],"mappings":"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"}
|
|
@@ -35,10 +35,11 @@ require('../jdi/JDIProcessing.js');
|
|
|
35
35
|
require('../../services/cameraService.js');
|
|
36
36
|
require('../../services/documentDetectionService.js');
|
|
37
37
|
require('lucide-react');
|
|
38
|
-
require('react-i18next');
|
|
39
38
|
require('../document-collection/DocumentProcessing.js');
|
|
40
39
|
require('../../constants/userInputForm.js');
|
|
41
40
|
require('../session/UserInputForm/CustomFormFields.js');
|
|
41
|
+
require('react-i18next');
|
|
42
|
+
require('../../i18n/index.js');
|
|
42
43
|
require('@docuseal/react');
|
|
43
44
|
require('../../services/professionalImageQuality.js');
|
|
44
45
|
require('../../providers/I18nProvider.js');
|
|
@@ -1 +1 @@
|
|
|
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 goOnCGU = () => {\n setStep(1);\n };\n\n return (\n <MobilePageLayout\n footer={\n <PageActions\n primary={\n <Button onClick={goOnCGU}>{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":["useI18n","_jsx","MobilePageLayout","PageActions","Button","_jsxs","StartIcon","Title","Subtitle"],"mappings":"
|
|
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 goOnCGU = () => {\n setStep(1);\n };\n\n return (\n <MobilePageLayout\n footer={\n <PageActions\n primary={\n <Button onClick={goOnCGU}>{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":["useI18n","_jsx","MobilePageLayout","PageActions","Button","_jsxs","StartIcon","Title","Subtitle"],"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,GAAKA,eAAO,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,OAAO,GAAG,YAAA;QACd,OAAO,CAAC,CAAC,CAAC;AACZ,IAAA,CAAC;IAED,QACEC,cAAA,CAACC,wBAAgB,EAAA,EACf,MAAM,EACJD,cAAA,CAACE,mBAAW,EAAA,EACV,OAAO,EACLF,cAAA,CAACG,cAAM,EAAA,EAAC,OAAO,EAAE,OAAO,EAAA,QAAA,EAAG,CAAC,CAAC,oBAAoB,CAAC,EAAA,CAAU,EAAA,CAE9D,EAEJ,OAAO,EAAE,OAAO,EAAA,QAAA,EAEhBH,wBAAK,SAAS,EAAC,8CAA8C,EAAA,QAAA,EAC3DI,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,6DAA6D,EAAA,QAAA,EAAA,CAE1EJ,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,qBAAqB,EAAA,QAAA,EACjC,YAAY,IACXA,cAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,YAAY,EACjB,GAAG,EAAC,eAAe,EACnB,SAAS,EAAC,mCAAmC,EAAA,CAC7C,KAEFA,cAAA,CAACK,iBAAS,EAAA,EAAC,SAAS,EAAC,WAAW,EAAA,CAAG,CACpC,EAAA,CACG,EAGND,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,CACxBJ,cAAA,CAACM,aAAK,EAAA,EAAC,SAAS,EAAC,iCAAiC,EAAA,QAAA,EAC/C,YAAY,EAAA,CACP,EACRN,cAAA,CAACO,gBAAQ,EAAA,EAAC,SAAS,EAAC,wEAAwE,EAAA,QAAA,EACzF,eAAe,EAAA,CACP,CAAA,EAAA,CACP,EAGNP,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,eAAe,EAAA,QAAA,EAC5BA,cAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,4EAA4E,EAAA,QAAA,EACtF,kBAAkB,EAAA,CACjB,EAAA,CACA,CAAA,EAAA,CACF,EAAA,CACF,EAAA,CACW;AAEvB;;;;"}
|
|
@@ -6,6 +6,7 @@ var tslib_es6 = require('../../node_modules/tslib/tslib.es6.js');
|
|
|
6
6
|
var jsxRuntime = require('react/jsx-runtime');
|
|
7
7
|
var React = require('react');
|
|
8
8
|
var reactI18next = require('react-i18next');
|
|
9
|
+
var index = require('../../i18n/index.js');
|
|
9
10
|
var lucideReact = require('lucide-react');
|
|
10
11
|
var api = require('../../services/api.js');
|
|
11
12
|
|
|
@@ -33,7 +34,7 @@ var maskReferenceValue = function (value) {
|
|
|
33
34
|
};
|
|
34
35
|
var ExternalVerificationNodeHandler = function (_a) {
|
|
35
36
|
var node = _a.node, session = _a.session, userInput = _a.userInput, setUserInput = _a.setUserInput, onNext = _a.onNext;
|
|
36
|
-
var t = reactI18next.useTranslation().t;
|
|
37
|
+
var t = reactI18next.useTranslation('translation', { i18n: index.default }).t;
|
|
37
38
|
React.useEffect(function () {
|
|
38
39
|
var performVerification = function () { return tslib_es6.__awaiter(void 0, void 0, void 0, function () {
|
|
39
40
|
var verificationResult, apiType, referenceField, referenceValueMasked, nodeData, referenceNodeId, referenceVariable, nodeInput, userInputFlat, lookupKeys, referenceValue, _i, lookupKeys_1, key, candidateValue, allCustomFields, _a, _b, _c, key, value, stringValue, response, result, apiErr_1, apiResult, err_1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExternalVerificationNodeHandler.js","sources":["../../../../../src/components/template/ExternalVerificationNodeHandler.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Loader2 } from 'lucide-react';\nimport { apiService } from '../../services/api';\nimport type { SessionData, SessionTemplateNode } from '../../types/session';\nimport type { UserInput } from '../../types/userInput';\n\ntype VerificationStatus =\n | 'ok'\n | 'not_found'\n | 'invalid_input'\n | 'config_error'\n | 'external_error';\n\ninterface VerificationResponsePayload {\n isVerified: boolean;\n status: VerificationStatus;\n message?: string;\n errorCode?: string;\n}\n\ninterface ExternalVerificationNodeHandlerProps {\n node: SessionTemplateNode;\n session: SessionData;\n userInput: UserInput;\n setUserInput: React.Dispatch<React.SetStateAction<UserInput>>;\n onNext: () => void;\n onPrevious: () => void;\n}\n\nconst FIELD_ALIASES: Record<'siren' | 'siret', string[]> = {\n siren: ['siren', 'siren_number', 'company_siren', 'legal_siren', 'num_siren'],\n siret: ['siret', 'siret_number', 'company_siret', 'legal_siret', 'num_siret'],\n};\n\nconst normalizeReferenceField = (field?: string): 'siren' | 'siret' | undefined => {\n if (!field) return undefined;\n const normalized = field.toLowerCase().replace(/[\\s_.-]/g, '');\n if (normalized.includes('siret')) return 'siret';\n if (normalized.includes('siren')) return 'siren';\n return undefined;\n};\n\nconst maskReferenceValue = (value: string): string => {\n const clean = value.replace(/\\s+/g, '');\n if (!clean) return '';\n if (clean.length <= 4) return '****';\n return `${'*'.repeat(clean.length - 4)}${clean.slice(-4)}`;\n};\n\nconst ExternalVerificationNodeHandler: React.FC<ExternalVerificationNodeHandlerProps> = ({\n node,\n session,\n userInput,\n setUserInput,\n onNext,\n}) => {\n const { t } = useTranslation();\n\n useEffect(() => {\n const performVerification = async () => {\n let verificationResult: VerificationResponsePayload = {\n isVerified: false,\n status: 'external_error',\n message: 'Verification did not run.',\n };\n let apiType = (node as any).targetApi || 'INSEE';\n let referenceField: 'siren' | 'siret' | undefined;\n let referenceValueMasked = '';\n console.log(\"Api Type :\", apiType);\n try {\n if (!session?.id) {\n throw new Error('Session ID is missing');\n }\n\n const nodeData = node as any;\n apiType = String(nodeData.targetApi || 'INSEE');\n const referenceNodeId = String(nodeData.referenceNodeId || '');\n const referenceVariable = String(nodeData.referenceVariable || '');\n referenceField = normalizeReferenceField(\n String(nodeData.referenceField || referenceVariable || ''),\n );\n\n if (!referenceNodeId || !referenceField) {\n verificationResult = {\n isVerified: false,\n status: 'config_error',\n message: 'External verification node is missing reference configuration.',\n errorCode: 'MISSING_REFERENCE_CONFIG',\n };\n } else {\n const nodeInput = (userInput as any)[referenceNodeId];\n const userInputFlat = userInput as any;\n const lookupKeys = Array.from(\n new Set([\n referenceVariable,\n referenceField,\n ...FIELD_ALIASES[referenceField],\n ].filter(Boolean)),\n );\n\n let referenceValue: string | undefined;\n for (const key of lookupKeys) {\n const candidateValue =\n nodeInput?.[key] ??\n nodeInput?.customFormData?.[key] ??\n userInputFlat?.customFormData?.[key] ??\n userInputFlat?.[key];\n\n if (candidateValue !== undefined && candidateValue !== null && `${candidateValue}`.trim() !== '') {\n referenceValue = String(candidateValue);\n break;\n }\n }\n\n // Fallback: Smart lookup if no value found by key\n if (!referenceValue) {\n const allCustomFields = {\n ...(userInputFlat?.customFormData || {}),\n ...(nodeInput?.customFormData || {}),\n ...(nodeInput || {}),\n };\n\n for (const [key, value] of Object.entries(allCustomFields)) {\n if (typeof value !== 'string' && typeof value !== 'number') continue;\n const stringValue = String(value).replace(/\\s+/g, '');\n\n // 9-digit SIREN pattern\n if (referenceField === 'siren' && /^\\d{9}$/.test(stringValue)) {\n referenceValue = stringValue;\n break;\n }\n // 14-digit SIRET pattern\n if (referenceField === 'siret' && /^\\d{14}$/.test(stringValue)) {\n referenceValue = stringValue;\n break;\n }\n }\n }\n\n if (!referenceValue) {\n verificationResult = {\n isVerified: false,\n status: 'invalid_input',\n message: 'No SIREN/SIRET value found in source node data.',\n errorCode: 'REFERENCE_VALUE_NOT_FOUND',\n };\n } else {\n referenceValueMasked = maskReferenceValue(referenceValue);\n\n try {\n const response = await apiService.post(\n `/session/sdk/${session.id}/verify-external/${node.id}`,\n { apiType, referenceValue, referenceField },\n );\n const result = response.data?.data as VerificationResponsePayload | undefined;\n if (result && typeof result.isVerified === 'boolean') {\n verificationResult = result;\n }\n } catch (apiErr: any) {\n const apiResult = apiErr?.response?.data?.data as VerificationResponsePayload | undefined;\n if (apiResult && typeof apiResult.isVerified === 'boolean') {\n verificationResult = apiResult;\n } else {\n verificationResult = {\n isVerified: false,\n status: 'external_error',\n message: 'External verification request failed.',\n errorCode: 'REQUEST_FAILED',\n };\n }\n }\n }\n }\n } catch (err) {\n verificationResult = {\n isVerified: false,\n status: 'external_error',\n message: 'Unexpected error during verification.',\n errorCode: 'UNEXPECTED_ERROR',\n };\n console.warn('[ExternalVerificationNodeHandler] Unexpected error:', err);\n }\n\n setUserInput((prev) => ({\n ...prev,\n [node.id]: {\n isVerified: verificationResult.isVerified,\n apiType,\n referenceField,\n referenceValueMasked,\n verifiedAt: new Date().toISOString(),\n status: verificationResult.status,\n errorCode: verificationResult.errorCode,\n message: verificationResult.message,\n hasError: verificationResult.status !== 'ok' && verificationResult.status !== 'not_found',\n },\n } as any));\n\n onNext();\n };\n\n performVerification();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <div className=\"flex min-h-[300px] flex-col items-center justify-center space-y-4 p-6 text-center\">\n <Loader2 className=\"h-12 w-12 animate-spin text-[#1c2c5c]\" />\n <h3 className=\"text-xl font-semibold text-gray-900\">\n {t('verification_node.verifying_title', 'Vérification en cours...')}\n </h3>\n <p className=\"text-gray-500\">\n {t('verification_node.verifying_desc', 'Nous interrogeons la base de données.')}\n </p>\n </div>\n );\n};\n\nexport default ExternalVerificationNodeHandler;\n"],"names":["useTranslation","useEffect","__awaiter","__spreadArray","__assign","apiService","_jsxs","_jsx","Loader2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ExternalVerificationNodeHandler.js","sources":["../../../../../src/components/template/ExternalVerificationNodeHandler.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport sdkI18n from '../../i18n';\nimport { Loader2 } from 'lucide-react';\nimport { apiService } from '../../services/api';\nimport type { SessionData, SessionTemplateNode } from '../../types/session';\nimport type { UserInput } from '../../types/userInput';\n\ntype VerificationStatus =\n | 'ok'\n | 'not_found'\n | 'invalid_input'\n | 'config_error'\n | 'external_error';\n\ninterface VerificationResponsePayload {\n isVerified: boolean;\n status: VerificationStatus;\n message?: string;\n errorCode?: string;\n}\n\ninterface ExternalVerificationNodeHandlerProps {\n node: SessionTemplateNode;\n session: SessionData;\n userInput: UserInput;\n setUserInput: React.Dispatch<React.SetStateAction<UserInput>>;\n onNext: () => void;\n onPrevious: () => void;\n}\n\nconst FIELD_ALIASES: Record<'siren' | 'siret', string[]> = {\n siren: ['siren', 'siren_number', 'company_siren', 'legal_siren', 'num_siren'],\n siret: ['siret', 'siret_number', 'company_siret', 'legal_siret', 'num_siret'],\n};\n\nconst normalizeReferenceField = (field?: string): 'siren' | 'siret' | undefined => {\n if (!field) return undefined;\n const normalized = field.toLowerCase().replace(/[\\s_.-]/g, '');\n if (normalized.includes('siret')) return 'siret';\n if (normalized.includes('siren')) return 'siren';\n return undefined;\n};\n\nconst maskReferenceValue = (value: string): string => {\n const clean = value.replace(/\\s+/g, '');\n if (!clean) return '';\n if (clean.length <= 4) return '****';\n return `${'*'.repeat(clean.length - 4)}${clean.slice(-4)}`;\n};\n\nconst ExternalVerificationNodeHandler: React.FC<ExternalVerificationNodeHandlerProps> = ({\n node,\n session,\n userInput,\n setUserInput,\n onNext,\n}) => {\n const { t } = useTranslation('translation', { i18n: sdkI18n });\n\n useEffect(() => {\n const performVerification = async () => {\n let verificationResult: VerificationResponsePayload = {\n isVerified: false,\n status: 'external_error',\n message: 'Verification did not run.',\n };\n let apiType = (node as any).targetApi || 'INSEE';\n let referenceField: 'siren' | 'siret' | undefined;\n let referenceValueMasked = '';\n console.log(\"Api Type :\", apiType);\n try {\n if (!session?.id) {\n throw new Error('Session ID is missing');\n }\n\n const nodeData = node as any;\n apiType = String(nodeData.targetApi || 'INSEE');\n const referenceNodeId = String(nodeData.referenceNodeId || '');\n const referenceVariable = String(nodeData.referenceVariable || '');\n referenceField = normalizeReferenceField(\n String(nodeData.referenceField || referenceVariable || ''),\n );\n\n if (!referenceNodeId || !referenceField) {\n verificationResult = {\n isVerified: false,\n status: 'config_error',\n message: 'External verification node is missing reference configuration.',\n errorCode: 'MISSING_REFERENCE_CONFIG',\n };\n } else {\n const nodeInput = (userInput as any)[referenceNodeId];\n const userInputFlat = userInput as any;\n const lookupKeys = Array.from(\n new Set([\n referenceVariable,\n referenceField,\n ...FIELD_ALIASES[referenceField],\n ].filter(Boolean)),\n );\n\n let referenceValue: string | undefined;\n for (const key of lookupKeys) {\n const candidateValue =\n nodeInput?.[key] ??\n nodeInput?.customFormData?.[key] ??\n userInputFlat?.customFormData?.[key] ??\n userInputFlat?.[key];\n\n if (candidateValue !== undefined && candidateValue !== null && `${candidateValue}`.trim() !== '') {\n referenceValue = String(candidateValue);\n break;\n }\n }\n\n // Fallback: Smart lookup if no value found by key\n if (!referenceValue) {\n const allCustomFields = {\n ...(userInputFlat?.customFormData || {}),\n ...(nodeInput?.customFormData || {}),\n ...(nodeInput || {}),\n };\n\n for (const [key, value] of Object.entries(allCustomFields)) {\n if (typeof value !== 'string' && typeof value !== 'number') continue;\n const stringValue = String(value).replace(/\\s+/g, '');\n\n // 9-digit SIREN pattern\n if (referenceField === 'siren' && /^\\d{9}$/.test(stringValue)) {\n referenceValue = stringValue;\n break;\n }\n // 14-digit SIRET pattern\n if (referenceField === 'siret' && /^\\d{14}$/.test(stringValue)) {\n referenceValue = stringValue;\n break;\n }\n }\n }\n\n if (!referenceValue) {\n verificationResult = {\n isVerified: false,\n status: 'invalid_input',\n message: 'No SIREN/SIRET value found in source node data.',\n errorCode: 'REFERENCE_VALUE_NOT_FOUND',\n };\n } else {\n referenceValueMasked = maskReferenceValue(referenceValue);\n\n try {\n const response = await apiService.post(\n `/session/sdk/${session.id}/verify-external/${node.id}`,\n { apiType, referenceValue, referenceField },\n );\n const result = response.data?.data as VerificationResponsePayload | undefined;\n if (result && typeof result.isVerified === 'boolean') {\n verificationResult = result;\n }\n } catch (apiErr: any) {\n const apiResult = apiErr?.response?.data?.data as VerificationResponsePayload | undefined;\n if (apiResult && typeof apiResult.isVerified === 'boolean') {\n verificationResult = apiResult;\n } else {\n verificationResult = {\n isVerified: false,\n status: 'external_error',\n message: 'External verification request failed.',\n errorCode: 'REQUEST_FAILED',\n };\n }\n }\n }\n }\n } catch (err) {\n verificationResult = {\n isVerified: false,\n status: 'external_error',\n message: 'Unexpected error during verification.',\n errorCode: 'UNEXPECTED_ERROR',\n };\n console.warn('[ExternalVerificationNodeHandler] Unexpected error:', err);\n }\n\n setUserInput((prev) => ({\n ...prev,\n [node.id]: {\n isVerified: verificationResult.isVerified,\n apiType,\n referenceField,\n referenceValueMasked,\n verifiedAt: new Date().toISOString(),\n status: verificationResult.status,\n errorCode: verificationResult.errorCode,\n message: verificationResult.message,\n hasError: verificationResult.status !== 'ok' && verificationResult.status !== 'not_found',\n },\n } as any));\n\n onNext();\n };\n\n performVerification();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <div className=\"flex min-h-[300px] flex-col items-center justify-center space-y-4 p-6 text-center\">\n <Loader2 className=\"h-12 w-12 animate-spin text-[#1c2c5c]\" />\n <h3 className=\"text-xl font-semibold text-gray-900\">\n {t('verification_node.verifying_title', 'Vérification en cours...')}\n </h3>\n <p className=\"text-gray-500\">\n {t('verification_node.verifying_desc', 'Nous interrogeons la base de données.')}\n </p>\n </div>\n );\n};\n\nexport default ExternalVerificationNodeHandler;\n"],"names":["useTranslation","sdkI18n","useEffect","__awaiter","__spreadArray","__assign","apiService","_jsxs","_jsx","Loader2"],"mappings":"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"}
|
package/dist/cjs/i18n/en.json.js
CHANGED
|
@@ -126,7 +126,7 @@ var user_guidance = {
|
|
|
126
126
|
"2.1": "The photo is not clear. Avoid any blur or reflection",
|
|
127
127
|
"2.2": "The photo is not clear. Avoid any blur or reflection",
|
|
128
128
|
"2.4": "The photo is not clear. Avoid any blur or reflection",
|
|
129
|
-
"2.6": "
|
|
129
|
+
"2.6": "The document submitted is not the expected one"
|
|
130
130
|
};
|
|
131
131
|
var validation_points = {
|
|
132
132
|
"1.0": {
|
|
@@ -837,6 +837,14 @@ var document_collection = {
|
|
|
837
837
|
back_to_start: "Back to start"
|
|
838
838
|
};
|
|
839
839
|
var document_check = {
|
|
840
|
+
method_selection: {
|
|
841
|
+
title: "Choose a method",
|
|
842
|
+
subtitle: "How would you like to add your document?",
|
|
843
|
+
picture_title: "Take a photo",
|
|
844
|
+
picture_desc: "Use your device's camera",
|
|
845
|
+
download_title: "Upload a file",
|
|
846
|
+
download_desc: "Select a file from your device"
|
|
847
|
+
},
|
|
840
848
|
config_error: {
|
|
841
849
|
title: "Configuration error",
|
|
842
850
|
description: "Document type not specified.",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"en.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/cjs/i18n/fr.json.js
CHANGED
|
@@ -126,7 +126,7 @@ var user_guidance = {
|
|
|
126
126
|
"2.1": "La photo n'est pas nette. Évitez tout flou ou reflet",
|
|
127
127
|
"2.2": "La photo n'est pas nette. Évitez tout flou ou reflet",
|
|
128
128
|
"2.4": "La photo n'est pas nette. Évitez tout flou ou reflet",
|
|
129
|
-
"2.6": "
|
|
129
|
+
"2.6": "Le document déposé n'est pas celui attendu"
|
|
130
130
|
};
|
|
131
131
|
var validation_points = {
|
|
132
132
|
"1.0": {
|
|
@@ -837,6 +837,14 @@ var document_collection = {
|
|
|
837
837
|
back_to_start: "Retour au début"
|
|
838
838
|
};
|
|
839
839
|
var document_check = {
|
|
840
|
+
method_selection: {
|
|
841
|
+
title: "Choisissez une méthode",
|
|
842
|
+
subtitle: "Comment souhaitez-vous ajouter votre document ?",
|
|
843
|
+
picture_title: "Prendre une photo",
|
|
844
|
+
picture_desc: "Utilisez l'appareil photo de votre appareil",
|
|
845
|
+
download_title: "Téléverser un fichier",
|
|
846
|
+
download_desc: "Sélectionnez un fichier sur votre appareil"
|
|
847
|
+
},
|
|
840
848
|
config_error: {
|
|
841
849
|
title: "Erreur de configuration",
|
|
842
850
|
description: "Type de document non spécifié.",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fr.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fr.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -43,9 +43,11 @@ var DocumentError = function (_a) {
|
|
|
43
43
|
return (jsxs("div", { className: "flex flex-col justify-between h-full w-full", children: [jsx("div", { className: "flex-1 px-4 py-6 pt-11 md:px-8 md:py-8", children: jsxs("div", { className: "w-full max-w-md mx-auto space-y-6", children: [jsx("div", { className: "text-center", children: jsx("div", { className: "mx-auto w-16 h-16 bg-red-100 rounded-full flex items-center justify-center mb-4", children: jsx("div", { className: "w-8 h-8 bg-red-500 rounded-full flex items-center justify-center", children: jsx("span", { className: "text-white text-lg", children: "\u2715" }) }) }) }), jsxs("div", { className: "text-center space-y-4", children: [jsx(Title, { className: "text-xl md:text-2xl lg:text-3xl text-red-600", children: t("errors.verification_failed", "Vérification échouée") }), jsx(Subtitle, { className: "text-sm text-gray-600 leading-relaxed", children: isRetryAllowed
|
|
44
44
|
? t("errors.verification_failed_subtitle", {
|
|
45
45
|
documentType: getDocumentLabel(documentType),
|
|
46
|
+
defaultValue: "Nous n'avons pas pu valider votre {{documentType}}. Veuillez vérifier les points ci-dessous et réessayer.",
|
|
46
47
|
})
|
|
47
48
|
: t("errors.verification_failed_subtitle_no_retry", {
|
|
48
49
|
documentType: getDocumentLabel(documentType),
|
|
50
|
+
defaultValue: "Nous n'avons pas pu valider votre {{documentType}}. Veuillez vérifier les points ci-dessous.",
|
|
49
51
|
}) })] }), jsxs("div", { className: "bg-red-50 border border-red-200 rounded-lg p-4", children: [jsx("h3", { className: "font-medium text-red-900 mb-2", children: t("errors.problems_detected", "Problèmes détectés") }), jsx("div", { className: "text-sm text-red-800 space-y-1", children: validationPoints.map(function (point, index) { return (jsx("p", { children: point }, index)); }) })] }), !isRetryAllowed && (jsxs("div", { className: "bg-orange-50 border border-orange-200 rounded-lg p-4", children: [jsx("h3", { className: "font-medium text-orange-900 mb-2", children: t("errors.resubmission.max_attempts_reached", "Nombre maximum de tentatives atteint") }), jsx("p", { className: "text-sm text-orange-800", children: maxResubmissionAttempts !== undefined
|
|
50
52
|
? t("errors.resubmission.max_attempts_reached_description")
|
|
51
53
|
: t("errors.resubmission.no_resubmission_allowed") })] })), getUserGuidance() && (jsxs("div", { className: "bg-yellow-50 border border-yellow-200 rounded-lg p-4", children: [jsxs("h3", { className: "font-medium text-yellow-900 mb-2", children: ["\uD83D\uDCA1 ", t("errors.improvement_tips", "Conseils d'amélioration")] }), jsx("p", { className: "text-sm text-yellow-800", children: getUserGuidance() })] })), isRetryAllowed && (jsxs("div", { className: "bg-blue-50 border border-blue-200 rounded-lg p-4", children: [jsx("h3", { className: "font-medium text-blue-900 mb-2", children: t("errors.next_steps", "Prochaines étapes") }), jsx("p", { className: "text-sm text-blue-800", children: t("errors.next_steps_description", "Veuillez reprendre les photos de votre document en suivant les conseils d'amélioration pour une meilleure qualité.") })] }))] }) }), jsx("div", { className: "sticky bottom-0 md:static bg-white border-t md:border-t-0 p-4 md:p-0 md:pb-8", children: jsxs("div", { className: "w-full max-w-md mx-auto", children: [jsxs("div", { className: "flex flex-col space-y-3 md:hidden", children: [onBackToUserInput && (jsx(ButtonDesktop, { onClick: onBackToUserInput, type: "back", children: t("errors.back_to_user_input", "Retour aux informations d'identité") })), retryCount >= 1 && isRetryAllowed && (jsx(ButtonDesktop, { onClick: onContinueAnyway, type: "back", children: t("errors.continue_anyway", "Poursuivre tout de même") })), isRetryAllowed && (jsx(ButtonDesktop, { onClick: onRetry, type: "continue", children: t("errors.retry_verification", "Recommencer la vérification") })), !isRetryAllowed && (jsx(ButtonDesktop, { onClick: onContinueAnyway, type: "back", children: t("errors.continue_anyway", "Poursuivre tout de même") }))] }), jsx("div", { className: "hidden md:flex flex-col space-y-3", children: jsxs("div", { className: "flex justify-center space-x-3", children: [onBackToUserInput && (jsx(ButtonDesktop, { onClick: onBackToUserInput, type: "back", children: t("errors.back_to_user_input", "Retour aux informations d'identité") })), retryCount >= 1 && isRetryAllowed && (jsx(ButtonDesktop, { onClick: onContinueAnyway, type: "back", children: t("errors.continue_anyway", "Poursuivre tout de même") })), isRetryAllowed && (jsx(ButtonDesktop, { onClick: onRetry, type: "continue", children: t("errors.retry_verification", "Recommencer la vérification") })), !isRetryAllowed && (jsx(ButtonDesktop, { onClick: onContinueAnyway, type: "continue", children: t("errors.continue_anyway", "Poursuivre tout de même") }))] }) })] }) })] }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentError.js","sources":["../../../../../src/components/document-collection/DocumentError.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport Title from \"../ui/Title\";\nimport Subtitle from \"../ui/Subtitle\";\nimport Button from \"../ui/Button\";\nimport ButtonDesktop from \"../ui/ButtonDesktop\";\nimport { useI18n } from \"../../hooks/useI18n\";\nimport { getValidationPoints } from \"../../utils/validationUtils\";\nimport type { DocumentErrorProps } from \"./types\";\nimport MobilePageLayout from \"../ui/MobilePageLayout\";\n\nconst DocumentError: React.FC<DocumentErrorProps> = ({\n documentType,\n documentTypeLabel,\n onRetry,\n onContinueAnyway,\n onBackToUserInput,\n retryCount = 0,\n predictions = [],\n errorDetails,\n allowResubmission,\n maxResubmissionAttempts,\n isRetryAllowed = true,\n errorCode,\n}) => {\n const { t } = useI18n();\n const [validationPoints, setValidationPoints] = useState<string[]>([]);\n\n useEffect(() => {\n // Use shared utility to get validation points\n setValidationPoints(\n getValidationPoints(errorCode, predictions, t, \"error\"),\n );\n }, [predictions, errorCode, t]);\n\n // Get user guidance message if available\n const getUserGuidance = (): string | null => {\n if (!errorCode) return null;\n const guidance = t(`user_guidance.${errorCode}`, \"\");\n return guidance || null;\n };\n\n const getDocumentLabel = (documentType: string): string => {\n if (documentTypeLabel) return documentTypeLabel;\n\n const translated = t(documentType);\n // If no translation, use default fallbacks\n if (translated === documentType) {\n switch (documentType) {\n case \"national_id\":\n return t(\"documentTypes.idCard\", \"carte nationale d'identité\");\n case \"passport\":\n return t(\"documentTypes.passport\", \"passeport\");\n case \"driving_license\":\n return t(\"documentTypes.driving_license\", \"permis de conduire\");\n default:\n return t(\"documentTypes.document\", \"document\");\n }\n }\n return translated;\n };\n\n return (\n <div className=\"flex flex-col justify-between h-full w-full\">\n {/* Main content area */}\n <div className=\"flex-1 px-4 py-6 pt-11 md:px-8 md:py-8\">\n <div className=\"w-full max-w-md mx-auto space-y-6\">\n {/* Error icon */}\n <div className=\"text-center\">\n <div className=\"mx-auto w-16 h-16 bg-red-100 rounded-full flex items-center justify-center mb-4\">\n <div className=\"w-8 h-8 bg-red-500 rounded-full flex items-center justify-center\">\n <span className=\"text-white text-lg\">✕</span>\n </div>\n </div>\n </div>\n\n {/* Header */}\n <div className=\"text-center space-y-4\">\n <Title className=\"text-xl md:text-2xl lg:text-3xl text-red-600\">\n {t(\"errors.verification_failed\", \"Vérification échouée\")}\n </Title>\n <Subtitle className=\"text-sm text-gray-600 leading-relaxed\">\n {isRetryAllowed\n ? t(\"errors.verification_failed_subtitle\", {\n documentType: getDocumentLabel(documentType),\n })\n : t(\"errors.verification_failed_subtitle_no_retry\", {\n documentType: getDocumentLabel(documentType),\n })}\n </Subtitle>\n </div>\n\n {/* Error details - Validation Points */}\n <div className=\"bg-red-50 border border-red-200 rounded-lg p-4\">\n <h3 className=\"font-medium text-red-900 mb-2\">\n {t(\"errors.problems_detected\", \"Problèmes détectés\")}\n </h3>\n <div className=\"text-sm text-red-800 space-y-1\">\n {validationPoints.map((point, index) => (\n <p key={index}>{point}</p>\n ))}\n </div>\n </div>\n\n {/* Resubmission limit message */}\n {!isRetryAllowed && (\n <div className=\"bg-orange-50 border border-orange-200 rounded-lg p-4\">\n <h3 className=\"font-medium text-orange-900 mb-2\">\n {t(\n \"errors.resubmission.max_attempts_reached\",\n \"Nombre maximum de tentatives atteint\",\n )}\n </h3>\n <p className=\"text-sm text-orange-800\">\n {maxResubmissionAttempts !== undefined\n ? t(\"errors.resubmission.max_attempts_reached_description\")\n : t(\"errors.resubmission.no_resubmission_allowed\")}\n </p>\n </div>\n )}\n\n {/* User guidance - specific advice based on error code */}\n {getUserGuidance() && (\n <div className=\"bg-yellow-50 border border-yellow-200 rounded-lg p-4\">\n <h3 className=\"font-medium text-yellow-900 mb-2\">\n 💡 {t(\"errors.improvement_tips\", \"Conseils d'amélioration\")}\n </h3>\n <p className=\"text-sm text-yellow-800\">{getUserGuidance()}</p>\n </div>\n )}\n\n {/* Next steps */}\n {isRetryAllowed && (\n <div className=\"bg-blue-50 border border-blue-200 rounded-lg p-4\">\n <h3 className=\"font-medium text-blue-900 mb-2\">\n {t(\"errors.next_steps\", \"Prochaines étapes\")}\n </h3>\n <p className=\"text-sm text-blue-800\">\n {t(\n \"errors.next_steps_description\",\n \"Veuillez reprendre les photos de votre document en suivant les conseils d'amélioration pour une meilleure qualité.\",\n )}\n </p>\n </div>\n )}\n </div>\n </div>\n\n {/* Footer with buttons */}\n <div className=\"sticky bottom-0 md:static bg-white border-t md:border-t-0 p-4 md:p-0 md:pb-8\">\n <div className=\"w-full max-w-md mx-auto\">\n {/* Mobile layout */}\n <div className=\"flex flex-col space-y-3 md:hidden\">\n {onBackToUserInput && (\n <ButtonDesktop\n onClick={onBackToUserInput}\n type=\"back\"\n >\n {t(\n \"errors.back_to_user_input\",\n \"Retour aux informations d'identité\",\n )}\n </ButtonDesktop>\n )}\n {retryCount >= 1 && isRetryAllowed && (\n <ButtonDesktop\n onClick={onContinueAnyway}\n type=\"back\"\n >\n {t(\"errors.continue_anyway\", \"Poursuivre tout de même\")}\n </ButtonDesktop>\n )}\n {isRetryAllowed && (\n <ButtonDesktop onClick={onRetry} type=\"continue\">\n {t(\"errors.retry_verification\", \"Recommencer la vérification\")}\n </ButtonDesktop>\n )}\n {!isRetryAllowed && (\n <ButtonDesktop onClick={onContinueAnyway} type=\"back\">\n {t(\"errors.continue_anyway\", \"Poursuivre tout de même\")}\n </ButtonDesktop>\n )}\n </div>\n\n {/* Desktop layout */}\n <div className=\"hidden md:flex flex-col space-y-3\">\n <div className=\"flex justify-center space-x-3\">\n {onBackToUserInput && (\n <ButtonDesktop\n onClick={onBackToUserInput}\n type=\"back\"\n >\n {t(\n \"errors.back_to_user_input\",\n \"Retour aux informations d'identité\",\n )}\n </ButtonDesktop>\n )}\n {retryCount >= 1 && isRetryAllowed && (\n <ButtonDesktop onClick={onContinueAnyway} type=\"back\">\n {t(\"errors.continue_anyway\", \"Poursuivre tout de même\")}\n </ButtonDesktop>\n )}\n {isRetryAllowed && (\n <ButtonDesktop onClick={onRetry} type=\"continue\">\n {t(\n \"errors.retry_verification\",\n \"Recommencer la vérification\",\n )}\n </ButtonDesktop>\n )}\n {!isRetryAllowed && (\n <ButtonDesktop onClick={onContinueAnyway} type=\"continue\">\n {t(\"errors.continue_anyway\", \"Poursuivre tout de même\")}\n </ButtonDesktop>\n )}\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default DocumentError;\nexport type { DocumentErrorProps };\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DocumentError.js","sources":["../../../../../src/components/document-collection/DocumentError.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport Title from \"../ui/Title\";\nimport Subtitle from \"../ui/Subtitle\";\nimport Button from \"../ui/Button\";\nimport ButtonDesktop from \"../ui/ButtonDesktop\";\nimport { useI18n } from \"../../hooks/useI18n\";\nimport { getValidationPoints } from \"../../utils/validationUtils\";\nimport type { DocumentErrorProps } from \"./types\";\nimport MobilePageLayout from \"../ui/MobilePageLayout\";\n\nconst DocumentError: React.FC<DocumentErrorProps> = ({\n documentType,\n documentTypeLabel,\n onRetry,\n onContinueAnyway,\n onBackToUserInput,\n retryCount = 0,\n predictions = [],\n errorDetails,\n allowResubmission,\n maxResubmissionAttempts,\n isRetryAllowed = true,\n errorCode,\n}) => {\n const { t } = useI18n();\n const [validationPoints, setValidationPoints] = useState<string[]>([]);\n\n useEffect(() => {\n // Use shared utility to get validation points\n setValidationPoints(\n getValidationPoints(errorCode, predictions, t, \"error\"),\n );\n }, [predictions, errorCode, t]);\n\n // Get user guidance message if available\n const getUserGuidance = (): string | null => {\n if (!errorCode) return null;\n const guidance = t(`user_guidance.${errorCode}`, \"\");\n return guidance || null;\n };\n\n const getDocumentLabel = (documentType: string): string => {\n if (documentTypeLabel) return documentTypeLabel;\n\n const translated = t(documentType);\n // If no translation, use default fallbacks\n if (translated === documentType) {\n switch (documentType) {\n case \"national_id\":\n return t(\"documentTypes.idCard\", \"carte nationale d'identité\");\n case \"passport\":\n return t(\"documentTypes.passport\", \"passeport\");\n case \"driving_license\":\n return t(\"documentTypes.driving_license\", \"permis de conduire\");\n default:\n return t(\"documentTypes.document\", \"document\");\n }\n }\n return translated;\n };\n\n return (\n <div className=\"flex flex-col justify-between h-full w-full\">\n {/* Main content area */}\n <div className=\"flex-1 px-4 py-6 pt-11 md:px-8 md:py-8\">\n <div className=\"w-full max-w-md mx-auto space-y-6\">\n {/* Error icon */}\n <div className=\"text-center\">\n <div className=\"mx-auto w-16 h-16 bg-red-100 rounded-full flex items-center justify-center mb-4\">\n <div className=\"w-8 h-8 bg-red-500 rounded-full flex items-center justify-center\">\n <span className=\"text-white text-lg\">✕</span>\n </div>\n </div>\n </div>\n\n {/* Header */}\n <div className=\"text-center space-y-4\">\n <Title className=\"text-xl md:text-2xl lg:text-3xl text-red-600\">\n {t(\"errors.verification_failed\", \"Vérification échouée\")}\n </Title>\n <Subtitle className=\"text-sm text-gray-600 leading-relaxed\">\n {isRetryAllowed\n ? t(\"errors.verification_failed_subtitle\", {\n documentType: getDocumentLabel(documentType),\n defaultValue:\n \"Nous n'avons pas pu valider votre {{documentType}}. Veuillez vérifier les points ci-dessous et réessayer.\",\n })\n : t(\"errors.verification_failed_subtitle_no_retry\", {\n documentType: getDocumentLabel(documentType),\n defaultValue:\n \"Nous n'avons pas pu valider votre {{documentType}}. Veuillez vérifier les points ci-dessous.\",\n })}\n </Subtitle>\n </div>\n\n {/* Error details - Validation Points */}\n <div className=\"bg-red-50 border border-red-200 rounded-lg p-4\">\n <h3 className=\"font-medium text-red-900 mb-2\">\n {t(\"errors.problems_detected\", \"Problèmes détectés\")}\n </h3>\n <div className=\"text-sm text-red-800 space-y-1\">\n {validationPoints.map((point, index) => (\n <p key={index}>{point}</p>\n ))}\n </div>\n </div>\n\n {/* Resubmission limit message */}\n {!isRetryAllowed && (\n <div className=\"bg-orange-50 border border-orange-200 rounded-lg p-4\">\n <h3 className=\"font-medium text-orange-900 mb-2\">\n {t(\n \"errors.resubmission.max_attempts_reached\",\n \"Nombre maximum de tentatives atteint\",\n )}\n </h3>\n <p className=\"text-sm text-orange-800\">\n {maxResubmissionAttempts !== undefined\n ? t(\"errors.resubmission.max_attempts_reached_description\")\n : t(\"errors.resubmission.no_resubmission_allowed\")}\n </p>\n </div>\n )}\n\n {/* User guidance - specific advice based on error code */}\n {getUserGuidance() && (\n <div className=\"bg-yellow-50 border border-yellow-200 rounded-lg p-4\">\n <h3 className=\"font-medium text-yellow-900 mb-2\">\n 💡 {t(\"errors.improvement_tips\", \"Conseils d'amélioration\")}\n </h3>\n <p className=\"text-sm text-yellow-800\">{getUserGuidance()}</p>\n </div>\n )}\n\n {/* Next steps */}\n {isRetryAllowed && (\n <div className=\"bg-blue-50 border border-blue-200 rounded-lg p-4\">\n <h3 className=\"font-medium text-blue-900 mb-2\">\n {t(\"errors.next_steps\", \"Prochaines étapes\")}\n </h3>\n <p className=\"text-sm text-blue-800\">\n {t(\n \"errors.next_steps_description\",\n \"Veuillez reprendre les photos de votre document en suivant les conseils d'amélioration pour une meilleure qualité.\",\n )}\n </p>\n </div>\n )}\n </div>\n </div>\n\n {/* Footer with buttons */}\n <div className=\"sticky bottom-0 md:static bg-white border-t md:border-t-0 p-4 md:p-0 md:pb-8\">\n <div className=\"w-full max-w-md mx-auto\">\n {/* Mobile layout */}\n <div className=\"flex flex-col space-y-3 md:hidden\">\n {onBackToUserInput && (\n <ButtonDesktop\n onClick={onBackToUserInput}\n type=\"back\"\n >\n {t(\n \"errors.back_to_user_input\",\n \"Retour aux informations d'identité\",\n )}\n </ButtonDesktop>\n )}\n {retryCount >= 1 && isRetryAllowed && (\n <ButtonDesktop\n onClick={onContinueAnyway}\n type=\"back\"\n >\n {t(\"errors.continue_anyway\", \"Poursuivre tout de même\")}\n </ButtonDesktop>\n )}\n {isRetryAllowed && (\n <ButtonDesktop onClick={onRetry} type=\"continue\">\n {t(\"errors.retry_verification\", \"Recommencer la vérification\")}\n </ButtonDesktop>\n )}\n {!isRetryAllowed && (\n <ButtonDesktop onClick={onContinueAnyway} type=\"back\">\n {t(\"errors.continue_anyway\", \"Poursuivre tout de même\")}\n </ButtonDesktop>\n )}\n </div>\n\n {/* Desktop layout */}\n <div className=\"hidden md:flex flex-col space-y-3\">\n <div className=\"flex justify-center space-x-3\">\n {onBackToUserInput && (\n <ButtonDesktop\n onClick={onBackToUserInput}\n type=\"back\"\n >\n {t(\n \"errors.back_to_user_input\",\n \"Retour aux informations d'identité\",\n )}\n </ButtonDesktop>\n )}\n {retryCount >= 1 && isRetryAllowed && (\n <ButtonDesktop onClick={onContinueAnyway} type=\"back\">\n {t(\"errors.continue_anyway\", \"Poursuivre tout de même\")}\n </ButtonDesktop>\n )}\n {isRetryAllowed && (\n <ButtonDesktop onClick={onRetry} type=\"continue\">\n {t(\n \"errors.retry_verification\",\n \"Recommencer la vérification\",\n )}\n </ButtonDesktop>\n )}\n {!isRetryAllowed && (\n <ButtonDesktop onClick={onContinueAnyway} type=\"continue\">\n {t(\"errors.continue_anyway\", \"Poursuivre tout de même\")}\n </ButtonDesktop>\n )}\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default DocumentError;\nexport type { DocumentErrorProps };\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ import PhotoConfirmation from '../id-check/PhotoConfirmation.js';
|
|
|
15
15
|
import DocumentVideoCapture from '../document-video/DocumentVideoCapture.js';
|
|
16
16
|
import { Camera, Upload } from 'lucide-react';
|
|
17
17
|
import { useDocumentContext } from '../../context/DocumentContext.js';
|
|
18
|
-
import {
|
|
18
|
+
import { useI18n } from '../../hooks/useI18n.js';
|
|
19
19
|
import ButtonDesktop from '../ui/ButtonDesktop.js';
|
|
20
20
|
import Title from '../ui/Title.js';
|
|
21
21
|
import Subtitle from '../ui/Subtitle.js';
|
|
@@ -54,7 +54,7 @@ import { EUROPEAN_COUNTRY_CODES } from '../../utils/europeanCountries.js';
|
|
|
54
54
|
var DocumentCheck = function (_a) {
|
|
55
55
|
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
56
56
|
var stepObject = _a.stepObject, sessionId = _a.sessionId, node = _a.node; _a.onContinueOnPC; var documentTypeId = _a.documentTypeId, acceptedCountries = _a.acceptedCountries, _m = _a.isMobileCapture, isMobileCapture = _m === void 0 ? false : _m, allowedAddingMethods = _a.allowedAddingMethods, template = _a.template, setUserInput = _a.setUserInput;
|
|
57
|
-
var t =
|
|
57
|
+
var t = useI18n().t;
|
|
58
58
|
var session = getSession().session;
|
|
59
59
|
var _o = useState(), documentTemplates = _o[0], setDocumentTemplates = _o[1];
|
|
60
60
|
var _p = useState(true), loadingTemplates = _p[0], setLoadingTemplates = _p[1];
|