import { Box, HStack, SpanBox, VStack } from '../elements/LayoutPrimitives' import { useRouter } from 'next/router' import { applyStoredTheme } from '../../lib/themeUpdater' import { useCallback, useEffect, useState } from 'react' import { ConfirmationModal } from '../patterns/ConfirmationModal' import { KeyboardShortcutListModal } from './KeyboardShortcutListModal' import { PageMetaData } from '../patterns/PageMetaData' import { DEFAULT_HEADER_HEIGHT } from './homeFeed/HeaderSpacer' import { useLogout } from '../../lib/logout' import { SettingsMenu } from './navMenu/SettingsMenu' import { SettingsDropdown } from './navMenu/SettingsDropdown' import { useVerifyAuth } from '../../lib/hooks/useVerifyAuth' import Link from 'next/link' import { CaretLeft } from '@phosphor-icons/react' import { DEFAULT_HOME_PATH } from '../../lib/navigations' type SettingsLayoutProps = { title?: string children: React.ReactNode } const ReturnButton = (): JSX.Element => { return ( Return to library ) } export function SettingsLayout(props: SettingsLayoutProps): JSX.Element { useVerifyAuth() const router = useRouter() const [showLogoutConfirmation, setShowLogoutConfirmation] = useState(false) const [showKeyboardCommandsModal, setShowKeyboardCommandsModal] = useState(false) applyStoredTheme() const showLogout = useCallback(() => { setShowLogoutConfirmation(true) }, [setShowLogoutConfirmation]) useEffect(() => { document.addEventListener('logout', showLogout) return () => { document.removeEventListener('logout', showLogout) } }, [showLogout]) const { logout } = useLogout() return ( {props.children} {showLogoutConfirmation ? ( setShowLogoutConfirmation(false)} /> ) : null} {showKeyboardCommandsModal ? ( setShowKeyboardCommandsModal(false)} /> ) : null} ) }