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))}
)
}