| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 | import { Fragment } from 'react'import type { FC } from 'react'import { Popover, Transition } from '@headlessui/react'import { useTranslation } from 'react-i18next'import {  RiCheckLine,  RiMoreFill,} from '@remixicon/react'import { PreferredProviderTypeEnum } from '../declarations'import Button from '@/app/components/base/button'type SelectorProps = {  value?: string  onSelect: (key: PreferredProviderTypeEnum) => void}const Selector: FC<SelectorProps> = ({  value,  onSelect,}) => {  const { t } = useTranslation()  const options = [    {      key: PreferredProviderTypeEnum.custom,      text: t('common.modelProvider.apiKey'),    },    {      key: PreferredProviderTypeEnum.system,      text: t('common.modelProvider.quota'),    },  ]  return (    <Popover className='relative'>      <Popover.Button>        {          ({ open }) => (            <Button className={`              px-0 w-6 h-6 bg-white rounded-md              ${open && '!bg-gray-100'}            `}>              <RiMoreFill className='w-3 h-3 text-gray-700' />            </Button>          )        }      </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-[144px] bg-white border-[0.5px] border-gray-200 rounded-lg shadow-lg z-10'>          <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='flex items-center justify-between px-3 h-9 text-sm text-gray-700 rounded-lg cursor-pointer hover:bg-gray-50'                    onClick={() => onSelect(option.key)}                  >                    <div className='grow'>{option.text}</div>                    {value === option.key && <RiCheckLine className='w-4 h-4 text-primary-600' />}                  </div>                </Popover.Button>              ))            }          </div>        </Popover.Panel>      </Transition>    </Popover>  )}export default Selector
 |