settings-modal.tsx 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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. import useOpenSettingsViaQueryParam from '../hooks/use-open-settings-via-query-param'
  15. const SettingsModalWrapper = () => {
  16. return (
  17. <SettingsModalProvider>
  18. <SettingsModal />
  19. </SettingsModalProvider>
  20. )
  21. }
  22. const SettingsModal = () => {
  23. const { t } = useTranslation()
  24. const { show, setShow, settingsTabs, activeTab, setActiveTab } =
  25. useSettingsModalContext()
  26. useFocusOnSetting()
  27. useOpenSettingsViaQueryParam()
  28. return (
  29. <OLModal
  30. show={show}
  31. onHide={() => setShow(false)}
  32. size="lg"
  33. backdropClassName={
  34. activeTab === 'appearance'
  35. ? 'ide-settings-modal-transparent-backdrop'
  36. : undefined
  37. }
  38. >
  39. <OLModalHeader>
  40. <OLModalTitle>{t('settings')}</OLModalTitle>
  41. </OLModalHeader>
  42. <OLModalBody className="ide-settings-modal-body">
  43. <SettingsModalBody
  44. activeTab={activeTab}
  45. setActiveTab={setActiveTab}
  46. settingsTabs={settingsTabs}
  47. />
  48. </OLModalBody>
  49. </OLModal>
  50. )
  51. }
  52. export default SettingsModalWrapper