Files
overleaf-cep/services/web/frontend/js/features/settings/components/settings-modal.tsx
T
Kristina 21ea6ab989 [web] open project notification settings from URL (#32689)
GitOrigin-RevId: 8d6e1c2d7cb63c1597d952d546121f030b79d126
2026-04-16 08:05:36 +00:00

58 lines
1.4 KiB
TypeScript

import {
OLModal,
OLModalBody,
OLModalHeader,
OLModalTitle,
} from '@/shared/components/ol/ol-modal'
import { useTranslation } from 'react-i18next'
import { SettingsModalBody } from './settings-modal-body'
import {
SettingsModalProvider,
useSettingsModalContext,
} from '../context/settings-modal-context'
import useFocusOnSetting from '../hooks/use-focus-on-setting'
import useOpenSettingsViaQueryParam from '../hooks/use-open-settings-via-query-param'
const SettingsModalWrapper = () => {
return (
<SettingsModalProvider>
<SettingsModal />
</SettingsModalProvider>
)
}
const SettingsModal = () => {
const { t } = useTranslation()
const { show, setShow, settingsTabs, activeTab, setActiveTab } =
useSettingsModalContext()
useFocusOnSetting()
useOpenSettingsViaQueryParam()
return (
<OLModal
show={show}
onHide={() => setShow(false)}
size="lg"
backdropClassName={
activeTab === 'appearance'
? 'ide-settings-modal-transparent-backdrop'
: undefined
}
>
<OLModalHeader>
<OLModalTitle>{t('settings')}</OLModalTitle>
</OLModalHeader>
<OLModalBody className="ide-settings-modal-body">
<SettingsModalBody
activeTab={activeTab}
setActiveTab={setActiveTab}
settingsTabs={settingsTabs}
/>
</OLModalBody>
</OLModal>
)
}
export default SettingsModalWrapper