refactor: migrate entire css code to scss

This commit is contained in:
zelfroster 2023-04-05 01:06:38 +05:30
parent 47680bfda3
commit 2af133dfe7
35 changed files with 627 additions and 626 deletions

View File

@ -1,124 +0,0 @@
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;
}

View File

@ -208,7 +208,7 @@ const MessageView = () => {
m('button[id=show-less][style="display: none;"]', {
onclick: () => {
document.querySelector('#show-more').style.display = 'block';
document.querySelector('#truncate').style.height = '1rem';
document.querySelector('#truncate').style.height = '22px';
document.querySelector('#show-less').style.display = 'none';
}
}, 'Show Less'),

View File

@ -1,12 +0,0 @@
/*@import "reset" */
html, body, #main
height: 100%
/*body */
/* font-family: "Sans-serif" */
@import "chat"
@import "green-black"

View File

@ -0,0 +1,4 @@
// -----------------------------------------------------------------------------
// This file contains all application-wide Sass mixins.
// -----------------------------------------------------------------------------

View File

@ -0,0 +1,3 @@
@forward "variables";
@forward "mixins";
@forward "functions";

View File

@ -0,0 +1,20 @@
// -----------------------------------------------------------------------------
// This file contains all application-wide Sass mixins.
// -----------------------------------------------------------------------------
/// Button Mixin
@mixin button($bg-color) {
color: white;
background: $bg-color;
font-size: 1.2em;
padding: 5px 10px;
border: 0;
border-radius: 5px;
cursor: pointer;
box-shadow: inset -3px -3px 0 darken($color: $bg-color, $amount: 20);
&:active {
outline: none;
box-shadow: inset 3px 3px 0 darken($color: $bg-color, $amount: 20);
}
}

View File

@ -0,0 +1,22 @@
// -----------------------------------------------------------------------------
// This file contains all application-wide Sass variables.
// -----------------------------------------------------------------------------
//---------------------------------- Colors ----------------------------------//
/// Primary color
$primary-color: #019DFF !default;
/// Primary light color
$primary-light-color: #9BDAFF !default;
/// Light red
$red-color: #FF3A4A !default;
/// Dark
$dark-color: #14141B !default;
/// Light
$light-color: #EEF3F6 !default;

View File

@ -0,0 +1,149 @@
/******************************
General site-wide rules
******************************/
#main {
height: 100vh;
}
/* Main base div for tabs used by m.route */
.content {
height: 100%;
overflow: hidden;
}
/* Main tab content */
#tab-content {
height: 100%;
background-color: #eef3f6;
overflow: auto;
}
/* Individual tab pages */
.tab-page {
animation: fadein 0.5s;
}
input[type='text'],
input[type='password'],
input[type='number'],
textarea {
box-sizing: border-box;
background: white;
max-width: 100%;
font-size: 1.2em;
font-weight: 400;
border: 1px solid #ccc;
border-radius: 5px;
padding: 0.5em;
/* Disable chromium's focused element hinting*/
outline: none;
}
input:focus {
border: 1px solid #3ba4d7;
box-shadow: inset 0 0 5px #ccc;
}
input.stretched {
width: 90%;
}
input.small {
max-width: 70%;
font-size: 1em;
padding: 0.1em;
}
input.searchbar {
display: block;
margin: 0.9em 0 0 0.9em;
}
table {
padding: 20px;
table-layout: fixed;
width: 100%;
border-collapse: collapse;
text-align: center;
color: #333;
font-size: 1.2em;
}
table th {
font-weight: 100;
font-size: 1.3em;
color: black;
border-bottom: 2px solid #eee;
}
table tr {
border-bottom: 1px solid #eee;
}
h3 {
font-size: 2em;
font-weight: 100;
color: #444;
}
hr {
margin-left: 0;
color: #aaa;
}
.grid-2col {
display: grid;
grid-template-columns: auto auto;
grid-row-gap: 16px;
justify-content: start;
}
.grid-2col input[type='checkbox'] {
margin-top: 20px;
}
.error {
color: red;
}
.tooltip {
color: #333;
/*display: inline-block;*/
position: relative;
}
.tooltiptext {
visibility: hidden;
position: absolute;
top: 100%;
left: 50%;
min-width: 250px;
margin-left: -120px;
z-index: 1;
color: #ccc;
background-color: #333;
font-size: 0.9em;
text-align: center;
padding: 5px 0;
border-radius: 5px;
}
.tooltip:hover .tooltiptext {
visibility: visible;
animation: fadein 0.5s;
}
/******************************
Animations
******************************/
@keyframes fadein {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
.fadein {
animation: fadein 0.5s;
}
@keyframes swipe-from-left {
from {
margin-left: 100%;
}
to {
margin-left: 0;
}
}

View File

@ -0,0 +1,2 @@
@forward "reset";
@forward "base";

View File

@ -0,0 +1,79 @@
html {
font-size: 100%;
box-sizing: border-box;
}
/* Box sizing rules */
*,
*::before,
*::after {
box-sizing: inherit;
}
/* Remove default margin */
body,
h1,
h2,
h3,
h4,
p,
figure,
blockquote,
dl,
dd {
margin: 0;
padding: 0;
}
/* Remove list styles on ul, ol elements with a list role, which suggests default styling will be removed */
ul[role="list"],
ol[role="list"] {
list-style: none;
}
/* Set core root defaults */
html:focus-within {
scroll-behavior: smooth;
}
/* Set core body defaults */
body {
text-rendering: optimizeSpeed;
line-height: 1.5;
font-family: Arial, Helvetica, sans-serif;
}
/* A elements that don't have a class get default styles */
a:not([class]) {
text-decoration-skip-ink: auto;
}
/* Make images easier to work with */
img,
picture {
max-width: 100%;
display: block;
}
/* Inherit fonts for inputs and buttons */
input,
button,
textarea,
select {
font: inherit;
}
/* Remove all animations and transitions for people that prefer not to see them */
@media (prefers-reduced-motion: reduce) {
html:focus-within {
scroll-behavior: auto;
}
*,
*::before,
*::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
scroll-behavior: auto !important;
}
}

