From 9d17ed74074e3d94ca2b6d957941968b765b79fa Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Sat, 14 Oct 2017 14:33:55 -0600 Subject: [PATCH 001/126] CSS for presence member avatar Signed-off-by: Travis Ralston --- src/skins/vector/css/_components.scss | 1 + .../views/avatars/_MemberPresenceAvatar.scss | 43 +++++++++++++++++++ src/skins/vector/css/themes/_base.scss | 5 +++ 3 files changed, 49 insertions(+) create mode 100644 src/skins/vector/css/matrix-react-sdk/views/avatars/_MemberPresenceAvatar.scss diff --git a/src/skins/vector/css/_components.scss b/src/skins/vector/css/_components.scss index 4948ac8520..809c6384ca 100644 --- a/src/skins/vector/css/_components.scss +++ b/src/skins/vector/css/_components.scss @@ -15,6 +15,7 @@ @import "./matrix-react-sdk/structures/_UserSettings.scss"; @import "./matrix-react-sdk/structures/login/_Login.scss"; @import "./matrix-react-sdk/views/avatars/_BaseAvatar.scss"; +@import "./matrix-react-sdk/views/avatars/_MemberPresenceAvatar.scss"; @import "./matrix-react-sdk/views/dialogs/_BugReportDialog.scss"; @import "./matrix-react-sdk/views/dialogs/_ChatCreateOrReuseChatDialog.scss"; @import "./matrix-react-sdk/views/dialogs/_ChatInviteDialog.scss"; diff --git a/src/skins/vector/css/matrix-react-sdk/views/avatars/_MemberPresenceAvatar.scss b/src/skins/vector/css/matrix-react-sdk/views/avatars/_MemberPresenceAvatar.scss new file mode 100644 index 0000000000..a15f8eaa65 --- /dev/null +++ b/src/skins/vector/css/matrix-react-sdk/views/avatars/_MemberPresenceAvatar.scss @@ -0,0 +1,43 @@ +/* +Copyright 2017 Travis Ralston + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +.mx_MemberPresenceAvatar { + display: inline-block; + position: relative; +} + +.mx_MemberPresenceAvatar_status { + display: block; + width: 10px; + height: 10px; + border-radius: 10px; + + position: absolute; + bottom: -2px; + right: -3px; +} + +.mx_MemberPresenceAvatar_status_online { + background-color: $presence-online; +} + +.mx_MemberPresenceAvatar_status_unavailable { + background-color: $presence-unavailable; +} + +.mx_MemberPresenceAvatar_status_offline { + background-color: $presence-offline; +} diff --git a/src/skins/vector/css/themes/_base.scss b/src/skins/vector/css/themes/_base.scss index a13c517bd0..44c5440a5f 100644 --- a/src/skins/vector/css/themes/_base.scss +++ b/src/skins/vector/css/themes/_base.scss @@ -114,6 +114,11 @@ $e2e-verified-color: #76cfa5; // N.B. *NOT* the same as $accent-color $e2e-unverified-color: #e8bf37; $e2e-warning-color: #ba6363; +// presence +$presence-online: #60de00; +$presence-unavailable: #deb800; +$presence-offline: #b7b7b7; + /*** ImageView ***/ $lightbox-bg-color: #454545; $lightbox-fg-color: #ffffff; From 1ca041c59ce953ce0625885807c4b9fd1372b64c Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Sat, 14 Oct 2017 21:45:29 -0600 Subject: [PATCH 002/126] CSS for more positioning options on context menus Signed-off-by: Travis Ralston --- .../structures/_ContextualMenu.scss | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_ContextualMenu.scss b/src/skins/vector/css/matrix-react-sdk/structures/_ContextualMenu.scss index d3e73a9a15..a0191b92cf 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_ContextualMenu.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_ContextualMenu.scss @@ -94,6 +94,60 @@ limitations under the License. left: 1px; } +.mx_ContextualMenu.mx_ContextualMenu_top { + top: 8px; +} + +.mx_ContextualMenu_chevron_top { + position: absolute; + left: 0px; + top: -8px; + width: 0; + height: 0; + border-left: 8px solid transparent; + border-bottom: 8px solid $menu-border-color; + border-right: 8px solid transparent; +} + +.mx_ContextualMenu_chevron_top:after{ + content:''; + width: 0; + height: 0; + border-left: 7px solid transparent; + border-bottom: 7px solid $menu-bg-color; + border-right: 7px solid transparent; + position:absolute; + left: -7px; + top: 1px; +} + +.mx_ContextualMenu.mx_ContextualMenu_bottom { + bottom: 8px; +} + +.mx_ContextualMenu_chevron_bottom { + position: absolute; + left: 0px; + bottom: -8px; + width: 0; + height: 0; + border-left: 8px solid transparent; + border-top: 8px solid $menu-border-color; + border-right: 8px solid transparent; +} + +.mx_ContextualMenu_chevron_bottom:after{ + content:''; + width: 0; + height: 0; + border-left: 7px solid transparent; + border-top: 7px solid $menu-bg-color; + border-right: 7px solid transparent; + position:absolute; + left: -7px; + bottom: 1px; +} + .mx_ContextualMenu_field { padding: 3px 6px 3px 6px; cursor: pointer; From deb50b2d437f6158844e864e335674b6e0118f0e Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Sat, 14 Oct 2017 23:15:26 -0600 Subject: [PATCH 003/126] Add presence context menu and styling Signed-off-by: Travis Ralston --- .../context_menus/PresenceContextMenu.js | 100 ++++++++++++++++++ src/i18n/strings/en_EN.json | 2 + src/skins/vector/css/_components.scss | 1 + .../_PresenceContextMenuOption.scss | 42 ++++++++ 4 files changed, 145 insertions(+) create mode 100644 src/components/views/context_menus/PresenceContextMenu.js create mode 100644 src/skins/vector/css/vector-web/views/context_menus/_PresenceContextMenuOption.scss diff --git a/src/components/views/context_menus/PresenceContextMenu.js b/src/components/views/context_menus/PresenceContextMenu.js new file mode 100644 index 0000000000..46078726b1 --- /dev/null +++ b/src/components/views/context_menus/PresenceContextMenu.js @@ -0,0 +1,100 @@ +/* +Copyright 2017 Travis Ralston + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +import React from 'react'; +import { _t, _td } from 'matrix-react-sdk/lib/languageHandler'; +import sdk from 'matrix-react-sdk'; + +const STATUS_LABELS = { + "online": _td("Online"), + "unavailable": _td("Away"), + "offline": _td("Appear Offline"), +}; + +const PresenceContextMenuOption = React.createClass({ + displayName: 'PresenceContextMenuOption', + + propTypes: { + forStatus: React.PropTypes.string.isRequired, + isCurrent: React.PropTypes.bool, + onChange: React.PropTypes.func.isRequired, + }, + + onClick: function() { + this.props.onChange(this.props.forStatus); + }, + + render: function() { + const AccessibleButton = sdk.getComponent("elements.AccessibleButton"); + + const indicatorClasses = "mx_PresenceContextMenuOption_indicator " + + "mx_PresenceContextMenuOption_indicator_" + this.props.forStatus; + + let classNames = "mx_PresenceContextMenuOption"; + if (this.props.isCurrent) classNames += " mx_PresenceContextMenuOption_current"; + + return ( + +
+ { _t(STATUS_LABELS[this.props.forStatus]) } +
+ ); + }, +}); + +module.exports = React.createClass({ + displayName: 'PresenceContextMenu', + + propTypes: { + // "online", "unavailable", or "offline" + currentStatus: React.PropTypes.string.isRequired, + + // Called when the user wants to change their status. + // Args: (newStatus:string) + onChange: React.PropTypes.func.isRequired, + + // callback called when the menu is dismissed + onFinished: React.PropTypes.func, + }, + + getInitialState() { + return { + currentStatus: this.props.currentStatus, + }; + }, + + onChange: function(newStatus) { + this.props.onChange(newStatus); + this.setState({currentStatus: newStatus}); + }, + + render: function() { + const statusElements = []; + for (let status of Object.keys(STATUS_LABELS)) { + statusElements.push(( + + )); + } + + return ( +
+ { statusElements } +
+ ); + }, +}); diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 16d47d1020..fba305d832 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -72,6 +72,8 @@ "Loading bug report module": "Loading bug report module", "Low Priority": "Low Priority", "Members": "Members", + "Appear Offline": "Appear Offline", + "Away": "Away", "Mentions only": "Mentions only", "Messages containing my display name": "Messages containing my display name", "Messages containing keywords": "Messages containing keywords", diff --git a/src/skins/vector/css/_components.scss b/src/skins/vector/css/_components.scss index 76ac3945cb..748b33f873 100644 --- a/src/skins/vector/css/_components.scss +++ b/src/skins/vector/css/_components.scss @@ -80,6 +80,7 @@ @import "./vector-web/structures/_RoomSubList.scss"; @import "./vector-web/structures/_ViewSource.scss"; @import "./vector-web/views/context_menus/_MessageContextMenu.scss"; +@import "vector-web/views/context_menus/_PresenceContextMenuOption.scss"; @import "./vector-web/views/context_menus/_RoomTileContextMenu.scss"; @import "./vector-web/views/dialogs/_ChangelogDialog.scss"; @import "./vector-web/views/dialogs/_DevtoolsDialog.scss"; diff --git a/src/skins/vector/css/vector-web/views/context_menus/_PresenceContextMenuOption.scss b/src/skins/vector/css/vector-web/views/context_menus/_PresenceContextMenuOption.scss new file mode 100644 index 0000000000..bfe81125e0 --- /dev/null +++ b/src/skins/vector/css/vector-web/views/context_menus/_PresenceContextMenuOption.scss @@ -0,0 +1,42 @@ +/* +Copyright 2017 Travis Ralston + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_PresenceContextMenuOption_indicator { + width: 10px; + height: 10px; + border-radius: 10px; + display: inline-block; + margin-right: 5px; +} + +.mx_PresenceContextMenuOption_indicator.mx_PresenceContextMenuOption_indicator_online { + background-color: $presence-online; +} + +.mx_PresenceContextMenuOption_indicator.mx_PresenceContextMenuOption_indicator_unavailable { + background-color: $presence-unavailable; +} + +.mx_PresenceContextMenuOption_indicator.mx_PresenceContextMenuOption_indicator_offline { + background-color: $presence-offline; +} + +.mx_PresenceContextMenuOption { + padding: 2px; +} + +.mx_PresenceContextMenuOption.mx_PresenceContextMenuOption_current { + font-weight: 700; +} From ef5fc7347ab7d206e25020829564dc97764e8590 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Sun, 15 Oct 2017 20:20:43 -0600 Subject: [PATCH 004/126] Don't update presence status if the user is clicks twice Signed-off-by: Travis Ralston --- src/components/views/context_menus/PresenceContextMenu.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/views/context_menus/PresenceContextMenu.js b/src/components/views/context_menus/PresenceContextMenu.js index 46078726b1..3a3dc2fa47 100644 --- a/src/components/views/context_menus/PresenceContextMenu.js +++ b/src/components/views/context_menus/PresenceContextMenu.js @@ -34,6 +34,7 @@ const PresenceContextMenuOption = React.createClass({ }, onClick: function() { + if (this.isCurrent) return; this.props.onChange(this.props.forStatus); }, From 528a856d54fb139c9bb30971a7a8d3a174900d09 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Fri, 20 Oct 2017 09:46:45 +0100 Subject: [PATCH 005/126] Add class to identify non-scalar widget instances --- .../vector/css/matrix-react-sdk/views/rooms/_AppsDrawer.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_AppsDrawer.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_AppsDrawer.scss index 14b8cb4572..20dfa61cea 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_AppsDrawer.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_AppsDrawer.scss @@ -58,6 +58,10 @@ limitations under the License. // display: inline-block; } +.mx_AppTile_non_native { + border-color: #f5d24d; +} + .mx_AppTileFullWidth { max-width: 960px; width: 100%; From 6fa2d356300767c17d2bd26968b8cad4c6089455 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Fri, 20 Oct 2017 18:41:39 +0100 Subject: [PATCH 006/126] support concept of default theme --- config.sample.json | 1 + src/vector/index.html | 3 +-- src/vector/index.js | 17 +++++++++++++++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/config.sample.json b/config.sample.json index a4477ea1ed..a63783348b 100644 --- a/config.sample.json +++ b/config.sample.json @@ -7,6 +7,7 @@ "bug_report_endpoint_url": "https://riot.im/bugreports/submit", "enableLabs": true, "default_federate": true, + "default_theme": "light", "roomDirectory": { "servers": [ "matrix.org" diff --git a/src/vector/index.html b/src/vector/index.html index 49c2979ed1..864377eea4 100644 --- a/src/vector/index.html +++ b/src/vector/index.html @@ -25,9 +25,8 @@ var match = file.match(/^bundles\/.*?\/theme-(.*)\.css$/); if (match) { var title = match[1].charAt(0).toUpperCase() + match[1].slice(1); - var light = match[1] == 'light'; %> - <% } else { %> diff --git a/src/vector/index.js b/src/vector/index.js index a08397ce5a..f775d1b3cd 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -281,6 +281,23 @@ async function loadApp() { configError = e; } + // as quickly as we possibly can, set a default theme... + const styleElements = Object.create(null); + let a; + for (let i = 0; (a = document.getElementsByTagName("link")[i]); i++) { + const href = a.getAttribute("href"); + // shouldn't we be using the 'title' tag rather than the href? + const match = href.match(/^bundles\/.*\/theme-(.*)\.css$/); + if (match) { + if (match[1] === (configJson.default_theme || 'light')) { + // remove the alternative flag off the stylesheet + a.setAttribute("rel", "stylesheet"); + } + } + } + // XXX: do we also need to call MatrixChat.setTheme here to do any random fixups (e.g. svg tint) + + if (window.localStorage && window.localStorage.getItem('mx_accepts_unsupported_browser')) { console.log('User has previously accepted risks in using an unsupported browser'); validBrowser = true; From cd31e6532b14adcf18ddecee1fa15ddde1d2cb68 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Fri, 20 Oct 2017 18:43:06 +0100 Subject: [PATCH 007/126] initial wip theme --- src/skins/vector/css/_common.scss | 14 +- src/skins/vector/css/themes/_base.scss | 6 + src/skins/vector/css/themes/_status.scss | 155 +++++++++++++++++++++++ src/skins/vector/css/themes/status.scss | 3 + webpack.config.js | 1 + 5 files changed, 170 insertions(+), 9 deletions(-) create mode 100644 src/skins/vector/css/themes/_status.scss create mode 100644 src/skins/vector/css/themes/status.scss diff --git a/src/skins/vector/css/_common.scss b/src/skins/vector/css/_common.scss index bf742cd0c5..0802c1cab2 100644 --- a/src/skins/vector/css/_common.scss +++ b/src/skins/vector/css/_common.scss @@ -23,12 +23,7 @@ html { } body { - /* Open Sans lacks combining diacritics, so these will fall through - to the next font. Helevetica's diacritics however do not combine - nicely with Open Sans (on OSX, at least) and result in a huge - horizontal mess. Arial empirically gets it right, hence prioritising - Arial here. */ - font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + font-family: $font-family; font-size: 15px; background-color: $primary-bg-color; color: $primary-fg-color; @@ -73,7 +68,7 @@ input[type=text]:focus, input[type=password]:focus, textarea:focus { /* Required by Firefox */ textarea { - font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + font-family: $font-family; } /* Prevent ugly dotted highlight around selected elements in Firefox */ @@ -211,7 +206,7 @@ textarea { border: solid 1px $accent-color; font-weight: 600; font-size: 14px; - font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + font-family: $font-family; margin-left: 0px; margin-right: 8px; padding-left: 1.5em; @@ -304,7 +299,8 @@ textarea { } .changelog_text { - font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + // why on earth is this needed? and with the wrong namespacing? >:( + font-family: $font-family; } .mx_Beta { diff --git a/src/skins/vector/css/themes/_base.scss b/src/skins/vector/css/themes/_base.scss index a13c517bd0..a67d200158 100644 --- a/src/skins/vector/css/themes/_base.scss +++ b/src/skins/vector/css/themes/_base.scss @@ -1,3 +1,9 @@ +/* Open Sans lacks combining diacritics, so these will fall through + to the next font. Helevetica's diacritics however do not combine + nicely with Open Sans (on OSX, at least) and result in a huge + horizontal mess. Arial empirically gets it right, hence prioritising + Arial here. */ +$font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; // typical text (dark-on-white in light skin) $primary-fg-color: #454545; diff --git a/src/skins/vector/css/themes/_status.scss b/src/skins/vector/css/themes/_status.scss new file mode 100644 index 0000000000..b1d8b0ef2e --- /dev/null +++ b/src/skins/vector/css/themes/_status.scss @@ -0,0 +1,155 @@ +@font-face { + font-family:PostGrotesk-Medium; + src:url(../fonts/PostGrotesk-Medium.eot); + src:url(../fonts/PostGrotesk-Medium.eot?#iefix) format("embedded-opentype"),url(../fonts/PostGrotesk-Medium.woff) format("woff"),url(../fonts/PostGrotesk-Medium.svg#PostGrotesk-Medium) format("svg"); + font-weight: 400; + font-style: normal; +} + +@font-face { + font-family:PostGrotesk-Book; + src:url(../fonts/PostGrotesk-Book.eot); + src:url(../fonts/PostGrotesk-Book.eot?#iefix) format("embedded-opentype"),url(../fonts/PostGrotesk-Book.woff) format("woff"),url(../fonts/PostGrotesk-Book.svg#PostGrotesk-Book) format("svg"); + font-weight: 400; + font-style: normal; +} + +// We deliberately prioritise Arial over Helvetica here due to diacritic problems (see _base.scss) +// N.B. that the status.im website uses: +// font-family:PostGrotesk-Book,-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif; +// ...but can't be bothered to work out how the apple fonts & segoe interact, so keepingn it simple for now. + +$font-family: PostGrotesk-Book, Arial, Helvetica, Sans-Serif; + +// typical text (dark-on-white in light skin) +$primary-fg-color: #70808D; +$primary-bg-color: #EEF2F5; + +// ***** Status theme specifics ****** +$header-color: #49555F; +$header-font-family: PostGrotesk-Medium, Arial, Helvetica, Sans-Serif; + +h1,h2,h3,h4,h5 { + color: $header-color; + font-family: $header-font-family; + font-weight: 400 ! important; +} + +// used for dialog box text +$light-fg-color: #747474; + +// used for focusing form controls +$focus-bg-color: #dddddd; + +// button UI (white-on-green in light skin) +$accent-fg-color: #ffffff; +$accent-color: #76CFA6; + +$selection-fg-color: $primary-bg-color; + +$focus-brightness: 125%; + +// red warning colour +$warning-color: #ff0064; +$mention-user-pill-bg-color: #ff0064; +$other-user-pill-bg-color: rgba(0, 0, 0, 0.1); + +$group-alert-color: #774f7e; + +$preview-bar-bg-color: #f7f7f7; + +// left-panel style muted accent color +$secondary-accent-color: #eaf5f0; + +// used by RoomDirectory permissions +$plinth-bg-color: $secondary-accent-color; + +// used by RoomDropTarget +$droptarget-bg-color: rgba(255,255,255,0.5); + +// used by AddressSelector +$selected-color: #eaf5f0; + +// selected for hoverover & selected event tiles +$event-selected-color: #f7f7f7; + +// used for the hairline dividers in RoomView +$primary-hairline-color: #e5e5e5; + +// used for the border of input text fields +$input-border-color: #f0f0f0; + +// apart from login forms, which have stronger border +$strong-input-border-color: #c7c7c7; + +// used for UserSettings EditableText +$input-underline-color: rgba(151, 151, 151, 0.5); +$input-fg-color: rgba(74, 74, 74, 0.9); + +// context menus +$menu-border-color: rgba(187, 187, 187, 0.5); +$menu-bg-color: #f6f6f6; + +$avatar-initial-color: #ffffff; + +$h3-color: #3d3b39; + +$dialog-background-bg-color: #e9e9e9; +$lightbox-background-bg-color: #000; + +$greyed-fg-color: #888; + +$neutral-badge-color: #dbdbdb; + +$preview-widget-bar-color: #ddd; +$preview-widget-fg-color: $greyed-fg-color; + +$blockquote-bar-color: #ddd; +$blockquote-fg-color: #777; + +$settings-grey-fg-color: #a2a2a2; + +$voip-decline-color: #f48080; +$voip-accept-color: #80f480; + +$rte-bg-color: #e9e9e9; +$rte-code-bg-color: rgba(0, 0, 0, 0.04); +$rte-room-pill-color: #aaa; + +// ******************** + +$roomtile-name-color: rgba(69, 69, 69, 0.8); +$roomtile-selected-bg-color: rgba(255, 255, 255, 0.8); +$roomtile-focused-bg-color: rgba(255, 255, 255, 0.9); + +$roomsublist-label-fg-color: $h3-color; +$roomsublist-label-bg-color: #d3efe1; + +// ******************** + +// event tile lifecycle +$event-encrypting-color: #abddbc; +$event-sending-color: #ddd; +$event-notsent-color: #f44; + +// event redaction +$event-redacted-img: url('../../img/redacted.jpg'); + +// event timestamp +$event-timestamp-color: #acacac; + +$edit-button-url: "../../img/icon_context_message.svg"; +$copy-button-url: "../../img/icon_copy_message.svg"; + +// e2e +$e2e-verified-color: #76cfa5; // N.B. *NOT* the same as $accent-color +$e2e-unverified-color: #e8bf37; +$e2e-warning-color: #ba6363; + +/*** ImageView ***/ +$lightbox-bg-color: #454545; +$lightbox-fg-color: #ffffff; +$lightbox-border-color: #ffffff; + +// unused? +$progressbar-color: #000; diff --git a/src/skins/vector/css/themes/status.scss b/src/skins/vector/css/themes/status.scss new file mode 100644 index 0000000000..391026b2b7 --- /dev/null +++ b/src/skins/vector/css/themes/status.scss @@ -0,0 +1,3 @@ +@import "_base.scss"; +@import "_status.scss"; +@import "../_components.scss"; diff --git a/webpack.config.js b/webpack.config.js index 5d4fef72a9..1e134495ce 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -20,6 +20,7 @@ module.exports = { // CSS themes "theme-light": "./src/skins/vector/css/themes/light.scss", "theme-dark": "./src/skins/vector/css/themes/dark.scss", + "theme-status": "./src/skins/vector/css/themes/status.scss", }, module: { preLoaders: [ From b28192cc0b63f24b7a00033d53b1725ae9edb64b Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Sun, 22 Oct 2017 15:21:58 +0100 Subject: [PATCH 008/126] fix (C) --- src/header | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/header b/src/header index 060709b82e..6d367b04e8 100644 --- a/src/header +++ b/src/header @@ -1,5 +1,5 @@ /* -Copyright 2015, 2016 OpenMarket Ltd +Copyright 2017 New Vector Ltd Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. From 01b3d6128c685765f727bcb89d30d501fb770515 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Sun, 22 Oct 2017 17:03:39 +0100 Subject: [PATCH 009/126] move status theme into a dedicated dir, and make fonts work --- scripts/copy-res.js | 2 +- src/skins/vector/css/themes/status.scss | 3 - .../themes/status/css/_StatusLogin.scss | 291 ++++++++++++++++++ .../vector/themes/status/css/_status.scss | 155 ++++++++++ .../vector/themes/status/css/status.scss | 4 + src/skins/vector/themes/status/fonts/README | 1 + webpack.config.js | 2 +- 7 files changed, 453 insertions(+), 5 deletions(-) delete mode 100644 src/skins/vector/css/themes/status.scss create mode 100644 src/skins/vector/themes/status/css/_StatusLogin.scss create mode 100644 src/skins/vector/themes/status/css/_status.scss create mode 100644 src/skins/vector/themes/status/css/status.scss create mode 100644 src/skins/vector/themes/status/fonts/README diff --git a/scripts/copy-res.js b/scripts/copy-res.js index b461d030fd..c4b80709ae 100755 --- a/scripts/copy-res.js +++ b/scripts/copy-res.js @@ -45,7 +45,7 @@ const COPY_LIST = [ ["res/home/**", "webapp/home"], ["res/{media,vector-icons}/**", "webapp"], ["res/flags/*", "webapp/flags/"], - ["src/skins/vector/{fonts,img}/**", "webapp"], + ["src/skins/vector/{fonts,img,themes}/**", "webapp"], ["node_modules/emojione/assets/svg/*", "webapp/emojione/svg/"], ["node_modules/emojione/assets/png/*", "webapp/emojione/png/"], ["./config.json", "webapp", { directwatch: 1 }], diff --git a/src/skins/vector/css/themes/status.scss b/src/skins/vector/css/themes/status.scss deleted file mode 100644 index 391026b2b7..0000000000 --- a/src/skins/vector/css/themes/status.scss +++ /dev/null @@ -1,3 +0,0 @@ -@import "_base.scss"; -@import "_status.scss"; -@import "../_components.scss"; diff --git a/src/skins/vector/themes/status/css/_StatusLogin.scss b/src/skins/vector/themes/status/css/_StatusLogin.scss new file mode 100644 index 0000000000..38c8a5ef5c --- /dev/null +++ b/src/skins/vector/themes/status/css/_StatusLogin.scss @@ -0,0 +1,291 @@ +/* +Copyright 2017 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// overrides for mx_Login* specific to Status. +// Ideally this would be all Status prefixes for a Status specific version of the component +// but given we're not doing Status as a dedicated 'skin' yet... +.mx_Login { + width: 100%; + height: 100%; + + display: flex; + align-items: center; + justify-content: center; + + overflow: auto; +} + +.mx_Login h2 { + color: $primary-fg-color; + font-weight: 300; + margin-top: 32px; + margin-bottom: 20px; +} + +.mx_Login_box { + width: 300px; + min-height: 450px; + padding-top: 50px; + padding-bottom: 50px; + margin: auto; +} + +.mx_Login_logo { + text-align: center; + height: 150px; + margin-bottom: 45px; +} + +.mx_Login_logo img { + max-height: 100% +} + +.mx_Login_support { + text-align: center; + font-size: 13px; + margin-top: 0px; + opacity: 0.7; +} + +.mx_Login_field { + width: 280px; + border-radius: 3px; + border: 1px solid $strong-input-border-color; + font-weight: 300; + font-size: 13px; + padding: 9px; + margin-bottom: 14px; +} + +.mx_Login_field_disabled { + opacity: 0.3; +} + +.mx_Login_fieldLabel { + margin-top: -10px; + margin-left: 8px; + margin-bottom: 14px; + font-size: 13px; + opacity: 0.8; +} + +.mx_Login_submit { + margin-top: 35px; + margin-bottom: 24px; + width: 100%; + border-radius: 40px; + height: 40px; + border: 0px; + background-color: $accent-color; + font-size: 15px; + color: $accent-fg-color; +} + +.mx_Login_submit:disabled { + opacity: 0.3; +} + +.mx_Login_label { + font-size: 13px; + opacity: 0.8; +} + +.mx_Login_checkbox, +.mx_Login_radio { + margin-right: 10px; +} + +.mx_Login_create { + display: block; + text-align: center; + width: 100%; + font-size: 13px; + opacity: 0.8; +} + +.mx_Login_create:link { + color: $primary-fg-color; +} + +.mx_Login_links { + display: block; + text-align: center; + margin-top: 15px; + width: 100%; + font-size: 13px; + opacity: 0.8; +} + +.mx_Login_links a:link { + color: $primary-fg-color; +} + +.mx_Login_prompt { + padding-top: 15px; + padding-bottom: 15px; + font-size: 13px; +} + +.mx_Login_forgot { + font-size: 13px; + opacity: 0.8; +} + +.mx_Login_forgot:link { + color: $primary-fg-color; +} + +.mx_Login_loader { + display: inline; + position: relative; + top: 2px; + left: 8px; +} + +.mx_Login_loader .mx_Spinner { + display: inline; +} + +.mx_Login_loader .mx_Spinner img { + width: 16px; + height: 16px; +} + +.mx_Login_error { + color: $warning-color; + font-weight: bold; + text-align: center; +/* + height: 24px; +*/ + margin-top: 12px; + margin-bottom: 12px; +} + +.mx_Login_type_container { + display: flex; + margin-bottom: 14px; +} + +.mx_Login_type_label { + flex-grow: 1; + line-height: 35px; +} + +.mx_Login_type_dropdown { + display: inline-block; + min-width: 170px; + align-self: flex-end; + flex: 1 1 auto; +} + +.mx_Login_field_group { + display: flex; +} + +.mx_Login_field_prefix { + height: 34px; + padding: 0px 5px; + line-height: 33px; + + background-color: #eee; + border: 1px solid #c7c7c7; + border-right: 0px; + border-radius: 3px 0px 0px 3px; + + text-align: center; +} + +.mx_Login_field_suffix { + height: 34px; + padding: 0px 5px; + line-height: 33px; + + background-color: #eee; + border: 1px solid #c7c7c7; + border-left: 0px; + border-radius: 0px 3px 3px 0px; + + text-align: center; + flex-grow: 1; +} + +.mx_Login_username { + height: 16px; + flex-shrink: 1; + min-width: 0px; + border-radius: 3px; +} + +.mx_Login_phoneNumberField { + height: 16px; +} + +.mx_Login_field_has_prefix { + border-top-left-radius: 0px; + border-bottom-left-radius: 0px; +} + +.mx_Login_field_has_suffix { + border-top-right-radius: 0px; + border-bottom-right-radius: 0px; +} + +.mx_Login_phoneSection { + display:flex; +} + +.mx_Login_phoneCountry { + margin-bottom: 14px; + width: 150px; + + /* To override mx_Login_field_prefix */ + text-align: left; + padding: 0px; + background-color: $primary-bg-color; +} + +.mx_Login_field_prefix .mx_Dropdown_input { + /* To use prefix border instead of dropdown border */ + border: 0; +} + +.mx_Login_phoneCountry .mx_Dropdown_option { + /* + To match height of mx_Login_field + 33px + 2px border from mx_Dropdown_option = 35px + */ + height: 33px; + line-height: 33px; +} + +.mx_Login_phoneCountry .mx_Dropdown_option img { + margin: 3px; + vertical-align: top; +} + +.mx_Login_language { + margin-left: auto; + margin-right: auto; + min-width: 60%; +} + +.mx_Login_language_div { + display: flex; + margin-top: 12px; + margin-bottom: 12px; +} + diff --git a/src/skins/vector/themes/status/css/_status.scss b/src/skins/vector/themes/status/css/_status.scss new file mode 100644 index 0000000000..d2ccee0d27 --- /dev/null +++ b/src/skins/vector/themes/status/css/_status.scss @@ -0,0 +1,155 @@ +@font-face { + font-family:PostGrotesk-Medium; + src:url('https://status.im/fonts/PostGrotesk-Medium.eot'); + src:url('https://status.im/fonts/PostGrotesk-Medium.eot?#iefix') format("embedded-opentype"),url('https://status.im/fonts/PostGrotesk-Medium.woff') format("woff"),url('https://status.im/fonts/PostGrotesk-Medium.svg#PostGrotesk-Medium') format("svg"); + font-weight: 400; + font-style: normal; +} + +@font-face { + font-family:PostGrotesk-Book; + src:url('https://status.im/fonts/PostGrotesk-Book.eot'); + src:url('https://status.im/fonts/PostGrotesk-Book.eot?#iefix') format("embedded-opentype"),url('https://status.im/fonts/PostGrotesk-Book.woff') format("woff"),url('https://status.im/fonts/PostGrotesk-Book.svg#PostGrotesk-Book') format("svg"); + font-weight: 400; + font-style: normal; +} + +// We deliberately prioritise Arial over Helvetica here due to diacritic problems (see _base.scss) +// N.B. that the status.im website uses: +// font-family:PostGrotesk-Book,-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif; +// ...but can't be bothered to work out how the apple fonts & segoe interact, so keepingn it simple for now. + +$font-family: PostGrotesk-Book, Arial, Helvetica, Sans-Serif; + +// typical text (dark-on-white in light skin) +$primary-fg-color: #70808D; +$primary-bg-color: #EEF2F5; + +// ***** Status theme specifics ****** +$header-color: #49555F; +$header-font-family: PostGrotesk-Medium, Arial, Helvetica, Sans-Serif; + +h1,h2,h3,h4,h5 { + color: $header-color; + font-family: $header-font-family; + font-weight: 400 ! important; +} + +// used for dialog box text +$light-fg-color: #747474; + +// used for focusing form controls +$focus-bg-color: #dddddd; + +// button UI (white-on-green in light skin) +$accent-fg-color: #ffffff; +$accent-color: #76CFA6; + +$selection-fg-color: $primary-bg-color; + +$focus-brightness: 125%; + +// red warning colour +$warning-color: #ff0064; +$mention-user-pill-bg-color: #ff0064; +$other-user-pill-bg-color: rgba(0, 0, 0, 0.1); + +$group-alert-color: #774f7e; + +$preview-bar-bg-color: #f7f7f7; + +// left-panel style muted accent color +$secondary-accent-color: #eaf5f0; + +// used by RoomDirectory permissions +$plinth-bg-color: $secondary-accent-color; + +// used by RoomDropTarget +$droptarget-bg-color: rgba(255,255,255,0.5); + +// used by AddressSelector +$selected-color: #eaf5f0; + +// selected for hoverover & selected event tiles +$event-selected-color: #f7f7f7; + +// used for the hairline dividers in RoomView +$primary-hairline-color: #e5e5e5; + +// used for the border of input text fields +$input-border-color: #f0f0f0; + +// apart from login forms, which have stronger border +$strong-input-border-color: #c7c7c7; + +// used for UserSettings EditableText +$input-underline-color: rgba(151, 151, 151, 0.5); +$input-fg-color: rgba(74, 74, 74, 0.9); + +// context menus +$menu-border-color: rgba(187, 187, 187, 0.5); +$menu-bg-color: #f6f6f6; + +$avatar-initial-color: #ffffff; + +$h3-color: #3d3b39; + +$dialog-background-bg-color: #e9e9e9; +$lightbox-background-bg-color: #000; + +$greyed-fg-color: #888; + +$neutral-badge-color: #dbdbdb; + +$preview-widget-bar-color: #ddd; +$preview-widget-fg-color: $greyed-fg-color; + +$blockquote-bar-color: #ddd; +$blockquote-fg-color: #777; + +$settings-grey-fg-color: #a2a2a2; + +$voip-decline-color: #f48080; +$voip-accept-color: #80f480; + +$rte-bg-color: #e9e9e9; +$rte-code-bg-color: rgba(0, 0, 0, 0.04); +$rte-room-pill-color: #aaa; + +// ******************** + +$roomtile-name-color: rgba(69, 69, 69, 0.8); +$roomtile-selected-bg-color: rgba(255, 255, 255, 0.8); +$roomtile-focused-bg-color: rgba(255, 255, 255, 0.9); + +$roomsublist-label-fg-color: $h3-color; +$roomsublist-label-bg-color: #d3efe1; + +// ******************** + +// event tile lifecycle +$event-encrypting-color: #abddbc; +$event-sending-color: #ddd; +$event-notsent-color: #f44; + +// event redaction +$event-redacted-img: url('../../img/redacted.jpg'); + +// event timestamp +$event-timestamp-color: #acacac; + +$edit-button-url: "../../img/icon_context_message.svg"; +$copy-button-url: "../../img/icon_copy_message.svg"; + +// e2e +$e2e-verified-color: #76cfa5; // N.B. *NOT* the same as $accent-color +$e2e-unverified-color: #e8bf37; +$e2e-warning-color: #ba6363; + +/*** ImageView ***/ +$lightbox-bg-color: #454545; +$lightbox-fg-color: #ffffff; +$lightbox-border-color: #ffffff; + +// unused? +$progressbar-color: #000; diff --git a/src/skins/vector/themes/status/css/status.scss b/src/skins/vector/themes/status/css/status.scss new file mode 100644 index 0000000000..09f5c78f17 --- /dev/null +++ b/src/skins/vector/themes/status/css/status.scss @@ -0,0 +1,4 @@ +@import "../../../css/themes/_base.scss"; +@import "_status.scss"; +@import "../../../css/_components.scss"; +@import "_StatusLogin.scss"; diff --git a/src/skins/vector/themes/status/fonts/README b/src/skins/vector/themes/status/fonts/README new file mode 100644 index 0000000000..d7900145ed --- /dev/null +++ b/src/skins/vector/themes/status/fonts/README @@ -0,0 +1 @@ +We link out to status.im for fonts, although ideally we'd put them here. diff --git a/webpack.config.js b/webpack.config.js index 1e134495ce..2df82d9b23 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -20,7 +20,7 @@ module.exports = { // CSS themes "theme-light": "./src/skins/vector/css/themes/light.scss", "theme-dark": "./src/skins/vector/css/themes/dark.scss", - "theme-status": "./src/skins/vector/css/themes/status.scss", + "theme-status": "./src/skins/vector/themes/status/css/status.scss", }, module: { preLoaders: [ From 190811ac1cbf25e5af84414475c99fb83c1de27f Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Mon, 23 Oct 2017 00:57:02 +0100 Subject: [PATCH 010/126] WIP --- docs/skinning thoughts.md | 68 ++++++++ .../views/login/VectorLoginFooter.js | 3 + .../views/login/VectorLoginHeader.js | 6 +- .../structures/login/_Login.scss | 1 - src/skins/vector/css/themes/_status.scss | 155 ------------------ .../themes/status/css/_StatusLogin.scss | 74 ++++++--- .../vector/themes/status/css/_status.scss | 7 +- src/skins/vector/themes/status/img/logo.svg | 16 ++ 8 files changed, 149 insertions(+), 181 deletions(-) create mode 100644 docs/skinning thoughts.md delete mode 100644 src/skins/vector/css/themes/_status.scss create mode 100644 src/skins/vector/themes/status/img/logo.svg diff --git a/docs/skinning thoughts.md b/docs/skinning thoughts.md new file mode 100644 index 0000000000..bbaf18a284 --- /dev/null +++ b/docs/skinning thoughts.md @@ -0,0 +1,68 @@ +== Skinning refactor == + +matrix-react-sdk + - base images + - base CSS + - all the components needed to build a workable app (including the top layer) + +riot-web: the riot skin + - riot-specific classes (e.g. login header/footer) + - riot-specific themes + - light + - dark + +i.e. the only things which should go into riot-web are bits which apply vector-specific skinning +specifically "Stuff that any other brand would not want to use. (e.g. riot logos, links, T&Cs)" + - Questions: + - Electron app? (should probably be a separate repo in its own right? but might as well go here for now) + - index.html & index.js? (should be in matrix-react-sdk, given the SDK is useless without them?) + +ideally matrix-react-sdk itself should ship with a default skin which actually works built in. + +status skin (can go in the same app for now) + - has status theme + - which inherits from riot light theme + - how do we share graphics between skins? + - shove them into react-sdk, or... + - guess we do ../../vector/img + - this means keeping the skin name in the images (unless /img is a shortcut to the right skin's images) + +out of scope: + - making the components more independent, so they can be used in isolation. + - that said, the bits which should probably be used by being embeded into a different app: + - login/reg + - RoomView + RoomSettings + - MessageComposer + - RoomList + - MemberList + - MemberInfo + - Voip UI + - UserSettings + - sharing different js-sdks between the different isolated modules + +other changes: + - how do we handle i18n? + - each skin should really be its own i18n project. As long as all the commonality stuff is in matrix-react-sdk this shouldn't be too bad. + - ability to associate components with a given skin + - skins/vector/src <-- components + - skins/vector/css + - skins/vector/img + - skins/vector/fonts + - gather together themes (per skin) into a single place too + - skins/vector/themes/foo/css + - skins/vector/themes/foo/img + - skins/vector/themes/foo/fonts + - ideally riot-web would contain almost nothing but skins/vector directory. + - ability to entirely replace CSS rather than override it for a given theme + - e.g. if we replace `Login.js` with `StatusLogin.js`, then we should similarly be able to replace `_Login.scss` with `_StatusLogin.scss`. + +random thoughts; + - should we be able to change the entire skin at runtime (more like wordpress) - to the extent of replacing entire components? + - might pose security issues if a theme can be swapped out to replace MatrixChat or other fundamental functionality at runtime + - if so, perhaps skins & themes should converge... + +----------------- + +Immediate plan for Status: + * Implement it as a theme for the riot skin + * Ideally move skins to a sensible level (possibly even including src?) diff --git a/src/components/views/login/VectorLoginFooter.js b/src/components/views/login/VectorLoginFooter.js index b04dcdb597..5a97f524df 100644 --- a/src/components/views/login/VectorLoginFooter.js +++ b/src/components/views/login/VectorLoginFooter.js @@ -18,6 +18,7 @@ limitations under the License. var React = require('react'); import { _t } from 'matrix-react-sdk/lib/languageHandler'; +import UserSettingsStore from 'matrix-react-sdk/lib/UserSettingsStore'; module.exports = React.createClass({ displayName: 'VectorLoginFooter', @@ -26,6 +27,8 @@ module.exports = React.createClass({ }, render: function() { + if (UserSettingsStore.getTheme() === 'status') return
; + return (
blog  ·   diff --git a/src/components/views/login/VectorLoginHeader.js b/src/components/views/login/VectorLoginHeader.js index 3aa8811c40..71093a96c2 100644 --- a/src/components/views/login/VectorLoginHeader.js +++ b/src/components/views/login/VectorLoginHeader.js @@ -33,8 +33,10 @@ module.exports = React.createClass({ render: function() { return ( -
- Riot +
+
+ Riot +
); } diff --git a/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss b/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss index 86ab39be1b..63f483a56e 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss @@ -26,7 +26,6 @@ limitations under the License. } .mx_Login h2 { - color: $primary-fg-color; font-weight: 300; margin-top: 32px; margin-bottom: 20px; diff --git a/src/skins/vector/css/themes/_status.scss b/src/skins/vector/css/themes/_status.scss deleted file mode 100644 index b1d8b0ef2e..0000000000 --- a/src/skins/vector/css/themes/_status.scss +++ /dev/null @@ -1,155 +0,0 @@ -@font-face { - font-family:PostGrotesk-Medium; - src:url(../fonts/PostGrotesk-Medium.eot); - src:url(../fonts/PostGrotesk-Medium.eot?#iefix) format("embedded-opentype"),url(../fonts/PostGrotesk-Medium.woff) format("woff"),url(../fonts/PostGrotesk-Medium.svg#PostGrotesk-Medium) format("svg"); - font-weight: 400; - font-style: normal; -} - -@font-face { - font-family:PostGrotesk-Book; - src:url(../fonts/PostGrotesk-Book.eot); - src:url(../fonts/PostGrotesk-Book.eot?#iefix) format("embedded-opentype"),url(../fonts/PostGrotesk-Book.woff) format("woff"),url(../fonts/PostGrotesk-Book.svg#PostGrotesk-Book) format("svg"); - font-weight: 400; - font-style: normal; -} - -// We deliberately prioritise Arial over Helvetica here due to diacritic problems (see _base.scss) -// N.B. that the status.im website uses: -// font-family:PostGrotesk-Book,-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif; -// ...but can't be bothered to work out how the apple fonts & segoe interact, so keepingn it simple for now. - -$font-family: PostGrotesk-Book, Arial, Helvetica, Sans-Serif; - -// typical text (dark-on-white in light skin) -$primary-fg-color: #70808D; -$primary-bg-color: #EEF2F5; - -// ***** Status theme specifics ****** -$header-color: #49555F; -$header-font-family: PostGrotesk-Medium, Arial, Helvetica, Sans-Serif; - -h1,h2,h3,h4,h5 { - color: $header-color; - font-family: $header-font-family; - font-weight: 400 ! important; -} - -// used for dialog box text -$light-fg-color: #747474; - -// used for focusing form controls -$focus-bg-color: #dddddd; - -// button UI (white-on-green in light skin) -$accent-fg-color: #ffffff; -$accent-color: #76CFA6; - -$selection-fg-color: $primary-bg-color; - -$focus-brightness: 125%; - -// red warning colour -$warning-color: #ff0064; -$mention-user-pill-bg-color: #ff0064; -$other-user-pill-bg-color: rgba(0, 0, 0, 0.1); - -$group-alert-color: #774f7e; - -$preview-bar-bg-color: #f7f7f7; - -// left-panel style muted accent color -$secondary-accent-color: #eaf5f0; - -// used by RoomDirectory permissions -$plinth-bg-color: $secondary-accent-color; - -// used by RoomDropTarget -$droptarget-bg-color: rgba(255,255,255,0.5); - -// used by AddressSelector -$selected-color: #eaf5f0; - -// selected for hoverover & selected event tiles -$event-selected-color: #f7f7f7; - -// used for the hairline dividers in RoomView -$primary-hairline-color: #e5e5e5; - -// used for the border of input text fields -$input-border-color: #f0f0f0; - -// apart from login forms, which have stronger border -$strong-input-border-color: #c7c7c7; - -// used for UserSettings EditableText -$input-underline-color: rgba(151, 151, 151, 0.5); -$input-fg-color: rgba(74, 74, 74, 0.9); - -// context menus -$menu-border-color: rgba(187, 187, 187, 0.5); -$menu-bg-color: #f6f6f6; - -$avatar-initial-color: #ffffff; - -$h3-color: #3d3b39; - -$dialog-background-bg-color: #e9e9e9; -$lightbox-background-bg-color: #000; - -$greyed-fg-color: #888; - -$neutral-badge-color: #dbdbdb; - -$preview-widget-bar-color: #ddd; -$preview-widget-fg-color: $greyed-fg-color; - -$blockquote-bar-color: #ddd; -$blockquote-fg-color: #777; - -$settings-grey-fg-color: #a2a2a2; - -$voip-decline-color: #f48080; -$voip-accept-color: #80f480; - -$rte-bg-color: #e9e9e9; -$rte-code-bg-color: rgba(0, 0, 0, 0.04); -$rte-room-pill-color: #aaa; - -// ******************** - -$roomtile-name-color: rgba(69, 69, 69, 0.8); -$roomtile-selected-bg-color: rgba(255, 255, 255, 0.8); -$roomtile-focused-bg-color: rgba(255, 255, 255, 0.9); - -$roomsublist-label-fg-color: $h3-color; -$roomsublist-label-bg-color: #d3efe1; - -// ******************** - -// event tile lifecycle -$event-encrypting-color: #abddbc; -$event-sending-color: #ddd; -$event-notsent-color: #f44; - -// event redaction -$event-redacted-img: url('../../img/redacted.jpg'); - -// event timestamp -$event-timestamp-color: #acacac; - -$edit-button-url: "../../img/icon_context_message.svg"; -$copy-button-url: "../../img/icon_copy_message.svg"; - -// e2e -$e2e-verified-color: #76cfa5; // N.B. *NOT* the same as $accent-color -$e2e-unverified-color: #e8bf37; -$e2e-warning-color: #ba6363; - -/*** ImageView ***/ -$lightbox-bg-color: #454545; -$lightbox-fg-color: #ffffff; -$lightbox-border-color: #ffffff; - -// unused? -$progressbar-color: #000; diff --git a/src/skins/vector/themes/status/css/_StatusLogin.scss b/src/skins/vector/themes/status/css/_StatusLogin.scss index 38c8a5ef5c..7cdc69394b 100644 --- a/src/skins/vector/themes/status/css/_StatusLogin.scss +++ b/src/skins/vector/themes/status/css/_StatusLogin.scss @@ -17,40 +17,70 @@ limitations under the License. // overrides for mx_Login* specific to Status. // Ideally this would be all Status prefixes for a Status specific version of the component // but given we're not doing Status as a dedicated 'skin' yet... -.mx_Login { - width: 100%; - height: 100%; - display: flex; +.mx_Login { + flex-direction: column; align-items: center; justify-content: center; - - overflow: auto; -} - -.mx_Login h2 { - color: $primary-fg-color; - font-weight: 300; - margin-top: 32px; - margin-bottom: 20px; } .mx_Login_box { - width: 300px; - min-height: 450px; - padding-top: 50px; - padding-bottom: 50px; - margin: auto; + width: 350px; + min-height: initial; + padding-top: 20px; + padding-bottom: 10px; + padding-left: 33px; + padding-right: 33px; + border-radius: 8px; + margin: initial; + background-color: $form-bg-color; + box-shadow: 0px 5px 16px 0px rgba(25,12,46,0.16); + position: relative; } .mx_Login_logo { - text-align: center; - height: 150px; - margin-bottom: 45px; + background-color: #fff; + width: 74px; + height: 74px; + border-radius: 37px; + box-shadow: 0px 2px 4px 0px rgba(0,0,0,0.5); + position: absolute; + top: -36px; + left: 50%; + margin-left: -36px; } .mx_Login_logo img { - max-height: 100% + width: 36px; + height: 36px; + padding: 19px; +} + +.mx_Login_box h2 { + text-align: center; + color: $form-fg-color; + font-size: 25px; +} + +.mx_LoginPageHeader_brand { + position: absolute; + top: 30px; + left: 30px; +} + +.mx_LoginPageHeader_title { + text-align: center; + margin-top: 90px; + margin-bottom: 50px; +} + +.mx_LoginPageHeader_title h1 { + font-size: 29px; + margin-bottom: 3px; +} + +.mx_LoginPageHeader_subtitle { + font-size: 18px; } .mx_Login_support { diff --git a/src/skins/vector/themes/status/css/_status.scss b/src/skins/vector/themes/status/css/_status.scss index d2ccee0d27..eb8f1d941b 100644 --- a/src/skins/vector/themes/status/css/_status.scss +++ b/src/skins/vector/themes/status/css/_status.scss @@ -25,7 +25,7 @@ $font-family: PostGrotesk-Book, Arial, Helvetica, Sans-Serif; $primary-fg-color: #70808D; $primary-bg-color: #EEF2F5; -// ***** Status theme specifics ****** +// ***** Start of Status theme specifics ****** $header-color: #49555F; $header-font-family: PostGrotesk-Medium, Arial, Helvetica, Sans-Serif; @@ -35,6 +35,11 @@ h1,h2,h3,h4,h5 { font-weight: 400 ! important; } +$form-bg-color: #4360DF; +$form-fg-color: #ffffff; + +// ***** End of Status theme specifics ****** + // used for dialog box text $light-fg-color: #747474; diff --git a/src/skins/vector/themes/status/img/logo.svg b/src/skins/vector/themes/status/img/logo.svg new file mode 100644 index 0000000000..68e4a77a5c --- /dev/null +++ b/src/skins/vector/themes/status/img/logo.svg @@ -0,0 +1,16 @@ + + + + Status logo + Created with Sketch. + + + + + \ No newline at end of file From b053f08991260755cb2015313bdcbe988363a83d Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Tue, 24 Oct 2017 23:42:52 +0100 Subject: [PATCH 011/126] switch to a LoginPage wrapper component > > as it's much nicer in the CSS to wrap the LoginBox as needed rather than have separate header & footer divs floating above and below it which need to be correctly vertically centered --- .../themes/status/css/_StatusLogin.scss | 553 ++++++++++-------- .../vector/themes/status/css/_status.scss | 6 +- 2 files changed, 298 insertions(+), 261 deletions(-) diff --git a/src/skins/vector/themes/status/css/_StatusLogin.scss b/src/skins/vector/themes/status/css/_StatusLogin.scss index 7cdc69394b..a32251f517 100644 --- a/src/skins/vector/themes/status/css/_StatusLogin.scss +++ b/src/skins/vector/themes/status/css/_StatusLogin.scss @@ -18,304 +18,337 @@ limitations under the License. // Ideally this would be all Status prefixes for a Status specific version of the component // but given we're not doing Status as a dedicated 'skin' yet... -.mx_Login { - flex-direction: column; +.mx_StatusLogin { + + width: 100%; + height: 100%; + + display: flex; align-items: center; justify-content: center; -} -.mx_Login_box { - width: 350px; - min-height: initial; - padding-top: 20px; - padding-bottom: 10px; - padding-left: 33px; - padding-right: 33px; - border-radius: 8px; - margin: initial; - background-color: $form-bg-color; - box-shadow: 0px 5px 16px 0px rgba(25,12,46,0.16); - position: relative; -} + overflow: auto; -.mx_Login_logo { - background-color: #fff; - width: 74px; - height: 74px; - border-radius: 37px; - box-shadow: 0px 2px 4px 0px rgba(0,0,0,0.5); - position: absolute; - top: -36px; - left: 50%; - margin-left: -36px; -} + .mx_StatusLogin_brand { + position: absolute; + top: 30px; + left: 30px; + } -.mx_Login_logo img { - width: 36px; - height: 36px; - padding: 19px; -} + .mx_StatusLogin_content { + margin: auto; + } -.mx_Login_box h2 { - text-align: center; - color: $form-fg-color; - font-size: 25px; -} + .mx_StatusLogin_header { + text-align: center; + margin-top: 70px; + margin-bottom: 50px; + } -.mx_LoginPageHeader_brand { - position: absolute; - top: 30px; - left: 30px; -} + .mx_StatusLogin_header h1 { + font-size: 29px; + margin-bottom: 3px; + } -.mx_LoginPageHeader_title { - text-align: center; - margin-top: 90px; - margin-bottom: 50px; -} + .mx_StatusLogin_subtitle { + font-size: 18px; + } -.mx_LoginPageHeader_title h1 { - font-size: 29px; - margin-bottom: 3px; -} + .mx_StatusLogin_footer { + margin-top: 30px; + margin-bottom: 30px; + text-align: center; + font-size: 16px; + color: $footer-color; + } -.mx_LoginPageHeader_subtitle { - font-size: 18px; -} + .mx_StatusLogin_footer p { + margin-top: 0.5em; + margin-bottom: 0.5em; + } -.mx_Login_support { - text-align: center; - font-size: 13px; - margin-top: 0px; - opacity: 0.7; -} + .mx_StatusLogin_footer_cta { + color: $callout-color; + font-family: $header-font-family; + letter-spacing: 1px; + font-size: 13px; + text-transform: uppercase; + text-decoration: none; + } -.mx_Login_field { - width: 280px; - border-radius: 3px; - border: 1px solid $strong-input-border-color; - font-weight: 300; - font-size: 13px; - padding: 9px; - margin-bottom: 14px; -} + // overrides of .mx_Login -.mx_Login_field_disabled { - opacity: 0.3; -} + .mx_Login_box { + width: 350px; + min-height: initial; + padding-top: 20px; + padding-bottom: 10px; + padding-left: 33px; + padding-right: 33px; + border-radius: 8px; + background-color: $form-bg-color; + box-shadow: 0px 5px 16px 0px rgba(25,12,46,0.16); + position: relative; + } -.mx_Login_fieldLabel { - margin-top: -10px; - margin-left: 8px; - margin-bottom: 14px; - font-size: 13px; - opacity: 0.8; -} + .mx_Login_logo { + background-color: #fff; + width: 74px; + height: 74px; + border-radius: 37px; + box-shadow: 0px 2px 4px 0px rgba(0,0,0,0.5); + position: absolute; + top: -36px; + left: 50%; + margin-left: -36px; + } -.mx_Login_submit { - margin-top: 35px; - margin-bottom: 24px; - width: 100%; - border-radius: 40px; - height: 40px; - border: 0px; - background-color: $accent-color; - font-size: 15px; - color: $accent-fg-color; -} + .mx_Login_logo img { + width: 36px; + height: 36px; + padding: 19px; + } -.mx_Login_submit:disabled { - opacity: 0.3; -} + .mx_Login_box h2 { + text-align: center; + color: $form-fg-color; + font-size: 25px; + } -.mx_Login_label { - font-size: 13px; - opacity: 0.8; -} + .mx_Login_support { + text-align: center; + font-size: 13px; + margin-top: 0px; + opacity: 0.7; + } -.mx_Login_checkbox, -.mx_Login_radio { - margin-right: 10px; -} + .mx_Login_field { + width: 280px; + border-radius: 3px; + border: 1px solid $strong-input-border-color; + font-weight: 300; + font-size: 13px; + padding: 9px; + margin-bottom: 14px; + } -.mx_Login_create { - display: block; - text-align: center; - width: 100%; - font-size: 13px; - opacity: 0.8; -} + .mx_Login_field_disabled { + opacity: 0.3; + } -.mx_Login_create:link { - color: $primary-fg-color; -} + .mx_Login_fieldLabel { + margin-top: -10px; + margin-left: 8px; + margin-bottom: 14px; + font-size: 13px; + opacity: 0.8; + } -.mx_Login_links { - display: block; - text-align: center; - margin-top: 15px; - width: 100%; - font-size: 13px; - opacity: 0.8; -} + .mx_Login_submit { + margin-top: 35px; + margin-bottom: 24px; + width: 100%; + border-radius: 40px; + height: 40px; + border: 0px; + background-color: $accent-color; + font-size: 15px; + color: $accent-fg-color; + } -.mx_Login_links a:link { - color: $primary-fg-color; -} + .mx_Login_submit:disabled { + opacity: 0.3; + } -.mx_Login_prompt { - padding-top: 15px; - padding-bottom: 15px; - font-size: 13px; -} + .mx_Login_label { + font-size: 13px; + opacity: 0.8; + } -.mx_Login_forgot { - font-size: 13px; - opacity: 0.8; -} + .mx_Login_checkbox, + .mx_Login_radio { + margin-right: 10px; + } -.mx_Login_forgot:link { - color: $primary-fg-color; -} + .mx_Login_create { + display: block; + text-align: center; + width: 100%; + font-size: 13px; + opacity: 0.8; + } -.mx_Login_loader { - display: inline; - position: relative; - top: 2px; - left: 8px; -} + .mx_Login_create:link { + color: $primary-fg-color; + } -.mx_Login_loader .mx_Spinner { - display: inline; -} + .mx_Login_links { + display: block; + text-align: center; + margin-top: 15px; + width: 100%; + font-size: 13px; + opacity: 0.8; + } -.mx_Login_loader .mx_Spinner img { - width: 16px; - height: 16px; -} + .mx_Login_links a:link { + color: $primary-fg-color; + } -.mx_Login_error { - color: $warning-color; - font-weight: bold; - text-align: center; -/* - height: 24px; -*/ - margin-top: 12px; - margin-bottom: 12px; -} + .mx_Login_prompt { + padding-top: 15px; + padding-bottom: 15px; + font-size: 13px; + } -.mx_Login_type_container { - display: flex; - margin-bottom: 14px; -} + .mx_Login_forgot { + font-size: 13px; + opacity: 0.8; + } -.mx_Login_type_label { - flex-grow: 1; - line-height: 35px; -} + .mx_Login_forgot:link { + color: $primary-fg-color; + } -.mx_Login_type_dropdown { - display: inline-block; - min-width: 170px; - align-self: flex-end; - flex: 1 1 auto; -} + .mx_Login_loader { + display: inline; + position: relative; + top: 2px; + left: 8px; + } -.mx_Login_field_group { - display: flex; -} + .mx_Login_loader .mx_Spinner { + display: inline; + } -.mx_Login_field_prefix { - height: 34px; - padding: 0px 5px; - line-height: 33px; + .mx_Login_loader .mx_Spinner img { + width: 16px; + height: 16px; + } - background-color: #eee; - border: 1px solid #c7c7c7; - border-right: 0px; - border-radius: 3px 0px 0px 3px; - - text-align: center; -} - -.mx_Login_field_suffix { - height: 34px; - padding: 0px 5px; - line-height: 33px; - - background-color: #eee; - border: 1px solid #c7c7c7; - border-left: 0px; - border-radius: 0px 3px 3px 0px; - - text-align: center; - flex-grow: 1; -} - -.mx_Login_username { - height: 16px; - flex-shrink: 1; - min-width: 0px; - border-radius: 3px; -} - -.mx_Login_phoneNumberField { - height: 16px; -} - -.mx_Login_field_has_prefix { - border-top-left-radius: 0px; - border-bottom-left-radius: 0px; -} - -.mx_Login_field_has_suffix { - border-top-right-radius: 0px; - border-bottom-right-radius: 0px; -} - -.mx_Login_phoneSection { - display:flex; -} - -.mx_Login_phoneCountry { - margin-bottom: 14px; - width: 150px; - - /* To override mx_Login_field_prefix */ - text-align: left; - padding: 0px; - background-color: $primary-bg-color; -} - -.mx_Login_field_prefix .mx_Dropdown_input { - /* To use prefix border instead of dropdown border */ - border: 0; -} - -.mx_Login_phoneCountry .mx_Dropdown_option { + .mx_Login_error { + color: $warning-color; + font-weight: bold; + text-align: center; /* - To match height of mx_Login_field - 33px + 2px border from mx_Dropdown_option = 35px + height: 24px; */ - height: 33px; - line-height: 33px; -} + margin-top: 12px; + margin-bottom: 12px; + } -.mx_Login_phoneCountry .mx_Dropdown_option img { - margin: 3px; - vertical-align: top; -} + .mx_Login_type_container { + display: flex; + margin-bottom: 14px; + } -.mx_Login_language { - margin-left: auto; - margin-right: auto; - min-width: 60%; -} + .mx_Login_type_label { + flex-grow: 1; + line-height: 35px; + } -.mx_Login_language_div { - display: flex; - margin-top: 12px; - margin-bottom: 12px; -} + .mx_Login_type_dropdown { + display: inline-block; + min-width: 170px; + align-self: flex-end; + flex: 1 1 auto; + } + .mx_Login_field_group { + display: flex; + } + + .mx_Login_field_prefix { + height: 34px; + padding: 0px 5px; + line-height: 33px; + + background-color: #eee; + border: 1px solid #c7c7c7; + border-right: 0px; + border-radius: 3px 0px 0px 3px; + + text-align: center; + } + + .mx_Login_field_suffix { + height: 34px; + padding: 0px 5px; + line-height: 33px; + + background-color: #eee; + border: 1px solid #c7c7c7; + border-left: 0px; + border-radius: 0px 3px 3px 0px; + + text-align: center; + flex-grow: 1; + } + + .mx_Login_username { + height: 16px; + flex-shrink: 1; + min-width: 0px; + border-radius: 3px; + } + + .mx_Login_phoneNumberField { + height: 16px; + } + + .mx_Login_field_has_prefix { + border-top-left-radius: 0px; + border-bottom-left-radius: 0px; + } + + .mx_Login_field_has_suffix { + border-top-right-radius: 0px; + border-bottom-right-radius: 0px; + } + + .mx_Login_phoneSection { + display:flex; + } + + .mx_Login_phoneCountry { + margin-bottom: 14px; + width: 150px; + + /* To override mx_Login_field_prefix */ + text-align: left; + padding: 0px; + background-color: $primary-bg-color; + } + + .mx_Login_field_prefix .mx_Dropdown_input { + /* To use prefix border instead of dropdown border */ + border: 0; + } + + .mx_Login_phoneCountry .mx_Dropdown_option { + /* + To match height of mx_Login_field + 33px + 2px border from mx_Dropdown_option = 35px + */ + height: 33px; + line-height: 33px; + } + + .mx_Login_phoneCountry .mx_Dropdown_option img { + margin: 3px; + vertical-align: top; + } + + .mx_Login_language { + margin-left: auto; + margin-right: auto; + min-width: 60%; + } + + .mx_Login_language_div { + display: flex; + margin-top: 12px; + margin-bottom: 12px; + } + +} diff --git a/src/skins/vector/themes/status/css/_status.scss b/src/skins/vector/themes/status/css/_status.scss index eb8f1d941b..ceffa7a919 100644 --- a/src/skins/vector/themes/status/css/_status.scss +++ b/src/skins/vector/themes/status/css/_status.scss @@ -29,13 +29,17 @@ $primary-bg-color: #EEF2F5; $header-color: #49555F; $header-font-family: PostGrotesk-Medium, Arial, Helvetica, Sans-Serif; +$footer-color: #8D99A4; + h1,h2,h3,h4,h5 { color: $header-color; font-family: $header-font-family; font-weight: 400 ! important; } -$form-bg-color: #4360DF; +$callout-color: #4360DF; // or #4957b8 from status.im homepage + +$form-bg-color: $callout-color; $form-fg-color: #ffffff; // ***** End of Status theme specifics ****** From 73e7fe27646f14e07e32f877b62cebf6d4bfec9b Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Wed, 25 Oct 2017 01:30:39 +0100 Subject: [PATCH 012/126] finishish login page --- .../structures/login/_Login.scss | 1 - .../themes/status/css/_StatusLogin.scss | 78 +++++++++++-------- .../vector/themes/status/css/_status.scss | 26 ++++++- 3 files changed, 70 insertions(+), 35 deletions(-) diff --git a/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss b/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss index 63f483a56e..dca1422534 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss @@ -223,7 +223,6 @@ limitations under the License. height: 16px; flex-shrink: 1; min-width: 0px; - border-radius: 3px; } .mx_Login_phoneNumberField { diff --git a/src/skins/vector/themes/status/css/_StatusLogin.scss b/src/skins/vector/themes/status/css/_StatusLogin.scss index a32251f517..44a9e0a2e6 100644 --- a/src/skins/vector/themes/status/css/_StatusLogin.scss +++ b/src/skins/vector/themes/status/css/_StatusLogin.scss @@ -54,6 +54,10 @@ limitations under the License. font-size: 18px; } + .mx_StatusLogin_subtitle a { + color: $riot-link-color; + } + .mx_StatusLogin_footer { margin-top: 30px; margin-bottom: 30px; @@ -73,22 +77,22 @@ limitations under the License. letter-spacing: 1px; font-size: 13px; text-transform: uppercase; - text-decoration: none; } // overrides of .mx_Login .mx_Login_box { - width: 350px; + width: 330px; min-height: initial; - padding-top: 20px; - padding-bottom: 10px; - padding-left: 33px; - padding-right: 33px; + padding-top: 40px; + padding-bottom: 20px; + padding-left: 10px; + padding-right: 10px; border-radius: 8px; background-color: $form-bg-color; box-shadow: 0px 5px 16px 0px rgba(25,12,46,0.16); position: relative; + text-align: center; } .mx_Login_logo { @@ -123,15 +127,31 @@ limitations under the License. } .mx_Login_field { - width: 280px; - border-radius: 3px; - border: 1px solid $strong-input-border-color; + width: 260px; + height: 27px; + padding: 9px 20px 9px 20px; + border-radius: 10px; + text-align: left; + border: none; + background-color: $form-field-bg-color; + color: $form-field-fg-color; font-weight: 300; - font-size: 13px; - padding: 9px; + font-size: 15px; margin-bottom: 14px; } + .mx_Login_field::-webkit-input-placeholder { + font-family: $font-family; + color: $form-field-fg-color; + opacity: 0.6; + } + + .mx_Login_field::-moz-placeholder { + font-family: $font-family; + color: $form-field-fg-color; + opacity: 0.6; + } + .mx_Login_field_disabled { opacity: 0.3; } @@ -145,15 +165,10 @@ limitations under the License. } .mx_Login_submit { - margin-top: 35px; - margin-bottom: 24px; - width: 100%; - border-radius: 40px; - height: 40px; - border: 0px; - background-color: $accent-color; - font-size: 15px; - color: $accent-fg-color; + @mixin mx_DialogButton; + width: 200px; + margin-top: 13px; + margin-bottom: 18px; } .mx_Login_submit:disabled { @@ -174,18 +189,19 @@ limitations under the License. display: block; text-align: center; width: 100%; - font-size: 13px; - opacity: 0.8; + font-size: 15px; + opacity: 1.0; } .mx_Login_create:link { - color: $primary-fg-color; + color: $form-fg-color; } .mx_Login_links { display: block; text-align: center; - margin-top: 15px; + margin-top: 10px; + margin-bottom: 10px; width: 100%; font-size: 13px; opacity: 0.8; @@ -202,12 +218,13 @@ limitations under the License. } .mx_Login_forgot { + display: block; font-size: 13px; opacity: 0.8; } .mx_Login_forgot:link { - color: $primary-fg-color; + color: $form-fg-color; } .mx_Login_loader { @@ -228,13 +245,12 @@ limitations under the License. .mx_Login_error { color: $warning-color; - font-weight: bold; + font-size: 18px; + width: 250px; + margin: auto; text-align: center; - /* - height: 24px; - */ margin-top: 12px; - margin-bottom: 12px; + margin-bottom: 16px; } .mx_Login_type_container { @@ -286,10 +302,8 @@ limitations under the License. } .mx_Login_username { - height: 16px; flex-shrink: 1; min-width: 0px; - border-radius: 3px; } .mx_Login_phoneNumberField { diff --git a/src/skins/vector/themes/status/css/_status.scss b/src/skins/vector/themes/status/css/_status.scss index ceffa7a919..b3680f7e5c 100644 --- a/src/skins/vector/themes/status/css/_status.scss +++ b/src/skins/vector/themes/status/css/_status.scss @@ -31,6 +31,12 @@ $header-font-family: PostGrotesk-Medium, Arial, Helvetica, Sans-Serif; $footer-color: #8D99A4; +$riot-link-color: #A26988; + +a { + text-decoration: none; +} + h1,h2,h3,h4,h5 { color: $header-color; font-family: $header-font-family; @@ -42,8 +48,12 @@ $callout-color: #4360DF; // or #4957b8 from status.im homepage $form-bg-color: $callout-color; $form-fg-color: #ffffff; +$form-field-bg-color: rgba(244, 242, 247, 0.12); +$form-field-fg-color: #ffffff; + // ***** End of Status theme specifics ****** + // used for dialog box text $light-fg-color: #747474; @@ -52,14 +62,14 @@ $focus-bg-color: #dddddd; // button UI (white-on-green in light skin) $accent-fg-color: #ffffff; -$accent-color: #76CFA6; +$accent-color: #6CC1F6; $selection-fg-color: $primary-bg-color; $focus-brightness: 125%; // red warning colour -$warning-color: #ff0064; +$warning-color: #F69E98; $mention-user-pill-bg-color: #ff0064; $other-user-pill-bg-color: rgba(0, 0, 0, 0.1); @@ -162,3 +172,15 @@ $lightbox-border-color: #ffffff; // unused? $progressbar-color: #000; + +@define-mixin mx_DialogButton { + border-radius: 8px; + height: 45px; + border: 1px solid rgba(199, 206, 209, 0.12); + background-color: $accent-color; + font-size: 13px; + font-family: $header-font-family; + text-transform: uppercase; + letter-spacing: 1px; + color: $accent-fg-color; +} From 29cfbba2ce76287e91b6b8fc5c8e59da7f4460a1 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Wed, 25 Oct 2017 02:04:17 +0100 Subject: [PATCH 013/126] tweak error layout --- src/skins/vector/themes/status/css/_StatusLogin.scss | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/skins/vector/themes/status/css/_StatusLogin.scss b/src/skins/vector/themes/status/css/_StatusLogin.scss index 44a9e0a2e6..ad64546f87 100644 --- a/src/skins/vector/themes/status/css/_StatusLogin.scss +++ b/src/skins/vector/themes/status/css/_StatusLogin.scss @@ -117,6 +117,7 @@ limitations under the License. text-align: center; color: $form-fg-color; font-size: 25px; + margin-bottom: 24px; } .mx_Login_support { @@ -132,7 +133,7 @@ limitations under the License. padding: 9px 20px 9px 20px; border-radius: 10px; text-align: left; - border: none; + border: 1px solid transparent; background-color: $form-field-bg-color; color: $form-field-fg-color; font-weight: 300; @@ -247,6 +248,10 @@ limitations under the License. color: $warning-color; font-size: 18px; width: 250px; + height: 44px; + display: flex; + justify-content: center; + align-items: center; margin: auto; text-align: center; margin-top: 12px; From eedcda1d0e224cbab9c6d806f9243dd009824c71 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Wed, 25 Oct 2017 02:18:04 +0100 Subject: [PATCH 014/126] add dotty background --- src/skins/vector/themes/status/img/dot.svg | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/skins/vector/themes/status/img/dot.svg diff --git a/src/skins/vector/themes/status/img/dot.svg b/src/skins/vector/themes/status/img/dot.svg new file mode 100644 index 0000000000..45df23c049 --- /dev/null +++ b/src/skins/vector/themes/status/img/dot.svg @@ -0,0 +1 @@ +Artboard \ No newline at end of file From 9d86716b0f958c72e785af835ae94ca93f343c66 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Wed, 25 Oct 2017 02:26:53 +0100 Subject: [PATCH 015/126] remove non-overridden stuff, and add dot svg --- .../themes/status/css/_StatusLogin.scss | 160 +----------------- 1 file changed, 1 insertion(+), 159 deletions(-) diff --git a/src/skins/vector/themes/status/css/_StatusLogin.scss b/src/skins/vector/themes/status/css/_StatusLogin.scss index ad64546f87..a3f3b0ef3b 100644 --- a/src/skins/vector/themes/status/css/_StatusLogin.scss +++ b/src/skins/vector/themes/status/css/_StatusLogin.scss @@ -90,6 +90,7 @@ limitations under the License. padding-right: 10px; border-radius: 8px; background-color: $form-bg-color; + background-image: url(../../themes/status/img/dot.svg); box-shadow: 0px 5px 16px 0px rgba(25,12,46,0.16); position: relative; text-align: center; @@ -120,13 +121,6 @@ limitations under the License. margin-bottom: 24px; } - .mx_Login_support { - text-align: center; - font-size: 13px; - margin-top: 0px; - opacity: 0.7; - } - .mx_Login_field { width: 260px; height: 27px; @@ -157,14 +151,6 @@ limitations under the License. opacity: 0.3; } - .mx_Login_fieldLabel { - margin-top: -10px; - margin-left: 8px; - margin-bottom: 14px; - font-size: 13px; - opacity: 0.8; - } - .mx_Login_submit { @mixin mx_DialogButton; width: 200px; @@ -176,16 +162,6 @@ limitations under the License. opacity: 0.3; } - .mx_Login_label { - font-size: 13px; - opacity: 0.8; - } - - .mx_Login_checkbox, - .mx_Login_radio { - margin-right: 10px; - } - .mx_Login_create { display: block; text-align: center; @@ -212,12 +188,6 @@ limitations under the License. color: $primary-fg-color; } - .mx_Login_prompt { - padding-top: 15px; - padding-bottom: 15px; - font-size: 13px; - } - .mx_Login_forgot { display: block; font-size: 13px; @@ -228,22 +198,6 @@ limitations under the License. color: $form-fg-color; } - .mx_Login_loader { - display: inline; - position: relative; - top: 2px; - left: 8px; - } - - .mx_Login_loader .mx_Spinner { - display: inline; - } - - .mx_Login_loader .mx_Spinner img { - width: 16px; - height: 16px; - } - .mx_Login_error { color: $warning-color; font-size: 18px; @@ -258,116 +212,4 @@ limitations under the License. margin-bottom: 16px; } - .mx_Login_type_container { - display: flex; - margin-bottom: 14px; - } - - .mx_Login_type_label { - flex-grow: 1; - line-height: 35px; - } - - .mx_Login_type_dropdown { - display: inline-block; - min-width: 170px; - align-self: flex-end; - flex: 1 1 auto; - } - - .mx_Login_field_group { - display: flex; - } - - .mx_Login_field_prefix { - height: 34px; - padding: 0px 5px; - line-height: 33px; - - background-color: #eee; - border: 1px solid #c7c7c7; - border-right: 0px; - border-radius: 3px 0px 0px 3px; - - text-align: center; - } - - .mx_Login_field_suffix { - height: 34px; - padding: 0px 5px; - line-height: 33px; - - background-color: #eee; - border: 1px solid #c7c7c7; - border-left: 0px; - border-radius: 0px 3px 3px 0px; - - text-align: center; - flex-grow: 1; - } - - .mx_Login_username { - flex-shrink: 1; - min-width: 0px; - } - - .mx_Login_phoneNumberField { - height: 16px; - } - - .mx_Login_field_has_prefix { - border-top-left-radius: 0px; - border-bottom-left-radius: 0px; - } - - .mx_Login_field_has_suffix { - border-top-right-radius: 0px; - border-bottom-right-radius: 0px; - } - - .mx_Login_phoneSection { - display:flex; - } - - .mx_Login_phoneCountry { - margin-bottom: 14px; - width: 150px; - - /* To override mx_Login_field_prefix */ - text-align: left; - padding: 0px; - background-color: $primary-bg-color; - } - - .mx_Login_field_prefix .mx_Dropdown_input { - /* To use prefix border instead of dropdown border */ - border: 0; - } - - .mx_Login_phoneCountry .mx_Dropdown_option { - /* - To match height of mx_Login_field - 33px + 2px border from mx_Dropdown_option = 35px - */ - height: 33px; - line-height: 33px; - } - - .mx_Login_phoneCountry .mx_Dropdown_option img { - margin: 3px; - vertical-align: top; - } - - .mx_Login_language { - margin-left: auto; - margin-right: auto; - min-width: 60%; - } - - .mx_Login_language_div { - display: flex; - margin-top: 12px; - margin-bottom: 12px; - } - } From 53185fc23dbd4dfb6876d5096166ac3dde52bb8c Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Wed, 25 Oct 2017 11:27:16 -0600 Subject: [PATCH 016/126] Remove i18n for making the merge easier Signed-off-by: Travis Ralston --- src/i18n/strings/en_EN.json | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index fba305d832..16d47d1020 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -72,8 +72,6 @@ "Loading bug report module": "Loading bug report module", "Low Priority": "Low Priority", "Members": "Members", - "Appear Offline": "Appear Offline", - "Away": "Away", "Mentions only": "Mentions only", "Messages containing my display name": "Messages containing my display name", "Messages containing keywords": "Messages containing keywords", From 6c796cd31174ac392657dfc755212134081b738a Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Wed, 25 Oct 2017 11:28:57 -0600 Subject: [PATCH 017/126] Re-add i18n post-merge Signed-off-by: Travis Ralston --- src/i18n/strings/en_EN.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 543ee7bbda..3299a1cc47 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -68,6 +68,8 @@ "What's New": "What's New", "Update": "Update", "What's new?": "What's new?", + "Appear Offline": "Appear Offline", + "Away": "Away", "A new version of Riot is available.": "A new version of Riot is available.", "To return to your account in future you need to set a password": "To return to your account in future you need to set a password", "Set Password": "Set Password", From 79a9f2168b2961281263e6a656f4c3b4cfc41823 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Wed, 25 Oct 2017 22:47:55 +0100 Subject: [PATCH 018/126] get rid of hardcoded font --- .../vector/img/button-text-formatting.svg | 39 ++++++++++--------- 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/src/skins/vector/img/button-text-formatting.svg b/src/skins/vector/img/button-text-formatting.svg index d3fc3f5f54..d697010d40 100644 --- a/src/skins/vector/img/button-text-formatting.svg +++ b/src/skins/vector/img/button-text-formatting.svg @@ -1,18 +1,21 @@ - - - - F69CBF5F-0BEC-47E8-B1DF-125D6376C0C9 - Created with sketchtool. - - - - - - - A - a - - - - - \ No newline at end of file + + + + + + + + + + + + From 953398b486e9e866dd9330004aab092377bb5006 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Wed, 25 Oct 2017 22:48:13 +0100 Subject: [PATCH 019/126] statusify main chat --- .../structures/_SearchBox.scss | 2 +- .../views/dialogs/_ChatInviteDialog.scss | 2 +- .../dialogs/_ConfirmUserActionDialog.scss | 2 +- .../views/dialogs/_EncryptedEventDialog.scss | 2 +- .../views/dialogs/_UnknownDeviceDialog.scss | 2 +- .../views/rooms/_MemberList.scss | 2 +- .../views/rooms/_MessageComposer.scss | 4 +- .../views/rooms/_SearchableEntityList.scss | 2 +- src/skins/vector/css/themes/_base.scss | 2 +- src/skins/vector/css/themes/_dark.scss | 1 + .../vector-web/structures/_RoomSubList.scss | 6 +-- .../vector/themes/status/css/_status.scss | 46 ++++++++++++++++--- 12 files changed, 55 insertions(+), 18 deletions(-) diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_SearchBox.scss b/src/skins/vector/css/matrix-react-sdk/structures/_SearchBox.scss index 0f34f056a5..64dec8260a 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_SearchBox.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_SearchBox.scss @@ -38,7 +38,7 @@ limitations under the License. .mx_SearchBox_search { flex: 1 1 auto; width: 0px; - font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + font-family: $font-family; font-size: 12px; margin-top: -2px; height: 24px; diff --git a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_ChatInviteDialog.scss b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_ChatInviteDialog.scss index a950ea8d12..84052cc9a7 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_ChatInviteDialog.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_ChatInviteDialog.scss @@ -28,7 +28,7 @@ limitations under the License. { height: 26px; font-size: 14px; - font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + font-family: $font-family; padding-left: 12px; padding-right: 12px; margin: 0 !important; diff --git a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_ConfirmUserActionDialog.scss b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_ConfirmUserActionDialog.scss index d12bcd3712..b859d6bf4d 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_ConfirmUserActionDialog.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_ConfirmUserActionDialog.scss @@ -34,7 +34,7 @@ limitations under the License. } .mx_ConfirmUserActionDialog_reasonField { - font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + font-family: $font-family; font-size: 14px; color: $primary-fg-color; background-color: $primary-bg-color; diff --git a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_EncryptedEventDialog.scss b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_EncryptedEventDialog.scss index cbc0195cac..9fb2bf525e 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_EncryptedEventDialog.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_EncryptedEventDialog.scss @@ -27,7 +27,7 @@ limitations under the License. border: solid 1px $accent-color; font-weight: 600; font-size: 14px; - font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + font-family: $font-family; margin-left: 0px; margin-right: 8px; padding-left: 1.5em; diff --git a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_UnknownDeviceDialog.scss b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_UnknownDeviceDialog.scss index 804b3f419e..332cd571d9 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_UnknownDeviceDialog.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_UnknownDeviceDialog.scss @@ -49,7 +49,7 @@ limitations under the License. border: solid 1px $accent-color; font-weight: 600; font-size: 13px; - font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + font-family: $font-family; margin-left: 0px; margin-right: 8px; padding-left: 0.5em; diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberList.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberList.scss index dd41483b6c..83fc70aefb 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberList.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberList.scss @@ -49,7 +49,7 @@ limitations under the License. .mx_MemberList_query, .mx_GroupMemberList_query, .mx_GroupRoomList_query { - font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + font-family: $font-family; border-radius: 3px; border: 1px solid $input-border-color; padding: 9px; diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss index 14e758535e..d95f6415ec 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss @@ -138,7 +138,7 @@ limitations under the License. max-height: 120px; overflow: auto; /* needed for FF */ - font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + font-family: $font-family; } /* hack for FF as vertical alignment of custom placeholder text is broken */ @@ -175,6 +175,8 @@ limitations under the License. .mx_MessageComposer_formatting { cursor: pointer; margin: 0 11px; + width: 24px; + height: 18px; } .mx_MessageComposer_formatbar_wrapper { diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_SearchableEntityList.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_SearchableEntityList.scss index 6116dd92ca..37a663123d 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_SearchableEntityList.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_SearchableEntityList.scss @@ -21,7 +21,7 @@ limitations under the License. } .mx_SearchableEntityList_query { - font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + font-family: $font-family; border-radius: 3px; border: 1px solid $input-border-color; padding: 9px; diff --git a/src/skins/vector/css/themes/_base.scss b/src/skins/vector/css/themes/_base.scss index a67d200158..2aa9baed35 100644 --- a/src/skins/vector/css/themes/_base.scss +++ b/src/skins/vector/css/themes/_base.scss @@ -95,9 +95,9 @@ $rte-room-pill-color: #aaa; $roomtile-name-color: rgba(69, 69, 69, 0.8); $roomtile-selected-bg-color: rgba(255, 255, 255, 0.8); $roomtile-focused-bg-color: rgba(255, 255, 255, 0.9); - $roomsublist-label-fg-color: $h3-color; $roomsublist-label-bg-color: #d3efe1; +$roomsublist-chevron-color: $accent-color; // ******************** diff --git a/src/skins/vector/css/themes/_dark.scss b/src/skins/vector/css/themes/_dark.scss index c22c5a4442..a432f2c852 100644 --- a/src/skins/vector/css/themes/_dark.scss +++ b/src/skins/vector/css/themes/_dark.scss @@ -89,6 +89,7 @@ $roomtile-focused-bg-color: rgba(255, 255, 255, 0.2); $roomsublist-label-fg-color: $h3-color; $roomsublist-label-bg-color: #454545; +$roomsublist-chevron-color: $accent-color; // ******************** diff --git a/src/skins/vector/css/vector-web/structures/_RoomSubList.scss b/src/skins/vector/css/vector-web/structures/_RoomSubList.scss index 0d56d6c378..1a78e51731 100644 --- a/src/skins/vector/css/vector-web/structures/_RoomSubList.scss +++ b/src/skins/vector/css/vector-web/structures/_RoomSubList.scss @@ -129,7 +129,7 @@ limitations under the License. height: 0; border-left: 5px solid transparent; border-right: 5px solid transparent; - border-top: 6px solid $accent-color; + border-top: 6px solid $roomsublist-chevron-color; } .mx_RoomSubList_chevronUp { @@ -137,14 +137,14 @@ limitations under the License. height: 0; border-left: 5px solid transparent; border-right: 5px solid transparent; - border-bottom: 6px solid $accent-color; + border-bottom: 6px solid $roomsublist-chevron-color; } .mx_RoomSubList_chevronRight { width: 0; height: 0; border-top: 5px solid transparent; - border-left: 6px solid $accent-color; + border-left: 6px solid $roomsublist-chevron-color; border-bottom: 5px solid transparent; } diff --git a/src/skins/vector/themes/status/css/_status.scss b/src/skins/vector/themes/status/css/_status.scss index b3680f7e5c..8eceb10efd 100644 --- a/src/skins/vector/themes/status/css/_status.scss +++ b/src/skins/vector/themes/status/css/_status.scss @@ -78,7 +78,7 @@ $group-alert-color: #774f7e; $preview-bar-bg-color: #f7f7f7; // left-panel style muted accent color -$secondary-accent-color: #eaf5f0; +$secondary-accent-color: #586C7B; // used by RoomDirectory permissions $plinth-bg-color: $secondary-accent-color; @@ -137,12 +137,13 @@ $rte-room-pill-color: #aaa; // ******************** -$roomtile-name-color: rgba(69, 69, 69, 0.8); -$roomtile-selected-bg-color: rgba(255, 255, 255, 0.8); -$roomtile-focused-bg-color: rgba(255, 255, 255, 0.9); +$roomtile-name-color: #ffffff; +$roomtile-selected-bg-color: #465561; +$roomtile-focused-bg-color: #6d8597; -$roomsublist-label-fg-color: $h3-color; -$roomsublist-label-bg-color: #d3efe1; +$roomsublist-label-fg-color: #ffffff; +$roomsublist-label-bg-color: $secondary-accent-color; +$roomsublist-chevron-color: #ffffff; // ******************** @@ -184,3 +185,36 @@ $progressbar-color: #000; letter-spacing: 1px; color: $accent-fg-color; } + +.mx_RoomSubList_label { + font-size: 13px; + font-family: $header-font-family; + letter-spacing: 1px; +} + +// FIXME: all these ! importants are horrid - we should instead go and define +// variables or something. +.mx_SearchBox_search { + color: #fff ! important; +} + +.mx_SearchBox_search::-webkit-input-placeholder { + color: rgba(255, 255, 255, 0.6) ! important; +} + +.mx_SearchBox_search::-moz-placeholder { + color: rgba(255, 255, 255, 0.6) ! important; +} + +.mx_RoomList_emptySubListTip { + font-size: 14px ! important; + border: 1.5px dashed rgba(0,0,0,0.2) ! important; + color: #fff ! important; + background-color: transparent ! important; + border-radius: 6px ! important; + margin-left: 6px ! important; + margin-right: 6px ! important; + margin-top: 8px ! important; + margin-bottom: 7px ! important; + padding: 8px ! important; +} \ No newline at end of file From a152eba0236e8cf2fbbd3bd53d193c4b53b22a3b Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Wed, 25 Oct 2017 22:55:32 +0100 Subject: [PATCH 020/126] fix panel-divider-color --- src/skins/vector/css/themes/_base.scss | 3 +++ src/skins/vector/css/themes/_dark.scss | 2 ++ src/skins/vector/css/vector-web/structures/_LeftPanel.scss | 2 +- src/skins/vector/themes/status/css/_status.scss | 2 ++ 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/skins/vector/css/themes/_base.scss b/src/skins/vector/css/themes/_base.scss index 2aa9baed35..ec4a2f3c0f 100644 --- a/src/skins/vector/css/themes/_base.scss +++ b/src/skins/vector/css/themes/_base.scss @@ -95,10 +95,13 @@ $rte-room-pill-color: #aaa; $roomtile-name-color: rgba(69, 69, 69, 0.8); $roomtile-selected-bg-color: rgba(255, 255, 255, 0.8); $roomtile-focused-bg-color: rgba(255, 255, 255, 0.9); + $roomsublist-label-fg-color: $h3-color; $roomsublist-label-bg-color: #d3efe1; $roomsublist-chevron-color: $accent-color; +$panel-divider-color: rgba(118, 207, 166, 0.2); + // ******************** // event tile lifecycle diff --git a/src/skins/vector/css/themes/_dark.scss b/src/skins/vector/css/themes/_dark.scss index a432f2c852..305330de82 100644 --- a/src/skins/vector/css/themes/_dark.scss +++ b/src/skins/vector/css/themes/_dark.scss @@ -91,6 +91,8 @@ $roomsublist-label-fg-color: $h3-color; $roomsublist-label-bg-color: #454545; $roomsublist-chevron-color: $accent-color; +$panel-divider-color: rgba(118, 207, 166, 0.2); + // ******************** // event tile lifecycle diff --git a/src/skins/vector/css/vector-web/structures/_LeftPanel.scss b/src/skins/vector/css/vector-web/structures/_LeftPanel.scss index 418358dd65..29786fadda 100644 --- a/src/skins/vector/css/vector-web/structures/_LeftPanel.scss +++ b/src/skins/vector/css/vector-web/structures/_LeftPanel.scss @@ -49,7 +49,7 @@ limitations under the License. .mx_LeftPanel .mx_BottomLeftMenu { order: 3; - border-top: 1px solid rgba(118, 207, 166, 0.2); + border-top: 1px solid $panel-divider-color; margin-left: 16px; /* gutter */ margin-right: 16px; /* gutter */ flex: 0 0 60px; diff --git a/src/skins/vector/themes/status/css/_status.scss b/src/skins/vector/themes/status/css/_status.scss index 8eceb10efd..48aa6f28e1 100644 --- a/src/skins/vector/themes/status/css/_status.scss +++ b/src/skins/vector/themes/status/css/_status.scss @@ -145,6 +145,8 @@ $roomsublist-label-fg-color: #ffffff; $roomsublist-label-bg-color: $secondary-accent-color; $roomsublist-chevron-color: #ffffff; +$panel-divider-color: rgba(0, 0, 0, 0.2); + // ******************** // event tile lifecycle From ea19096db368b4bde9f74f4c93b6155d30d2b859 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Wed, 25 Oct 2017 23:56:31 +0100 Subject: [PATCH 021/126] skin all the buttons --- src/skins/vector/css/_common.scss | 26 ++++--------------- .../structures/_UserSettings.scss | 23 +--------------- .../views/rooms/_MemberDeviceInfo.scss | 10 +------ .../views/rooms/_RoomHeader.scss | 16 ++---------- .../views/rooms/_RoomSettings.scss | 10 +------ src/skins/vector/css/themes/_base.scss | 24 +++++++++++++++++ .../vector/themes/status/css/_status.scss | 24 +++++++++++++++-- 7 files changed, 56 insertions(+), 77 deletions(-) diff --git a/src/skins/vector/css/_common.scss b/src/skins/vector/css/_common.scss index 0802c1cab2..d5f2c0da71 100644 --- a/src/skins/vector/css/_common.scss +++ b/src/skins/vector/css/_common.scss @@ -200,21 +200,13 @@ textarea { } .mx_Dialog button, .mx_Dialog input[type="submit"] { - border: 0px; - height: 36px; - border-radius: 40px; - border: solid 1px $accent-color; - font-weight: 600; - font-size: 14px; - font-family: $font-family; + @mixin mx_DialogButton; margin-left: 0px; margin-right: 8px; - padding-left: 1.5em; - padding-right: 1.5em; - outline: none; - cursor: pointer; + + // flip colours for the secondary ones color: $accent-color; - background-color: $primary-bg-color; + background-color: $accent-fg-color; /* align images in buttons (eg spinners) */ vertical-align: middle; @@ -282,16 +274,8 @@ textarea { color: $selection-fg-color; } -/** green button with rounded corners */ .mx_textButton { - color: $accent-fg-color; - background-color: $accent-color; - border-radius: 17px; - text-align: center; - padding-left: 1em; - padding-right: 1em; - cursor: pointer; - display: inline; + @mixin mx_DialogButton_small; } .mx_button_row { diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss b/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss index 6607253886..3b9ab39df5 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss @@ -64,30 +64,9 @@ limitations under the License. } .mx_UserSettings_button { + @mixin mx_DialogButton; display: inline; - vertical-align: middle; - border: 0px; - border-radius: 36px; - font-weight: 400; - font-size: 16px; - color: $accent-fg-color; - background-color: $accent-color; - width: auto; margin: auto; - padding: 7px; - padding-left: 1.5em; - padding-right: 1.5em; - cursor: pointer; -} - -.mx_UserSettings_button.mx_UserSettings_buttonSmall { - height: 36px; - padding: 4px; - padding-left: 7px; - padding-right: 7px; - font-size: 12px; - margin-right: 5px; - line-height: 12px; } .mx_UserSettings_button.danger { diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberDeviceInfo.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberDeviceInfo.scss index 2a5be3250d..4b1abead9e 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberDeviceInfo.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberDeviceInfo.scss @@ -26,15 +26,7 @@ limitations under the License. } .mx_MemberDeviceInfo_textButton { - color: $accent-fg-color; - background-color: $accent-color; - border-radius: 17px; - text-align: center; - padding-left: 1em; - padding-right: 1em; - border: 0px; - font-size: 14px; - cursor: pointer; + @mixin mx_DialogButton_small; margin: 2px; flex: 1; } diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss index b16cf8b6a4..475dcbeaec 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss @@ -42,22 +42,10 @@ limitations under the License. } .mx_RoomHeader_textButton { - height: 36px; - background-color: $accent-color; - border-radius: 36px; + @mixin mx_DialogButton; margin-right: 8px; - color: $accent-fg-color; - line-height: 34px; - margin-top: -2px; - text-align: center; + margin-top: -5px; order: 2; - cursor: pointer; - -/* - flex: 0 0 90px; -*/ - padding-left: 12px; - padding-right: 12px; } .mx_RoomHeader_textButton_danger { diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomSettings.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomSettings.scss index 9e269ac2b5..52013a6bf4 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomSettings.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomSettings.scss @@ -22,17 +22,9 @@ limitations under the License. .mx_RoomSettings_leaveButton, .mx_RoomSettings_unbanButton { + @mixin mx_DialogButton; position: relative; - height: 36px; - background-color: $accent-color; - border-radius: 36px; margin-right: 8px; - color: $accent-fg-color; - line-height: 34px; - text-align: center; - cursor: pointer; - padding-left: 12px; - padding-right: 12px; } .mx_RoomSettings_integrationsButton_error { position: relative; diff --git a/src/skins/vector/css/themes/_base.scss b/src/skins/vector/css/themes/_base.scss index ec4a2f3c0f..785c246c78 100644 --- a/src/skins/vector/css/themes/_base.scss +++ b/src/skins/vector/css/themes/_base.scss @@ -130,3 +130,27 @@ $lightbox-border-color: #ffffff; // unused? $progressbar-color: #000; + +// ***** Mixins! ***** + +@define-mixin mx_DialogButton { + vertical-align: middle; + border: 0px; + border-radius: 36px; + height: 33px; + font-weight: 400; + font-size: 16px; + color: $accent-fg-color; + background-color: $accent-color; + width: auto; + padding: 7px; + padding-left: 1.5em; + padding-right: 1.5em; + cursor: pointer; + display: inline-block; +} + +@define-mixin mx_DialogButton_small { + @mixin mx_DialogButton; + height: auto; +} diff --git a/src/skins/vector/themes/status/css/_status.scss b/src/skins/vector/themes/status/css/_status.scss index 48aa6f28e1..9b858d9420 100644 --- a/src/skins/vector/themes/status/css/_status.scss +++ b/src/skins/vector/themes/status/css/_status.scss @@ -96,7 +96,7 @@ $event-selected-color: #f7f7f7; $primary-hairline-color: #e5e5e5; // used for the border of input text fields -$input-border-color: #f0f0f0; +$input-border-color: #c9cfd4; // apart from login forms, which have stronger border $strong-input-border-color: #c7c7c7; @@ -178,7 +178,6 @@ $progressbar-color: #000; @define-mixin mx_DialogButton { border-radius: 8px; - height: 45px; border: 1px solid rgba(199, 206, 209, 0.12); background-color: $accent-color; font-size: 13px; @@ -186,6 +185,22 @@ $progressbar-color: #000; text-transform: uppercase; letter-spacing: 1px; color: $accent-fg-color; + cursor: pointer; + outline: none; + padding: 14px; + box-sizing: border-box; + padding-left: 1.5em; + padding-right: 1.5em; + display: inline-block; +} + +@define-mixin mx_DialogButton_small { + @mixin mx_DialogButton; + height: auto; + padding-top: 7px; + padding-bottom: 7px; + padding-left: 1em; + padding-right: 1em; } .mx_RoomSubList_label { @@ -219,4 +234,9 @@ $progressbar-color: #000; margin-top: 8px ! important; margin-bottom: 7px ! important; padding: 8px ! important; +} + +.mx_RoomDirectory_perm { + font-family: $header-font-family ! important; + background-color: #fff ! important; } \ No newline at end of file From f86b616769170e9d926de469c31bfe604e14ae83 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Thu, 26 Oct 2017 01:38:07 +0100 Subject: [PATCH 022/126] status homepage --- config.sample.json | 1 + res/home-status.html | 184 +++++++++++++++++++++++ scripts/copy-res.js | 1 + src/skins/vector/themes/status/img/a.png | Bin 0 -> 3779 bytes src/skins/vector/themes/status/img/d.png | Bin 0 -> 3571 bytes src/skins/vector/themes/status/img/g.png | Bin 0 -> 3904 bytes src/skins/vector/themes/status/img/i.png | Bin 0 -> 3178 bytes src/skins/vector/themes/status/img/n.png | Bin 0 -> 3669 bytes 8 files changed, 186 insertions(+) create mode 100644 res/home-status.html create mode 100644 src/skins/vector/themes/status/img/a.png create mode 100644 src/skins/vector/themes/status/img/d.png create mode 100644 src/skins/vector/themes/status/img/g.png create mode 100644 src/skins/vector/themes/status/img/i.png create mode 100644 src/skins/vector/themes/status/img/n.png diff --git a/config.sample.json b/config.sample.json index a63783348b..a4d854a6d4 100644 --- a/config.sample.json +++ b/config.sample.json @@ -7,6 +7,7 @@ "bug_report_endpoint_url": "https://riot.im/bugreports/submit", "enableLabs": true, "default_federate": true, + "welcomePageUrl": "home.html", "default_theme": "light", "roomDirectory": { "servers": [ diff --git a/res/home-status.html b/res/home-status.html new file mode 100644 index 0000000000..f90d657d8c --- /dev/null +++ b/res/home-status.html @@ -0,0 +1,184 @@ + + +
+
+
+

Welcome to Status Community Chat, powered by Riot.

+

For contributors, developers and Ethereum-enthusiasts who care about the movement for decentralization.

+
+
+ +
+

Our rooms

+

Please abide by the channels discussion categories and remain on topic to the specific category details listed.

+

Before posting please refer to our Code of Conduct

+
+ + +
+ + #announcements + Company wide announcements. + Join +
+
+ + #introductions + Newcomer introductions. + Join +
+
+ + #general + General discussions of Status. + Join +
+
+ + #dev-status + Contributing to our codebase? Building a DApp or a chatbot? We're here to help. + Join +
+
+ + #news-articles + Share news, articles related to Ethereum or projects you're excited about + Join +
+
+

+ Interested in market and cryptocurrency type discussions? +

+ Join Telegram +
+
diff --git a/scripts/copy-res.js b/scripts/copy-res.js index c4b80709ae..1a68581444 100755 --- a/scripts/copy-res.js +++ b/scripts/copy-res.js @@ -42,6 +42,7 @@ const INCLUDE_LANGS = [ const COPY_LIST = [ ["res/manifest.json", "webapp"], ["res/home.html", "webapp"], + ["res/home-status.html", "webapp"], ["res/home/**", "webapp/home"], ["res/{media,vector-icons}/**", "webapp"], ["res/flags/*", "webapp/flags/"], diff --git a/src/skins/vector/themes/status/img/a.png b/src/skins/vector/themes/status/img/a.png new file mode 100644 index 0000000000000000000000000000000000000000..defbcc4bcd9e0d1ccd9aaeb9b49fd733445ae0fe GIT binary patch literal 3779 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 literal 0 HcmV?d00001 diff --git a/src/skins/vector/themes/status/img/d.png b/src/skins/vector/themes/status/img/d.png new file mode 100644 index 0000000000000000000000000000000000000000..daeb0b0785863babae616972bed4be9acb9f8aaa GIT binary patch literal 3571 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 literal 0 HcmV?d00001 diff --git a/src/skins/vector/themes/status/img/g.png b/src/skins/vector/themes/status/img/g.png new file mode 100644 index 0000000000000000000000000000000000000000..f675a330229c983490030ae1a4dd30322d5c93ee GIT binary patch literal 3904 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 QcK`qY07*qoM6N<$g0cP!n*aa+ literal 0 HcmV?d00001 diff --git a/src/skins/vector/themes/status/img/n.png b/src/skins/vector/themes/status/img/n.png new file mode 100644 index 0000000000000000000000000000000000000000..b8e33d41f7c9c4fc889a79d25ace2edaf6c1b176 GIT binary patch literal 3669 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 literal 0 HcmV?d00001 From 6212e805d230554beed926924f87241bd1e85fb8 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Thu, 26 Oct 2017 01:52:57 +0100 Subject: [PATCH 023/126] spell out fonts --- res/home-status.html | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/res/home-status.html b/res/home-status.html index f90d657d8c..4bbc1aa423 100644 --- a/res/home-status.html +++ b/res/home-status.html @@ -81,7 +81,8 @@ text-transform: uppercase; color: #4360DF; font-size: 13px; - font-family: PostGrotesk-Medium; + font-family: PostGrotesk-Medium, Arial, Helvetica, Sans-Serif; + font-weight: 600; } .mx_HomePage_room .mx_HomePage_icon { @@ -93,7 +94,7 @@ .mx_HomePage_room .mx_HomePage_name { display: block; - font-family: PostGrotesk-Medium; + font-family: PostGrotesk-Medium, Arial, Helvetica, Sans-Serif; font-weight: 600; font-size: 15px; color: #49555F; @@ -116,7 +117,8 @@ border: 1px solid rgba(199, 206, 209, 0.12); background-color: #6CC1F6; font-size: 13px; - font-family: PostGrotesk-Medium; + font-family: PostGrotesk-Medium, Arial, Helvetica, Sans-Serif; + font-weight: 600; text-transform: uppercase; letter-spacing: 1px; color: #fff ! important; From 13c1829cd4e0ba178942850266d79d2456cbb433 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Thu, 26 Oct 2017 02:09:56 +0100 Subject: [PATCH 024/126] fix droptarget --- src/skins/vector/themes/status/css/_status.scss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/skins/vector/themes/status/css/_status.scss b/src/skins/vector/themes/status/css/_status.scss index 9b858d9420..60bbcf9ec2 100644 --- a/src/skins/vector/themes/status/css/_status.scss +++ b/src/skins/vector/themes/status/css/_status.scss @@ -223,7 +223,8 @@ $progressbar-color: #000; color: rgba(255, 255, 255, 0.6) ! important; } -.mx_RoomList_emptySubListTip { +.mx_RoomList_emptySubListTip, +.mx_RoomDropTarget { font-size: 14px ! important; border: 1.5px dashed rgba(0,0,0,0.2) ! important; color: #fff ! important; From ebbb677f2c71c743a3f07447f280db5050511c8a Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 26 Oct 2017 09:53:05 +0100 Subject: [PATCH 025/126] Update telegram link --- res/home-status.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/home-status.html b/res/home-status.html index 4bbc1aa423..0ce7973915 100644 --- a/res/home-status.html +++ b/res/home-status.html @@ -181,6 +181,6 @@

Interested in market and cryptocurrency type discussions?

- Join Telegram + Join Telegram
From 8f0f34e7616a895a4339f45f65e9d0e1346fa352 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Thu, 26 Oct 2017 14:42:41 +0100 Subject: [PATCH 026/126] fix buttons in other skins --- src/skins/vector/css/_common.scss | 5 ++--- src/skins/vector/css/themes/_base.scss | 9 +++++---- src/skins/vector/themes/status/css/_status.scss | 2 ++ 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/skins/vector/css/_common.scss b/src/skins/vector/css/_common.scss index d5f2c0da71..d1cd099224 100644 --- a/src/skins/vector/css/_common.scss +++ b/src/skins/vector/css/_common.scss @@ -205,11 +205,10 @@ textarea { margin-right: 8px; // flip colours for the secondary ones + font-weight: 600; + border: 1px solid $accent-color ! important; color: $accent-color; background-color: $accent-fg-color; - - /* align images in buttons (eg spinners) */ - vertical-align: middle; } .mx_Dialog button:focus, .mx_Dialog input[type="submit"]:focus { diff --git a/src/skins/vector/css/themes/_base.scss b/src/skins/vector/css/themes/_base.scss index cc7e380d95..b53cd905b0 100644 --- a/src/skins/vector/css/themes/_base.scss +++ b/src/skins/vector/css/themes/_base.scss @@ -137,12 +137,12 @@ $progressbar-color: #000; // ***** Mixins! ***** @define-mixin mx_DialogButton { + /* align images in buttons (eg spinners) */ vertical-align: middle; border: 0px; border-radius: 36px; - height: 33px; - font-weight: 400; - font-size: 16px; + font-family: $font-family; + font-size: 14px; color: $accent-fg-color; background-color: $accent-color; width: auto; @@ -155,5 +155,6 @@ $progressbar-color: #000; @define-mixin mx_DialogButton_small { @mixin mx_DialogButton; - height: auto; + font-size: 15px; + padding: 0px 1.5em 0px 1.5em; } diff --git a/src/skins/vector/themes/status/css/_status.scss b/src/skins/vector/themes/status/css/_status.scss index 60bbcf9ec2..922ac03b9e 100644 --- a/src/skins/vector/themes/status/css/_status.scss +++ b/src/skins/vector/themes/status/css/_status.scss @@ -177,6 +177,8 @@ $lightbox-border-color: #ffffff; $progressbar-color: #000; @define-mixin mx_DialogButton { + /* align images in buttons (eg spinners) */ + vertical-align: middle; border-radius: 8px; border: 1px solid rgba(199, 206, 209, 0.12); background-color: $accent-color; From a8f2980dcca2b636e36006c89e23e5e615fbce34 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Thu, 26 Oct 2017 17:25:23 +0100 Subject: [PATCH 027/126] coc --- res/home-status.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/home-status.html b/res/home-status.html index 0ce7973915..95cb64a2b9 100644 --- a/res/home-status.html +++ b/res/home-status.html @@ -143,7 +143,7 @@

Our rooms

Please abide by the channels discussion categories and remain on topic to the specific category details listed.

-

Before posting please refer to our Code of Conduct

+

Before posting please refer to our Code of Conduct

From e5b1ded7e345d160369f53c50ed03bc21d4b4fdd Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Thu, 26 Oct 2017 17:31:36 +0100 Subject: [PATCH 028/126] fix default colour of loginbox text --- src/skins/vector/themes/status/css/_StatusLogin.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/src/skins/vector/themes/status/css/_StatusLogin.scss b/src/skins/vector/themes/status/css/_StatusLogin.scss index a3f3b0ef3b..b663258db7 100644 --- a/src/skins/vector/themes/status/css/_StatusLogin.scss +++ b/src/skins/vector/themes/status/css/_StatusLogin.scss @@ -89,6 +89,7 @@ limitations under the License. padding-left: 10px; padding-right: 10px; border-radius: 8px; + color: $form-fg-color; background-color: $form-bg-color; background-image: url(../../themes/status/img/dot.svg); box-shadow: 0px 5px 16px 0px rgba(25,12,46,0.16); From ad9d78684ea36e30a3c02a546760b53093729d4d Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Thu, 26 Oct 2017 18:08:36 +0100 Subject: [PATCH 029/126] tweak emptySubListTip visuals --- .../vector/css/matrix-react-sdk/views/rooms/_RoomList.scss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss index 35787ca0c4..d8a8d58a9c 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss @@ -50,10 +50,11 @@ limitations under the License. color: $primary-fg-color; background-color: $droptarget-bg-color; border-radius: 4px; + line-height: 16px; } .mx_RoomList_emptySubListTip .mx_RoleButton { - vertical-align: -3px; + vertical-align: -2px; } .mx_RoomList_headerButtons { From b9cf2c6b6ccdabe712b293ebe8f6b89be4506b61 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Thu, 26 Oct 2017 18:08:42 +0100 Subject: [PATCH 030/126] remove 'return to app' test --- test/app-tests/loading.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/app-tests/loading.js b/test/app-tests/loading.js index 2161987688..a7e7c9851b 100644 --- a/test/app-tests/loading.js +++ b/test/app-tests/loading.js @@ -546,6 +546,8 @@ describe('loading:', function () { ); }); + /* + // ILAG renders this obsolete. I think. it('should allow us to return to the app', function() { const login = ReactTestUtils.findRenderedComponentWithType( matrixChat, sdk.getComponent('structures.login.Login') @@ -568,6 +570,7 @@ describe('loading:', function () { matrixChat, sdk.getComponent('structures.HomePage')); }); }); + */ }); }); From ca74b098671b0c666fb437eb78b5ca6af36b6233 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Thu, 26 Oct 2017 18:27:34 +0100 Subject: [PATCH 031/126] fix fugly noperm error --- .../css/matrix-react-sdk/views/rooms/_MessageComposer.scss | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss index d95f6415ec..c1af9e367f 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss @@ -55,10 +55,12 @@ limitations under the License. .mx_MessageComposer_noperm_error { width: 100%; height: 60px; - text-align: center; font-style: italic; color: $greyed-fg-color; -} + display: flex; + align-items: center; + justify-content: center; +}} .mx_MessageComposer_input_wrapper { flex: 1; From 50b348c68e41cd34b3a7f2e631e358c4f1f0ca74 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Thu, 26 Oct 2017 18:59:05 +0100 Subject: [PATCH 032/126] try for slightly prettier redaction --- .../views/rooms/_EventTile.scss | 23 +++++++++---------- .../views/rooms/_MessageComposer.scss | 2 +- src/skins/vector/css/themes/_base.scss | 3 ++- src/skins/vector/css/themes/_dark.scss | 3 ++- .../vector/themes/status/css/_status.scss | 3 ++- 5 files changed, 18 insertions(+), 16 deletions(-) diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss index bb0ca9594b..cfc46e85ab 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss @@ -156,18 +156,17 @@ limitations under the License. .mx_EventTile_redacted .mx_EventTile_line .mx_UnknownBody { display: block; width: 100%; - height: 36px; - background-image: $event-redacted-img; - background-repeat: no-repeat; - background-size: contain; -} - -.mx_EventTile.mx_EventTile_redacted .mx_EventTile_line { - /* - Prevent changing colour of the background because - $event-redacted-img matches $primary-bg-color - */ - background-color: initial !important; + height: 22px; + width: 250px; + border-radius: 11px; + background: repeating-linear-gradient( + -45deg, + $event-redacted-fg-color, + $event-redacted-fg-color 3px, + transparent 3px, + transparent 6px + ); + box-shadow: 0px 0px 3px $event-redacted-border-color inset; } .mx_EventTile_highlight, diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss index c1af9e367f..4a84d161bb 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss @@ -60,7 +60,7 @@ limitations under the License. display: flex; align-items: center; justify-content: center; -}} +} .mx_MessageComposer_input_wrapper { flex: 1; diff --git a/src/skins/vector/css/themes/_base.scss b/src/skins/vector/css/themes/_base.scss index b53cd905b0..6df64cb8e7 100644 --- a/src/skins/vector/css/themes/_base.scss +++ b/src/skins/vector/css/themes/_base.scss @@ -113,7 +113,8 @@ $event-sending-color: #ddd; $event-notsent-color: #f44; // event redaction -$event-redacted-img: url('../../img/redacted.jpg'); +$event-redacted-fg-color: #e2e2e2; +$event-redacted-border-color: #cccccc; // event timestamp $event-timestamp-color: #acacac; diff --git a/src/skins/vector/css/themes/_dark.scss b/src/skins/vector/css/themes/_dark.scss index 8e6a65fefb..73f1bafa1c 100644 --- a/src/skins/vector/css/themes/_dark.scss +++ b/src/skins/vector/css/themes/_dark.scss @@ -104,7 +104,8 @@ $event-sending-color: #888; $event-notsent-color: #f44; // event redaction -$event-redacted-img: url('../../img/redacted-dark.jpg'); +$event-redacted-fg-color: #606060; +$event-redacted-border-color: #000000; // event timestamp $event-timestamp-color: #acacac; diff --git a/src/skins/vector/themes/status/css/_status.scss b/src/skins/vector/themes/status/css/_status.scss index 922ac03b9e..e8bfae2f47 100644 --- a/src/skins/vector/themes/status/css/_status.scss +++ b/src/skins/vector/themes/status/css/_status.scss @@ -155,7 +155,8 @@ $event-sending-color: #ddd; $event-notsent-color: #f44; // event redaction -$event-redacted-img: url('../../img/redacted.jpg'); +$event-redacted-fg-color: #e2e2e2; +$event-redacted-border-color: #cccccc; // event timestamp $event-timestamp-color: #acacac; From 468f8ccab812c106c9cb2265ad07386199af0462 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Fri, 27 Oct 2017 00:02:52 +0100 Subject: [PATCH 033/126] dirty hack to make FF work --- src/vector/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vector/index.html b/src/vector/index.html index 864377eea4..290520390a 100644 --- a/src/vector/index.html +++ b/src/vector/index.html @@ -26,7 +26,7 @@ if (match) { var title = match[1].charAt(0).toUpperCase() + match[1].slice(1); %> - <% } else { %> From 26d142f89334d4186d0c0525c1195e56b40bda7d Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Fri, 27 Oct 2017 00:14:12 +0100 Subject: [PATCH 034/126] fix snafu on login submit button --- .../css/matrix-react-sdk/structures/login/_Login.scss | 9 ++------- src/skins/vector/themes/status/css/_StatusLogin.scss | 1 - 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss b/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss index dca1422534..aae572e8d7 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss @@ -79,15 +79,10 @@ limitations under the License. } .mx_Login_submit { + @mixin mx_DialogButton; + width: 100%; margin-top: 35px; margin-bottom: 24px; - width: 100%; - border-radius: 40px; - height: 40px; - border: 0px; - background-color: $accent-color; - font-size: 15px; - color: $accent-fg-color; } .mx_Login_submit:disabled { diff --git a/src/skins/vector/themes/status/css/_StatusLogin.scss b/src/skins/vector/themes/status/css/_StatusLogin.scss index b663258db7..c9af7c8ae8 100644 --- a/src/skins/vector/themes/status/css/_StatusLogin.scss +++ b/src/skins/vector/themes/status/css/_StatusLogin.scss @@ -153,7 +153,6 @@ limitations under the License. } .mx_Login_submit { - @mixin mx_DialogButton; width: 200px; margin-top: 13px; margin-bottom: 18px; From 1798bff8f572294c1a2cf1951c1a4fc0bfbfa4a1 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Fri, 27 Oct 2017 01:02:43 +0100 Subject: [PATCH 035/126] cosmetic fixes & hoverovers --- src/skins/vector/css/_common.scss | 8 ++++++++ .../matrix-react-sdk/structures/_UserSettings.scss | 4 ++++ .../css/matrix-react-sdk/structures/login/_Login.scss | 7 +++++-- .../views/rooms/_MemberDeviceInfo.scss | 4 ++++ .../css/matrix-react-sdk/views/rooms/_RoomHeader.scss | 4 ++++ .../matrix-react-sdk/views/rooms/_RoomSettings.scss | 6 ++++++ src/skins/vector/css/themes/_base.scss | 3 +++ src/skins/vector/themes/status/css/_StatusLogin.scss | 11 ++++++++--- src/skins/vector/themes/status/css/_status.scss | 11 +++++++++++ 9 files changed, 53 insertions(+), 5 deletions(-) diff --git a/src/skins/vector/css/_common.scss b/src/skins/vector/css/_common.scss index d1cd099224..876c5b97e3 100644 --- a/src/skins/vector/css/_common.scss +++ b/src/skins/vector/css/_common.scss @@ -211,6 +211,10 @@ textarea { background-color: $accent-fg-color; } +.mx_Dialog button:hover, .mx_Dialog input[type="submit"]:hover { + @mixin mx_DialogButton_hover; +} + .mx_Dialog button:focus, .mx_Dialog input[type="submit"]:focus { filter: brightness($focus-brightness); } @@ -277,6 +281,10 @@ textarea { @mixin mx_DialogButton_small; } +.mx_textButton:hover { + @mixin mx_DialogButton_hover; +} + .mx_button_row { margin-top: 69px; } diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss b/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss index 3b9ab39df5..f6341dd6cd 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss @@ -69,6 +69,10 @@ limitations under the License. margin: auto; } +.mx_UserSettings_button:hover { + @mixin mx_DialogButton_hover; +} + .mx_UserSettings_button.danger { background-color: $warning-color; } diff --git a/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss b/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss index aae572e8d7..84b8306a74 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss @@ -85,6 +85,10 @@ limitations under the License. margin-bottom: 24px; } +.mx_Login_submit:hover { + @mixin mx_DialogButton_hover; +} + .mx_Login_submit:disabled { opacity: 0.3; } @@ -131,8 +135,7 @@ limitations under the License. } .mx_Login_forgot { - font-size: 13px; - opacity: 0.8; + font-size: 15px; } .mx_Login_forgot:link { diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberDeviceInfo.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberDeviceInfo.scss index 4b1abead9e..5888820e0d 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberDeviceInfo.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberDeviceInfo.scss @@ -31,6 +31,10 @@ limitations under the License. flex: 1; } +.mx_MemberDeviceInfo_textButton:hover { + @mixin mx_DialogButton_hover; +} + .mx_MemberDeviceInfo_deviceId { font-size: 13px; } diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss index 5b78703aa6..8dbad92a44 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss @@ -48,6 +48,10 @@ limitations under the License. order: 2; } +.mx_RoomHeader_textButton:hover { + @mixin mx_DialogButton_hover; +} + .mx_RoomHeader_textButton_danger { background-color: $warning-color; } diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomSettings.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomSettings.scss index 52013a6bf4..4013af4c7c 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomSettings.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomSettings.scss @@ -26,6 +26,12 @@ limitations under the License. position: relative; margin-right: 8px; } + +.mx_RoomSettings_leaveButton:hover, +.mx_RoomSettings_unbanButton:hover { + @mixin mx_DialogButton_hover; +} + .mx_RoomSettings_integrationsButton_error { position: relative; cursor: not-allowed; diff --git a/src/skins/vector/css/themes/_base.scss b/src/skins/vector/css/themes/_base.scss index 6df64cb8e7..a8bb4d89e1 100644 --- a/src/skins/vector/css/themes/_base.scss +++ b/src/skins/vector/css/themes/_base.scss @@ -154,6 +154,9 @@ $progressbar-color: #000; display: inline-block; } +@define-mixin mx_DialogButton_hover { +} + @define-mixin mx_DialogButton_small { @mixin mx_DialogButton; font-size: 15px; diff --git a/src/skins/vector/themes/status/css/_StatusLogin.scss b/src/skins/vector/themes/status/css/_StatusLogin.scss index c9af7c8ae8..fcbc2e17b9 100644 --- a/src/skins/vector/themes/status/css/_StatusLogin.scss +++ b/src/skins/vector/themes/status/css/_StatusLogin.scss @@ -102,7 +102,7 @@ limitations under the License. width: 74px; height: 74px; border-radius: 37px; - box-shadow: 0px 2px 4px 0px rgba(0,0,0,0.5); + box-shadow: 0px 5px 16px 0px rgba(0,0,0,0.2); position: absolute; top: -36px; left: 50%; @@ -134,6 +134,12 @@ limitations under the License. font-weight: 300; font-size: 15px; margin-bottom: 14px; + transition: background-color .2s ease; + } + + .mx_Login_field:focus { + border: 1px solid transparent; + background-color: $form-field-bg-hover-color; } .mx_Login_field::-webkit-input-placeholder { @@ -190,8 +196,7 @@ limitations under the License. .mx_Login_forgot { display: block; - font-size: 13px; - opacity: 0.8; + font-size: 15px; } .mx_Login_forgot:link { diff --git a/src/skins/vector/themes/status/css/_status.scss b/src/skins/vector/themes/status/css/_status.scss index e8bfae2f47..fa2a64c7da 100644 --- a/src/skins/vector/themes/status/css/_status.scss +++ b/src/skins/vector/themes/status/css/_status.scss @@ -37,6 +37,10 @@ a { text-decoration: none; } +a:hover { + text-decoration: underline; +} + h1,h2,h3,h4,h5 { color: $header-color; font-family: $header-font-family; @@ -49,6 +53,7 @@ $form-bg-color: $callout-color; $form-fg-color: #ffffff; $form-field-bg-color: rgba(244, 242, 247, 0.12); +$form-field-bg-hover-color: rgba(255, 255, 255, 0.2); $form-field-fg-color: #ffffff; // ***** End of Status theme specifics ****** @@ -63,6 +68,7 @@ $focus-bg-color: #dddddd; // button UI (white-on-green in light skin) $accent-fg-color: #ffffff; $accent-color: #6CC1F6; +$accent-hover-color: #84cfff; $selection-fg-color: $primary-bg-color; @@ -195,6 +201,11 @@ $progressbar-color: #000; padding-left: 1.5em; padding-right: 1.5em; display: inline-block; + transition: background-color .2s ease; +} + +@define-mixin mx_DialogButton_hover { + background-color: $accent-hover-color; } @define-mixin mx_DialogButton_small { From b65ee5f28e2ac8d6c519bbc793c5c00e6ecd05ea Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Fri, 27 Oct 2017 01:09:46 +0100 Subject: [PATCH 036/126] tg hoverover --- res/home-status.html | 6 ++++++ src/skins/vector/themes/status/css/_StatusLogin.scss | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/res/home-status.html b/res/home-status.html index 95cb64a2b9..7d50470a22 100644 --- a/res/home-status.html +++ b/res/home-status.html @@ -83,6 +83,12 @@ font-size: 13px; font-family: PostGrotesk-Medium, Arial, Helvetica, Sans-Serif; font-weight: 600; + opacity: 1.0; + transition: opacity .2s ease; +} + +.mx_HomePage_telegram a:hover { + opacity: 0.5; } .mx_HomePage_room .mx_HomePage_icon { diff --git a/src/skins/vector/themes/status/css/_StatusLogin.scss b/src/skins/vector/themes/status/css/_StatusLogin.scss index fcbc2e17b9..d652b9348e 100644 --- a/src/skins/vector/themes/status/css/_StatusLogin.scss +++ b/src/skins/vector/themes/status/css/_StatusLogin.scss @@ -77,6 +77,13 @@ limitations under the License. letter-spacing: 1px; font-size: 13px; text-transform: uppercase; + opacity: 1.0; + transition: opacity .2s ease; + } + + .mx_StatusLogin_footer_cta:hover { + opacity: 0.5; + text-decoration: none; } // overrides of .mx_Login From 3ffebfbf0b54f4794e6879445440c63c51b172b6 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Fri, 27 Oct 2017 01:24:11 +0100 Subject: [PATCH 037/126] fix spacing of login aux buttons --- src/skins/vector/themes/status/css/_StatusLogin.scss | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/skins/vector/themes/status/css/_StatusLogin.scss b/src/skins/vector/themes/status/css/_StatusLogin.scss index d652b9348e..603b7ece92 100644 --- a/src/skins/vector/themes/status/css/_StatusLogin.scss +++ b/src/skins/vector/themes/status/css/_StatusLogin.scss @@ -165,10 +165,14 @@ limitations under the License. opacity: 0.3; } + .mx_Login_prompt { + font-size: 16px; + } + .mx_Login_submit { width: 200px; margin-top: 13px; - margin-bottom: 18px; + margin-bottom: 10px; } .mx_Login_submit:disabled { @@ -176,6 +180,7 @@ limitations under the License. } .mx_Login_create { + margin-top: 10px; display: block; text-align: center; width: 100%; From ca0092469bd7477d6c78862d04ba0cee367e810a Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Fri, 27 Oct 2017 01:31:14 +0100 Subject: [PATCH 038/126] tweak spacing for login --- src/skins/vector/themes/status/css/_StatusLogin.scss | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/skins/vector/themes/status/css/_StatusLogin.scss b/src/skins/vector/themes/status/css/_StatusLogin.scss index 603b7ece92..0cced779d2 100644 --- a/src/skins/vector/themes/status/css/_StatusLogin.scss +++ b/src/skins/vector/themes/status/css/_StatusLogin.scss @@ -91,7 +91,7 @@ limitations under the License. .mx_Login_box { width: 330px; min-height: initial; - padding-top: 40px; + padding-top: 50px; padding-bottom: 20px; padding-left: 10px; padding-right: 10px; @@ -126,6 +126,7 @@ limitations under the License. text-align: center; color: $form-fg-color; font-size: 25px; + margin-top: 5px; margin-bottom: 24px; } @@ -170,7 +171,8 @@ limitations under the License. } .mx_Login_submit { - width: 200px; + min-width: 200px; + width: auto; margin-top: 13px; margin-bottom: 10px; } From c26aaa8d01e49fc0abeae523c67f24fd7313cedd Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Fri, 27 Oct 2017 01:35:06 +0100 Subject: [PATCH 039/126] revert previous & fix font size --- src/skins/vector/themes/status/css/_StatusLogin.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/skins/vector/themes/status/css/_StatusLogin.scss b/src/skins/vector/themes/status/css/_StatusLogin.scss index 0cced779d2..e6a0584fdc 100644 --- a/src/skins/vector/themes/status/css/_StatusLogin.scss +++ b/src/skins/vector/themes/status/css/_StatusLogin.scss @@ -91,12 +91,13 @@ limitations under the License. .mx_Login_box { width: 330px; min-height: initial; - padding-top: 50px; + padding-top: 40px; padding-bottom: 20px; padding-left: 10px; padding-right: 10px; border-radius: 8px; color: $form-fg-color; + font-size: 16px; background-color: $form-bg-color; background-image: url(../../themes/status/img/dot.svg); box-shadow: 0px 5px 16px 0px rgba(25,12,46,0.16); @@ -126,7 +127,6 @@ limitations under the License. text-align: center; color: $form-fg-color; font-size: 25px; - margin-top: 5px; margin-bottom: 24px; } From ce2d40b775958f122a808684b8231e1aa4260e51 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Fri, 27 Oct 2017 10:47:15 +0100 Subject: [PATCH 040/126] more tweaks from Denis --- src/skins/vector/themes/status/css/_StatusLogin.scss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/skins/vector/themes/status/css/_StatusLogin.scss b/src/skins/vector/themes/status/css/_StatusLogin.scss index e6a0584fdc..4bf4617925 100644 --- a/src/skins/vector/themes/status/css/_StatusLogin.scss +++ b/src/skins/vector/themes/status/css/_StatusLogin.scss @@ -98,6 +98,7 @@ limitations under the License. border-radius: 8px; color: $form-fg-color; font-size: 16px; + line-height: 25px; background-color: $form-bg-color; background-image: url(../../themes/status/img/dot.svg); box-shadow: 0px 5px 16px 0px rgba(25,12,46,0.16); @@ -133,7 +134,7 @@ limitations under the License. .mx_Login_field { width: 260px; height: 27px; - padding: 9px 20px 9px 20px; + padding: 8px 20px 10px 20px; border-radius: 10px; text-align: left; border: 1px solid transparent; From 7e9b63822bb0560f1cdca4f35a5c3bc9d8a543a6 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Fri, 27 Oct 2017 11:11:59 +0100 Subject: [PATCH 041/126] fix visited state of links --- .../themes/status/css/_StatusLogin.scss | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/src/skins/vector/themes/status/css/_StatusLogin.scss b/src/skins/vector/themes/status/css/_StatusLogin.scss index 4bf4617925..3619d612e6 100644 --- a/src/skins/vector/themes/status/css/_StatusLogin.scss +++ b/src/skins/vector/themes/status/css/_StatusLogin.scss @@ -191,24 +191,13 @@ limitations under the License. opacity: 1.0; } - .mx_Login_create:link { + .mx_Login_create:link, + .mx_Login_create:hover, + .mx_Login_create:visited + { color: $form-fg-color; } - .mx_Login_links { - display: block; - text-align: center; - margin-top: 10px; - margin-bottom: 10px; - width: 100%; - font-size: 13px; - opacity: 0.8; - } - - .mx_Login_links a:link { - color: $primary-fg-color; - } - .mx_Login_forgot { display: block; font-size: 15px; From d4696345d124d5c95bcca2aa5b5c8930cf6e598f Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Fri, 27 Oct 2017 12:17:04 +0100 Subject: [PATCH 042/126] fix more visited state of links --- src/skins/vector/themes/status/css/_StatusLogin.scss | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/skins/vector/themes/status/css/_StatusLogin.scss b/src/skins/vector/themes/status/css/_StatusLogin.scss index 3619d612e6..8c7d9b26b6 100644 --- a/src/skins/vector/themes/status/css/_StatusLogin.scss +++ b/src/skins/vector/themes/status/css/_StatusLogin.scss @@ -203,7 +203,10 @@ limitations under the License. font-size: 15px; } - .mx_Login_forgot:link { + .mx_Login_forgot:link, + .mx_Login_forgot:hover, + .mx_Login_forgot:visited + { color: $form-fg-color; } From 8ad9728bef511255845eec8d8d48810194101981 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Fri, 27 Oct 2017 14:23:33 +0100 Subject: [PATCH 043/126] css for HS userid warnings --- src/skins/vector/themes/status/css/_StatusLogin.scss | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/skins/vector/themes/status/css/_StatusLogin.scss b/src/skins/vector/themes/status/css/_StatusLogin.scss index 8c7d9b26b6..6872727423 100644 --- a/src/skins/vector/themes/status/css/_StatusLogin.scss +++ b/src/skins/vector/themes/status/css/_StatusLogin.scss @@ -213,7 +213,7 @@ limitations under the License. .mx_Login_error { color: $warning-color; font-size: 18px; - width: 250px; + width: 300px; height: 44px; display: flex; justify-content: center; @@ -224,4 +224,9 @@ limitations under the License. margin-bottom: 16px; } + .mx_Login_smallError { + font-size: 13px; + line-height: initial; + } + } From 5063fef4f5de8c22c778710409f72006aa3a9748 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 27 Oct 2017 19:08:35 +0100 Subject: [PATCH 044/126] Redirect to instructions page if user on mobile --- src/vector/index.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/vector/index.js b/src/vector/index.js index f775d1b3cd..4a44cbdc5f 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -250,16 +250,20 @@ async function loadApp() { if (!preventRedirect) { if (/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream) { - if (confirm(_t("Riot is not supported on mobile web. Install the app?"))) { + window.location = "https://status.im/join-riot.html"; + return; + /*if (confirm(_t("Riot is not supported on mobile web. Install the app?"))) { window.location = "https://itunes.apple.com/us/app/vector.im/id1083446067"; return; - } + }*/ } else if (/Android/.test(navigator.userAgent)) { - if (confirm(_t("Riot is not supported on mobile web. Install the app?"))) { + window.location = "https://status.im/join-riot.html"; + return; + /*if (confirm(_t("Riot is not supported on mobile web. Install the app?"))) { window.location = "https://play.google.com/store/apps/details?id=im.vector.alpha"; return; - } + }*/ } } From b87fad991f0b2471d729411ffebf7f7636d8451f Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Fri, 27 Oct 2017 22:47:51 +0100 Subject: [PATCH 045/126] get rid of hardcoded colour >:( --- .../vector/css/matrix-react-sdk/views/avatars/_BaseAvatar.scss | 2 +- src/skins/vector/css/themes/_base.scss | 1 + src/skins/vector/css/themes/_dark.scss | 1 + src/skins/vector/themes/status/css/_status.scss | 1 + 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/skins/vector/css/matrix-react-sdk/views/avatars/_BaseAvatar.scss b/src/skins/vector/css/matrix-react-sdk/views/avatars/_BaseAvatar.scss index 320efda043..ee2d9c190f 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/avatars/_BaseAvatar.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/avatars/_BaseAvatar.scss @@ -31,5 +31,5 @@ limitations under the License. .mx_BaseAvatar_image { border-radius: 40px; vertical-align: top; - background-color: #fff; + background-color: $avatar-bg-color; } diff --git a/src/skins/vector/css/themes/_base.scss b/src/skins/vector/css/themes/_base.scss index a8bb4d89e1..ce9bec301f 100644 --- a/src/skins/vector/css/themes/_base.scss +++ b/src/skins/vector/css/themes/_base.scss @@ -68,6 +68,7 @@ $menu-border-color: rgba(187, 187, 187, 0.5); $menu-bg-color: #f6f6f6; $avatar-initial-color: #ffffff; +$avatar-bg-color: #ffffff; $h3-color: #3d3b39; diff --git a/src/skins/vector/css/themes/_dark.scss b/src/skins/vector/css/themes/_dark.scss index 73f1bafa1c..987ce066f9 100644 --- a/src/skins/vector/css/themes/_dark.scss +++ b/src/skins/vector/css/themes/_dark.scss @@ -60,6 +60,7 @@ $menu-border-color: rgba(187, 187, 187, 0.5); $menu-bg-color: #373737; $avatar-initial-color: #2d2d2d; +$avatar-bg-color: #ffffff; $h3-color: $primary-fg-color; diff --git a/src/skins/vector/themes/status/css/_status.scss b/src/skins/vector/themes/status/css/_status.scss index fa2a64c7da..409bca665f 100644 --- a/src/skins/vector/themes/status/css/_status.scss +++ b/src/skins/vector/themes/status/css/_status.scss @@ -116,6 +116,7 @@ $menu-border-color: rgba(187, 187, 187, 0.5); $menu-bg-color: #f6f6f6; $avatar-initial-color: #ffffff; +$avatar-bg-color: transparent; $h3-color: #3d3b39; From 5d3caf81577039ec81bda93a18614c8538d7b214 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Fri, 27 Oct 2017 23:45:10 +0100 Subject: [PATCH 046/126] tweak badges --- src/skins/vector/themes/status/css/_status.scss | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/skins/vector/themes/status/css/_status.scss b/src/skins/vector/themes/status/css/_status.scss index 409bca665f..6b205b5823 100644 --- a/src/skins/vector/themes/status/css/_status.scss +++ b/src/skins/vector/themes/status/css/_status.scss @@ -255,4 +255,11 @@ $progressbar-color: #000; .mx_RoomDirectory_perm { font-family: $header-font-family ! important; background-color: #fff ! important; -} \ No newline at end of file +} + +.mx_RoomTile_badge, +.mx_RoomSubList_badge { + height: 12px ! important; + padding-top: 1px ! important; + padding-bottom: 1px ! important; +} From f6177cd7b561ce544cce646ceee7f6bf288c8f11 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Sun, 29 Oct 2017 01:51:02 -0600 Subject: [PATCH 047/126] Use granular settings instead of synced settings Signed-off-by: Travis Ralston --- src/components/structures/BottomLeftMenu.js | 4 ++-- src/components/views/context_menus/MessageContextMenu.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/structures/BottomLeftMenu.js b/src/components/structures/BottomLeftMenu.js index 4014261caa..5511cc8c8a 100644 --- a/src/components/structures/BottomLeftMenu.js +++ b/src/components/structures/BottomLeftMenu.js @@ -21,7 +21,7 @@ import sdk from 'matrix-react-sdk'; import dis from 'matrix-react-sdk/lib/dispatcher'; import Velocity from 'velocity-vector'; import 'velocity-vector/velocity.ui'; -import UserSettingsStore from 'matrix-react-sdk/lib/UserSettingsStore'; +import SettingsStore from "matrix-react-sdk/lib/settings/SettingsStore"; const CALLOUT_ANIM_DURATION = 1000; @@ -170,7 +170,7 @@ module.exports = React.createClass({ const GroupsButton = sdk.getComponent('elements.GroupsButton'); const SettingsButton = sdk.getComponent('elements.SettingsButton'); - const groupsButton = UserSettingsStore.isFeatureEnabled('feature_groups') ? + const groupsButton = SettingsStore.isFeatureEnabled('feature_groups') ? : null; return ( diff --git a/src/components/views/context_menus/MessageContextMenu.js b/src/components/views/context_menus/MessageContextMenu.js index a07d11626d..d8f9a4daa2 100644 --- a/src/components/views/context_menus/MessageContextMenu.js +++ b/src/components/views/context_menus/MessageContextMenu.js @@ -24,7 +24,7 @@ const sdk = require('matrix-react-sdk'); import { _t } from 'matrix-react-sdk/lib/languageHandler'; const Modal = require('matrix-react-sdk/lib/Modal'); const Resend = require("matrix-react-sdk/lib/Resend"); -import * as UserSettingsStore from 'matrix-react-sdk/lib/UserSettingsStore'; +import SettingsStore from "matrix-react-sdk/lib/settings/SettingsStore"; module.exports = React.createClass({ displayName: 'MessageContextMenu', @@ -67,7 +67,7 @@ module.exports = React.createClass({ let canPin = room.currentState.mayClientSendStateEvent('m.room.pinned_events', cli); // HACK: Intentionally say we can't pin if the user doesn't want to use the functionality - if (!UserSettingsStore.isFeatureEnabled("feature_pinning")) canPin = false; + if (!SettingsStore.isFeatureEnabled("feature_pinning")) canPin = false; this.setState({canRedact, canPin}); }, From ccf52b2a69ff656c622e266f031f2115186bf4a0 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Sun, 29 Oct 2017 17:05:27 -0600 Subject: [PATCH 048/126] Convert local settings to granular settings Signed-off-by: Travis Ralston --- src/vector/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vector/index.js b/src/vector/index.js index a08397ce5a..0d42dda651 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -67,7 +67,6 @@ sdk.loadSkin(require('../component-index')); var VectorConferenceHandler = require('../VectorConferenceHandler'); import Promise from 'bluebird'; var request = require('browser-request'); -import * as UserSettingsStore from 'matrix-react-sdk/lib/UserSettingsStore'; import * as languageHandler from 'matrix-react-sdk/lib/languageHandler'; // Also import _t directly so we can call it just `_t` as this is what gen-i18n.js expects import { _t } from 'matrix-react-sdk/lib/languageHandler'; @@ -78,6 +77,7 @@ import {parseQs, parseQsFromFragment} from './url_utils'; import Platform from './platform'; import MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg'; +import SettingsStore from "../../../matrix-react-sdk/src/settings/SettingsStore"; var lastLocationHashSet = null; @@ -328,7 +328,7 @@ async function loadApp() { } async function loadLanguage() { - const prefLang = UserSettingsStore.getLocalSetting('language'); + const prefLang = SettingsStore.getValue("language"); let langs = []; if (!prefLang) { From f1c81be6334018cbbc2082f253484595e4c2f9b8 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Sun, 29 Oct 2017 22:18:34 -0600 Subject: [PATCH 049/126] Import the right SettingsStore Signed-off-by: Travis Ralston --- src/vector/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vector/index.js b/src/vector/index.js index 0d42dda651..144df9b542 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -77,7 +77,7 @@ import {parseQs, parseQsFromFragment} from './url_utils'; import Platform from './platform'; import MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg'; -import SettingsStore from "../../../matrix-react-sdk/src/settings/SettingsStore"; +import SettingsStore from "matrix-react-sdk/lib/settings/SettingsStore"; var lastLocationHashSet = null; From 1b7e42f5e8fece10be6e5dde81fcbbda2c9cd940 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Tue, 31 Oct 2017 22:45:19 +0000 Subject: [PATCH 050/126] add og:image --- src/skins/vector/img/logos/riot-im-logo-1.png | Bin 0 -> 14121 bytes src/vector/index.html | 1 + 2 files changed, 1 insertion(+) create mode 100644 src/skins/vector/img/logos/riot-im-logo-1.png diff --git a/src/skins/vector/img/logos/riot-im-logo-1.png b/src/skins/vector/img/logos/riot-im-logo-1.png new file mode 100644 index 0000000000000000000000000000000000000000..768679da66cf043898dfefbff7fb6f6cb0b5f362 GIT binary patch literal 14121 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 + <% for (var i=0; i < htmlWebpackPlugin.files.css.length; i++) { var file = htmlWebpackPlugin.files.css[i]; var match = file.match(/^bundles\/.*?\/theme-(.*)\.css$/); From df58bdd5291b7e401ba01adf8fce0639d9ef6ff4 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Tue, 31 Oct 2017 22:56:57 +0000 Subject: [PATCH 051/126] use absolute url for og:image --- src/vector/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vector/index.html b/src/vector/index.html index a411cb79b6..e32f63133d 100644 --- a/src/vector/index.html +++ b/src/vector/index.html @@ -20,7 +20,7 @@ - + <% for (var i=0; i < htmlWebpackPlugin.files.css.length; i++) { var file = htmlWebpackPlugin.files.css[i]; var match = file.match(/^bundles\/.*?\/theme-(.*)\.css$/); From 8f289519e10da664c0bbc6341541e28118623912 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Wed, 1 Nov 2017 15:25:23 +0000 Subject: [PATCH 052/126] fix chevron cosmetics --- src/skins/vector/themes/status/css/_status.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/skins/vector/themes/status/css/_status.scss b/src/skins/vector/themes/status/css/_status.scss index 6b205b5823..fc62058643 100644 --- a/src/skins/vector/themes/status/css/_status.scss +++ b/src/skins/vector/themes/status/css/_status.scss @@ -263,3 +263,7 @@ $progressbar-color: #000; padding-top: 1px ! important; padding-bottom: 1px ! important; } + +.mx_RoomSubList_chevron { + top: 8px ! important; +} \ No newline at end of file From adedf23cfb8e94894e5dc8ded2a031160007da63 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Sat, 4 Nov 2017 22:19:06 +0000 Subject: [PATCH 053/126] remove unnamespaced CSS fail --- src/components/views/globals/NewVersionBar.js | 2 +- src/skins/vector/css/_common.scss | 5 ----- .../vector/css/vector-web/views/globals/_MatrixToolbar.scss | 4 ++++ 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/components/views/globals/NewVersionBar.js b/src/components/views/globals/NewVersionBar.js index f56d1a51b7..2aedf39204 100644 --- a/src/components/views/globals/NewVersionBar.js +++ b/src/components/views/globals/NewVersionBar.js @@ -42,7 +42,7 @@ export default React.createClass({ const QuestionDialog = sdk.getComponent('dialogs.QuestionDialog'); Modal.createTrackedDialog('Display release notes', '', QuestionDialog, { title: _t("What's New"), - description:
{releaseNotes}
, + description:
{releaseNotes}
, button: _t("Update"), onFinished: (update) => { if(update && PlatformPeg.get()) { diff --git a/src/skins/vector/css/_common.scss b/src/skins/vector/css/_common.scss index c1eb8fab00..570439543a 100644 --- a/src/skins/vector/css/_common.scss +++ b/src/skins/vector/css/_common.scss @@ -294,11 +294,6 @@ textarea { margin-top: 69px; } -.changelog_text { - // why on earth is this needed? and with the wrong namespacing? >:( - font-family: $font-family; -} - .mx_Beta { color: red; margin-right: 10px; diff --git a/src/skins/vector/css/vector-web/views/globals/_MatrixToolbar.scss b/src/skins/vector/css/vector-web/views/globals/_MatrixToolbar.scss index 1a7b1c1646..be69b15f37 100644 --- a/src/skins/vector/css/vector-web/views/globals/_MatrixToolbar.scss +++ b/src/skins/vector/css/vector-web/views/globals/_MatrixToolbar.scss @@ -56,3 +56,7 @@ limitations under the License. .mx_MatrixToolbar_action { margin-right: 16px; } + +.mx_MatrixToolbar_changelog { + white-space: pre; +} \ No newline at end of file From 9a0bbfb8715ba793590b1820413a7e8503fe1c11 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Sat, 4 Nov 2017 23:43:34 +0000 Subject: [PATCH 054/126] tint the colours in the theme rather than hardcode vector green --- src/skins/vector/css/_common.scss | 14 ++++++++++++++ src/vector/index.html | 2 ++ 2 files changed, 16 insertions(+) diff --git a/src/skins/vector/css/_common.scss b/src/skins/vector/css/_common.scss index 570439543a..8a333071cd 100644 --- a/src/skins/vector/css/_common.scss +++ b/src/skins/vector/css/_common.scss @@ -1,6 +1,7 @@ /* Copyright 2015, 2016 OpenMarket Ltd Copyright 2017 Vector Creations Ltd +Copyright 2017 New Vector Ltd Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -118,6 +119,19 @@ textarea { transition: height 120ms ease-out ! important; } +// These are magic constants which are excluded from tinting, to let themes +// (which only have CSS, unlike skins) tell the app what their non-tinted +// colourscheme is by inspecting the stylesheet DOM. +// +// They are not used for layout!! +#mx_theme_accentColor { + color: $accent-color; +} + +#mx_theme_secondaryAccentColor { + color: $secondary-accent-color; +} + .mx_Dialog_wrapper { position: fixed; z-index: 4000; diff --git a/src/vector/index.html b/src/vector/index.html index e32f63133d..14efb0b201 100644 --- a/src/vector/index.html +++ b/src/vector/index.html @@ -73,5 +73,7 @@
@@ -824,7 +846,7 @@ module.exports = React.createClass({
@@ -839,7 +861,7 @@ module.exports = React.createClass({
@@ -854,11 +876,8 @@ module.exports = React.createClass({ { - UserSettingsStore.setEnableAudioNotifications(e.target.checked); - this.forceUpdate(); - }} /> + checked={ SettingsStore.getValue("audioNotificationsEnabled") } + onChange={ this.onEnableAudioNotificationsChange } />
; return ( diff --git a/src/vector/index.js b/src/vector/index.js index 9e05259a84..0577ac82a0 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -332,7 +332,7 @@ async function loadApp() { config={configJson} realQueryParams={params} startingFragmentQueryParams={fragparts.params} - enableGuest={true} + enableGuest={!configJson.disable_guests} onTokenLoginCompleted={onTokenLoginCompleted} initialScreenAfterLogin={getScreenFromLocation(window.location)} defaultDeviceDisplayName={platform.getDefaultDeviceDisplayName()} From 0a80774066916eff424a72933d2348a7ffb6f697 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Mon, 13 Nov 2017 16:26:26 +0000 Subject: [PATCH 069/126] unstatusify redirects --- src/vector/index.js | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/vector/index.js b/src/vector/index.js index 0577ac82a0..b85e90f632 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -251,20 +251,28 @@ async function loadApp() { if (!preventRedirect) { if (/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream) { - window.location = "https://status.im/join-riot.html"; - return; - /*if (confirm(_t("Riot is not supported on mobile web. Install the app?"))) { - window.location = "https://itunes.apple.com/us/app/vector.im/id1083446067"; + if (UserSettingsStore.getTheme() === 'status') { + window.location = "https://status.im/join-riot.html"; return; - }*/ + } + else { + if (confirm(_t("Riot is not supported on mobile web. Install the app?"))) { + window.location = "https://itunes.apple.com/us/app/vector.im/id1083446067"; + return; + } + } } else if (/Android/.test(navigator.userAgent)) { - window.location = "https://status.im/join-riot.html"; - return; - /*if (confirm(_t("Riot is not supported on mobile web. Install the app?"))) { - window.location = "https://play.google.com/store/apps/details?id=im.vector.alpha"; + if (UserSettingsStore.getTheme() === 'status') { + window.location = "https://status.im/join-riot.html"; return; - }*/ + } + else { + if (confirm(_t("Riot is not supported on mobile web. Install the app?"))) { + window.location = "https://play.google.com/store/apps/details?id=im.vector.alpha"; + return; + } + } } } From 809dd0856ff8cfcb3f1d0c01e870606172b1bd1c Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Mon, 13 Nov 2017 16:35:39 +0000 Subject: [PATCH 070/126] add more fixmes --- src/vector/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/vector/index.js b/src/vector/index.js index b85e90f632..18c0d74f1b 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -251,6 +251,7 @@ async function loadApp() { if (!preventRedirect) { if (/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream) { + // FIXME: ugly status hardcoding if (UserSettingsStore.getTheme() === 'status') { window.location = "https://status.im/join-riot.html"; return; @@ -263,6 +264,7 @@ async function loadApp() { } } else if (/Android/.test(navigator.userAgent)) { + // FIXME: ugly status hardcoding if (UserSettingsStore.getTheme() === 'status') { window.location = "https://status.im/join-riot.html"; return; From 977599a6603aeb47469d281518fcafe4e2301a5e Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Mon, 13 Nov 2017 13:14:29 -0700 Subject: [PATCH 071/126] Use the SettingsStore to get the theme Signed-off-by: Travis Ralston --- src/components/views/login/VectorLoginFooter.js | 4 ++-- src/vector/index.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/views/login/VectorLoginFooter.js b/src/components/views/login/VectorLoginFooter.js index e5243f8ec6..1289e84b08 100644 --- a/src/components/views/login/VectorLoginFooter.js +++ b/src/components/views/login/VectorLoginFooter.js @@ -18,7 +18,7 @@ limitations under the License. var React = require('react'); import { _t } from 'matrix-react-sdk/lib/languageHandler'; -import UserSettingsStore from 'matrix-react-sdk/lib/UserSettingsStore'; +import SettingsStore from 'matrix-react-sdk/lib/settings/SettingsStore'; module.exports = React.createClass({ displayName: 'VectorLoginFooter', @@ -28,7 +28,7 @@ module.exports = React.createClass({ render: function() { // FIXME: replace this with a proper Status skin - if (UserSettingsStore.getTheme() === 'status') return
; + if (SettingsStore.getValue("theme") === 'status') return
; return (
diff --git a/src/vector/index.js b/src/vector/index.js index 053839a320..b896d764e7 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -252,7 +252,7 @@ async function loadApp() { if (!preventRedirect) { if (/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream) { // FIXME: ugly status hardcoding - if (UserSettingsStore.getTheme() === 'status') { + if (SettingsStore.getValue("theme") === 'status') { window.location = "https://status.im/join-riot.html"; return; } @@ -265,7 +265,7 @@ async function loadApp() { } else if (/Android/.test(navigator.userAgent)) { // FIXME: ugly status hardcoding - if (UserSettingsStore.getTheme() === 'status') { + if (SettingsStore.getValue("theme") === 'status') { window.location = "https://status.im/join-riot.html"; return; } From a7a9433ef9a42ad5c3f245a93b00dcb02d869a02 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Tue, 14 Nov 2017 14:28:55 +0000 Subject: [PATCH 072/126] fix 2ndary accent color on dark on FF fixes https://github.com/vector-im/riot-web/issues/5583 --- src/skins/vector/css/themes/_dark.scss | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/skins/vector/css/themes/_dark.scss b/src/skins/vector/css/themes/_dark.scss index 595783c377..bef16c95b6 100644 --- a/src/skins/vector/css/themes/_dark.scss +++ b/src/skins/vector/css/themes/_dark.scss @@ -30,6 +30,13 @@ $preview-bar-bg-color: #333; // left-panel style muted accent color $secondary-accent-color: $primary-bg-color; +// stop the tinter trying to change the secondary accent color +// by overriding the key to something untintable +// XXX: this is a bit of a hack. +#mx_theme_secondaryAccentColor { + color: #2d2d2e ! important; // deliberately off by one +} + // used by RoomDirectory permissions $plinth-bg-color: #474747; From 69b8ff8668ffbba7e97bd6a819fa801c18e0d124 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Tue, 14 Nov 2017 15:17:32 +0000 Subject: [PATCH 073/126] add fixme --- src/vector/index.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/vector/index.js b/src/vector/index.js index 18c0d74f1b..c8d7407df3 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -310,7 +310,11 @@ async function loadApp() { a.removeAttribute("disabled"); // in case the Tinter.tint() in MatrixChat fires before the - // CSS has actually loaded (which in practice happens) + // CSS has actually loaded (which in practice happens)... + + // FIXME: we should probably block loading the app or even + // showing a spinner until the theme is loaded, to avoid + // flashes of unstyled content. a.onload = () => { Tinter.setTheme(theme); Tinter.tint(); From 940f2291022689f3e1c3d55a0450e863a4954c0a Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 14 Nov 2017 15:20:57 +0000 Subject: [PATCH 074/126] Fix edit icon colors and add green edit icon. --- src/skins/vector/img/edit.svg | 16 +++++++--------- src/skins/vector/img/edit_green.svg | 11 +++++++++++ 2 files changed, 18 insertions(+), 9 deletions(-) create mode 100644 src/skins/vector/img/edit_green.svg diff --git a/src/skins/vector/img/edit.svg b/src/skins/vector/img/edit.svg index a0be3454e1..9ba0060774 100644 --- a/src/skins/vector/img/edit.svg +++ b/src/skins/vector/img/edit.svg @@ -1,13 +1,11 @@ - - - - - - - + width="512px" height="512px" viewBox="0 0 512 512" xml:space="preserve"> + + + + + diff --git a/src/skins/vector/img/edit_green.svg b/src/skins/vector/img/edit_green.svg new file mode 100644 index 0000000000..f7f4c7adcb --- /dev/null +++ b/src/skins/vector/img/edit_green.svg @@ -0,0 +1,11 @@ + + + + + + + + + From e3bdcf4d0d8f6334735b1cee693fcb341c3fb790 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 14 Nov 2017 15:42:29 +0000 Subject: [PATCH 075/126] Remove unused edit_white icon --- src/skins/vector/img/edit_white.svg | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 src/skins/vector/img/edit_white.svg diff --git a/src/skins/vector/img/edit_white.svg b/src/skins/vector/img/edit_white.svg deleted file mode 100644 index 30c08b6e2f..0000000000 --- a/src/skins/vector/img/edit_white.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - From cf2850834eb102c61e3d70d4d75c8237df68fbad Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 14 Nov 2017 17:32:01 +0000 Subject: [PATCH 076/126] Add apps drawer bottom margin. --- .../vector/css/matrix-react-sdk/views/rooms/_AppsDrawer.scss | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_AppsDrawer.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_AppsDrawer.scss index 4fd1417a6b..cc39894366 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_AppsDrawer.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_AppsDrawer.scss @@ -14,8 +14,9 @@ See the License for the specific language governing permissions and limitations under the License. */ -// .mx_AppsDrawer { -// } +.mx_AppsDrawer { + margin: 5px; +} .mx_AppsContainer { display: flex; From 81ef9b143c8bf948d1b6072396651f612471f25b Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 14 Nov 2017 18:44:10 +0000 Subject: [PATCH 077/126] Add widget menubar styling --- src/skins/vector/themes/status/css/_status.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/skins/vector/themes/status/css/_status.scss b/src/skins/vector/themes/status/css/_status.scss index 2962ee9d4b..229d9b927a 100644 --- a/src/skins/vector/themes/status/css/_status.scss +++ b/src/skins/vector/themes/status/css/_status.scss @@ -163,6 +163,10 @@ $panel-divider-color: rgba(0, 0, 0, 0.2); // ******************** +$widget-menu-bar-bg-color: #f7f7f7; + +// ******************** + // event tile lifecycle $event-encrypting-color: #abddbc; $event-sending-color: #ddd; From ca4b71b6e2e112d45d896235c6ff461d70f47e86 Mon Sep 17 00:00:00 2001 From: Stefan Parviainen Date: Tue, 14 Nov 2017 21:54:00 +0100 Subject: [PATCH 078/126] Update to use newer _t() --- .../structures/CompatibilityPage.js | 34 ++++++++----------- .../views/globals/PasswordNagBar.js | 8 ++--- .../views/settings/Notifications.js | 9 ++--- 3 files changed, 23 insertions(+), 28 deletions(-) diff --git a/src/components/structures/CompatibilityPage.js b/src/components/structures/CompatibilityPage.js index 88b01cb2bb..ac5a24768a 100644 --- a/src/components/structures/CompatibilityPage.js +++ b/src/components/structures/CompatibilityPage.js @@ -17,7 +17,7 @@ limitations under the License. 'use strict'; var React = require('react'); -import { _t, _tJsx } from 'matrix-react-sdk/lib/languageHandler'; +import { _t } from 'matrix-react-sdk/lib/languageHandler'; module.exports = React.createClass({ displayName: 'CompatibilityPage', @@ -40,30 +40,24 @@ module.exports = React.createClass({ return (
-

{ _tJsx("Sorry, your browser is not able to run Riot.", /(.*?)<\/b>/, (sub) => {sub}) }

+

{ _t("Sorry, your browser is not able to run Riot.", {}, { 'b': (sub) => {sub} }) }

{ _t("Riot uses many advanced browser features, some of which are not available or experimental in your current browser.") }

- { _tJsx('Please install Chrome or Firefox for the best experience.', - [ - /(.*?)<\/a>/, - /(.*?)<\/a>/, - ], - [ - (sub) => {sub}, - (sub) => {sub}, - ] + { _t('Please install Chrome or Firefox for the best experience.', + {}, + { + 'chromeLink': (sub) => {sub}, + 'firefoxLink': (sub) => {sub}, + }, )} - { _tJsx('Safari and Opera work too.', - [ - /(.*?)<\/a>/, - /(.*?)<\/a>/, - ], - [ - (sub) => {sub}, - (sub) => {sub}, - ] + { _t('< safariLink>Safari and Opera work too.', + {}, + { + 'safariLink': (sub) => {sub}, + 'operaLink': (sub) => {sub}, + }, )}

diff --git a/src/components/views/globals/PasswordNagBar.js b/src/components/views/globals/PasswordNagBar.js index bf71fa2c2f..a04d48e0c5 100644 --- a/src/components/views/globals/PasswordNagBar.js +++ b/src/components/views/globals/PasswordNagBar.js @@ -20,7 +20,7 @@ import React from 'react'; import sdk from 'matrix-react-sdk'; import Modal from 'matrix-react-sdk/lib/Modal'; import dis from 'matrix-react-sdk/lib/dispatcher'; -import { _t, _tJsx } from 'matrix-react-sdk/lib/languageHandler'; +import { _t } from 'matrix-react-sdk/lib/languageHandler'; export default React.createClass({ onUpdateClicked: function() { @@ -49,10 +49,10 @@ export default React.createClass({ alt="Warning" />

- { _tJsx( + { _t( "To return to your account in future you need to set a password", - /(.*?)<\/u>/, - (sub) => { return { sub }; }, + {}, + { 'u': (sub) => { sub } }, ) }
- +
; } From ae6c985d39465be9f4cf861d4a5b184df568b4d9 Mon Sep 17 00:00:00 2001 From: Stefan Parviainen Date: Wed, 15 Nov 2017 19:58:29 +0100 Subject: [PATCH 090/126] Add missing backtick Signed-off-by: Stefan Parviainen --- docs/translating-dev.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/translating-dev.md b/docs/translating-dev.md index 37ea00e258..a39fe82c30 100644 --- a/docs/translating-dev.md +++ b/docs/translating-dev.md @@ -41,7 +41,7 @@ function getColorName(hex) { 1. Add the variable inside the string. The syntax for variables is ``%(variable)s``. Please note the _s_ at the end. The name of the variable has to match the previous used name. - You can use the special ``count`` variable to choose between multiple versions of the same string, in order to get the correct pluralization. E.g. ``_t('You have %(count)s new messages', { count: 2 })`` would show 'You have 2 new messages', while ``_t('You have %(count)s new messages', { count: 1 })`` would show 'You have one new message' (assuming a singular version of the string has been added to the translation file. See above). Passing in ``count`` is much prefered over having and if-statement choose the correct string to use, because some languages have much more complicated plural rules than english (e.g. they might need a completely different form if there are three things rather than two). -- If you want to translate text that includes e.g. hyperlinks or other HTML you have to also use tag substitution, e.g. `_t('Click here!', {}, { 'a': (sub) => {sub} })``. If you don't do the tag substitution you will end up showing literally '' rather than making a hyperlink. +- If you want to translate text that includes e.g. hyperlinks or other HTML you have to also use tag substitution, e.g. ``_t('Click here!', {}, { 'a': (sub) => {sub} })``. If you don't do the tag substitution you will end up showing literally '' rather than making a hyperlink. - You can also use React components with normal variable substitution if you want to insert HTML markup, e.g. ``_t('Your email address is %(emailAddress)s', { emailAddress: {userEmailAddress} })``. ## Things to know/Style Guides From 4949f2f7630ef5951fe0fc7443e4f95d79ad92b4 Mon Sep 17 00:00:00 2001 From: Stefan Parviainen Date: Wed, 15 Nov 2017 20:43:45 +0100 Subject: [PATCH 091/126] Fix typo and update strings Signed-off-by: Stefan Parviainen --- src/components/structures/CompatibilityPage.js | 2 +- src/i18n/strings/en_EN.json | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/components/structures/CompatibilityPage.js b/src/components/structures/CompatibilityPage.js index ac5a24768a..10806f4ffa 100644 --- a/src/components/structures/CompatibilityPage.js +++ b/src/components/structures/CompatibilityPage.js @@ -52,7 +52,7 @@ module.exports = React.createClass({ 'firefoxLink': (sub) => {sub}, }, )} - { _t('< safariLink>Safari and Opera work too.', + { _t('Safari and Opera work too.', {}, { 'safariLink': (sub) => {sub}, diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 4702ae93a1..998620a665 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -70,7 +70,6 @@ "What's new?": "What's new?", "A new version of Riot is available.": "A new version of Riot is available.", "To return to your account in future you need to set a password": "To return to your account in future you need to set a password", - "Toolbox": "Toolbox", "Set Password": "Set Password", "Error encountered (%(errorDetail)s).": "Error encountered (%(errorDetail)s).", "Checking for an update...": "Checking for an update...", @@ -98,18 +97,19 @@ "Unavailable": "Unavailable", "Changelog": "Changelog", "Back": "Back", + "Send Custom Event": "Send Custom Event", "You must specify an event type!": "You must specify an event type!", "Event sent!": "Event sent!", "Failed to send custom event.": "Failed to send custom event.", "Event Type": "Event Type", - "Event Content": "Event Content", "State Key": "State Key", - "Edit": "Edit", - "Filter results": "Filter results", - "Send Custom Event": "Send Custom Event", + "Event Content": "Event Content", "Send Account Data": "Send Account Data", - "Explore Account Data": "Explore Account Data", + "Filter results": "Filter results", "Explore Room State": "Explore Room State", + "Edit": "Edit", + "Explore Account Data": "Explore Account Data", + "Toolbox": "Toolbox", "Developer Tools": "Developer Tools", "You have successfully set a password!": "You have successfully set a password!", "You have successfully set a password and an email address!": "You have successfully set a password and an email address!", @@ -147,8 +147,8 @@ "Direct Chat": "Direct Chat", "Sorry, your browser is not able to run Riot.": "Sorry, your browser is not able to run Riot.", "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.", - "Please install Chrome or Firefox for the best experience.": "Please install Chrome or Firefox for the best experience.", - "Safari and Opera work too.": "Safari and Opera work too.", + "Please install Chrome or Firefox for the best experience.": "Please install Chrome or Firefox for the best experience.", + "Safari and Opera work too.": "Safari and Opera work too.", "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!", "I understand the risks and wish to continue": "I understand the risks and wish to continue", "Couldn't load home page": "Couldn't load home page", From 42e601005fa58d456a4409c601360c4ac2a5a80f Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Wed, 15 Nov 2017 19:09:03 -0700 Subject: [PATCH 092/126] Use SettingsStore to get the default theme Signed-off-by: Travis Ralston --- src/vector/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vector/index.js b/src/vector/index.js index bd14324087..2b27d4e4ca 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -77,7 +77,7 @@ import {parseQs, parseQsFromFragment} from './url_utils'; import Platform from './platform'; import MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg'; -import SettingsStore from "matrix-react-sdk/lib/settings/SettingsStore"; +import SettingsStore, {SettingLevel} from "matrix-react-sdk/lib/settings/SettingsStore"; import Tinter from 'matrix-react-sdk/lib/Tinter'; var lastLocationHashSet = null; @@ -299,7 +299,7 @@ async function loadApp() { // as quickly as we possibly can, set a default theme... const styleElements = Object.create(null); let a; - const theme = configJson.default_theme || 'light'; + const theme = SettingsStore.getValueAt(SettingLevel.DEFAULT, "theme"); for (let i = 0; (a = document.getElementsByTagName("link")[i]); i++) { const href = a.getAttribute("href"); if (!href) continue; From 1e2e4397f709f3455994a1a98b88188491c8984b Mon Sep 17 00:00:00 2001 From: pafcu Date: Thu, 16 Nov 2017 12:41:26 +0100 Subject: [PATCH 093/126] Fix typo --- docs/translating-dev.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/translating-dev.md b/docs/translating-dev.md index a39fe82c30..3209f1e400 100644 --- a/docs/translating-dev.md +++ b/docs/translating-dev.md @@ -40,7 +40,7 @@ function getColorName(hex) { 1. Add it to the array in ``_t`` for example ``_t(STRING, {variable: this.variable})`` 1. Add the variable inside the string. The syntax for variables is ``%(variable)s``. Please note the _s_ at the end. The name of the variable has to match the previous used name. -- You can use the special ``count`` variable to choose between multiple versions of the same string, in order to get the correct pluralization. E.g. ``_t('You have %(count)s new messages', { count: 2 })`` would show 'You have 2 new messages', while ``_t('You have %(count)s new messages', { count: 1 })`` would show 'You have one new message' (assuming a singular version of the string has been added to the translation file. See above). Passing in ``count`` is much prefered over having and if-statement choose the correct string to use, because some languages have much more complicated plural rules than english (e.g. they might need a completely different form if there are three things rather than two). +- You can use the special ``count`` variable to choose between multiple versions of the same string, in order to get the correct pluralization. E.g. ``_t('You have %(count)s new messages', { count: 2 })`` would show 'You have 2 new messages', while ``_t('You have %(count)s new messages', { count: 1 })`` would show 'You have one new message' (assuming a singular version of the string has been added to the translation file. See above). Passing in ``count`` is much prefered over having an if-statement choose the correct string to use, because some languages have much more complicated plural rules than english (e.g. they might need a completely different form if there are three things rather than two). - If you want to translate text that includes e.g. hyperlinks or other HTML you have to also use tag substitution, e.g. ``_t('Click here!', {}, { 'a': (sub) => {sub} })``. If you don't do the tag substitution you will end up showing literally '' rather than making a hyperlink. - You can also use React components with normal variable substitution if you want to insert HTML markup, e.g. ``_t('Your email address is %(emailAddress)s', { emailAddress: {userEmailAddress} })``. From 4c8f77bb80694da463608a636d64fe704feeaeb1 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Thu, 16 Nov 2017 16:46:46 +0000 Subject: [PATCH 094/126] buttonify verify buttons --- .../views/dialogs/_EncryptedEventDialog.scss | 16 ++-------------- .../views/dialogs/_UnknownDeviceDialog.scss | 17 ++--------------- 2 files changed, 4 insertions(+), 29 deletions(-) diff --git a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_EncryptedEventDialog.scss b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_EncryptedEventDialog.scss index 9fb2bf525e..b4dd353370 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_EncryptedEventDialog.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_EncryptedEventDialog.scss @@ -21,19 +21,7 @@ limitations under the License. } .mx_EncryptedEventDialog .mx_MemberDeviceInfo_textButton { - border: 0px; - height: 36px; - border-radius: 40px; - border: solid 1px $accent-color; - font-weight: 600; - font-size: 14px; - font-family: $font-family; - margin-left: 0px; - margin-right: 8px; - padding-left: 1.5em; - padding-right: 1.5em; - outline: none; - cursor: pointer; - color: $accent-color; + @mixin mx_DialogButton; background-color: $primary-bg-color; + color: $accent-color; } \ No newline at end of file diff --git a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_UnknownDeviceDialog.scss b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_UnknownDeviceDialog.scss index 332cd571d9..3457e50b92 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_UnknownDeviceDialog.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_UnknownDeviceDialog.scss @@ -43,22 +43,9 @@ limitations under the License. } .mx_UnknownDeviceDialog .mx_MemberDeviceInfo_textButton { - border: 0px; - height: 24px; - border-radius: 40px; - border: solid 1px $accent-color; - font-weight: 600; - font-size: 13px; - font-family: $font-family; - margin-left: 0px; - margin-right: 8px; - padding-left: 0.5em; - padding-right: 0.5em; - width: 85px; - outline: none; - cursor: pointer; - color: $accent-color; + @mixin mx_DialogButton_small; background-color: $primary-bg-color; + color: $accent-color; } .mx_UnknownDeviceDialog .mx_UnknownDeviceDialog_deviceList li { From 1ab5ff079c5716677b71302d91f5f025766fb352 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Thu, 16 Nov 2017 20:50:29 -0700 Subject: [PATCH 095/126] Set the SdkConfig values immediately after loading the config This is to ensure that when we make a call to get the theme we'll have the SdkConfig available. Signed-off-by: Travis Ralston --- src/vector/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/vector/index.js b/src/vector/index.js index 2b27d4e4ca..83e71f6844 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -79,6 +79,7 @@ import Platform from './platform'; import MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg'; import SettingsStore, {SettingLevel} from "matrix-react-sdk/lib/settings/SettingsStore"; import Tinter from 'matrix-react-sdk/lib/Tinter'; +import SdkConfig from "matrix-react-sdk/lib/SdkConfig"; var lastLocationHashSet = null; @@ -295,6 +296,7 @@ async function loadApp() { } catch (e) { configError = e; } + SdkConfig.put(configJson); // as quickly as we possibly can, set a default theme... const styleElements = Object.create(null); From 67ca1515d8b08022b1804f6888322ea964f54616 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Thu, 16 Nov 2017 20:50:55 -0700 Subject: [PATCH 096/126] Pull the theme through the default chain This is so the `config` level is respected. Signed-off-by: Travis Ralston --- src/vector/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vector/index.js b/src/vector/index.js index 83e71f6844..2517d10ec3 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -301,7 +301,7 @@ async function loadApp() { // as quickly as we possibly can, set a default theme... const styleElements = Object.create(null); let a; - const theme = SettingsStore.getValueAt(SettingLevel.DEFAULT, "theme"); + const theme = SettingsStore.getValue("theme"); for (let i = 0; (a = document.getElementsByTagName("link")[i]); i++) { const href = a.getAttribute("href"); if (!href) continue; From eb40de4670ca96eb087744186132d3f90ba58ec4 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Thu, 16 Nov 2017 21:00:30 -0700 Subject: [PATCH 097/126] Make sure we load the config before trying to redirect to a mobile page Signed-off-by: Travis Ralston --- src/vector/index.js | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/src/vector/index.js b/src/vector/index.js index 2517d10ec3..0138e1e734 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -246,8 +246,27 @@ async function loadApp() { // set the platform for react sdk (our Platform object automatically picks the right one) PlatformPeg.set(new Platform()); + // Load the config file. First try to load up a domain-specific config of the + // form "config.$domain.json" and if that fails, fall back to config.json. + let configJson; + let configError; + try { + try { + configJson = await getConfig(`config.${document.domain}.json`); + // 404s succeed with an empty json config, so check that there are keys + if (Object.keys(configJson).length === 0) { + throw new Error(); // throw to enter the catch + } + } catch (e) { + configJson = await getConfig("config.json"); + } + } catch (e) { + configError = e; + } + SdkConfig.put(configJson); + // don't try to redirect to the native apps if we're - // verifying a 3pid + // verifying a 3pid (but after we've loaded the config) const preventRedirect = Boolean(fragparts.params.client_secret); if (!preventRedirect) { @@ -279,25 +298,6 @@ async function loadApp() { } } - // Load the config file. First try to load up a domain-specific config of the - // form "config.$domain.json" and if that fails, fall back to config.json. - let configJson; - let configError; - try { - try { - configJson = await getConfig(`config.${document.domain}.json`); - // 404s succeed with an empty json config, so check that there are keys - if (Object.keys(configJson).length === 0) { - throw new Error(); // throw to enter the catch - } - } catch (e) { - configJson = await getConfig("config.json"); - } - } catch (e) { - configError = e; - } - SdkConfig.put(configJson); - // as quickly as we possibly can, set a default theme... const styleElements = Object.create(null); let a; From aab044a14cd95eb48e1320ec2e9142bb495be1d7 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Fri, 17 Nov 2017 22:15:35 -0700 Subject: [PATCH 098/126] Exclude the default language on page load This is so we correctly detect the browser language. Fixes https://github.com/vector-im/riot-web/issues/5632 Signed-off-by: Travis Ralston --- src/vector/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vector/index.js b/src/vector/index.js index 2b27d4e4ca..46ef706eeb 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -370,7 +370,7 @@ async function loadApp() { } async function loadLanguage() { - const prefLang = SettingsStore.getValue("language"); + const prefLang = SettingsStore.getValue("language", null, /*excludeDefault=*/true); let langs = []; if (!prefLang) { From 7cb59bddb0cbac68b911c35e7f0fef643f43af93 Mon Sep 17 00:00:00 2001 From: lukebarnard Date: Mon, 20 Nov 2017 13:12:55 +0000 Subject: [PATCH 099/126] Use badge count format for member count in RightPanel (to avoid cosmetic disasters with >9999 members in a room, e.g. HQ) --- src/components/structures/RightPanel.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/structures/RightPanel.js b/src/components/structures/RightPanel.js index 240a5b2efe..003c9e88cc 100644 --- a/src/components/structures/RightPanel.js +++ b/src/components/structures/RightPanel.js @@ -29,6 +29,8 @@ import AccessibleButton from 'matrix-react-sdk/lib/components/views/elements/Acc import { showGroupInviteDialog, showGroupAddRoomDialog } from 'matrix-react-sdk/lib/GroupAddressPicker'; import GroupStoreCache from 'matrix-react-sdk/lib/stores/GroupStoreCache'; +import { formatCount } from 'matrix-react-sdk/lib/utils/FormattingUtils'; + class HeaderButton extends React.Component { constructor() { super(); @@ -264,7 +266,7 @@ module.exports = React.createClass({ const room = cli.getRoom(this.props.roomId); let userIsInRoom; if (room) { - membersBadge = room.getJoinedMembers().length; + membersBadge = formatCount(room.getJoinedMembers().length); userIsInRoom = room.hasMembershipState( this.context.matrixClient.credentials.userId, 'join', ); From 0bd68ce068a4155f9ce36e9fec1aa7517f51e7ef Mon Sep 17 00:00:00 2001 From: Stefan Parviainen Date: Tue, 21 Nov 2017 09:18:59 +0100 Subject: [PATCH 100/126] Add some aria-labels to RightPanel Signed-off-by: Stefan Parviainen --- src/components/structures/RightPanel.js | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/components/structures/RightPanel.js b/src/components/structures/RightPanel.js index 003c9e88cc..2bfe3fe58a 100644 --- a/src/components/structures/RightPanel.js +++ b/src/components/structures/RightPanel.js @@ -49,13 +49,19 @@ class HeaderButton extends React.Component { const TintableSvg = sdk.getComponent("elements.TintableSvg"); const AccessibleButton = sdk.getComponent("elements.AccessibleButton"); - return -
- { this.props.badge ? this.props.badge :   } -
- - { this.props.isHighlighted ?
:
} - ; + return + +
+ { this.props.badge ? this.props.badge :   } +
+ + { this.props.isHighlighted ?
:
} + + ; } } @@ -71,6 +77,9 @@ HeaderButton.propTypes = { badge: PropTypes.node, // The parameters to track the click event analytics: PropTypes.arrayOf(PropTypes.string).isRequired, + + // Button title + title: PropTypes.string.isRequired, }; module.exports = React.createClass({ @@ -329,7 +338,7 @@ module.exports = React.createClass({ // button on these 2 screens or you won't be able to re-expand the panel. headerButtons.push(
, From c0a5c28d800ad835290d4b80e7df0f7a8e43796f Mon Sep 17 00:00:00 2001 From: Aidan Gauland Date: Sat, 25 Nov 2017 22:58:52 +1300 Subject: [PATCH 101/126] Set html lang attribute from language setting --- src/vector/index.html | 2 +- src/vector/index.js | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/vector/index.html b/src/vector/index.html index 8568d96a92..f930b6d23f 100644 --- a/src/vector/index.html +++ b/src/vector/index.html @@ -1,5 +1,5 @@ - + Riot diff --git a/src/vector/index.js b/src/vector/index.js index 46ef706eeb..fe326e16e3 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -382,6 +382,7 @@ async function loadLanguage() { } try { await languageHandler.setLanguage(langs); + document.getElementById("root").setAttribute("lang", languageHandler.getCurrentLanguage()); } catch (e) { console.error("Unable to set language", e); } From 43b3c013f26177d7037f7ad0b3326c4eade62232 Mon Sep 17 00:00:00 2001 From: Aidan Gauland Date: Sun, 26 Nov 2017 09:49:39 +1300 Subject: [PATCH 102/126] Change html root id Change the root element id to follow Matrix naming conventions. --- src/vector/index.html | 2 +- src/vector/index.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vector/index.html b/src/vector/index.html index f930b6d23f..172ccfabe6 100644 --- a/src/vector/index.html +++ b/src/vector/index.html @@ -1,5 +1,5 @@ - + Riot diff --git a/src/vector/index.js b/src/vector/index.js index fe326e16e3..c154919bd4 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -382,7 +382,7 @@ async function loadLanguage() { } try { await languageHandler.setLanguage(langs); - document.getElementById("root").setAttribute("lang", languageHandler.getCurrentLanguage()); + document.getElementById("mx_PageRoot").setAttribute("lang", languageHandler.getCurrentLanguage()); } catch (e) { console.error("Unable to set language", e); } From c4dc59dc413d83b48fd9a84ea427a1ff76d0544c Mon Sep 17 00:00:00 2001 From: Aidan Gauland Date: Sun, 26 Nov 2017 13:46:47 +1300 Subject: [PATCH 103/126] Use documentElement instead of getElementById Use documentElement to get the root element instead of adding an id to the root element. --- src/vector/index.html | 2 +- src/vector/index.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vector/index.html b/src/vector/index.html index 172ccfabe6..8568d96a92 100644 --- a/src/vector/index.html +++ b/src/vector/index.html @@ -1,5 +1,5 @@ - + Riot diff --git a/src/vector/index.js b/src/vector/index.js index c154919bd4..5ac42d8a64 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -382,7 +382,7 @@ async function loadLanguage() { } try { await languageHandler.setLanguage(langs); - document.getElementById("mx_PageRoot").setAttribute("lang", languageHandler.getCurrentLanguage()); + document.documentElement.setAttribute("lang", languageHandler.getCurrentLanguage()); } catch (e) { console.error("Unable to set language", e); } From c825ab0fa3ddf19a51507387839ed1ac9f6fbe24 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Mon, 27 Nov 2017 11:03:58 -0700 Subject: [PATCH 104/126] Add comment about why we call SdkConfig twice Signed-off-by: Travis Ralston --- src/vector/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/vector/index.js b/src/vector/index.js index 0138e1e734..eaa1f40bae 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -263,6 +263,9 @@ async function loadApp() { } catch (e) { configError = e; } + + // XXX: We call this twice, once here and once in MatrixChat as a prop. We call it here to ensure + // granular settings are loaded correctly and to avoid duplicating the override logic for the theme. SdkConfig.put(configJson); // don't try to redirect to the native apps if we're From 9da799c2dd105b03bf7151aa25ed65c5046a0ffe Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Mon, 27 Nov 2017 18:57:59 +0000 Subject: [PATCH 105/126] GroupTile h3 becomes div for simpler reuse --- .../vector/css/matrix-react-sdk/structures/_MyGroups.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_MyGroups.scss b/src/skins/vector/css/matrix-react-sdk/structures/_MyGroups.scss index f76aefe383..3fa8613316 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_MyGroups.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_MyGroups.scss @@ -122,13 +122,13 @@ limitations under the License. justify-content: center; } -.mx_GroupTile_profile h3.mx_GroupTile_name, +.mx_GroupTile_profile .mx_GroupTile_name, .mx_GroupTile_profile .mx_GroupTile_groupId, .mx_GroupTile_profile .mx_GroupTile_desc { padding-right: 10px; } -.mx_GroupTile_profile h3.mx_GroupTile_name { +.mx_GroupTile_profile .mx_GroupTile_name { margin: 0px; font-size: 15px; } From 6fc173eaa9793bcbc2d6b37c0d4df1cecc5771a1 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Mon, 27 Nov 2017 18:59:33 +0000 Subject: [PATCH 106/126] CSS required for moving group publication toggles to UserSettings See https://github.com/matrix-org/matrix-react-sdk/pull/1634 --- src/skins/vector/css/_components.scss | 4 +- .../views/groups/_GroupPublicityToggle.scss | 42 +++++++++++++++++++ .../views/groups/_GroupUserSettings.scss | 22 ++++++++++ 3 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 src/skins/vector/css/matrix-react-sdk/views/groups/_GroupPublicityToggle.scss create mode 100644 src/skins/vector/css/matrix-react-sdk/views/groups/_GroupUserSettings.scss diff --git a/src/skins/vector/css/_components.scss b/src/skins/vector/css/_components.scss index a59f2f520e..67ca096608 100644 --- a/src/skins/vector/css/_components.scss +++ b/src/skins/vector/css/_components.scss @@ -38,7 +38,9 @@ @import "./matrix-react-sdk/views/elements/_RichText.scss"; @import "./matrix-react-sdk/views/elements/_RoleButton.scss"; @import "./matrix-react-sdk/views/elements/_ToolTipButton.scss"; +@import "./matrix-react-sdk/views/groups/_GroupPublicityToggle.scss"; @import "./matrix-react-sdk/views/groups/_GroupRoomList.scss"; +@import "./matrix-react-sdk/views/groups/_GroupUserSettings.scss"; @import "./matrix-react-sdk/views/login/_InteractiveAuthEntryComponents.scss"; @import "./matrix-react-sdk/views/login/_ServerConfig.scss"; @import "./matrix-react-sdk/views/messages/_MEmoteBody.scss"; @@ -81,7 +83,7 @@ @import "./vector-web/structures/_RoomSubList.scss"; @import "./vector-web/structures/_ViewSource.scss"; @import "./vector-web/views/context_menus/_MessageContextMenu.scss"; -@import "vector-web/views/context_menus/_PresenceContextMenuOption.scss"; +@import "./vector-web/views/context_menus/_PresenceContextMenuOption.scss"; @import "./vector-web/views/context_menus/_RoomTileContextMenu.scss"; @import "./vector-web/views/dialogs/_ChangelogDialog.scss"; @import "./vector-web/views/dialogs/_DevtoolsDialog.scss"; diff --git a/src/skins/vector/css/matrix-react-sdk/views/groups/_GroupPublicityToggle.scss b/src/skins/vector/css/matrix-react-sdk/views/groups/_GroupPublicityToggle.scss new file mode 100644 index 0000000000..3ea4aa07d6 --- /dev/null +++ b/src/skins/vector/css/matrix-react-sdk/views/groups/_GroupPublicityToggle.scss @@ -0,0 +1,42 @@ +/* +Copyright 2017 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +.mx_GroupPublicity_toggle { + display: flex; + align-items: center; + margin: 8px; +} + +.mx_GroupPublicity_toggle > label { + display: flex; + align-items: flex-start; +} + +.mx_GroupPublicity_toggle > label, +.mx_GroupPublicity_toggle .mx_GroupTile { + width: 50%; +} + +.mx_GroupPublicity_toggle input { + margin-right: 8px; + vertical-align: -4px; +} + +.mx_GroupPublicity_toggle .mx_GroupTile { + display: flex; + align-items: flex-start; + cursor: pointer; +} diff --git a/src/skins/vector/css/matrix-react-sdk/views/groups/_GroupUserSettings.scss b/src/skins/vector/css/matrix-react-sdk/views/groups/_GroupUserSettings.scss new file mode 100644 index 0000000000..8083306ba5 --- /dev/null +++ b/src/skins/vector/css/matrix-react-sdk/views/groups/_GroupUserSettings.scss @@ -0,0 +1,22 @@ +/* +Copyright 2017 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +.mx_GroupUserSettings_groupPublicity_scrollbox { + height: 200px; + border: 1px solid $primary-hairline-color; + border-radius: 3px; + margin-right: 32px; +} From bbdafeff777d52859d2632a4483efe6e6921adb7 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Tue, 28 Nov 2017 13:17:30 +0000 Subject: [PATCH 107/126] getGroupStore no longer needs a matrix client --- src/components/structures/RightPanel.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/components/structures/RightPanel.js b/src/components/structures/RightPanel.js index 2bfe3fe58a..2a19794fe0 100644 --- a/src/components/structures/RightPanel.js +++ b/src/components/structures/RightPanel.js @@ -127,7 +127,7 @@ module.exports = React.createClass({ return { phase: this.props.groupId ? this.Phase.GroupMemberList : this.Phase.RoomMemberList, isUserPrivilegedInGroup: null, - } + }; }, componentWillReceiveProps(newProps) { @@ -139,9 +139,7 @@ module.exports = React.createClass({ _initGroupStore(groupId) { if (!groupId) return; - this._groupStore = GroupStoreCache.getGroupStore( - this.context.matrixClient, groupId, - ); + this._groupStore = GroupStoreCache.getGroupStore(groupId); this._groupStore.registerListener(this.onGroupStoreUpdated); }, @@ -151,7 +149,7 @@ module.exports = React.createClass({ } }, - onGroupStoreUpdated: function(){ + onGroupStoreUpdated: function() { this.setState({ isUserPrivilegedInGroup: this._groupStore.isUserPrivileged(), }); From 0c43edb629ad945320665b486cce3ad1d6b895b7 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Wed, 29 Nov 2017 16:41:00 +0000 Subject: [PATCH 108/126] CSS for new TagPanel --- src/skins/vector/css/_components.scss | 1 + .../structures/_SearchBox.scss | 2 + .../structures/_TagPanel.scss | 77 +++++++++++++++++++ src/skins/vector/css/themes/_base.scss | 1 + .../vector-web/structures/_RoomSubList.scss | 5 +- 5 files changed, 83 insertions(+), 3 deletions(-) create mode 100644 src/skins/vector/css/matrix-react-sdk/structures/_TagPanel.scss diff --git a/src/skins/vector/css/_components.scss b/src/skins/vector/css/_components.scss index 67ca096608..0dd6a1b1b7 100644 --- a/src/skins/vector/css/_components.scss +++ b/src/skins/vector/css/_components.scss @@ -11,6 +11,7 @@ @import "./matrix-react-sdk/structures/_RoomStatusBar.scss"; @import "./matrix-react-sdk/structures/_RoomView.scss"; @import "./matrix-react-sdk/structures/_SearchBox.scss"; +@import "./matrix-react-sdk/structures/_TagPanel.scss"; @import "./matrix-react-sdk/structures/_UploadBar.scss"; @import "./matrix-react-sdk/structures/_UserSettings.scss"; @import "./matrix-react-sdk/structures/login/_Login.scss"; diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_SearchBox.scss b/src/skins/vector/css/matrix-react-sdk/structures/_SearchBox.scss index 64dec8260a..6f08fd47b2 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_SearchBox.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_SearchBox.scss @@ -21,6 +21,8 @@ limitations under the License. padding-top: 24px; padding-bottom: 22px; + border-bottom: 1px solid $panel-divider-color; + display: flex; } diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_TagPanel.scss b/src/skins/vector/css/matrix-react-sdk/structures/_TagPanel.scss new file mode 100644 index 0000000000..6c8f7197d7 --- /dev/null +++ b/src/skins/vector/css/matrix-react-sdk/structures/_TagPanel.scss @@ -0,0 +1,77 @@ +/* +Copyright 2017 New Vector Ltd. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +.mx_TagPanel { + width: 60px; + background-color: $tertiary-accent-color; + cursor: pointer; + + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-between; +} + +.mx_TagPanel .mx_TagPanel_tagTileContainer { + display: flex; + flex-direction: column; + align-items: center; + margin-top: 65px; +} + +.mx_TagPanel .mx_TagTile { + margin: 6px 0px; + opacity: 0.5; +} +.mx_TagPanel .mx_TagTile:focus, +.mx_TagPanel .mx_TagTile:hover, +.mx_TagPanel .mx_TagTile.mx_TagTile_selected { + opacity: 1; +} + +.mx_TagPanel .mx_TagTile.mx_TagTile_selected { + /* To offset border of mx_TagTile_avatar */ + margin: 3px 0px; +} + +.mx_TagPanel .mx_TagTile.mx_TagTile_selected .mx_TagTile_avatar { + border: 3px solid $accent-color; + border-radius: 60px; +} + +.mx_TagPanel .mx_TagTile.mx_AccessibleButton:focus { + filter: none; +} + +.mx_TagTile_tooltip { + position: relative; + top: -30px; + left: 5px; +} + +.mx_TagPanel_createGroupButton { + cursor: pointer; + opacity: 0.5; + margin-bottom: 12px; +} + +.mx_TagPanel_createGroupButton:hover { + opacity: 1; +} + +.mx_TagPanel_createGroupButton object { + pointer-events: none; +} diff --git a/src/skins/vector/css/themes/_base.scss b/src/skins/vector/css/themes/_base.scss index 62d7af0640..327f2e4a28 100644 --- a/src/skins/vector/css/themes/_base.scss +++ b/src/skins/vector/css/themes/_base.scss @@ -40,6 +40,7 @@ $preview-bar-bg-color: #f7f7f7; // left-panel style muted accent color $secondary-accent-color: #eaf5f0; +$tertiary-accent-color: #d3efe1; // used by RoomDirectory permissions $plinth-bg-color: $secondary-accent-color; diff --git a/src/skins/vector/css/vector-web/structures/_RoomSubList.scss b/src/skins/vector/css/vector-web/structures/_RoomSubList.scss index 1a78e51731..bc04abcae0 100644 --- a/src/skins/vector/css/vector-web/structures/_RoomSubList.scss +++ b/src/skins/vector/css/vector-web/structures/_RoomSubList.scss @@ -33,14 +33,13 @@ limitations under the License. font-weight: 600; font-size: 12px; width: 203px; /* padding + width = LHS Panel width */ - height: 17px; /* padding + height = 29px, same as mx_RoomSubList_stickyContainer */ + height: 19px; /* padding + height = 29px, same as mx_RoomSubList_stickyContainer */ padding-left: 16px; /* gutter */ padding-right: 16px; /* gutter */ padding-top: 6px; padding-bottom: 6px; cursor: pointer; - background-color: $roomsublist-label-bg-color; - border-top: solid 2px $secondary-accent-color; + background-color: $secondary-accent-color; } .mx_RoomSubList_label.mx_RoomSubList_fixed { From 28132eaf36daf17139e6034cac0e4cf32933673e Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Wed, 29 Nov 2017 17:17:09 +0000 Subject: [PATCH 109/126] Correct comment --- src/skins/vector/css/vector-web/structures/_RoomSubList.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/skins/vector/css/vector-web/structures/_RoomSubList.scss b/src/skins/vector/css/vector-web/structures/_RoomSubList.scss index bc04abcae0..db1fb170e5 100644 --- a/src/skins/vector/css/vector-web/structures/_RoomSubList.scss +++ b/src/skins/vector/css/vector-web/structures/_RoomSubList.scss @@ -33,7 +33,7 @@ limitations under the License. font-weight: 600; font-size: 12px; width: 203px; /* padding + width = LHS Panel width */ - height: 19px; /* padding + height = 29px, same as mx_RoomSubList_stickyContainer */ + height: 19px; /* height + padding = 31px = mx_RoomSubList_label height */ padding-left: 16px; /* gutter */ padding-right: 16px; /* gutter */ padding-top: 6px; From 72563e61142197c333105bd0c8a51ec0519a8a1c Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Wed, 29 Nov 2017 18:50:22 +0000 Subject: [PATCH 110/126] overflow hidden for groupPublicity scrollbox --- .../css/matrix-react-sdk/views/groups/_GroupUserSettings.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/src/skins/vector/css/matrix-react-sdk/views/groups/_GroupUserSettings.scss b/src/skins/vector/css/matrix-react-sdk/views/groups/_GroupUserSettings.scss index 8083306ba5..0c909b7cf7 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/groups/_GroupUserSettings.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/groups/_GroupUserSettings.scss @@ -19,4 +19,5 @@ limitations under the License. border: 1px solid $primary-hairline-color; border-radius: 3px; margin-right: 32px; + overflow: hidden; } From f72b44650b70694a6141e45df21c6632d137f24a Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Wed, 29 Nov 2017 22:04:40 +0000 Subject: [PATCH 111/126] fix tertiary accent colors --- src/skins/vector/css/themes/_base.scss | 6 +++--- src/skins/vector/css/themes/_dark.scss | 7 ++++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/skins/vector/css/themes/_base.scss b/src/skins/vector/css/themes/_base.scss index 327f2e4a28..d5e862aec6 100644 --- a/src/skins/vector/css/themes/_base.scss +++ b/src/skins/vector/css/themes/_base.scss @@ -49,7 +49,7 @@ $plinth-bg-color: $secondary-accent-color; $droptarget-bg-color: rgba(255,255,255,0.5); // used by AddressSelector -$selected-color: #eaf5f0; +$selected-color: $secondary-accent-color; // selected for hoverover & selected event tiles $event-selected-color: #f7f7f7; @@ -105,14 +105,14 @@ $roomtile-selected-bg-color: rgba(255, 255, 255, 0.8); $roomtile-focused-bg-color: rgba(255, 255, 255, 0.9); $roomsublist-label-fg-color: $h3-color; -$roomsublist-label-bg-color: #d3efe1; +$roomsublist-label-bg-color: $tertiary-accent-color; $roomsublist-chevron-color: $accent-color; $panel-divider-color: rgba(118, 207, 166, 0.2); // ******************** -$widget-menu-bar-bg-color: #d3efe1; +$widget-menu-bar-bg-color: $tertiary-accent-color; // ******************** diff --git a/src/skins/vector/css/themes/_dark.scss b/src/skins/vector/css/themes/_dark.scss index c140f7079f..60ffeca8ee 100644 --- a/src/skins/vector/css/themes/_dark.scss +++ b/src/skins/vector/css/themes/_dark.scss @@ -29,12 +29,13 @@ $preview-bar-bg-color: #333; // left-panel style muted accent color $secondary-accent-color: $primary-bg-color; +$tertiary-accent-color: #454545; // stop the tinter trying to change the secondary accent color // by overriding the key to something untintable // XXX: this is a bit of a hack. #mx_theme_secondaryAccentColor { - color: #c0ff33 ! important; // deliberately off by one + color: #c0ffee ! important; } #mx_theme_tertiaryAccentColor { @@ -103,14 +104,14 @@ $roomtile-selected-bg-color: rgba(255, 255, 255, 0.05); $roomtile-focused-bg-color: rgba(255, 255, 255, 0.2); $roomsublist-label-fg-color: $h3-color; -$roomsublist-label-bg-color: #454545; +$roomsublist-label-bg-color: $tertiary-accent-color; $roomsublist-chevron-color: $accent-color; $panel-divider-color: rgba(118, 207, 166, 0.2); // ******************** -$widget-menu-bar-bg-color: #454545; +$widget-menu-bar-bg-color: $tertiary-accent-color; // ******************** From 4e7a1e9653b76f8a0a36d81d14a9205b4cfed987 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Thu, 30 Nov 2017 11:07:27 +0000 Subject: [PATCH 112/126] Correctly position TagPanel createGroupButton --- .../vector/css/matrix-react-sdk/structures/_TagPanel.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_TagPanel.scss b/src/skins/vector/css/matrix-react-sdk/structures/_TagPanel.scss index 6c8f7197d7..b557710b26 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_TagPanel.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_TagPanel.scss @@ -63,9 +63,9 @@ limitations under the License. } .mx_TagPanel_createGroupButton { - cursor: pointer; opacity: 0.5; - margin-bottom: 12px; + margin-bottom: 17px; + height: 25px; } .mx_TagPanel_createGroupButton:hover { From 1ccffb7e58497665fdd7b7558eee050907c9ca11 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Fri, 1 Dec 2017 10:56:25 +0000 Subject: [PATCH 113/126] Update imports for accessing KeyCode --- src/components/structures/LeftPanel.js | 2 +- src/components/structures/RoomSubList.js | 2 +- src/components/structures/SearchBox.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/structures/LeftPanel.js b/src/components/structures/LeftPanel.js index 60f07a62c8..fa3a593c6b 100644 --- a/src/components/structures/LeftPanel.js +++ b/src/components/structures/LeftPanel.js @@ -20,7 +20,7 @@ import React from 'react'; import { DragDropContext } from 'react-dnd'; import HTML5Backend from 'react-dnd-html5-backend'; import classNames from 'classnames'; -import KeyCode from 'matrix-react-sdk/lib/KeyCode'; +import { KeyCode } from 'matrix-react-sdk/lib/Keyboard'; import sdk from 'matrix-react-sdk'; import dis from 'matrix-react-sdk/lib/dispatcher'; import MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg'; diff --git a/src/components/structures/RoomSubList.js b/src/components/structures/RoomSubList.js index c3f51bc815..e1b2f96eb5 100644 --- a/src/components/structures/RoomSubList.js +++ b/src/components/structures/RoomSubList.js @@ -30,7 +30,7 @@ var RoomNotifs = require('matrix-react-sdk/lib/RoomNotifs'); var FormattingUtils = require('matrix-react-sdk/lib/utils/FormattingUtils'); var AccessibleButton = require('matrix-react-sdk/lib/components/views/elements/AccessibleButton'); import Modal from 'matrix-react-sdk/lib/Modal'; -import KeyCode from 'matrix-react-sdk/lib/KeyCode'; +import { KeyCode } from 'matrix-react-sdk/lib/Keyboard'; // turn this on for drop & drag console debugging galore var debug = false; diff --git a/src/components/structures/SearchBox.js b/src/components/structures/SearchBox.js index 7de3958a59..2d6e6ae04c 100644 --- a/src/components/structures/SearchBox.js +++ b/src/components/structures/SearchBox.js @@ -18,7 +18,7 @@ limitations under the License. import React from 'react'; import { _t } from 'matrix-react-sdk/lib/languageHandler'; -import KeyCode from 'matrix-react-sdk/lib/KeyCode'; +import { KeyCode } from 'matrix-react-sdk/lib/Keyboard'; import sdk from 'matrix-react-sdk'; import dis from 'matrix-react-sdk/lib/dispatcher'; import rate_limited_func from 'matrix-react-sdk/lib/ratelimitedfunc'; From a24c42b3a8a20dcc1786c9af34548350e97ceddd Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Fri, 1 Dec 2017 11:04:46 +0000 Subject: [PATCH 114/126] Realign collpased BottomLeftMenu with create group button --- src/skins/vector/css/vector-web/structures/_LeftPanel.scss | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/skins/vector/css/vector-web/structures/_LeftPanel.scss b/src/skins/vector/css/vector-web/structures/_LeftPanel.scss index 29786fadda..8ae1fe152c 100644 --- a/src/skins/vector/css/vector-web/structures/_LeftPanel.scss +++ b/src/skins/vector/css/vector-web/structures/_LeftPanel.scss @@ -44,6 +44,7 @@ limitations under the License. .mx_LeftPanel.collapsed .mx_BottomLeftMenu { flex: 0 0 160px; + margin-bottom: 9px; } .mx_LeftPanel .mx_BottomLeftMenu { @@ -77,6 +78,7 @@ limitations under the License. .mx_BottomLeftMenu_options .mx_RoleButton { margin-left: 0px; margin-right: 10px; + height: 30px; } .mx_BottomLeftMenu_options .mx_BottomLeftMenu_settings { From cc4890f0b864d5a568f1a6bdafd090dbc3a8c323 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Fri, 1 Dec 2017 14:12:31 +0000 Subject: [PATCH 115/126] Fix TagPanel bg on status theme --- src/skins/vector/themes/status/css/_status.scss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/skins/vector/themes/status/css/_status.scss b/src/skins/vector/themes/status/css/_status.scss index bd05efa020..ed60b83d63 100644 --- a/src/skins/vector/themes/status/css/_status.scss +++ b/src/skins/vector/themes/status/css/_status.scss @@ -85,6 +85,7 @@ $preview-bar-bg-color: #f7f7f7; // left-panel style muted accent color $secondary-accent-color: #586C7B; +$tertiary-accent-color: #DBEBF6; // stop the tinter trying to change the secondary accent color // by overriding the key to something untintable @@ -236,7 +237,7 @@ $progressbar-color: #000; .mx_RoomSubList_label { font-size: 13px; font-family: $header-font-family; - letter-spacing: 1px; + letter-spacing: 1px; } // FIXME: all these ! importants are horrid - we should instead go and define From e80c4fadea7cc60488bf4a17e9b34ea70ef4914a Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Fri, 1 Dec 2017 18:18:48 +0000 Subject: [PATCH 116/126] Linting --- src/components/structures/RoomSubList.js | 29 +++++++++++------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/src/components/structures/RoomSubList.js b/src/components/structures/RoomSubList.js index e1b2f96eb5..9ad265dc0b 100644 --- a/src/components/structures/RoomSubList.js +++ b/src/components/structures/RoomSubList.js @@ -327,40 +327,37 @@ var RoomSubList = React.createClass({ }, calcManualOrderTagData: function(room) { - var index = this.state.sortedList.indexOf(room); + const index = this.state.sortedList.indexOf(room); // we sort rooms by the lexicographic ordering of the 'order' metadata on their tags. // for convenience, we calculate this for now a floating point number between 0.0 and 1.0. - var orderA = 0.0; // by default we're next to the beginning of the list + let orderA = 0.0; // by default we're next to the beginning of the list if (index > 0) { - var prevTag = this.state.sortedList[index - 1].tags[this.props.tagName]; + const prevTag = this.state.sortedList[index - 1].tags[this.props.tagName]; if (!prevTag) { - console.error("Previous room in sublist is not tagged to be in this list. This should never happen.") - } - else if (prevTag.order === undefined) { + console.error("Previous room in sublist is not tagged to be in this list. This should never happen."); + } else if (prevTag.order === undefined) { console.error("Previous room in sublist has no ordering metadata. This should never happen."); - } - else { + } else { orderA = prevTag.order; } } - var orderB = 1.0; // by default we're next to the end of the list too + let orderB = 1.0; // by default we're next to the end of the list too if (index < this.state.sortedList.length - 1) { - var nextTag = this.state.sortedList[index + 1].tags[this.props.tagName]; + const nextTag = this.state.sortedList[index + 1].tags[this.props.tagName]; if (!nextTag) { - console.error("Next room in sublist is not tagged to be in this list. This should never happen.") - } - else if (nextTag.order === undefined) { + console.error("Next room in sublist is not tagged to be in this list. This should never happen."); + } else if (nextTag.order === undefined) { console.error("Next room in sublist has no ordering metadata. This should never happen."); - } - else { + } else { orderB = nextTag.order; } } - var order = (orderA + orderB) / 2.0; + const order = (orderA + orderB) / 2.0; + if (order === orderA || order === orderB) { console.error("Cannot describe new list position. This should be incredibly unlikely."); // TODO: renumber the list From b0d115a64ac35b2a87fdcc11c7d7eec4f4228836 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Fri, 1 Dec 2017 18:20:38 +0000 Subject: [PATCH 117/126] Implement renumeration of ordered tags upon collision I was being bitten by this enough for me to want to fix it. This implementation really ought to be improved such that it doesnt tend towards being broken the more it is used. --- src/components/structures/RoomSubList.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/components/structures/RoomSubList.js b/src/components/structures/RoomSubList.js index 9ad265dc0b..251c65226c 100644 --- a/src/components/structures/RoomSubList.js +++ b/src/components/structures/RoomSubList.js @@ -360,7 +360,13 @@ var RoomSubList = React.createClass({ if (order === orderA || order === orderB) { console.error("Cannot describe new list position. This should be incredibly unlikely."); - // TODO: renumber the list + this.state.sortedList.forEach((room, index) => { + MatrixClientPeg.get().setRoomTag( + room.roomId, this.props.tagName, + {order: index / this.state.sortedList.length}, + ); + }); + return index / this.state.sortedList.length; } return order; From 380625241e7d7ac6bb35f7bb1c85d6a6234c1b62 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Sun, 3 Dec 2017 11:25:52 +0000 Subject: [PATCH 118/126] Green camera icon --- src/skins/vector/img/camera_green.svg | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 src/skins/vector/img/camera_green.svg diff --git a/src/skins/vector/img/camera_green.svg b/src/skins/vector/img/camera_green.svg new file mode 100644 index 0000000000..5aae5502cd --- /dev/null +++ b/src/skins/vector/img/camera_green.svg @@ -0,0 +1,15 @@ + + + + + + From 1a0c0af447a908377fd526f9eacfdde84d06ccfa Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Mon, 4 Dec 2017 12:25:54 +0000 Subject: [PATCH 119/126] Bump js-sdk to 0.9.2, react-sdk to 0.11.3 --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index e6d3e1f253..a4ca44ad6b 100644 --- a/package.json +++ b/package.json @@ -68,8 +68,8 @@ "gfm.css": "^1.1.1", "highlight.js": "^9.0.0", "linkifyjs": "^2.1.3", - "matrix-js-sdk": "0.9.1", - "matrix-react-sdk": "0.11.2", + "matrix-js-sdk": "0.9.2", + "matrix-react-sdk": "0.11.3", "modernizr": "^3.1.0", "pako": "^1.0.5", "prop-types": "^15.5.10", From e0ae266bb2f367aa1701b986473cf082aa6ccdf7 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 5 Dec 2017 18:07:19 +0000 Subject: [PATCH 120/126] Make cursor pointer on menubar mouseover. --- .../vector/css/matrix-react-sdk/views/rooms/_AppsDrawer.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_AppsDrawer.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_AppsDrawer.scss index 8376cea739..975d16f623 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_AppsDrawer.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_AppsDrawer.scss @@ -85,6 +85,7 @@ limitations under the License. flex-direction: row; align-items: center; justify-content: space-between; + cursor: pointer; } .mx_AppTileMenuBarWidgets { From c37c50e1e03e7290eb4ab371f7004aa6d902c384 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 5 Dec 2017 18:07:49 +0000 Subject: [PATCH 121/126] Add maximise and minimise icons --- src/skins/vector/img/maximize.svg | 9 +++++++++ src/skins/vector/img/minimize.svg | 8 ++++++++ 2 files changed, 17 insertions(+) create mode 100644 src/skins/vector/img/maximize.svg create mode 100644 src/skins/vector/img/minimize.svg diff --git a/src/skins/vector/img/maximize.svg b/src/skins/vector/img/maximize.svg new file mode 100644 index 0000000000..4f9e10191f --- /dev/null +++ b/src/skins/vector/img/maximize.svg @@ -0,0 +1,9 @@ + + + + + + diff --git a/src/skins/vector/img/minimize.svg b/src/skins/vector/img/minimize.svg new file mode 100644 index 0000000000..410b0bc08e --- /dev/null +++ b/src/skins/vector/img/minimize.svg @@ -0,0 +1,8 @@ + + + + + + From 0ff5d6118981b6a9f4f50405f7eaba65b07fdb41 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 5 Dec 2017 18:44:24 +0000 Subject: [PATCH 122/126] Don't capture pointer events. --- .../css/matrix-react-sdk/views/rooms/_AppsDrawer.scss | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_AppsDrawer.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_AppsDrawer.scss index 975d16f623..2d61ca7743 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_AppsDrawer.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_AppsDrawer.scss @@ -88,12 +88,20 @@ limitations under the License. cursor: pointer; } +.mx_AppTileMenuBarTitle { + display: flex; + flex-direction: row; + align-items: center; + pointer-events: none; +} + .mx_AppTileMenuBarWidgets { float: right; display: flex; flex-direction: row; align-items: center; } + .mx_AppTileMenuBarWidget { // pointer-events: none; cursor: pointer; From 608a359e0a9ca7b3798cf860c0b11ee6ede14097 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Wed, 6 Dec 2017 14:54:35 +0000 Subject: [PATCH 123/126] Move DND wrapper to top level component --- src/components/structures/LeftPanel.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/components/structures/LeftPanel.js b/src/components/structures/LeftPanel.js index fa3a593c6b..f78835b45b 100644 --- a/src/components/structures/LeftPanel.js +++ b/src/components/structures/LeftPanel.js @@ -17,8 +17,6 @@ limitations under the License. 'use strict'; import React from 'react'; -import { DragDropContext } from 'react-dnd'; -import HTML5Backend from 'react-dnd-html5-backend'; import classNames from 'classnames'; import { KeyCode } from 'matrix-react-sdk/lib/Keyboard'; import sdk from 'matrix-react-sdk'; @@ -199,4 +197,4 @@ var LeftPanel = React.createClass({ } }); -module.exports = DragDropContext(HTML5Backend)(LeftPanel); +module.exports = LeftPanel; From 25bfb52e7e7544df64637da25debe08267fd2efd Mon Sep 17 00:00:00 2001 From: pafcu Date: Tue, 12 Dec 2017 19:49:48 +0100 Subject: [PATCH 124/126] Instructions on security issues It's not good to put potentially sensitive security issues in the public bug tracker, so advice to use security@matrix.org instead --- .github/ISSUE_TEMPLATE.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 7e1d380cba..ba4adf39f0 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -1,3 +1,5 @@ + +