datakeen-session-react 1.1.140-dev.127 → 1.1.140-dev.129

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.
Files changed (78) hide show
  1. package/dist/cjs/components/document-collection/DocumentCollection.js +1 -1
  2. package/dist/cjs/components/document-collection/DocumentCollection.js.map +1 -1
  3. package/dist/cjs/components/document-collection/DocumentCollectionIntroduction.js +1 -1
  4. package/dist/cjs/components/document-collection/DocumentCollectionIntroduction.js.map +1 -1
  5. package/dist/cjs/components/document-collection/DocumentCollectionMethodSelection.js +1 -1
  6. package/dist/cjs/components/document-collection/DocumentCollectionMethodSelection.js.map +1 -1
  7. package/dist/cjs/components/document-collection/DocumentCollectionSelection.js +1 -1
  8. package/dist/cjs/components/document-collection/DocumentCollectionSelection.js.map +1 -1
  9. package/dist/cjs/components/document-collection/DocumentCollectionUpload.js +1 -1
  10. package/dist/cjs/components/document-collection/DocumentCollectionUpload.js.map +1 -1
  11. package/dist/cjs/components/jdi/JDICountrySelection.js +1 -1
  12. package/dist/cjs/components/jdi/JDICountrySelection.js.map +1 -1
  13. package/dist/cjs/components/jdi/JDIDocumentSelection.js +1 -1
  14. package/dist/cjs/components/jdi/JDIDocumentSelection.js.map +1 -1
  15. package/dist/cjs/components/jdi/JDIDocumentUpload.js +1 -1
  16. package/dist/cjs/components/jdi/JDIDocumentUpload.js.map +1 -1
  17. package/dist/cjs/components/jdi/JDIPreIntroduction.js +1 -1
  18. package/dist/cjs/components/jdi/JDIPreIntroduction.js.map +1 -1
  19. package/dist/cjs/components/selfie/Video.js +2 -2
  20. package/dist/cjs/components/selfie/Video.js.map +1 -1
  21. package/dist/cjs/components/selfie/selfie-flow/SelfieFlow.js +2 -11
  22. package/dist/cjs/components/selfie/selfie-flow/SelfieFlow.js.map +1 -1
  23. package/dist/cjs/components/selfie/selfie-flow/SelfiePreIntroduction.js.map +1 -1
  24. package/dist/cjs/components/session/DocumentCheck.js +1 -1
  25. package/dist/cjs/components/session/DocumentCheck.js.map +1 -1
  26. package/dist/cjs/components/session/Selfie.js +4 -18
  27. package/dist/cjs/components/session/Selfie.js.map +1 -1
  28. package/dist/cjs/components/session/UserInputForm.js +1 -7
  29. package/dist/cjs/components/session/UserInputForm.js.map +1 -1
  30. package/dist/cjs/components/signature-electronic/SignatureElectronic.js +1 -1
  31. package/dist/cjs/components/signature-electronic/SignatureElectronic.js.map +1 -1
  32. package/dist/cjs/components/signature-electronic/SignatureElectronicIntroduction.js +2 -2
  33. package/dist/cjs/components/signature-electronic/SignatureElectronicIntroduction.js.map +1 -1
  34. package/dist/cjs/hooks/useStepNavigation.js +60 -12
  35. package/dist/cjs/hooks/useStepNavigation.js.map +1 -1
  36. package/dist/cjs/hooks/useUserInputForm.js +1 -2
  37. package/dist/cjs/hooks/useUserInputForm.js.map +1 -1
  38. package/dist/cjs/types/session.js.map +1 -1
  39. package/dist/esm/components/document-collection/DocumentCollection.js +1 -1
  40. package/dist/esm/components/document-collection/DocumentCollection.js.map +1 -1
  41. package/dist/esm/components/document-collection/DocumentCollectionIntroduction.js +1 -1
  42. package/dist/esm/components/document-collection/DocumentCollectionIntroduction.js.map +1 -1
  43. package/dist/esm/components/document-collection/DocumentCollectionMethodSelection.js +1 -1
  44. package/dist/esm/components/document-collection/DocumentCollectionMethodSelection.js.map +1 -1
  45. package/dist/esm/components/document-collection/DocumentCollectionSelection.js +1 -1
  46. package/dist/esm/components/document-collection/DocumentCollectionSelection.js.map +1 -1
  47. package/dist/esm/components/document-collection/DocumentCollectionUpload.js +1 -1
  48. package/dist/esm/components/document-collection/DocumentCollectionUpload.js.map +1 -1
  49. package/dist/esm/components/jdi/JDICountrySelection.js +1 -1
  50. package/dist/esm/components/jdi/JDICountrySelection.js.map +1 -1
  51. package/dist/esm/components/jdi/JDIDocumentSelection.js +1 -1
  52. package/dist/esm/components/jdi/JDIDocumentSelection.js.map +1 -1
  53. package/dist/esm/components/jdi/JDIDocumentUpload.js +1 -1
  54. package/dist/esm/components/jdi/JDIDocumentUpload.js.map +1 -1
  55. package/dist/esm/components/jdi/JDIPreIntroduction.js +1 -1
  56. package/dist/esm/components/jdi/JDIPreIntroduction.js.map +1 -1
  57. package/dist/esm/components/selfie/Video.js +2 -2
  58. package/dist/esm/components/selfie/Video.js.map +1 -1
  59. package/dist/esm/components/selfie/selfie-flow/SelfieFlow.js +2 -11
  60. package/dist/esm/components/selfie/selfie-flow/SelfieFlow.js.map +1 -1
  61. package/dist/esm/components/selfie/selfie-flow/SelfiePreIntroduction.js.map +1 -1
  62. package/dist/esm/components/session/DocumentCheck.js +1 -1
  63. package/dist/esm/components/session/DocumentCheck.js.map +1 -1
  64. package/dist/esm/components/session/Selfie.js +4 -18
  65. package/dist/esm/components/session/Selfie.js.map +1 -1
  66. package/dist/esm/components/session/UserInputForm.js +1 -7
  67. package/dist/esm/components/session/UserInputForm.js.map +1 -1
  68. package/dist/esm/components/signature-electronic/SignatureElectronic.js +1 -1
  69. package/dist/esm/components/signature-electronic/SignatureElectronic.js.map +1 -1
  70. package/dist/esm/components/signature-electronic/SignatureElectronicIntroduction.js +2 -2
  71. package/dist/esm/components/signature-electronic/SignatureElectronicIntroduction.js.map +1 -1
  72. package/dist/esm/hooks/useStepNavigation.js +60 -12
  73. package/dist/esm/hooks/useStepNavigation.js.map +1 -1
  74. package/dist/esm/hooks/useUserInputForm.js +1 -2
  75. package/dist/esm/hooks/useUserInputForm.js.map +1 -1
  76. package/dist/esm/types/session.js.map +1 -1
  77. package/docs/navigation-history.md +18 -1
  78. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"DocumentCollectionMethodSelection.js","sources":["../../../../../src/components/document-collection/DocumentCollectionMethodSelection.tsx"],"sourcesContent":["import React from \"react\";\nimport { Camera, Upload } from \"lucide-react\";\nimport { useI18n } from \"../../hooks/useI18n\";\nimport Title from \"../ui/Title\";\nimport Subtitle from \"../ui/Subtitle\";\nimport Button from \"../ui/Button\";\nimport PageActions from \"../ui/PageActions\";\nimport MobilePageLayout from \"../ui/MobilePageLayout\";\n\ninterface DocumentCollectionMethodSelectionProps {\n onMethodSelect: (method: \"download\" | \"picture\") => void;\n onBack: () => void;\n title?: string;\n description?: string;\n}\n\nconst DocumentCollectionMethodSelection = ({\n onMethodSelect,\n onBack,\n title,\n description,\n}: DocumentCollectionMethodSelectionProps) => {\n const { t } = useI18n();\n\n return (\n <MobilePageLayout\n footer={\n <PageActions\n primary={\n <Button variant=\"secondary\" onClick={onBack}>\n {t(\"buttons.back\", \"Retour\")}\n </Button>\n }\n />\n }\n >\n <div className=\"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 <div className=\"text-center space-y-4\">\n <Title className=\"text-xl md:text-2xl lg:text-3xl\">\n {title || t(\"document_check.method_selection.title\", \"Choisissez une méthode\")}\n </Title>\n <Subtitle className=\"text-sm text-gray-600 leading-relaxed\">\n {description || t(\"document_check.method_selection.subtitle\", \"Comment souhaitez-vous ajouter votre document ?\")}\n </Subtitle>\n </div>\n\n <div className=\"grid gap-4\">\n <button\n onClick={() => onMethodSelect(\"picture\")}\n className=\"flex items-center p-4 bg-white border-2 border-gray-100 rounded-xl hover:border-teal-500 transition-colors text-left group\"\n >\n <div className=\"w-12 h-12 bg-teal-50 rounded-lg flex items-center justify-center text-teal-600 group-hover:bg-teal-100 transition-colors mr-4\">\n <Camera size={24} />\n </div>\n <div>\n <p className=\"font-semibold text-gray-900\">\n {t(\"document_check.method_selection.picture_title\", \"Prendre une photo\")}\n </p>\n <p className=\"text-sm text-gray-500\">\n {t(\"document_check.method_selection.picture_desc\", \"Utilisez l'appareil photo de votre appareil\")}\n </p>\n </div>\n </button>\n\n <button\n onClick={() => onMethodSelect(\"download\")}\n className=\"flex items-center p-4 bg-white border-2 border-gray-100 rounded-xl hover:border-teal-500 transition-colors text-left group\"\n >\n <div className=\"w-12 h-12 bg-teal-50 rounded-lg flex items-center justify-center text-teal-600 group-hover:bg-teal-100 transition-colors mr-4\">\n <Upload size={24} />\n </div>\n <div>\n <p className=\"font-semibold text-gray-900\">\n {t(\"document_check.method_selection.download_title\", \"Téléverser un fichier\")}\n </p>\n <p className=\"text-sm text-gray-500\">\n {t(\"document_check.method_selection.download_desc\", \"Sélectionnez un fichier sur votre appareil\")}\n </p>\n </div>\n </button>\n </div>\n </div>\n </div>\n </MobilePageLayout>\n );\n};\n\nexport default DocumentCollectionMethodSelection;\n"],"names":["_jsx","_jsxs"],"mappings":";;;;;;;;;AAgBA,IAAM,iCAAiC,GAAG,UAAC,EAKF,EAAA;QAJrC,cAAc,GAAA,EAAA,CAAA,cAAA,EACd,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,KAAK,GAAA,EAAA,CAAA,KAAA,EACL,WAAW,GAAA,EAAA,CAAA,WAAA;AAEH,IAAA,IAAA,CAAC,GAAK,OAAO,EAAE,EAAd;IAET,QACIA,IAAC,gBAAgB,EAAA,EACb,MAAM,EACFA,GAAA,CAAC,WAAW,EAAA,EACR,OAAO,EACHA,IAAC,MAAM,EAAA,EAAC,OAAO,EAAC,WAAW,EAAC,OAAO,EAAE,MAAM,EAAA,QAAA,EACtC,CAAC,CAAC,cAAc,EAAE,QAAQ,CAAC,EAAA,CACvB,EAAA,CAEf,YAGNA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,iCAAiC,EAAA,QAAA,EAC5CC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,mCAAmC,EAAA,QAAA,EAAA,CAC9CA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,uBAAuB,EAAA,QAAA,EAAA,CAClCD,GAAA,CAAC,KAAK,EAAA,EAAC,SAAS,EAAC,iCAAiC,EAAA,QAAA,EAC7C,KAAK,IAAI,CAAC,CAAC,uCAAuC,EAAE,wBAAwB,CAAC,EAAA,CAC1E,EACRA,GAAA,CAAC,QAAQ,EAAA,EAAC,SAAS,EAAC,uCAAuC,EAAA,QAAA,EACtD,WAAW,IAAI,CAAC,CAAC,0CAA0C,EAAE,iDAAiD,CAAC,EAAA,CACzG,CAAA,EAAA,CACT,EAENC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,YAAY,EAAA,QAAA,EAAA,CACvBA,IAAA,CAAA,QAAA,EAAA,EACI,OAAO,EAAE,YAAA,EAAM,OAAA,cAAc,CAAC,SAAS,CAAC,CAAA,CAAzB,CAAyB,EACxC,SAAS,EAAC,4HAA4H,EAAA,QAAA,EAAA,CAEtID,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,+HAA+H,EAAA,QAAA,EAC1IA,IAAC,MAAM,EAAA,EAAC,IAAI,EAAE,EAAE,EAAA,CAAI,EAAA,CAClB,EACNC,IAAA,CAAA,KAAA,EAAA,EAAA,QAAA,EAAA,CACID,WAAG,SAAS,EAAC,6BAA6B,EAAA,QAAA,EACrC,CAAC,CAAC,+CAA+C,EAAE,mBAAmB,CAAC,EAAA,CACxE,EACJA,WAAG,SAAS,EAAC,uBAAuB,EAAA,QAAA,EAC/B,CAAC,CAAC,8CAA8C,EAAE,6CAA6C,CAAC,EAAA,CACjG,CAAA,EAAA,CACF,IACD,EAETC,IAAA,CAAA,QAAA,EAAA,EACI,OAAO,EAAE,YAAA,EAAM,OAAA,cAAc,CAAC,UAAU,CAAC,CAAA,CAA1B,CAA0B,EACzC,SAAS,EAAC,4HAA4H,aAEtID,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,+HAA+H,EAAA,QAAA,EAC1IA,GAAA,CAAC,MAAM,EAAA,EAAC,IAAI,EAAE,EAAE,EAAA,CAAI,GAClB,EACNC,IAAA,CAAA,KAAA,EAAA,EAAA,QAAA,EAAA,CACID,WAAG,SAAS,EAAC,6BAA6B,EAAA,QAAA,EACrC,CAAC,CAAC,gDAAgD,EAAE,uBAAuB,CAAC,EAAA,CAC7E,EACJA,WAAG,SAAS,EAAC,uBAAuB,EAAA,QAAA,EAC/B,CAAC,CAAC,+CAA+C,EAAE,4CAA4C,CAAC,EAAA,CACjG,CAAA,EAAA,CACF,CAAA,EAAA,CACD,IACP,CAAA,EAAA,CACJ,EAAA,CACJ,EAAA,CACS;AAE3B;;;;"}
