datakeen-session-react 1.1.140-rc.31 → 1.1.140-rc.33

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 (31) hide show
  1. package/dist/cjs/components/document-collection/DocumentCollectionSelection.js +1 -1
  2. package/dist/cjs/components/document-collection/DocumentCollectionSelection.js.map +1 -1
  3. package/dist/cjs/components/document-collection/DocumentCollectionUpload.js +1 -1
  4. package/dist/cjs/components/document-collection/DocumentCollectionUpload.js.map +1 -1
  5. package/dist/cjs/components/jdi/JDDWorkInProgress.js +1 -1
  6. package/dist/cjs/components/jdi/JDDWorkInProgress.js.map +1 -1
  7. package/dist/cjs/components/jdi/JDIDocumentUpload.js +1 -1
  8. package/dist/cjs/components/jdi/JDIDocumentUpload.js.map +1 -1
  9. package/dist/cjs/components/selfie/hooks/useVideoRecorderStyles.js +4 -2
  10. package/dist/cjs/components/selfie/hooks/useVideoRecorderStyles.js.map +1 -1
  11. package/dist/cjs/components/session/VideoWorkInProgress.js +1 -1
  12. package/dist/cjs/components/session/VideoWorkInProgress.js.map +1 -1
  13. package/dist/cjs/components/ui/MobilePageLayout.js +1 -1
  14. package/dist/cjs/components/ui/MobilePageLayout.js.map +1 -1
  15. package/dist/cjs/index.css.js +1 -1
  16. package/dist/esm/components/document-collection/DocumentCollectionSelection.js +1 -1
  17. package/dist/esm/components/document-collection/DocumentCollectionSelection.js.map +1 -1
  18. package/dist/esm/components/document-collection/DocumentCollectionUpload.js +1 -1
  19. package/dist/esm/components/document-collection/DocumentCollectionUpload.js.map +1 -1
  20. package/dist/esm/components/jdi/JDDWorkInProgress.js +1 -1
  21. package/dist/esm/components/jdi/JDDWorkInProgress.js.map +1 -1
  22. package/dist/esm/components/jdi/JDIDocumentUpload.js +1 -1
  23. package/dist/esm/components/jdi/JDIDocumentUpload.js.map +1 -1
  24. package/dist/esm/components/selfie/hooks/useVideoRecorderStyles.js +4 -2
  25. package/dist/esm/components/selfie/hooks/useVideoRecorderStyles.js.map +1 -1
  26. package/dist/esm/components/session/VideoWorkInProgress.js +1 -1
  27. package/dist/esm/components/session/VideoWorkInProgress.js.map +1 -1
  28. package/dist/esm/components/ui/MobilePageLayout.js +1 -1
  29. package/dist/esm/components/ui/MobilePageLayout.js.map +1 -1
  30. package/dist/esm/index.css.js +1 -1
  31. package/package.json +1 -1
@@ -34,7 +34,7 @@ var DocumentCollectionSelection = function (_a) {
34
34
  onContinue(selectedDocumentType);
35
35
  }
36
36
  };
37
- return (jsxRuntime.jsx(MobilePageLayout.default, { footer: jsxRuntime.jsx(PageActions.default, { primary: jsxRuntime.jsx(Button.default, { onClick: handleContinueAction, disabled: !selectedDocumentType, children: t("buttons.continue", "Continuer") }), secondary: jsxRuntime.jsx(Button.default, { variant: "secondary", onClick: onBack, children: t("processing.back", "Retour") }) }), children: jsxRuntime.jsx("div", { className: "flex-1 flex items-center justify-center p-4", children: jsxRuntime.jsxs("div", { className: "w-full max-w-lg", children: [jsxRuntime.jsxs("div", { className: "text-center mb-8", children: [jsxRuntime.jsx(Title.default, { className: "text-2xl md:text-3xl font-bold text-gray-900 mb-2", children: title }), jsxRuntime.jsx(Subtitle.default, { className: "text-gray-600 whitespace-pre-line", children: description })] }), jsxRuntime.jsxs("div", { className: "mb-6", children: [jsxRuntime.jsx("label", { className: "block text-sm font-medium text-gray-700 mb-2", children: t("document_selection.label_identity", "Type de document *") }), jsxRuntime.jsx(SelectComponent.Select, { options: documentOptions, value: selectedDocumentType, onValueChange: function (value) { return setSelectedDocumentType(value); }, placeholder: t("document_selection.placeholder_identity", "Choisissez le type de document") })] }), selectedDocumentType && (jsxRuntime.jsxs("div", { className: "bg-gray-50 border border-gray-200 rounded-lg p-4 mb-6", children: [jsxRuntime.jsx("h3", { className: "font-medium text-gray-900 mb-2", children: t("jdi.document_selection.info_title", "Informations importantes") }), jsxRuntime.jsxs("div", { className: "text-sm text-gray-700 space-y-1", children: [jsxRuntime.jsx("p", { children: t("jdi.document_upload.info_point1", "• Assurez-vous que le document est lisible et de bonne qualité") }), jsxRuntime.jsx("p", { children: t("jdi.document_upload.info_point2", "• Toutes les informations doivent être clairement visibles") }), jsxRuntime.jsx("p", { children: t("jdi.document_upload.info_point3", "• Le document doit être récent et valide") })] })] }))] }) }) }));
37
+ return (jsxRuntime.jsx(MobilePageLayout.default, { footer: jsxRuntime.jsx(PageActions.default, { primary: jsxRuntime.jsx(Button.default, { onClick: handleContinueAction, disabled: !selectedDocumentType, children: t("buttons.continue", "Continuer") }), secondary: jsxRuntime.jsx(Button.default, { variant: "secondary", onClick: onBack, children: t("processing.back", "Retour") }) }), children: jsxRuntime.jsx("div", { className: "flex-1 flex items-start justify-center md:items-center p-4", children: jsxRuntime.jsxs("div", { className: "w-full max-w-lg", children: [jsxRuntime.jsxs("div", { className: "text-center mb-8", children: [jsxRuntime.jsx(Title.default, { className: "text-2xl md:text-3xl font-bold text-gray-900 mb-2", children: title }), jsxRuntime.jsx(Subtitle.default, { className: "text-gray-600 whitespace-pre-line", children: description })] }), jsxRuntime.jsxs("div", { className: "mb-6", children: [jsxRuntime.jsx("label", { className: "block text-sm font-medium text-gray-700 mb-2", children: t("document_selection.label_identity", "Type de document *") }), jsxRuntime.jsx(SelectComponent.Select, { options: documentOptions, value: selectedDocumentType, onValueChange: function (value) { return setSelectedDocumentType(value); }, placeholder: t("document_selection.placeholder_identity", "Choisissez le type de document") })] }), selectedDocumentType && (jsxRuntime.jsxs("div", { className: "bg-gray-50 border border-gray-200 rounded-lg p-4 mb-6", children: [jsxRuntime.jsx("h3", { className: "font-medium text-gray-900 mb-2", children: t("jdi.document_selection.info_title", "Informations importantes") }), jsxRuntime.jsxs("div", { className: "text-sm text-gray-700 space-y-1", children: [jsxRuntime.jsx("p", { children: t("jdi.document_upload.info_point1", "• Assurez-vous que le document est lisible et de bonne qualité") }), jsxRuntime.jsx("p", { children: t("jdi.document_upload.info_point2", "• Toutes les informations doivent être clairement visibles") }), jsxRuntime.jsx("p", { children: t("jdi.document_upload.info_point3", "• Le document doit être récent et valide") })] })] }))] }) }) }));
38
38
  };
39
39
 
40
40
  exports.default = DocumentCollectionSelection;