View File

@ -0,0 +1,12 @@
// -----------------------------------------------------------------------------
// This file contains all application-wide button styles.
// -----------------------------------------------------------------------------
@use "../abstracts" as *;
button {
@include button($primary-color);
}
button.red {
@include button($red-color);
}

View File

@ -0,0 +1,3 @@
@forward "buttons";
@forward "navbar";
@forward "progress-bar";

View File

@ -0,0 +1,127 @@
/* Navbar */
.nav-logo {
width: 130px;
padding: 1.2rem 0;
display: flex;
gap: 0.3rem;
align-items: center;
}
.nav-logo img {
width: 1.6rem;
}
.nav-logo h4 {
color: white;
align-self: end;
}
nav.tab-menu {
border-right: 4px solid #3ba4d7;
background-color: #14141B;
box-shadow: 0 5px 5px #aaa;
float: left;
display: flex;
flex-direction: column;
align-items: center;
height: 100%;
padding: 8px 6px;
margin-right: 0rem;
}
.tab-menu-item {
width: 10rem;
border-radius: 6px;
display: flex;
align-items: center;
}
a.tab-menu-item {
margin: 4px;
padding: 10px;
text-align: center;
text-decoration: none;
color: #ccc;
font-size: 0.875em;
/* CSS capitalization is magical! */
text-transform: capitalize;
transition: all 300ms;
/* To vertically stack child nodes */
display: inline-flex;
flex-direction: row;
}
.tab-menu-item:hover {
background-color: #FFFFFF15;
}
.tab-menu-item.selected-tab-item {
color: #99DEFF;
background-color: #89BEFA20;
font-weight: medium;
}
.sidebar {
height: 30%;
width: 200px;
background-color: white;
}
.sidebar a {
text-decoration: none;
text-transform: capitalize;
padding: 1em;
cursor: pointer;
display: block;
font-size: 0.95em;
color: #999;
}
.sidebar a:hover {
color: #222;
}
.sidebar .selected-sidebar-link {
font-weight: bold;
color: #222;
border-left: 5px solid #3ba4d7;
animation: expand-left-border 0.1s;
}
.sidebarquickview {
height: 30%;
width: 200px;
top: 300px;
background-color: white;
}
.sidebarquickview a {
text-decoration: none;
text-transform: capitalize;
padding: 1em;
cursor: pointer;
display: block;
font-size: 0.95em;
color: #999;
}
.sidebarquickview a:hover {
color: #222;
}
.sidebarquickview .selected-sidebarquickview-link {
font-weight: bold;
color: #222;
border-left: 5px solid #3ba4d7;
animation: expand-left-border 0.1s;
}
/* Content adjacent to sidebar */
.node-panel {
position: relative;
bottom: 155px;
margin-left: 200px;
animation: fadein 0.5s;
}
i.sidenav-icon {
width: 2.5rem;
height: 1.4rem;
display: grid;
place-items: center;
padding-right: 0.5rem;
}
@keyframes expand-left-border {
from {
border-left: 0;
}
to {
border-left: 5px solid #3ba4d7;
}
}

