Files
overleaf-cep/services/web/frontend/js/features/ide-settings/components/settings-modal.tsx
T
Mathias Jakobsen 3c3dd0fb37 Merge pull request #35037 from overleaf/mj-themed-modals-again
[web] Add support for dark mode modals

GitOrigin-RevId: 34770a6f91d6a331cfaccf86c7dc1a5d151ad25b
2026-09-17 11:15:24 +00:00

61 lines
1.5 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'
import { useFeatureFlag } from '@/shared/context/split-test-context'
const SettingsModalWrapper = () => {
return (
<SettingsModalProvider>
<SettingsModal />
</SettingsModalProvider>
)
}
const SettingsModal = () => {
const { t } = useTranslation()
const { show, setShow, settingsTabs, activeTab, setActiveTab } =
useSettingsModalContext()
const themed = useFeatureFlag('themed-modals')
useFocusOnSetting()
useOpenSettingsViaQueryParam()
return (
<OLModal
show={show}
onHide={() => setShow(false)}
size="lg"
backdropClassName={
activeTab === 'appearance'
? 'ide-settings-modal-transparent-backdrop'
: undefined
}
themed={themed}
>
<OLModalHeader>
<OLModalTitle>{t('settings')}</OLModalTitle>
</OLModalHeader>
<OLModalBody className="ide-settings-modal-body">
<SettingsModalBody
activeTab={activeTab}
setActiveTab={setActiveTab}
settingsTabs={settingsTabs}
/>
</OLModalBody>
</OLModal>
)
}
export default SettingsModalWrapper