diff --git a/browser-extensions/chrome/src/app/pages/CredentialsList.tsx b/browser-extensions/chrome/src/app/pages/CredentialsList.tsx index 65c1adc1f..892104205 100644 --- a/browser-extensions/chrome/src/app/pages/CredentialsList.tsx +++ b/browser-extensions/chrome/src/app/pages/CredentialsList.tsx @@ -18,6 +18,7 @@ const CredentialsList: React.FC = () => { const dbContext = useDb(); const webApi = useWebApi(); const [credentials, setCredentials] = useState([]); + const [searchTerm, setSearchTerm] = useState(''); const navigate = useNavigate(); const { showLoading, hideLoading, setIsInitialLoading } = useLoading(); const authContext = useAuth(); @@ -111,6 +112,16 @@ const CredentialsList: React.FC = () => { hideLoading(); }; + // Add this function to filter credentials + const filteredCredentials = credentials.filter(cred => { + const searchLower = searchTerm.toLowerCase(); + return ( + cred.ServiceName.toLowerCase().includes(searchLower) || + cred.Username.toLowerCase().includes(searchLower) || + (cred.Email?.toLowerCase().includes(searchLower)) + ); + }); + if (isLoading) { return (
@@ -121,10 +132,24 @@ const CredentialsList: React.FC = () => { return (
-
-

Credentials

+
+

Credentials

+ + {credentials.length > 0 ? ( + setSearchTerm(e.target.value)} + autoFocus + className="w-full p-2 mb-4 border dark:border-gray-600 rounded bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-white focus:ring-blue-500 focus:border-blue-500" + /> + ) : ( + <> + )} + {credentials.length === 0 ? (

@@ -139,7 +164,7 @@ const CredentialsList: React.FC = () => {

) : (
    - {credentials.map(cred => ( + {filteredCredentials.map(cred => (
  • navigate(`/credentials/${cred.Id}`)} className="p-2 border dark:border-gray-600 rounded flex items-center bg-gray-50 dark:bg-gray-800 cursor-pointer hover:bg-gray-100 dark:hover:bg-gray-700">