diff --git a/src/components/nav-item.js b/src/components/nav-item.js index 660a0cf..2ccb4a4 100644 --- a/src/components/nav-item.js +++ b/src/components/nav-item.js @@ -1,6 +1,5 @@ import React from "react"; import styled from "@emotion/styled"; -import { css } from "@emotion/react"; import NavLink from "./nav-link"; const SubList = styled.ul` @@ -36,16 +35,28 @@ const ListItem = styled.li` } `; -export default function NavItem({ children, subNav, index, open, ...other }) { +export default function NavItem({ + children, + subNav, + index, + open, + location, + to, + ...other +}) { const hasChildren = subNav && subNav.length > 0; return ( - {children} + + {children} + {hasChildren && ( {subNav.map((link, i) => ( - {link.title} + + {link.title} + ))} diff --git a/src/components/nav-link.js b/src/components/nav-link.js index 3a89865..16915d7 100644 --- a/src/components/nav-link.js +++ b/src/components/nav-link.js @@ -20,10 +20,13 @@ const Link = styled(GatsbyLink)` margin: 0 var(--spacing-x-xs); padding: 9px 0; border-bottom: 2px solid - ${props => (props.active ? `var(--color-white)` : `transparent`)}; + ${props => + props.active || props.partiallyActive + ? `var(--color-white)` + : `transparent`}; } `; -export default function NavLink({ children, to }) { - return {children}; +export default function NavLink({ children, ...other }) { + return {children}; } diff --git a/src/components/nav.js b/src/components/nav.js index 4e0e829..62b5a23 100644 --- a/src/components/nav.js +++ b/src/components/nav.js @@ -104,7 +104,7 @@ const List = styled.ul` } `; -export default function Nav({ data, open, setOpen }) { +export default function Nav({ location, data, open, setOpen }) { const handleButtonClick = () => setOpen(!open); return ( @@ -124,6 +124,11 @@ export default function Nav({ data, open, setOpen }) { index={i} subNav={link.subNav} to={link.to} + location={location} + active={location === link.to} + partiallyActive={ + link.subNav && location && location.indexOf(link.to) === 0 + } open={open} > {link.title} diff --git a/src/layout.js b/src/layout.js index 12def51..a8a1559 100644 --- a/src/layout.js +++ b/src/layout.js @@ -83,7 +83,7 @@ const GlobalStyles = css` } `; -export default function Layout({ children }) { +export default function Layout({ location, children }) { const data = useStaticQuery(graphql` query HeaderQuery { site { @@ -131,7 +131,12 @@ export default function Layout({ children }) { {children}