Replace sprockets/browserify with Webpack (#2617)
* Replace browserify with webpack * Add react-intl-translations-manager * Do not minify in development, add offline-plugin for ServiceWorker background cache updates * Adjust tests and dependencies * Fix production deployments * Fix tests * More optimizations * Improve travis cache for npm stuff * Re-run travis * Add back support for custom.scss as before * Remove offline-plugin and babili * Fix issue with Immutable.List().unshift(...values) not working as expected * Make travis load schema instead of running all migrations in sequence * Fix missing React import in WarningContainer. Optimize rendering performance by using ImmutablePureComponent instead of React.PureComponent. ImmutablePureComponent uses Immutable.is() to compare props. Replace dynamic callback bindings in <UI /> * Add react definitions to places that use JSX * Add Procfile.dev for running rails, webpack and streaming API at the same time
This commit is contained in:
parent
26bc591572
commit
f5bf5ebb82
343 changed files with 5299 additions and 2081 deletions
374
app/javascript/styles/about.scss
Normal file
374
app/javascript/styles/about.scss
Normal file
|
@ -0,0 +1,374 @@
|
|||
.about-body {
|
||||
.wrapper {
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
color: $color3;
|
||||
padding-top: 50px;
|
||||
padding-bottom: 50px;
|
||||
|
||||
&.thicc {
|
||||
max-width: 700px;
|
||||
}
|
||||
}
|
||||
|
||||
h1 {
|
||||
font: 46px/52px 'Roboto', sans-serif;
|
||||
font-weight: 600;
|
||||
margin-bottom: 20px;
|
||||
color: $color4;
|
||||
padding: 20px 0;
|
||||
|
||||
img {
|
||||
margin-bottom: -5px;
|
||||
margin-right: 5px;
|
||||
width: 46px;
|
||||
height: 46px;
|
||||
}
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-family: 'Montserrat', sans-serif;
|
||||
font-size: 24px;
|
||||
line-height: 28px;
|
||||
font-weight: 400;
|
||||
margin-bottom: 20px;
|
||||
color: $color5;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-family: 'Montserrat', sans-serif;
|
||||
font-size: 20px;
|
||||
line-height: 28px;
|
||||
font-weight: 400;
|
||||
margin-bottom: 20px;
|
||||
color: $color2;
|
||||
}
|
||||
|
||||
ul, ol {
|
||||
list-style: inherit;
|
||||
margin-left: 20px;
|
||||
|
||||
&[type='a'] {
|
||||
list-style-type: lower-alpha;
|
||||
}
|
||||
|
||||
&[type='i'] {
|
||||
list-style-type: lower-roman;
|
||||
}
|
||||
}
|
||||
|
||||
li > ol, li > ul {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
p, li {
|
||||
font: 16px/28px 'Montserrat', sans-serif;
|
||||
font-weight: 400;
|
||||
margin-bottom: 12px;
|
||||
|
||||
a {
|
||||
color: $color4;
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
|
||||
em {
|
||||
display: inline-block;
|
||||
padding: 7px 7px 5px 7px;
|
||||
margin: 0 2px;
|
||||
background: $color3;
|
||||
color: $color1;
|
||||
font: 16px/16px 'Montserrat', sans-serif;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.screenshot {
|
||||
box-shadow: 0 0 15px rgba($color8, 0.4);
|
||||
margin-bottom: 26px;
|
||||
|
||||
img {
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
.actions {
|
||||
overflow: hidden;
|
||||
margin-bottom: 20px;
|
||||
|
||||
.info {
|
||||
float: right;
|
||||
text-align: right;
|
||||
line-height: 36px;
|
||||
|
||||
a {
|
||||
color: $color3;
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 625px) {
|
||||
.wrapper {
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.features-list {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.information-board {
|
||||
margin: 20px 0;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
border-top: 1px solid lighten($color1, 10%);
|
||||
border-bottom: 1px solid lighten($color1, 10%);
|
||||
padding-right: 14px;
|
||||
|
||||
.section {
|
||||
flex: 1 0 0;
|
||||
padding: 14px;
|
||||
text-align: right;
|
||||
font: 16px/28px 'Montserrat', sans-serif;
|
||||
|
||||
span, strong {
|
||||
display: block;
|
||||
}
|
||||
|
||||
span {
|
||||
font-size: 16px;
|
||||
|
||||
&:last-child {
|
||||
color: $color2;
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
|
||||
strong {
|
||||
font-weight: 500;
|
||||
font-size: 32px;
|
||||
line-height: 48px;
|
||||
color: $color5;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 500px) {
|
||||
flex-direction: column;
|
||||
|
||||
.section {
|
||||
text-align: left;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.owner {
|
||||
text-align: center;
|
||||
|
||||
.avatar {
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
margin: 0 auto;
|
||||
margin-bottom: 15px;
|
||||
|
||||
img {
|
||||
display: block;
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
border-radius: 48px;
|
||||
}
|
||||
}
|
||||
|
||||
.name {
|
||||
font-size: 14px;
|
||||
|
||||
a {
|
||||
display: block;
|
||||
color: $color5;
|
||||
text-decoration: none;
|
||||
|
||||
&:hover {
|
||||
.display_name {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.username {
|
||||
display: block;
|
||||
color: $color3;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.contact-email {
|
||||
text-align: center;
|
||||
margin: 40px 0;
|
||||
|
||||
strong {
|
||||
display: block;
|
||||
color: $color5;
|
||||
word-break: break-word;
|
||||
}
|
||||
}
|
||||
|
||||
.sidebar-layout {
|
||||
display: flex;
|
||||
|
||||
.main {
|
||||
flex: 1 1 auto;
|
||||
padding: 14px 0;
|
||||
|
||||
.panel {
|
||||
padding-right: 14px;
|
||||
}
|
||||
}
|
||||
|
||||
.sidebar {
|
||||
border-left: 1px solid lighten($color1, 10%);
|
||||
width: 180px;
|
||||
flex: 0 0 auto;
|
||||
}
|
||||
|
||||
.panel {
|
||||
.panel-header {
|
||||
background: lighten($color1, 10%);
|
||||
padding: 7px 14px;
|
||||
text-transform: uppercase;
|
||||
font-size: 12px;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.panel-body {
|
||||
padding: 14px;
|
||||
}
|
||||
|
||||
.panel-list {
|
||||
ul {
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
|
||||
li {
|
||||
margin: 0;
|
||||
font-family: inherit;
|
||||
font-size: 13px;
|
||||
line-height: 18px;
|
||||
|
||||
a {
|
||||
display: block;
|
||||
padding: 7px 14px;
|
||||
color: rgba($color5, 0.7);
|
||||
text-decoration: none;
|
||||
transition: all 200ms linear;
|
||||
|
||||
i.fa {
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
color: $color5;
|
||||
background-color: darken($color1, 5%);
|
||||
transition: all 100ms linear;
|
||||
}
|
||||
|
||||
&.selected {
|
||||
color: $color5;
|
||||
background-color: $color4;
|
||||
|
||||
&:hover {
|
||||
background-color: lighten($color4, 5%);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 625px) {
|
||||
flex-direction: column;
|
||||
|
||||
.sidebar {
|
||||
border: 1px solid lighten($color1, 10%);
|
||||
width: auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.features-list {
|
||||
display: flex;
|
||||
margin-bottom: 20px;
|
||||
|
||||
.features-list__column {
|
||||
flex: 1 1 0;
|
||||
|
||||
ul {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
li {
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.screenshot-with-signup {
|
||||
display: flex;
|
||||
margin-bottom: 20px;
|
||||
|
||||
.mascot {
|
||||
flex: 1 1 auto;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
|
||||
img {
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.simple_form, .closed-registrations-message {
|
||||
width: 300px;
|
||||
flex: 0 0 auto;
|
||||
background: rgba(darken($color1, 7%), 0.5);
|
||||
padding: 14px;
|
||||
border-radius: 4px;
|
||||
box-shadow: 0 0 15px rgba($color8, 0.4);
|
||||
|
||||
.actions {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.info {
|
||||
text-align: center;
|
||||
|
||||
a {
|
||||
color: $color2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 625px) {
|
||||
.mascot {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.simple_form, .closed-registrations-message {
|
||||
flex: auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.closed-registrations-message {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
text-align: center;
|
||||
}
|
391
app/javascript/styles/accounts.scss
Normal file
391
app/javascript/styles/accounts.scss
Normal file
|
@ -0,0 +1,391 @@
|
|||
.card {
|
||||
background: $color1;
|
||||
background-size: cover;
|
||||
padding: 60px 0;
|
||||
padding-bottom: 0;
|
||||
border-radius: 4px 4px 0 0;
|
||||
box-shadow: 0 0 15px rgba($color8, 0.2);
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
|
||||
@media screen and (max-width: 700px) {
|
||||
border-radius: 0;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
&:after {
|
||||
background: linear-gradient(rgba($color8, 0.5), rgba($color8, 0.8));
|
||||
display: block;
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.name {
|
||||
display: block;
|
||||
font-size: 20px;
|
||||
line-height: 18px * 1.5;
|
||||
color: $color5;
|
||||
font-weight: 500;
|
||||
text-align: center;
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
text-shadow: 0 0 2px $color8;
|
||||
|
||||
small {
|
||||
display: block;
|
||||
font-size: 14px;
|
||||
color: $color4;
|
||||
font-weight: 400;
|
||||
}
|
||||
}
|
||||
|
||||
.avatar {
|
||||
width: 120px;
|
||||
margin: 0 auto;
|
||||
margin-bottom: 15px;
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
|
||||
img {
|
||||
width: 120px;
|
||||
height: 120px;
|
||||
display: block;
|
||||
border-radius: 120px;
|
||||
}
|
||||
}
|
||||
|
||||
.controls {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
right: 10px;
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.details {
|
||||
display: flex;
|
||||
margin-top: 30px;
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
.details-counters {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
order: 0;
|
||||
}
|
||||
|
||||
.counter {
|
||||
width: 80px;
|
||||
color: $color3;
|
||||
padding: 5px 10px 0px;
|
||||
margin-bottom: 10px;
|
||||
border-right: 1px solid $color3;
|
||||
cursor: default;
|
||||
position: relative;
|
||||
|
||||
a {
|
||||
display: block;
|
||||
}
|
||||
|
||||
&:after {
|
||||
display: block;
|
||||
content: "";
|
||||
position: absolute;
|
||||
bottom: -10px;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
border-bottom: 4px solid $color3;
|
||||
opacity: 0.5;
|
||||
transition: all 0.8s ease;
|
||||
}
|
||||
|
||||
&.active {
|
||||
&:after {
|
||||
border-bottom: 4px solid $color4;
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
&:hover {
|
||||
&:after {
|
||||
opacity: 1;
|
||||
transition-duration: 0.2s;
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.counter-label {
|
||||
font-size: 12px;
|
||||
text-transform: uppercase;
|
||||
display: block;
|
||||
margin-bottom: 5px;
|
||||
text-shadow: 0 0 2px $color8;
|
||||
}
|
||||
|
||||
.counter-number {
|
||||
font-weight: 500;
|
||||
font-size: 18px;
|
||||
color: $color5;
|
||||
}
|
||||
}
|
||||
|
||||
.bio {
|
||||
flex: 1;
|
||||
font-size: 14px;
|
||||
line-height: 18px;
|
||||
padding: 5px 10px;
|
||||
color: $color2;
|
||||
order: 1;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 480px) {
|
||||
.details {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.bio {
|
||||
text-align: center;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.counter {
|
||||
flex: 1 1 auto;
|
||||
}
|
||||
|
||||
.counter:last-child {
|
||||
border-right: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.pagination {
|
||||
padding: 30px 0;
|
||||
text-align: center;
|
||||
overflow: hidden;
|
||||
|
||||
a, .current, .next, .prev, .page, .gap {
|
||||
font-size: 14px;
|
||||
color: $color5;
|
||||
font-weight: 500;
|
||||
display: inline-block;
|
||||
padding: 6px 10px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.current {
|
||||
background: $color5;
|
||||
border-radius: 100px;
|
||||
color: $color1;
|
||||
cursor: default;
|
||||
margin: 0 10px;
|
||||
}
|
||||
|
||||
.gap {
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.prev, .next {
|
||||
text-transform: uppercase;
|
||||
color: $color2;
|
||||
}
|
||||
|
||||
.prev {
|
||||
float: left;
|
||||
padding-left: 0;
|
||||
|
||||
.fa {
|
||||
display: inline-block;
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.next {
|
||||
float: right;
|
||||
padding-right: 0;
|
||||
|
||||
.fa {
|
||||
display: inline-block;
|
||||
margin-left: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.disabled {
|
||||
cursor: default;
|
||||
color: lighten($color1, 10%);
|
||||
}
|
||||
|
||||
@media screen and (max-width: 360px) {
|
||||
padding: 30px 20px;
|
||||
|
||||
a, .current, .next, .prev, .gap {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.next, .prev {
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.accounts-grid {
|
||||
box-shadow: 0 0 15px rgba($color8, 0.2);
|
||||
background: $color5;
|
||||
border-radius: 0 0 4px 4px;
|
||||
padding: 20px 10px;
|
||||
padding-bottom: 10px;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
|
||||
@media screen and (max-width: 700px) {
|
||||
border-radius: 0;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.account-grid-card {
|
||||
box-sizing: border-box;
|
||||
width: 335px;
|
||||
border: 1px solid $color2;
|
||||
border-radius: 4px;
|
||||
color: $color1;
|
||||
margin-bottom: 10px;
|
||||
|
||||
&:nth-child(odd) {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.account-grid-card__header {
|
||||
overflow: hidden;
|
||||
padding: 10px;
|
||||
border-bottom: 1px solid $color2;
|
||||
}
|
||||
|
||||
.avatar {
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
float: left;
|
||||
margin-right: 15px;
|
||||
|
||||
img {
|
||||
display: block;
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
border-radius: 60px;
|
||||
}
|
||||
}
|
||||
|
||||
.name {
|
||||
padding-top: 10px;
|
||||
|
||||
a {
|
||||
display: block;
|
||||
color: $color1;
|
||||
text-decoration: none;
|
||||
|
||||
&:hover {
|
||||
.display_name {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.display_name {
|
||||
font-size: 14px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.username {
|
||||
color: $color4;
|
||||
}
|
||||
|
||||
.note {
|
||||
padding: 10px;
|
||||
padding-top: 15px;
|
||||
color: $color3;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.nothing-here {
|
||||
color: $color3;
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
text-align: center;
|
||||
padding: 15px 0;
|
||||
padding-bottom: 25px;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.account-card {
|
||||
padding: 14px 10px;
|
||||
background: $color5;
|
||||
border-radius: 4px;
|
||||
text-align: left;
|
||||
box-shadow: 0 0 15px rgba($color8, 0.2);
|
||||
|
||||
.detailed-status__display-name {
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
margin-bottom: 15px;
|
||||
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
& > div {
|
||||
float: left;
|
||||
margin-right: 10px;
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
}
|
||||
|
||||
.avatar {
|
||||
display: block;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.display-name {
|
||||
display: block;
|
||||
max-width: 100%;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
cursor: default;
|
||||
|
||||
strong {
|
||||
font-weight: 500;
|
||||
color: $color1;
|
||||
}
|
||||
|
||||
span {
|
||||
font-size: 14px;
|
||||
color: $color3;
|
||||
}
|
||||
}
|
||||
|
||||
&:hover {
|
||||
.display-name {
|
||||
strong {
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.account__header__content {
|
||||
font-size: 14px;
|
||||
color: $color1;
|
||||
}
|
||||
}
|
245
app/javascript/styles/admin.scss
Normal file
245
app/javascript/styles/admin.scss
Normal file
|
@ -0,0 +1,245 @@
|
|||
.admin-wrapper {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
height: 100%;
|
||||
|
||||
.sidebar-wrapper {
|
||||
flex: 1;
|
||||
height: 100%;
|
||||
background: $color1;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
.sidebar {
|
||||
width: 240px;
|
||||
height: 100%;
|
||||
padding: 0;
|
||||
overflow-y: auto;
|
||||
|
||||
.logo {
|
||||
display: block;
|
||||
margin: 40px auto;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style: none;
|
||||
border-radius: 4px 0 0 4px;
|
||||
overflow: hidden;
|
||||
margin-bottom: 20px;
|
||||
|
||||
a {
|
||||
display: block;
|
||||
padding: 15px 25px;
|
||||
color: rgba($color5, 0.7);
|
||||
text-decoration: none;
|
||||
transition: all 200ms linear;
|
||||
border-radius: 4px 0 0 4px;
|
||||
|
||||
i.fa {
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
color: $color5;
|
||||
background-color: darken($color1, 5%);
|
||||
transition: all 100ms linear;
|
||||
}
|
||||
|
||||
&.selected {
|
||||
background: darken($color1, 2%);
|
||||
border-radius: 4px 0 0 0;
|
||||
}
|
||||
}
|
||||
|
||||
ul {
|
||||
background: darken($color1, 4%);
|
||||
border-radius: 0 0 0 4px;
|
||||
margin: 0;
|
||||
|
||||
a {
|
||||
border: 0;
|
||||
|
||||
&.selected {
|
||||
color: $color5;
|
||||
background-color: $color4;
|
||||
border-bottom: 0;
|
||||
border-radius: 0;
|
||||
|
||||
&:hover {
|
||||
background-color: lighten($color4, 5%);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.content-wrapper {
|
||||
flex: 2;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.content {
|
||||
max-width: 700px;
|
||||
padding: 20px 15px;
|
||||
padding-top: 60px;
|
||||
padding-left: 25px;
|
||||
|
||||
h2 {
|
||||
color: $color2;
|
||||
font-size: 24px;
|
||||
line-height: 28px;
|
||||
font-weight: 400;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
& > p {
|
||||
font-size: 14px;
|
||||
line-height: 18px;
|
||||
color: $color2;
|
||||
margin-bottom: 20px;
|
||||
|
||||
strong {
|
||||
color: $color5;
|
||||
font-weight: 500;
|
||||
}
|
||||
}
|
||||
|
||||
hr {
|
||||
margin: 20px 0;
|
||||
border: 0;
|
||||
background: transparent;
|
||||
border-bottom: 1px solid $color1;
|
||||
}
|
||||
}
|
||||
|
||||
.simple_form {
|
||||
max-width: 400px;
|
||||
.label_input {
|
||||
label.select {
|
||||
width: 50%;
|
||||
}
|
||||
select {
|
||||
width: 50%;
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 600px) {
|
||||
display: block;
|
||||
overflow-y: auto;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
|
||||
.sidebar-wrapper, .content-wrapper {
|
||||
flex: 0 0 auto;
|
||||
height: auto;
|
||||
overflow: initial;
|
||||
}
|
||||
|
||||
.sidebar {
|
||||
width: 100%;
|
||||
padding: 10px 0;
|
||||
height: auto;
|
||||
|
||||
.logo {
|
||||
margin: 20px auto;
|
||||
}
|
||||
}
|
||||
|
||||
.content {
|
||||
padding-top: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.filters {
|
||||
display: flex;
|
||||
margin-bottom: 20px;
|
||||
|
||||
.filter-subset {
|
||||
flex: 0 0 auto;
|
||||
margin-right: 40px;
|
||||
|
||||
ul {
|
||||
margin-top: 5px;
|
||||
list-style: none;
|
||||
|
||||
li {
|
||||
display: inline-block;
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
strong {
|
||||
font-weight: 500;
|
||||
text-transform: uppercase;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
a {
|
||||
display: inline-block;
|
||||
color: rgba($color5, 0.7);
|
||||
text-decoration: none;
|
||||
text-transform: uppercase;
|
||||
font-size: 12px;
|
||||
font-weight: 500;
|
||||
border-bottom: 2px solid $color1;
|
||||
|
||||
&:hover {
|
||||
color: $color5;
|
||||
border-bottom: 2px solid lighten($color1, 5%);
|
||||
}
|
||||
|
||||
&.selected {
|
||||
color: $color4;
|
||||
border-bottom: 2px solid $color4;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.report-accounts {
|
||||
display: flex;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.report-accounts__item {
|
||||
flex: 1 1 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
& > strong {
|
||||
display: block;
|
||||
margin-bottom: 10px;
|
||||
font-weight: 500;
|
||||
font-size: 14px;
|
||||
line-height: 18px;
|
||||
color: $color2;
|
||||
}
|
||||
|
||||
&:first-child {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.account-card {
|
||||
flex: 1 1 auto;
|
||||
}
|
||||
}
|
||||
|
||||
.report-status {
|
||||
display: flex;
|
||||
margin-bottom: 10px;
|
||||
|
||||
.activity-stream {
|
||||
flex: 2 0 0;
|
||||
margin-right: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
.report-status__actions {
|
||||
flex: 0 0 auto;
|
||||
}
|
20
app/javascript/styles/application.scss
Normal file
20
app/javascript/styles/application.scss
Normal file
|
@ -0,0 +1,20 @@
|
|||
@import 'variables';
|
||||
@import 'fonts/roboto';
|
||||
@import 'fonts/roboto-mono';
|
||||
@import 'fonts/montserrat';
|
||||
|
||||
@import 'reset';
|
||||
@import 'basics';
|
||||
@import 'containers';
|
||||
@import 'lists';
|
||||
@import 'footer';
|
||||
@import 'compact_header';
|
||||
@import 'landing_strip';
|
||||
@import 'forms';
|
||||
@import 'accounts';
|
||||
@import 'stream_entries';
|
||||
@import 'components';
|
||||
@import 'about';
|
||||
@import 'tables';
|
||||
@import 'admin';
|
||||
@import 'rtl';
|
58
app/javascript/styles/basics.scss
Normal file
58
app/javascript/styles/basics.scss
Normal file
|
@ -0,0 +1,58 @@
|
|||
body {
|
||||
font-family: 'Roboto', sans-serif;
|
||||
background: $color1 url('../images/background-photo.jpg');
|
||||
background-size: cover;
|
||||
background-attachment: fixed;
|
||||
font-size: 13px;
|
||||
line-height: 18px;
|
||||
font-weight: 400;
|
||||
color: $color5;
|
||||
padding-bottom: 140px;
|
||||
text-rendering: optimizelegibility;
|
||||
font-feature-settings: "kern";
|
||||
text-size-adjust: none;
|
||||
|
||||
&.app-body {
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
padding: 0;
|
||||
background: $color1;
|
||||
}
|
||||
|
||||
&.embed {
|
||||
background: transparent;
|
||||
margin: 0;
|
||||
|
||||
.container {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
|
||||
&.admin {
|
||||
background: darken($color1, 4%);
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 360px) {
|
||||
padding-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
button:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.app-holder {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
11
app/javascript/styles/boost.scss
Normal file
11
app/javascript/styles/boost.scss
Normal file
File diff suppressed because one or more lines are too long
28
app/javascript/styles/compact_header.scss
Normal file
28
app/javascript/styles/compact_header.scss
Normal file
|
@ -0,0 +1,28 @@
|
|||
.compact-header {
|
||||
h1 {
|
||||
font-size: 24px;
|
||||
line-height: 28px;
|
||||
color: $color3;
|
||||
overflow: hidden;
|
||||
font-weight: 500;
|
||||
margin-bottom: 20px;
|
||||
|
||||
a {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
small {
|
||||
font-weight: 400;
|
||||
color: $color2;
|
||||
}
|
||||
|
||||
img {
|
||||
display: inline-block;
|
||||
margin-bottom: -5px;
|
||||
margin-right: 15px;
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
}
|
||||
}
|
||||
}
|
3189
app/javascript/styles/components.scss
Normal file
3189
app/javascript/styles/components.scss
Normal file
File diff suppressed because it is too large
Load diff
71
app/javascript/styles/containers.scss
Normal file
71
app/javascript/styles/containers.scss
Normal file
|
@ -0,0 +1,71 @@
|
|||
.container {
|
||||
width: 700px;
|
||||
margin: 0 auto;
|
||||
margin-top: 40px;
|
||||
|
||||
@media screen and (max-width: 700px) {
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.mastodon-column-container {
|
||||
display: flex;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
|
||||
// 707568 - height 100% doesn't work on child of a flex item - chromium - Monorail
|
||||
// https://bugs.chromium.org/p/chromium/issues/detail?id=707568
|
||||
flex: 1 1 auto;
|
||||
}
|
||||
|
||||
.logo-container {
|
||||
max-width: 400px;
|
||||
margin: 100px auto;
|
||||
margin-bottom: 0;
|
||||
cursor: default;
|
||||
|
||||
@media screen and (max-width: 360px) {
|
||||
margin: 30px auto;
|
||||
}
|
||||
|
||||
h1 {
|
||||
display: block;
|
||||
text-align: center;
|
||||
color: $color5;
|
||||
font-size: 48px;
|
||||
font-weight: 500;
|
||||
|
||||
img {
|
||||
display: block;
|
||||
margin: 20px auto;
|
||||
width: 180px;
|
||||
height: 180px;
|
||||
}
|
||||
|
||||
a {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
outline: 0;
|
||||
|
||||
img {
|
||||
opacity: 0.8;
|
||||
transition: opacity 0.8s ease;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
img {
|
||||
opacity: 1;
|
||||
transition-duration: 0.2s;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
small {
|
||||
display: block;
|
||||
font-size: 12px;
|
||||
font-weight: 400;
|
||||
font-family: 'Roboto Mono', monospace;
|
||||
}
|
||||
}
|
||||
}
|
11
app/javascript/styles/fonts/montserrat.scss
Normal file
11
app/javascript/styles/fonts/montserrat.scss
Normal file
|
@ -0,0 +1,11 @@
|
|||
@font-face {
|
||||
font-family: 'Montserrat';
|
||||
src: local('Montserrat');
|
||||
src: url('../fonts/montserrat/Montserrat-Regular.eot');
|
||||
src: url('../fonts/montserrat/Montserrat-Regular.eot?#iefix') format('embedded-opentype'),
|
||||
url('../fonts/montserrat/Montserrat-Regular.woff2') format('woff2'),
|
||||
url('../fonts/montserrat/Montserrat-Regular.woff') format('woff'),
|
||||
url('../fonts/montserrat/Montserrat-Regular.ttf') format('truetype');
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
}
|
12
app/javascript/styles/fonts/roboto-mono.scss
Normal file
12
app/javascript/styles/fonts/roboto-mono.scss
Normal file
|
@ -0,0 +1,12 @@
|
|||
@font-face {
|
||||
font-family: 'Roboto Mono';
|
||||
src: local('Roboto Mono');
|
||||
src: url('../fonts/roboto-mono/robotomono-regular-webfont.eot');
|
||||
src: url('../fonts/roboto-mono/robotomono-regular-webfont.eot?#iefix') format('embedded-opentype'),
|
||||
url('../fonts/roboto-mono/robotomono-regular-webfont.woff2') format('woff2'),
|
||||
url('../fonts/roboto-mono/robotomono-regular-webfont.woff') format('woff'),
|
||||
url('../fonts/roboto-mono/robotomono-regular-webfont.ttf') format('truetype'),
|
||||
url('../fonts/roboto-mono/robotomono-regular-webfont.svg#roboto_monoregular') format('svg');
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
}
|
52
app/javascript/styles/fonts/roboto.scss
Normal file
52
app/javascript/styles/fonts/roboto.scss
Normal file
|
@ -0,0 +1,52 @@
|
|||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
src: local('Roboto');
|
||||
src: url('../fonts/roboto/roboto-italic-webfont.eot');
|
||||
src: url('../fonts/roboto/roboto-italic-webfont.eot?#iefix') format('embedded-opentype'),
|
||||
url('../fonts/roboto/roboto-italic-webfont.woff2') format('woff2'),
|
||||
url('../fonts/roboto/roboto-italic-webfont.woff') format('woff'),
|
||||
url('../fonts/roboto/roboto-italic-webfont.ttf') format('truetype'),
|
||||
url('../fonts/roboto/roboto-italic-webfont.svg#roboto-italic-webfont') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
src: local('Roboto');
|
||||
src: url('../fonts/roboto/roboto-bold-webfont.eot');
|
||||
src: local('Roboto bold'), local('roboto-bold'),
|
||||
url('../fonts/roboto/roboto-bold-webfont.eot?#iefix') format('embedded-opentype'),
|
||||
url('../fonts/roboto/roboto-bold-webfont.woff2') format('woff2'),
|
||||
url('../fonts/roboto/roboto-bold-webfont.woff') format('woff'),
|
||||
url('../fonts/roboto/roboto-bold-webfont.ttf') format('truetype'),
|
||||
url('../fonts/roboto/roboto-bold-webfont.svg#roboto-bold-webfont') format('svg');
|
||||
font-weight: bold;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
src: local('Roboto');
|
||||
src: url('../fonts/roboto/roboto-medium-webfont.eot');
|
||||
src: url('../fonts/roboto/roboto-medium-webfont.eot?#iefix') format('embedded-opentype'),
|
||||
url('../fonts/roboto/roboto-medium-webfont.woff2') format('woff2'),
|
||||
url('../fonts/roboto/roboto-medium-webfont.woff') format('woff'),
|
||||
url('../fonts/roboto/roboto-medium-webfont.ttf') format('truetype'),
|
||||
url('../fonts/roboto/roboto-medium-webfont.svg#roboto-medium-webfont') format('svg');
|
||||
font-weight: 500;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
src: local('Roboto');
|
||||
src: url('../fonts/roboto/roboto-regular-webfont.eot');
|
||||
src: url('../fonts/roboto/roboto-regular-webfont.eot?#iefix') format('embedded-opentype'),
|
||||
url('../fonts/roboto/roboto-regular-webfont.woff2') format('woff2'),
|
||||
url('../fonts/roboto/roboto-regular-webfont.woff') format('woff'),
|
||||
url('../fonts/roboto/roboto-regular-webfont.ttf') format('truetype'),
|
||||
url('../fonts/roboto/roboto-regular-webfont.svg#roboto-regular-webfont') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
29
app/javascript/styles/footer.scss
Normal file
29
app/javascript/styles/footer.scss
Normal file
|
@ -0,0 +1,29 @@
|
|||
.footer {
|
||||
text-align: center;
|
||||
margin-top: 30px;
|
||||
font-size: 12px;
|
||||
color: darken($color2, 25%);
|
||||
|
||||
.domain {
|
||||
font-weight: 500;
|
||||
|
||||
a {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
.powered-by, .single-user-login {
|
||||
font-weight: 400;
|
||||
|
||||
a {
|
||||
color: inherit;
|
||||
text-decoration: underline;
|
||||
font-weight: 500;
|
||||
|
||||
&:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
335
app/javascript/styles/forms.scss
Normal file
335
app/javascript/styles/forms.scss
Normal file
|
@ -0,0 +1,335 @@
|
|||
code {
|
||||
font-family: 'Roboto Mono', monospace;
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
.form-container {
|
||||
max-width: 400px;
|
||||
padding: 20px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.simple_form {
|
||||
.input {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
span.hint {
|
||||
display: block;
|
||||
color: $color3;
|
||||
font-size: 12px;
|
||||
margin-top: 4px;
|
||||
}
|
||||
|
||||
p.hint {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.label_input {
|
||||
display: flex;
|
||||
|
||||
label {
|
||||
flex: 0 0 auto;
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
input {
|
||||
flex: 1 1 auto;
|
||||
}
|
||||
}
|
||||
|
||||
.input.file, .input.select, .input.radio_buttons {
|
||||
padding: 15px 0;
|
||||
margin-bottom: 0;
|
||||
|
||||
label {
|
||||
font-family: inherit;
|
||||
font-size: 16px;
|
||||
color: $color5;
|
||||
display: block;
|
||||
padding-top: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.fields-group {
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
|
||||
.input.radio_buttons .radio label {
|
||||
margin-bottom: 5px;
|
||||
font-family: inherit;
|
||||
font-size: 14px;
|
||||
color: white;
|
||||
display: block;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.input.boolean {
|
||||
margin-bottom: 5px;
|
||||
|
||||
label {
|
||||
font-family: inherit;
|
||||
font-size: 14px;
|
||||
color: white;
|
||||
display: block;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
label.checkbox {
|
||||
position: relative;
|
||||
padding-left: 25px;
|
||||
flex: 1 1 auto;
|
||||
}
|
||||
|
||||
input[type=checkbox] {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 1px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.hint {
|
||||
padding-left: 25px;
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
input[type=text], input[type=number], input[type=email], input[type=password], textarea {
|
||||
background: transparent;
|
||||
box-sizing: border-box;
|
||||
border: 0;
|
||||
border-bottom: 2px solid $color3;
|
||||
border-radius: 2px 2px 0 0;
|
||||
padding: 7px 4px;
|
||||
font-size: 16px;
|
||||
color: $color5;
|
||||
display: block;
|
||||
width: 100%;
|
||||
outline: 0;
|
||||
font-family: inherit;
|
||||
resize: vertical;
|
||||
|
||||
&:invalid {
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
&:focus:invalid {
|
||||
border-bottom-color: $color6;
|
||||
}
|
||||
|
||||
&:required:valid {
|
||||
border-bottom-color: $color7;
|
||||
}
|
||||
|
||||
&:active, &:focus {
|
||||
border-bottom-color: $color4;
|
||||
background: rgba($color8, 0.1);
|
||||
}
|
||||
}
|
||||
|
||||
.input.field_with_errors {
|
||||
label {
|
||||
color: $color6;
|
||||
}
|
||||
|
||||
input[type=text], input[type=email], input[type=password] {
|
||||
border-bottom-color: $color6;
|
||||
}
|
||||
|
||||
.error {
|
||||
display: block;
|
||||
font-weight: 500;
|
||||
color: $color6;
|
||||
margin-top: 4px;
|
||||
}
|
||||
}
|
||||
|
||||
.actions {
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
button, .block-button {
|
||||
display: block;
|
||||
width: 100%;
|
||||
border: 0;
|
||||
border-radius: 4px;
|
||||
background: $color4;
|
||||
color: $color5;
|
||||
font-size: 18px;
|
||||
padding: 10px;
|
||||
text-transform: uppercase;
|
||||
text-decoration: none;
|
||||
text-align: center;
|
||||
box-sizing: border-box;
|
||||
cursor: pointer;
|
||||
font-weight: 500;
|
||||
outline: 0;
|
||||
margin-bottom: 10px;
|
||||
|
||||
&:hover {
|
||||
background-color: lighten($color4, 5%);
|
||||
}
|
||||
|
||||
&:active, &:focus {
|
||||
position: relative;
|
||||
top: 1px;
|
||||
background-color: darken($color4, 5%);
|
||||
}
|
||||
|
||||
&.negative {
|
||||
background: $color6;
|
||||
|
||||
&:hover {
|
||||
background-color: lighten($color6, 5%);
|
||||
}
|
||||
|
||||
&:active, &:focus {
|
||||
background-color: darken($color6, 5%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
select {
|
||||
font-size: 16px;
|
||||
}
|
||||
}
|
||||
|
||||
.flash-message {
|
||||
background: $color1;
|
||||
color: $color3;
|
||||
border-radius: 4px;
|
||||
padding: 15px 10px;
|
||||
margin-bottom: 30px;
|
||||
box-shadow: 0 0 5px rgba($color8, 0.2);
|
||||
text-align: center;
|
||||
|
||||
strong {
|
||||
font-weight: 500;
|
||||
}
|
||||
}
|
||||
|
||||
.form-footer {
|
||||
margin-top: 30px;
|
||||
text-align: center;
|
||||
|
||||
a {
|
||||
color: $color5;
|
||||
text-decoration: none;
|
||||
|
||||
&:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.oauth-prompt, .follow-prompt {
|
||||
margin-bottom: 30px;
|
||||
text-align: center;
|
||||
color: $color3;
|
||||
|
||||
h2 {
|
||||
font-size: 16px;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
strong {
|
||||
color: $color2;
|
||||
font-weight: 500;
|
||||
}
|
||||
}
|
||||
|
||||
.qr-wrapper {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.qr-code {
|
||||
flex: 0 0 auto;
|
||||
background: #fff;
|
||||
padding: 4px;
|
||||
margin-bottom: 20px;
|
||||
box-shadow: 0 0 15px rgba($color8, 0.2);
|
||||
display: inline-block;
|
||||
|
||||
svg {
|
||||
display: block;
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.qr-alternative {
|
||||
margin-left: 10px;
|
||||
color: $color3;
|
||||
|
||||
samp {
|
||||
display: block;
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
|
||||
.table-form {
|
||||
p {
|
||||
max-width: 400px;
|
||||
margin-bottom: 15px;
|
||||
|
||||
strong {
|
||||
font-weight: 500;
|
||||
}
|
||||
}
|
||||
|
||||
.warning {
|
||||
max-width: 400px;
|
||||
box-sizing: border-box;
|
||||
background: rgba($color6, 0.5);
|
||||
color: $color5;
|
||||
text-shadow: 1px 1px 0 rgba($color8, 0.3);
|
||||
box-shadow: 0 2px 6px rgba($color8, 0.4);
|
||||
border-radius: 4px;
|
||||
padding: 10px;
|
||||
margin-bottom: 15px;
|
||||
|
||||
a {
|
||||
color: $color5;
|
||||
text-decoration: underline;
|
||||
|
||||
&:hover, &:focus, &:active {
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
strong {
|
||||
font-weight: 600;
|
||||
display: block;
|
||||
margin-bottom: 5px;
|
||||
|
||||
.fa {
|
||||
font-weight: 400;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.action-pagination {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
.actions, .pagination {
|
||||
flex: 1 1 auto;
|
||||
}
|
||||
|
||||
.actions {
|
||||
padding: 30px 0;
|
||||
padding-right: 20px;
|
||||
flex: 0 0 auto;
|
||||
}
|
||||
}
|
||||
|
||||
.user_allowed_languages {
|
||||
li {
|
||||
float: left;
|
||||
width: 50%;
|
||||
}
|
||||
}
|
17
app/javascript/styles/landing_strip.scss
Normal file
17
app/javascript/styles/landing_strip.scss
Normal file
|
@ -0,0 +1,17 @@
|
|||
.landing-strip {
|
||||
background: rgba(darken($color1, 7%), 0.8);
|
||||
color: $color3;
|
||||
font-weight: 400;
|
||||
padding: 14px;
|
||||
border-radius: 4px;
|
||||
margin-bottom: 20px;
|
||||
|
||||
strong, a {
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
a {
|
||||
color: inherit;
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
20
app/javascript/styles/lists.scss
Normal file
20
app/javascript/styles/lists.scss
Normal file
|
@ -0,0 +1,20 @@
|
|||
.no-list {
|
||||
list-style: none;
|
||||
|
||||
li {
|
||||
display: inline-block;
|
||||
margin: 0 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.recovery-codes {
|
||||
list-style: none;
|
||||
margin: 0 auto;
|
||||
text-align: center;
|
||||
|
||||
li {
|
||||
font-size: 125%;
|
||||
line-height: 1.5;
|
||||
letter-spacing: 1px;
|
||||
}
|
||||
}
|
91
app/javascript/styles/reset.scss
Normal file
91
app/javascript/styles/reset.scss
Normal file
|
@ -0,0 +1,91 @@
|
|||
/* http://meyerweb.com/eric/tools/css/reset/
|
||||
v2.0 | 20110126
|
||||
License: none (public domain)
|
||||
*/
|
||||
|
||||
html, body, div, span, applet, object, iframe,
|
||||
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
||||
a, abbr, acronym, address, big, cite, code,
|
||||
del, dfn, em, img, ins, kbd, q, s, samp,
|
||||
small, strike, strong, sub, sup, tt, var,
|
||||
b, u, i, center,
|
||||
dl, dt, dd, ol, ul, li,
|
||||
fieldset, form, label, legend,
|
||||
table, caption, tbody, tfoot, thead, tr, th, td,
|
||||
article, aside, canvas, details, embed,
|
||||
figure, figcaption, footer, header, hgroup,
|
||||
menu, nav, output, ruby, section, summary,
|
||||
time, mark, audio, video {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
font-size: 100%;
|
||||
font: inherit;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
/* HTML5 display-role reset for older browsers */
|
||||
article, aside, details, figcaption, figure,
|
||||
footer, header, hgroup, menu, nav, section {
|
||||
display: block;
|
||||
}
|
||||
|
||||
body {
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
ol, ul {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
blockquote, q {
|
||||
quotes: none;
|
||||
}
|
||||
|
||||
blockquote:before, blockquote:after,
|
||||
q:before, q:after {
|
||||
content: '';
|
||||
content: none;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar {
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: lighten($color1, 4%);
|
||||
border: 0px none $color5;
|
||||
border-radius: 50px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb:hover {
|
||||
background: lighten($color1, 6%);
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb:active {
|
||||
background: lighten($color1, 4%);
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-track {
|
||||
border: 0px none $color5;
|
||||
border-radius: 0;
|
||||
background: rgba($color8, 0.1);
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-track:hover {
|
||||
background: $color1;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-track:active {
|
||||
background: $color1;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-corner {
|
||||
background: transparent;
|
||||
}
|
136
app/javascript/styles/rtl.scss
Normal file
136
app/javascript/styles/rtl.scss
Normal file
|
@ -0,0 +1,136 @@
|
|||
body.rtl {
|
||||
direction: rtl;
|
||||
|
||||
.column-link__icon, .column-header__icon {
|
||||
margin-right: 0;
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
.character-counter__wrapper {
|
||||
margin-right: 0;
|
||||
margin-left: 16px;
|
||||
}
|
||||
|
||||
.navigation-bar__profile {
|
||||
margin-left: 0;
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
.search__input {
|
||||
padding-right: 10px;
|
||||
padding-left: 30px;
|
||||
}
|
||||
|
||||
.search__icon .fa {
|
||||
right: auto;
|
||||
left: 10px;
|
||||
}
|
||||
|
||||
.column-icon-clear {
|
||||
right: auto;
|
||||
left: 48px;
|
||||
}
|
||||
|
||||
.column-icon {
|
||||
right: auto;
|
||||
left: 5px;
|
||||
}
|
||||
|
||||
.setting-toggle {
|
||||
margin-left: 0;
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
.status__avatar {
|
||||
left: auto;
|
||||
right: 10px;
|
||||
}
|
||||
|
||||
.status {
|
||||
padding-left: 10px;
|
||||
padding-right: 68px;
|
||||
}
|
||||
|
||||
.status__info .status__display-name {
|
||||
padding-left: 25px;
|
||||
padding-right: 0;
|
||||
}
|
||||
|
||||
.column-back-button--slim-button {
|
||||
right: auto;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.status__info-time {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.status__action-bar-button-wrapper {
|
||||
float: right;
|
||||
margin-right: 0;
|
||||
margin-left: 18px;
|
||||
}
|
||||
|
||||
.status__action-bar-dropdown {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.privacy-dropdown__dropdown {
|
||||
left: auto;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.dropdown--active .dropdown__content {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.dropdown--active .dropdown__content::before {
|
||||
left: auto;
|
||||
right: 8px;
|
||||
}
|
||||
|
||||
.dropdown--active .dropdown__content > ul {
|
||||
left: auto;
|
||||
right: -10px;
|
||||
}
|
||||
|
||||
.privacy-dropdown__option__icon {
|
||||
margin-left: 10px;
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.detailed-status__display-avatar {
|
||||
margin-right: 0;
|
||||
margin-left: 10px;
|
||||
float: right;
|
||||
}
|
||||
|
||||
.detailed-status__favorites, .detailed-status__reblogs {
|
||||
margin-left: 0;
|
||||
margin-right: 6px;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 1025px) {
|
||||
.column, .drawer {
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
|
||||
&:first-child {
|
||||
padding-left: 5px;
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
padding-right: 0px;
|
||||
padding-left: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.columns-area > div {
|
||||
.column, .drawer {
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
372
app/javascript/styles/stream_entries.scss
Normal file
372
app/javascript/styles/stream_entries.scss
Normal file
|
@ -0,0 +1,372 @@
|
|||
.activity-stream {
|
||||
clear: both;
|
||||
box-shadow: 0 0 15px rgba($color8, 0.2);
|
||||
|
||||
.entry {
|
||||
background: $color5;
|
||||
|
||||
.detailed-status.light, .status.light {
|
||||
border-bottom: 1px solid $color2;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
&, .detailed-status.light, .status.light {
|
||||
border-bottom: 0;
|
||||
border-radius: 0 0 4px 4px;
|
||||
}
|
||||
}
|
||||
|
||||
&:first-child {
|
||||
&, .detailed-status.light, .status.light {
|
||||
border-radius: 4px 4px 0 0;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
&, .detailed-status.light, .status.light {
|
||||
border-radius: 4px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.status.light {
|
||||
padding: 14px 14px 14px (48px + 14px*2);
|
||||
position: relative;
|
||||
min-height: 48px;
|
||||
cursor: default;
|
||||
|
||||
.status__header {
|
||||
font-size: 15px;
|
||||
|
||||
.status__meta {
|
||||
float: right;
|
||||
font-size: 14px;
|
||||
|
||||
.status__relative-time {
|
||||
color: $color4;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.status__display-name {
|
||||
display: block;
|
||||
max-width: 100%;
|
||||
padding-right: 25px;
|
||||
color: $color1;
|
||||
}
|
||||
|
||||
.status__avatar {
|
||||
position: absolute;
|
||||
left: 14px;
|
||||
top: 14px;
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
|
||||
& > div {
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
}
|
||||
|
||||
img {
|
||||
display: block;
|
||||
border-radius: 4px;
|
||||
}
|
||||
}
|
||||
|
||||
.display-name {
|
||||
display: block;
|
||||
max-width: 100%;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
|
||||
strong {
|
||||
font-weight: 500;
|
||||
color: $color1;
|
||||
}
|
||||
|
||||
span {
|
||||
font-size: 14px;
|
||||
color: $color4;
|
||||
}
|
||||
}
|
||||
|
||||
.status__content {
|
||||
color: $color1;
|
||||
|
||||
a {
|
||||
color: $color4;
|
||||
}
|
||||
|
||||
a.status__content__spoiler-link {
|
||||
color: $color5;
|
||||
background: $color3;
|
||||
|
||||
&:hover {
|
||||
background: lighten($color3, 8%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.status__attachments {
|
||||
margin-top: 8px;
|
||||
overflow: hidden;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
|
||||
.status__attachments__inner {
|
||||
display: flex;
|
||||
height: 214px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.detailed-status.light {
|
||||
padding: 14px;
|
||||
background: $color5;
|
||||
cursor: default;
|
||||
|
||||
.detailed-status__display-name {
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
margin-bottom: 15px;
|
||||
|
||||
& > div {
|
||||
float: left;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.display-name {
|
||||
display: block;
|
||||
max-width: 100%;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
|
||||
strong {
|
||||
font-weight: 500;
|
||||
color: $color1;
|
||||
}
|
||||
|
||||
span {
|
||||
font-size: 14px;
|
||||
color: $color3;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.avatar {
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
|
||||
img {
|
||||
display: block;
|
||||
border-radius: 4px;
|
||||
}
|
||||
}
|
||||
|
||||
.status__content {
|
||||
color: $color1;
|
||||
|
||||
a {
|
||||
color: $color4;
|
||||
}
|
||||
|
||||
a.status__content__spoiler-link {
|
||||
color: $color5;
|
||||
background: $color3;
|
||||
|
||||
&:hover {
|
||||
background: lighten($color3, 8%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.detailed-status__meta {
|
||||
margin-top: 15px;
|
||||
color: $color3;
|
||||
font-size: 14px;
|
||||
line-height: 18px;
|
||||
|
||||
a {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
span > span {
|
||||
font-weight: 500;
|
||||
font-size: 12px;
|
||||
margin-left: 6px;
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
|
||||
.detailed-status__attachments {
|
||||
margin-top: 8px;
|
||||
overflow: hidden;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
|
||||
.status__attachments__inner {
|
||||
display: flex;
|
||||
height: 360px;
|
||||
}
|
||||
}
|
||||
|
||||
.video-player {
|
||||
margin-top: 8px;
|
||||
height: 300px;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
|
||||
video {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.media-item, .video-item {
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
left: auto;
|
||||
top: auto;
|
||||
right: auto;
|
||||
bottom: auto;
|
||||
float: left;
|
||||
border: medium none;
|
||||
display: block;
|
||||
flex: 1 1 auto;
|
||||
height: 100%;
|
||||
margin-right: 2px;
|
||||
|
||||
&:last-child {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
a {
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: no-repeat scroll center center / cover;
|
||||
text-decoration: none;
|
||||
cursor: zoom-in;
|
||||
}
|
||||
|
||||
video {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
}
|
||||
}
|
||||
|
||||
.video-item {
|
||||
a {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.video-item__play {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
font-size: 36px;
|
||||
transform: translate(-50%, -50%);
|
||||
padding: 5px;
|
||||
border-radius: 100px;
|
||||
color: rgba($color5, 0.8);
|
||||
z-index: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.media-spoiler {
|
||||
background: $color3;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
cursor: pointer;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
text-align: center;
|
||||
transition: all 100ms linear;
|
||||
z-index: 2;
|
||||
|
||||
&:hover {
|
||||
background: darken($color3, 5%);
|
||||
}
|
||||
|
||||
span {
|
||||
display: block;
|
||||
|
||||
&:first-child {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
font-size: 11px;
|
||||
font-weight: 500;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.pre-header {
|
||||
padding: 14px 0px;
|
||||
padding-left: (48px + 14px*2);
|
||||
padding-bottom: 0;
|
||||
margin-bottom: -4px;
|
||||
color: $color3;
|
||||
font-size: 14px;
|
||||
position: relative;
|
||||
|
||||
.pre-header__icon {
|
||||
position: absolute;
|
||||
left: (48px + 14px*2 - 30px);
|
||||
}
|
||||
|
||||
.status__display-name.muted strong {
|
||||
color: $color3;
|
||||
}
|
||||
}
|
||||
|
||||
.open-in-web-link {
|
||||
text-decoration: none;
|
||||
|
||||
&:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.embed {
|
||||
.activity-stream {
|
||||
border-radius: 4px;
|
||||
box-shadow: none;
|
||||
|
||||
.entry {
|
||||
&:last-child {
|
||||
border-radius: 0 0 4px 4px;
|
||||
}
|
||||
|
||||
&:first-child {
|
||||
border-radius: 4px 4px 0 0;
|
||||
|
||||
&:last-child {
|
||||
border-radius: 4px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
65
app/javascript/styles/tables.scss
Normal file
65
app/javascript/styles/tables.scss
Normal file
|
@ -0,0 +1,65 @@
|
|||
.table {
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
border-spacing: 0;
|
||||
border-collapse: collapse;
|
||||
margin-bottom: 20px;
|
||||
|
||||
th, td {
|
||||
padding: 8px;
|
||||
line-height: 18px;
|
||||
vertical-align: top;
|
||||
border-top: 1px solid $color1;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
& > thead > tr > th {
|
||||
vertical-align: bottom;
|
||||
border-bottom: 2px solid $color1;
|
||||
border-top: 0;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
& > tbody > tr > th {
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
& > tbody > tr:nth-child(odd) > td, & > tbody > tr:nth-child(odd) > th {
|
||||
background: $color1;
|
||||
}
|
||||
|
||||
a {
|
||||
color: $color4;
|
||||
text-decoration: underline;
|
||||
|
||||
&:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
strong {
|
||||
font-weight: 500;
|
||||
}
|
||||
}
|
||||
|
||||
samp {
|
||||
font-family: 'Roboto Mono', monospace;
|
||||
}
|
||||
|
||||
a.table-action-link {
|
||||
text-decoration: none;
|
||||
display: inline-block;
|
||||
margin-right: 5px;
|
||||
padding: 0 10px;
|
||||
color: rgba($color5, 0.7);
|
||||
font-weight: 500;
|
||||
|
||||
&:hover {
|
||||
color: $color5;
|
||||
}
|
||||
|
||||
i.fa {
|
||||
font-weight: 400;
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
8
app/javascript/styles/variables.scss
Executable file
8
app/javascript/styles/variables.scss
Executable file
|
@ -0,0 +1,8 @@
|
|||
$color1: #282c37 !default; // darkest
|
||||
$color2: #d9e1e8 !default; // lightest
|
||||
$color3: #9baec8 !default; // lighter
|
||||
$color4: #2b90d9 !default; // vibrant
|
||||
$color5: #ffffff !default; // white
|
||||
$color6: #df405a !default; // error red
|
||||
$color7: #79bd9a !default; // succ green
|
||||
$color8: #000000 !default; // black
|
Loading…
Add table
Add a link
Reference in a new issue