import { useState, useId, useRef } from 'react'; import { useRecoilValue } from 'recoil'; import * as Ariakit from '@ariakit/react'; import { Upload, Share2 } from 'lucide-react'; import type * as t from '~/common'; import ExportModal from '~/components/Nav/ExportConversation/ExportModal'; import { ShareButton } from '~/components/Conversations/ConvoOptions'; import { DropdownPopup, TooltipAnchor } from '~/components/ui'; import { useMediaQuery, useLocalize } from '~/hooks'; import store from '~/store'; export default function ExportAndShareMenu({ isSharedButtonEnabled, }: { isSharedButtonEnabled: boolean; }) { const localize = useLocalize(); const [showExports, setShowExports] = useState(false); const [isPopoverActive, setIsPopoverActive] = useState(false); const [showShareDialog, setShowShareDialog] = useState(false); const menuId = useId(); const shareButtonRef = useRef(null); const exportButtonRef = useRef(null); const isSmallScreen = useMediaQuery('(max-width: 768px)'); const conversation = useRecoilValue(store.conversationByIndex(0)); const exportable = conversation && conversation.conversationId != null && conversation.conversationId !== 'new' && conversation.conversationId !== 'search'; if (exportable === false) { return null; } const shareHandler = () => { setShowShareDialog(true); }; const exportHandler = () => { setShowExports(true); }; const dropdownItems: t.MenuItemProps[] = [ { label: localize('com_endpoint_export'), onClick: exportHandler, icon: , /** NOTE: THE FOLLOWING PROPS ARE REQUIRED FOR MENU ITEMS THAT OPEN DIALOGS */ hideOnClick: false, ref: exportButtonRef, render: (props) =>