"use client"; import { useRouter } from "next/navigation"; import { useState } from "react"; import { Button, Card, CardAction, CardContent, CardHeader, CardTitle, } from "@/components/shadcn"; import { CustomLink } from "@/components/shadcn/custom/custom-link"; import { DataTable } from "@/components/shadcn/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 [isCreateModalOpen, setIsCreateModalOpen] = useState(false); const [isSuccessModalOpen, setIsSuccessModalOpen] = useState(false); const [isRevokeModalOpen, setIsRevokeModalOpen] = useState(false); const [isEditModalOpen, setIsEditModalOpen] = useState(false); const handleCreateSuccess = (apiKey: string) => { setCreatedApiKey(apiKey); setIsSuccessModalOpen(true); router.refresh(); }; const handleRevokeSuccess = () => { router.refresh(); }; const handleEditSuccess = () => { router.refresh(); }; const handleRevokeClick = (apiKey: EnrichedApiKey) => { setSelectedApiKey(apiKey); setIsRevokeModalOpen(true); }; const handleEditClick = (apiKey: EnrichedApiKey) => { setSelectedApiKey(apiKey); setIsEditModalOpen(true); }; 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 */} setIsCreateModalOpen(false)} onSuccess={handleCreateSuccess} /> {createdApiKey && ( setIsSuccessModalOpen(false)} apiKey={createdApiKey} /> )} setIsRevokeModalOpen(false)} apiKey={selectedApiKey} onSuccess={handleRevokeSuccess} /> setIsEditModalOpen(false)} apiKey={selectedApiKey} onSuccess={handleEditSuccess} existingApiKeys={initialApiKeys} /> ); };