1
+ {"version":3,"file":"DocumentCollectionMethodSelection.js","sources":["../../../../../src/components/document-collection/DocumentCollectionMethodSelection.tsx"],"sourcesContent":["import React from \"react\";\nimport { Camera, Upload } from \"lucide-react\";\nimport { useI18n } from \"../../hooks/useI18n\";\nimport Title from \"../ui/Title\";\nimport Subtitle from \"../ui/Subtitle\";\nimport Button from \"../ui/Button\";\nimport PageActions from \"../ui/PageActions\";\nimport MobilePageLayout from \"../ui/MobilePageLayout\";\n\ninterface DocumentCollectionMethodSelectionProps {\n onMethodSelect: (method: \"download\" | \"picture\") => void;\n onBack?: () => void;\n title?: string;\n description?: string;\n}\n\nconst DocumentCollectionMethodSelection = ({\n onMethodSelect,\n onBack,\n title,\n description,\n}: DocumentCollectionMethodSelectionProps) => {\n const { t } = useI18n();\n\n return (\n <MobilePageLayout\n footer={\n <PageActions\n primary={onBack ? (\n <Button variant=\"secondary\" onClick={onBack}>\n {t(\"buttons.back\", \"Retour\")}\n </Button>\n ) : undefined}\n />\n }\n >\n <div className=\"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 <div className=\"text-center space-y-4\">\n <Title className=\"text-xl md:text-2xl lg:text-3xl\">\n {title || t(\"document_check.method_selection.title\", \"Choisissez une méthode\")}\n </Title>\n <Subtitle className=\"text-sm text-gray-600 leading-relaxed\">\n {description || t(\"document_check.method_selection.subtitle\", \"Comment souhaitez-vous ajouter votre document ?\")}\n </Subtitle>\n </div>\n\n <div className=\"grid gap-4\">\n <button\n onClick={() => onMethodSelect(\"picture\")}\n className=\"flex items-center p-4 bg-white border-2 border-gray-100 rounded-xl hover:border-teal-500 transition-colors text-left group\"\n >\n <div className=\"w-12 h-12 bg-teal-50 rounded-lg flex items-center justify-center text-teal-600 group-hover:bg-teal-100 transition-colors mr-4\">\n <Camera size={24} />\n </div>\n <div>\n <p className=\"font-semibold text-gray-900\">\n {t(\"document_check.method_selection.picture_title\", \"Prendre une photo\")}\n </p>\n <p className=\"text-sm text-gray-500\">\n {t(\"document_check.method_selection.picture_desc\", \"Utilisez l'appareil photo de votre appareil\")}\n </p>\n </div>\n </button>\n\n <button\n onClick={() => onMethodSelect(\"download\")}\n className=\"flex items-center p-4 bg-white border-2 border-gray-100 rounded-xl hover:border-teal-500 transition-colors text-left group\"\n >\n <div className=\"w-12 h-12 bg-teal-50 rounded-lg flex items-center justify-center text-teal-600 group-hover:bg-teal-100 transition-colors mr-4\">\n <Upload size={24} />\n </div>\n <div>\n <p className=\"font-semibold text-gray-900\">\n {t(\"document_check.method_selection.download_title\", \"Téléverser un fichier\")}\n </p>\n <p className=\"text-sm text-gray-500\">\n {t(\"document_check.method_selection.download_desc\", \"Sélectionnez un fichier sur votre appareil\")}\n </p>\n </div>\n </button>\n </div>\n </div>\n </div>\n </MobilePageLayout>\n );\n};\n\nexport default DocumentCollectionMethodSelection;\n"],"names":["_jsx","_jsxs"],"mappings":";;;;;;;;;AAgBA,IAAM,iCAAiC,GAAG,UAAC,EAKF,EAAA;QAJrC,cAAc,GAAA,EAAA,CAAA,cAAA,EACd,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,KAAK,GAAA,EAAA,CAAA,KAAA,EACL,WAAW,GAAA,EAAA,CAAA,WAAA;AAEH,IAAA,IAAA,CAAC,GAAK,OAAO,EAAE,EAAd;IAET,QACIA,IAAC,gBAAgB,EAAA,EACb,MAAM,EACFA,GAAA,CAAC,WAAW,EAAA,EACR,OAAO,EAAE,MAAM,IACXA,GAAA,CAAC,MAAM,IAAC,OAAO,EAAC,WAAW,EAAC,OAAO,EAAE,MAAM,EAAA,QAAA,EACtC,CAAC,CAAC,cAAc,EAAE,QAAQ,CAAC,EAAA,CACvB,IACT,SAAS,GACf,EAAA,QAAA,EAGNA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,iCAAiC,EAAA,QAAA,EAC5CC,cAAK,SAAS,EAAC,mCAAmC,EAAA,QAAA,EAAA,CAC9CA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,uBAAuB,EAAA,QAAA,EAAA,CAClCD,GAAA,CAAC,KAAK,EAAA,EAAC,SAAS,EAAC,iCAAiC,EAAA,QAAA,EAC7C,KAAK,IAAI,CAAC,CAAC,uCAAuC,EAAE,wBAAwB,CAAC,EAAA,CAC1E,EACRA,GAAA,CAAC,QAAQ,EAAA,EAAC,SAAS,EAAC,uCAAuC,EAAA,QAAA,EACtD,WAAW,IAAI,CAAC,CAAC,0CAA0C,EAAE,iDAAiD,CAAC,GACzG,CAAA,EAAA,CACT,EAENC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,YAAY,aACvBA,IAAA,CAAA,QAAA,EAAA,EACI,OAAO,EAAE,YAAA,EAAM,OAAA,cAAc,CAAC,SAAS,CAAC,CAAA,CAAzB,CAAyB,EACxC,SAAS,EAAC,4HAA4H,EAAA,QAAA,EAAA,CAEtID,aAAK,SAAS,EAAC,+HAA+H,EAAA,QAAA,EAC1IA,GAAA,CAAC,MAAM,EAAA,EAAC,IAAI,EAAE,EAAE,EAAA,CAAI,EAAA,CAClB,EACNC,IAAA,CAAA,KAAA,EAAA,EAAA,QAAA,EAAA,CACID,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,6BAA6B,EAAA,QAAA,EACrC,CAAC,CAAC,+CAA+C,EAAE,mBAAmB,CAAC,EAAA,CACxE,EACJA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,uBAAuB,EAAA,QAAA,EAC/B,CAAC,CAAC,8CAA8C,EAAE,6CAA6C,CAAC,EAAA,CACjG,CAAA,EAAA,CACF,CAAA,EAAA,CACD,EAETC,IAAA,CAAA,QAAA,EAAA,EACI,OAAO,EAAE,YAAA,EAAM,OAAA,cAAc,CAAC,UAAU,CAAC,EAA1B,CAA0B,EACzC,SAAS,EAAC,4HAA4H,EAAA,QAAA,EAAA,CAEtID,aAAK,SAAS,EAAC,+HAA+H,EAAA,QAAA,EAC1IA,GAAA,CAAC,MAAM,IAAC,IAAI,EAAE,EAAE,EAAA,CAAI,EAAA,CAClB,EACNC,yBACID,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,6BAA6B,EAAA,QAAA,EACrC,CAAC,CAAC,gDAAgD,EAAE,uBAAuB,CAAC,EAAA,CAC7E,EACJA,WAAG,SAAS,EAAC,uBAAuB,EAAA,QAAA,EAC/B,CAAC,CAAC,+CAA+C,EAAE,4CAA4C,CAAC,EAAA,CACjG,CAAA,EAAA,CACF,CAAA,EAAA,CACD,IACP,CAAA,EAAA,CACJ,EAAA,CACJ,EAAA,CACS;AAE3B;;;;"}
@@ -30,7 +30,7 @@ var DocumentCollectionSelection = function (_a) {
30
30
  onContinue(selectedDocumentType);
31
31
  }
32
32
  };
33
- return (jsx(MobilePageLayout, { footer: jsx(PageActions, { primary: jsx(Button, { onClick: handleContinueAction, disabled: !selectedDocumentType, children: t("buttons.continue") }), secondary: jsx(Button, { variant: "secondary", onClick: onBack, children: t("buttons.back") }) }), children: jsx("div", { className: "flex-1 flex items-start justify-center md:items-center p-4", children: jsxs("div", { className: "w-full max-w-lg", children: [jsxs("div", { className: "text-center mb-8", children: [jsx(Title, { className: "text-2xl md:text-3xl font-bold text-gray-900 mb-2", children: title }), jsx(Subtitle, { className: "text-gray-600 whitespace-pre-line", children: description })] }), jsxs("div", { className: "mb-6", children: [jsx("label", { className: "block text-sm font-medium text-gray-700 mb-2", children: t("jdi.document_selection.label_identity") }), jsx(Select, { options: documentOptions, value: selectedDocumentType, onValueChange: function (value) { return setSelectedDocumentType(value); }, placeholder: t("jdi.document_selection.placeholder_identity") })] }), selectedDocumentType && (jsxs("div", { className: "bg-gray-50 border border-gray-200 rounded-lg p-4 mb-6", children: [jsx("h3", { className: "font-medium text-gray-900 mb-2", children: t("jdi.document_selection.info_title") }), jsxs("div", { className: "text-sm text-gray-700 space-y-1", children: [jsx("p", { children: t("jdi.document_upload.info_point1") }), jsx("p", { children: t("jdi.document_upload.info_point2") }), jsx("p", { children: t("jdi.document_upload.info_point3") })] })] }))] }) }) }));
33
+ return (jsx(MobilePageLayout, { footer: jsx(PageActions, { primary: jsx(Button, { onClick: handleContinueAction, disabled: !selectedDocumentType, children: t("buttons.continue") }), secondary: onBack ? (jsx(Button, { variant: "secondary", onClick: onBack, children: t("buttons.back") })) : undefined }), children: jsx("div", { className: "flex-1 flex items-start justify-center md:items-center p-4", children: jsxs("div", { className: "w-full max-w-lg", children: [jsxs("div", { className: "text-center mb-8", children: [jsx(Title, { className: "text-2xl md:text-3xl font-bold text-gray-900 mb-2", children: title }), jsx(Subtitle, { className: "text-gray-600 whitespace-pre-line", children: description })] }), jsxs("div", { className: "mb-6", children: [jsx("label", { className: "block text-sm font-medium text-gray-700 mb-2", children: t("jdi.document_selection.label_identity") }), jsx(Select, { options: documentOptions, value: selectedDocumentType, onValueChange: function (value) { return setSelectedDocumentType(value); }, placeholder: t("jdi.document_selection.placeholder_identity") })] }), selectedDocumentType && (jsxs("div", { className: "bg-gray-50 border border-gray-200 rounded-lg p-4 mb-6", children: [jsx("h3", { className: "font-medium text-gray-900 mb-2", children: t("jdi.document_selection.info_title") }), jsxs("div", { className: "text-sm text-gray-700 space-y-1", children: [jsx("p", { children: t("jdi.document_upload.info_point1") }), jsx("p", { children: t("jdi.document_upload.info_point2") }), jsx("p", { children: t("jdi.document_upload.info_point3") })] })] }))] }) }) }));
34
34
  };
35
35
 
36
36
  export { DocumentCollectionSelection as default };
