import { type ProviderDriverKind, type ProviderInstanceId } from "@t3tools/contracts"; import { memo } from "react"; import { StarIcon } from "lucide-react"; import { getDisplayModelName, getTriggerDisplayModelLabel, type ModelEsque, PROVIDER_ICON_BY_PROVIDER, } from "./providerIconUtils"; import { ComboboxItem } from "../ui/combobox"; import { Button } from "../ui/button"; 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; /** Instance the model belongs to — the routing key used in combobox values. */ instanceId: ProviderInstanceId; /** Driver kind of the instance — used for the provider icon glyph. */ driverKind: ProviderDriverKind; /** * Display name to show in the secondary line (provider footer). Usually * the instance's configured `displayName` so custom instances like * "Codex Personal" render with their user-authored label. */ providerDisplayName: string; providerAccentColor?: string | undefined; isFavorite: boolean; isSelected: boolean; showProvider: boolean; preferShortName?: boolean; useTriggerLabel?: boolean; showNewBadge?: boolean; jumpLabel?: string | null; disabledReason?: string | null; onToggleFavorite: () => void; }) { const ProviderIcon = PROVIDER_ICON_BY_PROVIDER[props.driverKind] ?? null; const providerLabel = props.model.subProvider ? `${props.providerDisplayName} · ${props.model.subProvider}` : props.providerDisplayName; const row = ( {props.useTriggerLabel ? getTriggerDisplayModelLabel(props.model) : getDisplayModelName( props.model, props.preferShortName ? { preferShortName: true } : undefined, )} {props.showNewBadge ? ( New ) : null} {props.showProvider && ( {ProviderIcon ? : null} {providerLabel} )} {props.jumpLabel ? ( {props.jumpLabel} ) : null} { event.stopPropagation(); props.onToggleFavorite(); }} onKeyDown={(event) => { event.stopPropagation(); }} disabled={Boolean(props.disabledReason)} aria-label={props.isFavorite ? "Remove from favorites" : "Add to favorites"} > } /> {props.isFavorite ? "Remove from favorites" : "Add to favorites"} ); if (!props.disabledReason) { return row; } return ( {props.disabledReason} ); });