import Image from 'next/image' import { ModelSource } from '@janhq/core' import { Badge, Button, ScrollArea } from '@janhq/joi' import { useAtomValue, useSetAtom } from 'jotai' import { ArrowLeftIcon, DownloadIcon, FileJson, SettingsIcon, } from 'lucide-react' import ModelDownloadButton from '@/containers/ModelDownloadButton' import ModelLabel from '@/containers/ModelLabel' import { MainViewState } from '@/constants/screens' import { MarkdownTextMessage } from '@/screens/Thread/ThreadCenterPanel/TextMessage/MarkdownTextMessage' import { toGigabytes } from '@/utils/converter' import { extractModelName, removeYamlFrontMatter } from '@/utils/modelSource' import RemoteModelRefresh from './RemoteModelRefresh' import { mainViewStateAtom } from '@/helpers/atoms/App.atom' import { selectedSettingAtom, showScrollBarAtom, } from '@/helpers/atoms/Setting.atom' type Props = { model: ModelSource onGoBack: () => void } const ModelPage = ({ model, onGoBack }: Props) => { const setSelectedSetting = useSetAtom(selectedSettingAtom) const setMainViewState = useSetAtom(mainViewStateAtom) const showScrollBar = useAtomValue(showScrollBarAtom) return (
{/* Header */}
{model.type !== 'cloud' ? extractModelName(model.metadata.id) : model.metadata.id}
{model.type === 'cloud' && ( <> {!model.metadata?.apiKey?.length ? ( ) : ( )} )}
{(model?.author ?? model?.metadata?.author) && (

{model.id?.includes('huggingface.co') && ( <> {' '} )} {model?.author ?? model?.metadata?.author}

)} {model.models?.length > 0 && (

{model.models?.length}{' '} {model.type === 'cloud' ? 'models' : 'versions'}

)} {model.metadata?.downloads > 0 && (

{model.metadata?.downloads}

)}
{/* Table of versions */}
{model.type !== 'cloud' && ( <> )} {model.models?.map((item, i) => { return ( {model.type !== 'cloud' && ( <> )} ) })}
{model.type !== 'cloud' ? 'Version' : 'Models'} Format Size {model.type === 'cloud' && ( )}
{model.type === 'cloud' ? item.id : item.id?.split(':')?.pop()} {i === 0 && model.type !== 'cloud' && ( Default )} GGUF {toGigabytes(item.size)} {(model.type !== 'cloud' || (model.metadata?.apiKey?.length ?? 0) > 0) && ( )}
{/* README */}
) } export default ModelPage