mirror of https://github.com/vector-im/riot-web
Revamp notification dot for better readibility (#8197)
parent
39f001e7f5
commit
1758450e5c
|
@ -93,7 +93,8 @@ limitations under the License.
|
||||||
mask-position: center;
|
mask-position: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
$dot-size: 7px;
|
$dot-size: 8px;
|
||||||
|
$dot-offset: -3px;
|
||||||
$pulse-color: $alert;
|
$pulse-color: $alert;
|
||||||
|
|
||||||
.mx_RightPanel_pinnedMessagesButton {
|
.mx_RightPanel_pinnedMessagesButton {
|
||||||
|
@ -104,8 +105,8 @@ $pulse-color: $alert;
|
||||||
}
|
}
|
||||||
.mx_RightPanel_headerButton_unreadIndicator_bg {
|
.mx_RightPanel_headerButton_unreadIndicator_bg {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 0;
|
right: $dot-offset;
|
||||||
top: 0;
|
top: $dot-offset;
|
||||||
margin: 4px;
|
margin: 4px;
|
||||||
width: $dot-size;
|
width: $dot-size;
|
||||||
height: $dot-size;
|
height: $dot-size;
|
||||||
|
@ -117,8 +118,8 @@ $pulse-color: $alert;
|
||||||
|
|
||||||
.mx_RightPanel_headerButton_unreadIndicator {
|
.mx_RightPanel_headerButton_unreadIndicator {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 0;
|
right: $dot-offset;
|
||||||
top: 0;
|
top: $dot-offset;
|
||||||
margin: 4px;
|
margin: 4px;
|
||||||
width: $dot-size;
|
width: $dot-size;
|
||||||
height: $dot-size;
|
height: $dot-size;
|
||||||
|
@ -135,13 +136,13 @@ $pulse-color: $alert;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.mx_Indicator_gray {
|
&.mx_Indicator_gray {
|
||||||
background: rgba($roomtile-default-badge-bg-color, 1);
|
background: rgba($room-icon-unread-color, 1);
|
||||||
box-shadow: rgba($roomtile-default-badge-bg-color, 1);
|
box-shadow: rgba($room-icon-unread-color, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
&.mx_Indicator_bold {
|
&.mx_Indicator_bold {
|
||||||
background: rgba($input-darker-fg-color, 1);
|
background: rgba($primary-content, 1);
|
||||||
box-shadow: rgba($input-darker-fg-color, 1);
|
box-shadow: rgba($primary-content, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
&::after {
|
&::after {
|
||||||
|
@ -197,7 +198,14 @@ $pulse-color: $alert;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.mx_RightPanel_headerButton_highlight {
|
.mx_RightPanel_headerButton_unread {
|
||||||
|
&::before {
|
||||||
|
background-color: $room-icon-unread-color !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.mx_RightPanel_headerButton_highlight,
|
||||||
|
.mx_RightPanel_headerButton:hover {
|
||||||
&::before {
|
&::before {
|
||||||
background-color: $accent !important;
|
background-color: $accent !important;
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,7 +70,7 @@ $left-gutter: 64px;
|
||||||
}
|
}
|
||||||
|
|
||||||
&[data-shape=ThreadsList][data-notification=total]::before {
|
&[data-shape=ThreadsList][data-notification=total]::before {
|
||||||
background-color: $roomtile-default-badge-bg-color;
|
background-color: $room-icon-unread-color;
|
||||||
}
|
}
|
||||||
|
|
||||||
&[data-shape=ThreadsList][data-notification=highlight]::before {
|
&[data-shape=ThreadsList][data-notification=highlight]::before {
|
||||||
|
|
|
@ -79,6 +79,11 @@ $settings-profile-button-bg-color: #e7e7e7;
|
||||||
$settings-subsection-fg-color: $text-secondary-color;
|
$settings-subsection-fg-color: $text-secondary-color;
|
||||||
// ********************
|
// ********************
|
||||||
|
|
||||||
|
// Room
|
||||||
|
// ********************
|
||||||
|
$room-icon-unread-color: #fff;
|
||||||
|
// ********************
|
||||||
|
|
||||||
// RoomHeader
|
// RoomHeader
|
||||||
// ********************
|
// ********************
|
||||||
$roomheader-addroom-bg-color: rgba(92, 100, 112, 0.3);
|
$roomheader-addroom-bg-color: rgba(92, 100, 112, 0.3);
|
||||||
|
|
|
@ -85,6 +85,7 @@ $roomheader-addroom-bg-color: #3c4556;
|
||||||
$roomheader-addroom-fg-color: $text-primary-color;
|
$roomheader-addroom-fg-color: $text-primary-color;
|
||||||
$icon-button-color: $header-panel-text-primary-color;
|
$icon-button-color: $header-panel-text-primary-color;
|
||||||
$roomtopic-color: $text-secondary-color;
|
$roomtopic-color: $text-secondary-color;
|
||||||
|
$room-icon-unread-color: #fff;
|
||||||
|
|
||||||
// Legacy theme backports
|
// Legacy theme backports
|
||||||
$accent: #0DBD8B;
|
$accent: #0DBD8B;
|
||||||
|
|
|
@ -127,6 +127,7 @@ $roomheader-addroom-bg-color: #91a1c0;
|
||||||
$roomheader-addroom-fg-color: $accent-fg-color;
|
$roomheader-addroom-fg-color: $accent-fg-color;
|
||||||
$icon-button-color: #91a1c0;
|
$icon-button-color: #91a1c0;
|
||||||
$roomtopic-color: #9e9e9e;
|
$roomtopic-color: #9e9e9e;
|
||||||
|
$room-icon-unread-color: #737D8C;
|
||||||
|
|
||||||
// ********************
|
// ********************
|
||||||
|
|
||||||
|
|
|
@ -118,6 +118,11 @@ $settings-profile-button-bg-color: $menu-border-color;
|
||||||
$settings-subsection-fg-color: $muted-fg-color;
|
$settings-subsection-fg-color: $muted-fg-color;
|
||||||
// ********************
|
// ********************
|
||||||
|
|
||||||
|
// Room
|
||||||
|
// ********************
|
||||||
|
$room-icon-unread-color: $secondary-content;
|
||||||
|
// ********************
|
||||||
|
|
||||||
// RoomHeader
|
// RoomHeader
|
||||||
// ********************
|
// ********************
|
||||||
$roomheader-addroom-bg-color: rgba(92, 100, 112, 0.2);
|
$roomheader-addroom-bg-color: rgba(92, 100, 112, 0.2);
|
||||||
|
|
|
@ -29,6 +29,7 @@ import { ButtonEvent } from "../elements/AccessibleButton";
|
||||||
interface IProps {
|
interface IProps {
|
||||||
// Whether this button is highlighted
|
// Whether this button is highlighted
|
||||||
isHighlighted: boolean;
|
isHighlighted: boolean;
|
||||||
|
isUnread?: boolean;
|
||||||
// click handler
|
// click handler
|
||||||
onClick: (ev: ButtonEvent) => void;
|
onClick: (ev: ButtonEvent) => void;
|
||||||
// The parameters to track the click event
|
// The parameters to track the click event
|
||||||
|
@ -50,11 +51,12 @@ export default class HeaderButton extends React.Component<IProps> {
|
||||||
|
|
||||||
public render() {
|
public render() {
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||||
const { isHighlighted, onClick, analytics, name, title, ...props } = this.props;
|
const { isHighlighted, isUnread = false, onClick, analytics, name, title, ...props } = this.props;
|
||||||
|
|
||||||
const classes = classNames({
|
const classes = classNames({
|
||||||
mx_RightPanel_headerButton: true,
|
mx_RightPanel_headerButton: true,
|
||||||
mx_RightPanel_headerButton_highlight: isHighlighted,
|
mx_RightPanel_headerButton_highlight: isHighlighted,
|
||||||
|
mx_RightPanel_headerButton_unread: isUnread,
|
||||||
[`mx_RightPanel_${name}`]: true,
|
[`mx_RightPanel_${name}`]: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -93,6 +93,7 @@ const PinnedMessagesHeaderButton = ({ room, isHighlighted, onClick }: IHeaderBut
|
||||||
name="pinnedMessagesButton"
|
name="pinnedMessagesButton"
|
||||||
title={_t("Pinned messages")}
|
title={_t("Pinned messages")}
|
||||||
isHighlighted={isHighlighted}
|
isHighlighted={isHighlighted}
|
||||||
|
isUnread={!!unreadIndicator}
|
||||||
onClick={onClick}
|
onClick={onClick}
|
||||||
analytics={["Right Panel", "Pinned Messages Button", "click"]}
|
analytics={["Right Panel", "Pinned Messages Button", "click"]}
|
||||||
>
|
>
|
||||||
|
@ -243,6 +244,7 @@ export default class RoomHeaderButtons extends HeaderButtons<IProps> {
|
||||||
title={_t("Threads")}
|
title={_t("Threads")}
|
||||||
onClick={this.onThreadsPanelClicked}
|
onClick={this.onThreadsPanelClicked}
|
||||||
isHighlighted={this.isPhase(RoomHeaderButtons.THREAD_PHASES)}
|
isHighlighted={this.isPhase(RoomHeaderButtons.THREAD_PHASES)}
|
||||||
|
isUnread={this.threadNotificationState.color > 0}
|
||||||
analytics={['Right Panel', 'Threads List Button', 'click']}>
|
analytics={['Right Panel', 'Threads List Button', 'click']}>
|
||||||
<UnreadIndicator color={this.threadNotificationState.color} />
|
<UnreadIndicator color={this.threadNotificationState.color} />
|
||||||
</HeaderButton>
|
</HeaderButton>
|
||||||
|
|
Loading…
Reference in New Issue