settings-modal.tsx 1.3 KB

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