From be33eae53b935e36cbaa9b03ba7a4a55bd639172 Mon Sep 17 00:00:00 2001 From: Daniel Date: Sun, 15 Jan 2023 14:12:55 +0100 Subject: [PATCH] UI: Lots of improvements --- css/dark.css | 7 +++++++ css/main.css | 27 +++++++++++++++++++++------ index.html | 33 +++++++++++---------------------- js/dom.js | 24 +++++++++++++++++++++++- js/main.js | 40 ++++++++++++++++------------------------ 5 files changed, 78 insertions(+), 53 deletions(-) diff --git a/css/dark.css b/css/dark.css index 214fa18..ffb281d 100644 --- a/css/dark.css +++ b/css/dark.css @@ -42,4 +42,11 @@ a { .setting.checked { background: #36F; box-shadow: 2px 2px 8px #36F8; +} +.hostedby { + color: #FFF7; + margin: 12px 0 24px; +} +.hostedby b { + color: #79F; } \ No newline at end of file diff --git a/css/main.css b/css/main.css index 1590191..60ce1ec 100644 --- a/css/main.css +++ b/css/main.css @@ -52,15 +52,22 @@ a { object-fit: cover; transition: all .45s !important; } -#background .scaled { +#background.scaled img { transform: scale(1.14); } -#background.dark > img:last-child { +#background.dark > img:first-child { opacity: 0; - transform: scale(1); + transform: none; } -#background:not(.dark) > img:first-child { - transform: scale(1); +#background:not(.dark) > img:last-child { + opacity: 0; + transform: none; +} +#background.dark:not(.scaled) > img:first-child { + transform: scale(1.14); +} +#background:not(.dark):not(.scaled) > img:last-child { + transform: scale(1.14); } .unloaded { opacity: 0; @@ -299,7 +306,7 @@ a.box { align-items: center; justify-content: space-between; text-align: right; - padding: 80px 24px; + padding: 80px 24px 60px; max-width: 480px; margin: 0 auto; } @@ -362,4 +369,12 @@ a.box { color: #EEE; background: #56F; box-shadow: 2px 2px 8px #56F8; +} +.hostedby { + font-size: 13px; + color: #0007; + margin: 12px 0 24px; +} +.hostedby b { + color: #56F; } \ No newline at end of file diff --git a/index.html b/index.html index aaabfda..05d8a8d 100644 --- a/index.html +++ b/index.html @@ -11,7 +11,7 @@ -
+
@@ -70,36 +70,25 @@
shield
85%
-
6 out of 7 listed services use encrypted connections
+
6 out of 7 listed services use secure connections
+
+
All services hosted by nobody
+
-
code
+
lock
-
Open Source
-
Code is publicly available. Download, modify, collaborate, whatever.
+
Enryption?
+
HTTPS ensures data is transferred securely, that nobody can monitor your traffic.
-
mop
+
dns
-
Simple & Clean
-
Interface is meant to be uncomplicated and pleasant in sight.
-
-
-
-
language
-
-
Static
-
Requires no dynamic backend as it's built with plain HTML/CSS/JS.
-
-
-
-
auto_awesome
-
-
Responsive
-
Layout is automatically adjusted depending on device you are using.
+
Self-hosted
+
Little server serving for a small group of people. All data is stored only here.
diff --git a/js/dom.js b/js/dom.js index a30ecbe..45fc684 100644 --- a/js/dom.js +++ b/js/dom.js @@ -1,29 +1,35 @@ function get(id) { return document.getElementById(id); } + function get_class(class_name, parent) { if (!parent) parent = document; return parent.getElementsByClassName(class_name); } + function for_all(class_name, func, parent) { let a = get_class(class_name, parent); for (let i = 0; i < a.length; i++) { func(a[i]); } } + function load_img(img) { img.classList.remove("unloaded"); } + function get_background() { let bg = get("background"); - return bg.children[1-bg.classList.contains("dark")]; + return bg.children[1-1+bg.classList.contains("dark")]; } + function safe_text(text) { text = text.replaceAll("<", "<"); text = text.replaceAll(">", ">"); text = text.replaceAll("&", "&"); return text; } + function mk_entry(app) { return ` @@ -33,4 +39,20 @@ function mk_entry(app) {
${safe_text(app["desc"])}
`; +} + +function config(key, value) { + let def = UI[key]; + let val = localStorage.getItem(key); + if (def == value && !val) return; + if (value !== undefined) { + localStorage.setItem(key, value); + return; + } + if (!val) val = UI[key].toString(); + return val; +} + +function get_bool(key) { + return config(key) == "true"; } \ No newline at end of file diff --git a/js/main.js b/js/main.js index ff1bc3f..d34fa95 100644 --- a/js/main.js +++ b/js/main.js @@ -1,6 +1,7 @@ var UI = { "dark_mode": false } + var SERVICES = [ { "name": "CalDav", @@ -46,18 +47,6 @@ var SERVICES = [ } ] -function config(key, value) { - let def = UI[key]; - let val = localStorage.getItem(key); - if (def == value && !val) return; - if (value !== undefined) { - localStorage.setItem(key, value); - return; - } - if (!val) val = UI[key].toString(); - return val; -} - function onload() { for_all("back", (btn) => { btn.onclick = back; @@ -78,30 +67,33 @@ function show(id) { }); get(id).classList.remove("hidden"); get(id).scrollTop = 0; - get_background().classList.remove("scaled"); + let bg = get("background").classList; + if (CURRENT_VIEW == "page-home") bg.add("scaled"); + else bg.remove("scaled"); } + function back() { show("page-home"); - get_background().classList.add("scaled"); } function switch_theme(value) { - let is_dark = config("dark_mode") == "true"; - if (value === undefined) value = !is_dark; - is_dark = value; + let is_dark = get_bool("dark_mode"); + if (value === undefined) is_dark = !is_dark; config("dark_mode", is_dark); get("css_dark").disabled = !is_dark; - let bg_box = get("background").classList; + let bg = get("background").classList; + let setting = get("setting-theme"); + let icon = get("theme-indicator"); if (is_dark) { - get("setting-theme").classList.add("checked"); - get("theme-indicator").innerText = "dark_mode"; - bg_box.add("dark"); + setting.classList.add("checked"); + icon.innerText = "dark_mode"; + bg.add("dark"); get_background().src = "img/background-dark.jpg"; } else { - get("setting-theme").classList.remove("checked"); - get("theme-indicator").innerText = "light_mode"; - bg_box.remove("dark"); + setting.classList.remove("checked"); + icon.innerText = "light_mode"; + bg.remove("dark"); get_background().src = "img/background.jpg"; } }