import {
Box,
BoxProps,
Center,
CloseButton,
Flex,
HStack,
IconButton,
IconButtonProps,
useBreakpointValue,
useColorModeValue,
useUpdateEffect,
} from "@chakra-ui/react"
import { AnimatePresence, motion, useElementScroll } from "framer-motion"
import useRouteChanged from "src/hooks/use-route-changed"
import NextLink from "next/link"
import { useRouter } from "next/router"
import * as React from "react"
import { AiOutlineMenu } from "react-icons/ai"
import { RemoveScroll } from "react-remove-scroll"
import Logo from "src/components/logo"
function NavLink({ href, children }) {
const { pathname } = useRouter()
const [, group] = href.split("/")
const isActive = pathname.includes(group)
return (
{children}
)
}
interface MobileNavContentProps {
isOpen?: boolean
onClose?: () => void
}
export function MobileNavContent(props: MobileNavContentProps) {
const { isOpen, onClose } = props
const closeBtnRef = React.useRef()
const { pathname } = useRouter()
useRouteChanged(onClose)
/**
* Scenario: Menu is open on mobile, and user resizes to desktop/tablet viewport.
* Result: We'll close the menu
*/
const showOnBreakpoint = useBreakpointValue({ base: true, lg: false })
React.useEffect(() => {
if (showOnBreakpoint == false) {
onClose()
}
}, [showOnBreakpoint])
useUpdateEffect(() => {
if (isOpen) {
requestAnimationFrame(() => {
closeBtnRef.current?.focus()
})
}
}, [isOpen])
const [shadow, setShadow] = React.useState()
return (
{isOpen && (
Docs
Guides
Team
{
setShadow(scrolled ? "md" : undefined)
}}
>
)}
)
}
const ScrollView = (props: BoxProps & { onScroll?: any }) => {
const { onScroll, ...rest } = props
const [y, setY] = React.useState(0)
const elRef = React.useRef()
const { scrollY } = useElementScroll(elRef)
React.useEffect(() => {
return scrollY.onChange(() => setY(scrollY.get()))
}, [scrollY])
useUpdateEffect(() => {
onScroll?.(y > 5 ? true : false)
}, [y])
return (
)
}
export const MobileNavButton = React.forwardRef(
(props: IconButtonProps, ref: React.Ref) => {
return (
}
{...props}
/>
)
},
)