settings-modal.tsx 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import OLModal, {
  2. OLModalBody,
  3. OLModalHeader,
  4. OLModalTitle,
  5. } from '@/shared/components/ol/ol-modal'
  6. import { useTranslation } from 'react-i18next'
  7. import { SettingsModalBody } from './settings-modal-body'
  8. import {
  9. SettingsModalProvider,
  10. useSettingsModalContext,
  11. } from '../../contexts/settings-modal-context'
  12. import useFocusOnSetting from '../../hooks/use-focus-on-setting'
  13. const SettingsModalWrapper = () => {
  14. return (
  15. <SettingsModalProvider>
  16. <SettingsModal />
  17. </SettingsModalProvider>
  18. )
  19. }
  20. const SettingsModal = () => {
  21. const { t } = useTranslation()
  22. const { show, setShow, settingsTabs, activeTab, setActiveTab } =
  23. useSettingsModalContext()
  24. useFocusOnSetting()
  25. return (
  26. <OLModal
  27. show={show}
  28. onHide={() => setShow(false)}
  29. size="lg"
  30. backdropClassName={
  31. activeTab === 'appearance'
  32. ? 'ide-settings-modal-transparent-backdrop'
  33. : undefined
  34. }
  35. >
  36. <OLModalHeader closeButton>
  37. <OLModalTitle>{t('settings')}</OLModalTitle>
  38. </OLModalHeader>
  39. <OLModalBody className="ide-settings-modal-body">
  40. <SettingsModalBody
  41. activeTab={activeTab}
  42. setActiveTab={setActiveTab}
  43. settingsTabs={settingsTabs}
  44. />
  45. </OLModalBody>
  46. </OLModal>
  47. )
  48. }
  49. export default SettingsModalWrapper