mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-09-04 05:28:30 +00:00
* 🎨 feat: improve file display and overflow handling in SidePanel components * 🎨 feat: enhance bookmarks management UI and improve accessibility features * 🎨 feat: enhance BookmarkTable and BookmarkTableRow components for improved layout and performance * 🎨 feat: enhance file display and interaction in FilesView and ImagePreview components * 🎨 feat: adjust minimum width for filename filter input in DataTable component * 🎨 feat: enhance file upload UI with improved layout and styling adjustments * 🎨 feat: add surface-hover-alt color and update FileContainer styling for improved UI * 🎨 feat: update ImagePreview component styling for improved visual consistency * 🎨 feat: add MaximizeChatSpace component and integrate chat space maximization feature * 🎨 feat: enhance DataTable component with transition effects and update Checkbox styling for improved accessibility * fix: enhance a11y for Bookmark buttons by adding space key support, ARIA labels, and correct html role for key presses * fix: return focus back to trigger for BookmarkEditDialog (Edit and new bookmark buttons) * refactor: ShareButton and ExportModal components children prop support; refactor DropdownPopup item handling * refactor: enhance ExportAndShareMenu and ShareButton components with improved props handling and accessibility features * refactor: add ref prop support to MenuItemProps and update ExportAndShareMenu and DropdownPopup components so focus correctly returns to menu item * refactor: enhance ConvoOptions and DeleteButton components with improved props handling and accessibility features * refactor: add triggerRef support to DeleteButton and update ConvoOptions for improved dialog handling * refactor: accessible bookmarks menu * refactor: improve styling and accessibility for bookmarks components * refactor: add focusLoop support to DropdownPopup and update BookmarkMenu with Tooltip * refactor: integrate TooltipAnchor into ExportAndShareMenu for enhanced accessibility --------- Co-authored-by: Danny Avila <danny@librechat.ai>
50 lines
1.5 KiB
TypeScript
50 lines
1.5 KiB
TypeScript
import { useState } from 'react';
|
|
import type { FC } from 'react';
|
|
import type { TConversationTag } from 'librechat-data-provider';
|
|
import { TooltipAnchor, OGDialogTrigger } from '~/components/ui';
|
|
import BookmarkEditDialog from './BookmarkEditDialog';
|
|
import { EditIcon } from '~/components/svg';
|
|
import { useLocalize } from '~/hooks';
|
|
|
|
const EditBookmarkButton: FC<{
|
|
bookmark: TConversationTag;
|
|
tabIndex?: number;
|
|
onFocus?: () => void;
|
|
onBlur?: () => void;
|
|
}> = ({ bookmark, tabIndex = 0, onFocus, onBlur }) => {
|
|
const localize = useLocalize();
|
|
const [open, setOpen] = useState(false);
|
|
|
|
const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {
|
|
if (event.key === 'Enter' || event.key === ' ') {
|
|
setOpen(!open);
|
|
}
|
|
};
|
|
|
|
return (
|
|
<BookmarkEditDialog
|
|
context="EditBookmarkButton"
|
|
bookmark={bookmark}
|
|
open={open}
|
|
setOpen={setOpen}
|
|
>
|
|
<OGDialogTrigger asChild>
|
|
<TooltipAnchor
|
|
role="button"
|
|
aria-label={localize('com_ui_bookmarks_edit')}
|
|
description={localize('com_ui_edit')}
|
|
tabIndex={tabIndex}
|
|
onFocus={onFocus}
|
|
onBlur={onBlur}
|
|
onClick={() => setOpen(!open)}
|
|
className="flex size-7 items-center justify-center rounded-lg transition-colors duration-200 hover:bg-surface-hover"
|
|
onKeyDown={handleKeyDown}
|
|
>
|
|
<EditIcon />
|
|
</TooltipAnchor>
|
|
</OGDialogTrigger>
|
|
</BookmarkEditDialog>
|
|
);
|
|
};
|
|
|
|
export default EditBookmarkButton;
|