Merge pull request #71 from zelfroster/css-to-scss

feat: migrate entirely from css to scss
This commit is contained in:
csoler 2023-04-13 21:35:10 +02:00 committed by GitHub
commit 3e9e1b3628
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
48 changed files with 831 additions and 712 deletions

2
.gitignore vendored
View File

@ -3,4 +3,4 @@ Makefile
webui/*
webui.pro.user
libwebui.so*
node_modules/

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,20 @@
@charset "UTF-8";
// 1. Configuration and helpers
@use "abstracts";
// 2. Vendors specific files
@use "vendors";
// 3. Base stuff
@use "base";
// 4. Components
@use "components";
// 5. Layout-related sections
@use "layouts";
// 6. 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

@ -0,0 +1,2 @@
@forward "fontawesome";
@forward "solid";

22
webui-src/app/scss/vendors/_solid.scss vendored Normal file
View File

@ -0,0 +1,22 @@
/*!
* Font Awesome Free 5.9.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
*/
@font-face {
font-family: 'Font Awesome 5 Free';
font-style: normal;
font-weight: 900;
font-display: auto;
src: url("./webfonts/fa-solid-900.eot");
src: url("./webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"),
url("./webfonts/fa-solid-900.woff2") format("woff2"),
url("./webfonts/fa-solid-900.woff") format("woff"),
url("./webfonts/fa-solid-900.ttf") format("truetype"),
url("./webfonts/fa-solid-900.svg#fontawesome") format("svg");
}
.fa,
.fas {
font-family: 'Font Awesome 5 Free';
font-weight: 900;
}

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;
}

View File

@ -1,16 +0,0 @@
/*!
* Font Awesome Free 5.9.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
*/
@font-face {
font-family: 'Font Awesome 5 Free';
font-style: normal;
font-weight: 900;
font-display: auto;
src: url("../webfonts/fa-solid-900.eot");
src: url("../webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.woff") format("woff"), url("../webfonts/fa-solid-900.ttf") format("truetype"), url("../webfonts/fa-solid-900.svg#fontawesome") format("svg"); }
.fa,
.fas {
font-family: 'Font Awesome 5 Free';
font-weight: 900; }

View File

@ -1,30 +1,29 @@
<!doctype html>
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>RetroShare</title>
<link rel="stylesheet" href="app.css">
<link rel="stylesheet" href="css/fontawesome.css">
<link rel="stylesheet" href="css/solid.css">
<link href="/data/retroshare.svg" rel="icon" data-n-head="true" type="image/svg">
<script src="app.js"></script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>RetroShare</title>
<link rel="stylesheet" href="app.css">
<link href="/data/retroshare.svg" rel="icon" data-n-head="true" type="image/svg">
<script src="app.js"></script>
</head>
<body onload="load_ui();">
<div id="main">
<h3>
Javascript not found!
</h3>
<script type="text/javascript">
function load_ui() {
var main = require('main');
}
</script>
<noscript>Sorry but JavaScript is needed here! Please enable it in your browser.</noscript>
</div>
<div id="notification-container"></div>
<div id="modal-container"></div>
<div id="main">
<h3>
Javascript not found!
</h3>
<script type="text/javascript">
function load_ui() {
var main = require('main');
}
</script>
<noscript>Sorry but JavaScript is needed here! Please enable it in your browser.</noscript>
</div>
<div id="notification-container"></div>
<div id="modal-container"></div>
</body>
</html>

View File

@ -1,12 +0,0 @@
module.exports = {
config:{
files:{
javascripts:{
joinTo: 'app.js'
},
stylesheets:{
joinTo: 'app.css'
}
}
}
};

View File

@ -31,21 +31,9 @@ set "basefolder=%cd%\"
for /R %%F in (*.js) do call :addfile-js "%basefolder%" "%%F"
popd
echo building app.css
rem type %src%\app\green-black.scss >> %publicdest%\app.css
type %src%\make-src\main.css >> %publicdest%\app.css
rem type %src%\make-src\chat.css >> %publicdest%\app.css
pushd %src%\app
set "basefolder=%cd%\"
for /R %%F in (*.css) do (
set fname=%%~dpnF
set fname=!fname:%basefolder%=!
set fname=!fname:\=/!
echo - adding !fname! ...
type %%F >> %publicdest%\app.css
)
popd
rem #### copy css file generated by sass ####
echo copy css folder
xcopy /s %src%\styles\ %publicdest%
echo copy assets folder
xcopy /s %src%\assets\ %publicdest%

View File