View File

@ -0,0 +1,23 @@
.progressbar {
width: 100%;
border-radius: 500px;
background-color: #eef3f6;
position: relative;
text-align: left;
}
.progressbar:before {
position: absolute;
text-align: center;
left: 0;
right: 0;
}
.progress-status {
display: inline-block;
height: 100%;
padding: 5px;
border-radius: 500px;
color: #000;
background-color: #3ba4d7;
text-align: center;
}

View File

@ -0,0 +1,3 @@
@forward "widget";
@forward "modal-container";
@forward "notification-container";

View File

@ -0,0 +1,28 @@
#modal-container {
display: none;
position: fixed;
z-index: 1;
height: 100%;
top: 0;
left: 0;
width: 100%;
background-color: rgba(0, 0, 0, 0.2);
}
.modal-content {
position: absolute;
color: #555;
width: 40%;
/*height: 40%;*/
min-height: 250px;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background-color: white;
padding: 2em;
border-radius: 20px;
animation: fadein 0.5s;
}
.modal-content > button {
float: right;
}

View File

@ -0,0 +1,8 @@
#notification-container {
position: absolute;
bottom: 0;
right: 0;
}
#notification-container .notification {
}

View File

@ -0,0 +1,17 @@
.widget {
margin: 1em;
padding: 1em;
border-radius: 10px;
background-color: white;
}
.widget > p {
font-size: 0.9em;
color: #666;
}
.widget .tooltip {
float: right;
}
.widget-half {
max-width: 50%;
}

View File

@ -0,0 +1,17 @@
@charset "UTF-8";
// 1. Configuration and helpers
@use "abstracts";
// 2. Base stuff
@use "base";
// 3. Components
@use "components";
// 4. Layout-related sections
@use "layouts";
// 5. Page-specific styles
@use "pages";

View File

@ -0,0 +1,52 @@
.certificate {
margin: auto;
display: flex;
align-items: flex-start;
flex-direction: column;
align-items: center;
margin-top: 20px;
}
.textArea {
box-sizing: none;
background: transparent;
font-size: 1.1rem;
border-radius: 5px;
border: none;
resize: none;
}
.logo {
display: flex;
max-width: 500px;
justify-content: center;
align-items: center;
}
.retroshareText > h3 {
margin-right: 3px;
}
.webhelp {
background: whitesmoke;
font-size: 0.8rem;
border-radius: 5px;
display: flex;
justify-content: center;
align-items: center;
gap: 0.5rem;
color: black;
border-radius: 5px;
border: 1px solid black;
padding: 10px 14px;
cursor: pointer;
}
.webhelp > i {
font-size: 1.2rem;
}
.webhelp > p {
font-weight: 600;
}
.retroshareID {
display: flex;
justify-self: start;
align-items: center;
font-size: 1.2rem;
font-family: monospace;
}

View File

@ -0,0 +1,11 @@
@forward "login";
@forward "home";
@forward "network";
@forward "people";
@forward "chat";
@forward "mail";
@forward "files";
@forward "channel";
@forward "forums";
@forward "board";
@forward "config";

View File

