This repository has been archived on 2024-07-22. You can view files and clone it, but cannot push or open issues or pull requests.
mastodon/app/assets/stylesheets/components.scss

740 lines
12 KiB
SCSS

.button {
background-color: $color4;
font-family: inherit;
display: inline-block;
position: relative;
box-sizing: border-box;
text-align: center;
border: 10px none;
color: $color5;
font-size: 14px;
font-weight: 500;
letter-spacing: 0;
text-transform: uppercase;
padding: 0 16px;
height: 36px;
cursor: pointer;
line-height: 36px;
border-radius: 4px;
text-decoration: none;
&:hover {
background-color: lighten($color4, 7%);
}
&:disabled {
background-color: $color3;
cursor: default;
}
&.button-secondary {
background-color: $color1;
&:hover {
background-color: $color1;
}
&:disabled {
background-color: $color3;
}
}
}
.icon-button {
color: lighten($color1, 26%);
border: none;
background: transparent;
cursor: pointer;
&:hover {
color: lighten($color1, 33%);
}
&.disabled {
color: lighten($color1, 13%);
cursor: default;
}
&.active {
color: $color4;
}
}
.invisible {
font-size: 0;
line-height: 0;
display: inline-block;
width: 0;
}
.ellipsis {
&:after {
content: "";
}
}
.lightbox .icon-button {
color: $color1;
}
.compose-form__textarea, .follow-form__input {
background: $color5;
&:disabled {
background: $color2;
}
}
.emojione {
display: inline-block;
font-size: inherit;
vertical-align: middle;
margin: -.2ex .15em .2ex;
width: 16px;
height: 16px;
img {
width: auto;
}
}
.status__content, .reply-indicator__content {
font-size: 15px;
line-height: 20px;
word-wrap: break-word;
font-weight: 300;
overflow: hidden;
white-space: pre-wrap;
.emojione {
width: 18px;
height: 18px;
}
p {
margin-bottom: 20px;
&:last-child {
margin-bottom: 0;
}
}
a {
color: $color2;
text-decoration: none;
&:hover {
text-decoration: underline;
}
&.mention {
&:hover {
text-decoration: none;
span {
text-decoration: underline;
}
}
}
}
}
.detailed-status {
.status__content {
font-size: 19px;
line-height: 24px;
.emojione {
width: 22px;
height: 22px;
}
}
}
.reply-indicator__content {
color: $color1;
font-size: 14px;
a {
color: lighten($color1, 20%);
}
}
@media screen and (max-height: 480px) {
.account__header__avatar, .account__header .account__header__content {
display: none;
}
}
.account__header__content {
word-wrap: break-word;
font-weight: 300;
overflow: hidden;
p {
margin-bottom: 20px;
&:last-child {
margin-bottom: 0;
}
}
a {
color: inherit;
text-decoration: underline;
&:hover {
text-decoration: none;
}
}
}
.account__header__display-name {
.emojione {
width: 25px;
height: 25px;
}
}
.status__display-name, .status__relative-time, .detailed-status__display-name, .detailed-status__datetime, .detailed-status__application, .account__display-name {
text-decoration: none;
}
.status__display-name, .account__display-name {
strong {
color: $color5;
}
&.muted {
.emojione {
opacity: 0.5;
}
}
}
.status__display-name, .reply-indicator__display-name, .detailed-status__display-name, .account__display-name {
&:hover {
strong {
text-decoration: underline;
}
}
}
.account__display-name {
strong {
display: block;
}
}
.detailed-status__display-name {
color: $color2;
line-height: 24px;
strong, span {
display: block;
}
strong {
font-size: 16px;
color: $color5;
}
}
.muted {
.status__content p, .status__content a {
color: lighten($color1, 26%);
}
.status__display-name strong {
color: lighten($color1, 26%);
}
.status__avatar {
opacity: 0.5;
}
}
.notification__display-name {
color: inherit;
text-decoration: none;
&:hover {
color: $color5;
text-decoration: underline;
}
}
.status__relative-time, .detailed-status__datetime {
&:hover {
text-decoration: underline;
}
}
.transparent-background {
background: image-url('void.png');
}
.dropdown {
display: inline-block;
}
.dropdown__content {
display: none;
position: absolute;
}
.dropdown--active .dropdown__content {
display: block;
z-index: 9999;
&:before {
content: "";
display: block;
position: absolute;
width: 0;
height: 0;
border-style: solid;
border-width: 0 4.5px 7.8px 4.5px;
border-color: transparent transparent $color2 transparent;
top: -7px;
left: 8px;
}
ul {
list-style: none;
background: $color2;
padding: 4px 0;
border-radius: 4px;
box-shadow: 0 0 15px rgba($color8, 0.4);
min-width: 100px;
}
a {
font-size: 13px;
display: block;
padding: 6px 16px;
width: 100px;
text-decoration: none;
background: $color2;
color: $color1;
&:hover {
background: $color4;
color: $color2;
}
}
}
.static-content {
padding: 10px;
padding-top: 20px;
color: lighten($color1, 26%);
h1 {
font-size: 16px;
font-weight: 500;
margin-bottom: 40px;
text-align: center;
}
p {
font-size: 13px;
margin-bottom: 20px;
}
}
.columns-area {
flex-direction: row;
}
@media screen and (min-width: 360px) {
.columns-area {
margin: 10px;
}
}
.column {
width: 330px;
position: relative;
}
.drawer {
width: 280px;
}
.drawer__inner {
background: linear-gradient(rgba(lighten($color1, 13%), 1), rgba(lighten($color1, 13%), 0.65));
}
.drawer__header {
flex: 0 0 auto;
font-size: 16px;
background: lighten($color1, 8%);
margin-bottom: 10px;
display: flex;
flex-direction: row;
a {
transition: all 100ms ease-in;
&:hover {
background: lighten($color1, 3%);
transition: all 200ms ease-out;
}
}
}
.column, .drawer {
margin-left: 5px;
margin-right: 5px;
flex: 0 0 auto;
overflow: hidden;
}
.column:first-child, .drawer:first-child {
margin-left: 0;
}
.column:last-child, .drawer:last-child {
margin-right: 0;
}
@media screen and (max-width: 1024px) {
.column, .drawer {
width: 100%;
margin: 0;
flex: 1 1 100%;
}
.columns-area {
flex-direction: column;
}
}
.tabs-bar {
display: flex;
}
@media screen and (min-width: 360px) {
.tabs-bar {
margin: 10px;
margin-bottom: 0;
}
}
@media screen and (min-width: 1025px) {
.tabs-bar {
display: none;
}
}
.react-autosuggest__container {
position: relative;
}
.react-autosuggest__suggestions-container {
position: absolute;
top: 100%;
width: 100%;
z-index: 99;
box-shadow: 0 0 15px rgba($color8, 0.4);
}
.react-autosuggest__section-title {
background: $color3;
padding: 4px 10px;
font-weight: 500;
cursor: default;
color: $color1;
text-transform: uppercase;
font-size: 11px;
}
.react-autosuggest__suggestions-list {
background: $color2;
color: $color1;
font-size: 14px;
}
.react-autosuggest__suggestion {
padding: 10px;
cursor: pointer;
}
.react-autosuggest__suggestion--focused {
background: $color4;
color: $color5;
}
.scrollable {
overflow-y: scroll;
overflow-x: hidden;
flex: 1 1 auto;
-webkit-overflow-scrolling: touch;
&.optionally-scrollable {
overflow-y: auto;
}
}
.column-back-button {
&:hover {
text-decoration: underline;
}
}
.react-toggle {
display: inline-block;
position: relative;
cursor: pointer;
background-color: transparent;
border: 0;
padding: 0;
user-select: none;
-webkit-tap-highlight-color: rgba($color8, 0);
-webkit-tap-highlight-color: transparent;
}
.react-toggle-screenreader-only {
border: 0;
clip: rect(0 0 0 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px;
}
.react-toggle--disabled {
cursor: not-allowed;
opacity: 0.5;
transition: opacity 0.25s;
}
.react-toggle-track {
width: 50px;
height: 24px;
padding: 0;
border-radius: 30px;
background-color: $color1;
transition: all 0.2s ease;
}
.react-toggle:hover:not(.react-toggle--disabled) .react-toggle-track {
background-color: darken($color1, 10%);
}
.react-toggle--checked .react-toggle-track {
background-color: $color4;
}
.react-toggle--checked:hover:not(.react-toggle--disabled) .react-toggle-track {
background-color: lighten($color4, 10%);
}
.react-toggle-track-check {
position: absolute;
width: 14px;
height: 10px;
top: 0px;
bottom: 0px;
margin-top: auto;
margin-bottom: auto;
line-height: 0;
left: 8px;
opacity: 0;
transition: opacity 0.25s ease;
}
.react-toggle--checked .react-toggle-track-check {
opacity: 1;
transition: opacity 0.25s ease;
}
.react-toggle-track-x {
position: absolute;
width: 10px;
height: 10px;
top: 0px;
bottom: 0px;
margin-top: auto;
margin-bottom: auto;
line-height: 0;
right: 10px;
opacity: 1;
transition: opacity 0.25s ease;
}
.react-toggle--checked .react-toggle-track-x {
opacity: 0;
}
.react-toggle-thumb {
transition: all 0.5s cubic-bezier(0.23, 1, 0.32, 1) 0ms;
position: absolute;
top: 1px;
left: 1px;
width: 22px;
height: 22px;
border: 1px solid $color1;
border-radius: 50%;
background-color: darken($color5, 2%);
box-sizing: border-box;
transition: all 0.25s ease;
}
.react-toggle--checked .react-toggle-thumb {
left: 27px;
border-color: $color4;
}
.column-link {
background: lighten($color1, 6%);
&:hover {
background: lighten($color1, 11%);
}
}
.autosuggest-textarea, .spoiler-input {
position: relative;
}
.autosuggest-textarea__textarea, .spoiler-input__input {
display: block;
box-sizing: border-box;
width: 100%;
resize: none;
margin: 0;
color: $color1;
padding: 7px;
font-family: inherit;
font-size: 14px;
resize: vertical;
border: 3px dashed transparent;
transition: border-color 0.3s ease;
&.file-drop {
border-color: darken($color5, 33%);
}
}
.autosuggest-textarea__textarea {
height: 100px;
}
.autosuggest-textarea__suggestions {
position: absolute;
top: 100%;
width: 100%;
z-index: 99;
box-shadow: 0 0 15px rgba($color8, 0.4);
background: $color2;
color: $color1;
font-size: 14px;
}
.autosuggest-textarea__suggestions__item {
padding: 10px;
cursor: pointer;
&:hover {
background: darken($color2, 10%);
}
&.selected {
background: $color4;
color: $color5;
}
}
.getting-started {
box-sizing: border-box;
overflow-y: auto;
padding-bottom: 235px;
background: image-url('mastodon-getting-started.png') no-repeat 0 100% local;
height: 100%;
}
.dropdown__content.dropdown__left {
transform: translateX(-108px);
&::before {
right: 8px !important;
left: initial !important;
}
}
.setting-text {
color: $color3;
background: transparent;
border: none;
border-bottom: 2px solid $color3;
&:focus, &:active {
color: $color5;
border-bottom-color: $color4;
}
}
.spoiler-helper {
margin-bottom: -20px !important;
}
.spoiler {
&::before {
margin-top: 20px;
display: block;
content: '';
}
display: inline;
cursor: pointer;
border-bottom: 1px dashed white;
.light & {
border-bottom: 1px dashed black;
}
&.spoiler-on {
&, & * {
color: transparent !important;
}
background: white;
.light & {
background: black;
}
.emojione {
opacity: 0;
}
}
}
@import 'boost';
button i.fa-retweet {
height: 19px;
width: 22px;
background-position: 0 0;
transition: background-position 0.9s steps(10);
transition-duration: 0s;
&::before {
display: none !important;
}
}
button.active i.fa-retweet {
transition-duration: 0.9s;
background-position: 0 100%;
}
.status-card {
&:hover {
background: lighten($color1, 6%);
}
}