[SCSS, some dart] Theme rework, dark dropped, nord replaces dark
The old dark mode is dropped and replaced with nord. Light and black themes were also rebased on the Nord theme. Code blocks now appear the same way my terminal windows appear in my Linux configuration, emulating a side titlebar.
This commit is contained in:
parent
291fc9111b
commit
d645e29ce5
@ -131,7 +131,6 @@ Future<Element> makeThemeChanger() async {
|
||||
..attributes['id'] = 'theme-dropdown'
|
||||
..append(makeThemeItem('lightBtn'))
|
||||
..append(makeThemeItem('darkBtn'))
|
||||
..append(makeThemeItem('nordBtn'))
|
||||
..append(makeThemeItem('blackBtn')));
|
||||
}
|
||||
|
||||
|
@ -5,6 +5,16 @@ import './navbar.dart' show makeNavbar;
|
||||
|
||||
const image_header = '/img/icon.webp';
|
||||
|
||||
Future<void> makeDecorativeButtonsOrgSrc() async {
|
||||
for (var pre in querySelectorAll('.org-src-container')) {
|
||||
pre
|
||||
..append(Element.div()..attributes['class'] = 'closeButton')
|
||||
..append(Element.div()..attributes['class'] = 'minButton')
|
||||
..append(Element.div()..attributes['class'] = 'maxButton')
|
||||
..append(Element.div()..attributes['class'] = 'floatButton');
|
||||
}
|
||||
}
|
||||
|
||||
Future<Element> makeHeader() async {
|
||||
var header = Element.tag('header');
|
||||
header
|
||||
@ -54,6 +64,9 @@ Future<void> reorganizeHtml() async {
|
||||
// Make header
|
||||
final header = await makeHeader();
|
||||
|
||||
// Add decorative divs to source block wrappers
|
||||
await makeDecorativeButtonsOrgSrc();
|
||||
|
||||
// wrap tables in container for better SCSS display
|
||||
await wrapTables();
|
||||
|
||||
|
@ -3,7 +3,7 @@ import 'dart:html' show window, querySelector;
|
||||
final localStorage = window.localStorage;
|
||||
|
||||
Future<void> setTheme([String? theme]) async {
|
||||
theme ??= localStorage['theem'] ??
|
||||
theme ??= localStorage['theme'] ??
|
||||
(window.matchMedia('(prefers-color-scheme: dark)').matches
|
||||
? 'dark'
|
||||
: 'light');
|
||||
@ -14,7 +14,7 @@ Future<void> setTheme([String? theme]) async {
|
||||
}
|
||||
|
||||
void enableThemeChanger() {
|
||||
final themes = <String>['light', 'dark', 'nord', 'black'];
|
||||
final themes = <String>['light', 'dark', 'black'];
|
||||
themes.forEach((theme) =>
|
||||
querySelector('#${theme}Btn')!.onClick.listen((_) => setTheme(theme)));
|
||||
}
|
||||
|
@ -358,18 +358,70 @@ ul {
|
||||
padding-inline-start: 20px;
|
||||
}
|
||||
|
||||
pre.src, pre.example {
|
||||
overflow-y: auto;
|
||||
.org-src-container,
|
||||
pre {
|
||||
border-radius: .5em;
|
||||
}
|
||||
|
||||
.org-src-container {
|
||||
position: relative;
|
||||
padding-left: 1em;
|
||||
box-shadow: 3px 3px 10px rgba(0,0,0,.3);
|
||||
min-height: 5.5em;
|
||||
margin: 0 auto;
|
||||
width: -moz-fit-content;
|
||||
width: fit-content;
|
||||
}
|
||||
|
||||
pre {
|
||||
.src-fish:before {
|
||||
content: 'fish';
|
||||
}
|
||||
width: -moz-fit-content;
|
||||
width: fit-content;
|
||||
border: none;
|
||||
box-shadow: none !important;
|
||||
margin: .5em;
|
||||
padding: 2.75em 1.5em !important;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.src-rust:before {
|
||||
content: 'rust';
|
||||
}
|
||||
pre.src::before {
|
||||
top: -10px;
|
||||
}
|
||||
|
||||
pre.src-fish::before {
|
||||
content: 'fish';
|
||||
}
|
||||
|
||||
pre.src-rust::before {
|
||||
content: 'Rust';
|
||||
}
|
||||
|
||||
.closeButton,
|
||||
.minButton,
|
||||
.maxButton,
|
||||
.floatButton {
|
||||
position: absolute;
|
||||
position: absolute;
|
||||
width: .8em;
|
||||
height: .8em;
|
||||
border-radius: .4em;
|
||||
z-index: 2;
|
||||
left: .3em;
|
||||
}
|
||||
|
||||
.closeButton {
|
||||
top: .3em;
|
||||
}
|
||||
|
||||
.minButton {
|
||||
top: 1.4em;
|
||||
}
|
||||
|
||||
.maxButton {
|
||||
top: 2.5em;
|
||||
}
|
||||
|
||||
.floatButton {
|
||||
bottom: .3em;
|
||||
}
|
||||
|
||||
.twitter-tweet {
|
||||
|
@ -4,82 +4,64 @@ $tooltip-underline-size: 3px;
|
||||
|
||||
// Themes /////////////////////////////////////////////////////////////////////
|
||||
|
||||
$dark: rgba( 52, 73, 94, 1);
|
||||
$nord: rgba( 46, 52, 64, 1);
|
||||
$black: rgba( 0, 0, 0, 1);
|
||||
$accent1: rgba( 93, 115, 126, 1);
|
||||
$accent2: rgba( 92, 172, 126, 1);
|
||||
$accent3: rgba(197, 193, 155, 1);
|
||||
$light: #eee;
|
||||
$grey1: #f8f8f8;
|
||||
$grey2: #dbe1e8;
|
||||
$grey3: #b2becd;
|
||||
$grey4: #6c7983;
|
||||
$grey5: #454e56;
|
||||
$grey6: #12181b;
|
||||
|
||||
// Accent 1
|
||||
// Black
|
||||
$gradient-accent1-black-left: linear-gradient(to left, $black, $accent1, $accent1);
|
||||
$gradient-accent1-black-right: linear-gradient(to right, $black, $accent1, $accent1);
|
||||
// Dark
|
||||
$gradient-accent1-dark-left: linear-gradient(to left, $dark, $accent1);
|
||||
$gradient-accent1-dark-right: linear-gradient(to right, $dark, $accent1);
|
||||
// Light
|
||||
$gradient-accent1-light-left: linear-gradient(to left, $light, $accent1);
|
||||
$gradient-accent1-light-right: linear-gradient(to right, $light, $accent1);
|
||||
// Accent 2
|
||||
// Black
|
||||
$gradient-accent2-black-left: linear-gradient(to left, $black, $accent2, $accent2);
|
||||
$gradient-accent2-black-right: linear-gradient(to right, $black, $accent2, $accent2);
|
||||
// Dark
|
||||
$gradient-accent2-dark-left: linear-gradient(to left, $dark, $accent2);
|
||||
$gradient-accent2-dark-right: linear-gradient(to right, $dark, $accent2);
|
||||
// Light
|
||||
$gradient-accent2-light-left: linear-gradient(to left, $light, $accent2);
|
||||
$gradient-accent2-light-right: linear-gradient(to right, $light, $accent2);
|
||||
// Accent 3
|
||||
// Black
|
||||
$gradient-accent3-black-left: linear-gradient(to left, $black, $accent3, $accent3);
|
||||
$gradient-accent3-black-right: linear-gradient(to right, $black, $accent3, $accent3);
|
||||
// Dark
|
||||
$gradient-accent3-dark-left: linear-gradient(to left, $dark, $accent3);
|
||||
$gradient-accent3-dark-right: linear-gradient(to right, $dark, $accent3);
|
||||
// Light
|
||||
$gradient-accent3-light-left: linear-gradient(to left, $light, $accent3);
|
||||
$gradient-accent3-light-right: linear-gradient(to right, $light, $accent3);
|
||||
$nord0: #2e3440;
|
||||
$nord1: #3b4252;
|
||||
$nord2: #434c5e;
|
||||
$nord3: #4c566a;
|
||||
$nord4: #d8dee9;
|
||||
$nord5: #e5e9f0;
|
||||
$nord6: #eceff4;
|
||||
$nord7: #8fbcbb;
|
||||
$nord8: #88c0d0;
|
||||
$nord9: #81a1c1;
|
||||
$nord10: #5e81ac;
|
||||
$nord11: #bf616a;
|
||||
$nord12: #d08770;
|
||||
$nord13: #ebcb8b;
|
||||
$nord14: #a3be8c;
|
||||
$nord15: #b48ead;
|
||||
$dark: $nord1;
|
||||
$light: $nord5;
|
||||
$accent1: $nord7;
|
||||
$accent2: $nord9;
|
||||
$accent3: $nord8;
|
||||
|
||||
.light {
|
||||
$bg-nav: $gradient-accent3-light-right;
|
||||
$border-color: $accent1;
|
||||
|
||||
color: $dark;
|
||||
background: $light;
|
||||
|
||||
transition: background 500ms ease-in-out, color 1s ease-in-out;
|
||||
|
||||
pre {
|
||||
box-shadow: 3px 5px $dark;
|
||||
border-color: $light;
|
||||
}
|
||||
|
||||
pre.src, pre.example {
|
||||
&::before {
|
||||
background-color: $light;
|
||||
color: $dark;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar, header {
|
||||
$bg-nav: linear-gradient(to right, $nord6, $nord4);
|
||||
.navbar, header, .dropdown {
|
||||
background: $bg-nav;
|
||||
color: $dark;
|
||||
}
|
||||
|
||||
.navbar svg {
|
||||
fill: $dark;
|
||||
}
|
||||
|
||||
transition: background 500ms ease-in-out, color 1s ease-in-out;
|
||||
|
||||
pre {
|
||||
border-color: $light;
|
||||
}
|
||||
|
||||
pre.src, pre.example {
|
||||
&::before {
|
||||
background-color: $nord6;
|
||||
color: $dark;
|
||||
}
|
||||
}
|
||||
|
||||
pre.src, pre.example, .org-src-container {
|
||||
background: $light;
|
||||
color: $dark;
|
||||
}
|
||||
|
||||
.status {
|
||||
background: $gradient-accent3-light-left;
|
||||
background: $bg-nav;
|
||||
color: $dark;
|
||||
}
|
||||
|
||||
@ -96,11 +78,6 @@ $gradient-accent3-light-right: linear-gradient(to right, $light, $accent3);
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown {
|
||||
background: $accent3;
|
||||
color: $dark;
|
||||
}
|
||||
|
||||
#content {
|
||||
a {
|
||||
box-shadow: inset 0 -3px 0 $accent3;
|
||||
@ -127,228 +104,97 @@ $gradient-accent3-light-right: linear-gradient(to right, $light, $accent3);
|
||||
}
|
||||
}
|
||||
|
||||
.dark, .black {
|
||||
$bg-nav: $gradient-accent2-dark-right;
|
||||
$border-color: $dark;
|
||||
.black, .dark {
|
||||
$border-color: $nord1;
|
||||
|
||||
color: $light;
|
||||
background: $dark;
|
||||
color: $nord6;
|
||||
background: $nord0;
|
||||
|
||||
transition: background 500ms ease-in-out, color 1s ease-in-out;
|
||||
|
||||
pre {
|
||||
box-shadow: 3px 3px $dark;
|
||||
border: none;
|
||||
}
|
||||
|
||||
pre.src, pre.example {
|
||||
&::before {
|
||||
background-color: $dark;
|
||||
color: $light;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar, header {
|
||||
$bg-nav: linear-gradient(to right, $nord3, $nord1);
|
||||
.navbar, header, .dropdown {
|
||||
background: $bg-nav;
|
||||
color: $light;
|
||||
}
|
||||
|
||||
.navbar svg {
|
||||
fill: $light;
|
||||
}
|
||||
|
||||
transition: background 500ms ease-in-out, color 1s ease-in-out;
|
||||
|
||||
pre {
|
||||
border: none;
|
||||
}
|
||||
|
||||
pre.src, pre.example {
|
||||
&::before {
|
||||
background-color: $nord0;
|
||||
color: $nord6;
|
||||
}
|
||||
}
|
||||
|
||||
.status {
|
||||
background: $gradient-accent2-dark-left;
|
||||
color: $light;
|
||||
background: $bg-nav;
|
||||
color: $nord6;
|
||||
}
|
||||
|
||||
.tooltip {
|
||||
border-bottom: $tooltip-underline-size dotted $accent1;
|
||||
border-bottom: $tooltip-underline-size dotted $nord7;
|
||||
|
||||
.tooltiptext {
|
||||
background-color: $accent1;
|
||||
color: $light;
|
||||
background-color: $nord7;
|
||||
color: $nord6;
|
||||
|
||||
&::after {
|
||||
border-color: $accent1 transparent transparent transparent;
|
||||
border-color: $nord7 transparent transparent transparent;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown {
|
||||
background: $dark;
|
||||
color: $light;
|
||||
}
|
||||
|
||||
#content {
|
||||
a {
|
||||
box-shadow: inset 0 -3px 0 $accent2;
|
||||
box-shadow: inset 0 -3px 0 $nord7;
|
||||
transition: box-shadow 300ms ease-in-out;
|
||||
|
||||
&:hover {
|
||||
box-shadow: inset 0 -23px 0 $accent2;
|
||||
box-shadow: inset 0 -23px 0 $nord7;
|
||||
transition: box-shadow 300ms ease-in-out;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
table, th, td {
|
||||
border: 1px solid $accent1;
|
||||
border: 1px solid $nord7;
|
||||
}
|
||||
|
||||
th {
|
||||
background: darken($dark, 2.5%);
|
||||
background: darken($nord0, 2.5%);
|
||||
}
|
||||
|
||||
.gentree {
|
||||
filter: invert(100%);
|
||||
transition: filter 1s ease-in-out;
|
||||
}
|
||||
|
||||
pre.src, pre.example, .org-src-container {
|
||||
background: $nord1;
|
||||
color: $nord5;
|
||||
}
|
||||
}
|
||||
|
||||
.black {
|
||||
$bg-nav: $gradient-accent1-black-right;
|
||||
background: black;
|
||||
color: $nord4;
|
||||
|
||||
background: $black;
|
||||
|
||||
pre {
|
||||
box-shadow: 3px 3px $light;
|
||||
border: none;
|
||||
}
|
||||
|
||||
pre.src, pre.example {
|
||||
&::before {
|
||||
background-color: $black;
|
||||
color: $light;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar, header {
|
||||
$bg-nav: linear-gradient(to right, $nord2, $nord0);
|
||||
.navbar, header, .dropdown {
|
||||
background: $bg-nav;
|
||||
}
|
||||
|
||||
.status {
|
||||
background: $gradient-accent1-black-left;
|
||||
pre.src, pre.example, .org-src-container {
|
||||
background: $nord0;
|
||||
color: $nord4;
|
||||
}
|
||||
|
||||
.dropdown {
|
||||
background: $dark;
|
||||
color: $light;
|
||||
}
|
||||
|
||||
#content {
|
||||
a {
|
||||
box-shadow: inset 0 -3px 0 $accent1;
|
||||
transition: box-shadow 300ms ease-in-out;
|
||||
|
||||
&:hover {
|
||||
box-shadow: inset 0 -23px 0 $accent1;
|
||||
transition: box-shadow 300ms ease-in-out;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
table, th, td {
|
||||
border: 1px solid $light;
|
||||
}
|
||||
|
||||
th {
|
||||
background: lighten($black, 15%);
|
||||
}
|
||||
}
|
||||
|
||||
.nord {
|
||||
$dark: #2e3440;
|
||||
$black: #000000;
|
||||
$accent1: #8fbcbb;
|
||||
$accent2: #a3be8c;
|
||||
$accent3: #ebcb8b;
|
||||
$light: #eceff4;
|
||||
$grey1: #e5e9f0;
|
||||
$grey2: #d8dee9;
|
||||
$grey3: #4c566a;
|
||||
$grey4: #434c5e;
|
||||
$grey5: #3b4252;
|
||||
$grey6: #12181b;
|
||||
$gradient-dark-to-light: linear-gradient(to right, $grey3, $grey5);
|
||||
// Accent 1
|
||||
// Black
|
||||
|
||||
$bg-nav: $gradient-dark-to-light;
|
||||
$border-color: $dark;
|
||||
|
||||
color: $light;
|
||||
background: $dark;
|
||||
|
||||
transition: background 500ms ease-in-out, color 1s ease-in-out;
|
||||
|
||||
pre {
|
||||
box-shadow: 3px 3px $dark;
|
||||
border: none;
|
||||
}
|
||||
|
||||
pre.src, pre.example {
|
||||
&::before {
|
||||
background-color: $dark;
|
||||
color: $light;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar, header {
|
||||
background: $bg-nav;
|
||||
}
|
||||
|
||||
.navbar svg {
|
||||
fill: $light;
|
||||
}
|
||||
|
||||
.status {
|
||||
background: $gradient-dark-to-light;
|
||||
color: $light;
|
||||
}
|
||||
|
||||
.tooltip {
|
||||
border-bottom: $tooltip-underline-size dotted $accent1;
|
||||
|
||||
.tooltiptext {
|
||||
background-color: $accent1;
|
||||
color: $light;
|
||||
|
||||
&::after {
|
||||
border-color: $accent1 transparent transparent transparent;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown {
|
||||
background: $grey3;
|
||||
color: $light;
|
||||
}
|
||||
|
||||
#content {
|
||||
a {
|
||||
box-shadow: inset 0 -3px 0 $accent1;
|
||||
transition: box-shadow 300ms ease-in-out;
|
||||
|
||||
&:hover {
|
||||
box-shadow: inset 0 -23px 0 $accent1;
|
||||
transition: box-shadow 300ms ease-in-out;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
table, th, td {
|
||||
border: 1px solid $accent1;
|
||||
}
|
||||
|
||||
th {
|
||||
background: darken($dark, 2.5%);
|
||||
}
|
||||
|
||||
.gentree {
|
||||
filter: invert(100%);
|
||||
transition: filter 1s ease-in-out;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#lightBtn {
|
||||
@ -356,18 +202,29 @@ $gradient-accent3-light-right: linear-gradient(to right, $light, $accent3);
|
||||
}
|
||||
|
||||
#darkBtn {
|
||||
background: $dark;
|
||||
}
|
||||
|
||||
#nordBtn {
|
||||
background: $nord;
|
||||
background: $nord0;
|
||||
}
|
||||
|
||||
#blackBtn {
|
||||
background: $black;
|
||||
background: black;
|
||||
}
|
||||
|
||||
pre.src, pre.example {
|
||||
background: $dark;
|
||||
color: $light;
|
||||
pre {
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.closeButton {
|
||||
background-color: $nord11;
|
||||
}
|
||||
|
||||
.minButton {
|
||||
background-color: $nord12;
|
||||
}
|
||||
|
||||
.maxButton {
|
||||
background-color: $nord14;
|
||||
}
|
||||
|
||||
.floatButton {
|
||||
background-color: $nord15;
|
||||
}
|
||||
|
Reference in New Issue
Block a user