2023-03-06 21:43:49 -05:00
|
|
|
import React, { useState } from 'react';
|
|
|
|
|
import { useSelector } from 'react-redux';
|
2023-03-03 21:33:09 -05:00
|
|
|
import { DropdownMenuRadioItem } from '../ui/DropdownMenu.tsx';
|
|
|
|
|
import { DialogTrigger } from '../ui/Dialog.tsx';
|
2023-03-06 21:43:49 -05:00
|
|
|
import RenameButton from '../Conversations/RenameButton';
|
|
|
|
|
import TrashIcon from '../svg/TrashIcon';
|
2023-03-03 21:33:09 -05:00
|
|
|
|
|
|
|
|
export default function ModelItem({ modelName, value }) {
|
2023-03-06 21:43:49 -05:00
|
|
|
const { initial } = useSelector((state) => state.models);
|
|
|
|
|
const [isHovering, setIsHovering] = useState(false);
|
|
|
|
|
|
2023-03-03 21:33:09 -05:00
|
|
|
if (value === 'chatgptCustom') {
|
|
|
|
|
return (
|
|
|
|
|
<DialogTrigger className="w-full">
|
|
|
|
|
<DropdownMenuRadioItem
|
|
|
|
|
value={value}
|
2023-03-06 21:43:49 -05:00
|
|
|
className="dark:font-semibold dark:text-gray-100 dark:hover:bg-gray-800"
|
2023-03-03 21:33:09 -05:00
|
|
|
>
|
|
|
|
|
{modelName}
|
|
|
|
|
<sup>$</sup>
|
|
|
|
|
</DropdownMenuRadioItem>
|
|
|
|
|
</DialogTrigger>
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
2023-03-06 21:43:49 -05:00
|
|
|
const handleMouseOver = () => {
|
|
|
|
|
setIsHovering(true);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const handleMouseOut = () => {
|
|
|
|
|
setIsHovering(false);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const buttonClass = {
|
|
|
|
|
className:
|
|
|
|
|
'rounded-md m-0 text-gray-400 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200'
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const showButtons = isHovering && !initial[value];
|
|
|
|
|
|
2023-03-03 21:33:09 -05:00
|
|
|
return (
|
|
|
|
|
<DropdownMenuRadioItem
|
|
|
|
|
value={value}
|
2023-03-06 21:43:49 -05:00
|
|
|
className="dark:font-semibold dark:text-gray-100 dark:hover:bg-gray-800"
|
|
|
|
|
onMouseOver={handleMouseOver}
|
|
|
|
|
onMouseOut={handleMouseOut}
|
2023-03-03 21:33:09 -05:00
|
|
|
>
|
|
|
|
|
{modelName}
|
|
|
|
|
{value === 'chatgpt' && <sup>$</sup>}
|
2023-03-06 21:43:49 -05:00
|
|
|
|
|
|
|
|
{showButtons && (
|
|
|
|
|
<>
|
|
|
|
|
<RenameButton twcss={`ml-auto mr-2 ${buttonClass.className}`} />
|
|
|
|
|
<button {...buttonClass}>
|
|
|
|
|
<TrashIcon />
|
|
|
|
|
</button>
|
|
|
|
|
</>
|
|
|
|
|
)}
|
2023-03-03 21:33:09 -05:00
|
|
|
</DropdownMenuRadioItem>
|
|
|
|
|
);
|
|
|
|
|
}
|