import { useState, useId } from 'react'; import * as Ariakit from '@ariakit/react'; import { Ellipsis, Share2, Archive, Pen, Trash } from 'lucide-react'; import { useGetStartupConfig } from 'librechat-data-provider/react-query'; import type { MouseEvent } from 'react'; import { useLocalize, useArchiveHandler } from '~/hooks'; import { DropdownPopup } from '~/components/ui'; import DeleteButton from './DeleteButton'; import ShareButton from './ShareButton'; import { cn } from '~/utils'; export default function ConvoOptions({ conversationId, title, renaming, retainView, renameHandler, isPopoverActive, setIsPopoverActive, isActiveConvo, }: { conversationId: string | null; title: string | null; renaming: boolean; retainView: () => void; renameHandler: (e: MouseEvent) => void; isPopoverActive: boolean; setIsPopoverActive: React.Dispatch>; isActiveConvo: boolean; }) { const localize = useLocalize(); const { data: startupConfig } = useGetStartupConfig(); const [showShareDialog, setShowShareDialog] = useState(false); const [showDeleteDialog, setShowDeleteDialog] = useState(false); const archiveHandler = useArchiveHandler(conversationId, true, retainView); const shareHandler = () => { setIsPopoverActive(false); setShowShareDialog(true); }; const deleteHandler = () => { setIsPopoverActive(false); setShowDeleteDialog(true); }; const dropdownItems = [ { label: localize('com_ui_rename'), onClick: renameHandler, icon: , }, { label: localize('com_ui_share'), onClick: shareHandler, icon: , show: startupConfig && startupConfig.sharedLinksEnabled, }, { label: localize('com_ui_archive'), onClick: archiveHandler, icon: , }, { label: localize('com_ui_delete'), onClick: deleteHandler, icon: , }, ]; const menuId = useId(); return ( <> } items={dropdownItems} menuId={menuId} /> {showShareDialog && ( )} {showDeleteDialog && ( )} ); }