import { ActionIcon, Button, Divider, Group, Highlight, Modal, Popover, Stack, Text, TextInput, } from '@mantine/core'; import { useDebouncedValue, useDisclosure } from '@mantine/hooks'; import { useCommonHooks, useMutationAPI, useQueryAPI } from 'hooks'; import { useEffect, useState } from 'react'; import { FiHelpCircle, FiPlus } from 'react-icons/fi'; import { actionIconClasses, buttonClasses, modalClasses, textClasses, textInputClasses, } from 'styles'; import DebouncedGroupSettingsItem from './DebouncedGroupSettingsItem'; const BookmarkSettings = () => { const { data: linkData, isFetched: linksIsFetched } = useQueryAPI({ endpoint: 'api/links', }); const [bookmarks, setBookmarks] = useState([]); const { data: groupData, isFetched: groupsIsFetched } = useQueryAPI({ endpoint: 'api/categories', }); const [groups, setGroups] = useState([]); const [newGroup, setNewGroup] = useState({}); const { theme, isMobile } = useCommonHooks(); const { mutateAsync } = useMutationAPI(); const [searchValue, setSearchValue] = useState(''); const [debouncedGroupSearch] = useDebouncedValue(searchValue, 500); const [modalOpened, { open: openModal, close: closeModal }] = useDisclosure(false); useEffect(() => { if (linkData && linksIsFetched) { setBookmarks(linkData); } }, [linksIsFetched, linkData]); useEffect(() => { if (groupData && groupsIsFetched) { setGroups( groupData.filter((a: any) => a.categoryName.toLowerCase().includes(debouncedGroupSearch.toLowerCase()), ), ); } }, [groupData, groupsIsFetched, debouncedGroupSearch]); return ( { closeModal(); }} style={{ '--color-text-pri': theme.primaryColor, '--color-text-acc': theme.accentColor, '--color-background': theme.backgroundColor, '--color-border': theme.borderColor, '--color-search-background': theme.searchColor, '--image-background': `url(${theme.backgroundImage})`, }} closeOnEscape closeOnClickOutside > Add a new Bookmark Group { setNewGroup({ ...newGroup, categoryName: event.target.value, }); }} /> { setNewGroup({ ...newGroup, filterName: event.target.value, }); }} /> Bookmarks {'Bookmarks are the links that will be displayed on the homepage.'} {''} { setSearchValue(event.target.value); }} /> {groups?.map((group: any) => ( a.category === group.categoryName)} /> ))} ); }; export default BookmarkSettings;