dify-run
/
web
/app
/components
/header
/account-setting
/model-provider-page
/model-name
/index.tsx
import type { FC, PropsWithChildren } from 'react' | |
import { | |
modelTypeFormat, | |
sizeFormat, | |
} from '../utils' | |
import { useLanguage } from '../hooks' | |
import type { ModelItem } from '../declarations' | |
import ModelBadge from '../model-badge' | |
import FeatureIcon from '../model-selector/feature-icon' | |
import classNames from '@/utils/classnames' | |
type ModelNameProps = PropsWithChildren<{ | |
modelItem: ModelItem | |
className?: string | |
showModelType?: boolean | |
modelTypeClassName?: string | |
showMode?: boolean | |
modeClassName?: string | |
showFeatures?: boolean | |
featuresClassName?: string | |
showContextSize?: boolean | |
}> | |
const ModelName: FC<ModelNameProps> = ({ | |
modelItem, | |
className, | |
showModelType, | |
modelTypeClassName, | |
showMode, | |
modeClassName, | |
showFeatures, | |
featuresClassName, | |
showContextSize, | |
children, | |
}) => { | |
const language = useLanguage() | |
if (!modelItem) | |
return null | |
return ( | |
<div | |
className={` | |
flex items-center truncate text-[13px] font-medium text-gray-800 | |
${className} | |
`} | |
> | |
<div | |
className='truncate' | |
title={modelItem.label[language] || modelItem.label.en_US} | |
> | |
{modelItem.label[language] || modelItem.label.en_US} | |
</div> | |
{ | |
showModelType && modelItem.model_type && ( | |
<ModelBadge className={classNames('ml-1', modelTypeClassName)}> | |
{modelTypeFormat(modelItem.model_type)} | |
</ModelBadge> | |
) | |
} | |
{ | |
modelItem.model_properties.mode && showMode && ( | |
<ModelBadge className={classNames('ml-1', modeClassName)}> | |
{(modelItem.model_properties.mode as string).toLocaleUpperCase()} | |
</ModelBadge> | |
) | |
} | |
{ | |
showFeatures && modelItem.features?.map(feature => ( | |
<FeatureIcon | |
key={feature} | |
feature={feature} | |
className={featuresClassName} | |
/> | |
)) | |
} | |
{ | |
showContextSize && modelItem.model_properties.context_size && ( | |
<ModelBadge className='ml-1'> | |
{sizeFormat(modelItem.model_properties.context_size as number)} | |
</ModelBadge> | |
) | |
} | |
{children} | |
</div> | |
) | |
} | |
export default ModelName | |