@@ -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 { useTranslation } from \"react-i18next\";\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 } = useTranslation();\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\", \"Sélection des documents\");\n const description =\n documentSelection?.description ||\n t(\"document_upload.selection_description\", \"Choisissez le type de document que vous souhaitez transmettre.\");\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\", \"Continuer\")}\n </Button>\n }\n secondary={\n <Button variant=\"secondary\" onClick={onBack}>\n {t(\"processing.back\", \"Retour\")}\n </Button>\n }\n />\n }\n >\n <div className=\"flex-1 flex items-center justify-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(\"document_selection.label_identity\", \"Type de document *\")}\n </label>\n <Select\n options={documentOptions}\n value={selectedDocumentType}\n onValueChange={(value) => setSelectedDocumentType(value)}\n placeholder={t(\"document_selection.placeholder_identity\", \"Choisissez le type de document\")}\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(\n \"jdi.document_selection.info_title\",\n \"Informations importantes\",\n )}\n </h3>\n <div className=\"text-sm text-gray-700 space-y-1\">\n <p>\n {t(\n \"jdi.document_upload.info_point1\",\n \"• Assurez-vous que le document est lisible et de bonne qualité\",\n )}\n </p>\n <p>\n {t(\n \"jdi.document_upload.info_point2\",\n \"• Toutes les informations doivent être clairement visibles\",\n )}\n </p>\n <p>\n {t(\n \"jdi.document_upload.info_point3\",\n \"• Le document doit être récent et valide\",\n )}\n </p>\n </div>\n </div>\n )}\n </div>\n </div>\n </MobilePageLayout>\n );\n};\n\nexport default DocumentCollectionSelection;\n"],"names":["useTranslation","useState","useEffect","_jsx","MobilePageLayout","PageActions","Button","_jsxs","Title","Subtitle","Select"],"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 { useTranslation } from \"react-i18next\";\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 } = useTranslation();\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\", \"Sélection des documents\");\n const description =\n documentSelection?.description ||\n t(\"document_upload.selection_description\", \"Choisissez le type de document que vous souhaitez transmettre.\");\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\", \"Continuer\")}\n </Button>\n }\n secondary={\n <Button variant=\"secondary\" onClick={onBack}>\n {t(\"processing.back\", \"Retour\")}\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(\"document_selection.label_identity\", \"Type de document *\")}\n </label>\n <Select\n options={documentOptions}\n value={selectedDocumentType}\n onValueChange={(value) => setSelectedDocumentType(value)}\n placeholder={t(\"document_selection.placeholder_identity\", \"Choisissez le type de document\")}\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(\n \"jdi.document_selection.info_title\",\n \"Informations importantes\",\n )}\n </h3>\n <div className=\"text-sm text-gray-700 space-y-1\">\n <p>\n {t(\n \"jdi.document_upload.info_point1\",\n \"• Assurez-vous que le document est lisible et de bonne qualité\",\n )}\n </p>\n <p>\n {t(\n \"jdi.document_upload.info_point2\",\n \"• Toutes les informations doivent être clairement visibles\",\n )}\n </p>\n <p>\n {t(\n \"jdi.document_upload.info_point3\",\n \"• Le document doit être récent et valide\",\n )}\n </p>\n </div>\n </div>\n )}\n </div>\n </div>\n </MobilePageLayout>\n );\n};\n\nexport default DocumentCollectionSelection;\n"],"names":["useTranslation","useState","useEffect","_jsx","MobilePageLayout","PageActions","Button","_jsxs","Title","Subtitle","Select"],"mappings":"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"}
@@ -144,7 +144,7 @@ var DocumentCollectionUpload = function (_a) {
144
144
  ? t("processing.download", "Téléchargement...")
145
145
  : requiresTwoSides()
146
146
  ? t("processing.validate_documents", "Valider les documents")
147
- : t("processing.validate_document", "Valider le document") }), secondary: jsxRuntime.jsx(Button.default, { variant: "secondary", onClick: onBack, disabled: isUploading, children: t("processing.back", "Retour") }) }), children: jsxRuntime.jsx("div", { className: "flex-1 flex items-center justify-center p-4", children: jsxRuntime.jsxs("div", { className: "w-full max-w-lg", children: [jsxRuntime.jsxs("div", { className: "text-center mb-8", children: [jsxRuntime.jsx("h1", { className: "text-2xl md:text-3xl font-bold text-gray-900 mb-2", children: t("document_upload.upload_title", "Ajoutez votre document") }), jsxRuntime.jsx("p", { className: "text-gray-600", children: t("document_upload.upload_description", "Veuillez sélectionner le fichier correspondant au document choisi.") })] }), error && (jsxRuntime.jsx("div", { className: "mb-6 p-4 bg-red-50 border border-red-200 rounded-lg text-sm text-red-700", children: error })), jsxRuntime.jsx(Card.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) {
147
+ : t("processing.validate_document", "Valider le document") }), secondary: jsxRuntime.jsx(Button.default, { variant: "secondary", onClick: onBack, disabled: isUploading, children: t("processing.back", "Retour") }) }), children: jsxRuntime.jsx("div", { className: "flex-1 flex items-start justify-center md:items-center p-4", children: jsxRuntime.jsxs("div", { className: "w-full max-w-lg", children: [jsxRuntime.jsxs("div", { className: "text-center mb-8", children: [jsxRuntime.jsx("h1", { className: "text-2xl md:text-3xl font-bold text-gray-900 mb-2", children: t("document_upload.upload_title", "Ajoutez votre document") }), jsxRuntime.jsx("p", { className: "text-gray-600", children: t("document_upload.upload_description", "Veuillez sélectionner le fichier correspondant au document choisi.") })] }), error && (jsxRuntime.jsx("div", { className: "mb-6 p-4 bg-red-50 border border-red-200 rounded-lg text-sm text-red-700", children: error })), jsxRuntime.jsx(Card.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) {
148
148
  e.preventDefault();
149
149
  var files = e.dataTransfer.files;
150
150
  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 { useTranslation } from \"react-i18next\";\nimport MobilePageLayout from \"../ui/MobilePageLayout\";\nimport { DocumentTypeSide } from \"./DocumentCollection\";\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}\n\nconst DocumentCollectionUpload = ({\n onUpload,\n onBack,\n selectedDocumentType,\n allowedDocumentTypes,\n documentSelection,\n}: DocumentCollectionUploadProps) => {\n const { t } = useTranslation();\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(\n t(\n \"document_upload.errors.invalid_file_type\",\n \"Veuillez sélectionner un fichier image ou PDF valide\",\n ),\n );\n return;\n }\n if (file.size > 10 * 1024 * 1024) {\n setError(\n t(\n \"document_upload.errors.file_too_large\",\n \"Le fichier ne doit pas dépasser 10MB\",\n ),\n );\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(\n t(\n \"document_upload.errors.max_files\",\n `Veuillez sélectionner maximum ${maxFiles} fichier\\${maxFiles > 1 ? \"s\" : \"\"}`,\n ),\n );\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.errors.add_photo_identity\", \"Veuillez ajouter une photo du recto\"));\n return;\n }\n\n setIsUploading(true);\n try {\n const files = {\n front: frontImage,\n back: requiresTwoSides() ? backImage : null,\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(\"processing.download\", \"Téléchargement...\")\n : requiresTwoSides()\n ? t(\"processing.validate_documents\", \"Valider les documents\")\n : t(\"processing.validate_document\", \"Valider le document\")}\n </Button>\n }\n secondary={\n <Button variant=\"secondary\" onClick={onBack} disabled={isUploading}>\n {t(\"processing.back\", \"Retour\")}\n </Button>\n }\n />\n }\n >\n <div className=\"flex-1 flex items-center justify-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\", \"Ajoutez votre document\")}\n </h1>\n <p className=\"text-gray-600\">\n {t(\"document_upload.upload_description\", \"Veuillez sélectionner le fichier correspondant au document choisi.\")}\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\", \"Parcourir mes fichiers\")}</span>\n </Button>\n <div className=\"text-xs text-gray-500 space-y-1\">\n <p>{t(\"document_upload.accepted_formats\", \"Formats PDF, PNG, JPG acceptés (max 10MB)\")}</p>\n <p>{requiresTwoSides() ? t(\"document_upload.multiple_files_info\", \"Jusqu'à 2 fichiers\") : t(\"document_upload.single_file_info\", \"Jusqu'à 1 fichier\")}</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 ? \"Document PDF\" : \"Image\"}</p>\n {frontIsPDF ? <PDFPreview src={frontImage} /> : <img src={frontImage} alt=\"Recto\" 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\">{backIsPDF ? \"Verso PDF\" : \"Verso Image\"}</p>\n {backIsPDF ? <PDFPreview src={backImage} /> : <img src={backImage} alt=\"Verso\" 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\", \"Ajouter le verso\")}\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":["useTranslation","useState","useRef","__awaiter","_jsx","MobilePageLayout","PageActions","Button","_jsxs","Card","Upload","PDFPreview"],"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 { useTranslation } from \"react-i18next\";\nimport MobilePageLayout from \"../ui/MobilePageLayout\";\nimport { DocumentTypeSide } from \"./DocumentCollection\";\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}\n\nconst DocumentCollectionUpload = ({\n onUpload,\n onBack,\n selectedDocumentType,\n allowedDocumentTypes,\n documentSelection,\n}: DocumentCollectionUploadProps) => {\n const { t } = useTranslation();\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(\n t(\n \"document_upload.errors.invalid_file_type\",\n \"Veuillez sélectionner un fichier image ou PDF valide\",\n ),\n );\n return;\n }\n if (file.size > 10 * 1024 * 1024) {\n setError(\n t(\n \"document_upload.errors.file_too_large\",\n \"Le fichier ne doit pas dépasser 10MB\",\n ),\n );\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(\n t(\n \"document_upload.errors.max_files\",\n `Veuillez sélectionner maximum ${maxFiles} fichier\\${maxFiles > 1 ? \"s\" : \"\"}`,\n ),\n );\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.errors.add_photo_identity\", \"Veuillez ajouter une photo du recto\"));\n return;\n }\n\n setIsUploading(true);\n try {\n const files = {\n front: frontImage,\n back: requiresTwoSides() ? backImage : null,\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(\"processing.download\", \"Téléchargement...\")\n : requiresTwoSides()\n ? t(\"processing.validate_documents\", \"Valider les documents\")\n : t(\"processing.validate_document\", \"Valider le document\")}\n </Button>\n }\n secondary={\n <Button variant=\"secondary\" onClick={onBack} disabled={isUploading}>\n {t(\"processing.back\", \"Retour\")}\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\", \"Ajoutez votre document\")}\n </h1>\n <p className=\"text-gray-600\">\n {t(\"document_upload.upload_description\", \"Veuillez sélectionner le fichier correspondant au document choisi.\")}\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\", \"Parcourir mes fichiers\")}</span>\n </Button>\n <div className=\"text-xs text-gray-500 space-y-1\">\n <p>{t(\"document_upload.accepted_formats\", \"Formats PDF, PNG, JPG acceptés (max 10MB)\")}</p>\n <p>{requiresTwoSides() ? t(\"document_upload.multiple_files_info\", \"Jusqu'à 2 fichiers\") : t(\"document_upload.single_file_info\", \"Jusqu'à 1 fichier\")}</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 ? \"Document PDF\" : \"Image\"}</p>\n {frontIsPDF ? <PDFPreview src={frontImage} /> : <img src={frontImage} alt=\"Recto\" 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\">{backIsPDF ? \"Verso PDF\" : \"Verso Image\"}</p>\n {backIsPDF ? <PDFPreview src={backImage} /> : <img src={backImage} alt=\"Verso\" 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\", \"Ajouter le verso\")}\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":["useTranslation","useState","useRef","__awaiter","_jsx","MobilePageLayout","PageActions","Button","_jsxs","Card","Upload","PDFPreview"],"mappings":"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"}
@@ -12,7 +12,7 @@ var JDDWorkInProgress = function (_a) {
12
12
  var onContinue = _a.onContinue;
13
13
  var isMobile = useIsMobile.default();
14
14
  var t = useI18n.useI18n().t;
15
- return (jsxRuntime.jsxs("div", { className: "flex flex-col justify-between h-full w-full", children: [jsxRuntime.jsx("div", { className: "flex-1 flex items-center justify-center px-4 py-8", children: jsxRuntime.jsxs("div", { className: "w-full max-w-md mx-auto text-center space-y-6", children: [jsxRuntime.jsx("div", { className: "text-6xl mb-6", children: "\uD83D\uDEA7" }), jsxRuntime.jsx("h1", { className: "text-2xl md:text-3xl font-bold text-gray-800 mb-4", children: t("jdd_work_in_progress.title") }), jsxRuntime.jsx("p", { className: "text-gray-600 text-lg mb-6", children: t("jdd_work_in_progress.subtitle") }), jsxRuntime.jsxs("div", { className: "bg-blue-50 border border-blue-200 rounded-lg p-4 mb-8", children: [jsxRuntime.jsxs("div", { className: "flex items-center justify-center mb-2", children: [jsxRuntime.jsx("div", { className: "text-blue-500 text-2xl mr-2", children: "\u2139\uFE0F" }), jsxRuntime.jsx("h3", { className: "text-blue-800 font-semibold", children: t("jdd_work_in_progress.info_title") })] }), jsxRuntime.jsx("p", { className: "text-blue-700 text-sm", children: t("jdd_work_in_progress.info_description") })] })] }) }), jsxRuntime.jsx("div", { className: "flex-shrink-0 p-4 border-t border-gray-200 bg-white", children: isMobile ? (jsxRuntime.jsx("div", { className: "w-full", children: jsxRuntime.jsx(Button.default, { onClick: onContinue, className: "w-full py-3", children: t("jdd_work_in_progress.continue") }) })) : (jsxRuntime.jsx("div", { className: "flex justify-end max-w-4xl mx-auto", children: jsxRuntime.jsx(ButtonDesktop.default, { onClick: onContinue, type: "continue", children: t("jdd_work_in_progress.continue") }) })) })] }));
15
+ return (jsxRuntime.jsxs("div", { className: "flex flex-col justify-between h-full w-full", children: [jsxRuntime.jsx("div", { className: "flex-1 flex items-start justify-center md:items-center px-4 py-8", children: jsxRuntime.jsxs("div", { className: "w-full max-w-md mx-auto text-center space-y-6", children: [jsxRuntime.jsx("div", { className: "text-6xl mb-6", children: "\uD83D\uDEA7" }), jsxRuntime.jsx("h1", { className: "text-2xl md:text-3xl font-bold text-gray-800 mb-4", children: t("jdd_work_in_progress.title") }), jsxRuntime.jsx("p", { className: "text-gray-600 text-lg mb-6", children: t("jdd_work_in_progress.subtitle") }), jsxRuntime.jsxs("div", { className: "bg-blue-50 border border-blue-200 rounded-lg p-4 mb-8", children: [jsxRuntime.jsxs("div", { className: "flex items-center justify-center mb-2", children: [jsxRuntime.jsx("div", { className: "text-blue-500 text-2xl mr-2", children: "\u2139\uFE0F" }), jsxRuntime.jsx("h3", { className: "text-blue-800 font-semibold", children: t("jdd_work_in_progress.info_title") })] }), jsxRuntime.jsx("p", { className: "text-blue-700 text-sm", children: t("jdd_work_in_progress.info_description") })] })] }) }), jsxRuntime.jsx("div", { className: "flex-shrink-0 p-4 border-t border-gray-200 bg-white", children: isMobile ? (jsxRuntime.jsx("div", { className: "w-full", children: jsxRuntime.jsx(Button.default, { onClick: onContinue, className: "w-full py-3", children: t("jdd_work_in_progress.continue") }) })) : (jsxRuntime.jsx("div", { className: "flex justify-end max-w-4xl mx-auto", children: jsxRuntime.jsx(ButtonDesktop.default, { onClick: onContinue, type: "continue", children: t("jdd_work_in_progress.continue") }) })) })] }));
16
16
  };
17
17
 
18
18
  exports.default = JDDWorkInProgress;
@@ -1 +1 @@
1
- {"version":3,"file":"JDDWorkInProgress.js","sources":["../../../../../src/components/jdi/JDDWorkInProgress.tsx"],"sourcesContent":["import React from \"react\";\nimport Button from \"../ui/Button\";\nimport ButtonDesktop from \"../ui/ButtonDesktop\";\nimport useIsMobile from \"../../hooks/useIsMobile\";\nimport { useI18n } from \"../../hooks/useI18n\";\n\ninterface JDDWorkInProgressProps {\n onContinue: () => void;\n}\n\nconst JDDWorkInProgress: React.FC<JDDWorkInProgressProps> = ({ onContinue }) => {\n const isMobile = useIsMobile();\n const { t } = useI18n();\n\n return (\n <div className=\"flex flex-col justify-between h-full w-full\">\n {/* Main content area */}\n <div className=\"flex-1 flex items-center justify-center px-4 py-8\">\n <div className=\"w-full max-w-md mx-auto text-center space-y-6\">\n {/* Work in progress icon */}\n <div className=\"text-6xl mb-6\">🚧</div>\n \n {/* Title */}\n <h1 className=\"text-2xl md:text-3xl font-bold text-gray-800 mb-4\">\n {t(\"jdd_work_in_progress.title\")}\n </h1>\n \n {/* Subtitle */}\n <p className=\"text-gray-600 text-lg mb-6\">\n {t(\"jdd_work_in_progress.subtitle\")}\n </p>\n \n {/* Info box */}\n <div className=\"bg-blue-50 border border-blue-200 rounded-lg p-4 mb-8\">\n <div className=\"flex items-center justify-center mb-2\">\n <div className=\"text-blue-500 text-2xl mr-2\">ℹ️</div>\n <h3 className=\"text-blue-800 font-semibold\">{t(\"jdd_work_in_progress.info_title\")}</h3>\n </div>\n <p className=\"text-blue-700 text-sm\">\n {t(\"jdd_work_in_progress.info_description\")}\n </p>\n </div>\n </div>\n </div>\n\n {/* Bottom navigation */}\n <div className=\"flex-shrink-0 p-4 border-t border-gray-200 bg-white\">\n {isMobile ? (\n <div className=\"w-full\">\n <Button onClick={onContinue} className=\"w-full py-3\">\n {t(\"jdd_work_in_progress.continue\")}\n </Button>\n </div>\n ) : (\n <div className=\"flex justify-end max-w-4xl mx-auto\">\n <ButtonDesktop onClick={onContinue} type=\"continue\">\n {t(\"jdd_work_in_progress.continue\")}\n </ButtonDesktop>\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default JDDWorkInProgress;"],"names":["useIsMobile","useI18n","_jsxs","_jsx","Button","ButtonDesktop"],"mappings":";;;;;;;;;;AAUA,IAAM,iBAAiB,GAAqC,UAAC,EAAc,EAAA;AAAZ,IAAA,IAAA,UAAU,GAAA,EAAA,CAAA,UAAA;AACvE,IAAA,IAAM,QAAQ,GAAGA,mBAAW,EAAE;AACtB,IAAA,IAAA,CAAC,GAAKC,eAAO,EAAE,EAAd;AAET,IAAA,QACEC,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,6CAA6C,EAAA,QAAA,EAAA,CAE1DC,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,mDAAmD,EAAA,QAAA,EAChED,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,+CAA+C,EAAA,QAAA,EAAA,CAE5DC,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,eAAe,EAAA,QAAA,EAAA,cAAA,EAAA,CAAS,EAGvCA,cAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,mDAAmD,EAAA,QAAA,EAC9D,CAAC,CAAC,4BAA4B,CAAC,EAAA,CAC7B,EAGLA,sBAAG,SAAS,EAAC,4BAA4B,EAAA,QAAA,EACtC,CAAC,CAAC,+BAA+B,CAAC,GACjC,EAGJD,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,uDAAuD,EAAA,QAAA,EAAA,CACpEA,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,uCAAuC,EAAA,QAAA,EAAA,CACpDC,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,6BAA6B,EAAA,QAAA,EAAA,cAAA,EAAA,CAAS,EACrDA,cAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,6BAA6B,EAAA,QAAA,EAAE,CAAC,CAAC,iCAAiC,CAAC,EAAA,CAAM,CAAA,EAAA,CACnF,EACNA,cAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,uBAAuB,EAAA,QAAA,EACjC,CAAC,CAAC,uCAAuC,CAAC,EAAA,CACzC,CAAA,EAAA,CACA,CAAA,EAAA,CACF,EAAA,CACF,EAGNA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,qDAAqD,YACjE,QAAQ,IACPA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,QAAQ,EAAA,QAAA,EACrBA,cAAA,CAACC,cAAM,EAAA,EAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAC,aAAa,EAAA,QAAA,EACjD,CAAC,CAAC,+BAA+B,CAAC,EAAA,CAC5B,EAAA,CACL,KAEND,wBAAK,SAAS,EAAC,oCAAoC,EAAA,QAAA,EACjDA,eAACE,qBAAa,EAAA,EAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAC,UAAU,YAChD,CAAC,CAAC,+BAA+B,CAAC,GACrB,EAAA,CACZ,CACP,EAAA,CACG,CAAA,EAAA,CACF;AAEV;;;;"}
1
+ {"version":3,"file":"JDDWorkInProgress.js","sources":["../../../../../src/components/jdi/JDDWorkInProgress.tsx"],"sourcesContent":["import React from \"react\";\nimport Button from \"../ui/Button\";\nimport ButtonDesktop from \"../ui/ButtonDesktop\";\nimport useIsMobile from \"../../hooks/useIsMobile\";\nimport { useI18n } from \"../../hooks/useI18n\";\n\ninterface JDDWorkInProgressProps {\n onContinue: () => void;\n}\n\nconst JDDWorkInProgress: React.FC<JDDWorkInProgressProps> = ({ onContinue }) => {\n const isMobile = useIsMobile();\n const { t } = useI18n();\n\n return (\n <div className=\"flex flex-col justify-between h-full w-full\">\n {/* Main content area */}\n <div className=\"flex-1 flex items-start justify-center md:items-center px-4 py-8\">\n <div className=\"w-full max-w-md mx-auto text-center space-y-6\">\n {/* Work in progress icon */}\n <div className=\"text-6xl mb-6\">🚧</div>\n \n {/* Title */}\n <h1 className=\"text-2xl md:text-3xl font-bold text-gray-800 mb-4\">\n {t(\"jdd_work_in_progress.title\")}\n </h1>\n \n {/* Subtitle */}\n <p className=\"text-gray-600 text-lg mb-6\">\n {t(\"jdd_work_in_progress.subtitle\")}\n </p>\n \n {/* Info box */}\n <div className=\"bg-blue-50 border border-blue-200 rounded-lg p-4 mb-8\">\n <div className=\"flex items-center justify-center mb-2\">\n <div className=\"text-blue-500 text-2xl mr-2\">ℹ️</div>\n <h3 className=\"text-blue-800 font-semibold\">{t(\"jdd_work_in_progress.info_title\")}</h3>\n </div>\n <p className=\"text-blue-700 text-sm\">\n {t(\"jdd_work_in_progress.info_description\")}\n </p>\n </div>\n </div>\n </div>\n\n {/* Bottom navigation */}\n <div className=\"flex-shrink-0 p-4 border-t border-gray-200 bg-white\">\n {isMobile ? (\n <div className=\"w-full\">\n <Button onClick={onContinue} className=\"w-full py-3\">\n {t(\"jdd_work_in_progress.continue\")}\n </Button>\n </div>\n ) : (\n <div className=\"flex justify-end max-w-4xl mx-auto\">\n <ButtonDesktop onClick={onContinue} type=\"continue\">\n {t(\"jdd_work_in_progress.continue\")}\n </ButtonDesktop>\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default JDDWorkInProgress;"],"names":["useIsMobile","useI18n","_jsxs","_jsx","Button","ButtonDesktop"],"mappings":";;;;;;;;;;AAUA,IAAM,iBAAiB,GAAqC,UAAC,EAAc,EAAA;AAAZ,IAAA,IAAA,UAAU,GAAA,EAAA,CAAA,UAAA;AACvE,IAAA,IAAM,QAAQ,GAAGA,mBAAW,EAAE;AACtB,IAAA,IAAA,CAAC,GAAKC,eAAO,EAAE,EAAd;AAET,IAAA,QACEC,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,6CAA6C,EAAA,QAAA,EAAA,CAE1DC,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,kEAAkE,EAAA,QAAA,EAC/ED,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,+CAA+C,EAAA,QAAA,EAAA,CAE5DC,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,eAAe,EAAA,QAAA,EAAA,cAAA,EAAA,CAAS,EAGvCA,cAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,mDAAmD,EAAA,QAAA,EAC9D,CAAC,CAAC,4BAA4B,CAAC,EAAA,CAC7B,EAGLA,sBAAG,SAAS,EAAC,4BAA4B,EAAA,QAAA,EACtC,CAAC,CAAC,+BAA+B,CAAC,GACjC,EAGJD,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,uDAAuD,EAAA,QAAA,EAAA,CACpEA,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,uCAAuC,EAAA,QAAA,EAAA,CACpDC,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,6BAA6B,EAAA,QAAA,EAAA,cAAA,EAAA,CAAS,EACrDA,cAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,6BAA6B,EAAA,QAAA,EAAE,CAAC,CAAC,iCAAiC,CAAC,EAAA,CAAM,CAAA,EAAA,CACnF,EACNA,cAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,uBAAuB,EAAA,QAAA,EACjC,CAAC,CAAC,uCAAuC,CAAC,EAAA,CACzC,CAAA,EAAA,CACA,CAAA,EAAA,CACF,EAAA,CACF,EAGNA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,qDAAqD,YACjE,QAAQ,IACPA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,QAAQ,EAAA,QAAA,EACrBA,cAAA,CAACC,cAAM,EAAA,EAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAC,aAAa,EAAA,QAAA,EACjD,CAAC,CAAC,+BAA+B,CAAC,EAAA,CAC5B,EAAA,CACL,KAEND,wBAAK,SAAS,EAAC,oCAAoC,EAAA,QAAA,EACjDA,eAACE,qBAAa,EAAA,EAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAC,UAAU,YAChD,CAAC,CAAC,+BAA+B,CAAC,GACrB,EAAA,CACZ,CACP,EAAA,CACG,CAAA,EAAA,CACF;AAEV;;;;"}
@@ -462,7 +462,7 @@ var JDIDocumentUpload = function (_a) {
462
462
  }
463
463
  });
464
464
  }); };
465
- return (jsxRuntime.jsx(MobilePageLayout.default, { contentClassName: "h-full", footer: jsxRuntime.jsx(PageActions.default, { primary: jsxRuntime.jsx(Button.default, { onClick: handleUpload, disabled: (!frontFile && !isFrontFromInitial) || isUploading, children: getValidateButtonText() }), secondary: jsxRuntime.jsx(Button.default, { variant: "secondary", onClick: onBack, disabled: isUploading, children: t("jdi.document_upload.back") }) }), children: jsxRuntime.jsx("div", { className: "flex-1 flex items-center justify-center p-4", children: jsxRuntime.jsxs("div", { className: "w-full max-w-lg", children: [jsxRuntime.jsxs("div", { className: "text-center mb-8", children: [jsxRuntime.jsx("h1", { className: "text-2xl md:text-3xl font-bold text-gray-900 mb-2", children: getDropZoneText() }), jsxRuntime.jsx("p", { className: "text-gray-600", children: getUploadInstruction() })] }), jsxRuntime.jsx(Card.Card, { ref: dropZoneRef, className: "border-2 border-dashed ".concat(isDragging
465
+ return (jsxRuntime.jsx(MobilePageLayout.default, { contentClassName: "h-full", footer: jsxRuntime.jsx(PageActions.default, { primary: jsxRuntime.jsx(Button.default, { onClick: handleUpload, disabled: (!frontFile && !isFrontFromInitial) || isUploading, children: getValidateButtonText() }), secondary: jsxRuntime.jsx(Button.default, { variant: "secondary", onClick: onBack, disabled: isUploading, children: t("jdi.document_upload.back") }) }), children: jsxRuntime.jsx("div", { className: "flex-1 flex items-start justify-center md:items-center p-4", children: jsxRuntime.jsxs("div", { className: "w-full max-w-lg", children: [jsxRuntime.jsxs("div", { className: "text-center mb-8", children: [jsxRuntime.jsx("h1", { className: "text-2xl md:text-3xl font-bold text-gray-900 mb-2", children: getDropZoneText() }), jsxRuntime.jsx("p", { className: "text-gray-600", children: getUploadInstruction() })] }), jsxRuntime.jsx(Card.Card, { ref: dropZoneRef, className: "border-2 border-dashed ".concat(isDragging
466
466
  ? "border-teal-500 bg-teal-100/50"
467
467
  : "border-teal-300 bg-teal-50/30", " p-8 mb-6 transition-colors"), onDragEnter: handleDragEnter, onDragLeave: handleDragLeave, onDragOver: handleDragOver, onDrop: handleDrop, children: jsxRuntime.jsx("div", { className: "text-center space-y-6", children: !frontPreview ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("h3", { className: "text-lg font-semibold text-gray-900 mb-4", children: t("documentTypes." + documentType) }), jsxRuntime.jsx("div", { className: "flex justify-center w-full", children: jsxRuntime.jsx(Button.default, { 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: jsxRuntime.jsx("span", { children: t("jdi.document_upload.add_file") }) }) }), jsxRuntime.jsx("p", { className: "text-sm text-gray-500 italic", children: t("jdi.document_upload.drag_drop_hint", "ou glissez-déposez vos fichiers ici") }), jsxRuntime.jsxs("div", { className: "text-sm text-gray-600 space-y-1", children: [jsxRuntime.jsx("p", { children: t("jdi.document_upload.accepted_formats") }), jsxRuntime.jsx("p", { children: twoSidesRequired
468
468
  ? frontPreview
@@ -1 +1 @@
1
- {"version":3,"file":"JDIDocumentUpload.js","sources":["../../../../../src/components/jdi/JDIDocumentUpload.tsx"],"sourcesContent":["import { useState, useRef, useEffect } from \"react\";\n\nimport Button from \"../ui/Button\";\nimport PageActions from \"../ui/PageActions\";\nimport { Card } from \"../ui/Card\";\nimport PDFPreview from \"../ui/PDFPreview\";\nimport type { onUploadFiles } from \"../../types/uploadFiles\";\nimport { useI18n } from \"../../hooks/useI18n\";\nimport {\n convertFileToSupportedFormat,\n fileToBase64,\n isPDF,\n isValidFileType,\n isValidFileSize,\n isValidBase64Data,\n} from \"../../utils/fileConverter\";\nimport { requiresTwoSides } from \"../../utils/documentLabels\";\nimport MobilePageLayout from \"../ui/MobilePageLayout\";\n\ninterface JDIDocumentUploadProps {\n documentType: string;\n onUpload: (files: onUploadFiles) => void;\n onBack: () => void;\n documentTypeId?: string; // Pour identifier des types spécifiques comme jdd ou income-proof\n documentLabel?: string; // Le label lisible du document sélectionné (ex: \"Carte nationale d'identité\")\n initialFront?: string | null; // Base64 du recto déjà déposé (ex: après erreur 2.5)\n initialBack?: string | null; // Base64 du verso déjà déposé (ex: après erreur 2.5)\n}\n\nconst JDIDocumentUpload = ({\n documentType,\n onUpload,\n onBack,\n documentTypeId,\n documentLabel,\n initialFront = null,\n initialBack = null,\n}: JDIDocumentUploadProps) => {\n const { t } = useI18n();\n\n // Helper functions for conditional text\n const getDropZoneText = () => {\n return t(\"jdi.document_upload.drop_zone\", {\n document: t(\"documentTypes.\" + documentType),\n });\n };\n\n const getUploadInstruction = () => {\n switch (documentTypeId) {\n case \"jdd\":\n return t(\"jdi.document_upload.upload_jdd\");\n case \"income-proof\":\n return t(\"jdi.document_upload.upload_income_proof\");\n default:\n return t(\"jdi.document_upload.upload_identity\", {\n document: t(\"documentTypes.\" + documentType),\n });\n }\n };\n\n const getValidateButtonText = () => {\n if (isUploading) {\n return t(\"jdi.document_upload.uploading\");\n }\n return documentTypeId === \"jdd\" || documentTypeId === \"income-proof\"\n ? t(\"jdi.document_upload.validate_single\")\n : t(\"jdi.document_upload.validate_multiple\");\n };\n // Ajout de logs pour le débogage\n useEffect(() => {\n // Vérifier si le document type est valide\n if (!documentType) {\n console.error(\"JDIDocumentUpload: documentType is missing or invalid\", {\n documentType,\n documentTypeId,\n });\n }\n }, [documentType, documentTypeId, documentLabel]);\n\n // Store File objects instead of base64 strings\n // initialFront/initialBack permettent de pré-remplir en cas de retry (ex: erreur 2.5)\n const [frontFile, setFrontFile] = useState<File | null>(null);\n const [backFile, setBackFile] = useState<File | null>(null);\n const [frontPreview, setFrontPreview] = useState<string | null>(initialFront ?? null);\n const [backPreview, setBackPreview] = useState<string | null>(initialBack ?? null);\n // Indique que le recto/verso vient d'un dépôt précédent (pas un File local)\n const [isFrontFromInitial, setIsFrontFromInitial] = useState<boolean>(!!initialFront);\n const [isBackFromInitial, setIsBackFromInitial] = useState<boolean>(!!initialBack);\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 const twoSidesRequired = requiresTwoSides(documentType);\n\n // Nouvelle fonction pour gérer la sélection multiple de fichiers\n const handleMultipleFileChange = async (\n event: React.ChangeEvent<HTMLInputElement>,\n ) => {\n const files = event.target.files;\n if (!files) return;\n\n // Vérifier le nombre de fichiers - maximum 2 fichiers\n if (files.length > 2) {\n setError(t(\"jdi.document_upload.errors.max_files\"));\n return;\n } else if (files.length === 0) {\n setError(t(\"jdi.document_upload.errors.min_files\"));\n return;\n }\n\n setError(\"\");\n setFrontFile(null);\n setBackFile(null);\n setFrontPreview(null);\n setBackPreview(null);\n\n // Traiter chaque fichier\n for (let index = 0; index < files.length; index++) {\n let currentFile = files[index];\n\n try {\n currentFile = await convertFileToSupportedFormat(currentFile);\n } catch (conversionError) {\n console.error(\n \"handleMultipleFileChange: HEIC conversion failed\",\n conversionError,\n );\n setError(\n conversionError instanceof Error\n ? conversionError.message\n : t(\"jdi.document_upload.errors.heic_unsupported\"),\n );\n event.target.value = \"\";\n if (multipleInputRef.current) {\n multipleInputRef.current.value = \"\";\n }\n return;\n }\n\n // Valider le type de fichier\n if (!isValidFileType(currentFile)) {\n setError(\n t(\"jdi.document_upload.errors.invalid_file_type_indexed\", {\n index: index + 1,\n }),\n );\n event.target.value = \"\";\n if (multipleInputRef.current) {\n multipleInputRef.current.value = \"\";\n }\n return;\n }\n\n // Valider la taille du fichier\n if (!isValidFileSize(currentFile)) {\n setError(\n t(\"jdi.document_upload.errors.file_too_large_indexed\", {\n index: index + 1,\n }),\n );\n event.target.value = \"\";\n if (multipleInputRef.current) {\n multipleInputRef.current.value = \"\";\n }\n return;\n }\n\n if (index === 0) {\n // Premier fichier = recto\n setFrontFile(currentFile);\n } else if (index === 1 && twoSidesRequired) {\n // Deuxième fichier = verso (seulement si nécessaire)\n setBackFile(currentFile);\n }\n\n // Store File object and create preview\n const reader = new FileReader();\n reader.onload = (e) => {\n const result = e.target?.result as string;\n\n if (index === 0) {\n setFrontPreview(result);\n } else if (index === 1 && twoSidesRequired) {\n setBackPreview(result);\n }\n };\n reader.readAsDataURL(currentFile);\n }\n };\n\n const handleFileChange = async (\n event: React.ChangeEvent<HTMLInputElement>,\n side: \"front\" | \"back\",\n ) => {\n const file = event.target.files?.[0];\n if (!file) return;\n\n let processedFile = file;\n try {\n processedFile = await convertFileToSupportedFormat(file);\n } catch (conversionError) {\n console.error(\n \"handleFileChange: HEIC conversion failed\",\n conversionError,\n );\n setError(\n conversionError instanceof Error\n ? conversionError.message\n : t(\"jdi.document_upload.errors.heic_unsupported\"),\n );\n event.target.value = \"\";\n if (side === \"front\" && frontInputRef.current) {\n frontInputRef.current.value = \"\";\n }\n return;\n }\n\n // Validate file type\n if (!isValidFileType(processedFile)) {\n setError(t(\"jdi.document_upload.errors.invalid_file_type\"));\n event.target.value = \"\";\n return;\n }\n\n // Validate file size (max 10MB)\n if (!isValidFileSize(processedFile)) {\n setError(t(\"jdi.document_upload.errors.file_too_large\"));\n event.target.value = \"\";\n return;\n }\n\n setError(\"\");\n\n // Store File object and create preview\n const reader = new FileReader();\n reader.onload = (e) => {\n const result = e.target?.result as string;\n\n if (side === \"front\") {\n setFrontFile(processedFile);\n setFrontPreview(result);\n setIsFrontFromInitial(false);\n } else {\n setBackFile(processedFile);\n setBackPreview(result);\n setIsBackFromInitial(false);\n }\n };\n reader.readAsDataURL(processedFile);\n };\n\n const handleUpload = async () => {\n // Clear previous errors\n setError(\"\");\n\n // Validation : recto obligatoire (soit un File local, soit une valeur initiale)\n if (!frontFile && !isFrontFromInitial) {\n const errorKey =\n documentTypeId === \"jdd\"\n ? \"jdi.document_upload.errors.add_photo_jdd\"\n : documentTypeId === \"income-proof\"\n ? \"jdi.document_upload.errors.add_photo_income_proof\"\n : \"jdi.document_upload.errors.add_photo_identity\";\n\n setError(t(errorKey));\n return;\n }\n\n // Note: For two-sided documents, the back side is no longer mandatory\n // The user can choose to upload only the front side\n\n setIsUploading(true);\n\n try {\n // Recto : soit conversion d'un File, soit réutilisation de la base64 initiale\n let frontBase64: string;\n if (frontFile) {\n frontBase64 = await fileToBase64(frontFile);\n if (!isValidBase64Data(frontBase64)) {\n setError(t(\"jdi.document_upload.errors.front_corrupted\"));\n setIsUploading(false);\n return;\n }\n } else {\n // isFrontFromInitial === true : on réutilise la valeur initiale\n frontBase64 = initialFront!;\n }\n\n let backBase64: string | null = null;\n if (twoSidesRequired) {\n if (backFile) {\n backBase64 = await fileToBase64(backFile);\n if (!isValidBase64Data(backBase64)) {\n setError(t(\"jdi.document_upload.errors.back_corrupted\"));\n setIsUploading(false);\n return;\n }\n } else if (isBackFromInitial) {\n // On réutilise le verso initial\n backBase64 = initialBack!;\n }\n }\n\n const files = {\n front: frontBase64,\n back: twoSidesRequired ? backBase64 : null,\n };\n\n onUpload(files);\n } catch (err) {\n console.error(\"JDIDocumentUpload: Upload error:\", err);\n setError(t(\"jdi.document_upload.errors.upload_error\"));\n setIsUploading(false);\n }\n };\n\n const removeImage = (side: \"front\" | \"back\") => {\n if (side === \"front\") {\n setFrontFile(null);\n setFrontPreview(null);\n setIsFrontFromInitial(false);\n if (frontInputRef.current) frontInputRef.current.value = \"\";\n } else {\n setBackFile(null);\n setBackPreview(null);\n setIsBackFromInitial(false);\n }\n setError(\"\");\n };\n\n const removeAllImages = () => {\n setFrontFile(null);\n setBackFile(null);\n setFrontPreview(null);\n setBackPreview(null);\n setIsFrontFromInitial(false);\n setIsBackFromInitial(false);\n if (frontInputRef.current) frontInputRef.current.value = \"\";\n if (multipleInputRef.current) multipleInputRef.current.value = \"\";\n setError(\"\");\n };\n\n // Drag and Drop handlers\n const handleDragEnter = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n e.stopPropagation();\n setIsDragging(true);\n };\n\n const handleDragLeave = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n // Only set isDragging to false if we're leaving the drop zone entirely\n if (\n dropZoneRef.current &&\n !dropZoneRef.current.contains(e.relatedTarget as Node)\n ) {\n setIsDragging(false);\n }\n };\n\n const handleDragOver = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n e.stopPropagation();\n };\n\n const handleDrop = async (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n e.stopPropagation();\n setIsDragging(false);\n\n const droppedFiles = e.dataTransfer.files;\n if (!droppedFiles || droppedFiles.length === 0) return;\n\n // Vérifier le nombre de fichiers\n if (droppedFiles.length > 2) {\n setError(t(\"jdi.document_upload.errors.max_files\"));\n return;\n }\n\n // Détermine si on est en mode \"ajout au verso\" :\n // - 1 seul fichier déposé\n // - document recto/verso requis\n // - recto déjà présent via un dépôt utilisateur (pas uniquement via initialFront)\n // - verso pas encore présent\n const hasFrontFromUser = !!(frontFile || (!isFrontFromInitial && frontPreview));\n const hasBack = !!(backFile || isBackFromInitial || backPreview);\n const isAddingVerso =\n droppedFiles.length === 1 && twoSidesRequired && hasFrontFromUser && !hasBack;\n\n // Si on n'est pas en mode ajout verso, on repart de zéro\n if (!isAddingVerso) {\n setFrontFile(null);\n setBackFile(null);\n setFrontPreview(null);\n setBackPreview(null);\n setIsFrontFromInitial(false);\n setIsBackFromInitial(false);\n }\n\n setError(\"\");\n\n // Traiter chaque fichier\n for (let index = 0; index < droppedFiles.length; index++) {\n let currentFile = droppedFiles[index];\n\n try {\n currentFile = await convertFileToSupportedFormat(currentFile);\n } catch (conversionError) {\n console.error(\"handleDrop: HEIC conversion failed\", conversionError);\n setError(\n conversionError instanceof Error\n ? conversionError.message\n : t(\"jdi.document_upload.errors.heic_unsupported\"),\n );\n return;\n }\n\n // Valider le type de fichier\n if (!isValidFileType(currentFile)) {\n setError(\n t(\"jdi.document_upload.errors.invalid_file_type_indexed\", {\n index: index + 1,\n }),\n );\n return;\n }\n\n // Valider la taille du fichier\n if (!isValidFileSize(currentFile)) {\n setError(\n t(\"jdi.document_upload.errors.file_too_large_indexed\", {\n index: index + 1,\n }),\n );\n return;\n }\n\n // En mode ajout verso : le fichier unique devient le verso\n // Sinon : index 0 = recto, index 1 = verso\n const isVersoSlot = isAddingVerso || (index === 1 && twoSidesRequired);\n\n if (!isVersoSlot) {\n setFrontFile(currentFile);\n } else if (twoSidesRequired) {\n setBackFile(currentFile);\n }\n\n // Store File object and create preview\n const reader = new FileReader();\n reader.onload = (ev) => {\n const result = ev.target?.result as string;\n if (!isVersoSlot) {\n setFrontPreview(result);\n } else if (twoSidesRequired) {\n setBackPreview(result);\n }\n };\n reader.readAsDataURL(currentFile);\n }\n };\n\n return (\n <MobilePageLayout\n contentClassName=\"h-full\"\n footer={\n <PageActions\n primary={\n <Button\n onClick={handleUpload}\n disabled={(!frontFile && !isFrontFromInitial) || isUploading}\n >\n {getValidateButtonText()}\n </Button>\n }\n secondary={\n <Button variant=\"secondary\" onClick={onBack} disabled={isUploading}>\n {t(\"jdi.document_upload.back\")}\n </Button>\n }\n />\n }\n >\n {/* Main content */}\n <div className=\"flex-1 flex items-center justify-center p-4\">\n <div className=\"w-full max-w-lg\">\n {/* Header */}\n <div className=\"text-center mb-8\">\n <h1 className=\"text-2xl md:text-3xl font-bold text-gray-900 mb-2\">\n {getDropZoneText()}\n </h1>\n <p className=\"text-gray-600\">{getUploadInstruction()}</p>\n </div>\n\n {/* Upload Card */}\n <Card\n ref={dropZoneRef}\n className={`border-2 border-dashed ${\n isDragging\n ? \"border-teal-500 bg-teal-100/50\"\n : \"border-teal-300 bg-teal-50/30\"\n } p-8 mb-6 transition-colors`}\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n >\n <div className=\"text-center space-y-6\">\n {!frontPreview ? (\n <>\n <h3 className=\"text-lg font-semibold text-gray-900 mb-4\">\n {t(\"documentTypes.\" + documentType)}\n </h3>\n\n <div className=\"flex justify-center w-full\">\n <Button\n onClick={() => frontInputRef.current?.click()}\n 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\"\n disabled={isUploading}\n >\n <span>{t(\"jdi.document_upload.add_file\")}</span>\n </Button>\n </div>\n\n <p className=\"text-sm text-gray-500 italic\">\n {t(\n \"jdi.document_upload.drag_drop_hint\",\n \"ou glissez-déposez vos fichiers ici\",\n )}\n </p>\n\n <div className=\"text-sm text-gray-600 space-y-1\">\n <p>{t(\"jdi.document_upload.accepted_formats\")}</p>\n <p>\n {twoSidesRequired\n ? frontPreview\n ? t(\"jdi.document_upload.add_back_side\")\n : t(\"jdi.document_upload.multiple_files_info\")\n : t(\"jdi.document_upload.single_file_info\")}\n </p>\n </div>\n </>\n ) : (\n <div className=\"space-y-4\">\n <h3 className=\"text-lg font-semibold text-gray-900\">\n {twoSidesRequired && frontPreview && backPreview\n ? t(\"jdi.document_upload.documents_added\")\n : t(\"jdi.document_upload.document_added\")}\n </h3>\n\n {/* Preview du document recto */}\n <div className=\"bg-white border border-gray-200 rounded-lg p-4\">\n <div className=\"mb-3\">\n <p className=\"text-sm font-medium text-gray-900 mb-1\">\n {twoSidesRequired && backPreview\n ? t(\"jdi.document_upload.front_side\")\n : t(\"documentTypes.\" + documentType)}\n </p>\n <p className=\"text-xs text-gray-500\">\n {isPDF(frontFile)\n ? t(\"jdi.document_upload.pdf_preview\")\n : t(\"jdi.document_upload.image_preview\")}\n </p>\n </div>\n {isPDF(frontFile) ? (\n <PDFPreview src={frontPreview} className=\"mb-3\" />\n ) : (\n <img\n src={frontPreview || \"/placeholder.svg\"}\n alt=\"Document\"\n className=\"w-full h-48 object-contain bg-gray-50 rounded-lg border mb-3\"\n />\n )}\n <div className=\"flex justify-end gap-2\">\n {twoSidesRequired && frontPreview && backPreview ? (\n <button\n onClick={removeAllImages}\n className=\"text-red-500 hover:text-red-700 p-1 text-sm\"\n disabled={isUploading}\n >\n {t(\"jdi.document_upload.restart\")}\n </button>\n ) : (\n <>\n <button\n onClick={() => frontInputRef.current?.click()}\n className=\"text-teal-600 hover:text-teal-700 p-1 text-sm\"\n disabled={isUploading}\n title=\"Changer le document\"\n >\n {t(\"jdi.document_upload.change\")}\n </button>\n <button\n onClick={() => removeImage(\"front\")}\n className=\"text-red-500 hover:text-red-700 p-1\"\n disabled={isUploading}\n title=\"Supprimer le document\"\n >\n <svg\n className=\"h-5 w-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16\"\n />\n </svg>\n </button>\n </>\n )}\n </div>\n </div>\n\n {/* Preview du document verso (si présent) */}\n {twoSidesRequired && backPreview && (\n <div className=\"bg-white border border-gray-200 rounded-lg p-4\">\n <div className=\"mb-3\">\n <p className=\"text-sm font-medium text-gray-900 mb-1\">\n {t(\"jdi.document_upload.back_side\")}\n </p>\n <p className=\"text-xs text-gray-500\">\n {isPDF(frontFile)\n ? t(\"jdi.document_upload.pdf_preview\")\n : t(\"jdi.document_upload.image_preview\")}\n </p>\n </div>\n {isPDF(backFile) ? (\n <PDFPreview src={backPreview || \"\"} className=\"mb-3\" />\n ) : (\n <img\n src={backPreview || \"\"}\n alt=\"Verso\"\n className=\"w-full h-48 object-contain bg-gray-50 rounded-lg border mb-3\"\n />\n )}\n </div>\n )}\n\n {/* Bouton pour ajouter le verso si c'est un document recto/verso et qu'on n'a pas encore le verso */}\n {twoSidesRequired && !backPreview && (\n <div className=\"flex justify-center mt-4\">\n <Button\n onClick={() => {\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.accept = \"image/*,.pdf\";\n input.onchange = (e) =>\n handleFileChange(e as any, \"back\");\n input.click();\n }}\n className=\"border border-teal-300 text-teal-600 bg-transparent hover:bg-teal-50 px-4 py-2 rounded-lg font-medium text-sm flex items-center\"\n disabled={isUploading}\n >\n <span>{t(\"jdi.document_upload.add_back\")}</span>\n </Button>\n </div>\n )}\n\n <div className=\"text-sm text-gray-600\">\n <p>\n {twoSidesRequired && backPreview\n ? t(\"jdi.document_upload.documents_ready\")\n : t(\"jdi.document_upload.document_ready\")}\n </p>\n </div>\n </div>\n )}\n </div>\n </Card>\n\n {/* Input pour un seul fichier */}\n <input\n ref={frontInputRef}\n type=\"file\"\n accept=\"image/*,.pdf\"\n onChange={(e) => handleFileChange(e, \"front\")}\n className=\"hidden\"\n />\n\n {/* Input pour plusieurs fichiers (recto/verso) */}\n <input\n ref={multipleInputRef}\n type=\"file\"\n accept=\"image/*,.pdf\"\n multiple={twoSidesRequired}\n onChange={handleMultipleFileChange}\n className=\"hidden\"\n />\n\n {/* Error message */}\n {error && (\n <div className=\"bg-red-50 border border-red-200 rounded-lg p-4 mb-6\">\n <p className=\"text-sm text-red-600 flex items-center\">\n <span className=\"mr-2\">⚠</span>\n {error}\n </p>\n </div>\n )}\n </div>\n </div>\n </MobilePageLayout>\n );\n};\n\nexport default JDIDocumentUpload;\n"],"names":["useI18n","useEffect","useState","useRef","requiresTwoSides","__awaiter","convertFileToSupportedFormat","isValidFileType","isValidFileSize","fileToBase64","isValidBase64Data","_jsx","MobilePageLayout","PageActions","Button","_jsxs","Card","_Fragment","isPDF","PDFPreview"],"mappings":"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"}
1
+ {"version":3,"file":"JDIDocumentUpload.js","sources":["../../../../../src/components/jdi/JDIDocumentUpload.tsx"],"sourcesContent":["import { useState, useRef, useEffect } from \"react\";\n\nimport Button from \"../ui/Button\";\nimport PageActions from \"../ui/PageActions\";\nimport { Card } from \"../ui/Card\";\nimport PDFPreview from \"../ui/PDFPreview\";\nimport type { onUploadFiles } from \"../../types/uploadFiles\";\nimport { useI18n } from \"../../hooks/useI18n\";\nimport {\n convertFileToSupportedFormat,\n fileToBase64,\n isPDF,\n isValidFileType,\n isValidFileSize,\n isValidBase64Data,\n} from \"../../utils/fileConverter\";\nimport { requiresTwoSides } from \"../../utils/documentLabels\";\nimport MobilePageLayout from \"../ui/MobilePageLayout\";\n\ninterface JDIDocumentUploadProps {\n documentType: string;\n onUpload: (files: onUploadFiles) => void;\n onBack: () => void;\n documentTypeId?: string; // Pour identifier des types spécifiques comme jdd ou income-proof\n documentLabel?: string; // Le label lisible du document sélectionné (ex: \"Carte nationale d'identité\")\n initialFront?: string | null; // Base64 du recto déjà déposé (ex: après erreur 2.5)\n initialBack?: string | null; // Base64 du verso déjà déposé (ex: après erreur 2.5)\n}\n\nconst JDIDocumentUpload = ({\n documentType,\n onUpload,\n onBack,\n documentTypeId,\n documentLabel,\n initialFront = null,\n initialBack = null,\n}: JDIDocumentUploadProps) => {\n const { t } = useI18n();\n\n // Helper functions for conditional text\n const getDropZoneText = () => {\n return t(\"jdi.document_upload.drop_zone\", {\n document: t(\"documentTypes.\" + documentType),\n });\n };\n\n const getUploadInstruction = () => {\n switch (documentTypeId) {\n case \"jdd\":\n return t(\"jdi.document_upload.upload_jdd\");\n case \"income-proof\":\n return t(\"jdi.document_upload.upload_income_proof\");\n default:\n return t(\"jdi.document_upload.upload_identity\", {\n document: t(\"documentTypes.\" + documentType),\n });\n }\n };\n\n const getValidateButtonText = () => {\n if (isUploading) {\n return t(\"jdi.document_upload.uploading\");\n }\n return documentTypeId === \"jdd\" || documentTypeId === \"income-proof\"\n ? t(\"jdi.document_upload.validate_single\")\n : t(\"jdi.document_upload.validate_multiple\");\n };\n // Ajout de logs pour le débogage\n useEffect(() => {\n // Vérifier si le document type est valide\n if (!documentType) {\n console.error(\"JDIDocumentUpload: documentType is missing or invalid\", {\n documentType,\n documentTypeId,\n });\n }\n }, [documentType, documentTypeId, documentLabel]);\n\n // Store File objects instead of base64 strings\n // initialFront/initialBack permettent de pré-remplir en cas de retry (ex: erreur 2.5)\n const [frontFile, setFrontFile] = useState<File | null>(null);\n const [backFile, setBackFile] = useState<File | null>(null);\n const [frontPreview, setFrontPreview] = useState<string | null>(initialFront ?? null);\n const [backPreview, setBackPreview] = useState<string | null>(initialBack ?? null);\n // Indique que le recto/verso vient d'un dépôt précédent (pas un File local)\n const [isFrontFromInitial, setIsFrontFromInitial] = useState<boolean>(!!initialFront);\n const [isBackFromInitial, setIsBackFromInitial] = useState<boolean>(!!initialBack);\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 const twoSidesRequired = requiresTwoSides(documentType);\n\n // Nouvelle fonction pour gérer la sélection multiple de fichiers\n const handleMultipleFileChange = async (\n event: React.ChangeEvent<HTMLInputElement>,\n ) => {\n const files = event.target.files;\n if (!files) return;\n\n // Vérifier le nombre de fichiers - maximum 2 fichiers\n if (files.length > 2) {\n setError(t(\"jdi.document_upload.errors.max_files\"));\n return;\n } else if (files.length === 0) {\n setError(t(\"jdi.document_upload.errors.min_files\"));\n return;\n }\n\n setError(\"\");\n setFrontFile(null);\n setBackFile(null);\n setFrontPreview(null);\n setBackPreview(null);\n\n // Traiter chaque fichier\n for (let index = 0; index < files.length; index++) {\n let currentFile = files[index];\n\n try {\n currentFile = await convertFileToSupportedFormat(currentFile);\n } catch (conversionError) {\n console.error(\n \"handleMultipleFileChange: HEIC conversion failed\",\n conversionError,\n );\n setError(\n conversionError instanceof Error\n ? conversionError.message\n : t(\"jdi.document_upload.errors.heic_unsupported\"),\n );\n event.target.value = \"\";\n if (multipleInputRef.current) {\n multipleInputRef.current.value = \"\";\n }\n return;\n }\n\n // Valider le type de fichier\n if (!isValidFileType(currentFile)) {\n setError(\n t(\"jdi.document_upload.errors.invalid_file_type_indexed\", {\n index: index + 1,\n }),\n );\n event.target.value = \"\";\n if (multipleInputRef.current) {\n multipleInputRef.current.value = \"\";\n }\n return;\n }\n\n // Valider la taille du fichier\n if (!isValidFileSize(currentFile)) {\n setError(\n t(\"jdi.document_upload.errors.file_too_large_indexed\", {\n index: index + 1,\n }),\n );\n event.target.value = \"\";\n if (multipleInputRef.current) {\n multipleInputRef.current.value = \"\";\n }\n return;\n }\n\n if (index === 0) {\n // Premier fichier = recto\n setFrontFile(currentFile);\n } else if (index === 1 && twoSidesRequired) {\n // Deuxième fichier = verso (seulement si nécessaire)\n setBackFile(currentFile);\n }\n\n // Store File object and create preview\n const reader = new FileReader();\n reader.onload = (e) => {\n const result = e.target?.result as string;\n\n if (index === 0) {\n setFrontPreview(result);\n } else if (index === 1 && twoSidesRequired) {\n setBackPreview(result);\n }\n };\n reader.readAsDataURL(currentFile);\n }\n };\n\n const handleFileChange = async (\n event: React.ChangeEvent<HTMLInputElement>,\n side: \"front\" | \"back\",\n ) => {\n const file = event.target.files?.[0];\n if (!file) return;\n\n let processedFile = file;\n try {\n processedFile = await convertFileToSupportedFormat(file);\n } catch (conversionError) {\n console.error(\n \"handleFileChange: HEIC conversion failed\",\n conversionError,\n );\n setError(\n conversionError instanceof Error\n ? conversionError.message\n : t(\"jdi.document_upload.errors.heic_unsupported\"),\n );\n event.target.value = \"\";\n if (side === \"front\" && frontInputRef.current) {\n frontInputRef.current.value = \"\";\n }\n return;\n }\n\n // Validate file type\n if (!isValidFileType(processedFile)) {\n setError(t(\"jdi.document_upload.errors.invalid_file_type\"));\n event.target.value = \"\";\n return;\n }\n\n // Validate file size (max 10MB)\n if (!isValidFileSize(processedFile)) {\n setError(t(\"jdi.document_upload.errors.file_too_large\"));\n event.target.value = \"\";\n return;\n }\n\n setError(\"\");\n\n // Store File object and create preview\n const reader = new FileReader();\n reader.onload = (e) => {\n const result = e.target?.result as string;\n\n if (side === \"front\") {\n setFrontFile(processedFile);\n setFrontPreview(result);\n setIsFrontFromInitial(false);\n } else {\n setBackFile(processedFile);\n setBackPreview(result);\n setIsBackFromInitial(false);\n }\n };\n reader.readAsDataURL(processedFile);\n };\n\n const handleUpload = async () => {\n // Clear previous errors\n setError(\"\");\n\n // Validation : recto obligatoire (soit un File local, soit une valeur initiale)\n if (!frontFile && !isFrontFromInitial) {\n const errorKey =\n documentTypeId === \"jdd\"\n ? \"jdi.document_upload.errors.add_photo_jdd\"\n : documentTypeId === \"income-proof\"\n ? \"jdi.document_upload.errors.add_photo_income_proof\"\n : \"jdi.document_upload.errors.add_photo_identity\";\n\n setError(t(errorKey));\n return;\n }\n\n // Note: For two-sided documents, the back side is no longer mandatory\n // The user can choose to upload only the front side\n\n setIsUploading(true);\n\n try {\n // Recto : soit conversion d'un File, soit réutilisation de la base64 initiale\n let frontBase64: string;\n if (frontFile) {\n frontBase64 = await fileToBase64(frontFile);\n if (!isValidBase64Data(frontBase64)) {\n setError(t(\"jdi.document_upload.errors.front_corrupted\"));\n setIsUploading(false);\n return;\n }\n } else {\n // isFrontFromInitial === true : on réutilise la valeur initiale\n frontBase64 = initialFront!;\n }\n\n let backBase64: string | null = null;\n if (twoSidesRequired) {\n if (backFile) {\n backBase64 = await fileToBase64(backFile);\n if (!isValidBase64Data(backBase64)) {\n setError(t(\"jdi.document_upload.errors.back_corrupted\"));\n setIsUploading(false);\n return;\n }\n } else if (isBackFromInitial) {\n // On réutilise le verso initial\n backBase64 = initialBack!;\n }\n }\n\n const files = {\n front: frontBase64,\n back: twoSidesRequired ? backBase64 : null,\n };\n\n onUpload(files);\n } catch (err) {\n console.error(\"JDIDocumentUpload: Upload error:\", err);\n setError(t(\"jdi.document_upload.errors.upload_error\"));\n setIsUploading(false);\n }\n };\n\n const removeImage = (side: \"front\" | \"back\") => {\n if (side === \"front\") {\n setFrontFile(null);\n setFrontPreview(null);\n setIsFrontFromInitial(false);\n if (frontInputRef.current) frontInputRef.current.value = \"\";\n } else {\n setBackFile(null);\n setBackPreview(null);\n setIsBackFromInitial(false);\n }\n setError(\"\");\n };\n\n const removeAllImages = () => {\n setFrontFile(null);\n setBackFile(null);\n setFrontPreview(null);\n setBackPreview(null);\n setIsFrontFromInitial(false);\n setIsBackFromInitial(false);\n if (frontInputRef.current) frontInputRef.current.value = \"\";\n if (multipleInputRef.current) multipleInputRef.current.value = \"\";\n setError(\"\");\n };\n\n // Drag and Drop handlers\n const handleDragEnter = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n e.stopPropagation();\n setIsDragging(true);\n };\n\n const handleDragLeave = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n // Only set isDragging to false if we're leaving the drop zone entirely\n if (\n dropZoneRef.current &&\n !dropZoneRef.current.contains(e.relatedTarget as Node)\n ) {\n setIsDragging(false);\n }\n };\n\n const handleDragOver = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n e.stopPropagation();\n };\n\n const handleDrop = async (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n e.stopPropagation();\n setIsDragging(false);\n\n const droppedFiles = e.dataTransfer.files;\n if (!droppedFiles || droppedFiles.length === 0) return;\n\n // Vérifier le nombre de fichiers\n if (droppedFiles.length > 2) {\n setError(t(\"jdi.document_upload.errors.max_files\"));\n return;\n }\n\n // Détermine si on est en mode \"ajout au verso\" :\n // - 1 seul fichier déposé\n // - document recto/verso requis\n // - recto déjà présent via un dépôt utilisateur (pas uniquement via initialFront)\n // - verso pas encore présent\n const hasFrontFromUser = !!(frontFile || (!isFrontFromInitial && frontPreview));\n const hasBack = !!(backFile || isBackFromInitial || backPreview);\n const isAddingVerso =\n droppedFiles.length === 1 && twoSidesRequired && hasFrontFromUser && !hasBack;\n\n // Si on n'est pas en mode ajout verso, on repart de zéro\n if (!isAddingVerso) {\n setFrontFile(null);\n setBackFile(null);\n setFrontPreview(null);\n setBackPreview(null);\n setIsFrontFromInitial(false);\n setIsBackFromInitial(false);\n }\n\n setError(\"\");\n\n // Traiter chaque fichier\n for (let index = 0; index < droppedFiles.length; index++) {\n let currentFile = droppedFiles[index];\n\n try {\n currentFile = await convertFileToSupportedFormat(currentFile);\n } catch (conversionError) {\n console.error(\"handleDrop: HEIC conversion failed\", conversionError);\n setError(\n conversionError instanceof Error\n ? conversionError.message\n : t(\"jdi.document_upload.errors.heic_unsupported\"),\n );\n return;\n }\n\n // Valider le type de fichier\n if (!isValidFileType(currentFile)) {\n setError(\n t(\"jdi.document_upload.errors.invalid_file_type_indexed\", {\n index: index + 1,\n }),\n );\n return;\n }\n\n // Valider la taille du fichier\n if (!isValidFileSize(currentFile)) {\n setError(\n t(\"jdi.document_upload.errors.file_too_large_indexed\", {\n index: index + 1,\n }),\n );\n return;\n }\n\n // En mode ajout verso : le fichier unique devient le verso\n // Sinon : index 0 = recto, index 1 = verso\n const isVersoSlot = isAddingVerso || (index === 1 && twoSidesRequired);\n\n if (!isVersoSlot) {\n setFrontFile(currentFile);\n } else if (twoSidesRequired) {\n setBackFile(currentFile);\n }\n\n // Store File object and create preview\n const reader = new FileReader();\n reader.onload = (ev) => {\n const result = ev.target?.result as string;\n if (!isVersoSlot) {\n setFrontPreview(result);\n } else if (twoSidesRequired) {\n setBackPreview(result);\n }\n };\n reader.readAsDataURL(currentFile);\n }\n };\n\n return (\n <MobilePageLayout\n contentClassName=\"h-full\"\n footer={\n <PageActions\n primary={\n <Button\n onClick={handleUpload}\n disabled={(!frontFile && !isFrontFromInitial) || isUploading}\n >\n {getValidateButtonText()}\n </Button>\n }\n secondary={\n <Button variant=\"secondary\" onClick={onBack} disabled={isUploading}>\n {t(\"jdi.document_upload.back\")}\n </Button>\n }\n />\n }\n >\n {/* Main content */}\n <div className=\"flex-1 flex items-start justify-center md:items-center p-4\">\n <div className=\"w-full max-w-lg\">\n {/* Header */}\n <div className=\"text-center mb-8\">\n <h1 className=\"text-2xl md:text-3xl font-bold text-gray-900 mb-2\">\n {getDropZoneText()}\n </h1>\n <p className=\"text-gray-600\">{getUploadInstruction()}</p>\n </div>\n\n {/* Upload Card */}\n <Card\n ref={dropZoneRef}\n className={`border-2 border-dashed ${\n isDragging\n ? \"border-teal-500 bg-teal-100/50\"\n : \"border-teal-300 bg-teal-50/30\"\n } p-8 mb-6 transition-colors`}\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n >\n <div className=\"text-center space-y-6\">\n {!frontPreview ? (\n <>\n <h3 className=\"text-lg font-semibold text-gray-900 mb-4\">\n {t(\"documentTypes.\" + documentType)}\n </h3>\n\n <div className=\"flex justify-center w-full\">\n <Button\n onClick={() => frontInputRef.current?.click()}\n 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\"\n disabled={isUploading}\n >\n <span>{t(\"jdi.document_upload.add_file\")}</span>\n </Button>\n </div>\n\n <p className=\"text-sm text-gray-500 italic\">\n {t(\n \"jdi.document_upload.drag_drop_hint\",\n \"ou glissez-déposez vos fichiers ici\",\n )}\n </p>\n\n <div className=\"text-sm text-gray-600 space-y-1\">\n <p>{t(\"jdi.document_upload.accepted_formats\")}</p>\n <p>\n {twoSidesRequired\n ? frontPreview\n ? t(\"jdi.document_upload.add_back_side\")\n : t(\"jdi.document_upload.multiple_files_info\")\n : t(\"jdi.document_upload.single_file_info\")}\n </p>\n </div>\n </>\n ) : (\n <div className=\"space-y-4\">\n <h3 className=\"text-lg font-semibold text-gray-900\">\n {twoSidesRequired && frontPreview && backPreview\n ? t(\"jdi.document_upload.documents_added\")\n : t(\"jdi.document_upload.document_added\")}\n </h3>\n\n {/* Preview du document recto */}\n <div className=\"bg-white border border-gray-200 rounded-lg p-4\">\n <div className=\"mb-3\">\n <p className=\"text-sm font-medium text-gray-900 mb-1\">\n {twoSidesRequired && backPreview\n ? t(\"jdi.document_upload.front_side\")\n : t(\"documentTypes.\" + documentType)}\n </p>\n <p className=\"text-xs text-gray-500\">\n {isPDF(frontFile)\n ? t(\"jdi.document_upload.pdf_preview\")\n : t(\"jdi.document_upload.image_preview\")}\n </p>\n </div>\n {isPDF(frontFile) ? (\n <PDFPreview src={frontPreview} className=\"mb-3\" />\n ) : (\n <img\n src={frontPreview || \"/placeholder.svg\"}\n alt=\"Document\"\n className=\"w-full h-48 object-contain bg-gray-50 rounded-lg border mb-3\"\n />\n )}\n <div className=\"flex justify-end gap-2\">\n {twoSidesRequired && frontPreview && backPreview ? (\n <button\n onClick={removeAllImages}\n className=\"text-red-500 hover:text-red-700 p-1 text-sm\"\n disabled={isUploading}\n >\n {t(\"jdi.document_upload.restart\")}\n </button>\n ) : (\n <>\n <button\n onClick={() => frontInputRef.current?.click()}\n className=\"text-teal-600 hover:text-teal-700 p-1 text-sm\"\n disabled={isUploading}\n title=\"Changer le document\"\n >\n {t(\"jdi.document_upload.change\")}\n </button>\n <button\n onClick={() => removeImage(\"front\")}\n className=\"text-red-500 hover:text-red-700 p-1\"\n disabled={isUploading}\n title=\"Supprimer le document\"\n >\n <svg\n className=\"h-5 w-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16\"\n />\n </svg>\n </button>\n </>\n )}\n </div>\n </div>\n\n {/* Preview du document verso (si présent) */}\n {twoSidesRequired && backPreview && (\n <div className=\"bg-white border border-gray-200 rounded-lg p-4\">\n <div className=\"mb-3\">\n <p className=\"text-sm font-medium text-gray-900 mb-1\">\n {t(\"jdi.document_upload.back_side\")}\n </p>\n <p className=\"text-xs text-gray-500\">\n {isPDF(frontFile)\n ? t(\"jdi.document_upload.pdf_preview\")\n : t(\"jdi.document_upload.image_preview\")}\n </p>\n </div>\n {isPDF(backFile) ? (\n <PDFPreview src={backPreview || \"\"} className=\"mb-3\" />\n ) : (\n <img\n src={backPreview || \"\"}\n alt=\"Verso\"\n className=\"w-full h-48 object-contain bg-gray-50 rounded-lg border mb-3\"\n />\n )}\n </div>\n )}\n\n {/* Bouton pour ajouter le verso si c'est un document recto/verso et qu'on n'a pas encore le verso */}\n {twoSidesRequired && !backPreview && (\n <div className=\"flex justify-center mt-4\">\n <Button\n onClick={() => {\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.accept = \"image/*,.pdf\";\n input.onchange = (e) =>\n handleFileChange(e as any, \"back\");\n input.click();\n }}\n className=\"border border-teal-300 text-teal-600 bg-transparent hover:bg-teal-50 px-4 py-2 rounded-lg font-medium text-sm flex items-center\"\n disabled={isUploading}\n >\n <span>{t(\"jdi.document_upload.add_back\")}</span>\n </Button>\n </div>\n )}\n\n <div className=\"text-sm text-gray-600\">\n <p>\n {twoSidesRequired && backPreview\n ? t(\"jdi.document_upload.documents_ready\")\n : t(\"jdi.document_upload.document_ready\")}\n </p>\n </div>\n </div>\n )}\n </div>\n </Card>\n\n {/* Input pour un seul fichier */}\n <input\n ref={frontInputRef}\n type=\"file\"\n accept=\"image/*,.pdf\"\n onChange={(e) => handleFileChange(e, \"front\")}\n className=\"hidden\"\n />\n\n {/* Input pour plusieurs fichiers (recto/verso) */}\n <input\n ref={multipleInputRef}\n type=\"file\"\n accept=\"image/*,.pdf\"\n multiple={twoSidesRequired}\n onChange={handleMultipleFileChange}\n className=\"hidden\"\n />\n\n {/* Error message */}\n {error && (\n <div className=\"bg-red-50 border border-red-200 rounded-lg p-4 mb-6\">\n <p className=\"text-sm text-red-600 flex items-center\">\n <span className=\"mr-2\">⚠</span>\n {error}\n </p>\n </div>\n )}\n </div>\n </div>\n </MobilePageLayout>\n );\n};\n\nexport default JDIDocumentUpload;\n"],"names":["useI18n","useEffect","useState","useRef","requiresTwoSides","__awaiter","convertFileToSupportedFormat","isValidFileType","isValidFileSize","fileToBase64","isValidBase64Data","_jsx","MobilePageLayout","PageActions","Button","_jsxs","Card","_Fragment","isPDF","PDFPreview"],"mappings":"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"}
@@ -9,12 +9,14 @@ var React = require('react');
9
9
  * le composant VideoRecorder d'Unissey et éliminent les bords arrondis et les fonds noirs.
10
10
  */
11
11
  var useVideoRecorderStyles = function (btnBg, btnText) {
12
+ var resolvedBtnBg = btnBg !== null && btnBg !== void 0 ? btnBg : "#11E5C5";
13
+ var resolvedBtnText = btnText !== null && btnText !== void 0 ? btnText : "#3C3C40";
12
14
  React.useEffect(function () {
13
15
  // Créer un élément style pour injecter des règles CSS
14
16
  var styleElement = document.createElement("style");
15
17
  styleElement.id = "video-recorder-custom-styles";
16
18
  // Définir les règles CSS nécessaires pour éliminer les bords arrondis et les fonds noirs
17
- styleElement.textContent = "\n /* Cibler le composant VideoRecorder et tous ses \u00E9l\u00E9ments internes */\n uni-video-recorder,\n uni-video-recorder::shadow-root,\n uni-video-recorder::part(*),\n uni-video-recorder *,\n uni-video-recorder video,\n uni-video-recorder canvas,\n uni-video-recorder div {\n border-radius: 0 !important;\n -webkit-border-radius: 0 !important;\n -moz-border-radius: 0 !important;\n background: transparent !important;\n overflow: hidden !important;\n }\n \n /* Assurer que la vid\u00E9o prend tout l'espace disponible */\n uni-video-recorder video,\n uni-video-recorder canvas {\n width: 100% !important;\n height: 100% !important;\n object-fit: cover !important;\n max-height: none !important;\n }\n\n /* iOS-specific fixes for getUserMedia black screen */\n @supports (-webkit-touch-callout: none) {\n uni-video-recorder video {\n -webkit-playsinline: true !important;\n playsinline: true !important;\n autoplay: true !important;\n muted: true !important;\n }\n }\n \n /* Variables CSS globales que le composant pourrait utiliser */\n :root {\n --uni-video-border-radius: 0 !important;\n --uni-border-radius: 0 !important;\n --uni-component-border-radius: 0 !important;\n --uni-video-background: transparent !important;\n --uni-background: transparent !important;\n }\n \n /* S\u00E9lecteurs tr\u00E8s sp\u00E9cifiques pour garantir que les styles s'appliquent */\n .video-container,\n .video-container > div,\n .video-container > div > uni-video-recorder,\n .video-container uni-video-recorder,\n .selfie .video-container,\n .selfie .video-container > div,\n .selfie .video-container uni-video-recorder {\n border-radius: 0 !important;\n background: transparent !important;\n overflow: hidden !important;\n }\n \n /* Pr\u00E9server les styles des boutons */\n .selfie button.selfie-button,\n button.selfie-button,\n .selfie-button {\n background-color: ".concat(btnBg !== null && btnBg !== void 0 ? btnBg : "#11E5C5", " !important;\n color: ").concat(btnText !== null && btnText !== void 0 ? btnText : "#3C3C40", " !important;\n border-radius: 12px !important;\n }\n\n .selfie button.selfie-button:hover,\n button.selfie-button:hover,\n .selfie-button:hover {\n background-color: ").concat(btnBg !== null && btnBg !== void 0 ? btnBg : "#11E5C5", " !important;\n filter: brightness(1.1);\n }\n\n .selfie button.selfie-button:disabled,\n button.selfie-button:disabled,\n .selfie-button:disabled {\n background-color: #e2e8f0 !important;\n opacity: 0.6 !important;\n }\n ");
19
+ styleElement.textContent = "\n /* Cibler le composant VideoRecorder et tous ses \u00E9l\u00E9ments internes */\n uni-video-recorder,\n uni-video-recorder::shadow-root,\n uni-video-recorder::part(*),\n uni-video-recorder *,\n uni-video-recorder video,\n uni-video-recorder canvas,\n uni-video-recorder div {\n border-radius: 0 !important;\n -webkit-border-radius: 0 !important;\n -moz-border-radius: 0 !important;\n background: transparent !important;\n overflow: hidden !important;\n }\n \n /* Assurer que la vid\u00E9o prend tout l'espace disponible */\n uni-video-recorder video,\n uni-video-recorder canvas {\n width: 100% !important;\n height: 100% !important;\n object-fit: cover !important;\n max-height: none !important;\n }\n\n /* iOS-specific fixes for getUserMedia black screen */\n @supports (-webkit-touch-callout: none) {\n uni-video-recorder video {\n -webkit-playsinline: true !important;\n playsinline: true !important;\n autoplay: true !important;\n muted: true !important;\n }\n }\n \n /* Variables CSS globales que le composant pourrait utiliser */\n :root {\n --uni-video-border-radius: 0 !important;\n --uni-border-radius: 0 !important;\n --uni-component-border-radius: 0 !important;\n --uni-video-background: transparent !important;\n --uni-background: transparent !important;\n }\n \n /* S\u00E9lecteurs tr\u00E8s sp\u00E9cifiques pour garantir que les styles s'appliquent */\n .video-container,\n .video-container > div,\n .video-container > div > uni-video-recorder,\n .video-container uni-video-recorder,\n .selfie .video-container,\n .selfie .video-container > div,\n .selfie .video-container uni-video-recorder {\n border-radius: 0 !important;\n background: transparent !important;\n overflow: hidden !important;\n }\n \n /* Pr\u00E9server les styles des boutons */\n .selfie button.selfie-button,\n button.selfie-button,\n .selfie-button {\n background-color: ".concat(resolvedBtnBg, " !important;\n color: ").concat(resolvedBtnText, " !important;\n border-radius: 12px !important;\n }\n\n .selfie button.selfie-button:hover,\n button.selfie-button:hover,\n .selfie-button:hover {\n background-color: ").concat(resolvedBtnBg, " !important;\n filter: brightness(1.1);\n }\n\n .selfie button.selfie-button:disabled,\n button.selfie-button:disabled,\n .selfie-button:disabled {\n background-color: #e2e8f0 !important;\n opacity: 0.6 !important;\n }\n ");
18
20
  // Ajouter l'élément style au head du document
19
21
  document.head.appendChild(styleElement);
20
22
  // Nettoyer en supprimant l'élément style lors du démontage du composant
@@ -24,7 +26,7 @@ var useVideoRecorderStyles = function (btnBg, btnText) {
24
26
  document.head.removeChild(existingStyle);
25
27
  }
26
28
  };
27
- }, [btnBg, btnText]);
29
+ }, [resolvedBtnBg, resolvedBtnText]);
28
30
  };
29
31
 
30
32
  exports.default = useVideoRecorderStyles;
@@ -1 +1 @@
1
- {"version":3,"file":"useVideoRecorderStyles.js","sources":["../../../../../../src/components/selfie/hooks/useVideoRecorderStyles.tsx"],"sourcesContent":["import { useEffect } from \"react\";\n\n/**\n * Hook personnalisé pour injecter des styles CSS globaux qui ciblent spécifiquement\n * le composant VideoRecorder d'Unissey et éliminent les bords arrondis et les fonds noirs.\n */\nconst useVideoRecorderStyles = (btnBg?: string, btnText?: string) => {\n useEffect(() => {\n // Créer un élément style pour injecter des règles CSS\n const styleElement = document.createElement(\"style\");\n styleElement.id = \"video-recorder-custom-styles\";\n\n // Définir les règles CSS nécessaires pour éliminer les bords arrondis et les fonds noirs\n styleElement.textContent = `\n /* Cibler le composant VideoRecorder et tous ses éléments internes */\n uni-video-recorder,\n uni-video-recorder::shadow-root,\n uni-video-recorder::part(*),\n uni-video-recorder *,\n uni-video-recorder video,\n uni-video-recorder canvas,\n uni-video-recorder div {\n border-radius: 0 !important;\n -webkit-border-radius: 0 !important;\n -moz-border-radius: 0 !important;\n background: transparent !important;\n overflow: hidden !important;\n }\n \n /* Assurer que la vidéo prend tout l'espace disponible */\n uni-video-recorder video,\n uni-video-recorder canvas {\n width: 100% !important;\n height: 100% !important;\n object-fit: cover !important;\n max-height: none !important;\n }\n\n /* iOS-specific fixes for getUserMedia black screen */\n @supports (-webkit-touch-callout: none) {\n uni-video-recorder video {\n -webkit-playsinline: true !important;\n playsinline: true !important;\n autoplay: true !important;\n muted: true !important;\n }\n }\n \n /* Variables CSS globales que le composant pourrait utiliser */\n :root {\n --uni-video-border-radius: 0 !important;\n --uni-border-radius: 0 !important;\n --uni-component-border-radius: 0 !important;\n --uni-video-background: transparent !important;\n --uni-background: transparent !important;\n }\n \n /* Sélecteurs très spécifiques pour garantir que les styles s'appliquent */\n .video-container,\n .video-container > div,\n .video-container > div > uni-video-recorder,\n .video-container uni-video-recorder,\n .selfie .video-container,\n .selfie .video-container > div,\n .selfie .video-container uni-video-recorder {\n border-radius: 0 !important;\n background: transparent !important;\n overflow: hidden !important;\n }\n \n /* Préserver les styles des boutons */\n .selfie button.selfie-button,\n button.selfie-button,\n .selfie-button {\n background-color: ${btnBg ?? \"#11E5C5\"} !important;\n color: ${btnText ?? \"#3C3C40\"} !important;\n border-radius: 12px !important;\n }\n\n .selfie button.selfie-button:hover,\n button.selfie-button:hover,\n .selfie-button:hover {\n background-color: ${btnBg ?? \"#11E5C5\"} !important;\n filter: brightness(1.1);\n }\n\n .selfie button.selfie-button:disabled,\n button.selfie-button:disabled,\n .selfie-button:disabled {\n background-color: #e2e8f0 !important;\n opacity: 0.6 !important;\n }\n `;\n\n // Ajouter l'élément style au head du document\n document.head.appendChild(styleElement);\n\n // Nettoyer en supprimant l'élément style lors du démontage du composant\n return () => {\n const existingStyle = document.getElementById(\n \"video-recorder-custom-styles\"\n );\n if (existingStyle) {\n document.head.removeChild(existingStyle);\n }\n };\n }, [btnBg, btnText]);\n};\n\nexport default useVideoRecorderStyles;\n"],"names":["useEffect"],"mappings":";;;;;;AAEA;;;AAGG;AACH,IAAM,sBAAsB,GAAG,UAAC,KAAc,EAAE,OAAgB,EAAA;AAC9D,IAAAA,eAAS,CAAC,YAAA;;QAER,IAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AACpD,QAAA,YAAY,CAAC,EAAE,GAAG,8BAA8B;;AAGhD,QAAA,YAAY,CAAC,WAAW,GAAG,2qEAAA,CAAA,MAAA,CA6DH,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,MAAA,GAAL,KAAK,GAAI,SAAS,EAAA,+BAAA,CAAA,CAAA,MAAA,CAC7B,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,MAAA,GAAP,OAAO,GAAI,SAAS,EAAA,0MAAA,CAAA,CAAA,MAAA,CAOT,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,MAAA,GAAL,KAAK,GAAI,SAAS,EAAA,gRAAA,CAUzC;;AAGD,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;;QAGvC,OAAO,YAAA;YACL,IAAM,aAAa,GAAG,QAAQ,CAAC,cAAc,CAC3C,8BAA8B,CAC/B;YACD,IAAI,aAAa,EAAE;AACjB,gBAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;YAC1C;AACF,QAAA,CAAC;AACH,IAAA,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACtB;;;;"}
1
+ {"version":3,"file":"useVideoRecorderStyles.js","sources":["../../../../../../src/components/selfie/hooks/useVideoRecorderStyles.tsx"],"sourcesContent":["import { useEffect } from \"react\";\n\n/**\n * Hook personnalisé pour injecter des styles CSS globaux qui ciblent spécifiquement\n * le composant VideoRecorder d'Unissey et éliminent les bords arrondis et les fonds noirs.\n */\nconst useVideoRecorderStyles = (btnBg?: string, btnText?: string) => {\n const resolvedBtnBg = btnBg ?? \"#11E5C5\";\n const resolvedBtnText = btnText ?? \"#3C3C40\";\n\n useEffect(() => {\n // Créer un élément style pour injecter des règles CSS\n const styleElement = document.createElement(\"style\");\n styleElement.id = \"video-recorder-custom-styles\";\n\n // Définir les règles CSS nécessaires pour éliminer les bords arrondis et les fonds noirs\n styleElement.textContent = `\n /* Cibler le composant VideoRecorder et tous ses éléments internes */\n uni-video-recorder,\n uni-video-recorder::shadow-root,\n uni-video-recorder::part(*),\n uni-video-recorder *,\n uni-video-recorder video,\n uni-video-recorder canvas,\n uni-video-recorder div {\n border-radius: 0 !important;\n -webkit-border-radius: 0 !important;\n -moz-border-radius: 0 !important;\n background: transparent !important;\n overflow: hidden !important;\n }\n \n /* Assurer que la vidéo prend tout l'espace disponible */\n uni-video-recorder video,\n uni-video-recorder canvas {\n width: 100% !important;\n height: 100% !important;\n object-fit: cover !important;\n max-height: none !important;\n }\n\n /* iOS-specific fixes for getUserMedia black screen */\n @supports (-webkit-touch-callout: none) {\n uni-video-recorder video {\n -webkit-playsinline: true !important;\n playsinline: true !important;\n autoplay: true !important;\n muted: true !important;\n }\n }\n \n /* Variables CSS globales que le composant pourrait utiliser */\n :root {\n --uni-video-border-radius: 0 !important;\n --uni-border-radius: 0 !important;\n --uni-component-border-radius: 0 !important;\n --uni-video-background: transparent !important;\n --uni-background: transparent !important;\n }\n \n /* Sélecteurs très spécifiques pour garantir que les styles s'appliquent */\n .video-container,\n .video-container > div,\n .video-container > div > uni-video-recorder,\n .video-container uni-video-recorder,\n .selfie .video-container,\n .selfie .video-container > div,\n .selfie .video-container uni-video-recorder {\n border-radius: 0 !important;\n background: transparent !important;\n overflow: hidden !important;\n }\n \n /* Préserver les styles des boutons */\n .selfie button.selfie-button,\n button.selfie-button,\n .selfie-button {\n background-color: ${resolvedBtnBg} !important;\n color: ${resolvedBtnText} !important;\n border-radius: 12px !important;\n }\n\n .selfie button.selfie-button:hover,\n button.selfie-button:hover,\n .selfie-button:hover {\n background-color: ${resolvedBtnBg} !important;\n filter: brightness(1.1);\n }\n\n .selfie button.selfie-button:disabled,\n button.selfie-button:disabled,\n .selfie-button:disabled {\n background-color: #e2e8f0 !important;\n opacity: 0.6 !important;\n }\n `;\n\n // Ajouter l'élément style au head du document\n document.head.appendChild(styleElement);\n\n // Nettoyer en supprimant l'élément style lors du démontage du composant\n return () => {\n const existingStyle = document.getElementById(\n \"video-recorder-custom-styles\"\n );\n if (existingStyle) {\n document.head.removeChild(existingStyle);\n }\n };\n }, [resolvedBtnBg, resolvedBtnText]);\n};\n\nexport default useVideoRecorderStyles;\n"],"names":["useEffect"],"mappings":";;;;;;AAEA;;;AAGG;AACH,IAAM,sBAAsB,GAAG,UAAC,KAAc,EAAE,OAAgB,EAAA;IAC9D,IAAM,aAAa,GAAG,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,MAAA,GAAL,KAAK,GAAI,SAAS;IACxC,IAAM,eAAe,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,MAAA,GAAP,OAAO,GAAI,SAAS;AAE5C,IAAAA,eAAS,CAAC,YAAA;;QAER,IAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AACpD,QAAA,YAAY,CAAC,EAAE,GAAG,8BAA8B;;QAGhD,YAAY,CAAC,WAAW,GAAG,2qEAAA,CAAA,MAAA,CA6DH,aAAa,0CACxB,eAAe,EAAA,0MAAA,CAAA,CAAA,MAAA,CAOJ,aAAa,EAAA,gRAAA,CAUpC;;AAGD,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;;QAGvC,OAAO,YAAA;YACL,IAAM,aAAa,GAAG,QAAQ,CAAC,cAAc,CAC3C,8BAA8B,CAC/B;YACD,IAAI,aAAa,EAAE;AACjB,gBAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;YAC1C;AACF,QAAA,CAAC;AACH,IAAA,CAAC,EAAE,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;AACtC;;;;"}
@@ -10,7 +10,7 @@ var useIsMobile = require('../../hooks/useIsMobile.js');
10
10
  var VideoWorkInProgress = function (_a) {
11
11
  var onContinue = _a.onContinue;
12
12
  var isMobile = useIsMobile.default();
13
- return (jsxRuntime.jsxs("div", { className: "flex flex-col justify-between h-full w-full", children: [jsxRuntime.jsx("div", { className: "flex-1 flex items-center justify-center px-4 py-8", children: jsxRuntime.jsxs("div", { className: "w-full max-w-md mx-auto text-center space-y-6", children: [jsxRuntime.jsx("div", { className: "text-6xl mb-6", children: "\uD83C\uDFA5" }), jsxRuntime.jsx("h1", { className: "text-2xl md:text-3xl font-bold text-gray-800 mb-4", children: "Capture vid\u00E9o en cours de d\u00E9veloppement" }), jsxRuntime.jsx("p", { className: "text-gray-600 text-lg mb-6", children: "Cette fonctionnalit\u00E9 de capture vid\u00E9o est actuellement en d\u00E9veloppement." }), jsxRuntime.jsxs("div", { className: "bg-purple-50 border border-purple-200 rounded-lg p-4 mb-8", children: [jsxRuntime.jsxs("div", { className: "flex items-center justify-center mb-2", children: [jsxRuntime.jsx("div", { className: "text-purple-500 text-2xl mr-2", children: "\uD83D\uDCF9" }), jsxRuntime.jsx("h3", { className: "text-purple-800 font-semibold", children: "Capture Vid\u00E9o - En d\u00E9veloppement" })] }), jsxRuntime.jsx("p", { className: "text-purple-700 text-sm", children: "La fonctionnalit\u00E9 de capture vid\u00E9o sera bient\u00F4t disponible avec des contr\u00F4les avanc\u00E9s. Vous pouvez continuer le processus pour passer \u00E0 l'\u00E9tape suivante." })] })] }) }), jsxRuntime.jsx("div", { className: "flex-shrink-0 p-4 border-t border-gray-200 bg-white", children: isMobile ? (jsxRuntime.jsx("div", { className: "w-full", children: jsxRuntime.jsx(Button.default, { onClick: onContinue, className: "w-full py-3", children: "Continuer" }) })) : (jsxRuntime.jsx("div", { className: "flex justify-end max-w-4xl mx-auto", children: jsxRuntime.jsx(ButtonDesktop.default, { onClick: onContinue, type: "continue", children: "Continuer" }) })) })] }));
13
+ return (jsxRuntime.jsxs("div", { className: "flex flex-col justify-between h-full w-full", children: [jsxRuntime.jsx("div", { className: "flex-1 flex items-start justify-center md:items-center px-4 py-8", children: jsxRuntime.jsxs("div", { className: "w-full max-w-md mx-auto text-center space-y-6", children: [jsxRuntime.jsx("div", { className: "text-6xl mb-6", children: "\uD83C\uDFA5" }), jsxRuntime.jsx("h1", { className: "text-2xl md:text-3xl font-bold text-gray-800 mb-4", children: "Capture vid\u00E9o en cours de d\u00E9veloppement" }), jsxRuntime.jsx("p", { className: "text-gray-600 text-lg mb-6", children: "Cette fonctionnalit\u00E9 de capture vid\u00E9o est actuellement en d\u00E9veloppement." }), jsxRuntime.jsxs("div", { className: "bg-purple-50 border border-purple-200 rounded-lg p-4 mb-8", children: [jsxRuntime.jsxs("div", { className: "flex items-center justify-center mb-2", children: [jsxRuntime.jsx("div", { className: "text-purple-500 text-2xl mr-2", children: "\uD83D\uDCF9" }), jsxRuntime.jsx("h3", { className: "text-purple-800 font-semibold", children: "Capture Vid\u00E9o - En d\u00E9veloppement" })] }), jsxRuntime.jsx("p", { className: "text-purple-700 text-sm", children: "La fonctionnalit\u00E9 de capture vid\u00E9o sera bient\u00F4t disponible avec des contr\u00F4les avanc\u00E9s. Vous pouvez continuer le processus pour passer \u00E0 l'\u00E9tape suivante." })] })] }) }), jsxRuntime.jsx("div", { className: "flex-shrink-0 p-4 border-t border-gray-200 bg-white", children: isMobile ? (jsxRuntime.jsx("div", { className: "w-full", children: jsxRuntime.jsx(Button.default, { onClick: onContinue, className: "w-full py-3", children: "Continuer" }) })) : (jsxRuntime.jsx("div", { className: "flex justify-end max-w-4xl mx-auto", children: jsxRuntime.jsx(ButtonDesktop.default, { onClick: onContinue, type: "continue", children: "Continuer" }) })) })] }));
14
14
  };
15
15
 
16
16
  exports.default = VideoWorkInProgress;