PersonalSettings.jsx 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import React, { useMemo } from 'react';
  2. import PropTypes from 'prop-types';
  3. import { withTranslation } from 'react-i18next';
  4. import CustomNavAndContents from '../CustomNavigation/CustomNavAndContents';
  5. import UserSettings from './UserSettings';
  6. import PasswordSettings from './PasswordSettings';
  7. import ExternalAccountLinkedMe from './ExternalAccountLinkedMe';
  8. import ApiSettings from './ApiSettings';
  9. import { EditorSettings } from './EditorSettings';
  10. const PersonalSettings = (props) => {
  11. const { t } = props;
  12. const navTabMapping = useMemo(() => {
  13. return {
  14. user_infomation: {
  15. Icon: () => <i className="icon-fw icon-user"></i>,
  16. Content: UserSettings,
  17. i18n: t('User Information'),
  18. index: 0,
  19. },
  20. external_accounts: {
  21. Icon: () => <i className="icon-fw icon-share-alt"></i>,
  22. Content: ExternalAccountLinkedMe,
  23. i18n: t('admin:user_management.external_accounts'),
  24. index: 1,
  25. },
  26. password_settings: {
  27. Icon: () => <i className="icon-fw icon-lock"></i>,
  28. Content: PasswordSettings,
  29. i18n: t('Password Settings'),
  30. index: 2,
  31. },
  32. api_settings: {
  33. Icon: () => <i className="icon-fw icon-paper-plane"></i>,
  34. Content: ApiSettings,
  35. i18n: t('API Settings'),
  36. index: 3,
  37. },
  38. editor_settings: {
  39. Icon: () => <i className="icon-fw icon-pencil"></i>,
  40. Content: EditorSettings,
  41. i18n: t('editor_settings.editor_settings'),
  42. index: 4,
  43. },
  44. };
  45. }, [t]);
  46. return (
  47. <CustomNavAndContents navTabMapping={navTabMapping} navigationMode="both" tabContentClasses={['px-0']} />
  48. );
  49. };
  50. PersonalSettings.propTypes = {
  51. t: PropTypes.func.isRequired, // i18next
  52. };
  53. export default withTranslation()(PersonalSettings);