@ -0,0 +1,43 @@
/* Login */
.login-page {
background-image: linear-gradient(-45deg, #0e76a7, #7bccff);
height: 100%;
animation: fadein 0.5s;
}
.login-container {
background-color: white;
box-shadow: 3px 3px 5px #444;
margin: auto;
position: relative;
top: 100px;
max-width: 400px;
max-height: 500px;
border-radius: 5px;
display: flex;
align-items: flex-start;
flex-direction: column;
align-items: center;
}
.extra > label,
.extra > br,
.extra > input {
margin-bottom: 0;
}
.login-container * {
margin-bottom: 15px;
}
.login-container > img {
margin-top: 15px;
margin-bottom: 30px;
}
.login-container extra {
margin: 0;
}
.login-container > a {
text-decoration: underline;
cursor: pointer;
}

View File

@ -68,7 +68,7 @@ input.star-check:checked + label.star-check {
.truncate {
display: flex;
width: 65vw;
height: 1rem;
height: 22px;
flex-wrap: wrap;
gap: 4px;
overflow: hidden;
@ -111,7 +111,7 @@ iframe.msg {
}
.mail-node-panel {
position: relative;
bottom: 680px;
bottom: 755px;
margin-left: 200px;
animation: fadein 0.5s;
}

View File

@ -19,7 +19,7 @@
.defaultAvatar {
width: 50px;
height: max-content;
height: 50px;
aspect-ratio: 1;
background: lightsteelblue;
border-radius: 50%;

View File

@ -1,486 +0,0 @@
/******************************
General site-wide rules
******************************/
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
/* Main base div for tabs used by m.route */
.content {
height: 100%;
overflow: hidden;
}
/* Main tab content */
#tab-content {
height: 100%;
background-color: #eef3f6;
overflow: auto;
}
/* Individual tab pages */
.tab-page {
/* This is required since main content's overflow is hidden
and bottom elements will not be entirely visible. */
margin-bottom: 200px;
animation: fadein 0.5s;
}
input[type='text'],
input[type='password'],
input[type='number'],
textarea {
box-sizing: border-box;
background: white;
max-width: 100%;
font-size: 1.2em;
font-weight: 400;
border: 1px solid #ccc;
border-radius: 5px;
padding: 0.5em;
/* Disable chromium's focused element hinting*/
outline: none;
}
input:focus {
border: 1px solid #3ba4d7;
box-shadow: inset 0 0 5px #ccc;
}
input.stretched {
width: 90%;
}
input.small {
max-width: 70%;
font-size: 1em;
padding: 0.1em;
}
input.searchbar {
display: block;
margin: 0.9em 0 0 0.9em;
}
button {
color: white;
background: #2699ed;
font-size: 1.2em;
padding: 5px 10px;
border: 0;
border-radius: 5px;
box-shadow: inset -3px -3px 0 #0d69ac;
cursor: pointer;
}
button:active {
outline: none;
box-shadow: inset 3px 3px 0 #0d69ac;
}
button.red {
background: #bd0909;
box-shadow: inset -3px -3px 0 #830000;
}
table {
padding: 20px;
table-layout: fixed;
width: 100%;
border-collapse: collapse;
text-align: center;
color: #333;
font-size: 1.2em;
}
table th {
font-weight: 100;
font-size: 1.3em;
color: black;
border-bottom: 2px solid #eee;
}
table tr {
border-bottom: 1px solid #eee;
}
h3 {
font-size: 2em;
font-weight: 100;
color: #444;
padding: 0;
margin: 0;
}
hr {
margin-left: 0;
color: #aaa;
}
.widget {
margin: 1em;
padding: 1em;
border-radius: 10px;
background-color: white;
}
.widget > p {
margin: 0;
font-size: 0.9em;
color: #666;
}
.widget .tooltip {
float: right;
}
.widget-half {
max-width: 50%;
}
.certificate {
margin: auto;
display: flex;
align-items: flex-start;
flex-direction: column;
align-items: center;
margin-top: 20px;
}
.certificate > p {
margin: 0;
padding: 0;
}
.textArea {
box-sizing: none;
background: transparent;
font-size: 1.1rem;
border-radius: 5px;
border: none;
resize: none;
}
.logo {
display: flex;
max-width: 500px;
justify-content: center;
align-items: center;
}
.retroshareText > h3 {
margin-right: 3px;
}
.webhelp {
background: whitesmoke;
font-size: 0.8rem;
border-radius: 5px;
display: flex;
justify-content: center;
align-items: center;
gap: 0.5rem;
color: black;
border-radius: 5px;
border: 1px solid black;
padding: 10px 14px;
cursor: pointer;
}
.webhelp > i {
font-size: 1.2rem;
}
.webhelp > p {
margin-bottom: -4px;
font-weight: 600;
}
.retroshareID {
display: flex;
justify-self: start;
align-items: center;
font-size: 1.2rem;
}
.grid-2col {
display: grid;
grid-template-columns: auto auto;
grid-row-gap: 16px;
justify-content: start;
}
.grid-2col input[type='checkbox'] {
margin-top: 20px;
}
.error {
color: red;
}
.progressbar {
width: 100%;
border-radius: 500px;
background-color: #eef3f6;
position: relative;
text-align: left;
}
.progressbar:before {
position: absolute;
text-align: center;
left: 0;
right: 0;
}
.progress-status {
display: inline-block;
height: 100%;
padding: 5px;
border-radius: 500px;
color: #000;
background-color: #3ba4d7;
text-align: center;
}
.tooltip {
color: #333;
/*display: inline-block;*/
position: relative;
}
.tooltiptext {
visibility: hidden;
position: absolute;
top: 100%;
left: 50%;
min-width: 250px;
margin-left: -120px;
z-index: 1;
color: #ccc;
background-color: #333;
font-size: 0.9em;
text-align: center;
padding: 5px 0;
border-radius: 5px;
}
.tooltip:hover .tooltiptext {
visibility: visible;
animation: fadein 0.5s;
}
#modal-container {
display: none;
position: fixed;
z-index: 1;
height: 100%;
top: 0;
left: 0;
width: 100%;
background-color: rgba(0, 0, 0, 0.2);
}
.modal-content {
position: absolute;
color: #555;
width: 40%;
/*height: 40%;*/
min-height: 250px;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background-color: white;
padding: 2em;
border-radius: 20px;
animation: fadein 0.5s;
}
.modal-content > button {
float: right;
}
#notification-container {
position: absolute;
bottom: 0;
right: 0;
}
#notification-container .notification {
}
/******************************
Animations
******************************/
@keyframes fadein {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
.fadein {
animation: fadein 0.5s;
}
@keyframes swipe-from-left {
from {
margin-left: 100%;
}
to {
margin-left: 0;
}
}
@keyframes expand-left-border {
from {
border-left: 0;
}
to {
border-left: 5px solid #3ba4d7;
}
}
/******************************
Target specific sections
******************************/
/* Login */
.login-page {
background-image: linear-gradient(-45deg, #0e76a7, #7bccff);
height: 100%;
animation: fadein 0.5s;
}
.login-container {
background-color: white;
box-shadow: 3px 3px 5px #444;
margin: auto;
position: relative;
top: 100px;
max-width: 400px;
max-height: 500px;
border-radius: 5px;
display: flex;
align-items: flex-start;
flex-direction: column;
align-items: center;
}
.extra > label,
.extra > br,
.extra > input {
margin-bottom: 0;
}
.login-container * {
margin-bottom: 15px;
}
.login-container > img {
margin-top: 15px;
margin-bottom: 30px;
}
.login-container extra {
margin: 0;
}
.login-container > a {
text-decoration: underline;
cursor: pointer;
}
/* Navbar */
.nav-logo {
width: 130px;
padding: 1.2rem 0;
display: flex;
gap: 0.3rem;
align-items: center;
}
.nav-logo img {
width: 1.6rem;
}
.nav-logo h4 {
margin: 0;
color: white;
align-self: end;
}
nav.tab-menu {
border-right: 4px solid #3ba4d7;
background-color: #14141B;
box-shadow: 0 5px 5px #aaa;
float: left;
display: flex;
flex-direction: column;
align-items: center;
height: 100%;
padding: 8px 6px;
margin-right: 0rem;
}
.tab-menu-item {
width: 10rem;
border-radius: 6px;
display: flex;
align-items: center;
}
a.tab-menu-item {
margin: 4px;
padding: 10px;
text-align: center;
text-decoration: none;
color: #ccc;
font-size: 0.875em;
/* CSS capitalization is magical! */
text-transform: capitalize;
transition: all 300ms;
/* To vertically stack child nodes */
display: inline-flex;
flex-direction: row;
}
.tab-menu-item:hover {
background-color: #FFFFFF15;
}
.tab-menu-item.selected-tab-item {
color: #99DEFF;
background-color: #89BEFA20;
font-weight: medium;
}
.sidebar {
height: 30%;
width: 200px;
background-color: white;
}
.sidebar a {
text-decoration: none;
text-transform: capitalize;
padding: 1em;
cursor: pointer;
display: block;
font-size: 0.95em;
color: #999;
}
.sidebar a:hover {
color: #222;
}
.sidebar .selected-sidebar-link {
font-weight: bold;
color: #222;
border-left: 5px solid #3ba4d7;
animation: expand-left-border 0.1s;
}
.sidebarquickview {
height: 30%;
width: 200px;
top: 300px;
background-color: white;
}
.sidebarquickview a {
text-decoration: none;
text-transform: capitalize;
padding: 1em;
cursor: pointer;
display: block;
font-size: 0.95em;
color: #999;
}
.sidebarquickview a:hover {
color: #222;
}
.sidebarquickview .selected-sidebarquickview-link {
font-weight: bold;
color: #222;
border-left: 5px solid #3ba4d7;
animation: expand-left-border 0.1s;
}
/* Content adjacent to sidebar */
.node-panel {
position: relative;
/* bottom: 650px; */
margin-left: 200px;
animation: fadein 0.5s;
}
i.sidenav-icon {
width: 2.5rem;
height: 1.4rem;
display: grid;
place-items: center;
padding-right: 0.5rem;
}