| | |
| | | PortalToFollowElemContent, |
| | | PortalToFollowElemTrigger, |
| | | } from '@/app/components/base/portal-to-follow-elem' |
| | | import classNames from '@/utils/classnames' |
| | | |
| | | type ModelSelectorProps = { |
| | | defaultModel?: DefaultModel |
| | |
| | | popupClassName?: string |
| | | onSelect?: (model: DefaultModel) => void |
| | | readonly?: boolean |
| | | scopeFeatures?: string[] |
| | | deprecatedClassName?: string |
| | | showDeprecatedWarnIcon?: boolean |
| | | } |
| | | const ModelSelector: FC<ModelSelectorProps> = ({ |
| | | defaultModel, |
| | |
| | | popupClassName, |
| | | onSelect, |
| | | readonly, |
| | | scopeFeatures = [], |
| | | deprecatedClassName, |
| | | showDeprecatedWarnIcon = false, |
| | | }) => { |
| | | const [open, setOpen] = useState(false) |
| | | const { |
| | |
| | | placement='bottom-start' |
| | | offset={4} |
| | | > |
| | | <div className={classNames('relative')}> |
| | | <div className='relative'> |
| | | <PortalToFollowElemTrigger |
| | | onClick={handleToggle} |
| | | className='block' |
| | |
| | | modelName={defaultModel?.model || ''} |
| | | providerName={defaultModel?.provider || ''} |
| | | className={triggerClassName} |
| | | showWarnIcon={showDeprecatedWarnIcon} |
| | | contentClassName={deprecatedClassName} |
| | | /> |
| | | ) |
| | | } |
| | |
| | | defaultModel={defaultModel} |
| | | modelList={modelList} |
| | | onSelect={handleSelect} |
| | | scopeFeatures={scopeFeatures} |
| | | onHide={() => setOpen(false)} |
| | | /> |
| | | </PortalToFollowElemContent> |
| | | </div> |