@@ -1 +1 @@
1
- {"version":3,"file":"DocumentCollectionSelection.js","sources":["../../../../../src/components/document-collection/DocumentCollectionSelection.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef } from \"react\";\nimport Title from \"../ui/Title\";\nimport Subtitle from \"../ui/Subtitle\";\nimport Button from \"../ui/Button\";\nimport PageActions from \"../ui/PageActions\";\nimport { Select } from \"../ui/SelectComponent\";\nimport { useI18n } from \"../../hooks/useI18n\";\nimport { DocumentTypeSide } from \"./DocumentCollection\";\nimport MobilePageLayout from \"../ui/MobilePageLayout\";\nimport { stepObject } from \"../../types/session\";\nimport { Card } from \"../ui/Card\";\nimport { Upload } from \"lucide-react\";\nimport PDFPreview from \"../ui/PDFPreview\";\nimport type { onUploadFiles } from \"../../types/uploadFiles\";\n\ninterface AllowedDocumentType {\n id: string;\n name: string;\n side?: DocumentTypeSide;\n}\n\ninterface DocumentCollectionSelectionProps {\n onContinue: (selectedDocumentType: string, files?: onUploadFiles) => void;\n onBack: () => void;\n allowedDocumentTypes: AllowedDocumentType[];\n allowedAddingMethods: string[];\n stepObject?: stepObject;\n documentSelection?: {\n title?: string;\n description?: string;\n };\n}\n\nconst DocumentCollectionSelection = ({\n onContinue,\n onBack,\n allowedDocumentTypes,\n allowedAddingMethods,\n stepObject,\n documentSelection,\n}: DocumentCollectionSelectionProps) => {\n const { t } = useI18n();\n const [selectedDocumentType, setSelectedDocumentType] = useState<string>(\"\");\n\n useEffect(() => {\n if (allowedDocumentTypes.length > 0 && !selectedDocumentType) {\n setSelectedDocumentType(allowedDocumentTypes[0].id);\n }\n }, [allowedDocumentTypes, selectedDocumentType]);\n\n const title =\n documentSelection?.title ||\n t(\"document_upload.selection_title\");\n const description =\n documentSelection?.description ||\n t(\"document_upload.selection_description\");\n\n const documentOptions = allowedDocumentTypes.map((docType) => ({\n value: docType.id,\n label: t(docType.name) || docType.name,\n }));\n\n const handleContinueAction = () => {\n if (selectedDocumentType) {\n onContinue(selectedDocumentType);\n }\n };\n\n return (\n <MobilePageLayout\n footer={\n <PageActions\n primary={\n <Button onClick={handleContinueAction} disabled={!selectedDocumentType}>\n {t(\"buttons.continue\")}\n </Button>\n }\n secondary={\n <Button variant=\"secondary\" onClick={onBack}>\n {t(\"buttons.back\")}\n </Button>\n }\n />\n }\n >\n <div className=\"flex-1 flex items-start justify-center md:items-center p-4\">\n <div className=\"w-full max-w-lg\">\n <div className=\"text-center mb-8\">\n <Title className=\"text-2xl md:text-3xl font-bold text-gray-900 mb-2\">\n {title}\n </Title>\n <Subtitle className=\"text-gray-600 whitespace-pre-line\">{description}</Subtitle>\n </div>\n\n {/* Document Type Selection */}\n <div className=\"mb-6\">\n <label className=\"block text-sm font-medium text-gray-700 mb-2\">\n {t(\"jdi.document_selection.label_identity\")}\n </label>\n <Select\n options={documentOptions}\n value={selectedDocumentType}\n onValueChange={(value) => setSelectedDocumentType(value)}\n placeholder={t(\"jdi.document_selection.placeholder_identity\")}\n />\n </div>\n\n {/* Information about selected document */}\n {selectedDocumentType && (\n <div className=\"bg-gray-50 border border-gray-200 rounded-lg p-4 mb-6\">\n <h3 className=\"font-medium text-gray-900 mb-2\">\n {t(\"jdi.document_selection.info_title\")}\n </h3>\n <div className=\"text-sm text-gray-700 space-y-1\">\n <p>{t(\"jdi.document_upload.info_point1\")}</p>\n <p>{t(\"jdi.document_upload.info_point2\")}</p>\n <p>{t(\"jdi.document_upload.info_point3\")}</p>\n </div>\n </div>\n )}\n </div>\n </div>\n </MobilePageLayout>\n );\n};\n\nexport default DocumentCollectionSelection;\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"DocumentCollectionSelection.js","sources":["../../../../../src/components/document-collection/DocumentCollectionSelection.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef } from \"react\";\nimport Title from \"../ui/Title\";\nimport Subtitle from \"../ui/Subtitle\";\nimport Button from \"../ui/Button\";\nimport PageActions from \"../ui/PageActions\";\nimport { Select } from \"../ui/SelectComponent\";\nimport { useI18n } from \"../../hooks/useI18n\";\nimport { DocumentTypeSide } from \"./DocumentCollection\";\nimport MobilePageLayout from \"../ui/MobilePageLayout\";\nimport { stepObject } from \"../../types/session\";\nimport { Card } from \"../ui/Card\";\nimport { Upload } from \"lucide-react\";\nimport PDFPreview from \"../ui/PDFPreview\";\nimport type { onUploadFiles } from \"../../types/uploadFiles\";\n\ninterface AllowedDocumentType {\n id: string;\n name: string;\n side?: DocumentTypeSide;\n}\n\ninterface DocumentCollectionSelectionProps {\n onContinue: (selectedDocumentType: string, files?: onUploadFiles) => void;\n onBack?: () => void;\n allowedDocumentTypes: AllowedDocumentType[];\n allowedAddingMethods: string[];\n stepObject?: stepObject;\n documentSelection?: {\n title?: string;\n description?: string;\n };\n}\n\nconst DocumentCollectionSelection = ({\n onContinue,\n onBack,\n allowedDocumentTypes,\n allowedAddingMethods,\n stepObject,\n documentSelection,\n}: DocumentCollectionSelectionProps) => {\n const { t } = useI18n();\n const [selectedDocumentType, setSelectedDocumentType] = useState<string>(\"\");\n\n useEffect(() => {\n if (allowedDocumentTypes.length > 0 && !selectedDocumentType) {\n setSelectedDocumentType(allowedDocumentTypes[0].id);\n }\n }, [allowedDocumentTypes, selectedDocumentType]);\n\n const title =\n documentSelection?.title ||\n t(\"document_upload.selection_title\");\n const description =\n documentSelection?.description ||\n t(\"document_upload.selection_description\");\n\n const documentOptions = allowedDocumentTypes.map((docType) => ({\n value: docType.id,\n label: t(docType.name) || docType.name,\n }));\n\n const handleContinueAction = () => {\n if (selectedDocumentType) {\n onContinue(selectedDocumentType);\n }\n };\n\n return (\n <MobilePageLayout\n footer={\n <PageActions\n primary={\n <Button onClick={handleContinueAction} disabled={!selectedDocumentType}>\n {t(\"buttons.continue\")}\n </Button>\n }\n secondary={onBack ? (\n <Button variant=\"secondary\" onClick={onBack}>\n {t(\"buttons.back\")}\n </Button>\n ) : undefined}\n />\n }\n >\n <div className=\"flex-1 flex items-start justify-center md:items-center p-4\">\n <div className=\"w-full max-w-lg\">\n <div className=\"text-center mb-8\">\n <Title className=\"text-2xl md:text-3xl font-bold text-gray-900 mb-2\">\n {title}\n </Title>\n <Subtitle className=\"text-gray-600 whitespace-pre-line\">{description}</Subtitle>\n </div>\n\n {/* Document Type Selection */}\n <div className=\"mb-6\">\n <label className=\"block text-sm font-medium text-gray-700 mb-2\">\n {t(\"jdi.document_selection.label_identity\")}\n </label>\n <Select\n options={documentOptions}\n value={selectedDocumentType}\n onValueChange={(value) => setSelectedDocumentType(value)}\n placeholder={t(\"jdi.document_selection.placeholder_identity\")}\n />\n </div>\n\n {/* Information about selected document */}\n {selectedDocumentType && (\n <div className=\"bg-gray-50 border border-gray-200 rounded-lg p-4 mb-6\">\n <h3 className=\"font-medium text-gray-900 mb-2\">\n {t(\"jdi.document_selection.info_title\")}\n </h3>\n <div className=\"text-sm text-gray-700 space-y-1\">\n <p>{t(\"jdi.document_upload.info_point1\")}</p>\n <p>{t(\"jdi.document_upload.info_point2\")}</p>\n <p>{t(\"jdi.document_upload.info_point3\")}</p>\n </div>\n </div>\n )}\n </div>\n </div>\n </MobilePageLayout>\n );\n};\n\nexport default DocumentCollectionSelection;\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
@@ -148,7 +148,7 @@ var DocumentCollectionUpload = function (_a) {
148
148
  ? t("jdi.processing.download")
149
149
  : requiresTwoSides()
150
150
  ? t("jdi.document_upload.validate_multiple")
151
- : t("jdi.document_upload.validate_single") }), secondary: jsx(Button, { variant: "secondary", onClick: onBack, disabled: isUploading, children: t("buttons.back") }) }), children: jsx("div", { className: "flex-1 flex items-start justify-center md:items-center p-4", children: jsxs("div", { className: "w-full max-w-lg", children: [jsxs("div", { className: "text-center mb-8", children: [jsx("h1", { className: "text-2xl md:text-3xl font-bold text-gray-900 mb-2", children: t("document_upload.upload_title") }), jsx("p", { className: "text-gray-600", children: t("document_upload.upload_description") })] }), error && (jsx("div", { className: "mb-6 p-4 bg-red-50 border border-red-200 rounded-lg text-sm text-red-700", children: error })), jsx(Card, { className: "border-2 border-dashed border-teal-300 bg-teal-50/30 p-8 mb-6 text-center", onDragOver: function (e) { return e.preventDefault(); }, onDrop: function (e) {
151
+ : t("jdi.document_upload.validate_single") }), secondary: onBack ? (jsx(Button, { variant: "secondary", onClick: onBack, disabled: isUploading, children: t("buttons.back") })) : undefined }), children: jsx("div", { className: "flex-1 flex items-start justify-center md:items-center p-4", children: jsxs("div", { className: "w-full max-w-lg", children: [jsxs("div", { className: "text-center mb-8", children: [jsx("h1", { className: "text-2xl md:text-3xl font-bold text-gray-900 mb-2", children: t("document_upload.upload_title") }), jsx("p", { className: "text-gray-600", children: t("document_upload.upload_description") })] }), error && (jsx("div", { className: "mb-6 p-4 bg-red-50 border border-red-200 rounded-lg text-sm text-red-700", children: error })), jsx(Card, { className: "border-2 border-dashed border-teal-300 bg-teal-50/30 p-8 mb-6 text-center", onDragOver: function (e) { return e.preventDefault(); }, onDrop: function (e) {
152
152
  e.preventDefault();
153
153
  var files = e.dataTransfer.files;
154
154
  if (files.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"DocumentCollectionUpload.js","sources":["../../../../../src/components/document-collection/DocumentCollectionUpload.tsx"],"sourcesContent":["import React, { useState, useRef } from \"react\";\nimport Title from \"../ui/Title\";\nimport Subtitle from \"../ui/Subtitle\";\nimport Button from \"../ui/Button\";\nimport PageActions from \"../ui/PageActions\";\nimport { Card } from \"../ui/Card\";\nimport { Upload } from \"lucide-react\";\nimport PDFPreview from \"../ui/PDFPreview\";\nimport type { onUploadFiles } from \"../../types/uploadFiles\";\nimport { useI18n } from \"../../hooks/useI18n\";\nimport MobilePageLayout from \"../ui/MobilePageLayout\";\nimport { DocumentTypeSide } from \"./DocumentCollection\";\nimport {\n logDocumentLoaded,\n logDocumentsValidated,\n} from \"../../services/auditTrailService\";\n\ninterface AllowedDocumentType {\n id: string;\n name: string;\n side?: DocumentTypeSide;\n}\n\ninterface DocumentCollectionUploadProps {\n onUpload: (files: onUploadFiles) => void;\n onBack: () => void;\n selectedDocumentType: string;\n allowedDocumentTypes: AllowedDocumentType[];\n documentSelection?: {\n title?: string;\n description?: string;\n };\n sessionId?: string;\n}\n\nconst DocumentCollectionUpload = ({\n onUpload,\n onBack,\n selectedDocumentType,\n allowedDocumentTypes,\n documentSelection,\n sessionId,\n}: DocumentCollectionUploadProps) => {\n const { t } = useI18n();\n const [frontImage, setFrontImage] = useState<string | null>(null);\n const [backImage, setBackImage] = useState<string | null>(null);\n const [frontIsPDF, setFrontIsPDF] = useState<boolean>(false);\n const [backIsPDF, setBackIsPDF] = useState<boolean>(false);\n const [isUploading, setIsUploading] = useState(false);\n const [error, setError] = useState<string>(\"\");\n const [isDragging, setIsDragging] = useState(false);\n\n const frontInputRef = useRef<HTMLInputElement>(null);\n const multipleInputRef = useRef<HTMLInputElement>(null);\n const dropZoneRef = useRef<HTMLDivElement>(null);\n\n const requiresTwoSides = (): boolean => {\n const selected = allowedDocumentTypes.find(\n (d) => d.id === selectedDocumentType,\n );\n return selected?.side === \"RECTO_VERSO\";\n };\n\n const getSelectedDocumentName = () => {\n const selectedDoc = allowedDocumentTypes.find(\n (doc) => doc.id === selectedDocumentType,\n );\n if (!selectedDoc) return \"document\";\n return t(selectedDoc.name) || selectedDoc.name;\n };\n\n const handleFileChange = (\n event: React.ChangeEvent<HTMLInputElement>,\n side: \"front\" | \"back\" = \"front\",\n ) => {\n const file = event.target.files?.[0];\n if (!file) return;\n\n if (\n !file.type.startsWith(\"image/\") &&\n !file.type.startsWith(\"application/pdf\")\n ) {\n setError(t(\"document_upload.errors.invalid_file_type\"));\n return;\n }\n if (file.size > 10 * 1024 * 1024) {\n setError(t(\"document_upload.errors.file_too_large\"));\n return;\n }\n\n setError(\"\");\n const isFilePDF = file.type === \"application/pdf\";\n const reader = new FileReader();\n reader.onload = (e) => {\n const result = e.target?.result as string;\n if (side === \"front\") {\n setFrontImage(result);\n setFrontIsPDF(isFilePDF);\n } else {\n setBackImage(result);\n setBackIsPDF(isFilePDF);\n }\n };\n reader.readAsDataURL(file);\n };\n\n const handleMultipleFileChange = (\n event: React.ChangeEvent<HTMLInputElement>,\n ) => {\n const files = event.target.files;\n if (!files) return;\n const maxFiles = requiresTwoSides() ? 2 : 1;\n if (files.length > maxFiles) {\n setError(t(\"document_upload.errors.max_files\"));\n return;\n }\n setError(\"\");\n Array.from(files).forEach((file, index) => {\n if (\n !file.type.startsWith(\"image/\") &&\n !file.type.startsWith(\"application/pdf\")\n ) {\n setError(t(\"document_upload.errors.invalid_file_type\"));\n return;\n }\n if (file.size > 10 * 1024 * 1024) {\n setError(t(\"document_upload.errors.file_too_large\"));\n return;\n }\n const isFilePDF = file.type === \"application/pdf\";\n const reader = new FileReader();\n reader.onload = (e) => {\n const result = e.target?.result as string;\n if (index === 0) {\n setFrontImage(result);\n setFrontIsPDF(isFilePDF);\n } else if (index === 1 && requiresTwoSides()) {\n setBackImage(result);\n setBackIsPDF(isFilePDF);\n }\n };\n reader.readAsDataURL(file);\n });\n };\n\n const handleUpload = async () => {\n setError(\"\");\n if (!frontImage) {\n setError(t(\"jdi.document_upload.errors.add_photo_identity\"));\n return;\n }\n\n setIsUploading(true);\n try {\n const files = {\n front: frontImage,\n back: requiresTwoSides() ? backImage : null,\n };\n if (sessionId) {\n logDocumentLoaded(sessionId, \"recto\");\n if (requiresTwoSides() && backImage) {\n logDocumentLoaded(sessionId, \"verso\");\n }\n logDocumentsValidated(sessionId);\n }\n onUpload(files);\n } catch (err) {\n setError(t(\"document_upload.errors.upload_error\"));\n setIsUploading(false);\n }\n };\n\n const removeImage = (side: \"front\" | \"back\" = \"front\") => {\n if (side === \"front\") {\n setFrontImage(null);\n setFrontIsPDF(false);\n } else {\n setBackImage(null);\n setBackIsPDF(false);\n }\n setError(\"\");\n };\n\n return (\n <MobilePageLayout\n footer={\n <PageActions\n primary={\n <Button\n onClick={handleUpload}\n disabled={!frontImage || isUploading}\n >\n {isUploading\n ? t(\"jdi.processing.download\")\n : requiresTwoSides()\n ? t(\"jdi.document_upload.validate_multiple\")\n : t(\"jdi.document_upload.validate_single\")}\n </Button>\n }\n secondary={\n <Button variant=\"secondary\" onClick={onBack} disabled={isUploading}>\n {t(\"buttons.back\")}\n </Button>\n }\n />\n }\n >\n <div className=\"flex-1 flex items-start justify-center md:items-center p-4\">\n <div className=\"w-full max-w-lg\">\n <div className=\"text-center mb-8\">\n <h1 className=\"text-2xl md:text-3xl font-bold text-gray-900 mb-2\">\n {t(\"document_upload.upload_title\")}\n </h1>\n <p className=\"text-gray-600\">\n {t(\"document_upload.upload_description\")}\n </p>\n </div>\n\n {error && (\n <div className=\"mb-6 p-4 bg-red-50 border border-red-200 rounded-lg text-sm text-red-700\">\n {error}\n </div>\n )}\n\n <Card\n className=\"border-2 border-dashed border-teal-300 bg-teal-50/30 p-8 mb-6 text-center\"\n onDragOver={(e) => e.preventDefault()}\n onDrop={(e) => {\n e.preventDefault();\n const files = e.dataTransfer.files;\n if (files.length > 0) {\n const syntheticEvent = { target: { files } } as any;\n requiresTwoSides() ? handleMultipleFileChange(syntheticEvent) : handleFileChange(syntheticEvent);\n }\n }}\n >\n {!frontImage ? (\n <div className=\"space-y-6\">\n <h3 className=\"text-lg font-semibold text-gray-900\">{getSelectedDocumentName()}</h3>\n <Button\n onClick={() => requiresTwoSides() ? multipleInputRef.current?.click() : frontInputRef.current?.click()}\n className=\"bg-teal-600 text-white hover:bg-teal-700 px-6 py-2 rounded-lg font-medium mx-auto flex items-center gap-2\"\n disabled={isUploading}\n >\n <Upload size={18} />\n <span>{t(\"document_upload.browse_files\")}</span>\n </Button>\n <div className=\"text-xs text-gray-500 space-y-1\">\n <p>{t(\"document_upload.accepted_formats\")}</p>\n <p>{requiresTwoSides() ? t(\"document_upload.multiple_files_info\") : t(\"document_upload.single_file_info\")}</p>\n </div>\n </div>\n ) : (\n <div className=\"space-y-4\">\n <div className=\"bg-white border rounded-lg p-4 relative group\">\n <p className=\"text-sm font-medium mb-1\">{frontIsPDF ? t(\"document_upload.pdf_preview\") : t(\"document_upload.image_preview\")}</p>\n {frontIsPDF ? <PDFPreview src={frontImage} /> : <img src={frontImage} alt={t(\"document_upload.front_side\")} className=\"max-h-48 mx-auto\" />}\n <button onClick={() => removeImage(\"front\")} className=\"absolute top-2 right-2 text-red-500 hover:text-red-700\">✕</button>\n </div>\n {requiresTwoSides() && backImage && (\n <div className=\"bg-white border rounded-lg p-4 relative group\">\n <p className=\"text-sm font-medium mb-1\">{t(\"document_upload.back_side\")} {backIsPDF ? \"PDF\" : \"\"}</p>\n {backIsPDF ? <PDFPreview src={backImage} /> : <img src={backImage} alt={t(\"document_upload.back_side\")} className=\"max-h-48 mx-auto\" />}\n <button onClick={() => removeImage(\"back\")} className=\"absolute top-2 right-2 text-red-500 hover:text-red-700\">✕</button>\n </div>\n )}\n {requiresTwoSides() && !backImage && (\n <Button\n onClick={() => {\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.accept = \"image/*,.pdf\";\n input.onchange = (e) => handleFileChange(e as any, \"back\");\n input.click();\n }}\n className=\"text-teal-600 border border-teal-600 bg-transparent hover:bg-teal-50 w-full\"\n >\n {t(\"document_upload.add_back\")}\n </Button>\n )}\n </div>\n )}\n </Card>\n\n <input ref={frontInputRef} type=\"file\" accept=\"image/*,.pdf\" onChange={(e) => handleFileChange(e, \"front\")} className=\"hidden\" />\n <input ref={multipleInputRef} type=\"file\" accept=\"image/*,.pdf\" multiple={true} onChange={handleMultipleFileChange} className=\"hidden\" />\n </div>\n </div>\n </MobilePageLayout>\n );\n};\n\nexport default DocumentCollectionUpload;\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"DocumentCollectionUpload.js","sources":["../../../../../src/components/document-collection/DocumentCollectionUpload.tsx"],"sourcesContent":["import React, { useState, useRef } from \"react\";\nimport Title from \"../ui/Title\";\nimport Subtitle from \"../ui/Subtitle\";\nimport Button from \"../ui/Button\";\nimport PageActions from \"../ui/PageActions\";\nimport { Card } from \"../ui/Card\";\nimport { Upload } from \"lucide-react\";\nimport PDFPreview from \"../ui/PDFPreview\";\nimport type { onUploadFiles } from \"../../types/uploadFiles\";\nimport { useI18n } from \"../../hooks/useI18n\";\nimport MobilePageLayout from \"../ui/MobilePageLayout\";\nimport { DocumentTypeSide } from \"./DocumentCollection\";\nimport {\n logDocumentLoaded,\n logDocumentsValidated,\n} from \"../../services/auditTrailService\";\n\ninterface AllowedDocumentType {\n id: string;\n name: string;\n side?: DocumentTypeSide;\n}\n\ninterface DocumentCollectionUploadProps {\n onUpload: (files: onUploadFiles) => void;\n onBack?: () => void;\n selectedDocumentType: string;\n allowedDocumentTypes: AllowedDocumentType[];\n documentSelection?: {\n title?: string;\n description?: string;\n };\n sessionId?: string;\n}\n\nconst DocumentCollectionUpload = ({\n onUpload,\n onBack,\n selectedDocumentType,\n allowedDocumentTypes,\n documentSelection,\n sessionId,\n}: DocumentCollectionUploadProps) => {\n const { t } = useI18n();\n const [frontImage, setFrontImage] = useState<string | null>(null);\n const [backImage, setBackImage] = useState<string | null>(null);\n const [frontIsPDF, setFrontIsPDF] = useState<boolean>(false);\n const [backIsPDF, setBackIsPDF] = useState<boolean>(false);\n const [isUploading, setIsUploading] = useState(false);\n const [error, setError] = useState<string>(\"\");\n const [isDragging, setIsDragging] = useState(false);\n\n const frontInputRef = useRef<HTMLInputElement>(null);\n const multipleInputRef = useRef<HTMLInputElement>(null);\n const dropZoneRef = useRef<HTMLDivElement>(null);\n\n const requiresTwoSides = (): boolean => {\n const selected = allowedDocumentTypes.find(\n (d) => d.id === selectedDocumentType,\n );\n return selected?.side === \"RECTO_VERSO\";\n };\n\n const getSelectedDocumentName = () => {\n const selectedDoc = allowedDocumentTypes.find(\n (doc) => doc.id === selectedDocumentType,\n );\n if (!selectedDoc) return \"document\";\n return t(selectedDoc.name) || selectedDoc.name;\n };\n\n const handleFileChange = (\n event: React.ChangeEvent<HTMLInputElement>,\n side: \"front\" | \"back\" = \"front\",\n ) => {\n const file = event.target.files?.[0];\n if (!file) return;\n\n if (\n !file.type.startsWith(\"image/\") &&\n !file.type.startsWith(\"application/pdf\")\n ) {\n setError(t(\"document_upload.errors.invalid_file_type\"));\n return;\n }\n if (file.size > 10 * 1024 * 1024) {\n setError(t(\"document_upload.errors.file_too_large\"));\n return;\n }\n\n setError(\"\");\n const isFilePDF = file.type === \"application/pdf\";\n const reader = new FileReader();\n reader.onload = (e) => {\n const result = e.target?.result as string;\n if (side === \"front\") {\n setFrontImage(result);\n setFrontIsPDF(isFilePDF);\n } else {\n setBackImage(result);\n setBackIsPDF(isFilePDF);\n }\n };\n reader.readAsDataURL(file);\n };\n\n const handleMultipleFileChange = (\n event: React.ChangeEvent<HTMLInputElement>,\n ) => {\n const files = event.target.files;\n if (!files) return;\n const maxFiles = requiresTwoSides() ? 2 : 1;\n if (files.length > maxFiles) {\n setError(t(\"document_upload.errors.max_files\"));\n return;\n }\n setError(\"\");\n Array.from(files).forEach((file, index) => {\n if (\n !file.type.startsWith(\"image/\") &&\n !file.type.startsWith(\"application/pdf\")\n ) {\n setError(t(\"document_upload.errors.invalid_file_type\"));\n return;\n }\n if (file.size > 10 * 1024 * 1024) {\n setError(t(\"document_upload.errors.file_too_large\"));\n return;\n }\n const isFilePDF = file.type === \"application/pdf\";\n const reader = new FileReader();\n reader.onload = (e) => {\n const result = e.target?.result as string;\n if (index === 0) {\n setFrontImage(result);\n setFrontIsPDF(isFilePDF);\n } else if (index === 1 && requiresTwoSides()) {\n setBackImage(result);\n setBackIsPDF(isFilePDF);\n }\n };\n reader.readAsDataURL(file);\n });\n };\n\n const handleUpload = async () => {\n setError(\"\");\n if (!frontImage) {\n setError(t(\"jdi.document_upload.errors.add_photo_identity\"));\n return;\n }\n\n setIsUploading(true);\n try {\n const files = {\n front: frontImage,\n back: requiresTwoSides() ? backImage : null,\n };\n if (sessionId) {\n logDocumentLoaded(sessionId, \"recto\");\n if (requiresTwoSides() && backImage) {\n logDocumentLoaded(sessionId, \"verso\");\n }\n logDocumentsValidated(sessionId);\n }\n onUpload(files);\n } catch (err) {\n setError(t(\"document_upload.errors.upload_error\"));\n setIsUploading(false);\n }\n };\n\n const removeImage = (side: \"front\" | \"back\" = \"front\") => {\n if (side === \"front\") {\n setFrontImage(null);\n setFrontIsPDF(false);\n } else {\n setBackImage(null);\n setBackIsPDF(false);\n }\n setError(\"\");\n };\n\n return (\n <MobilePageLayout\n footer={\n <PageActions\n primary={\n <Button\n onClick={handleUpload}\n disabled={!frontImage || isUploading}\n >\n {isUploading\n ? t(\"jdi.processing.download\")\n : requiresTwoSides()\n ? t(\"jdi.document_upload.validate_multiple\")\n : t(\"jdi.document_upload.validate_single\")}\n </Button>\n }\n secondary={onBack ? (\n <Button variant=\"secondary\" onClick={onBack} disabled={isUploading}>\n {t(\"buttons.back\")}\n </Button>\n ) : undefined}\n />\n }\n >\n <div className=\"flex-1 flex items-start justify-center md:items-center p-4\">\n <div className=\"w-full max-w-lg\">\n <div className=\"text-center mb-8\">\n <h1 className=\"text-2xl md:text-3xl font-bold text-gray-900 mb-2\">\n {t(\"document_upload.upload_title\")}\n </h1>\n <p className=\"text-gray-600\">\n {t(\"document_upload.upload_description\")}\n </p>\n </div>\n\n {error && (\n <div className=\"mb-6 p-4 bg-red-50 border border-red-200 rounded-lg text-sm text-red-700\">\n {error}\n </div>\n )}\n\n <Card\n className=\"border-2 border-dashed border-teal-300 bg-teal-50/30 p-8 mb-6 text-center\"\n onDragOver={(e) => e.preventDefault()}\n onDrop={(e) => {\n e.preventDefault();\n const files = e.dataTransfer.files;\n if (files.length > 0) {\n const syntheticEvent = { target: { files } } as any;\n requiresTwoSides() ? handleMultipleFileChange(syntheticEvent) : handleFileChange(syntheticEvent);\n }\n }}\n >\n {!frontImage ? (\n <div className=\"space-y-6\">\n <h3 className=\"text-lg font-semibold text-gray-900\">{getSelectedDocumentName()}</h3>\n <Button\n onClick={() => requiresTwoSides() ? multipleInputRef.current?.click() : frontInputRef.current?.click()}\n className=\"bg-teal-600 text-white hover:bg-teal-700 px-6 py-2 rounded-lg font-medium mx-auto flex items-center gap-2\"\n disabled={isUploading}\n >\n <Upload size={18} />\n <span>{t(\"document_upload.browse_files\")}</span>\n </Button>\n <div className=\"text-xs text-gray-500 space-y-1\">\n <p>{t(\"document_upload.accepted_formats\")}</p>\n <p>{requiresTwoSides() ? t(\"document_upload.multiple_files_info\") : t(\"document_upload.single_file_info\")}</p>\n </div>\n </div>\n ) : (\n <div className=\"space-y-4\">\n <div className=\"bg-white border rounded-lg p-4 relative group\">\n <p className=\"text-sm font-medium mb-1\">{frontIsPDF ? t(\"document_upload.pdf_preview\") : t(\"document_upload.image_preview\")}</p>\n {frontIsPDF ? <PDFPreview src={frontImage} /> : <img src={frontImage} alt={t(\"document_upload.front_side\")} className=\"max-h-48 mx-auto\" />}\n <button onClick={() => removeImage(\"front\")} className=\"absolute top-2 right-2 text-red-500 hover:text-red-700\">✕</button>\n </div>\n {requiresTwoSides() && backImage && (\n <div className=\"bg-white border rounded-lg p-4 relative group\">\n <p className=\"text-sm font-medium mb-1\">{t(\"document_upload.back_side\")} {backIsPDF ? \"PDF\" : \"\"}</p>\n {backIsPDF ? <PDFPreview src={backImage} /> : <img src={backImage} alt={t(\"document_upload.back_side\")} className=\"max-h-48 mx-auto\" />}\n <button onClick={() => removeImage(\"back\")} className=\"absolute top-2 right-2 text-red-500 hover:text-red-700\">✕</button>\n </div>\n )}\n {requiresTwoSides() && !backImage && (\n <Button\n onClick={() => {\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.accept = \"image/*,.pdf\";\n input.onchange = (e) => handleFileChange(e as any, \"back\");\n input.click();\n }}\n className=\"text-teal-600 border border-teal-600 bg-transparent hover:bg-teal-50 w-full\"\n >\n {t(\"document_upload.add_back\")}\n </Button>\n )}\n </div>\n )}\n </Card>\n\n <input ref={frontInputRef} type=\"file\" accept=\"image/*,.pdf\" onChange={(e) => handleFileChange(e, \"front\")} className=\"hidden\" />\n <input ref={multipleInputRef} type=\"file\" accept=\"image/*,.pdf\" multiple={true} onChange={handleMultipleFileChange} className=\"hidden\" />\n </div>\n </div>\n </MobilePageLayout>\n );\n};\n\nexport default DocumentCollectionUpload;\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
@@ -67,7 +67,7 @@ var JDICountrySelection = function (_a) {
67
67
  return t("jdi.country_selection.subtitle_identity");
68
68
  }
69
69
  };
70
- return (jsx(MobilePageLayout, { footer: jsx(PageActions, { primary: jsx(Button, { onClick: handleContinue, disabled: !selectedCountry, children: t("jdi.country_selection.continue") }), secondary: jsx(Button, { variant: "secondary", onClick: onBack, children: t("jdi.country_selection.back") }) }), children: jsx("div", { className: "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: [jsxs("div", { className: "text-center space-y-4", children: [jsx(Title, { className: "text-xl md:text-2xl lg:text-3xl", children: countryIntroText || getTitle() }), jsx(Subtitle, { className: "text-sm text-gray-600 leading-relaxed", children: countryDescText || getSubtitle() })] }), jsxs("div", { className: "space-y-4", children: [jsxs("div", { className: "space-y-2", children: [jsx("label", { className: "block text-sm font-medium text-gray-700", children: t("jdi.country_selection.country_label") }), jsx(Select, { value: selectedCountry, onValueChange: function (value) {
70
+ return (jsx(MobilePageLayout, { footer: jsx(PageActions, { primary: jsx(Button, { onClick: handleContinue, disabled: !selectedCountry, children: t("jdi.country_selection.continue") }), secondary: onBack ? (jsx(Button, { variant: "secondary", onClick: onBack, children: t("jdi.country_selection.back") })) : undefined }), children: jsx("div", { className: "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: [jsxs("div", { className: "text-center space-y-4", children: [jsx(Title, { className: "text-xl md:text-2xl lg:text-3xl", children: countryIntroText || getTitle() }), jsx(Subtitle, { className: "text-sm text-gray-600 leading-relaxed", children: countryDescText || getSubtitle() })] }), jsxs("div", { className: "space-y-4", children: [jsxs("div", { className: "space-y-2", children: [jsx("label", { className: "block text-sm font-medium text-gray-700", children: t("jdi.country_selection.country_label") }), jsx(Select, { value: selectedCountry, onValueChange: function (value) {
71
71
  setSelectedCountry(value);
72
72
  setError("");
73
73
  }, placeholder: t("jdi.country_selection.country_placeholder"), options: countries ? countries : [], allowCustomValue: true }), error && jsx("p", { className: "text-sm text-red-600 mt-1", children: error })] }), 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("jdi.country_selection.info_title") }), jsx("p", { className: "text-sm text-blue-800", children: t("jdi.country_selection.info_description") })] })] })] }) }) }));
@@ -1 +1 @@
1
- {"version":3,"file":"JDICountrySelection.js","sources":["../../../../../src/components/jdi/JDICountrySelection.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from \"react\";\nimport Title from \"../ui/Title\";\nimport Subtitle from \"../ui/Subtitle\";\nimport Button from \"../ui/Button\";\nimport PageActions from \"../ui/PageActions\";\nimport { Select } from \"../ui/SelectComponent\";\nimport { useI18n } from \"../../hooks/useI18n\";\nimport { AcceptedCountry } from \"../../types/session\";\nimport { getCountryInfo } from \"../../utils/jdiCountry\";\nimport { ISO_COUNTRY_CODES } from \"../../utils/isoCountryCodes\";\nimport { getCountryFlag } from \"../../utils/countryFlags\";\nimport MobilePageLayout from \"../ui/MobilePageLayout\";\n\nconst DEFAULT_COUNTRIES = [\n { value: \"FR\", label: \"France\" },\n { value: \"ES\", label: \"Espagne\" },\n { value: \"PT\", label: \"Portugal\" },\n { value: \"DE\", label: \"Allemagne\" },\n { value: \"IT\", label: \"Italie\" },\n { value: \"BE\", label: \"Belgique\" },\n { value: \"NL\", label: \"Pays-Bas\" },\n { value: \"CH\", label: \"Suisse\" },\n { value: \"LU\", label: \"Luxembourg\" },\n { value: \"AT\", label: \"Autriche\" },\n];\n\nconst INTERNATIONAL_COUNTRY = {\n value: \"INT\",\n labelKey: \"jdi.countrySelection.international\",\n fallbackLabel: \"International\",\n};\n\ninterface JDICountrySelectionProps {\n onCountrySelect: (countryId: string) => void;\n onBack: () => void;\n documentTypeId?: string;\n acceptedCountries?: AcceptedCountry[];\n countryIntroText?: string;\n countryDescText?: string;\n}\n\nconst JDICountrySelection = ({\n onCountrySelect,\n onBack,\n documentTypeId,\n acceptedCountries,\n countryIntroText,\n countryDescText,\n}: JDICountrySelectionProps) => {\n const [selectedCountry, setSelectedCountry] = useState<string>(\"\");\n const [error, setError] = useState<string>(\"\");\n const { t } = useI18n();\n\n const countries = useMemo(() => {\n if (acceptedCountries && acceptedCountries.length > 0) {\n const countries = acceptedCountries\n .filter((country) => country.code)\n .map((country) => ({\n value: country.code,\n label: t(country.code),\n flag: getCountryFlag(country.code),\n }))\n .sort((a, b) => a.label.localeCompare(b.label));\n return countries;\n }\n }, [acceptedCountries, t]);\n\n useEffect(() => {\n if (!countries?.length) {\n return;\n }\n\n const hasSelectedCountry = countries.some(\n (country) => country.value === selectedCountry\n );\n\n if (!hasSelectedCountry) {\n const initialCountry = countries.length === 1 ? countries[0].value : \"\";\n setSelectedCountry(initialCountry);\n setError(\"\");\n }\n }, [countries, selectedCountry]);\n\n const handleContinue = () => {\n if (!selectedCountry) {\n setError(t(\"jdi.country_selection.error_select_country\"));\n return;\n }\n setError(\"\");\n onCountrySelect(selectedCountry);\n };\n\n // Déterminer le titre en fonction du type de document\n const getTitle = () => {\n switch (documentTypeId) {\n case \"jdd\":\n return t(\"jdi.country_selection.title_jdd\");\n case \"income-proof\":\n return t(\"jdi.country_selection.title_income_proof\");\n default:\n return t(\"jdi.country_selection.title_identity\");\n }\n };\n\n const getSubtitle = () => {\n switch (documentTypeId) {\n case \"jdd\":\n return t(\"jdi.country_selection.subtitle_jdd\");\n case \"income-proof\":\n return t(\"jdi.country_selection.subtitle_income_proof\");\n default:\n return t(\"jdi.country_selection.subtitle_identity\");\n }\n };\n\n return (\n <MobilePageLayout\n footer={\n <PageActions\n primary={\n <Button onClick={handleContinue} disabled={!selectedCountry}>\n {t(\"jdi.country_selection.continue\")}\n </Button>\n }\n secondary={\n <Button variant=\"secondary\" onClick={onBack}>\n {t(\"jdi.country_selection.back\")}\n </Button>\n }\n />\n }\n >\n <div className=\"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 {/* Header */}\n <div className=\"text-center space-y-4\">\n <Title className=\"text-xl md:text-2xl lg:text-3xl\">\n {countryIntroText || getTitle()}\n </Title>\n <Subtitle className=\"text-sm text-gray-600 leading-relaxed\">\n {countryDescText || getSubtitle()}\n </Subtitle>\n </div>\n\n {/* Country selection */}\n <div className=\"space-y-4\">\n <div className=\"space-y-2\">\n <label className=\"block text-sm font-medium text-gray-700\">\n {t(\"jdi.country_selection.country_label\")}\n </label>\n <Select\n value={selectedCountry}\n onValueChange={(value: string) => {\n setSelectedCountry(value);\n setError(\"\");\n }}\n placeholder={t(\"jdi.country_selection.country_placeholder\")}\n options={countries ? countries : []}\n allowCustomValue={true}\n />\n {error && <p className=\"text-sm text-red-600 mt-1\">{error}</p>}\n </div>\n\n {/* Information card */}\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(\"jdi.country_selection.info_title\")}\n </h3>\n <p className=\"text-sm text-blue-800\">\n {t(\"jdi.country_selection.info_description\")}\n </p>\n </div>\n </div>\n </div>\n </div>\n </MobilePageLayout>\n );\n};\n\nexport default JDICountrySelection;\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"JDICountrySelection.js","sources":["../../../../../src/components/jdi/JDICountrySelection.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from \"react\";\nimport Title from \"../ui/Title\";\nimport Subtitle from \"../ui/Subtitle\";\nimport Button from \"../ui/Button\";\nimport PageActions from \"../ui/PageActions\";\nimport { Select } from \"../ui/SelectComponent\";\nimport { useI18n } from \"../../hooks/useI18n\";\nimport { AcceptedCountry } from \"../../types/session\";\nimport { getCountryInfo } from \"../../utils/jdiCountry\";\nimport { ISO_COUNTRY_CODES } from \"../../utils/isoCountryCodes\";\nimport { getCountryFlag } from \"../../utils/countryFlags\";\nimport MobilePageLayout from \"../ui/MobilePageLayout\";\n\nconst DEFAULT_COUNTRIES = [\n { value: \"FR\", label: \"France\" },\n { value: \"ES\", label: \"Espagne\" },\n { value: \"PT\", label: \"Portugal\" },\n { value: \"DE\", label: \"Allemagne\" },\n { value: \"IT\", label: \"Italie\" },\n { value: \"BE\", label: \"Belgique\" },\n { value: \"NL\", label: \"Pays-Bas\" },\n { value: \"CH\", label: \"Suisse\" },\n { value: \"LU\", label: \"Luxembourg\" },\n { value: \"AT\", label: \"Autriche\" },\n];\n\nconst INTERNATIONAL_COUNTRY = {\n value: \"INT\",\n labelKey: \"jdi.countrySelection.international\",\n fallbackLabel: \"International\",\n};\n\ninterface JDICountrySelectionProps {\n onCountrySelect: (countryId: string) => void;\n onBack?: () => void;\n documentTypeId?: string;\n acceptedCountries?: AcceptedCountry[];\n countryIntroText?: string;\n countryDescText?: string;\n}\n\nconst JDICountrySelection = ({\n onCountrySelect,\n onBack,\n documentTypeId,\n acceptedCountries,\n countryIntroText,\n countryDescText,\n}: JDICountrySelectionProps) => {\n const [selectedCountry, setSelectedCountry] = useState<string>(\"\");\n const [error, setError] = useState<string>(\"\");\n const { t } = useI18n();\n\n const countries = useMemo(() => {\n if (acceptedCountries && acceptedCountries.length > 0) {\n const countries = acceptedCountries\n .filter((country) => country.code)\n .map((country) => ({\n value: country.code,\n label: t(country.code),\n flag: getCountryFlag(country.code),\n }))\n .sort((a, b) => a.label.localeCompare(b.label));\n return countries;\n }\n }, [acceptedCountries, t]);\n\n useEffect(() => {\n if (!countries?.length) {\n return;\n }\n\n const hasSelectedCountry = countries.some(\n (country) => country.value === selectedCountry\n );\n\n if (!hasSelectedCountry) {\n const initialCountry = countries.length === 1 ? countries[0].value : \"\";\n setSelectedCountry(initialCountry);\n setError(\"\");\n }\n }, [countries, selectedCountry]);\n\n const handleContinue = () => {\n if (!selectedCountry) {\n setError(t(\"jdi.country_selection.error_select_country\"));\n return;\n }\n setError(\"\");\n onCountrySelect(selectedCountry);\n };\n\n // Déterminer le titre en fonction du type de document\n const getTitle = () => {\n switch (documentTypeId) {\n case \"jdd\":\n return t(\"jdi.country_selection.title_jdd\");\n case \"income-proof\":\n return t(\"jdi.country_selection.title_income_proof\");\n default:\n return t(\"jdi.country_selection.title_identity\");\n }\n };\n\n const getSubtitle = () => {\n switch (documentTypeId) {\n case \"jdd\":\n return t(\"jdi.country_selection.subtitle_jdd\");\n case \"income-proof\":\n return t(\"jdi.country_selection.subtitle_income_proof\");\n default:\n return t(\"jdi.country_selection.subtitle_identity\");\n }\n };\n\n return (\n <MobilePageLayout\n footer={\n <PageActions\n primary={\n <Button onClick={handleContinue} disabled={!selectedCountry}>\n {t(\"jdi.country_selection.continue\")}\n </Button>\n }\n secondary={onBack ? (\n <Button variant=\"secondary\" onClick={onBack}>\n {t(\"jdi.country_selection.back\")}\n </Button>\n ) : undefined}\n />\n }\n >\n <div className=\"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 {/* Header */}\n <div className=\"text-center space-y-4\">\n <Title className=\"text-xl md:text-2xl lg:text-3xl\">\n {countryIntroText || getTitle()}\n </Title>\n <Subtitle className=\"text-sm text-gray-600 leading-relaxed\">\n {countryDescText || getSubtitle()}\n </Subtitle>\n </div>\n\n {/* Country selection */}\n <div className=\"space-y-4\">\n <div className=\"space-y-2\">\n <label className=\"block text-sm font-medium text-gray-700\">\n {t(\"jdi.country_selection.country_label\")}\n </label>\n <Select\n value={selectedCountry}\n onValueChange={(value: string) => {\n setSelectedCountry(value);\n setError(\"\");\n }}\n placeholder={t(\"jdi.country_selection.country_placeholder\")}\n options={countries ? countries : []}\n allowCustomValue={true}\n />\n {error && <p className=\"text-sm text-red-600 mt-1\">{error}</p>}\n </div>\n\n {/* Information card */}\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(\"jdi.country_selection.info_title\")}\n </h3>\n <p className=\"text-sm text-blue-800\">\n {t(\"jdi.country_selection.info_description\")}\n </p>\n </div>\n </div>\n </div>\n </div>\n </MobilePageLayout>\n );\n};\n\nexport default JDICountrySelection;\n"],"names":["_jsx","_jsxs"],"mappings":";;;;;;;;;;;AAyCA,IAAM,mBAAmB,GAAG,UAAC,EAOF,EAAA;AANzB,IAAA,IAAA,eAAe,GAAA,EAAA,CAAA,eAAA,EACf,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,cAAc,GAAA,EAAA,CAAA,cAAA,EACd,iBAAiB,uBAAA,EACjB,gBAAgB,GAAA,EAAA,CAAA,gBAAA,EAChB,eAAe,GAAA,EAAA,CAAA,eAAA;IAET,IAAA,EAAA,GAAwC,QAAQ,CAAS,EAAE,CAAC,EAA3D,eAAe,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,kBAAkB,GAAA,EAAA,CAAA,CAAA,CAAwB;IAC5D,IAAA,EAAA,GAAoB,QAAQ,CAAS,EAAE,CAAC,EAAvC,KAAK,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,CAAA,CAAwB;AACtC,IAAA,IAAA,CAAC,GAAK,OAAO,EAAE,EAAd;IAET,IAAM,SAAS,GAAG,OAAO,CAAC,YAAA;QACxB,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;YACrD,IAAM,WAAS,GAAG;iBACf,MAAM,CAAC,UAAC,OAAO,EAAA,EAAK,OAAA,OAAO,CAAC,IAAI,CAAA,CAAZ,CAAY;AAChC,iBAAA,GAAG,CAAC,UAAC,OAAO,EAAA,EAAK,QAAC;gBACjB,KAAK,EAAE,OAAO,CAAC,IAAI;AACnB,gBAAA,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;AACtB,gBAAA,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC;aACnC,EAAC,CAJgB,CAIhB;iBACD,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA,CAA9B,CAA8B,CAAC;AACjD,YAAA,OAAO,WAAS;QAClB;AACF,IAAA,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;AAE1B,IAAA,SAAS,CAAC,YAAA;QACR,IAAI,EAAC,SAAS,KAAA,IAAA,IAAT,SAAS,KAAA,MAAA,GAAA,MAAA,GAAT,SAAS,CAAE,MAAM,CAAA,EAAE;YACtB;QACF;AAEA,QAAA,IAAM,kBAAkB,GAAG,SAAS,CAAC,IAAI,CACvC,UAAC,OAAO,EAAA,EAAK,OAAA,OAAO,CAAC,KAAK,KAAK,eAAe,CAAA,CAAjC,CAAiC,CAC/C;QAED,IAAI,CAAC,kBAAkB,EAAE;YACvB,IAAM,cAAc,GAAG,SAAS,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;YACvE,kBAAkB,CAAC,cAAc,CAAC;YAClC,QAAQ,CAAC,EAAE,CAAC;QACd;AACF,IAAA,CAAC,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;AAEhC,IAAA,IAAM,cAAc,GAAG,YAAA;QACrB,IAAI,CAAC,eAAe,EAAE;AACpB,YAAA,QAAQ,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC;YACzD;QACF;QACA,QAAQ,CAAC,EAAE,CAAC;QACZ,eAAe,CAAC,eAAe,CAAC;AAClC,IAAA,CAAC;;AAGD,IAAA,IAAM,QAAQ,GAAG,YAAA;QACf,QAAQ,cAAc;AACpB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,CAAC,CAAC,iCAAiC,CAAC;AAC7C,YAAA,KAAK,cAAc;AACjB,gBAAA,OAAO,CAAC,CAAC,0CAA0C,CAAC;AACtD,YAAA;AACE,gBAAA,OAAO,CAAC,CAAC,sCAAsC,CAAC;;AAEtD,IAAA,CAAC;AAED,IAAA,IAAM,WAAW,GAAG,YAAA;QAClB,QAAQ,cAAc;AACpB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,CAAC,CAAC,oCAAoC,CAAC;AAChD,YAAA,KAAK,cAAc;AACjB,gBAAA,OAAO,CAAC,CAAC,6CAA6C,CAAC;AACzD,YAAA;AACE,gBAAA,OAAO,CAAC,CAAC,yCAAyC,CAAC;;AAEzD,IAAA,CAAC;AAED,IAAA,QACEA,GAAA,CAAC,gBAAgB,EAAA,EACf,MAAM,EACJA,GAAA,CAAC,WAAW,EAAA,EACV,OAAO,EACLA,GAAA,CAAC,MAAM,EAAA,EAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,eAAe,EAAA,QAAA,EACxD,CAAC,CAAC,gCAAgC,CAAC,EAAA,CAC7B,EAEX,SAAS,EAAE,MAAM,IACfA,GAAA,CAAC,MAAM,EAAA,EAAC,OAAO,EAAC,WAAW,EAAC,OAAO,EAAE,MAAM,YACxC,CAAC,CAAC,4BAA4B,CAAC,EAAA,CACzB,IACP,SAAS,EAAA,CACb,EAAA,QAAA,EAGJA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,iCAAiC,YAC9CC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,mCAAmC,EAAA,QAAA,EAAA,CAEhDA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,uBAAuB,EAAA,QAAA,EAAA,CACpCD,GAAA,CAAC,KAAK,EAAA,EAAC,SAAS,EAAC,iCAAiC,YAC/C,gBAAgB,IAAI,QAAQ,EAAE,EAAA,CACzB,EACRA,GAAA,CAAC,QAAQ,EAAA,EAAC,SAAS,EAAC,uCAAuC,EAAA,QAAA,EACxD,eAAe,IAAI,WAAW,EAAE,EAAA,CACxB,CAAA,EAAA,CACP,EAGNC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,CACxBA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,CACxBD,GAAA,CAAA,OAAA,EAAA,EAAO,SAAS,EAAC,yCAAyC,EAAA,QAAA,EACvD,CAAC,CAAC,qCAAqC,CAAC,EAAA,CACnC,EACRA,GAAA,CAAC,MAAM,EAAA,EACL,KAAK,EAAE,eAAe,EACtB,aAAa,EAAE,UAAC,KAAa,EAAA;4CAC3B,kBAAkB,CAAC,KAAK,CAAC;4CACzB,QAAQ,CAAC,EAAE,CAAC;AACd,wCAAA,CAAC,EACD,WAAW,EAAE,CAAC,CAAC,2CAA2C,CAAC,EAC3D,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,EAAE,EACnC,gBAAgB,EAAE,IAAI,EAAA,CACtB,EACD,KAAK,IAAIA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,2BAA2B,YAAE,KAAK,EAAA,CAAK,CAAA,EAAA,CAC1D,EAGNC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,kDAAkD,aAC/DD,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,gCAAgC,EAAA,QAAA,EAC3C,CAAC,CAAC,kCAAkC,CAAC,EAAA,CACnC,EACLA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,uBAAuB,EAAA,QAAA,EACjC,CAAC,CAAC,wCAAwC,CAAC,EAAA,CAC1C,CAAA,EAAA,CACA,CAAA,EAAA,CACF,CAAA,EAAA,CACF,EAAA,CACF,EAAA,CACW;AAEvB;;;;"}
@@ -169,7 +169,7 @@ var JDIDocumentSelection = function (_a) {
169
169
  ];
170
170
  }
