import { FC, useEffect, useState } from 'react'; import { Accordion, AccordionButton, AccordionItem, AccordionPanel, Center, Link, Stack, Text } from '@chakra-ui/react'; import { AddIcon, MinusIcon } from '../svgs/'; import NextLink from 'next/link'; import { useRouter } from 'next/router'; import { LinksList } from './'; import { NavLink } from '../../../types'; import { checkNavLinks } from '../../../utils'; interface Props { navLinks: NavLink[]; toggleMobileAccordion: () => void; } export const DocsLinks: FC = ({ navLinks, toggleMobileAccordion }) => { const [openSections, setOpenSections] = useState<{ [key: string]: boolean }>({}); const { asPath, query: { slug } } = useRouter(); useEffect(() => { setOpenSections( navLinks.reduce( (acc, navLink) => ({ ...acc, [navLink.id]: checkNavLinks({ items: navLink.items, pathCheck: asPath }) }), {} ) ); }, [asPath, navLinks]); const handleSectionToggle = (id: string): void => { setOpenSections(prev => ({ ...prev, [id]: !prev[id] })); }; return ( {navLinks.map(({ id, to, items }, idx) => { const split = to?.split('/'); const isActive = slug && split && split[split.length - 1] === slug[slug.length - 1]; const index = openSections[id] ? 0 : -1; return ( {({ isExpanded }) => ( <> handleSectionToggle(id)} > {to ? ( {id} ) : ( {id} )} {items && (
{isExpanded ? ( ) : ( )}
)}
{items && ( )} )}
); })}
); };