lbry-desktop/ui/scss/component/_notification.scss

416 lines
8 KiB
SCSS
Raw Normal View History

2020-11-03 19:45:36 +01:00
$thumbnailWidth: 4rem;
$contentMaxWidth: 60rem;
2020-11-03 19:45:36 +01:00
2020-07-23 16:22:57 +02:00
.notifications__empty {
background-color: var(--color-card-background);
padding: var(--spacing-l);
}
.notification_list {
2021-08-27 12:29:58 +02:00
.notification__wrapper {
border-radius: var(--border-radius);
margin-bottom: var(--spacing-xxs);
background-color: rgba(var(--color-header-background-base), 0.6);
2020-07-23 16:22:57 +02:00
2021-08-27 12:29:58 +02:00
&:first-of-type {
border-top: none;
2020-07-23 16:22:57 +02:00
}
.notification__menu {
margin-right: var(--spacing-s);
.icon {
stroke: var(--color-text);
}
.menu__button {
.icon {
transition: transform 0.2s;
}
}
[aria-expanded='true'].menu__button {
opacity: 1;
background-color: rgba(var(--color-header-button-base), 0.9);
border-radius: 50%;
outline: 2px solid var(--color-header-background);
.icon {
stroke: var(--color-primary);
transform: rotate(-90deg);
}
}
}
.commentCreate {
border-top: 1px solid var(--color-border);
padding-top: var(--spacing-s);
.commentCreate__label {
color: var(--color-text);
}
textarea,
select,
.button:not(.button--file-action) {
background-color: var(--color-background);
}
.button {
border-radius: var(--border-radius);
}
.comment__char-count-mde {
padding-right: 0px;
}
.button--file-action {
.button__content {
.icon {
background: var(--color-header-button);
}
}
}
}
&:hover {
cursor: pointer;
background-color: rgba(var(--color-header-background-base), 0.9);
.menu__button {
opacity: 1;
}
.notification__text {
color: var(--color-primary);
}
}
@media (max-width: $breakpoint-small) {
.notification__menu {
margin-right: calc(var(--spacing-xs) * -1);
.menu__button {
opacity: 1;
}
}
.MuiAutocomplete-root {
background-color: var(--color-background);
border-radius: var(--border-radius);
}
}
2020-07-23 16:22:57 +02:00
}
2021-08-27 12:29:58 +02:00
.commentCreate,
2021-08-27 12:29:58 +02:00
.comment__content {
margin: var(--spacing-m);
2021-08-26 16:44:00 +02:00
margin-bottom: 0;
2021-08-27 12:29:58 +02:00
}
2020-07-23 16:22:57 +02:00
}
.notification__icon {
2020-11-02 17:51:08 +01:00
display: flex;
align-items: flex-start;
margin-top: var(--spacing-xxs);
2020-11-02 17:51:08 +01:00
.icon__wrapper {
2020-09-18 06:23:42 +02:00
width: 1rem;
height: 1rem;
2020-10-01 22:59:11 +02:00
padding: 1.2rem;
2020-09-18 06:23:42 +02:00
border-radius: var(--border-radius);
margin-right: var(--spacing-m);
2020-09-18 06:23:42 +02:00
@media (min-width: $breakpoint-small) {
padding: 1.5rem;
}
}
2020-11-02 17:51:08 +01:00
@media (min-width: $breakpoint-small) {
align-items: center;
margin-left: var(--spacing-m);
2020-11-02 17:51:08 +01:00
}
2021-08-26 16:44:00 +02:00
@media (max-width: $breakpoint-medium) {
margin-top: var(--spacing-xxs);
}
}
2020-07-23 16:22:57 +02:00
.notification__wrapper {
width: 100%;
display: flex;
padding: var(--spacing-m) 0;
justify-content: space-between;
2021-08-27 12:29:58 +02:00
flex-direction: column;
.channel-thumbnail {
@include handleChannelGif(3rem);
}
2020-08-21 21:44:54 +02:00
.date_time {
font-size: var(--font-small);
}
.icon__wrapper {
background-color: rgba(var(--color-primary-dynamic), 0.1);
}
&:hover {
.icon__wrapper {
background-color: rgba(var(--color-primary-dynamic), 0.2);
}
}
2020-08-21 21:44:54 +02:00
@media (max-width: $breakpoint-small) {
.channel-thumbnail {
@include handleChannelGif(2rem);
}
}
2020-11-13 06:36:23 +01:00
@media (max-width: $breakpoint-small) {
padding: var(--spacing-s);
}
2021-08-26 16:44:00 +02:00
.comment__creator-like {
height: 0.8rem;
width: 0.8rem;
margin-left: 3px;
z-index: 3;
position: absolute;
top: 0.4rem;
left: 0.4rem;
}
2020-08-21 21:44:54 +02:00
}
2020-12-14 19:52:17 +01:00
.notification__wrapper--unread {
box-shadow: 2px 0px 0px 0px rgba(var(--color-primary-dynamic), 0.7) inset;
justify-content: space-between;
2020-08-21 21:44:54 +02:00
@media (max-width: $breakpoint-small) {
padding: var(--spacing-s);
}
&:hover {
box-shadow: 2px 0px 0px 0px rgba(var(--color-primary-dynamic), 1) inset;
}
2020-07-23 16:22:57 +02:00
}
.notificationContent__wrapper {
2020-11-03 19:45:36 +01:00
flex: 1;
display: flex;
justify-content: space-between;
flex-direction: column;
@media (min-width: $breakpoint-small) {
flex-direction: row;
justify-content: space-between;
align-items: center;
}
}
2020-07-23 16:22:57 +02:00
.notification__content {
flex: 1;
2020-09-18 06:23:42 +02:00
display: flex;
flex-direction: column;
2020-11-03 19:45:36 +01:00
justify-content: space-between;
max-width: $contentMaxWidth;
2020-08-21 21:44:54 +02:00
2020-09-18 06:23:42 +02:00
@media (min-width: $breakpoint-small) {
flex-direction: row;
justify-content: space-between;
align-items: center;
2020-08-21 21:44:54 +02:00
}
2020-07-23 16:22:57 +02:00
}
.notificationContent__thumbnail {
2020-11-03 19:45:36 +01:00
@include thumbnail;
position: relative;
margin-left: auto;
height: auto;
width: 100%;
margin-top: var(--spacing-s);
@media (min-width: $breakpoint-small) {
height: thumbnailWidth;
width: calc(#{$thumbnailWidth} * 16 / 9);
max-width: calc(#{$thumbnailWidth} * 16 / 9);
margin-left: var(--spacing-m);
margin-top: 0;
min-width: 0;
}
}
.notificationText__wrapper {
max-width: calc(#{$contentMaxWidth} - (#{$thumbnailWidth} * 16 / 9) - var(--spacing-m));
.sticker__comment {
width: 4.5rem;
height: 4.5rem;
}
2020-11-03 19:45:36 +01:00
}
2020-07-23 16:22:57 +02:00
.notification__title {
position: relative;
font-size: var(--font-xsmall);
color: var(--color-text-subtitle);
// margin-bottom: var(--spacing-xxs);
2020-09-18 06:23:42 +02:00
display: -webkit-box;
2020-11-02 17:51:08 +01:00
-webkit-line-clamp: 1;
2020-09-18 06:23:42 +02:00
-webkit-box-orient: vertical;
overflow: hidden;
2020-08-21 21:44:54 +02:00
Make notification titles translatable ## Issue Desktop 7022: i18n: Notification title localization lost ## Approach The current code breaks up the string into an array of strings, so i18n is somewhat impossible. Since 99%¹ of dynamic notifications come with a `dynamic` property for all the replaceable values, we can actually reconstruct the string however we want. ¹ <sub>_as far as I can find, only `fiat_tip` does not provide the value via `dynamic`, i.e. hardcoded in the string. Boo._</sub> ### Benefits of this approach: - able to localize the string again - able to customize the string (e.g. making claim titles italic, fix typos, use more concise strings, etc.) ### Problems with this approach: - if the api overloads a particular notification type with several strings, then the approach is broken. - Ex. For the case of `comment` type, the overload is whether the comment is a normal comment or hyperchat. But I was able to replicate the logic to differentiate them, so all is good. - For the case of "livestream reminder in 30 minutes", we would have to inspect the string to differentiate against "is live streaming". I think this reminder is not being used, so I didn't do it yet. - some work is needed to maintain the code when the server side updates something. But we are already manually maintaining the i18n strings anyway, so it shouldn't be too much of a burden. - With the exception of the overload problem, any new notification type will simply pass through as un-localized, so things should continue to work, i.e. no need to update the front-end immediately 🤞
2022-02-14 10:04:12 +01:00
.channel-name {
font-size: unset;
}
2020-08-21 21:44:54 +02:00
@media (max-width: $breakpoint-small) {
margin-bottom: 0;
}
2020-07-23 16:22:57 +02:00
}
Make notification titles translatable ## Issue Desktop 7022: i18n: Notification title localization lost ## Approach The current code breaks up the string into an array of strings, so i18n is somewhat impossible. Since 99%¹ of dynamic notifications come with a `dynamic` property for all the replaceable values, we can actually reconstruct the string however we want. ¹ <sub>_as far as I can find, only `fiat_tip` does not provide the value via `dynamic`, i.e. hardcoded in the string. Boo._</sub> ### Benefits of this approach: - able to localize the string again - able to customize the string (e.g. making claim titles italic, fix typos, use more concise strings, etc.) ### Problems with this approach: - if the api overloads a particular notification type with several strings, then the approach is broken. - Ex. For the case of `comment` type, the overload is whether the comment is a normal comment or hyperchat. But I was able to replicate the logic to differentiate them, so all is good. - For the case of "livestream reminder in 30 minutes", we would have to inspect the string to differentiate against "is live streaming". I think this reminder is not being used, so I didn't do it yet. - some work is needed to maintain the code when the server side updates something. But we are already manually maintaining the i18n strings anyway, so it shouldn't be too much of a burden. - With the exception of the overload problem, any new notification type will simply pass through as un-localized, so things should continue to work, i.e. no need to update the front-end immediately 🤞
2022-02-14 10:04:12 +01:00
.notification__claim-title {
font-weight: var(--font-weight-bold);
}
2020-07-23 16:22:57 +02:00
.notification__text {
font-size: var(--font-small);
color: var(--color-text);
2020-08-21 21:44:54 +02:00
display: -webkit-box;
2020-11-02 17:51:08 +01:00
-webkit-line-clamp: 1;
2020-08-21 21:44:54 +02:00
-webkit-box-orient: vertical;
overflow: hidden;
2020-07-23 16:22:57 +02:00
}
2020-11-03 19:45:36 +01:00
.notification__text,
.notification__title {
flex-shrink: 1;
2020-10-01 22:59:11 +02:00
}
Make notification titles translatable ## Issue Desktop 7022: i18n: Notification title localization lost ## Approach The current code breaks up the string into an array of strings, so i18n is somewhat impossible. Since 99%¹ of dynamic notifications come with a `dynamic` property for all the replaceable values, we can actually reconstruct the string however we want. ¹ <sub>_as far as I can find, only `fiat_tip` does not provide the value via `dynamic`, i.e. hardcoded in the string. Boo._</sub> ### Benefits of this approach: - able to localize the string again - able to customize the string (e.g. making claim titles italic, fix typos, use more concise strings, etc.) ### Problems with this approach: - if the api overloads a particular notification type with several strings, then the approach is broken. - Ex. For the case of `comment` type, the overload is whether the comment is a normal comment or hyperchat. But I was able to replicate the logic to differentiate them, so all is good. - For the case of "livestream reminder in 30 minutes", we would have to inspect the string to differentiate against "is live streaming". I think this reminder is not being used, so I didn't do it yet. - some work is needed to maintain the code when the server side updates something. But we are already manually maintaining the i18n strings anyway, so it shouldn't be too much of a burden. - With the exception of the overload problem, any new notification type will simply pass through as un-localized, so things should continue to work, i.e. no need to update the front-end immediately 🤞
2022-02-14 10:04:12 +01:00
.notification__text--replies {
font-style: italic;
blockquote {
padding-left: var(--spacing-xs);
border-left: 2px solid;
color: var(--color-text) !important;
Make notification titles translatable ## Issue Desktop 7022: i18n: Notification title localization lost ## Approach The current code breaks up the string into an array of strings, so i18n is somewhat impossible. Since 99%¹ of dynamic notifications come with a `dynamic` property for all the replaceable values, we can actually reconstruct the string however we want. ¹ <sub>_as far as I can find, only `fiat_tip` does not provide the value via `dynamic`, i.e. hardcoded in the string. Boo._</sub> ### Benefits of this approach: - able to localize the string again - able to customize the string (e.g. making claim titles italic, fix typos, use more concise strings, etc.) ### Problems with this approach: - if the api overloads a particular notification type with several strings, then the approach is broken. - Ex. For the case of `comment` type, the overload is whether the comment is a normal comment or hyperchat. But I was able to replicate the logic to differentiate them, so all is good. - For the case of "livestream reminder in 30 minutes", we would have to inspect the string to differentiate against "is live streaming". I think this reminder is not being used, so I didn't do it yet. - some work is needed to maintain the code when the server side updates something. But we are already manually maintaining the i18n strings anyway, so it shouldn't be too much of a burden. - With the exception of the overload problem, any new notification type will simply pass through as un-localized, so things should continue to work, i.e. no need to update the front-end immediately 🤞
2022-02-14 10:04:12 +01:00
}
}
2020-07-23 16:22:57 +02:00
.notification__time {
font-size: var(--font-small);
color: var(--color-text);
2020-08-21 21:44:54 +02:00
flex-shrink: 0;
2020-09-18 06:23:42 +02:00
margin-top: var(--spacing-s);
@media (min-width: $breakpoint-small) {
margin-left: var(--spacing-s);
margin-top: 0;
}
2020-07-23 16:22:57 +02:00
}
2020-08-10 22:47:39 +02:00
2021-08-27 12:29:58 +02:00
.notification__reactions {
display: flex;
margin: var(--spacing-m);
margin-bottom: 0;
2021-08-26 16:44:00 +02:00
@media (min-width: $breakpoint-small) {
margin-left: 5rem;
}
@media (max-width: $breakpoint-small) {
margin-left: 3rem;
}
2021-08-27 12:29:58 +02:00
> *:not(:last-of-type) {
margin-right: var(--spacing-m);
}
.button__label {
margin-left: var(--spacing-xs);
}
}
2020-08-10 22:47:39 +02:00
.notification__bubble {
height: 1.4rem;
width: 1.4rem;
2020-08-10 22:47:39 +02:00
border-radius: 50%;
border: 1.5px solid var(--color-background);
2020-08-10 22:47:39 +02:00
background-color: var(--color-notification);
position: absolute;
top: -0.4rem;
right: -0.4rem;
2020-08-10 22:47:39 +02:00
color: white;
font-size: var(--font-small);
font-weight: bold;
line-height: 1.4rem;
2020-08-10 22:47:39 +02:00
display: flex;
align-items: center;
justify-content: center;
.notification__count {
margin-bottom: -2px;
}
@media (max-width: $breakpoint-small) {
right: 0rem;
}
2020-08-10 22:47:39 +02:00
}
2020-08-11 22:32:03 +02:00
.notification__bubble--small {
font-size: var(--font-xxsmall);
}
2020-08-11 22:32:03 +02:00
.notification__bubble--inline {
@extend .notification__bubble;
top: 0.75rem;
right: 1rem;
}
.notification__extra {
display: flex;
align-items: center;
justify-content: flex-end;
margin-right: var(--spacing-m);
flex-direction: row-reverse;
@media (min-width: $breakpoint-small) {
margin-left: var(--spacing-s);
margin-top: 0;
flex-direction: row;
}
}
.notification__markSeen {
height: 12px;
width: 12px;
border-radius: 50%;
background-color: var(--color-primary);
margin-left: var(--spacing-s);
2020-10-01 22:59:11 +02:00
margin-top: var(--spacing-s);
@media (min-width: $breakpoint-small) {
margin-top: 0;
}
}
.notification__menu {
margin-right: var(--spacing-m);
.icon {
stroke: var(--color-text-help);
}
}
2021-03-11 23:18:26 +01:00
.notification-page {
@media (max-width: $breakpoint-small) {
.claim-list__header {
display: block;
}
2021-03-11 23:18:26 +01:00
.claim-list__alt-controls--wrap {
display: block;
text-align: right;
.button {
margin-bottom: var(--spacing-s);
}
fieldset-section {
margin-left: 0;
}
}
2021-03-11 23:18:26 +01:00
}
}