* feat: Minor design changes to mimic OpenAI's latest login page * fix: Optimize ThemeSelector for mobile * fix: Use a svg for the logo for transperency in dark mode * feat: Update styles for Registration * feat: Update error colors for login & registration * fix: remove medium font * wip: Dropdown menu * feat: Update dropdown to match ChatGPT * feat: Improve rounding and padding * feat: Add UI Updates to RequestPasswordReset, PasswordRest and increase width for theme dropdown * fix: Modify the My Files modal's width to not touch the screen * feat: fix scrolling for dropdown, and make border width lighter * feat: Match popup menu design to OpenAI (p1/2) * fix+feat: fix dark mode, add user email, add lighter borders * fix: Add border color on focus of chat input. * feat: Move Export Conversation to a seperate button (testing) * fix: Properly center Login, Registration, Reset Password Flow * fix: Border colors on dark mode for settings modal * feat: Improve wording for settings menu * fix: Optimize settings modal for mobile and fix height for modal * feat: Optimize for desktop * fix: make TooltipTrigger asChild of button, improve settings mobile responsiveness * feat: Handle dropdowns properly TODO: Make height dynamic, fix dark mode colors * fix: input styles fix: make endpoint icon smaller * feat: Update UI to Match ChatGPT Style - Updated the dropdown styles to match the aesthetic of ChatGPT. - Decreased spacing within the conversation area for cleanliness. - Replaced the current archive icon with the ChatGPT's icon. * fix: fix colors for EditMenuButton & ArchiveButton for dark mode and light mode * fix: ui fixes * fix: Fix Conversation UI Bugs * fix: transparency of HoverToggle to make buttons not visible * fix: dark mode HoverToggle & compress menu item spacing * fix: responsiveness of export icon * fix: first mentionitem is set to always be highlighted * fix: improve hover state to text instead of bg * feat: Update icons to ChatGPT Style * fix: dark mode hover for PanelFileCell * fix: change navlinks z-index to 100 * fix: hover states for DataTable * feat: Move ExportButton to seperate component * chore: remove unused imports
72 lines
2.2 KiB
TypeScript
72 lines
2.2 KiB
TypeScript
import React from 'react';
|
|
|
|
import { useState } from 'react';
|
|
import { useLocation } from 'react-router-dom';
|
|
import type { TConversation } from 'librechat-data-provider';
|
|
import { Download } from 'lucide-react';
|
|
import { TooltipProvider, Tooltip, TooltipTrigger, TooltipContent } from '~/components/ui';
|
|
import { useLocalize } from '~/hooks';
|
|
import { ExportModal } from '../Nav';
|
|
import { useRecoilValue } from 'recoil';
|
|
import store from '~/store';
|
|
|
|
function ExportButton() {
|
|
const localize = useLocalize();
|
|
const location = useLocation();
|
|
|
|
const [showExports, setShowExports] = useState(false);
|
|
|
|
const activeConvo = useRecoilValue(store.conversationByIndex(0));
|
|
const globalConvo = useRecoilValue(store.conversation) ?? ({} as TConversation);
|
|
|
|
let conversation: TConversation | null | undefined;
|
|
if (location.state?.from?.pathname.includes('/chat')) {
|
|
conversation = globalConvo;
|
|
} else {
|
|
conversation = activeConvo;
|
|
}
|
|
|
|
const clickHandler = () => {
|
|
if (exportable) {
|
|
setShowExports(true);
|
|
}
|
|
};
|
|
|
|
const exportable =
|
|
conversation &&
|
|
conversation.conversationId &&
|
|
conversation.conversationId !== 'new' &&
|
|
conversation.conversationId !== 'search';
|
|
|
|
return (
|
|
<>
|
|
{exportable && (
|
|
<div className="flex gap-1 gap-2 pr-1">
|
|
<TooltipProvider delayDuration={50}>
|
|
<Tooltip>
|
|
<TooltipTrigger asChild>
|
|
<button
|
|
className="btn btn-neutral btn-small relative flex h-9 w-9 items-center justify-center whitespace-nowrap rounded-lg"
|
|
onClick={clickHandler}
|
|
>
|
|
<div className="flex w-full items-center justify-center gap-2">
|
|
<Download size={16} />
|
|
</div>
|
|
</button>
|
|
</TooltipTrigger>
|
|
<TooltipContent side="right" sideOffset={5}>
|
|
{localize('com_nav_export_conversation')}
|
|
</TooltipContent>
|
|
</Tooltip>
|
|
</TooltipProvider>
|
|
</div>
|
|
)}
|
|
{showExports && (
|
|
<ExportModal open={showExports} onOpenChange={setShowExports} conversation={conversation} />
|
|
)}
|
|
</>
|
|
);
|
|
}
|
|
|
|
export default ExportButton;
|