"use client"; import { useDisclosure } from "@heroui/use-disclosure"; import { useRouter } from "next/navigation"; import { useState } from "react"; import { Button, Card, CardAction, CardContent, CardHeader, CardTitle, } from "@/components/shadcn"; import { CustomLink } from "@/components/ui/custom/custom-link"; import { DataTable } from "@/components/ui/table"; import { MetaDataProps } from "@/types"; import { ApiKeySuccessModal } from "./api-key-success-modal"; import { createApiKeyColumns } from "./api-keys/column-api-keys"; import { EnrichedApiKey } from "./api-keys/types"; import { CreateApiKeyModal } from "./create-api-key-modal"; import { EditApiKeyNameModal } from "./edit-api-key-name-modal"; import { RevokeApiKeyModal } from "./revoke-api-key-modal"; interface ApiKeysCardClientProps { initialApiKeys: EnrichedApiKey[]; metadata?: MetaDataProps; } export const ApiKeysCardClient = ({ initialApiKeys, metadata, }: ApiKeysCardClientProps) => { const router = useRouter(); const [selectedApiKey, setSelectedApiKey] = useState( null, ); const [createdApiKey, setCreatedApiKey] = useState(null); const createModal = useDisclosure(); const successModal = useDisclosure(); const revokeModal = useDisclosure(); const editModal = useDisclosure(); const handleCreateSuccess = (apiKey: string) => { setCreatedApiKey(apiKey); successModal.onOpen(); router.refresh(); }; const handleRevokeSuccess = () => { router.refresh(); }; const handleEditSuccess = () => { router.refresh(); }; const handleRevokeClick = (apiKey: EnrichedApiKey) => { setSelectedApiKey(apiKey); revokeModal.onOpen(); }; const handleEditClick = (apiKey: EnrichedApiKey) => { setSelectedApiKey(apiKey); editModal.onOpen(); }; const columns = createApiKeyColumns(handleEditClick, handleRevokeClick); return ( <>
API Keys

Manage API keys for programmatic access.{" "} Read the docs

{initialApiKeys.length === 0 ? (

No API keys created yet.

) : ( )}
{/* Modals */} {createdApiKey && ( )} ); };