| import { type FC } from 'react'; |
| import { CrossCircledIcon } from '@radix-ui/react-icons'; |
| import { useBookmarkContext } from '~/Providers/BookmarkContext'; |
| import { BookmarkItems, BookmarkItem } from '~/components/Bookmarks'; |
| import { useLocalize } from '~/hooks'; |
|
|
| const BookmarkNavItems: FC<{ |
| tags: string[]; |
| setTags: (tags: string[]) => void; |
| }> = ({ tags = [], setTags }) => { |
| const { bookmarks } = useBookmarkContext(); |
| const localize = useLocalize(); |
|
|
| const getUpdatedSelected = (tag: string) => { |
| if (tags.some((selectedTag) => selectedTag === tag)) { |
| return tags.filter((selectedTag) => selectedTag !== tag); |
| } else { |
| return [...tags, tag]; |
| } |
| }; |
|
|
| const handleSubmit = (tag?: string) => { |
| if (tag === undefined) { |
| return; |
| } |
| const updatedSelected = getUpdatedSelected(tag); |
| setTags(updatedSelected); |
| return; |
| }; |
|
|
| const clear = () => { |
| setTags([]); |
| return; |
| }; |
|
|
| if (bookmarks.length === 0) { |
| return ( |
| <div className="flex flex-col"> |
| <BookmarkItem |
| tag={localize('com_ui_clear_all')} |
| data-testid="bookmark-item-clear" |
| handleSubmit={clear} |
| selected={false} |
| icon={<CrossCircledIcon className="size-4" />} |
| /> |
| <BookmarkItem |
| tag={localize('com_ui_no_bookmarks')} |
| data-testid="bookmark-item-no-bookmarks" |
| handleSubmit={() => Promise.resolve()} |
| selected={false} |
| icon={'🤔'} |
| /> |
| </div> |
| ); |
| } |
|
|
| return ( |
| <div className="flex flex-col"> |
| <BookmarkItems |
| tags={tags} |
| handleSubmit={handleSubmit} |
| header={ |
| <BookmarkItem |
| tag={localize('com_ui_clear_all')} |
| data-testid="bookmark-item-clear" |
| handleSubmit={clear} |
| selected={false} |
| icon={<CrossCircledIcon className="size-4" />} |
| /> |
| } |
| /> |
| </div> |
| ); |
| }; |
|
|
| export default BookmarkNavItems; |
|
|