import { IconEdit, IconKey, IconLoader2, IconStar, IconStarFilled, IconTrash, } from "@tabler/icons-react" import { useTranslation } from "react-i18next" import type { ModelInfo } from "@/api/models" import { Button } from "@/components/ui/button" import { Tooltip, TooltipContent, TooltipTrigger, } from "@/components/ui/tooltip" interface ModelCardProps { model: ModelInfo onEdit: (model: ModelInfo) => void onSetDefault: (model: ModelInfo) => void onDelete: (model: ModelInfo) => void settingDefault: boolean } export function ModelCard({ model, onEdit, onSetDefault, onDelete, settingDefault, }: ModelCardProps) { const { t } = useTranslation() const isOAuth = model.auth_method === "oauth" const status = model.status const statusLabel = t(`models.status.${status}`) const canSetDefault = model.available && !model.is_default && !model.is_virtual const setDefaultLabel = t("models.action.setDefault") const setDefaultDisabledReason = (() => { if (settingDefault) return t("models.action.setDefaultDisabled.setting") if (!model.available) return t("models.action.setDefaultDisabled.unavailable") if (model.is_default) return t("models.action.setDefaultDisabled.isDefault") if (model.is_virtual) return t("models.action.setDefaultDisabled.isVirtual") return setDefaultLabel })() const editLabel = t("models.action.edit") const deleteLabel = t("models.action.delete") const deleteDisabledReason = model.is_default ? t("models.action.deleteDisabled.isDefault") : deleteLabel const deleteDisabled = model.is_default return (
{model.model_name} {model.is_default && ( {t("models.badge.default")} )} {model.is_virtual && ( {t("models.badge.virtual")} )}
{model.is_default ? ( ) : ( {setDefaultDisabledReason} )} {deleteDisabledReason}

{model.model}

{isOAuth ? ( OAuth ) : status === "available" && model.api_key ? ( {model.api_key} ) : ( {statusLabel} )}
) }