CustomizeThemeOptions.jsx 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import { createSubscribedElement } from '../../UnstatedUtils';
  4. import AppContainer from '../../../services/AppContainer';
  5. import ThemeColorBox from './ThemeColorBox';
  6. import AdminCustomizeContainer from '../../../services/AdminCustomizeContainer';
  7. class CustomizeThemeOptions extends React.Component {
  8. render() {
  9. const { adminCustomizeContainer } = this.props;
  10. const { currentLayout, currentTheme } = adminCustomizeContainer.state;
  11. const lightTheme = [{
  12. name: 'default', bg: '#ffffff', topbar: '#334455', theme: '#112744',
  13. }, {
  14. name: 'nature', bg: '#f9fff3', topbar: '#118050', theme: '#460039',
  15. }, {
  16. name: 'mono-blue', bg: '#F7FBFD', topbar: '#00587A', theme: '#00587A',
  17. }, {
  18. name: 'wood', bg: '#fffefb', topbar: '#aaa45f', theme: '#dddebf',
  19. }, {
  20. name: 'island', bg: '#8ecac0', topbar: '#0c2a44', theme: '#cef2ef',
  21. }, {
  22. name: 'christmas', bg: '#fffefb', topbar: '#b3000c', theme: '#017e20',
  23. }, {
  24. name: 'antarctic', bg: '#ffffff', topbar: '#000080', theme: '#99cccc',
  25. }, {
  26. name: 'animals', bg: '#ffffff', topbar: '#334455', theme: '#112744',
  27. }];
  28. const darkTheme = [{
  29. name: 'default-dark', bg: '#212731', topbar: '#151515', theme: '#f75b36',
  30. }, {
  31. name: 'future', bg: '#16282D', topbar: '#011414', theme: '#04B4AE',
  32. }, {
  33. name: 'blue-night', bg: '#061F2F', topbar: '#27343B', theme: '#0090C8',
  34. }, {
  35. name: 'halloween', bg: '#030003', topbar: '#cc5d1f', theme: '#e9af2b',
  36. }];
  37. return (
  38. <div id="themeOptions" className={`${currentLayout === 'kibela' && 'disabled'}`}>
  39. {/* Light Themes */}
  40. <div className="d-flex">
  41. {lightTheme.map((theme) => {
  42. return (
  43. <ThemeColorBox
  44. key={theme.name}
  45. isSelected={currentTheme === theme.name}
  46. onSelected={() => adminCustomizeContainer.switchThemeType(theme.name)}
  47. name={theme.name}
  48. bg={theme.bg}
  49. topbar={theme.topbar}
  50. theme={theme.theme}
  51. />
  52. );
  53. })}
  54. </div>
  55. {/* Dark Themes */}
  56. <div className="d-flex mt-3">
  57. {darkTheme.map((theme) => {
  58. return (
  59. <ThemeColorBox
  60. key={theme.name}
  61. isSelected={currentTheme === theme.name}
  62. onSelected={() => adminCustomizeContainer.switchThemeType(theme.name)}
  63. name={theme.name}
  64. bg={theme.bg}
  65. topbar={theme.topbar}
  66. theme={theme.theme}
  67. />
  68. );
  69. })}
  70. </div>
  71. </div>
  72. );
  73. }
  74. }
  75. const CustomizeThemeOptionsWrapper = (props) => {
  76. return createSubscribedElement(CustomizeThemeOptions, props, [AppContainer, AdminCustomizeContainer]);
  77. };
  78. CustomizeThemeOptions.propTypes = {
  79. appContainer: PropTypes.instanceOf(AppContainer).isRequired,
  80. adminCustomizeContainer: PropTypes.instanceOf(AdminCustomizeContainer).isRequired,
  81. };
  82. export default CustomizeThemeOptionsWrapper;