mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2024-12-27 09:30:29 +00:00
[frontend] Redesign / color scheme (#688)
* fix css indentation * profile styling update * update status styling to match profile * empty header fix * generate random avatars for thread views * appease the linter gods * upgrade deps * turn profile accent into border + $bg background * upgrade deps * small accessibility tweaks * general redesign, clearer css variables * configure instance.Version for testrig * footer styling * add sublte borders to box-shadow for separation * accessible blues, other tweaks * background bg_accent * fix viewport * change client entry buttons to links * cw button styling * status display+username spacing * small thread view tweaks * color tweaks for accessible contrasts * use Noto Sans * biiit less dark bg * .info contrast, border Co-authored-by: f0x <f0x@cthu.lu>
This commit is contained in:
parent
4a69651a7c
commit
16ddad36b2
12 changed files with 378 additions and 172 deletions
BIN
web/assets/NotoSans-Bold.ttf
Normal file
BIN
web/assets/NotoSans-Bold.ttf
Normal file
Binary file not shown.
BIN
web/assets/NotoSans-Regular.ttf
Normal file
BIN
web/assets/NotoSans-Regular.ttf
Normal file
Binary file not shown.
96
web/assets/OFL.txt
Normal file
96
web/assets/OFL.txt
Normal file
|
@ -0,0 +1,96 @@
|
||||||
|
Open Font License applies to NotoSans-Regular.ttf and NotoSans-Bold.ttf in this directory
|
||||||
|
|
||||||
|
Copyright 2012 Google Inc. All Rights Reserved.
|
||||||
|
|
||||||
|
This Font Software is licensed under the SIL Open Font License,
|
||||||
|
Version 1.1.
|
||||||
|
|
||||||
|
This license is copied below, and is also available with a FAQ at:
|
||||||
|
http://scripts.sil.org/OFL
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
PREAMBLE
|
||||||
|
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||||
|
development of collaborative font projects, to support the font
|
||||||
|
creation efforts of academic and linguistic communities, and to
|
||||||
|
provide a free and open framework in which fonts may be shared and
|
||||||
|
improved in partnership with others.
|
||||||
|
|
||||||
|
The OFL allows the licensed fonts to be used, studied, modified and
|
||||||
|
redistributed freely as long as they are not sold by themselves. The
|
||||||
|
fonts, including any derivative works, can be bundled, embedded,
|
||||||
|
redistributed and/or sold with any software provided that any reserved
|
||||||
|
names are not used by derivative works. The fonts and derivatives,
|
||||||
|
however, cannot be released under any other type of license. The
|
||||||
|
requirement for fonts to remain under this license does not apply to
|
||||||
|
any document created using the fonts or their derivatives.
|
||||||
|
|
||||||
|
DEFINITIONS
|
||||||
|
"Font Software" refers to the set of files released by the Copyright
|
||||||
|
Holder(s) under this license and clearly marked as such. This may
|
||||||
|
include source files, build scripts and documentation.
|
||||||
|
|
||||||
|
"Reserved Font Name" refers to any names specified as such after the
|
||||||
|
copyright statement(s).
|
||||||
|
|
||||||
|
"Original Version" refers to the collection of Font Software
|
||||||
|
components as distributed by the Copyright Holder(s).
|
||||||
|
|
||||||
|
"Modified Version" refers to any derivative made by adding to,
|
||||||
|
deleting, or substituting -- in part or in whole -- any of the
|
||||||
|
components of the Original Version, by changing formats or by porting
|
||||||
|
the Font Software to a new environment.
|
||||||
|
|
||||||
|
"Author" refers to any designer, engineer, programmer, technical
|
||||||
|
writer or other person who contributed to the Font Software.
|
||||||
|
|
||||||
|
PERMISSION & CONDITIONS
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of the Font Software, to use, study, copy, merge, embed,
|
||||||
|
modify, redistribute, and sell modified and unmodified copies of the
|
||||||
|
Font Software, subject to the following conditions:
|
||||||
|
|
||||||
|
1) Neither the Font Software nor any of its individual components, in
|
||||||
|
Original or Modified Versions, may be sold by itself.
|
||||||
|
|
||||||
|
2) Original or Modified Versions of the Font Software may be bundled,
|
||||||
|
redistributed and/or sold with any software, provided that each copy
|
||||||
|
contains the above copyright notice and this license. These can be
|
||||||
|
included either as stand-alone text files, human-readable headers or
|
||||||
|
in the appropriate machine-readable metadata fields within text or
|
||||||
|
binary files as long as those fields can be easily viewed by the user.
|
||||||
|
|
||||||
|
3) No Modified Version of the Font Software may use the Reserved Font
|
||||||
|
Name(s) unless explicit written permission is granted by the
|
||||||
|
corresponding Copyright Holder. This restriction only applies to the
|
||||||
|
primary font name as presented to the users.
|
||||||
|
|
||||||
|
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||||
|
Software shall not be used to promote, endorse or advertise any
|
||||||
|
Modified Version, except to acknowledge the contribution(s) of the
|
||||||
|
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||||
|
permission.
|
||||||
|
|
||||||
|
5) The Font Software, modified or unmodified, in part or in whole,
|
||||||
|
must be distributed entirely under this license, and must not be
|
||||||
|
distributed under any other license. The requirement for fonts to
|
||||||
|
remain under this license does not apply to any document created using
|
||||||
|
the Font Software.
|
||||||
|
|
||||||
|
TERMINATION
|
||||||
|
This license becomes null and void if any of the above conditions are
|
||||||
|
not met.
|
||||||
|
|
||||||
|
DISCLAIMER
|
||||||
|
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||||
|
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||||
|
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||||
|
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||||
|
OTHER DEALINGS IN THE FONT SOFTWARE.
|
|
@ -21,15 +21,53 @@
|
||||||
postcss-custom-prop-vars will transpile these to css --variables
|
postcss-custom-prop-vars will transpile these to css --variables
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$bg: #525c66;
|
/* Color definitions */
|
||||||
$fg: #fafaff;
|
|
||||||
$fg_dark: #b0b0b5;
|
|
||||||
|
|
||||||
$bg_darker3: color-mod($bg lightness(-3%));
|
$near_white: #fafaff;
|
||||||
$bg_darker5: color-mod($bg lightness(-5%));
|
|
||||||
|
|
||||||
$bg_lighter3: color-mod($bg lightness(+3%));
|
$sloth_gray1: #b0b0b5;
|
||||||
|
$sloth_gray2: #4d4e56;
|
||||||
|
|
||||||
$acc1: #de8957; // sloth light orange
|
$sloth_orange1: #e78e5a;
|
||||||
$acc2: #c76d33; // sloth dark orange
|
$sloth_orange2: #D87841;
|
||||||
$blue: #5897df;
|
$blue: #63b1de; // complementary color to $sloth_orange1
|
||||||
|
|
||||||
|
/* derivative colors */
|
||||||
|
|
||||||
|
$sloth_gray2_darker3: color-mod($sloth_gray2 lightness(-3%));
|
||||||
|
$sloth_gray2_darker5: color-mod($sloth_gray2 lightness(-5%));
|
||||||
|
$sloth_gray2_darker7: color-mod($sloth_gray2 lightness(-7%));
|
||||||
|
$sloth_gray2_darker15: color-mod($sloth_gray2 lightness(-15%));
|
||||||
|
$sloth_gray2_lighter3: color-mod($sloth_gray2 lightness(+3%));
|
||||||
|
$sloth_gray2_lighter5: color-mod($sloth_gray2 lightness(+5%));
|
||||||
|
|
||||||
|
$blue_lighter8: color-mod($blue lightness(+4%));
|
||||||
|
$lightblue: color-mod($blue lightness(+16%));
|
||||||
|
|
||||||
|
$fg: $near_white;
|
||||||
|
$bg: $sloth_gray2_darker7;
|
||||||
|
|
||||||
|
$bg_trans: color-mod($sloth_gray2 alpha(62%));
|
||||||
|
|
||||||
|
$bg_accent: $sloth_gray2_lighter3;
|
||||||
|
$fg_accent: $lightblue;
|
||||||
|
|
||||||
|
/* Color variables as used in a specific location */
|
||||||
|
|
||||||
|
$footer_bg: $bg_accent;
|
||||||
|
|
||||||
|
$link_fg: $fg_accent;
|
||||||
|
|
||||||
|
$button_border: 0.08rem solid color-mod($sloth_orange2 lightness(-15%));
|
||||||
|
$button_bg: $blue_lighter8;
|
||||||
|
$button_fg: $sloth_gray2_darker15;
|
||||||
|
$button_hover_bg: $lightblue;
|
||||||
|
|
||||||
|
$status_focus_bg: $bg_accent;
|
||||||
|
$status_unfocus_bg: $sloth_gray2_darker3;
|
||||||
|
$status_info_fg: #CBCBD7;
|
||||||
|
|
||||||
|
$boxshadow: 0 0.4rem 1rem -0.1rem rgba(0,0,0,0.15);
|
||||||
|
$boxshadow_border: 0.08rem solid $sloth_gray2_darker5;
|
||||||
|
|
||||||
|
$profile_avatar_border: 0.2rem solid $sloth_orange2;
|
|
@ -16,15 +16,26 @@
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Noto Sans";
|
||||||
|
font-weight: 400;
|
||||||
|
src: url(../NotoSans-Regular.ttf) format('truetype');
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Noto Sans";
|
||||||
|
font-weight: bold;
|
||||||
|
src: url(../NotoSans-Bold.ttf) format('truetype');
|
||||||
|
}
|
||||||
|
|
||||||
$br: 0.4rem;
|
$br: 0.4rem;
|
||||||
$boxshadow: 0 0.4rem 1rem -0.2rem rgba(0,0,0,0.2);
|
|
||||||
|
|
||||||
html, body {
|
html, body {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
background: $bg_darker5;
|
background: $bg;
|
||||||
color: $fg;
|
color: $fg;
|
||||||
font-family: sans-serif;
|
font-family: "Noto Sans", sans-serif;
|
||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
|
@ -39,52 +50,44 @@ body {
|
||||||
min-height: 100%;
|
min-height: 100%;
|
||||||
min-width: 100%;
|
min-width: 100%;
|
||||||
|
|
||||||
grid-template-rows: auto 1fr auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
main {
|
|
||||||
background: $bg;
|
|
||||||
display: grid;
|
|
||||||
padding-top: 2rem;
|
|
||||||
padding-bottom: 2rem;
|
|
||||||
grid-template-columns: 1fr 50% 1fr;
|
grid-template-columns: 1fr 50% 1fr;
|
||||||
grid-template-columns: auto min(92%, 90ch) auto;
|
grid-template-columns: auto min(92%, 90ch) auto;
|
||||||
|
|
||||||
.left {
|
grid-template-rows: auto 1fr auto;
|
||||||
grid-column: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.right {
|
|
||||||
grid-column: 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.lightgray {
|
|
||||||
background: $bg;
|
|
||||||
}
|
|
||||||
|
|
||||||
& > * {
|
|
||||||
align-self: start;
|
|
||||||
grid-column: 2;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
header {
|
h1 {
|
||||||
background: $bg_darker5;
|
margin: 0;
|
||||||
padding: 2rem 0;
|
line-height: 2.4rem;
|
||||||
padding-bottom: 0;
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: $link_fg;
|
||||||
|
}
|
||||||
|
|
||||||
|
header, footer {
|
||||||
|
grid-column: 1 / span 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content {
|
||||||
|
grid-column: 2;
|
||||||
|
align-self: start;
|
||||||
|
}
|
||||||
|
|
||||||
|
header a {
|
||||||
|
margin: 2rem;
|
||||||
|
/* background: $header_bg; */
|
||||||
display: flex;
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
|
|
||||||
img {
|
img {
|
||||||
height: 4rem;
|
margin-bottom: 1rem;
|
||||||
padding-left: 2rem;
|
align-self: center;
|
||||||
padding-bottom: 2rem;
|
height: 6rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
div {
|
div {
|
||||||
height: 100%;
|
|
||||||
margin: 0 2rem;
|
|
||||||
margin-top: -2rem;
|
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
align-self: center;
|
align-self: center;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
@ -96,20 +99,45 @@ header {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
h1 {
|
.excerpt_top {
|
||||||
/* color: $acc1; */
|
margin-top: -1rem;
|
||||||
margin: 0;
|
margin-bottom: 2rem;
|
||||||
line-height: 2.4rem;
|
font-style: italic;
|
||||||
|
font-weight: normal;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 1.2rem;
|
||||||
|
|
||||||
|
.count {
|
||||||
|
font-weight: bold;
|
||||||
|
color: $fg_accent;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
main {
|
||||||
color: $acc1;
|
section {
|
||||||
|
background: $bg_accent;
|
||||||
|
box-shadow: $boxshadow;
|
||||||
|
border: $boxshadow_border;
|
||||||
|
border-radius: $br;
|
||||||
|
padding: 2rem;
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
p:first-child {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
p:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.button, button {
|
.button, button {
|
||||||
border-radius: 0.2rem;
|
border-radius: 0.2rem;
|
||||||
background: $acc1;
|
color: $button_fg;
|
||||||
color: $fg;
|
background: $button_bg;
|
||||||
|
box-shadow: $boxshadow;
|
||||||
|
border: $button_border;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
font-size: 1.2rem;
|
font-size: 1.2rem;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
|
@ -118,16 +146,10 @@ a {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background: $acc2;
|
background: $button_hover_bg;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.count {
|
|
||||||
background: $bg_darker5;
|
|
||||||
border-radius: 0.3rem;
|
|
||||||
padding: 0.2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nounderline {
|
.nounderline {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
@ -154,10 +176,10 @@ section.apps {
|
||||||
|
|
||||||
.entry {
|
.entry {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 30% 1fr;
|
grid-template-columns: 25% 1fr;
|
||||||
gap: 0.5rem;
|
gap: 1.5rem;
|
||||||
padding: 0.5rem;
|
padding: 0.5rem;
|
||||||
background: $bg_darker5;
|
background: $bg_accent;
|
||||||
border-radius: 0.5rem;
|
border-radius: 0.5rem;
|
||||||
|
|
||||||
.logo {
|
.logo {
|
||||||
|
@ -172,6 +194,10 @@ section.apps {
|
||||||
stroke: $fg;
|
stroke: $fg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
div {
|
div {
|
||||||
padding: 1rem 0;
|
padding: 1rem 0;
|
||||||
h3 {
|
h3 {
|
||||||
|
@ -199,18 +225,18 @@ section.error {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
span {
|
span {
|
||||||
font-size: 2em;
|
font-size: 2em;
|
||||||
}
|
}
|
||||||
pre {
|
pre {
|
||||||
border: 1px solid #ff000080;
|
border: 1px solid #ff000080;
|
||||||
margin-left: 1em;
|
margin-left: 1em;
|
||||||
padding: 0 0.7em;
|
padding: 0 0.7em;
|
||||||
border-radius: 0.5em;
|
border-radius: 0.5em;
|
||||||
background-color: #ff000010;
|
background-color: #ff000010;
|
||||||
font-size: 1.3em;
|
font-size: 1.3em;
|
||||||
white-space: pre-wrap;
|
white-space: pre-wrap;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
input, select, textarea {
|
input, select, textarea {
|
||||||
|
@ -224,8 +250,13 @@ footer {
|
||||||
align-self: end;
|
align-self: end;
|
||||||
|
|
||||||
padding: 2rem;
|
padding: 2rem;
|
||||||
display: grid;
|
display: flex;
|
||||||
grid-template-columns: 1fr 1fr 1fr 1fr;
|
justify-content: center;
|
||||||
|
|
||||||
|
div {
|
||||||
|
margin: 0 2rem;
|
||||||
|
padding: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
|
@ -233,7 +264,7 @@ footer {
|
||||||
}
|
}
|
||||||
|
|
||||||
@media screen and (orientation: portrait) {
|
@media screen and (orientation: portrait) {
|
||||||
main {
|
.page {
|
||||||
grid-template-columns: 1fr 92% 1fr;
|
grid-template-columns: 1fr 92% 1fr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,12 @@
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
header {
|
||||||
|
a img {
|
||||||
|
height: 5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
main {
|
main {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
padding-top: 0;
|
padding-top: 0;
|
||||||
|
@ -23,7 +29,7 @@ main {
|
||||||
|
|
||||||
.profile {
|
.profile {
|
||||||
position: relative;
|
position: relative;
|
||||||
background: $bg_darker3;
|
background: $bg_accent;
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-rows: minmax(6rem, 20%) auto auto;
|
grid-template-rows: minmax(6rem, 20%) auto auto;
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
|
@ -34,6 +40,7 @@ main {
|
||||||
border-radius: $br;
|
border-radius: $br;
|
||||||
|
|
||||||
box-shadow: $boxshadow;
|
box-shadow: $boxshadow;
|
||||||
|
border: $boxshadow_border;
|
||||||
|
|
||||||
.headerimage {
|
.headerimage {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
@ -50,20 +57,31 @@ main {
|
||||||
}
|
}
|
||||||
|
|
||||||
.basic {
|
.basic {
|
||||||
|
max-height: 10rem;
|
||||||
margin-top: -7rem;
|
margin-top: -7rem;
|
||||||
padding: 0 1rem;
|
|
||||||
|
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: auto 1fr;
|
grid-template-columns: 1rem auto 1fr;
|
||||||
grid-template-rows: 6.5rem auto;
|
grid-template-rows: 1fr auto auto;
|
||||||
|
|
||||||
|
grid-template-areas:
|
||||||
|
". avatar ."
|
||||||
|
"filler2 avatar displayname"
|
||||||
|
". avatar username";
|
||||||
|
|
||||||
|
#profile-basic-filler2 {
|
||||||
|
grid-area: filler2;
|
||||||
|
background: $bg_trans;
|
||||||
|
margin-top: 0.3rem;
|
||||||
|
}
|
||||||
|
|
||||||
.avatar {
|
.avatar {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
height: 8.5rem;
|
height: 8.5rem;
|
||||||
width: 8.5rem;
|
width: 8.5rem;
|
||||||
grid-row: 1 / span 2;
|
grid-area: avatar;
|
||||||
background: $bg;
|
background: $bg;
|
||||||
border: 0.2rem solid $acc2;
|
border: $profile_avatar_border;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
border-radius: $br;
|
border-radius: $br;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
@ -77,24 +95,33 @@ main {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a, div {
|
||||||
position: relative;
|
|
||||||
z-index: 1;
|
|
||||||
color: inherit;
|
color: inherit;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
padding: 0.5rem;
|
padding: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.displayname {
|
.displayname {
|
||||||
|
grid-area: displayname;
|
||||||
|
padding-right: 1rem;
|
||||||
align-self: end;
|
align-self: end;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
font-size: 2rem;
|
font-size: 2rem;
|
||||||
|
margin-top: 0.3rem;
|
||||||
line-height: 2.2rem;
|
line-height: 2.2rem;
|
||||||
|
background: $bg_trans;
|
||||||
|
word-break: break-all;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
overflow: hidden;
|
||||||
|
max-height: 6rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.username {
|
.username {
|
||||||
padding-top: 0.25rem;
|
grid-area: username;
|
||||||
color: $acc1;
|
padding-top: 0;
|
||||||
|
margin-top: 0.25rem;
|
||||||
|
padding-bottom: 0.25rem;
|
||||||
|
color: $fg_accent;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -110,7 +137,7 @@ main {
|
||||||
}
|
}
|
||||||
|
|
||||||
.bio {
|
.bio {
|
||||||
margin: 0;
|
margin: 0.5rem 0;
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: $acc1;
|
color: $acc1;
|
||||||
|
@ -121,15 +148,14 @@ main {
|
||||||
}
|
}
|
||||||
|
|
||||||
.accountstats {
|
.accountstats {
|
||||||
background: $bg_lighter3;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
justify-content: space-between;
|
justify-content: space-around;
|
||||||
padding: 0 1.2rem;
|
|
||||||
border-radius: 0 0 $br $br;
|
border-radius: 0 0 $br $br;
|
||||||
|
border-top: 0.1rem solid $bg;
|
||||||
|
|
||||||
.entry {
|
.entry {
|
||||||
padding: 1rem 0;
|
padding: 1rem 1.2rem;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,19 +25,16 @@ main {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
border-radius: $br;
|
border-radius: $br;
|
||||||
background: $bg_darker5;
|
|
||||||
box-shadow: $boxshadow;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.toot {
|
.toot {
|
||||||
|
background: $status_unfocus_bg;
|
||||||
|
box-shadow: $boxshadow;
|
||||||
|
border: $boxshadow_border;
|
||||||
position: relative;
|
position: relative;
|
||||||
background: $bg_darker3;
|
|
||||||
padding: 1.5rem;
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: 4rem auto 1fr;
|
|
||||||
column-gap: 0.5rem;
|
|
||||||
margin-bottom: $br;
|
margin-bottom: $br;
|
||||||
border-radius: $br;
|
border-radius: $br;
|
||||||
|
padding: 1.5rem 0;
|
||||||
|
|
||||||
a {
|
a {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
@ -46,6 +43,14 @@ main {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.contentgrid {
|
||||||
|
padding: 0 1.5rem;
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 4rem auto 1fr;
|
||||||
|
grid-template-rows: 1.5rem auto auto;
|
||||||
|
column-gap: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
.avatar {
|
.avatar {
|
||||||
grid-row: span 2;
|
grid-row: span 2;
|
||||||
aspect-ratio: 1/1;
|
aspect-ratio: 1/1;
|
||||||
|
@ -64,12 +69,17 @@ main {
|
||||||
.displayname {
|
.displayname {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
font-size: 1.2rem;
|
font-size: 1.2rem;
|
||||||
|
line-height: 2rem;
|
||||||
|
margin-top: -0.5rem;
|
||||||
align-self: start;
|
align-self: start;
|
||||||
}
|
}
|
||||||
|
|
||||||
.username {
|
.username {
|
||||||
color: $fg_dark;
|
color: $link_fg;
|
||||||
|
line-height: 2rem;
|
||||||
|
margin-top: -0.5rem;
|
||||||
justify-self: start;
|
justify-self: start;
|
||||||
|
align-self: start;
|
||||||
}
|
}
|
||||||
|
|
||||||
input.spoiler:checked ~ .content {
|
input.spoiler:checked ~ .content {
|
||||||
|
@ -78,25 +88,24 @@ main {
|
||||||
|
|
||||||
.spoiler {
|
.spoiler {
|
||||||
label {
|
label {
|
||||||
background: $acc1;
|
padding: 0.2rem 0.3rem;
|
||||||
border-radius: 0.3rem;
|
|
||||||
padding: 0.3rem;
|
|
||||||
margin-left: 0.4rem;
|
margin-left: 0.4rem;
|
||||||
position: relative;
|
position: relative;
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
font-size: 1rem;
|
||||||
}
|
}
|
||||||
label:hover {
|
label:hover {
|
||||||
background: $acc2;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.text {
|
.text {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
margin-top: 0.5rem;
|
||||||
grid-column: span 2;
|
grid-column: span 2;
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: $acc1;
|
color: $link_fg;
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -161,6 +170,8 @@ main {
|
||||||
|
|
||||||
.info {
|
.info {
|
||||||
display: none;
|
display: none;
|
||||||
|
border-top: 0.15rem solid $status_unfocus_bg;
|
||||||
|
padding: 0.5rem 1.5rem;
|
||||||
|
|
||||||
div {
|
div {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
@ -171,7 +182,6 @@ main {
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
color: #b0b0b5;
|
|
||||||
grid-column: span 3;
|
grid-column: span 3;
|
||||||
margin-top: 0.5rem;
|
margin-top: 0.5rem;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
|
@ -216,28 +226,29 @@ main {
|
||||||
|
|
||||||
&:first-child {
|
&:first-child {
|
||||||
/* top left, top right */
|
/* top left, top right */
|
||||||
border-radius: $br $br 0 0;
|
border-top-left-radius: $br;
|
||||||
|
border-top-right-radius: $br;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:last-child {
|
&:last-child {
|
||||||
/* bottom left, bottom right */
|
/* bottom left, bottom right */
|
||||||
border-radius: 0 0 $br $br;
|
border-bottom-left-radius: $br;
|
||||||
padding-bottom: 1.5rem;
|
border-bottom-right-radius: $br;
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.expanded {
|
&.expanded {
|
||||||
background: $bg;
|
background: $status_focus_bg;
|
||||||
padding-bottom: 1.5rem;
|
padding-bottom: 0;
|
||||||
|
|
||||||
.displayname {
|
.displayname {
|
||||||
grid-column: span 2;
|
grid-column: span 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
.text {
|
.text {
|
||||||
|
margin-top: 0;
|
||||||
grid-column: span 3;
|
grid-column: span 3;
|
||||||
grid-row: span 1;
|
grid-row: span 1;
|
||||||
margin-top: 0.3rem;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.info {
|
.info {
|
||||||
|
|
|
@ -1,19 +1,21 @@
|
||||||
<!-- footer.tmpl -->
|
<!-- footer.tmpl -->
|
||||||
|
</div>
|
||||||
<footer>
|
<footer>
|
||||||
<div id="version">
|
<div id="version">
|
||||||
GoToSocial: <span class="accent">{{.instance.Version}}</span><br>
|
<a name="Source code" href="https://github.com/superseriousbusiness/gotosocial">
|
||||||
<a href="https://github.com/superseriousbusiness/gotosocial">Source Code</a>
|
GoToSocial <span class="accent">{{.instance.Version}}</span>
|
||||||
</div>
|
</a>
|
||||||
<div id="contact">
|
|
||||||
{{ if .instance.ContactAccount }}
|
|
||||||
Contact: <a href="{{.instance.ContactAccount.URL}}" class="nounderline">{{.instance.ContactAccount.Username}}</a><br>
|
|
||||||
{{ end }}
|
|
||||||
</div>
|
|
||||||
<div id="email">
|
|
||||||
{{ if .instance.Email }}
|
|
||||||
Email: <a href="mailto:{{.instance.Email}}" class="nounderline">{{.instance.Email}}</a><br>
|
|
||||||
{{ end }}
|
|
||||||
</div>
|
</div>
|
||||||
|
{{ if .instance.ContactAccount }}
|
||||||
|
<div id="contact">
|
||||||
|
Contact: <a href="{{.instance.ContactAccount.URL}}" class="nounderline">{{.instance.ContactAccount.Username}}</a><br>
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
{{ if .instance.Email }}
|
||||||
|
<div id="email">
|
||||||
|
Email: <a href="mailto:{{.instance.Email}}" class="nounderline">{{.instance.Email}}</a><br>
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
</footer>
|
</footer>
|
||||||
</div>
|
</div>
|
||||||
{{ if .javascript }}
|
{{ if .javascript }}
|
||||||
|
|
|
@ -8,7 +8,6 @@
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<meta name="og:title" content="{{.instance.Title}} - GoToSocial">
|
<meta name="og:title" content="{{.instance.Title}} - GoToSocial">
|
||||||
<meta name="og:description" content="{{.instance.ShortDescription}}">
|
<meta name="og:description" content="{{.instance.ShortDescription}}">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<link rel="stylesheet" href="/assets/dist/_colors.css">
|
<link rel="stylesheet" href="/assets/dist/_colors.css">
|
||||||
<link rel="stylesheet" href="/assets/dist/base.css">
|
<link rel="stylesheet" href="/assets/dist/base.css">
|
||||||
{{range .stylesheets}}<link rel="stylesheet" href="{{.}}">
|
{{range .stylesheets}}<link rel="stylesheet" href="{{.}}">
|
||||||
|
@ -18,14 +17,14 @@
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="page">
|
<div class="page">
|
||||||
<a aria-label="instance homepage" href="/" class="nounderline header">
|
<header>
|
||||||
<header>
|
<a aria-label="instance homepage" href="/" class="nounderline header">
|
||||||
<img src="/assets/logo.png" alt="Instance Logo"/>
|
<img src="/assets/logo.png" alt="Instance Logo"/>
|
||||||
<div>
|
<div>
|
||||||
<h1>
|
<h1>
|
||||||
{{.instance.Title}}
|
{{.instance.Title}}
|
||||||
</h1>
|
</h1>
|
||||||
</div>
|
</div>
|
||||||
<div></div>
|
</a>
|
||||||
</header>
|
</header>
|
||||||
</a>
|
<div class="content">
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
{{ template "header.tmpl" .}}
|
{{ template "header.tmpl" .}}
|
||||||
|
<section class="excerpt_top">
|
||||||
|
home to <span class="count">{{.instance.Stats.user_count}}</span> users
|
||||||
|
who posted <span class="count">{{.instance.Stats.status_count}}</span> statuses,
|
||||||
|
federating with <span class="count">{{.instance.Stats.domain_count}}</span> other instances.
|
||||||
|
</section>
|
||||||
<main class="lightgray">
|
<main class="lightgray">
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<h1>Home to <span class="count">{{.instance.Stats.user_count}}</span> users
|
|
||||||
who posted <span class="count">{{.instance.Stats.status_count}}</span> statuses,
|
|
||||||
federating with <span class="count">{{.instance.Stats.domain_count}}</span> other instances.</h1>
|
|
||||||
<div className="short-description">
|
<div className="short-description">
|
||||||
{{.instance.ShortDescription |noescape}}
|
{{.instance.ShortDescription |noescape}}
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="apps">
|
<section class="apps">
|
||||||
<p>
|
<p>
|
||||||
GoToSocial does not provide its own frontend, but implements the Mastodon client API.
|
GoToSocial does not provide its own webclient, but implements the Mastodon client API.
|
||||||
You can use this server through a variety of clients:
|
You can use this server through a variety of other clients:
|
||||||
</p>
|
</p>
|
||||||
<div class="applist">
|
<div class="applist">
|
||||||
<div class="entry">
|
<div class="entry">
|
||||||
|
@ -25,7 +25,7 @@
|
||||||
<div>
|
<div>
|
||||||
<h2>Pinafore</h2>
|
<h2>Pinafore</h2>
|
||||||
<p>Pinafore is a web client designed for speed and simplicity.</p>
|
<p>Pinafore is a web client designed for speed and simplicity.</p>
|
||||||
<a class="button" href="https://pinafore.social/settings/instances/add">Use Pinafore</a>
|
<a href="https://pinafore.social/settings/instances/add">Use Pinafore</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="entry">
|
<div class="entry">
|
||||||
|
@ -33,7 +33,7 @@
|
||||||
<div>
|
<div>
|
||||||
<h2>Tusky</h2>
|
<h2>Tusky</h2>
|
||||||
<p>Tusky is a lightweight mobile client for Android</p>
|
<p>Tusky is a lightweight mobile client for Android</p>
|
||||||
<a class="button" href="https://tusky.app">Get Tusky</a>
|
<a href="https://tusky.app">Get Tusky</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -10,9 +10,10 @@
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
<div class="basic">
|
<div class="basic">
|
||||||
|
<div id="profile-basic-filler2"></div>
|
||||||
<a href="{{.account.Avatar}}" class="avatar"><img src="{{.account.Avatar}}" alt="{{if .account.DisplayName}}{{.account.DisplayName}}{{else}}{{.account.Username}}{{end}}'s avatar"></a>
|
<a href="{{.account.Avatar}}" class="avatar"><img src="{{.account.Avatar}}" alt="{{if .account.DisplayName}}{{.account.DisplayName}}{{else}}{{.account.Username}}{{end}}'s avatar"></a>
|
||||||
<a href="{{.account.URL}}" class="displayname">{{if .account.DisplayName}}{{.account.DisplayName}}{{else}}{{.account.Username}}{{end}}</a>
|
<div class="displayname">{{if .account.DisplayName}}{{.account.DisplayName}}{{else}}{{.account.Username}}{{end}}</div>
|
||||||
<a href="{{.account.URL}}" class="username">@{{.account.Username}}</a>
|
<div class="username">@{{.account.Username}}@{{.instance.Title}}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="detailed">
|
<div class="detailed">
|
||||||
<div class="bio">
|
<div class="bio">
|
||||||
|
|
|
@ -1,29 +1,31 @@
|
||||||
<a href="{{.Account.URL}}" class="avatar"><img src="{{.Account.Avatar}}" alt=""></a>
|
<div class="contentgrid">
|
||||||
<a href="{{.Account.URL}}" class="displayname">{{if .Account.DisplayName}}{{.Account.DisplayName}}{{else}}{{.Account.Username}}{{end}}</a>
|
<a href="{{.Account.URL}}" class="avatar"><img src="{{.Account.Avatar}}" alt=""></a>
|
||||||
<a href="{{.Account.URL}}" class="username">@{{.Account.Username}}</a>
|
<a href="{{.Account.URL}}" class="displayname">{{if .Account.DisplayName}}{{.Account.DisplayName}}{{else}}{{.Account.Username}}{{end}}</a>
|
||||||
<div class="text">
|
<a href="{{.Account.URL}}" class="username">@{{.Account.Username}}</a>
|
||||||
{{if .SpoilerText}}
|
<div class="text">
|
||||||
<input class="spoiler" id="hideSpoiler-{{.ID}}" type="checkbox" style="display: none" aria-hidden="true" checked="true" />
|
{{if .SpoilerText}}
|
||||||
<div class="spoiler">
|
<input class="spoiler" id="hideSpoiler-{{.ID}}" type="checkbox" style="display: none" aria-hidden="true" checked="true" />
|
||||||
<span>{{.SpoilerText}}</span><label class="spoiler-label" for="hideSpoiler-{{.ID}}">Toggle visibility</label>
|
<div class="spoiler">
|
||||||
</div>
|
<span>{{.SpoilerText}}</span><label class="button spoiler-label" for="hideSpoiler-{{.ID}}">Toggle visibility</label>
|
||||||
{{end}}
|
</div>
|
||||||
<div class="content">
|
|
||||||
{{.Content |noescape}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{with .MediaAttachments}}
|
|
||||||
<div class="media {{(len .) | oddOrEven }}{{if eq (len .) 1}} single{{end}}{{if eq (len .) 2}} double{{end}}">
|
|
||||||
{{range .}}
|
|
||||||
<a href="{{.URL}}" target="_blank" title="{{.Description}}">
|
|
||||||
{{if not .Description}}
|
|
||||||
<div class="no-image-desc" aria-hidden="true" ><i class="fa fa-info-circle"></i><span>Missing image description</span></div>
|
|
||||||
{{end}}
|
|
||||||
<img src="{{.PreviewURL}}" alt="{{.Description}}"/>
|
|
||||||
</a>
|
|
||||||
{{end}}
|
{{end}}
|
||||||
|
<div class="content">
|
||||||
|
{{.Content |noescape}}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{with .MediaAttachments}}
|
||||||
|
<div class="media {{(len .) | oddOrEven }}{{if eq (len .) 1}} single{{end}}{{if eq (len .) 2}} double{{end}}">
|
||||||
|
{{range .}}
|
||||||
|
<a href="{{.URL}}" target="_blank" title="{{.Description}}">
|
||||||
|
{{if not .Description}}
|
||||||
|
<div class="no-image-desc" aria-hidden="true" ><i class="fa fa-info-circle"></i><span>Missing image description</span></div>
|
||||||
|
{{end}}
|
||||||
|
<img src="{{.PreviewURL}}" alt="{{.Description}}"/>
|
||||||
|
</a>
|
||||||
|
{{end}}
|
||||||
|
</div>
|
||||||
|
{{end}}
|
||||||
|
</div>
|
||||||
<div class="info">
|
<div class="info">
|
||||||
<div id="date">{{.CreatedAt | timestamp}}</div>
|
<div id="date">{{.CreatedAt | timestamp}}</div>
|
||||||
<div class="stats">
|
<div class="stats">
|
||||||
|
|
Loading…
Reference in a new issue