Skip to main content
Glama
PasskeyManagement.tsx2.51 kB
'use client'; import { Button, Container } from '@intlayer/design-system'; import { useAddPasskey, useDeletePasskey } from '@intlayer/design-system/hooks'; import { useIntlayer } from 'next-intlayer'; import { type FC, useState } from 'react'; import { AddPasskeyModal } from './AddPasskeyModal'; import { PasskeyItem } from './PasskeyItem'; import type { Passkey } from './types'; type PasskeyManagementProps = { passkeys: Passkey[]; onPasskeyAdded?: () => void; onPasskeyDeleted?: () => void; }; export const PasskeyManagement: FC<PasskeyManagementProps> = ({ passkeys, onPasskeyAdded, onPasskeyDeleted, }) => { const [isModalOpen, setIsModalOpen] = useState(false); const { mutate: addPasskey, isPending: isAddingPasskey } = useAddPasskey(); const { mutate: deletePasskey } = useDeletePasskey(); const { description, noPasskeysTitle, noPasskeysDescription, addPasskeyButton, } = useIntlayer('passkey-management'); const handleAddPasskey = (data: { name: string }) => { addPasskey(data, { onSuccess: () => { setIsModalOpen(false); onPasskeyAdded?.(); }, }); }; const handleDeletePasskey = (passkeyId: string) => { deletePasskey( { id: passkeyId }, { onSuccess: () => { onPasskeyDeleted?.(); }, } ); }; return ( <div className="space-y-6"> <div className="space-y-2"> <p className="text-neutral-600 dark:text-neutral-400">{description}</p> </div> {passkeys.length === 0 ? ( <Container className="p-6"> <div className="space-y-2"> <h3 className="font-semibold text-lg">{noPasskeysTitle}</h3> <p className="text-neutral-600 text-sm dark:text-neutral-400"> {noPasskeysDescription} </p> </div> </Container> ) : ( <div className="space-y-4"> {passkeys.map((passkey) => ( <PasskeyItem key={passkey.id} passkey={passkey} onDelete={handleDeletePasskey} /> ))} </div> )} <Button color="text" onClick={() => setIsModalOpen(true)} label={addPasskeyButton.value} > {addPasskeyButton} </Button> <AddPasskeyModal isOpen={isModalOpen} onClose={() => setIsModalOpen(false)} onSubmit={handleAddPasskey} isSubmitting={isAddingPasskey} /> </div> ); };

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/aymericzip/intlayer'

If you have feedback or need assistance with the MCP directory API, please join our Discord server