"use client" import { KeyRoundIcon } from "lucide-react" import { useContext, useState } from "react" import { useLang } from "../../../hooks/use-lang" import { AuthUIContext } from "../../../lib/auth-ui-provider" import { cn } from "../../../lib/utils" import type { AuthLocalization } from "../../../localization/auth-localization" import type { ApiKey } from "../../../types/api-key" import type { Refetch } from "../../../types/refetch" import { Button } from "../../ui/button" import { Card } from "../../ui/card" import type { SettingsCardClassNames } from "../shared/settings-card" import { ApiKeyDeleteDialog } from "./api-key-delete-dialog" export interface ApiKeyCellProps { className?: string classNames?: SettingsCardClassNames apiKey: ApiKey localization?: Partial refetch?: Refetch } export function ApiKeyCell({ className, classNames, apiKey, localization, refetch }: ApiKeyCellProps) { const { localization: contextLocalization } = useContext(AuthUIContext) localization = { ...contextLocalization, ...localization } const { lang } = useLang() const [showDeleteDialog, setShowDeleteDialog] = useState(false) // Format expiration date or show "Never expires" const formatExpiration = () => { if (!apiKey.expiresAt) return localization.NEVER_EXPIRES const expiresDate = new Date(apiKey.expiresAt) return `${localization.EXPIRES} ${expiresDate.toLocaleDateString( lang ?? "en", { month: "short", day: "numeric", year: "numeric" } )}` } return ( <>
{apiKey.name} {apiKey.start} {"******"}
{formatExpiration()}
) }