@ -44,17 +44,9 @@ if [ "$2" = "" ]||[ "$2" = "app.js" ]; then
fi
if [ "$2" = "" ]||[ "$2" = "app.css" ]; then
echo building app.css:
#cat $src/app/green-black.scss >> $publicdest/app.css
#cat $src/app/theme.css >> $publicdest/app.css
cat $src/make-src/main.css >> $publicdest/app.css
#cat $src/make-src/chat.css >> $publicdest/app.css
for filename in $src/app/**/*.css; do
fname=$(basename "$filename")
fname="${fname%.*}"
echo - adding $fname ...
cat $filename >> $publicdest/app.css
done
# copy css file generated by sass
echo copy styles folder
cp $src/styles/* $publicdest/
fi
if [ "$2" = "" ]||[ "$2" = "index.html" ]; then

View File

@ -1,11 +1,15 @@
{
"name": "webui_neu",
"name": "webui-src",
"version": "1.0.0",
"description": "",
"scripts": {
"watch": "brunch watch --server"
"watch": "rm ./styles/app.css && sass --watch --embed-sources --embed-source-map ./app/scss/main.scss ./styles/app.css",
"build": "sass --no-source-map --style=compressed ./app/scss/main.scss ./styles/app.css"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"auto-reload-brunch": "^1.8.0",
"brunch": "^1.8.5",
"sass-brunch": "^1.9.1"
"sass": "^1.60.0"
}
}

132
webui-src/pnpm-lock.yaml Normal file
View File

@ -0,0 +1,132 @@
lockfileVersion: '6.0'
devDependencies:
sass:
specifier: ^1.60.0
version: 1.60.0
packages:
/anymatch@3.1.3:
resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
engines: {node: '>= 8'}
dependencies:
normalize-path: 3.0.0
picomatch: 2.3.1
dev: true
/binary-extensions@2.2.0:
resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
engines: {node: '>=8'}
dev: true
/braces@3.0.2:
resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
engines: {node: '>=8'}
dependencies:
fill-range: 7.0.1
dev: true
/chokidar@3.5.3:
resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
engines: {node: '>= 8.10.0'}
dependencies:
anymatch: 3.1.3
braces: 3.0.2
glob-parent: 5.1.2
is-binary-path: 2.1.0
is-glob: 4.0.3
normalize-path: 3.0.0
readdirp: 3.6.0
optionalDependencies:
fsevents: 2.3.2
dev: true
/fill-range@7.0.1:
resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
engines: {node: '>=8'}
dependencies:
to-regex-range: 5.0.1
dev: true
/fsevents@2.3.2:
resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
os: [darwin]
requiresBuild: true
dev: true
optional: true
/glob-parent@5.1.2:
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
engines: {node: '>= 6'}
dependencies:
is-glob: 4.0.3
dev: true
/immutable@4.3.0:
resolution: {integrity: sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==}
dev: true
/is-binary-path@2.1.0:
resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
engines: {node: '>=8'}
dependencies:
binary-extensions: 2.2.0
dev: true
/is-extglob@2.1.1:
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
engines: {node: '>=0.10.0'}
dev: true
/is-glob@4.0.3:
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
engines: {node: '>=0.10.0'}
dependencies:
is-extglob: 2.1.1
dev: true
/is-number@7.0.0:
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
engines: {node: '>=0.12.0'}
dev: true
/normalize-path@3.0.0:
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
engines: {node: '>=0.10.0'}
dev: true
/picomatch@2.3.1:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
engines: {node: '>=8.6'}
dev: true
/readdirp@3.6.0:
resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
engines: {node: '>=8.10.0'}
dependencies:
picomatch: 2.3.1
dev: true
/sass@1.60.0:
resolution: {integrity: sha512-updbwW6fNb5gGm8qMXzVO7V4sWf7LMXnMly/JEyfbfERbVH46Fn6q02BX7/eHTdKpE7d+oTkMMQpFWNUMfFbgQ==}
engines: {node: '>=12.0.0'}
hasBin: true
dependencies:
chokidar: 3.5.3
immutable: 4.3.0
source-map-js: 1.0.2
dev: true
/source-map-js@1.0.2:
resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
engines: {node: '>=0.10.0'}
dev: true
/to-regex-range@5.0.1:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
dependencies:
is-number: 7.0.0
dev: true

7
webui-src/styles/app.css Normal file

File diff suppressed because one or more lines are too long

View File

@ -29,10 +29,7 @@ WEBUI_SRC_JS += $$PWD/webui-src/app/login.js
WEBUI_SRC_JS += $$PWD/webui-src/app/main.js
WEBUI_SRC_JS += $$PWD/webui-src/app/home.js
WEBUI_SRC_CSS += $$PWD/webui-src/app/green-black.scss
WEBUI_SRC_CSS += $$PWD/webui-src/app/_reset.scss
WEBUI_SRC_CSS += $$PWD/webui-src/app/_chat.sass
WEBUI_SRC_CSS += $$PWD/webui-src/app/main.sass
WEBUI_SRC_CSS += $$PWD/webui-src/styles/app.css
WEBUI_SRC_DATA += $$PWD/data/retroshare.svg