/** @jsx jsx */ import { useCallback, useMemo, useState } from "react"; import { useStaticQuery, graphql, withPrefix } from "gatsby"; import { jsx } from "theme-ui"; import SidebarContent from "../../sidebar.mdx"; import Branding from "./Branding"; import Link from "../Link"; import Item, { isItemActive } from "./Item"; import { getActiveItem, getActiveItemParentLinks, getItems } from "./utils"; const setOpenItems = (state, items) => { for (const item of items) { if (item.items) { state.openItems[item.link] = isItemActive(state.activeItemParentLinks, item) || withPrefix(state.activeItem.link) === item.link; setOpenItems(state, item.items); } } }; function Sidebar({ children, sidebar, open = true, location }) { const { site } = useStaticQuery(graphql` query { site { pathPrefix } } `); const items = useMemo(() => getItems(children, site.pathPrefix), [ children, site.pathPrefix ]); const [{ openItems, activeItem, activeItemParentLinks }, setState] = useState( () => { const activeItem = getActiveItem(items, location); const state = { openItems: {}, activeItem, activeItemParentLinks: getActiveItemParentLinks(items, activeItem, []) }; setOpenItems(state, items); return state; } ); const toggleItem = useCallback(item => { setState(state => ({ ...state, openItems: { ...state.openItems, [item.link]: !state.openItems[item.link] } })); }, []); return (
Search
); } export default props => ( );