diff --git a/res/css/_components.scss b/res/css/_components.scss
index 44c63b9df7..dca003918c 100644
--- a/res/css/_components.scss
+++ b/res/css/_components.scss
@@ -116,6 +116,7 @@
@import "./views/elements/_RoomAliasField.scss";
@import "./views/elements/_Slider.scss";
@import "./views/elements/_Spinner.scss";
+@import "./views/elements/_StyledCheckbox.scss";
@import "./views/elements/_SyntaxHighlight.scss";
@import "./views/elements/_TextWithTooltip.scss";
@import "./views/elements/_ToggleSwitch.scss";
diff --git a/res/css/_font-sizes.scss b/res/css/_font-sizes.scss
index 76a9b16425..2d7ab67e40 100644
--- a/res/css/_font-sizes.scss
+++ b/res/css/_font-sizes.scss
@@ -15,6 +15,7 @@ limitations under the License.
*/
$font-1px: 0.067rem;
+$font-1-5px: 0.100rem;
$font-2px: 0.133rem;
$font-3px: 0.200rem;
$font-4px: 0.267rem;
diff --git a/res/css/views/dialogs/_GroupAddressPicker.scss b/res/css/views/dialogs/_GroupAddressPicker.scss
index 20a7cc1047..5fa18931f0 100644
--- a/res/css/views/dialogs/_GroupAddressPicker.scss
+++ b/res/css/views/dialogs/_GroupAddressPicker.scss
@@ -18,8 +18,3 @@ limitations under the License.
margin-top: 10px;
display: flex;
}
-
-.mx_GroupAddressPicker_checkboxContainer input[type="checkbox"] {
- /* Stop flex from shrinking the checkbox */
- width: 20px;
-}
diff --git a/res/css/views/elements/_StyledCheckbox.scss b/res/css/views/elements/_StyledCheckbox.scss
new file mode 100644
index 0000000000..14081f1e99
--- /dev/null
+++ b/res/css/views/elements/_StyledCheckbox.scss
@@ -0,0 +1,66 @@
+/*
+Copyright 2020 The Matrix.org Foundation C.I.C.
+
+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_Checkbox {
+ $size: $font-16px;
+ $border-size: $font-1-5px;
+ $border-radius: $font-4px;
+
+ display: flex;
+ align-items: flex-start;
+
+ input[type=checkbox] {
+ display: none;
+
+ & + label {
+ display: flex;
+ align-items: center;
+
+ flex-grow: 1;
+ }
+
+ & + label > .mx_Checkbox_background {
+ display: inline-flex;
+ position: relative;
+
+ flex-shrink: 0;
+
+ height: $size;
+ width: $size;
+ size: 0.5rem;
+
+ border: $border-size solid rgba($muted-fg-color, 0.5);
+ box-sizing: border-box;
+ border-radius: $border-radius;
+
+ img {
+ height: 100%;
+ width: 100%;
+ filter: invert(100%);
+ }
+ }
+
+ &:checked + label > .mx_Checkbox_background {
+ background: $accent-color;
+ border-color: $accent-color;
+ }
+
+ & + label > *:not(.mx_Checkbox_background) {
+ margin-left: 10px;
+ }
+ }
+}
diff --git a/src/GroupAddressPicker.js b/src/GroupAddressPicker.js
index 2928137f9d..e7ae3217bb 100644
--- a/src/GroupAddressPicker.js
+++ b/src/GroupAddressPicker.js
@@ -22,6 +22,7 @@ import { _t } from './languageHandler';
import {MatrixClientPeg} from './MatrixClientPeg';
import GroupStore from './stores/GroupStore';
import {allSettled} from "./utils/promise";
+import StyledCheckbox from './components/views/elements/StyledCheckbox';
export function showGroupInviteDialog(groupId) {
return new Promise((resolve, reject) => {
@@ -61,12 +62,12 @@ export function showGroupAddRoomDialog(groupId) {
{ _t("Which rooms would you like to add to this community?") }
;
- const checkboxContainer = ;
+ const checkboxContainer =
+ { _t("Show these rooms to non-members on the community page and room list?") }
+ ;
const AddressPickerDialog = sdk.getComponent("dialogs.AddressPickerDialog");
Modal.createTrackedDialog('Add Rooms to Group', '', AddressPickerDialog, {
diff --git a/src/components/views/auth/InteractiveAuthEntryComponents.js b/src/components/views/auth/InteractiveAuthEntryComponents.js
index 655452fcee..b1fb5a6f60 100644
--- a/src/components/views/auth/InteractiveAuthEntryComponents.js
+++ b/src/components/views/auth/InteractiveAuthEntryComponents.js
@@ -355,6 +355,7 @@ export const TermsAuthEntry = createReactClass({
allChecked = allChecked && checked;
checkboxes.push(
+ // XXX: replace with StyledCheckbox