PersonalSettings.jsx 1.4 KB

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