171
171
  };
172
- return (jsx(MobilePageLayout, { contentClassName: "h-full", footer: jsx(PageActions, { primary: jsx(Button, { onClick: handleContinue, disabled: !selectedDocument, children: t("jdi.document_selection.continue") }), secondary: jsx(Button, { variant: "secondary", onClick: onBack, children: t("jdi.document_selection.back") }) }), children: jsx("div", { className: "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: [jsxs("div", { className: "text-center space-y-4", children: [jsx(Title, { className: "text-xl md:text-2xl lg:text-3xl", children: documentSelectionTitle || getTitle() }), jsx(Subtitle, { className: "text-sm text-gray-600 leading-relaxed whitespace-pre-line", children: documentSelectionDescription || getSubtitle() })] }), jsxs("div", { className: "space-y-4", children: [jsxs("div", { children: [jsxs("label", { className: "block text-sm font-medium text-gray-700 mb-2", children: [getLabel(), " *"] }), jsx(Select, { options: documentOptions, value: selectedDocument, onValueChange: function (value) {
172
+ return (jsx(MobilePageLayout, { contentClassName: "h-full", footer: jsx(PageActions, { primary: jsx(Button, { onClick: handleContinue, disabled: !selectedDocument, children: t("jdi.document_selection.continue") }), secondary: onBack ? (jsx(Button, { variant: "secondary", onClick: onBack, children: t("jdi.document_selection.back") })) : undefined }), children: jsx("div", { className: "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: [jsxs("div", { className: "text-center space-y-4", children: [jsx(Title, { className: "text-xl md:text-2xl lg:text-3xl", children: documentSelectionTitle || getTitle() }), jsx(Subtitle, { className: "text-sm text-gray-600 leading-relaxed whitespace-pre-line", children: documentSelectionDescription || getSubtitle() })] }), jsxs("div", { className: "space-y-4", children: [jsxs("div", { children: [jsxs("label", { className: "block text-sm font-medium text-gray-700 mb-2", children: [getLabel(), " *"] }), jsx(Select, { options: documentOptions, value: selectedDocument, onValueChange: function (value) {
173
173
  setSelectedDocument(value);
174
174
  setError("");
175
175
  }, placeholder: getPlaceholder() }), error && (jsxs("p", { className: "mt-1 text-sm text-red-600 flex items-center", children: [jsx("span", { className: "mr-1", children: "\u26A0" }), error] }))] }), selectedDocument && !nfcEnabled && (jsxs("div", { className: "bg-gray-50 border border-gray-200 rounded-lg p-4", children: [jsx("h3", { className: "font-medium text-gray-900 mb-2", children: t("jdi.document_selection.info_title") }), jsx("div", { className: "text-sm text-gray-700 space-y-1", children: getInstructions().map(function (instruction, index) { return (jsx("p", { children: instruction }, index)); }) })] })), nfcEnabled && jsx(NfcOnboardingNotice, {})] })] }) }) }));
