From 008d81caabcf83b6b5268aa1c5461f22d1574f05 Mon Sep 17 00:00:00 2001 From: Chris Duarte Date: Wed, 12 Dec 2018 04:40:09 -0800 Subject: [PATCH] MM-12906 - Add thumbnails to theme selection (#2381) --- .../theme/__snapshots__/theme.test.js.snap | 235 +++++++++++++++--- app/screens/theme/index.js | 9 +- app/screens/theme/theme.js | 99 +++++--- app/screens/theme/theme.test.js | 235 +++++++++--------- app/screens/theme/theme_tile.js | 127 ++++++++++ assets/base/images/themes/check.png | Bin 0 -> 571 bytes assets/base/images/themes/check@2x.png | Bin 0 -> 937 bytes assets/base/images/themes/check@3x.png | Bin 0 -> 1246 bytes assets/base/images/themes/mattermost.png | Bin 0 -> 994 bytes assets/base/images/themes/mattermost@2x.png | Bin 0 -> 2095 bytes assets/base/images/themes/mattermost@3x.png | Bin 0 -> 3529 bytes assets/base/images/themes/mattermost_dark.png | Bin 0 -> 910 bytes .../base/images/themes/mattermost_dark@2x.png | Bin 0 -> 1976 bytes .../base/images/themes/mattermost_dark@3x.png | Bin 0 -> 3375 bytes assets/base/images/themes/organization.png | Bin 0 -> 996 bytes assets/base/images/themes/organization@2x.png | Bin 0 -> 2109 bytes assets/base/images/themes/organization@3x.png | Bin 0 -> 3529 bytes assets/base/images/themes/windows_dark.png | Bin 0 -> 905 bytes assets/base/images/themes/windows_dark@2x.png | Bin 0 -> 1961 bytes assets/base/images/themes/windows_dark@3x.png | Bin 0 -> 3354 bytes 20 files changed, 507 insertions(+), 198 deletions(-) create mode 100644 app/screens/theme/theme_tile.js create mode 100644 assets/base/images/themes/check.png create mode 100644 assets/base/images/themes/check@2x.png create mode 100644 assets/base/images/themes/check@3x.png create mode 100644 assets/base/images/themes/mattermost.png create mode 100644 assets/base/images/themes/mattermost@2x.png create mode 100644 assets/base/images/themes/mattermost@3x.png create mode 100644 assets/base/images/themes/mattermost_dark.png create mode 100644 assets/base/images/themes/mattermost_dark@2x.png create mode 100644 assets/base/images/themes/mattermost_dark@3x.png create mode 100644 assets/base/images/themes/organization.png create mode 100644 assets/base/images/themes/organization@2x.png create mode 100644 assets/base/images/themes/organization@3x.png create mode 100644 assets/base/images/themes/windows_dark.png create mode 100644 assets/base/images/themes/windows_dark@2x.png create mode 100644 assets/base/images/themes/windows_dark@3x.png diff --git a/app/screens/theme/__snapshots__/theme.test.js.snap b/app/screens/theme/__snapshots__/theme.test.js.snap index 1969d6b11..1836adba6 100644 --- a/app/screens/theme/__snapshots__/theme.test.js.snap +++ b/app/screens/theme/__snapshots__/theme.test.js.snap @@ -19,51 +19,206 @@ exports[`Theme should match snapshot 1`] = ` } } > -
- + } + selected={true} + theme={ + Object { + "awayIndicator": "#ffbc42", + "buttonBg": "#166de0", + "buttonColor": "#ffffff", + "centerChannelBg": "#ffffff", + "centerChannelColor": "#3d3c40", + "codeTheme": "github", + "dndIndicator": "#f74343", + "errorTextColor": "#fd5960", + "linkColor": "#2389d7", + "mentionBj": "#ffffff", + "mentionColor": "#145dbf", + "mentionHighlightBg": "#ffe577", + "mentionHighlightLink": "#166de0", + "newMessageSeparator": "#ff8800", + "onlineIndicator": "#06d6a0", + "sidebarBg": "#145dbf", + "sidebarHeaderBg": "#1153ab", + "sidebarHeaderTextColor": "#ffffff", + "sidebarText": "#ffffff", + "sidebarTextActiveBorder": "#579eff", + "sidebarTextActiveColor": "#ffffff", + "sidebarTextHoverBg": "#4578bf", + "sidebarUnreadText": "#ffffff", + "type": "Mattermost", + } + } /> -
+ + } + selected={false} + theme={ + Object { + "awayIndicator": "#ffbc42", + "buttonBg": "#166de0", + "buttonColor": "#ffffff", + "centerChannelBg": "#ffffff", + "centerChannelColor": "#3d3c40", + "codeTheme": "github", + "dndIndicator": "#f74343", + "errorTextColor": "#fd5960", + "linkColor": "#2389d7", + "mentionBj": "#ffffff", + "mentionColor": "#145dbf", + "mentionHighlightBg": "#ffe577", + "mentionHighlightLink": "#166de0", + "newMessageSeparator": "#ff8800", + "onlineIndicator": "#06d6a0", + "sidebarBg": "#145dbf", + "sidebarHeaderBg": "#1153ab", + "sidebarHeaderTextColor": "#ffffff", + "sidebarText": "#ffffff", + "sidebarTextActiveBorder": "#579eff", + "sidebarTextActiveColor": "#ffffff", + "sidebarTextHoverBg": "#4578bf", + "sidebarUnreadText": "#ffffff", + "type": "Mattermost", + } + } + /> + + } + selected={false} + theme={ + Object { + "awayIndicator": "#ffbc42", + "buttonBg": "#166de0", + "buttonColor": "#ffffff", + "centerChannelBg": "#ffffff", + "centerChannelColor": "#3d3c40", + "codeTheme": "github", + "dndIndicator": "#f74343", + "errorTextColor": "#fd5960", + "linkColor": "#2389d7", + "mentionBj": "#ffffff", + "mentionColor": "#145dbf", + "mentionHighlightBg": "#ffe577", + "mentionHighlightLink": "#166de0", + "newMessageSeparator": "#ff8800", + "onlineIndicator": "#06d6a0", + "sidebarBg": "#145dbf", + "sidebarHeaderBg": "#1153ab", + "sidebarHeaderTextColor": "#ffffff", + "sidebarText": "#ffffff", + "sidebarTextActiveBorder": "#579eff", + "sidebarTextActiveColor": "#ffffff", + "sidebarTextHoverBg": "#4578bf", + "sidebarUnreadText": "#ffffff", + "type": "Mattermost", + } + } + /> + + } + selected={false} + theme={ + Object { + "awayIndicator": "#ffbc42", + "buttonBg": "#166de0", + "buttonColor": "#ffffff", + "centerChannelBg": "#ffffff", + "centerChannelColor": "#3d3c40", + "codeTheme": "github", + "dndIndicator": "#f74343", + "errorTextColor": "#fd5960", + "linkColor": "#2389d7", + "mentionBj": "#ffffff", + "mentionColor": "#145dbf", + "mentionHighlightBg": "#ffe577", + "mentionHighlightLink": "#166de0", + "newMessageSeparator": "#ff8800", + "onlineIndicator": "#06d6a0", + "sidebarBg": "#145dbf", + "sidebarHeaderBg": "#1153ab", + "sidebarHeaderTextColor": "#ffffff", + "sidebarText": "#ffffff", + "sidebarTextActiveBorder": "#579eff", + "sidebarTextActiveColor": "#ffffff", + "sidebarTextHoverBg": "#4578bf", + "sidebarUnreadText": "#ffffff", + "type": "Mattermost", + } + } + /> + `; diff --git a/app/screens/theme/index.js b/app/screens/theme/index.js index b8fa82868..3ed397309 100644 --- a/app/screens/theme/index.js +++ b/app/screens/theme/index.js @@ -8,15 +8,18 @@ import {getCurrentUserId} from 'mattermost-redux/selectors/entities/users'; import {getCurrentTeamId} from 'mattermost-redux/selectors/entities/teams'; import {savePreferences} from 'mattermost-redux/actions/preferences'; import {getAllowedThemes, getCustomTheme} from 'app/selectors/theme'; +import {isLandscape, isTablet} from 'app/selectors/device'; import Theme from './theme'; const mapStateToProps = (state) => ({ - userId: getCurrentUserId(state), - teamId: getCurrentTeamId(state), - theme: getTheme(state), allowedThemes: getAllowedThemes(state), customTheme: getCustomTheme(state), + isLandscape: isLandscape(state), + isTablet: isTablet(state), + teamId: getCurrentTeamId(state), + theme: getTheme(state), + userId: getCurrentUserId(state), }); const mapDispatchToProps = (dispatch) => ({ diff --git a/app/screens/theme/theme.js b/app/screens/theme/theme.js index 4a0518ca4..326ce1e98 100644 --- a/app/screens/theme/theme.js +++ b/app/screens/theme/theme.js @@ -2,18 +2,26 @@ // See LICENSE.txt for license information. import React from 'react'; -import {View, FlatList} from 'react-native'; +import {View} from 'react-native'; import PropTypes from 'prop-types'; import {intlShape} from 'react-intl'; import StatusBar from 'app/components/status_bar'; import Section from 'app/screens/settings/section'; import SectionItem from 'app/screens/settings/section_item'; +import ThemeTile from './theme_tile'; import FormattedText from 'app/components/formatted_text'; import {changeOpacity, makeStyleSheetFromTheme, setNavigatorStyles} from 'app/utils/theme'; import Preferences from 'mattermost-redux/constants/preferences'; +const thumbnailImages = { + default: require('assets/images/themes/mattermost.png'), + organization: require('assets/images/themes/organization.png'), + mattermostDark: require('assets/images/themes/mattermost_dark.png'), + windows10: require('assets/images/themes/windows_dark.png'), +}; + export default class Theme extends React.PureComponent { static propTypes = { actions: PropTypes.shape({ @@ -21,6 +29,8 @@ export default class Theme extends React.PureComponent { }).isRequired, allowedThemes: PropTypes.arrayOf(PropTypes.object), customTheme: PropTypes.object, + isLandscape: PropTypes.bool.isRequired, + isTablet: PropTypes.bool.isRequired, navigator: PropTypes.object.isRequired, teamId: PropTypes.string.isRequired, theme: PropTypes.object.isRequired, @@ -63,57 +73,67 @@ export default class Theme extends React.PureComponent { }]); } - renderThemeRow = ({item, title}) => { + renderAllowedThemeTiles = () => { + const {theme, allowedThemes, isLandscape, isTablet} = this.props; + + return allowedThemes.map((allowedTheme) => ( + + )} + action={this.setTheme} + actionValue={allowedTheme.key} + selected={allowedTheme.type.toLowerCase() === theme.type.toLowerCase()} + theme={theme} + imageSrc={thumbnailImages[allowedTheme.key]} + isLandscape={isLandscape} + isTablet={isTablet} + /> + )); + }; + + renderCustomThemeRow = ({item}) => { const {theme} = this.props; - const style = getStyleSheet(theme); return ( - - - )} - action={this.setTheme} - actionType='select' - actionValue={item.key} - selected={item.type.toLowerCase() === theme.type.toLowerCase()} - theme={theme} - /> - - + + )} + action={this.setTheme} + actionType='select' + actionValue={item.key} + selected={item.type.toLowerCase() === theme.type.toLowerCase()} + theme={theme} + /> ); }; - keyExtractor = (item) => item.key; - render() { - const {theme, allowedThemes} = this.props; + const {theme} = this.props; const {customTheme} = this.state; const style = getStyleSheet(theme); return ( -
- -
+ + {this.renderAllowedThemeTiles()} + {customTheme &&
- {this.renderThemeRow({item: customTheme, title: 'Custom'})} + {this.renderCustomThemeRow({item: customTheme})}
}
@@ -133,9 +153,16 @@ const getStyleSheet = makeStyleSheetFromTheme((theme) => { flex: 1, paddingTop: 35, }, - divider: { - backgroundColor: changeOpacity(theme.centerChannelColor, 0.1), - height: 1, + tilesContainer: { + marginBottom: 30, + flexDirection: 'row', + flexWrap: 'wrap', + justifyContent: 'center', + backgroundColor: theme.centerChannelBg, + borderTopWidth: 1, + borderBottomWidth: 1, + borderTopColor: changeOpacity(theme.centerChannelColor, 0.1), + borderBottomColor: changeOpacity(theme.centerChannelColor, 0.1), }, }; }); diff --git a/app/screens/theme/theme.test.js b/app/screens/theme/theme.test.js index d279d4822..3a2651ba5 100644 --- a/app/screens/theme/theme.test.js +++ b/app/screens/theme/theme.test.js @@ -2,9 +2,9 @@ // See LICENSE.txt for license information. import React from 'react'; -import {FlatList} from 'react-native'; import {shallow} from 'enzyme'; -import Section from 'app/screens/settings/section'; + +import ThemeTile from './theme_tile'; import Preferences from 'mattermost-redux/constants/preferences'; @@ -12,12 +12,125 @@ import Theme from './theme'; jest.mock('react-intl'); +const allowedThemes = [ + { + type: 'Mattermost', + sidebarBg: '#145dbf', + sidebarText: '#ffffff', + sidebarUnreadText: '#ffffff', + sidebarTextHoverBg: '#4578bf', + sidebarTextActiveBorder: '#579eff', + sidebarTextActiveColor: '#ffffff', + sidebarHeaderBg: '#1153ab', + sidebarHeaderTextColor: '#ffffff', + onlineIndicator: '#06d6a0', + awayIndicator: '#ffbc42', + dndIndicator: '#f74343', + mentionBg: '#ffffff', + mentionColor: '#145dbf', + centerChannelBg: '#ffffff', + centerChannelColor: '#3d3c40', + newMessageSeparator: '#ff8800', + linkColor: '#2389d7', + buttonBg: '#166de0', + buttonColor: '#ffffff', + errorTextColor: '#fd5960', + mentionHighlightBg: '#ffe577', + mentionHighlightLink: '#166de0', + codeTheme: 'github', + key: 'default', + }, + { + type: 'Organization', + sidebarBg: '#2071a7', + sidebarText: '#ffffff', + sidebarUnreadText: '#ffffff', + sidebarTextHoverBg: '#136197', + sidebarTextActiveBorder: '#7ab0d6', + sidebarTextActiveColor: '#ffffff', + sidebarHeaderBg: '#2f81b7', + sidebarHeaderTextColor: '#ffffff', + onlineIndicator: '#7dbe00', + awayIndicator: '#dcbd4e', + dndIndicator: '#ff6a6a', + mentionBg: '#fbfbfb', + mentionColor: '#2071f7', + centerChannelBg: '#f2f4f8', + centerChannelColor: '#333333', + newMessageSeparator: '#ff8800', + linkColor: '#2f81b7', + buttonBg: '#1dacfc', + buttonColor: '#ffffff', + errorTextColor: '#a94442', + mentionHighlightBg: '#f3e197', + mentionHighlightLink: '#2f81b7', + codeTheme: 'github', + key: 'organization', + }, + { + type: 'Mattermost Dark', + sidebarBg: '#1b2c3e', + sidebarText: '#ffffff', + sidebarUnreadText: '#ffffff', + sidebarTextHoverBg: '#4a5664', + sidebarTextActiveBorder: '#66b9a7', + sidebarTextActiveColor: '#ffffff', + sidebarHeaderBg: '#1b2c3e', + sidebarHeaderTextColor: '#ffffff', + onlineIndicator: '#65dcc8', + awayIndicator: '#c1b966', + dndIndicator: '#e81023', + mentionBg: '#b74a4a', + mentionColor: '#ffffff', + centerChannelBg: '#2f3e4e', + centerChannelColor: '#dddddd', + newMessageSeparator: '#5de5da', + linkColor: '#a4ffeb', + buttonBg: '#4cbba4', + buttonColor: '#ffffff', + errorTextColor: '#ff6461', + mentionHighlightBg: '#984063', + mentionHighlightLink: '#a4ffeb', + codeTheme: 'solarized-dark', + key: 'mattermostDark', + }, + { + type: 'Windows Dark', + sidebarBg: '#171717', + sidebarText: '#ffffff', + sidebarUnreadText: '#ffffff', + sidebarTextHoverBg: '#302e30', + sidebarTextActiveBorder: '#196caf', + sidebarTextActiveColor: '#ffffff', + sidebarHeaderBg: '#1f1f1f', + sidebarHeaderTextColor: '#ffffff', + onlineIndicator: '#399fff', + awayIndicator: '#c1b966', + dndIndicator: '#e81023', + mentionBg: '#0177e7', + mentionColor: '#ffffff', + centerChannelBg: '#1f1f1f', + centerChannelColor: '#dddddd', + newMessageSeparator: '#cc992d', + linkColor: '#0d93ff', + buttonBg: '#0177e7', + buttonColor: '#ffffff', + errorTextColor: '#ff6461', + mentionHighlightBg: '#784098', + mentionHighlightLink: '#a4ffeb', + codeTheme: 'monokai', + key: 'windows10', + }, +]; + describe('Theme', () => { const baseProps = { actions: { savePreferences: jest.fn(), }, allowedThemes, + isLandscape: false, + isTablet: false, navigator: { setOnNavigatorEvent: jest.fn(), }, @@ -32,122 +145,6 @@ describe('Theme', () => { ); expect(wrapper.getElement()).toMatchSnapshot(); - expect(wrapper.find(Section).first().exists()).toEqual(true); - expect(wrapper.find(FlatList).first().exists()).toEqual(true); + expect(wrapper.find(ThemeTile)).toHaveLength(4); }); }); - -const allowedThemes = [ - { - default: { - type: 'Mattermost', - sidebarBg: '#145dbf', - sidebarText: '#ffffff', - sidebarUnreadText: '#ffffff', - sidebarTextHoverBg: '#4578bf', - sidebarTextActiveBorder: '#579eff', - sidebarTextActiveColor: '#ffffff', - sidebarHeaderBg: '#1153ab', - sidebarHeaderTextColor: '#ffffff', - onlineIndicator: '#06d6a0', - awayIndicator: '#ffbc42', - dndIndicator: '#f74343', - mentionBg: '#ffffff', - mentionColor: '#145dbf', - centerChannelBg: '#ffffff', - centerChannelColor: '#3d3c40', - newMessageSeparator: '#ff8800', - linkColor: '#2389d7', - buttonBg: '#166de0', - buttonColor: '#ffffff', - errorTextColor: '#fd5960', - mentionHighlightBg: '#ffe577', - mentionHighlightLink: '#166de0', - codeTheme: 'github', - }, - }, - { - organization: { - type: 'Organization', - sidebarBg: '#2071a7', - sidebarText: '#ffffff', - sidebarUnreadText: '#ffffff', - sidebarTextHoverBg: '#136197', - sidebarTextActiveBorder: '#7ab0d6', - sidebarTextActiveColor: '#ffffff', - sidebarHeaderBg: '#2f81b7', - sidebarHeaderTextColor: '#ffffff', - onlineIndicator: '#7dbe00', - awayIndicator: '#dcbd4e', - dndIndicator: '#ff6a6a', - mentionBg: '#fbfbfb', - mentionColor: '#2071f7', - centerChannelBg: '#f2f4f8', - centerChannelColor: '#333333', - newMessageSeparator: '#ff8800', - linkColor: '#2f81b7', - buttonBg: '#1dacfc', - buttonColor: '#ffffff', - errorTextColor: '#a94442', - mentionHighlightBg: '#f3e197', - mentionHighlightLink: '#2f81b7', - codeTheme: 'github', - }, - }, - { - mattermostDark: { - type: 'Mattermost Dark', - sidebarBg: '#1b2c3e', - sidebarText: '#ffffff', - sidebarUnreadText: '#ffffff', - sidebarTextHoverBg: '#4a5664', - sidebarTextActiveBorder: '#66b9a7', - sidebarTextActiveColor: '#ffffff', - sidebarHeaderBg: '#1b2c3e', - sidebarHeaderTextColor: '#ffffff', - onlineIndicator: '#65dcc8', - awayIndicator: '#c1b966', - dndIndicator: '#e81023', - mentionBg: '#b74a4a', - mentionColor: '#ffffff', - centerChannelBg: '#2f3e4e', - centerChannelColor: '#dddddd', - newMessageSeparator: '#5de5da', - linkColor: '#a4ffeb', - buttonBg: '#4cbba4', - buttonColor: '#ffffff', - errorTextColor: '#ff6461', - mentionHighlightBg: '#984063', - mentionHighlightLink: '#a4ffeb', - codeTheme: 'solarized-dark', - }, - }, - { - windows10: { - type: 'Windows Dark', - sidebarBg: '#171717', - sidebarText: '#ffffff', - sidebarUnreadText: '#ffffff', - sidebarTextHoverBg: '#302e30', - sidebarTextActiveBorder: '#196caf', - sidebarTextActiveColor: '#ffffff', - sidebarHeaderBg: '#1f1f1f', - sidebarHeaderTextColor: '#ffffff', - onlineIndicator: '#399fff', - awayIndicator: '#c1b966', - dndIndicator: '#e81023', - mentionBg: '#0177e7', - mentionColor: '#ffffff', - centerChannelBg: '#1f1f1f', - centerChannelColor: '#dddddd', - newMessageSeparator: '#cc992d', - linkColor: '#0d93ff', - buttonBg: '#0177e7', - buttonColor: '#ffffff', - errorTextColor: '#ff6461', - mentionHighlightBg: '#784098', - mentionHighlightLink: '#a4ffeb', - codeTheme: 'monokai', - }, - }, -]; diff --git a/app/screens/theme/theme_tile.js b/app/screens/theme/theme_tile.js new file mode 100644 index 000000000..2ade75e0d --- /dev/null +++ b/app/screens/theme/theme_tile.js @@ -0,0 +1,127 @@ +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. +// See LICENSE.txt for license information. + +import React from 'react'; +import PropTypes from 'prop-types'; +import { + Dimensions, + Image, + TouchableOpacity, + View, +} from 'react-native'; + +import {makeStyleSheetFromTheme} from 'app/utils/theme'; + +const {width: deviceWidth, height: deviceHeight} = Dimensions.get('window'); + +const checkmark = require('assets/images/themes/check.png'); + +const tilePadding = 8; + +const ThemeTile = (props) => { + const { + action, + actionValue, + imageSrc, + isLandscape, + isTablet, + label, + selected, + theme, + } = props; + + const style = getStyleSheet(theme); + + const labelComponent = React.cloneElement( + label, + {style: style.label} + ); + + const tilesPerLine = isLandscape || isTablet ? 4 : 2; + const fullWidth = isLandscape ? deviceHeight - 40 : deviceWidth; + const layoutStyle = { + container: { + width: (fullWidth / tilesPerLine) - tilePadding, + }, + thumbnail: { + width: (fullWidth / tilesPerLine) - (tilePadding + 20), + }, + }; + + return ( + action(actionValue)} + > + + {imageSrc && ( + + )} + {selected && ( + + )} + + {labelComponent} + + ); +}; + +ThemeTile.propTypes = { + action: PropTypes.func, + actionValue: PropTypes.string, + imageSrc: PropTypes.oneOfType([ + PropTypes.number, + PropTypes.object, + ]).isRequired, + isLandscape: PropTypes.bool.isRequired, + isTablet: PropTypes.bool.isRequired, + label: PropTypes.node.isRequired, + selected: PropTypes.bool, + theme: PropTypes.object.isRequired, +}; + +ThemeTile.defaultProps = { + action: () => true, +}; + +const getStyleSheet = makeStyleSheetFromTheme((theme) => { + return { + container: { + flexDirection: 'column', + padding: tilePadding, + marginTop: 8, + }, + imageWrapper: { + position: 'relative', + alignItems: 'flex-start', + marginBottom: 12, + }, + thumbnail: { + resizeMode: 'stretch', + }, + selectedThumbnail: { + opacity: 0.5, + }, + check: { + position: 'absolute', + right: 10, + bottom: 10, + }, + label: { + color: theme.centerChannelColor, + fontSize: 15, + }, + }; +}); + +export default ThemeTile; diff --git a/assets/base/images/themes/check.png b/assets/base/images/themes/check.png new file mode 100644 index 0000000000000000000000000000000000000000..7d389d2f60fde903c536fa29be49c72afcb8acb1 GIT binary patch literal 571 zcmV-B0>u4^P)M8mar?r6yK2Has@q=cw??Ps(rZ0+=!RlJ_>M8mVGY(sf}4)F z(X@Si_mz}6V*4-ZwD?<9VGe7s7JI^+xX+668*`%&ZOQQ=+uwh`7jOo^>@X7mX$gn(m z@YSTAtG-vvBTvAFf!UW{X-X9Mq%8dLcR{_Xz#$|fG9Ct&9lohp6Rx$Qc&;J)!`5_9%Y3!aPp}J-@-@{{4dGNqvt;b^q&rjzfAhzp{ydz!WQ3{TG7@1LVC3Cjiw3R>f-_+nCeg<1 z{LMy7PHdvJNvX&cyIRGyk`_CZZMHYaQhVd>7hxtT*XRj>4F^2|WjkuaL6gD(xrS5W zu3XC;8NOw1irMu27UT(%5g8BRJH}!+ede)cHp&Ww?_nQX{sCGz_r1aMCxQR~002ov JPDHLkV1nv$5)uFa literal 0 HcmV?d00001 diff --git a/assets/base/images/themes/check@2x.png b/assets/base/images/themes/check@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0ca7fb713aa76845bf844a04fc42d4c701bbbfb0 GIT binary patch literal 937 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBgK_U~~-d32_B-|5FU!eEIw9&p)6s zA_e!aJpFm~=})7k$B*CrPFwWKZ}M~Lk_TB!URAGq+qmg%&(8O~yWY!}Jy5NBC|Y>m zy!Em7#AgPLkKTUy<3Hv3&4HgSuX;oK3A)L`2Opk z58wWTOn-ju+0Pr#f5yyt5kL23()^dH3t#CqJkoD?RJHDna^=Iijc*$^y;Z4ts9ych zrsGNf?)L|8e!KYihepjq$L^=jy-!{Ho_h2@^PKR^YvMD_num8@{kr?=*ZtSO9=!SG zJL#EL?IZ2FM>_S7K7IfD8Hj%T{qp1Q*PnmC{rvm=*WVw%|NZ>^59rz7fBxy#KMJ4m z;>5u>mw=GK))xBiP*0a}c-Fx%?=f8jV>}6g7L;Rnoi(^Pd z+|p@J%N`pDxS4xKn|B_rIL>D*I(;S(-2cyLrv7@Z(Aujq^Y7f>wN16w__6Y8;f;?@ z=Io0&lRmjndy`K@w;Gp*hRUMsc8-M+d*Kiw?->VV{e=Ykm_s<>^#%}d}_X|Jm;e+cW$CVtv|WVzF%S&kK(`Q_!h7r7N_rL2^`Cg0re zpW0`2bLE8e7uq(~T=U~j+c` zpZ>eJ=M`RRU7zlf>`_;Exmx)A3+oSWx4*b@vg-IMN%QRwe;0nd(0_HAcK5Mswm%Bv zM7qV(AD&vo_-BuT-HwR3A0^4(7iFyYu(Cos`TL}d6&1fl0-l}|z8Ju|WaW4I$J$KpVHL_CP&TtQVuyDt(8==j2U;dGPBkRulZEC%& hh~VjKb$(%w`OP(V?u`(YUkywy44$rjF6*2UngHpc67c{4 literal 0 HcmV?d00001 diff --git a/assets/base/images/themes/check@3x.png b/assets/base/images/themes/check@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..8b9fe1cc1ad332c3579841e7fcad50bc64ce3f41 GIT binary patch literal 1246 zcmchW`7_%I0L8zND%-=T(Wc_4o7Os3R-J8WWDpwX>Y!zV(vrGDRcV_tv{=`=iW0iC zc1s#pUF#}!q%>J^)UgtwZAg&YiX_(l6Z>Y~d-M7A&Ae?JLULJmkLp=C@r5Z<5!_p*D*#iQ*>OHsi1Fw@R?4k-^Pw=Hu+4;0p zG=AgnO>sf*jv0>e+ZfNU{2PVw4@V?{Vrf0I!YeuJse~=wu2i%qtsLSa^1sxKaIG`f zh-AU(cv{c@EvnTIb#G}yT-whmALOw3l8Pa&QR-?+GrM}2+dC)hpBE86 z39>r2TPcF<&Yg~F!MkZ;Ue8WkBdcph*gYdG?A=jMq#LHL)_vgBjq#eMWz^#h4tN$8y?{03;w;Eem%2{yEp;ju~GjC%+8M`g`=M?5;bNVoznX(#b!{&u5Vd`8(pr~}o-w-hjif?pFNtk3Bqkyf2n5FnU$t8>u*vnz zZvjtG?rN`QpPVK~R^CY8-zVAZ@1iHds;}l!PH8x84u+0z{W9tJszHo20mEX9mBN3* zFC1YI9=4pgHk({YWG|cExg8{h`>RjqOO?LdOv-1Mt+E0w6jG81>u8j{FY)FNM|(U= zQMc3+8>%uj!^XtL_Q*(u2+vJEv=cgtI%PBGwRSN&ETmRn^;&h6JdW32mQyH^n}W~I z?8)N_kgt#N@zo!RvsPGwCWtfGA_}sIfqNUDwYvi1eEuDx9R)u>UTLcUEXQ*LTo)*E znCCXTj{v$$=K$#VJvJ2rO->ppd?7#S~5hSSZIAuQ>BKIm#ooi za)J2zQqMAke5dB0}&=Sh50+)3$j)-Lzzw_5pNer6bewnN4fExnkOt|`U`o9#9ysZEL literal 0 HcmV?d00001 diff --git a/assets/base/images/themes/mattermost.png b/assets/base/images/themes/mattermost.png new file mode 100644 index 0000000000000000000000000000000000000000..f2c8a59299666390633ddb192697fed78d70c314 GIT binary patch literal 994 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 PImGg;wOQ2}*Ps6Z9;>lV literal 0 HcmV?d00001 diff --git a/assets/base/images/themes/mattermost_dark.png b/assets/base/images/themes/mattermost_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..24779997aa5ff2b1cb7e59f650502e6cfc33e574 GIT binary patch literal 910 zcmV;919AL`P)=n> zW6!=!S!b!Rw(aik|Ns9>RbzutR;^1+W!%WON=jDD#$DywA1^<1cT=&eV!^p)Jyc+Y z%fX`h=cNDZpY`KUTxnKga9CtKTWLH>Sw&J{AS*qH9WT@qCg>0&71BeP0000Q zbW%=J05qxU`Tqa^^Vzm*95L7a{F@qt{_;+&{cgG8oBsd+0#`{yK~#7F%+Ljr#4rp* z(GE#rX1@O=7qvJ%A-{s4?O%e>bi=f0DPD=~xSo&Sf-s^r@QUIj#kVY{b?~Z+5~7Mo z$wIChnP5bU7IOVD#ULkT3%N)EgrsmGCx8|yT^Re&W%IV{`>vI{;Xbn9OyM}qi%cU6 z4~A^s4R1QRyIXg@aGV$WN_1h$<{xwG@z}2BOP& zhB7l_IJy6wHeP1>wlq;^MCCr!wg2RU!J~XBgwUBHgwWN7gd`-PJs}ATSFwRdJ#gnx zBtm){dK(fJo3N%S5;}^6^+vPVsLQQZyVL!hI_;Lcq1PV_`aQX2QL^c@;xz+Ce zUTt|pf0U~)w=71zXTqisHsx054}=|g!$1fJa!cPi;1eQ889q~34^0V4NPkE|&fAP9 z>KZFw(d$cLR)mDuQP$5C)dwI`N_8IlAPG6sPH*#j(c945&^eHh-iF?W z-ex+R&u3F)Z!=runjw#Rb0M5NI0q8qMcE-!=xsBFdb%At4Eu ztM%q{tyfD3!qw($tsn@u-w!g+Y|cLAoMT) zDL)LVzBOSratm!#wVqiDE*%vZ&n)diSHf^-OSt!43H|*C!Z=COBvz={W`s$WD^VEr zw4?moJth^xRLMCgX3EvknJS@vwYfezRgJQK#lAT@QOy+nQSTPNn-+dYGW@P?_?_|a ky9?rXXvFVwiQg&o4kLWI(XIxtivR!s07*qoM6N<$g39KW#{d8T literal 0 HcmV?d00001 diff --git a/assets/base/images/themes/mattermost_dark@2x.png b/assets/base/images/themes/mattermost_dark@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..13f1cd66847ed14e4fa40b2e47806191d552d3c1 GIT binary patch literal 1976 zcmYLKc~sKr8m4jqmm@A^*KNSvTo92mM?rpKfCS=#8o8w6hTaCvh0$F5nT?e=PK(-6 zGfL9}mmE#8MbtY^X|@nu%v_qXMQ2jeq%^sBW;*wL>+^o!`<&-_|9O96&`G*lCRz{( zM3+J)20<7I^j?_ zItmxyidRiK3Qu>%(a|{iUMADtgJF&FL!bduXPhdy`N41}dr=o{hiww7RNPDl-CE z^)yBYmFgdNII>q1KQVkD;mFt%Sr9X}hQ{dj_h)prN4_2p=xmE*(`zq8_S|4QdJ@i^ zjp*-5pr&RN4fa*dKfkP;ORTBByfG*E`abDG4F(AEp+^Qqr-sIH!`W$MW?Wbt*FP-Y zo65oxgV8<=YIuUXZxFzUN=0JCI~=AAtWgf%cNp(_3%9zVBf_dGi^>S12SfD1(f6Of zZYY(X=bv};=`h5F*BdLXhx84_8%syE)CKFa3EMEs_f2E>oZDE9nD9)rgFw_@Qiy~Q z-j;cpdO3iG7tZuI-4u((Q_85hHL|wjS&-ruZT6;BVqTAj>y%h2GK#B`oa)Gpj~7b! z?>|L%E`{9WHy zF3y3!HyiiPrZ0jYkbMh!0I8cF!u$2Xy|}+>R}7-~Y7r%t>RZkTyXwv^RpmO?f?_M! zdlnsl$Il59g z_|7gT3rM40&265cjygAtKCNk$wa$;jI0LS5^@mp5?Q`dOqjhWbO~^ruVl=$5@ls!m z@yY3a#5;cR!bi?L^DZ*p5F2>rDzc>&=UI4KZX6{2R%gGUtCNXTCEAKyi!c+KaXE z+sWc+VVC^QhlhH9cr0s6maLxH%*^m|WQ*{WH`H!IpvfJ zT?lQ|jVmpkzR#tEe^Deq8fxmvI%1q{`gG#{*E|spdeWj;WEe^ar=^UBf}@=SaL^aN z!@Dfn?)tH|I@!1o`aHQ54gC$_^wF1G1CQz56m5NQN=`jZ9c>It2}{xI8{8H!f@mgu z^S|s2`&N;K(%Q9Np>%{bETC6gD-g8Z!e(4n7X1x$GiY%2wSEQ-g&Yij&)m<=2 z-UjN$qQA?I6Jhzc{H{v;LlNLZ#6dg#bg7Z_MpL7U-{sFsBM>AA2cW8L*VI~6rl?RS zaLV%W&K2Rn>A>efvt}zT8hUV0W3P|wCxNZ3bqO!=s)&182}Bo*~Iyk%`wFtFVz9WnP&8`ier}RRa>rEU9*&&cRQj!WAA;b z5q`ntnQaS+vD8`*&a(7v^P^xv)4uk?9Bms%IFM8!H1x*iaM-FR*UfCn zPQs?^$-f2^1l?6r@I%dP`^EU;1!i}=Q*sYMacM1FYA!L>WrEwlO^dJe%&~JXuf8i_ z<)*JJjOE7`-;=g&8gn1kkb9;{J%sU`qtpKg%SEh@>DC$%j3f{vFOptKt&hd`iaY$1 zl-J#$tn%7oV(5`ad?U^P?Fq`rR>1G+T9-#1$#5D%IdMfEJ(~W@614y`Z*sf#Q{Kz> zF($ojX@l|xKbMd%+Y`G5McUfF6T1G>k`bfqU(9Z{bqv0^q~YS;b@TauTO-A7nLD+L z?LBAgNA~B(q>fD7x$JrbSANCYCgP)Lijq`yF5X1VDy-GE(>(irJ4{14*;iqnJ%&7p z|8X`g_9jVV$l#3fimkydb}z}ce^;IIspoO-a^-7_18R71pvO;U5Rkl9Y6ss|eDVSbF5vY*#jxuGrTVZOXL4KrQD+EhX zWYSVYR0p%AL|AUU-r|xqzKx>54p@BpQe(ZYg_S(w*~0L9>ZeCS4Dt^bX+Np9ULQGH zea(~tIU*4ih?DOOXB1aw-K;2FesrP;I8^*U%^7q5 literal 0 HcmV?d00001 diff --git a/assets/base/images/themes/mattermost_dark@3x.png b/assets/base/images/themes/mattermost_dark@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..efc9f52179ef2a67b1660c169ad052e8a08bc0ab GIT binary patch literal 3375 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 literal 0 HcmV?d00001 diff --git a/assets/base/images/themes/organization.png b/assets/base/images/themes/organization.png new file mode 100644 index 0000000000000000000000000000000000000000..9f0e230cb232089b7367ee7e981bb70937e0ca47 GIT binary patch literal 996 zcmVch_cw& z*xA|H<>lqr*x2Re<=5BO>FMb?fUY5Os3LNyD0QkScB&gww6@9+Bh`u}QbAaSSv|NmTR}7k;kbjd8vyhGW4{7N0l+&dBb>aO{_{5|HY6D%X=%R zGNw3hnA;oXs$|s`6W)etUr64sthPdO?i4a)I&FU25QZ>>Aq@FXZ2o^euF2ub43TY+ zZLZ%ChDVpc&=MFPBHxb=x>_fpG9ygZbbzXhOza~OeVmANl_+x(IzZJ$vdxk3wV|)8 zP?;0b0jgXk2mXfqUzvZWU>;u55QfNyFvQ+w|L&T->%EP8?6)E?w0>p&oq}n@*ARyM z_lNFxu=cp$WB*A*Y}%1+%t5w6wn1`$A+im!4YJKF$g*I@IokwpCj!pdCewzQMRI^4 z*H^ah6eI^2BHJL_AlqPX^VQCo>?RDvV3>93uCRAYV8SdglcDJ?5)!R|0|(y!b!abh z0WPsDjO70bKFwlVK772lxfUVsZFq0PgiN>)ljLkBVnKsYBo`xS5Kb=>PWcQG-y!{q z&9lwz6Y^}svkenEC1)igmBT0WMrS@R8J}t6u?fw*$N?$l2AR<5A_t|=4wq16IWU>R zC6pdY=;aAvoLZa4fQpSym@fa40=gd7EeCsy{U@}5$pPo5Y(|w=7$IJ@2?m}BcFWim zd;M6shy4`nuGeqTw`q|#lF_%ikvHR!w+oUtG?KPl4uj<~m_j2`rqHKg3Oxe!%Y)-~ S5c=W(0000$pXc*={zCch)6_830D(Z7 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 a4I^j$(N&y3swIIR1<1*sXjelBO#UAj%4EC% literal 0 HcmV?d00001 diff --git a/assets/base/images/themes/windows_dark@3x.png b/assets/base/images/themes/windows_dark@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..043844de9ca2be00fd75b3bb7c67b20da21316f7 GIT binary patch literal 3354 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 NSeV(GmKl4-{Rd}*ae@E< literal 0 HcmV?d00001