things
This commit is contained in:
parent
7180ddcfbc
commit
fd4eb5b3e8
18 changed files with 195 additions and 272 deletions
437
static/css/style.css
Normal file
437
static/css/style.css
Normal file
|
@ -0,0 +1,437 @@
|
|||
:root {
|
||||
--ribbon-width: 160px;
|
||||
--ribbon-height: 80px;
|
||||
|
||||
--background-color: #041936;
|
||||
--text-color: #bbb;
|
||||
|
||||
--input-background-color: #28374a;
|
||||
--input-border-light: #545454;
|
||||
--input-border-dark: #3a3a3a;
|
||||
}
|
||||
|
||||
/* #################### */
|
||||
/* #### structure ##### */
|
||||
/* #################### */
|
||||
|
||||
html, body {
|
||||
margin: 0;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
main {
|
||||
height: 100%;
|
||||
display: grid;
|
||||
grid-auto-columns: 1fr;
|
||||
grid-template-columns: 1fr 2fr;
|
||||
grid-template-rows: var(--ribbon-height) 1fr 1fr;
|
||||
gap: 0 0;
|
||||
grid-template-areas: "nav nav" "queue queue" "browser result" "footer footer";
|
||||
}
|
||||
|
||||
#queue {
|
||||
grid-area: queue;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
#nav {
|
||||
grid-area: nav;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
#nav > div {
|
||||
width: var(--ribbon-width);
|
||||
}
|
||||
|
||||
#result {
|
||||
grid-area: result;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
#browser {
|
||||
grid-area: browser;
|
||||
}
|
||||
|
||||
main footer {
|
||||
grid-area: footer;
|
||||
overflow: auto;
|
||||
background-color: var(--background-color);
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#control-admin {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
#sanic-logo {
|
||||
display: flex;
|
||||
flex-grow: 1;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
#sanic-logo > div {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#sanic-logo img {
|
||||
max-width: 75%;
|
||||
max-height: 75%;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.spaced {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
/* #################### */
|
||||
/* ### pretty stuff ### */
|
||||
/* #################### */
|
||||
|
||||
#control-progress {
|
||||
width: var(--ribbon-width);
|
||||
}
|
||||
|
||||
#control-volume {
|
||||
width: 80px;
|
||||
}
|
||||
|
||||
#nav > div.wide {
|
||||
width: 280px;
|
||||
}
|
||||
|
||||
#nav > div.wide div {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
/* Disable arrows in input */
|
||||
|
||||
/* Chrome, Safari, Edge, Opera */
|
||||
#control-xfade::-webkit-outer-spin-button,
|
||||
#control-xfade::-webkit-inner-spin-button {
|
||||
-webkit-appearance: none;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* Firefox */
|
||||
#control-xfade[type=number] {
|
||||
-moz-appearance: textfield;
|
||||
}
|
||||
|
||||
#control-xfade {
|
||||
width: 2em;
|
||||
}
|
||||
|
||||
#control-previous,
|
||||
#control-play-pause,
|
||||
#control-stop,
|
||||
#control-next {
|
||||
width: 2.5em;
|
||||
height: 2.5em;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/*
|
||||
#control-track {
|
||||
transform: translateX(100%);
|
||||
-moz-transform: translateX(100%);
|
||||
-webkit-transform: translateX(100%);
|
||||
animation: scroll-left 20s linear infinite;
|
||||
-moz-animation: scroll-left 2s linear infinite;
|
||||
-webkit-animation: scroll-left 2s linear infinite;
|
||||
}
|
||||
|
||||
@keyframes scroll-left {
|
||||
0% {
|
||||
transform: translateX(100%);
|
||||
-moz-transform: translateX(100%);
|
||||
-webkit-transform: translateX(100%);
|
||||
}
|
||||
100% {
|
||||
transform: translateX(-100%);
|
||||
-moz-transform: translateX(-100%);
|
||||
-webkit-transform: translateX(-100%);
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-keyframes scroll-left {
|
||||
0% {
|
||||
-moz-transform: translateX(100%);
|
||||
}
|
||||
100% {
|
||||
-moz-transform: translateX(-100%);
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes scroll-left {
|
||||
0% {
|
||||
-webkit-transform: translateX(100%);
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateX(-100%);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
html, body {
|
||||
background-color: #09101d;
|
||||
color: var(--text-color);
|
||||
scrollbar-color: #490b00 #09101d; /* only in firefox: https://developer.mozilla.org/en-US/docs/Web/CSS/scrollbar-color */
|
||||
font-weight: normal;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
font-size: 12pt;
|
||||
}
|
||||
|
||||
a {
|
||||
color: var(--text-color);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
button {
|
||||
background-color: var(--input-background-color);
|
||||
color: var(--text-color);
|
||||
border-top-color: var(--input-border-light);
|
||||
border-right-color: var(--input-border-dark);
|
||||
border-bottom-color: var(--input-border-dark);
|
||||
border-left-color: var(--input-border-light);
|
||||
}
|
||||
|
||||
button[disabled] {
|
||||
color: var(--background-color);
|
||||
}
|
||||
|
||||
button[disabled] .loader {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
button .loader {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.loader {
|
||||
width: 10pt;
|
||||
height: 10pt;
|
||||
border: 3px solid var(--text-color);
|
||||
border-bottom-color: transparent;
|
||||
border-radius: 50%;
|
||||
display: inline-block;
|
||||
box-sizing: border-box;
|
||||
animation: rotation 1s linear infinite;
|
||||
}
|
||||
|
||||
@keyframes rotation {
|
||||
0% {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
100% {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
/* borderless button used in queue */
|
||||
.borderless {
|
||||
border: none;
|
||||
background-color: inherit;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
input[type=text] {
|
||||
background-color: var(--input-background-color);
|
||||
color: var(--text-color);
|
||||
border: 1px solid black;
|
||||
border-right-color: var(--input-border-light);
|
||||
border-bottom-color: var(--input-border-light);
|
||||
}
|
||||
|
||||
.marquee {
|
||||
display: flex;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
width: var(--ribbon-width);
|
||||
font-size: 10pt;
|
||||
background-color: var(--input-background-color);
|
||||
color: var(--text-color);
|
||||
border: 1px solid black;
|
||||
border-right-color: var(--input-border-light);
|
||||
border-bottom-color: var(--input-border-light);
|
||||
container-type: inline-size;
|
||||
}
|
||||
|
||||
.wide {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-around;
|
||||
}
|
||||
|
||||
.marquee > * {
|
||||
-webkit-animation: marquee 10s linear infinite both alternate;
|
||||
animation: marquee 10s linear infinite both alternate;
|
||||
}
|
||||
@-webkit-keyframes marquee {
|
||||
to {
|
||||
transform: translateX(min(100cqw - 100%, 0px));
|
||||
}
|
||||
}
|
||||
@keyframes marquee {
|
||||
to {
|
||||
transform: translateX(min(100cqw - 100%, 0px));
|
||||
}
|
||||
}
|
||||
|
||||
#nav {
|
||||
padding: 5px;
|
||||
background: linear-gradient(0deg, rgba(3,7,11,1) 0%, rgba(14,27,43,1) 4%, rgba(41,55,74,1) 6%, rgba(18,35,56,1) 94%, rgba(40,68,104,1) 96%, rgba(168,182,200,1) 100%);
|
||||
}
|
||||
|
||||
#nav > div {
|
||||
border-right: 1px solid black;
|
||||
}
|
||||
|
||||
thead {
|
||||
background: #0F1D2F linear-gradient(0deg, rgba(15, 29, 47, 1) 0%, rgba(15, 29, 47, 1) 50%, rgba(7, 14, 23, 1) 100%);
|
||||
}
|
||||
|
||||
th {
|
||||
font-weight: bold;
|
||||
padding: 2px 2px 2px 14px;
|
||||
border: solid #1c2c1a;
|
||||
border-width: 0 1px 0 0;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/* show and hide action buttons on hover */
|
||||
tbody tr td button {
|
||||
display: none;
|
||||
}
|
||||
|
||||
tbody tr:hover td button {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
/* fixed width for action buttons in queue so it doesn't change size when hovering */
|
||||
tbody tr td:last-of-type {
|
||||
min-width: 6em;
|
||||
}
|
||||
|
||||
tbody td.actions {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
#queue {
|
||||
border-bottom: 4px ridge #3a506b;
|
||||
}
|
||||
|
||||
/* make arrow for currently playing song look nice */
|
||||
|
||||
#queue table tr.playing td:first-of-type::before {
|
||||
content: '\2BC8'; /* ⯈ Black Medium Right-Pointing Triangle Centred */
|
||||
}
|
||||
|
||||
#queue table tr td:first-of-type {
|
||||
text-align: right;
|
||||
padding-right: 0.5em;
|
||||
}
|
||||
|
||||
/* align times */
|
||||
|
||||
#queue table tr td:nth-last-of-type(2) {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
table tr:nth-child(odd) td {
|
||||
background-color: #1e1f1a;
|
||||
}
|
||||
|
||||
table tr:nth-child(even) td {
|
||||
background-color: #171812;
|
||||
}
|
||||
|
||||
#queue table tr:nth-child(odd).playing td,
|
||||
#queue table tr:nth-child(even).playing td {
|
||||
background-color: #490b00;
|
||||
}
|
||||
|
||||
table tr:hover td {
|
||||
background-color: #354158;
|
||||
}
|
||||
|
||||
#tabs {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
#tabs a {
|
||||
width: 50%;
|
||||
padding: 3pt;
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
background-color: var(--input-background-color);
|
||||
color: var(--text-color);
|
||||
border: 1px solid var(--input-border-light);
|
||||
border-top-left-radius: 5pt;
|
||||
border-top-right-radius: 5pt;
|
||||
}
|
||||
|
||||
#tabs a.active {
|
||||
background-color: #1a1a1a;
|
||||
color: var(--text-color);
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
#browser {
|
||||
background-color: #171812;
|
||||
border-right: 4px ridge #3a506b;
|
||||
}
|
||||
|
||||
#control-playlist-list {
|
||||
font-size: 12pt;
|
||||
width: 100%;
|
||||
background-color: var(--input-background-color);
|
||||
color: var(--text-color);
|
||||
border: 1px solid black;
|
||||
border-right-color: var(--input-border-light);
|
||||
border-bottom-color: var(--input-border-light);
|
||||
scrollbar-color: #490b00 #09101d; /* only in firefox: https://developer.mozilla.org/en-US/docs/Web/CSS/scrollbar-color */
|
||||
}
|
||||
|
||||
footer svg {
|
||||
color: var(--text-color);
|
||||
width: 12pt;
|
||||
height: 12pt;
|
||||
}
|
||||
|
||||
/*dialog {*/
|
||||
/* position: fixed;*/
|
||||
/* left: 50%;*/
|
||||
/* top: 50%;*/
|
||||
/* transform: translate(-50%, -50%);*/
|
||||
/*}*/
|
||||
|
||||
dialog {
|
||||
background-color: var(--background-color);
|
||||
color: var(--text-color);
|
||||
}
|
||||
|
||||
dialog .close {
|
||||
position: absolute;
|
||||
top: 1pt;
|
||||
right: 1pt;
|
||||
}
|
||||
|
||||
#control-search-pattern {
|
||||
margin: 1em;
|
||||
}
|
||||
|
||||
#search:first-child {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
150
static/css/treeview.css
Normal file
150
static/css/treeview.css
Normal file
|
@ -0,0 +1,150 @@
|
|||
/* https://codepen.io/defims/pen/DBaVXM */
|
||||
|
||||
ul {
|
||||
float: left;
|
||||
clear: left;
|
||||
margin-left: .25em;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
ul:before {
|
||||
content:"";
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
top:.25em;
|
||||
right:auto;
|
||||
bottom:0;
|
||||
left: 1.75em;
|
||||
margin: auto;
|
||||
/* border-right: dotted white .1em; */
|
||||
width: 0;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
ul:after {
|
||||
content: "-";
|
||||
position: absolute;
|
||||
z-index: 3;
|
||||
top: 0;
|
||||
left: -.5em;
|
||||
margin-left: .65em;
|
||||
margin-top: .15em;
|
||||
padding: 0;
|
||||
width: .8em;
|
||||
height: .8em;
|
||||
text-align: center;
|
||||
line-height: .7em;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
ul > li {
|
||||
display: block;
|
||||
position: relative;
|
||||
float: left;
|
||||
clear: both;
|
||||
right:auto;
|
||||
padding-left: 1em;
|
||||
width:auto;
|
||||
text-align: center;
|
||||
color:white;
|
||||
}
|
||||
|
||||
ul > li > input[type=checkbox] {
|
||||
display:block;
|
||||
position: absolute;
|
||||
float: left;
|
||||
z-index: 4;
|
||||
margin: 0 0 0 -1em;
|
||||
padding: 0;
|
||||
width:1em;
|
||||
height: 2em;
|
||||
font-size: 1em;
|
||||
opacity: 0;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
ul > li > input[type=checkbox]:not(:checked)~ul:before {
|
||||
display: none;
|
||||
}
|
||||
|
||||
ul > li > input[type=checkbox]:not(:checked)~ul:after {
|
||||
content: "+"
|
||||
}
|
||||
|
||||
ul > li > input[type=checkbox]:not(:checked)~ul * {
|
||||
display: none;
|
||||
}
|
||||
|
||||
ul > li > span {
|
||||
display: block;
|
||||
position: relative;
|
||||
float: left;
|
||||
z-index: 3;
|
||||
margin-left: .25em;
|
||||
padding-left: .25em;
|
||||
}
|
||||
|
||||
ul > li > span:after {
|
||||
content: "";
|
||||
display: block;
|
||||
position: absolute;
|
||||
left:-1em;
|
||||
top:0;
|
||||
bottom:0;
|
||||
margin: auto .25em auto .25em;
|
||||
/* border-top: dotted white .1em; */
|
||||
width: .75em;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
ul > li:last-child:before {
|
||||
content: ""; display: block; position: absolute; z-index: 2;
|
||||
top:1em; left:0; bottom:-.25em;
|
||||
width:.75em; height:auto;
|
||||
}
|
||||
|
||||
#tree {
|
||||
position: relative; font-family: "Georgia";
|
||||
}
|
||||
|
||||
#tree:before {
|
||||
left:.5em;
|
||||
}
|
||||
|
||||
#tree:after {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* decoration */
|
||||
ul, ul > li:last-child:before {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
ul > li {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
ul:after {
|
||||
background: linear-gradient(135deg, rgba(255,255,255,1), rgba(195,186,170,1));
|
||||
color: black;
|
||||
border:solid gray 1px;
|
||||
border-radius: .1em;
|
||||
}
|
||||
|
||||
ul > li > span {
|
||||
border-radius: .25em;
|
||||
color: white;
|
||||
}
|
||||
|
||||
ul > li > input[type=checkbox]~span:before {
|
||||
content:""; display: inline-block;
|
||||
margin: 0 .25em 0 0;
|
||||
width:1em; height: 1em; ;line-height: 1em;
|
||||
content: '\1F4C1';
|
||||
background-repeat:no-repeat;
|
||||
background-size:contain;
|
||||
}
|
||||
|
||||
ul > li > input[type=checkbox]:checked~span:before {
|
||||
content: '\1F4C2';
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue