diff --git a/src/components/Markdown/styles.tsx b/src/components/Markdown/styles.tsx index caef2c2..9c6b4ad 100644 --- a/src/components/Markdown/styles.tsx +++ b/src/components/Markdown/styles.tsx @@ -66,4 +66,8 @@ export const MarkdownWrapper = styled.div` h6 { ${modularScaleCSS(1)}; } + + pre[class*="language-"] { + overflow-x: scroll; + } ` diff --git a/src/components/ResourcesLayout/index.tsx b/src/components/ResourcesLayout/index.tsx index 46b302f..a7b9520 100644 --- a/src/components/ResourcesLayout/index.tsx +++ b/src/components/ResourcesLayout/index.tsx @@ -5,7 +5,7 @@ * See: https://www.gatsbyjs.org/docs/use-static-query/ */ -import React, { PropsWithChildren } from "react" +import React, { PropsWithChildren, useState } from "react" import { GlobalStyles } from "../../globalStyles" import { SidebarProvider } from "../../SidebarProvider" @@ -13,15 +13,33 @@ import { ResourcesSidebar } from "../ResourcesSidebar" import * as SC from "./styles" export function ResourcesLayout({ children }: PropsWithChildren<{}>) { + const [activeMobileMenu, setActiveMobileMenu] = useState(false) + + function openMenu() { + setActiveMobileMenu(true) + } + + function closeMenu() { + setActiveMobileMenu(false) + } + return ( - + + TPH Resources + + + {children} + ) } diff --git a/src/components/ResourcesLayout/styles.tsx b/src/components/ResourcesLayout/styles.tsx index 2dd138e..f186d4f 100644 --- a/src/components/ResourcesLayout/styles.tsx +++ b/src/components/ResourcesLayout/styles.tsx @@ -6,11 +6,79 @@ export const Main = styled.div` min-height: 100vh; ` +export const MobileHeader = styled.div` + display: none; + z-index: 50; + background: rgba(255, 255, 255, 0.8); + position: fixed; + top: 0; + left: 0; + right: 0; + padding: 16px 32px; + align-items: center; + + @media screen and (max-width: 767px) { + display: flex; + } +` + +export const Overlay = styled.div` + z-index: 99; + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + transition: background-color 0.3s; + background-color: rgba(0, 0, 0, 0); + pointer-events: none; + + @media screen and (min-width: 768px) { + display: none; + } + + &.is-open { + pointer-events: auto; + background-color: rgba(0, 0, 0, 0.2); + } +` + +export const Burger = styled.div` + margin-left: auto; + width: 16px; + height: 9px; + padding: 8px; + position: relative; + cursor: pointer; + + &::before, + &::after { + position: absolute; + content: ""; + height: 2px; + width: 16px; + background: #222; + margin: 0 auto; + } + + &::before { + top: 8px; + } + + &::after { + bottom: 8px; + } +` + export const MainContent = styled.main` flex: 1 1 auto; margin-top: 128px; width: calc(100% - 320px); + @media screen and (max-width: 767px) { + width: 100%; + } + & > :first-child { margin-top: 0; } @@ -22,5 +90,7 @@ export const MainContent = styled.main` export const Container = styled.div` width: 650px; + max-width: calc(100% - 64px); + padding: 0 32px; margin: 0 auto; ` diff --git a/src/components/ResourcesSidebar/index.tsx b/src/components/ResourcesSidebar/index.tsx index a905160..f9d33d6 100644 --- a/src/components/ResourcesSidebar/index.tsx +++ b/src/components/ResourcesSidebar/index.tsx @@ -117,12 +117,12 @@ function MenuItem({ children, to }: PropsWithChildren<{ to: string }>) { ) } -export function ResourcesSidebar() { +export function ResourcesSidebar(props: React.HTMLAttributes) { const resources = useStaticQuery(ALL_RESOURCES) const tree = useBuildTree(resources) return ( - + diff --git a/src/components/ResourcesSidebar/styles.tsx b/src/components/ResourcesSidebar/styles.tsx index 834d481..964d002 100644 --- a/src/components/ResourcesSidebar/styles.tsx +++ b/src/components/ResourcesSidebar/styles.tsx @@ -6,6 +6,23 @@ export const ResourcesSidebarWrapper = styled.div` box-sizing: border-box; flex: 0 0 320px; background: #f9f9f9; + + @media screen and (max-width: 767px) { + z-index: 100; + position: fixed; + top: 0; + bottom: 0; + /* TODO: maybe find a less "awkward" way to animate this */ + left: calc(-100% - 100px); + right: calc(100% - 0px); + transition: left 0.3s, right 0.3s; + } + + &.is-open { + left: 0; + right: 100px; + box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2); + } ` export const Children = styled.div`