1
0
mirror of https://github.com/mastodon/mastodon synced 2024-11-25 07:36:31 +09:00
mastodon/app/assets/stylesheets/components.scss

1129 lines
18 KiB
SCSS

.button {
background-color: darken($color4, 3%);
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 {
//
}
}
.column-icon {
color: $color3;
background: lighten($color1, 4%);
&:hover {
color: lighten($color3, 7%);
}
}
.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__label {
display: block;
line-height: 24px;
vertical-align: middle;
&.with-border {
border-top: 1px solid $color1;
padding-top: 10px;
}
.compose-form__label__text {
display: inline-block;
vertical-align: middle;
margin-bottom: 14px;
margin-left: 8px;
color: $color3;
}
}
.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;
}
}
.reply-indicator {
background: $color3;
padding: 10px;
.reply-indicator__display-name {
color: $color1;
}
}
.status__content, .reply-indicator__content {
font-size: 15px;
line-height: 20px;
word-wrap: break-word;
font-weight: 400;
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;
.fa {
color: lighten($color1, 40%);
}
}
&.mention {
&:hover {
text-decoration: none;
span {
text-decoration: underline;
}
}
}
.fa {
color: lighten($color1, 30%);
}
}
.status__content__spoiler-link {
background: lighten($color1, 30%);
&:hover {
background: lighten($color1, 33%);
text-decoration: none;
}
}
}
a.status__content__spoiler-link {
display: inline-block;
border-radius: 2px;
color: lighten($color1, 8%);
font-weight: 500;
font-size: 11px;
padding: 0px 6px;
text-transform: uppercase;
line-height: inherit;
}
.status {
padding: 8px 10px;
padding-left: 68px;
position: relative;
min-height: 48px;
border-bottom: 1px solid lighten($color1, 8%);
cursor: default;
.status__relative-time {
color: lighten($color1, 26%);
}
.status__display-name {
color: lighten($color1, 26%);
}
}
.status__prepend {
margin-left: 68px;
color: lighten($color1, 26%);
padding: 8px 0;
padding-bottom: 2px;
font-size: 14px;
position: relative;
.status__display-name strong {
color: lighten($color1, 26%);
}
}
.detailed-status {
background: lighten($color1, 4%);
.status__content {
font-size: 19px;
line-height: 24px;
.emojione {
width: 22px;
height: 22px;
}
}
}
.detailed-status__meta {
margin-top: 15px;
color: lighten($color1, 26%);
font-size: 14px;
line-height: 18px;
}
.detailed-status__action-bar {
background: lighten($color1, 4%);
display: flex;
flex-direction: row;
border-top: 1px solid lighten($color1, 8%);
border-bottom: 1px solid lighten($color1, 8%);
padding: 10px 0;
}
.reply-indicator__content {
color: $color1;
font-size: 14px;
a {
color: lighten($color1, 20%);
}
}
.account {
padding: 10px;
border-bottom: 1px solid lighten($color1, 8%);
.account__display-name {
flex: 1 1 auto;
display: block;
color: $color3;
overflow: hidden;
text-decoration: none;
font-size: 14px;
}
}
.account__header {
flex: 0 0 auto;
background: lighten($color1, 4%);
text-align: center;
background-size: cover;
background-position: center;
position: relative;
& > div {
background: rgba(lighten($color1, 4%), 0.9);
}
.account__header__content {
color: $color2;
}
.account__header__display-name {
color: $color5;
}
.account__header__username {
color: $color4;
}
}
.account__header__content {
word-wrap: break-word;
font-weight: 400;
overflow: hidden;
color: $color3;
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;
}
}
.account__action-bar {
border-top: 1px solid lighten($color1, 8%);
border-bottom: 1px solid lighten($color1, 8%);
line-height: 36px;
overflow: hidden;
flex: 0 0 auto;
display: flex;
}
.account__action-bar__tab {
text-decoration: none;
overflow: hidden;
width: 80px;
border-left: 1px solid lighten($color1, 8%);
padding: 10px 5px;
& > span {
display: block;
text-transform: uppercase;
font-size: 11px;
color: $color3;
}
strong {
display: block;
font-size: 15px;
font-weight: 500;
color: $color5;
}
}
.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;
}
.status__content__spoiler-link {
background: lighten($color1, 26%);
&:hover {
background: lighten($color1, 29%);
text-decoration: none;
}
}
}
.notification__message {
margin-left: 68px;
padding: 8px 0;
padding-bottom: 0;
cursor: default;
color: $color3;
font-size: 15px;
position: relative;
.fa {
color: $color4;
}
}
.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, .imageloader {
background: image-url('void.png');
}
.imageloader {
display: block;
}
.navigation-bar {
padding: 10px;
display: flex;
flex-shrink: 0;
cursor: default;
color: $color3;
strong {
color: $color5;
}
}
.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;
justify-content: flex-start;
}
@media screen and (min-width: 360px) {
.columns-area {
margin: 10px;
}
}
.column {
width: 330px;
position: relative;
box-sizing: border-box;
background: $color1;
display: flex;
flex-direction: column;
}
.ui {
flex: 0 0 auto;
display: flex;
flex-direction: column;
width: 100%;
height: 100%;
background: darken($color1, 7%);
}
.drawer {
width: 280px;
box-sizing: border-box;
display: flex;
flex-direction: column;
overflow-y: hidden;
}
.drawer__tab {
display: block;
flex: 1 1 auto;
padding: 15px;
padding-bottom: 13px;
color: $color3;
text-decoration: none;
text-align: center;
font-size: 16px;
border-bottom: 2px solid transparent;
}
@media screen and (min-width: 2560px) {
.columns-area {
justify-content: center;
}
.column, .drawer {
width: 350px;
border-radius: 4px;
height: 90vh;
margin-top: 5vh;
}
}
.drawer__inner {
background: linear-gradient(rgba(lighten($color1, 13%), 1), rgba(lighten($color1, 13%), 0.65));
box-sizing: border-box;
padding: 0;
display: flex;
flex-direction: column;
overflow-y: auto;
flex-grow: 1;
}
.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;
background: lighten($color1, 8%);
flex: 0 0 auto;
overflow-y: auto;
}
.tabs-bar__link {
display: block;
flex: 1 1 auto;
padding: 10px 5px;
color: $color5;
text-decoration: none;
text-align: center;
font-size:12px;
font-weight: 500;
border-bottom: 2px solid lighten($color1, 8%);
&.active {
border-bottom: 2px solid $color4;
color: $color4;
}
}
@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 {
padding: 15px;
font-size: 16px;
background: lighten($color1, 4%);
flex: 0 0 auto;
cursor: pointer;
color: $color4;
&: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, 8%);
color: $color5;
&: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;
background: $color5;
}
.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 bottom left;
height: auto;
min-height: 100%;
p {
color: $color2;
}
a {
color: lighten($color1, 26%);
}
}
.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;
}
}
@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 {
display: flex;
cursor: pointer;
font-size: 14px;
border: 1px solid lighten($color1, 8%);
border-radius: 4px;
color: lighten($color1, 26%);
margin-top: 14px;
text-decoration: none;
overflow: hidden;
&:hover {
background: lighten($color1, 8%);
}
}
.status-card__title {
display: block;
font-weight: 500;
margin-bottom: 5px;
color: $color3;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.status-card__description {
color: $color3;
}
.status-card__image {
flex: 0 0 100px;
background: lighten($color1, 8%);
}
.load-more {
display: block;
color: lighten($color1, 26%);
text-align: center;
padding: 15px;
text-decoration: none;
&:hover {
background: lighten($color1, 8%);
}
}
.missing-indicator {
text-align: center;
font-size: 16px;
font-weight: 500;
color: lighten($color1, 26%);
padding-top: 120px;
}
.column-header {
padding: 15px;
font-size: 16px;
background: lighten($color1, 4%);
flex: 0 0 auto;
cursor: pointer;
}
.search {
.fa {
color: $color3;
}
}
.search__input {
box-sizing: border-box;
display: block;
width: 100%;
border: none;
padding: 10px;
padding-right: 30px;
font-family: inherit;
background: $color1;
color: $color3;
font-size: 14px;
margin: 0;
}
.loading-indicator {
color: $color2;
}
.collapsable-collapsed {
color: $color3;
background: lighten($color1, 4%);
}
.collapsable {
color: $color5;
background: lighten($color1, 8%);
}
.media-spoiler {
background: $color8;
color: $color5;
}
.modal-container--preloader {
background: lighten($color1, 8%);
}
.account--panel {
background: lighten($color1, 4%);
border-top: 1px solid lighten($color1, 8%);
border-bottom: 1px solid lighten($color1, 8%);
}
.column-settings--outer {
background: lighten($color1, 8%);
}
.column-settings--section {
color: $color3;
}
.modal-container--nav {
color: $color5;
}
.account--follows-info {
color: $color5;
}
.setting-toggle {
color: $color3;
}