PersonalSettings.jsx 2.1 KB

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