import { RoundIconButton } from '@/Components/Button/RoundIconButton' import { TitleBar } from '@/Components/TitleBar/TitleBar' import { Title } from '@/Components/TitleBar/Title' import { FunctionComponent } from 'preact' import { observer } from 'mobx-react-lite' import { AccountPreferences, HelpAndFeedback, Listed, General, Security } from './Panes' import { PreferencesMenu } from './PreferencesMenu' import { PreferencesMenuView } from './PreferencesMenuView' import { WebApplication } from '@/UIModels/Application' import { MfaProps } from './Panes/TwoFactorAuth/MfaProps' import { AppState } from '@/UIModels/AppState' import { useEffect, useMemo } from 'preact/hooks' import { Backups } from '@/Components/Preferences/Panes/Backups' import { Appearance } from './Panes/Appearance' interface PreferencesProps extends MfaProps { application: WebApplication appState: AppState closePreferences: () => void } const PaneSelector: FunctionComponent = observer( ({ menu, appState, application, mfaProvider, userProvider }) => { switch (menu.selectedPaneId) { case 'general': return ( ) case 'account': return case 'appearance': return case 'security': return ( ) case 'backups': return case 'listed': return case 'shortcuts': return null case 'accessibility': return null case 'get-free-month': return null case 'help-feedback': return default: return ( ) } }, ) const PreferencesCanvas: FunctionComponent = observer((props) => (
)) export const PreferencesView: FunctionComponent = observer((props) => { const menu = useMemo( () => new PreferencesMenu(props.application, props.appState.enableUnfinishedFeatures), [props.appState.enableUnfinishedFeatures, props.application], ) useEffect(() => { menu.selectPane(props.appState.preferences.currentPane) const removeEscKeyObserver = props.application.io.addKeyObserver({ key: 'Escape', onKeyDown: (event) => { event.preventDefault() props.closePreferences() }, }) return () => { removeEscKeyObserver() } }, [props, menu]) return (
{/* div is added so flex justify-between can center the title */}
Your preferences for Standard Notes { props.closePreferences() }} type="normal" icon="close" />
) })