@@ -1 +1 @@
1
- {"version":3,"file":"JDIDocumentSelection.js","sources":["../../../../../src/components/jdi/JDIDocumentSelection.tsx"],"sourcesContent":["import { useState, useEffect } from \"react\";\nimport Title from \"../ui/Title\";\nimport Subtitle from \"../ui/Subtitle\";\nimport Button from \"../ui/Button\";\nimport PageActions from \"../ui/PageActions\";\nimport { Select } from \"../ui/SelectComponent\";\nimport { useI18n } from \"../../hooks/useI18n\";\nimport { AcceptedCountry } from \"../../types/session\";\nimport MobilePageLayout from \"../ui/MobilePageLayout\";\nimport NfcOnboardingNotice from \"../nfc-scan/NfcOnboardingNotice\";\n\nconst DOCUMENT_KEYS: Array<{\n key: keyof AcceptedCountry[\"documents\"];\n value: string;\n translationKey: string;\n fallbackLabel: string;\n}> = [\n {\n key: \"passport\",\n value: \"passport\",\n translationKey: \"documentTypes.Passport\",\n fallbackLabel: \"Passeport\",\n },\n {\n key: \"idCard\",\n value: \"idCard\",\n translationKey: \"documentTypes.IdCard\",\n fallbackLabel: \"Carte nationale d'identité\",\n },\n {\n key: \"driverLicense\",\n value: \"driverLicense\",\n translationKey: \"documentTypes.Driving_license\",\n fallbackLabel: \"Permis de conduire\",\n },\n {\n key: \"residencePermit\",\n value: \"residencePermit\",\n translationKey: \"documentTypes.Residence_permit\",\n fallbackLabel: \"Titre de séjour\",\n },\n {\n key: \"pinkDriverLicense\",\n value: \"pinkDriverLicense\",\n translationKey: \"documentTypes.Pink_driving_license\",\n fallbackLabel: \"Permis de conduire rose (ancien format)\",\n },\n ];\n\ninterface JDIDocumentSelectionProps {\n onDocumentSelect: (documentType: string) => void;\n onBack: () => void;\n documentTypeId?: string; // ID du type de document (jdd, income-proof, etc.)\n sessionId?: string; // Session ID pour récupérer les options stockées\n chosenCountry?: AcceptedCountry; // Pays choisi par l'utilisateur\n documentSelectionTitle?: string;\n documentSelectionDescription?: string;\n nfcEnabled?: boolean; // Affiche l'onboarding NFC quand le parcours utilise la lecture sans contact\n}\n\nconst JDIDocumentSelection = ({\n onDocumentSelect,\n onBack,\n documentTypeId,\n sessionId,\n chosenCountry,\n documentSelectionTitle,\n documentSelectionDescription,\n nfcEnabled = false,\n}: JDIDocumentSelectionProps) => {\n const [selectedDocument, setSelectedDocument] = useState<string>(\"\");\n const [error, setError] = useState<string>(\"\");\n const [documentOptions, setDocumentOptions] = useState<\n { value: string; label: string }[]\n >([]);\n\n const { t } = useI18n();\n\n // Récupérer les options de documents spécifiques à la session\n useEffect(() => {\n console.log(\"Retrieving document options for session:\", sessionId);\n console.log(\"Chosen country:\", chosenCountry);\n if (chosenCountry?.documents) {\n const options = DOCUMENT_KEYS.filter(({ key }) => {\n const docs = chosenCountry.documents[key];\n return Array.isArray(docs) && docs.length > 0;\n }).map(({ value, translationKey, fallbackLabel }) => ({\n value,\n label: t(translationKey, fallbackLabel),\n }));\n console.log(\"Available document options:\", options);\n setDocumentOptions(options);\n } else {\n setDocumentOptions([]);\n }\n }, []);\n\n // SKIPPED if only one option, select it by default and skip to next step\n // useEffect(() => {\n // if (documentOptions.length === 1) {\n // setSelectedDocument(documentOptions[0].value);\n // setError(\"\");\n // onDocumentSelect(documentOptions[0].value);\n // }\n // }, [documentOptions, onDocumentSelect]);\n\n const handleContinue = () => {\n if (!selectedDocument) {\n setError(t(\"jdi.document_selection.error_select_document\"));\n return;\n }\n setError(\"\");\n\n onDocumentSelect(selectedDocument);\n };\n\n // Déterminer le titre en fonction du type de document\n const getTitle = () => {\n switch (documentTypeId) {\n case \"jdd\":\n return t(\"jdi.document_selection.title_jdd\");\n case \"income-proof\":\n return t(\"jdi.document_selection.title_income_proof\");\n default:\n return t(\"jdi.document_selection.title_identity\");\n }\n };\n\n const getSubtitle = () => {\n switch (documentTypeId) {\n case \"jdd\":\n return t(\"jdi.document_selection.subtitle_jdd\");\n case \"income-proof\":\n return t(\"jdi.document_selection.subtitle_income_proof\");\n default:\n return nfcEnabled\n ? t(\"jdi.document_selection.subtitle_identity_nfc\")\n : t(\"jdi.document_selection.subtitle_identity\");\n }\n };\n\n const getLabel = () => {\n switch (documentTypeId) {\n case \"jdd\":\n return t(\"jdi.document_selection.label_jdd\");\n case \"income-proof\":\n return t(\"jdi.document_selection.label_income_proof\");\n default:\n return t(\"jdi.document_selection.label_identity\");\n }\n };\n\n const getPlaceholder = () => {\n switch (documentTypeId) {\n case \"jdd\":\n return t(\"jdi.document_selection.placeholder_jdd\");\n case \"income-proof\":\n return t(\"jdi.document_selection.placeholder_income_proof\");\n default:\n return t(\"jdi.document_selection.placeholder_identity\");\n }\n };\n\n const getInstructions = () => {\n // Identity documents\n switch (selectedDocument) {\n case \"idCard\":\n return [\n t(\"jdi.document_selection.instructions.idCard.recto_verso\"),\n t(\"jdi.document_selection.instructions.idCard.readable\"),\n t(\"jdi.document_selection.instructions.idCard.valid\"),\n ];\n case \"passport\":\n return [\n t(\"jdi.document_selection.instructions.passport.photo_page\"),\n t(\"jdi.document_selection.instructions.passport.valid\"),\n t(\"jdi.document_selection.instructions.passport.readable\"),\n ];\n case \"driverLicense\":\n return [\n t(\"jdi.document_selection.instructions.driverLicense.recto_verso\"),\n t(\"jdi.document_selection.instructions.driverLicense.not_expired\"),\n t(\"jdi.document_selection.instructions.driverLicense.all_visible\"),\n ];\n case \"pinkDriverLicense\":\n return [\n t(\n \"jdi.document_selection.instructions.pinkDriverLicense.recto_verso\",\n \"Assurez-vous que le document soit visible\",\n ),\n t(\n \"jdi.document_selection.instructions.pinkDriverLicense.not_expired\",\n \"Vérifiez que le permis n'est pas expiré\",\n ),\n t(\n \"jdi.document_selection.instructions.pinkDriverLicense.all_visible\",\n \"Toutes les informations doivent être lisibles\",\n ),\n ];\n case \"residencePermit\":\n return [\n t(\"jdi.document_selection.instructions.residencePermit.recto_verso\"),\n t(\"jdi.document_selection.instructions.residencePermit.valid\"),\n t(\"jdi.document_selection.instructions.residencePermit.readable\"),\n ];\n default:\n return [\n t(\"jdi.document_selection.instructions.default.valid\"),\n t(\"jdi.document_selection.instructions.default.readable\"),\n ];\n }\n };\n\n return (\n <MobilePageLayout\n contentClassName=\"h-full\"\n footer={\n <PageActions\n primary={\n <Button onClick={handleContinue} disabled={!selectedDocument}>\n {t(\"jdi.document_selection.continue\")}\n </Button>\n }\n secondary={\n <Button variant=\"secondary\" onClick={onBack}>\n {t(\"jdi.document_selection.back\")}\n </Button>\n }\n />\n }\n >\n <div className=\"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 {/* Header */}\n <div className=\"text-center space-y-4\">\n <Title className=\"text-xl md:text-2xl lg:text-3xl\">\n {documentSelectionTitle || getTitle()}\n </Title>\n <Subtitle className=\"text-sm text-gray-600 leading-relaxed whitespace-pre-line\">\n {documentSelectionDescription || getSubtitle()}\n </Subtitle>\n </div>\n\n {/* Document selection */}\n <div className=\"space-y-4\">\n <div>\n <label className=\"block text-sm font-medium text-gray-700 mb-2\">\n {getLabel()} *\n </label>\n <Select\n options={documentOptions}\n value={selectedDocument}\n onValueChange={(value) => {\n setSelectedDocument(value);\n setError(\"\");\n }}\n placeholder={getPlaceholder()}\n />\n {error && (\n <p className=\"mt-1 text-sm text-red-600 flex items-center\">\n <span className=\"mr-1\">⚠</span>\n {error}\n </p>\n )}\n </div>\n\n {/* Information about selected document — masqué en NFC (les instructions\n de téléversement ne s'appliquent pas, l'onboarding NFC les remplace) */}\n {selectedDocument && !nfcEnabled && (\n <div className=\"bg-gray-50 border border-gray-200 rounded-lg p-4\">\n <h3 className=\"font-medium text-gray-900 mb-2\">\n {t(\"jdi.document_selection.info_title\")}\n </h3>\n <div className=\"text-sm text-gray-700 space-y-1\">\n {getInstructions().map((instruction, index) => (\n <p key={index}>{instruction}</p>\n ))}\n </div>\n </div>\n )}\n\n {/* NFC onboarding — affiché uniquement quand le parcours utilise la lecture sans contact */}\n {nfcEnabled && <NfcOnboardingNotice />}\n </div>\n </div>\n </div>\n </MobilePageLayout>\n );\n};\n\nexport default JDIDocumentSelection;\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"JDIDocumentSelection.js","sources":["../../../../../src/components/jdi/JDIDocumentSelection.tsx"],"sourcesContent":["import { useState, useEffect } from \"react\";\nimport Title from \"../ui/Title\";\nimport Subtitle from \"../ui/Subtitle\";\nimport Button from \"../ui/Button\";\nimport PageActions from \"../ui/PageActions\";\nimport { Select } from \"../ui/SelectComponent\";\nimport { useI18n } from \"../../hooks/useI18n\";\nimport { AcceptedCountry } from \"../../types/session\";\nimport MobilePageLayout from \"../ui/MobilePageLayout\";\nimport NfcOnboardingNotice from \"../nfc-scan/NfcOnboardingNotice\";\n\nconst DOCUMENT_KEYS: Array<{\n key: keyof AcceptedCountry[\"documents\"];\n value: string;\n translationKey: string;\n fallbackLabel: string;\n}> = [\n {\n key: \"passport\",\n value: \"passport\",\n translationKey: \"documentTypes.Passport\",\n fallbackLabel: \"Passeport\",\n },\n {\n key: \"idCard\",\n value: \"idCard\",\n translationKey: \"documentTypes.IdCard\",\n fallbackLabel: \"Carte nationale d'identité\",\n },\n {\n key: \"driverLicense\",\n value: \"driverLicense\",\n translationKey: \"documentTypes.Driving_license\",\n fallbackLabel: \"Permis de conduire\",\n },\n {\n key: \"residencePermit\",\n value: \"residencePermit\",\n translationKey: \"documentTypes.Residence_permit\",\n fallbackLabel: \"Titre de séjour\",\n },\n {\n key: \"pinkDriverLicense\",\n value: \"pinkDriverLicense\",\n translationKey: \"documentTypes.Pink_driving_license\",\n fallbackLabel: \"Permis de conduire rose (ancien format)\",\n },\n ];\n\ninterface JDIDocumentSelectionProps {\n onDocumentSelect: (documentType: string) => void;\n onBack?: () => void;\n documentTypeId?: string; // ID du type de document (jdd, income-proof, etc.)\n sessionId?: string; // Session ID pour récupérer les options stockées\n chosenCountry?: AcceptedCountry; // Pays choisi par l'utilisateur\n documentSelectionTitle?: string;\n documentSelectionDescription?: string;\n nfcEnabled?: boolean; // Affiche l'onboarding NFC quand le parcours utilise la lecture sans contact\n}\n\nconst JDIDocumentSelection = ({\n onDocumentSelect,\n onBack,\n documentTypeId,\n sessionId,\n chosenCountry,\n documentSelectionTitle,\n documentSelectionDescription,\n nfcEnabled = false,\n}: JDIDocumentSelectionProps) => {\n const [selectedDocument, setSelectedDocument] = useState<string>(\"\");\n const [error, setError] = useState<string>(\"\");\n const [documentOptions, setDocumentOptions] = useState<\n { value: string; label: string }[]\n >([]);\n\n const { t } = useI18n();\n\n // Récupérer les options de documents spécifiques à la session\n useEffect(() => {\n console.log(\"Retrieving document options for session:\", sessionId);\n console.log(\"Chosen country:\", chosenCountry);\n if (chosenCountry?.documents) {\n const options = DOCUMENT_KEYS.filter(({ key }) => {\n const docs = chosenCountry.documents[key];\n return Array.isArray(docs) && docs.length > 0;\n }).map(({ value, translationKey, fallbackLabel }) => ({\n value,\n label: t(translationKey, fallbackLabel),\n }));\n console.log(\"Available document options:\", options);\n setDocumentOptions(options);\n } else {\n setDocumentOptions([]);\n }\n }, []);\n\n // SKIPPED if only one option, select it by default and skip to next step\n // useEffect(() => {\n // if (documentOptions.length === 1) {\n // setSelectedDocument(documentOptions[0].value);\n // setError(\"\");\n // onDocumentSelect(documentOptions[0].value);\n // }\n // }, [documentOptions, onDocumentSelect]);\n\n const handleContinue = () => {\n if (!selectedDocument) {\n setError(t(\"jdi.document_selection.error_select_document\"));\n return;\n }\n setError(\"\");\n\n onDocumentSelect(selectedDocument);\n };\n\n // Déterminer le titre en fonction du type de document\n const getTitle = () => {\n switch (documentTypeId) {\n case \"jdd\":\n return t(\"jdi.document_selection.title_jdd\");\n case \"income-proof\":\n return t(\"jdi.document_selection.title_income_proof\");\n default:\n return t(\"jdi.document_selection.title_identity\");\n }\n };\n\n const getSubtitle = () => {\n switch (documentTypeId) {\n case \"jdd\":\n return t(\"jdi.document_selection.subtitle_jdd\");\n case \"income-proof\":\n return t(\"jdi.document_selection.subtitle_income_proof\");\n default:\n return nfcEnabled\n ? t(\"jdi.document_selection.subtitle_identity_nfc\")\n : t(\"jdi.document_selection.subtitle_identity\");\n }\n };\n\n const getLabel = () => {\n switch (documentTypeId) {\n case \"jdd\":\n return t(\"jdi.document_selection.label_jdd\");\n case \"income-proof\":\n return t(\"jdi.document_selection.label_income_proof\");\n default:\n return t(\"jdi.document_selection.label_identity\");\n }\n };\n\n const getPlaceholder = () => {\n switch (documentTypeId) {\n case \"jdd\":\n return t(\"jdi.document_selection.placeholder_jdd\");\n case \"income-proof\":\n return t(\"jdi.document_selection.placeholder_income_proof\");\n default:\n return t(\"jdi.document_selection.placeholder_identity\");\n }\n };\n\n const getInstructions = () => {\n // Identity documents\n switch (selectedDocument) {\n case \"idCard\":\n return [\n t(\"jdi.document_selection.instructions.idCard.recto_verso\"),\n t(\"jdi.document_selection.instructions.idCard.readable\"),\n t(\"jdi.document_selection.instructions.idCard.valid\"),\n ];\n case \"passport\":\n return [\n t(\"jdi.document_selection.instructions.passport.photo_page\"),\n t(\"jdi.document_selection.instructions.passport.valid\"),\n t(\"jdi.document_selection.instructions.passport.readable\"),\n ];\n case \"driverLicense\":\n return [\n t(\"jdi.document_selection.instructions.driverLicense.recto_verso\"),\n t(\"jdi.document_selection.instructions.driverLicense.not_expired\"),\n t(\"jdi.document_selection.instructions.driverLicense.all_visible\"),\n ];\n case \"pinkDriverLicense\":\n return [\n t(\n \"jdi.document_selection.instructions.pinkDriverLicense.recto_verso\",\n \"Assurez-vous que le document soit visible\",\n ),\n t(\n \"jdi.document_selection.instructions.pinkDriverLicense.not_expired\",\n \"Vérifiez que le permis n'est pas expiré\",\n ),\n t(\n \"jdi.document_selection.instructions.pinkDriverLicense.all_visible\",\n \"Toutes les informations doivent être lisibles\",\n ),\n ];\n case \"residencePermit\":\n return [\n t(\"jdi.document_selection.instructions.residencePermit.recto_verso\"),\n t(\"jdi.document_selection.instructions.residencePermit.valid\"),\n t(\"jdi.document_selection.instructions.residencePermit.readable\"),\n ];\n default:\n return [\n t(\"jdi.document_selection.instructions.default.valid\"),\n t(\"jdi.document_selection.instructions.default.readable\"),\n ];\n }\n };\n\n return (\n <MobilePageLayout\n contentClassName=\"h-full\"\n footer={\n <PageActions\n primary={\n <Button onClick={handleContinue} disabled={!selectedDocument}>\n {t(\"jdi.document_selection.continue\")}\n </Button>\n }\n secondary={onBack ? (\n <Button variant=\"secondary\" onClick={onBack}>\n {t(\"jdi.document_selection.back\")}\n </Button>\n ) : undefined}\n />\n }\n >\n <div className=\"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 {/* Header */}\n <div className=\"text-center space-y-4\">\n <Title className=\"text-xl md:text-2xl lg:text-3xl\">\n {documentSelectionTitle || getTitle()}\n </Title>\n <Subtitle className=\"text-sm text-gray-600 leading-relaxed whitespace-pre-line\">\n {documentSelectionDescription || getSubtitle()}\n </Subtitle>\n </div>\n\n {/* Document selection */}\n <div className=\"space-y-4\">\n <div>\n <label className=\"block text-sm font-medium text-gray-700 mb-2\">\n {getLabel()} *\n </label>\n <Select\n options={documentOptions}\n value={selectedDocument}\n onValueChange={(value) => {\n setSelectedDocument(value);\n setError(\"\");\n }}\n placeholder={getPlaceholder()}\n />\n {error && (\n <p className=\"mt-1 text-sm text-red-600 flex items-center\">\n <span className=\"mr-1\">⚠</span>\n {error}\n </p>\n )}\n </div>\n\n {/* Information about selected document — masqué en NFC (les instructions\n de téléversement ne s'appliquent pas, l'onboarding NFC les remplace) */}\n {selectedDocument && !nfcEnabled && (\n <div className=\"bg-gray-50 border border-gray-200 rounded-lg p-4\">\n <h3 className=\"font-medium text-gray-900 mb-2\">\n {t(\"jdi.document_selection.info_title\")}\n </h3>\n <div className=\"text-sm text-gray-700 space-y-1\">\n {getInstructions().map((instruction, index) => (\n <p key={index}>{instruction}</p>\n ))}\n </div>\n </div>\n )}\n\n {/* NFC onboarding — affiché uniquement quand le parcours utilise la lecture sans contact */}\n {nfcEnabled && <NfcOnboardingNotice />}\n </div>\n </div>\n </div>\n </MobilePageLayout>\n );\n};\n\nexport default JDIDocumentSelection;\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
@@ -458,7 +458,7 @@ var JDIDocumentUpload = function (_a) {
458
458
  }
459
459
  });
