import ScrollToTopButton from '@/components/ScrollToTopButton' import { Titlebar } from '@/components/Titlebar' import { Button } from '@/components/ui/button' import { ScrollArea } from '@/components/ui/scroll-area' import { useSecondaryPage } from '@/PageManager' import { DeepBrowsingProvider } from '@/providers/DeepBrowsingProvider' import { useUserPreferences } from '@/providers/UserPreferencesProvider' import { ChevronLeft } from 'lucide-react' import { forwardRef, useEffect, useImperativeHandle, useRef } from 'react' import { useTranslation } from 'react-i18next' const SecondaryPageLayout = forwardRef( ( { children, index, title, controls, hideBackButton = false, hideTitlebarBottomBorder = false, displayScrollToTopButton = false, titlebar }: { children?: React.ReactNode index?: number title?: React.ReactNode controls?: React.ReactNode hideBackButton?: boolean hideTitlebarBottomBorder?: boolean displayScrollToTopButton?: boolean titlebar?: React.ReactNode }, ref ) => { const scrollAreaRef = useRef(null) const { enableSingleColumnLayout } = useUserPreferences() const { currentIndex } = useSecondaryPage() useImperativeHandle( ref, () => ({ scrollToTop: (behavior: ScrollBehavior = 'smooth') => { setTimeout(() => { if (scrollAreaRef.current) { return scrollAreaRef.current.scrollTo({ top: 0, behavior }) } window.scrollTo({ top: 0, behavior }) }, 10) } }), [] ) useEffect(() => { if (enableSingleColumnLayout) { setTimeout(() => window.scrollTo({ top: 0 }), 10) return } }, []) if (enableSingleColumnLayout) { return (
{children}
{displayScrollToTopButton && }
) } return ( {children}
{displayScrollToTopButton && } ) } ) SecondaryPageLayout.displayName = 'SecondaryPageLayout' export default SecondaryPageLayout export function SecondaryPageTitlebar({ title, controls, hideBackButton = false, hideBottomBorder = false, titlebar }: { title?: React.ReactNode controls?: React.ReactNode hideBackButton?: boolean hideBottomBorder?: boolean titlebar?: React.ReactNode }): JSX.Element { if (titlebar) { return ( {titlebar} ) } return ( {hideBackButton ? (
{title}
) : (
{title}
)}
{controls}
) } function BackButton({ children }: { children?: React.ReactNode }) { const { t } = useTranslation() const { pop } = useSecondaryPage() return ( ) }