'use client' import { useState } from 'react' import { Button } from '@/components/ui/button' import { Key, Plus, Trash2, Loader2, AlertCircle } from 'lucide-react' import { registerPasskey, isPasskeySupported } from '@/lib/passkeys' export function PasskeyManager() { const [isRegistering, setIsRegistering] = useState(false) const [error, setError] = useState(null) const [success, setSuccess] = useState(null) const [passkeys, setPasskeys] = useState>([]) const passkeySupported = isPasskeySupported() const handleRegisterPasskey = async () => { if (!passkeySupported) { setError('Your browser does not support passkeys') return } setIsRegistering(true) setError(null) setSuccess(null) try { const credential = await registerPasskey('', 'My Passkey') // In a real implementation, you'd send the credential to your server // and store it securely associated with the user const newPasskey = { id: credential.id, name: 'My Passkey', createdAt: new Date().toLocaleDateString(), } setPasskeys([...passkeys, newPasskey]) setSuccess('Passkey registered successfully') // Clear success message after 5 seconds setTimeout(() => setSuccess(null), 5000) } catch (error: unknown) { const message = error instanceof Error ? error.message : 'Failed to register passkey' setError(message) } finally { setIsRegistering(false) } } const handleDeletePasskey = (id: string) => { setPasskeys(passkeys.filter(pk => pk.id !== id)) setSuccess('Passkey removed') setTimeout(() => setSuccess(null), 5000) } if (!passkeySupported) { return (

Passkey Support Not Available

Your browser does not support passkeys. Please use a modern browser like Chrome, Safari, or Edge.

) } return (

Passkeys

{error && (

{error}

)} {success && (

{success}

)} {passkeys.length === 0 ? (

No passkeys registered yet. Add one to enable passwordless sign-in.

) : (
{passkeys.map((passkey) => (

{passkey.name}

Added on {passkey.createdAt}

))}
)}
) }