import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { MODEL_NAME_MAX } from "@/db/limits" import { Tables, TablesUpdate } from "@/supabase/types" import { IconSparkles } from "@tabler/icons-react" import { FC, useState } from "react" import { SidebarItem } from "../all/sidebar-display-item" import { useTranslation } from 'react-i18next' interface ModelItemProps { model: Tables<"models"> } export const ModelItem: FC = ({ model }) => { const { t } = useTranslation() const [isTyping, setIsTyping] = useState(false) const [apiKey, setApiKey] = useState(model.api_key) const [baseUrl, setBaseUrl] = useState(model.base_url) const [description, setDescription] = useState(model.description) const [modelId, setModelId] = useState(model.model_id) const [name, setName] = useState(model.name) const [contextLength, setContextLength] = useState(model.context_length) return ( } updateState={ { api_key: apiKey, base_url: baseUrl, description, context_length: contextLength, model_id: modelId, name } as TablesUpdate<"models"> } renderInputs={() => ( <>
setName(e.target.value)} maxLength={MODEL_NAME_MAX} />
setModelId(e.target.value)} />
setBaseUrl(e.target.value)} />
{t("side.apiCompatibilityNotice")}
setApiKey(e.target.value)} />
setContextLength(parseInt(e.target.value))} />
)} /> ) }