| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 | 
							- import { Fragment } from 'react'
 - import type { FC } from 'react'
 - import { Popover, Transition } from '@headlessui/react'
 - import { useTranslation } from 'react-i18next'
 - import { Check, DotsHorizontal, Trash03 } from '@/app/components/base/icons/src/vender/line/general'
 - 
 - const itemClassName = `
 - flex items-center px-3 h-9 text-sm text-gray-700 rounded-lg cursor-pointer
 - `
 - 
 - type SelectorProps = {
 -   value?: string
 -   onOperate: (v: Record<string, string>) => void
 -   hiddenOptions?: boolean
 -   className?: (v: boolean) => string
 -   deleteText?: string
 - }
 - const Selector: FC<SelectorProps> = ({
 -   value,
 -   onOperate,
 -   hiddenOptions,
 -   className,
 -   deleteText,
 - }) => {
 -   const { t } = useTranslation()
 -   const options = [
 -     {
 -       key: 'custom',
 -       text: 'API',
 -     },
 -     {
 -       key: 'system',
 -       text: t('common.modelProvider.quota'),
 -     },
 -   ]
 - 
 -   return (
 -     <Popover className='relative'>
 -       <Popover.Button>
 -         {
 -           ({ open }) => (
 -             <div className={`
 -               flex justify-center items-center w-6 h-6 rounded-md hover:bg-gray-50 cursor-pointer
 -               ${open && 'bg-gray-50'}
 -               ${className && className(open)}
 -             `}>
 -               <DotsHorizontal className='w-3 h-3 text-gray-700' />
 -             </div>
 -           )
 -         }
 -       </Popover.Button>
 -       <Transition
 -         as={Fragment}
 -         leave='transition ease-in duration-100'
 -         leaveFrom='opacity-100'
 -         leaveTo='opacity-0'
 -       >
 -         <Popover.Panel className='absolute top-7 right-0 w-[192px] bg-white border-[0.5px] border-gray-200 rounded-lg shadow-lg z-10'>
 -           {
 -             !hiddenOptions && (
 -               <>
 -                 <div className='p-1'>
 -                   <div className='px-3 pt-2 pb-1 text-sm font-medium text-gray-700'>{t('common.modelProvider.card.priorityUse')}</div>
 -                   {
 -                     options.map(option => (
 -                       <Popover.Button as={Fragment} key={option.key}>
 -                         <div
 -                           className={`${itemClassName} hover:bg-gray-50`}
 -                           onClick={() => onOperate({ type: 'priority', value: option.key })}>
 -                           <div className='grow'>{option.text}</div>
 -                           {value === option.key && <Check className='w-4 h-4 text-primary-600' />}
 -                         </div>
 -                       </Popover.Button>
 -                     ))
 -                   }
 -                 </div>
 -                 <div className='h-[1px] bg-gray-100' />
 -               </>
 -             )
 -           }
 -           <div className='p-1'>
 -             <Popover.Button as={Fragment}>
 -               <div
 -                 className={`group ${itemClassName} hover:bg-[#FEF3F2] hover:text-[#D92D20]`}
 -                 onClick={() => onOperate({ type: 'delete' })}>
 -                 <Trash03 className='mr-2 w-4 h-4 text-gray-500 group-hover:text-[#D92D20]' />
 -                 {deleteText || t('common.modelProvider.card.removeKey')}
 -               </div>
 -             </Popover.Button>
 -           </div>
 -         </Popover.Panel>
 -       </Transition>
 -     </Popover>
 -   )
 - }
 - 
 - export default Selector
 
 
  |