460
460
  }); };
461
- return (jsx(MobilePageLayout, { contentClassName: "h-full", footer: jsx(PageActions, { primary: jsx(Button, { onClick: handleUpload, disabled: (!frontFile && !isFrontFromInitial) || isUploading, children: getValidateButtonText() }), secondary: jsx(Button, { variant: "secondary", onClick: onBack, disabled: isUploading, children: t("jdi.document_upload.back") }) }), children: jsx("div", { className: "flex-1 flex items-start justify-center md:items-center p-4", children: jsxs("div", { className: "w-full max-w-lg", children: [jsxs("div", { className: "text-center mb-8", children: [jsx("h1", { className: "text-2xl md:text-3xl font-bold text-gray-900 mb-2", children: getDropZoneText() }), jsx("p", { className: "text-gray-600", children: getUploadInstruction() })] }), jsx(Card, { ref: dropZoneRef, className: "border-2 border-dashed ".concat(isDragging
461
+ return (jsx(MobilePageLayout, { contentClassName: "h-full", footer: jsx(PageActions, { primary: jsx(Button, { onClick: handleUpload, disabled: (!frontFile && !isFrontFromInitial) || isUploading, children: getValidateButtonText() }), secondary: onBack ? (jsx(Button, { variant: "secondary", onClick: onBack, disabled: isUploading, children: t("jdi.document_upload.back") })) : undefined }), children: jsx("div", { className: "flex-1 flex items-start justify-center md:items-center p-4", children: jsxs("div", { className: "w-full max-w-lg", children: [jsxs("div", { className: "text-center mb-8", children: [jsx("h1", { className: "text-2xl md:text-3xl font-bold text-gray-900 mb-2", children: getDropZoneText() }), jsx("p", { className: "text-gray-600", children: getUploadInstruction() })] }), jsx(Card, { ref: dropZoneRef, className: "border-2 border-dashed ".concat(isDragging
462
462
  ? "border-teal-500 bg-teal-100/50"
463
463
  : "border-teal-300 bg-teal-50/30", " p-8 mb-6 transition-colors"), onDragEnter: handleDragEnter, onDragLeave: handleDragLeave, onDragOver: handleDragOver, onDrop: handleDrop, children: jsx("div", { className: "text-center space-y-6", children: !frontPreview ? (jsxs(Fragment, { children: [jsx("h3", { className: "text-lg font-semibold text-gray-900 mb-4", children: t("documentTypes." + documentType) }), jsx("div", { className: "flex justify-center w-full", children: jsx(Button, { onClick: function () { var _a; return (_a = frontInputRef.current) === null || _a === void 0 ? void 0 : _a.click(); }, className: "border border-teal-300 text-teal-600 bg-transparent hover:bg-teal-50 px-4 py-2 rounded-lg font-medium text-sm mx-auto flex items-center", disabled: isUploading, children: jsx("span", { children: t("jdi.document_upload.add_file") }) }) }), jsx("p", { className: "text-sm text-gray-500 italic", children: t("jdi.document_upload.drag_drop_hint", "ou glissez-déposez vos fichiers ici") }), jsxs("div", { className: "text-sm text-gray-600 space-y-1", children: [jsx("p", { children: t("jdi.document_upload.accepted_formats") }), jsx("p", { children: twoSidesRequired
464
464
  ? frontPreview