import BackButton from '@/components/BackButton' import ScrollToTopButton from '@/components/ScrollToTopButton' import ThemeToggle from '@/components/ThemeToggle' import { Titlebar } from '@/components/Titlebar' import { ScrollArea } from '@/components/ui/scroll-area' import { useScreenSize } from '@/providers/ScreenSizeProvider' import { useEffect, useRef, useState } from 'react' export default function SecondaryPageLayout({ children, titlebarContent, hideBackButton = false, hideScrollToTopButton = false }: { children?: React.ReactNode titlebarContent?: React.ReactNode hideBackButton?: boolean hideScrollToTopButton?: boolean }): JSX.Element { const scrollAreaRef = useRef(null) const [visible, setVisible] = useState(true) const [lastScrollTop, setLastScrollTop] = useState(0) useEffect(() => { const handleScroll = () => { const scrollTop = scrollAreaRef.current?.scrollTop || 0 const diff = scrollTop - lastScrollTop if (scrollTop <= 100) { setVisible(true) setLastScrollTop(scrollTop) return } if (diff > 20) { setVisible(false) setLastScrollTop(scrollTop) } else if (diff < -20) { setVisible(true) setLastScrollTop(scrollTop) } } const scrollArea = scrollAreaRef.current scrollArea?.addEventListener('scroll', handleScroll) return () => { scrollArea?.removeEventListener('scroll', handleScroll) } }, [lastScrollTop]) return (
{children}
500} />
) } export function SecondaryPageTitlebar({ content, hideBackButton = false, visible = true }: { content?: React.ReactNode hideBackButton?: boolean visible?: boolean }): JSX.Element { const { isSmallScreen } = useScreenSize() if (isSmallScreen) { return (
{content}
) } return (
{content}
) }