diff --git a/frontend/src/components/PasswordInput.jsx b/frontend/src/components/PasswordInput.jsx
new file mode 100644
index 0000000..0cc04d7
--- /dev/null
+++ b/frontend/src/components/PasswordInput.jsx
@@ -0,0 +1,48 @@
+import { useState } from 'react';
+
+/**
+ * Champ mot de passe avec bouton "afficher/masquer".
+ * Utilisation : remplacer par
+ * Toutes les props (className, value, onChange, required, autoComplete, style, etc.)
+ * sont transmises telles quelles à l' sous-jacent.
+ */
+function EyeIcon({ open }) {
+ return open ? (
+
+ ) : (
+
+ );
+}
+
+export default function PasswordInput({ style, wrapperStyle, ...props }) {
+ const [show, setShow] = useState(false);
+
+ return (
+
+
+
+
+ );
+}
diff --git a/frontend/src/pages/InvitationRegister.jsx b/frontend/src/pages/InvitationRegister.jsx
index 6a4ef42..9d215ca 100644
--- a/frontend/src/pages/InvitationRegister.jsx
+++ b/frontend/src/pages/InvitationRegister.jsx
@@ -1,5 +1,6 @@
import { useState, useEffect } from 'react';
import PasswordStrength from '../components/PasswordStrength.jsx';
+import PasswordInput from '../components/PasswordInput.jsx';
import { useParams, useNavigate, Link } from 'react-router-dom';
// Wrap défini en dehors du composant pour éviter le remontage à chaque frappe
@@ -173,13 +174,13 @@ export default function InvitationRegister() {