|
@@ -1,5 +1,7 @@
|
|
|
import React from 'react';
|
|
import React from 'react';
|
|
|
import PropTypes from 'prop-types';
|
|
import PropTypes from 'prop-types';
|
|
|
|
|
+import { withTranslation } from 'react-i18next';
|
|
|
|
|
+
|
|
|
|
|
|
|
|
import { createSubscribedElement } from '../../UnstatedUtils';
|
|
import { createSubscribedElement } from '../../UnstatedUtils';
|
|
|
|
|
|
|
@@ -10,15 +12,17 @@ import AdminCustomizeContainer from '../../../services/AdminCustomizeContainer';
|
|
|
class CustomizeThemeOptions extends React.Component {
|
|
class CustomizeThemeOptions extends React.Component {
|
|
|
|
|
|
|
|
render() {
|
|
render() {
|
|
|
- const { adminCustomizeContainer } = this.props;
|
|
|
|
|
|
|
+ const { t, adminCustomizeContainer } = this.props;
|
|
|
const { currentLayout, currentTheme } = adminCustomizeContainer.state;
|
|
const { currentLayout, currentTheme } = adminCustomizeContainer.state;
|
|
|
|
|
|
|
|
- const lightTheme = [{
|
|
|
|
|
|
|
+ const lightNDarkTheme = [{
|
|
|
name: 'default', bg: '#ffffff', topbar: '#334455', theme: '#112744',
|
|
name: 'default', bg: '#ffffff', topbar: '#334455', theme: '#112744',
|
|
|
- }, {
|
|
|
|
|
- name: 'nature', bg: '#f9fff3', topbar: '#118050', theme: '#460039',
|
|
|
|
|
}, {
|
|
}, {
|
|
|
name: 'mono-blue', bg: '#F7FBFD', topbar: '#00587A', theme: '#00587A',
|
|
name: 'mono-blue', bg: '#F7FBFD', topbar: '#00587A', theme: '#00587A',
|
|
|
|
|
+ }];
|
|
|
|
|
+
|
|
|
|
|
+ const uniqueTheme = [{
|
|
|
|
|
+ name: 'nature', bg: '#f9fff3', topbar: '#118050', theme: '#460039',
|
|
|
}, {
|
|
}, {
|
|
|
name: 'wood', bg: '#fffefb', topbar: '#aaa45f', theme: '#dddebf',
|
|
name: 'wood', bg: '#fffefb', topbar: '#aaa45f', theme: '#dddebf',
|
|
|
}, {
|
|
}, {
|
|
@@ -29,49 +33,51 @@ class CustomizeThemeOptions extends React.Component {
|
|
|
name: 'antarctic', bg: '#ffffff', topbar: '#000080', theme: '#99cccc',
|
|
name: 'antarctic', bg: '#ffffff', topbar: '#000080', theme: '#99cccc',
|
|
|
}, {
|
|
}, {
|
|
|
name: 'spring', bg: '#fff5ee', topbar: '#ff69b4', theme: '#ffb6c1',
|
|
name: 'spring', bg: '#fff5ee', topbar: '#ff69b4', theme: '#ffb6c1',
|
|
|
- }];
|
|
|
|
|
-
|
|
|
|
|
- const darkTheme = [{
|
|
|
|
|
- name: 'future', bg: '#16282D', topbar: '#011414', theme: '#04B4AE',
|
|
|
|
|
}, {
|
|
}, {
|
|
|
- name: 'blue-night', bg: '#061F2F', topbar: '#27343B', theme: '#0090C8',
|
|
|
|
|
|
|
+ name: 'future', bg: '#16282D', topbar: '#011414', theme: '#04B4AE',
|
|
|
}, {
|
|
}, {
|
|
|
name: 'halloween', bg: '#030003', topbar: '#cc5d1f', theme: '#e9af2b',
|
|
name: 'halloween', bg: '#030003', topbar: '#cc5d1f', theme: '#e9af2b',
|
|
|
}];
|
|
}];
|
|
|
|
|
|
|
|
return (
|
|
return (
|
|
|
<div id="themeOptions" className={`${currentLayout === 'kibela' && 'disabled'}`}>
|
|
<div id="themeOptions" className={`${currentLayout === 'kibela' && 'disabled'}`}>
|
|
|
- {/* Light Themes */}
|
|
|
|
|
- <div className="d-flex flex-wrap">
|
|
|
|
|
- {lightTheme.map((theme) => {
|
|
|
|
|
- return (
|
|
|
|
|
- <ThemeColorBox
|
|
|
|
|
- key={theme.name}
|
|
|
|
|
- isSelected={currentTheme === theme.name}
|
|
|
|
|
- onSelected={() => adminCustomizeContainer.switchThemeType(theme.name)}
|
|
|
|
|
- name={theme.name}
|
|
|
|
|
- bg={theme.bg}
|
|
|
|
|
- topbar={theme.topbar}
|
|
|
|
|
- theme={theme.theme}
|
|
|
|
|
- />
|
|
|
|
|
- );
|
|
|
|
|
- })}
|
|
|
|
|
|
|
+ {/* Light and Dark Themes */}
|
|
|
|
|
+ <div>
|
|
|
|
|
+ <h3>{t('admin:customize_setting.theme_desc.light_and_dark')}</h3>
|
|
|
|
|
+ <div className="d-flex flex-wrap">
|
|
|
|
|
+ {lightNDarkTheme.map((theme) => {
|
|
|
|
|
+ return (
|
|
|
|
|
+ <ThemeColorBox
|
|
|
|
|
+ key={theme.name}
|
|
|
|
|
+ isSelected={currentTheme === theme.name}
|
|
|
|
|
+ onSelected={() => adminCustomizeContainer.switchThemeType(theme.name)}
|
|
|
|
|
+ name={theme.name}
|
|
|
|
|
+ bg={theme.bg}
|
|
|
|
|
+ topbar={theme.topbar}
|
|
|
|
|
+ theme={theme.theme}
|
|
|
|
|
+ />
|
|
|
|
|
+ );
|
|
|
|
|
+ })}
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
- {/* Dark Themes */}
|
|
|
|
|
- <div className="d-flex mt-3">
|
|
|
|
|
- {darkTheme.map((theme) => {
|
|
|
|
|
- return (
|
|
|
|
|
- <ThemeColorBox
|
|
|
|
|
- key={theme.name}
|
|
|
|
|
- isSelected={currentTheme === theme.name}
|
|
|
|
|
- onSelected={() => adminCustomizeContainer.switchThemeType(theme.name)}
|
|
|
|
|
- name={theme.name}
|
|
|
|
|
- bg={theme.bg}
|
|
|
|
|
- topbar={theme.topbar}
|
|
|
|
|
- theme={theme.theme}
|
|
|
|
|
- />
|
|
|
|
|
- );
|
|
|
|
|
- })}
|
|
|
|
|
|
|
+ {/* Unique Theme */}
|
|
|
|
|
+ <div>
|
|
|
|
|
+ <h3>{t('admin:customize_setting.theme_desc.unique')}</h3>
|
|
|
|
|
+ <div className="d-flex flex-wrap">
|
|
|
|
|
+ {uniqueTheme.map((theme) => {
|
|
|
|
|
+ return (
|
|
|
|
|
+ <ThemeColorBox
|
|
|
|
|
+ key={theme.name}
|
|
|
|
|
+ isSelected={currentTheme === theme.name}
|
|
|
|
|
+ onSelected={() => adminCustomizeContainer.switchThemeType(theme.name)}
|
|
|
|
|
+ name={theme.name}
|
|
|
|
|
+ bg={theme.bg}
|
|
|
|
|
+ topbar={theme.topbar}
|
|
|
|
|
+ theme={theme.theme}
|
|
|
|
|
+ />
|
|
|
|
|
+ );
|
|
|
|
|
+ })}
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
);
|
|
);
|
|
@@ -84,8 +90,9 @@ const CustomizeThemeOptionsWrapper = (props) => {
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
CustomizeThemeOptions.propTypes = {
|
|
CustomizeThemeOptions.propTypes = {
|
|
|
|
|
+ t: PropTypes.func.isRequired, // i18next
|
|
|
appContainer: PropTypes.instanceOf(AppContainer).isRequired,
|
|
appContainer: PropTypes.instanceOf(AppContainer).isRequired,
|
|
|
adminCustomizeContainer: PropTypes.instanceOf(AdminCustomizeContainer).isRequired,
|
|
adminCustomizeContainer: PropTypes.instanceOf(AdminCustomizeContainer).isRequired,
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
-export default CustomizeThemeOptionsWrapper;
|
|
|
|
|
|
|
+export default withTranslation()(CustomizeThemeOptionsWrapper);
|