Files
Verso/services/web/frontend/js/features/ide-redesign/components/settings/settings-modal.tsx
T
19b38340ac Consistent usage of the modal header close button (#28681)
* Convert OLModal to named exports only

* Make closeButton the default for OLModalHeader

* Set `closeButton={false}` for modal that is not dismissible

* Fix duplicated imports

* Remove another unnecessary `closeButton` prop

* Fix import

---------

Co-authored-by: Antoine Clausse <antoine.clausse@overleaf.com>
GitOrigin-RevId: ddd7be6e59a966ac634683d2494d6e9d2c3732e6
2025-09-30 08:05:24 +00:00

56 lines
1.3 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 '../../contexts/settings-modal-context'
import useFocusOnSetting from '../../hooks/use-focus-on-setting'
const SettingsModalWrapper = () => {
return (
<SettingsModalProvider>
<SettingsModal />
</SettingsModalProvider>
)
}
const SettingsModal = () => {
const { t } = useTranslation()
const { show, setShow, settingsTabs, activeTab, setActiveTab } =
useSettingsModalContext()
useFocusOnSetting()
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