diff --git a/src/components/layouts/Honkai3rdLayout.tsx b/src/components/layouts/Honkai3rdLayout.tsx index 07e0f974..80a40b86 100644 --- a/src/components/layouts/Honkai3rdLayout.tsx +++ b/src/components/layouts/Honkai3rdLayout.tsx @@ -1,18 +1,42 @@ /** @jsxImportSource theme-ui */ -import { mdiMenu } from '@mdi/js' +import { mdiArrowUp, mdiMenu } from '@mdi/js' import Icon from '@mdi/react' -import React, { useCallback, useState } from 'react' +import React, { useCallback, useRef, useState } from 'react' import { Box, Flex, IconButton } from 'theme-ui' import Honkai3rdNavigator from '../organisms/Honkai3rdNavigator' const Honkai3rdLayout: React.FC = ({ children }) => { const [hiddenMobileNav, setHiddenMobileNav] = useState(true) + const contentBoxRef = useRef(null) + const [scrolled, setScrolled] = useState(false) const close = useCallback(() => { setHiddenMobileNav(true) }, []) + const handleScroll = useCallback(() => { + if (contentBoxRef.current == null) { + return + } + + if (contentBoxRef.current.scrollTop === 0) { + return setScrolled(false) + } + if (scrolled) { + return + } + setScrolled(true) + }, [scrolled]) + + const scrollToTop = useCallback(() => { + if (contentBoxRef.current == null) { + return + } + + contentBoxRef.current.scrollTop = 0 + }, []) + return ( { > - + + + +