| import { useCallback, useState } from 'react'; |
| import { |
| Button, |
| TrashIcon, |
| Label, |
| OGDialog, |
| OGDialogTrigger, |
| TooltipAnchor, |
| OGDialogTemplate, |
| useToastContext, |
| } from '@librechat/client'; |
| import type { FC } from 'react'; |
| import { useDeleteConversationTagMutation } from '~/data-provider'; |
| import { NotificationSeverity } from '~/common'; |
| import { useLocalize } from '~/hooks'; |
|
|
| const DeleteBookmarkButton: FC<{ |
| bookmark: string; |
| tabIndex?: number; |
| onFocus?: () => void; |
| onBlur?: () => void; |
| }> = ({ bookmark, tabIndex = 0, onFocus, onBlur }) => { |
| const localize = useLocalize(); |
| const { showToast } = useToastContext(); |
| const [open, setOpen] = useState(false); |
|
|
| const deleteBookmarkMutation = useDeleteConversationTagMutation({ |
| onSuccess: () => { |
| showToast({ |
| message: localize('com_ui_bookmarks_delete_success'), |
| }); |
| }, |
| onError: () => { |
| showToast({ |
| message: localize('com_ui_bookmarks_delete_error'), |
| severity: NotificationSeverity.ERROR, |
| }); |
| }, |
| }); |
|
|
| const confirmDelete = useCallback(async () => { |
| await deleteBookmarkMutation.mutateAsync(bookmark); |
| }, [bookmark, deleteBookmarkMutation]); |
|
|
| return ( |
| <> |
| <OGDialog open={open} onOpenChange={setOpen}> |
| <OGDialogTrigger asChild> |
| <TooltipAnchor |
| description={localize('com_ui_delete')} |
| render={ |
| <Button |
| variant="ghost" |
| aria-label={localize('com_ui_bookmarks_delete')} |
| tabIndex={tabIndex} |
| onFocus={onFocus} |
| onBlur={onBlur} |
| onClick={() => setOpen(!open)} |
| className="h-8 w-8 p-0" |
| > |
| <TrashIcon /> |
| </Button> |
| } |
| /> |
| </OGDialogTrigger> |
| <OGDialogTemplate |
| showCloseButton={false} |
| title={localize('com_ui_bookmarks_delete')} |
| className="w-11/12 max-w-lg" |
| main={ |
| <Label className="text-left text-sm font-medium"> |
| {localize('com_ui_bookmark_delete_confirm')} {bookmark} |
| </Label> |
| } |
| selection={{ |
| selectHandler: confirmDelete, |
| selectClasses: |
| 'bg-red-700 dark:bg-red-600 hover:bg-red-800 dark:hover:bg-red-800 text-white', |
| selectText: localize('com_ui_delete'), |
| }} |
| /> |
| </OGDialog> |
| </> |
| ); |
| }; |
|
|
| export default DeleteBookmarkButton; |
|
|