import { graphql, Link, useStaticQuery } from "gatsby" import React, { FC, HTMLAttributes, memo, useState } from "react" import Scrollbar from "react-perfect-scrollbar" import "react-perfect-scrollbar/dist/css/styles.css" import TriangleDown from "../../icons/triangle-down.svg" import Banner from "../../images/tph-banner.svg" import { IAllResourcesQuery, IFileOrFolder, IFolder } from "../../types" import { humanize } from "../../utils" import { ThemeToggler } from "../ThemeToggler" import useSidebar from "./../../hooks/useSidebar" import * as SC from "./styles" import useBuildTree from "./useBuildTree" const ALL_RESOURCES = graphql` query { allFile(filter: { sourceInstanceName: { eq: "resources" } }) { edges { node { relativePath childMarkdownRemark { frontmatter { authors title date } } } } } } ` function plantTree(item: IFileOrFolder, index?: number, firstLevel?: boolean) { if (item.type === "file") { return ( {humanize(item.title)} ) } if (firstLevel && index !== undefined) { return } return } function Folder({ item }: { item: IFolder }) { const [collapsed, setCollapse] = useState(true) function toggleCollapse() { setCollapse(prevState => !prevState) } return ( {humanize(item.title)} {item.children.map(node => plantTree(node))} ) } const FirstLevelFolder = memo( ({ item, index }: { item: IFolder; index: number }) => { const { current, setCurrent } = useSidebar() const collapsed = current !== index return ( setCurrent(index)} > {humanize(item.title)} {item.children.map(node => plantTree(node))} ) } ) interface IMenuItemProps { to: string } const MenuItem: FC = ({ children, to }) => { return ( {children} ) } export const ResourcesSidebar: FC> = (props) => { const resources = useStaticQuery(ALL_RESOURCES) const tree = useBuildTree(resources) return ( {tree.map((node, index) => plantTree(node, index, true))} about rules faq hotbot resources tech ) }