import { type ProviderKind } from "@t3tools/contracts"; import { memo } from "react"; import { StarIcon } from "lucide-react"; import { getDisplayModelName, getProviderLabel, getTriggerDisplayModelLabel, type ModelEsque, PROVIDER_ICON_BY_PROVIDER, } from "./providerIconUtils"; import { ComboboxItem } from "../ui/combobox"; import { Kbd } from "../ui/kbd"; import { Tooltip, TooltipPopup, TooltipTrigger } from "../ui/tooltip"; import { cn } from "~/lib/utils"; export const ModelListRow = memo(function ModelListRow(props: { index: number; model: ModelEsque; provider: ProviderKind; isFavorite: boolean; showProvider: boolean; preferShortName?: boolean; useTriggerLabel?: boolean; showNewBadge?: boolean; jumpLabel?: string | null; onToggleFavorite: () => void; }) { const ProviderIcon = PROVIDER_ICON_BY_PROVIDER[props.provider]; return ( { event.stopPropagation(); props.onToggleFavorite(); }} onKeyDown={(event) => { event.stopPropagation(); }} type="button" aria-label={props.isFavorite ? "Remove from favorites" : "Add to favorites"} > } /> {props.isFavorite ? "Remove from favorites" : "Add to favorites"}
{props.useTriggerLabel ? getTriggerDisplayModelLabel(props.model) : getDisplayModelName( props.model, props.preferShortName ? { preferShortName: true } : undefined, )} {props.showNewBadge ? ( New ) : null}
{props.jumpLabel ? ( {props.jumpLabel} ) : null}
{props.showProvider && (
{getProviderLabel(props.provider, props.model)}
)}
); });