Add dark theme for main desktop client window
Signed-off-by: Chris Cavalluzzi <chriscavalluzzi@gmail.com>
This commit is contained in:
		
							parent
							
								
									eb71b6ad79
								
							
						
					
					
						commit
						a5d4cad5b7
					
				@ -471,7 +471,7 @@ class SessionList: Reactor.Component {
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            msgbox("custom-rename", "Rename", "<div .form> \
 | 
			
		||||
                <div><input name='name' .outline-focus style='width: *; height: 23px', value='" + old_name + "' /></div> \
 | 
			
		||||
                <div><input|text name='name' .outline-focus style='width: *; height: 23px', value='" + old_name + "' /></div> \
 | 
			
		||||
                </div> \
 | 
			
		||||
                ", function(res=null) {
 | 
			
		||||
                    if (!res) return;
 | 
			
		||||
 | 
			
		||||
@ -9,6 +9,7 @@ html {
 | 
			
		||||
    var(placeholder): #aaa;
 | 
			
		||||
    var(lighter-text): #888;
 | 
			
		||||
    var(light-text): #666;
 | 
			
		||||
    var(menu-hover): #D7E4F2;
 | 
			
		||||
    var(dark-red): #A72145;
 | 
			
		||||
    var(dark-yellow): #FBC732;
 | 
			
		||||
    var(dark-blue): #2E2459;
 | 
			
		||||
@ -20,6 +21,18 @@ html {
 | 
			
		||||
    var(blood-red): #F82600;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
html.darktheme {
 | 
			
		||||
    var(bg): #252525;
 | 
			
		||||
    var(gray-bg): #141414;
 | 
			
		||||
    var(menu-hover): #2D3033;
 | 
			
		||||
    var(border): #555;
 | 
			
		||||
 | 
			
		||||
    var(text): white;
 | 
			
		||||
    var(light-text): #999;
 | 
			
		||||
    var(lighter-text): #777;
 | 
			
		||||
    var(placeholder): #555;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
body {
 | 
			
		||||
    margin: 0;
 | 
			
		||||
    color: color(text);
 | 
			
		||||
@ -62,8 +75,9 @@ input[type=text], input[type=password], input[type=number] {
 | 
			
		||||
    font-size: 1.5em;
 | 
			
		||||
    border-color: color(border);
 | 
			
		||||
    border-radius: 0;
 | 
			
		||||
    color: black;
 | 
			
		||||
    color: color(text);
 | 
			
		||||
    padding-left: 0.5em;
 | 
			
		||||
    background: color(bg);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
input:empty {
 | 
			
		||||
@ -74,6 +88,15 @@ input.outline-focus:focus {
 | 
			
		||||
    outline: color(button) solid 3px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
textarea {
 | 
			
		||||
    background: color(bg);
 | 
			
		||||
    color: color(text);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
textarea:empty {
 | 
			
		||||
    color: color(placeholder);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@set my-scrollbar
 | 
			
		||||
{
 | 
			
		||||
  .prev { display:none; }
 | 
			
		||||
@ -287,6 +310,10 @@ progress {
 | 
			
		||||
    background: transparent;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
menu {
 | 
			
		||||
  background: color(bg);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
menu div.separator {
 | 
			
		||||
  height: 1px;
 | 
			
		||||
  width: *;
 | 
			
		||||
@ -296,6 +323,7 @@ menu div.separator {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
menu li {
 | 
			
		||||
  color: color(text);
 | 
			
		||||
  position: relative;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -319,7 +347,12 @@ menu li.selected span:nth-child(1) {
 | 
			
		||||
  opacity: 0.5;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
menu li.line-through {
 | 
			
		||||
menu li:hover {
 | 
			
		||||
  background: color(menu-hover);
 | 
			
		||||
  color: color(text);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
menu li.line-through, menu li.line-through :hover {
 | 
			
		||||
  text-decoration-line: line-through;
 | 
			
		||||
  color: red;
 | 
			
		||||
}
 | 
			
		||||
@ -366,7 +399,7 @@ div#msgbox .caption {
 | 
			
		||||
  height: 2em;
 | 
			
		||||
  line-height: 2em;
 | 
			
		||||
  text-align: center;
 | 
			
		||||
  color: white; 
 | 
			
		||||
  color: color(bg);
 | 
			
		||||
  font-weight: bold;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -80,8 +80,8 @@ div.sessions-tab svg {
 | 
			
		||||
div.sessions-tab span.active {
 | 
			
		||||
    cursor: default;
 | 
			
		||||
    border-radius: 3px;
 | 
			
		||||
    background: white;
 | 
			
		||||
    color: black;
 | 
			
		||||
    background: color(bg);
 | 
			
		||||
    color: color(text);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
div.search-id {
 | 
			
		||||
@ -256,7 +256,7 @@ div.remote-session .platform svg {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
div.remote-session-list {
 | 
			
		||||
    background: white;
 | 
			
		||||
    background: color(bg);
 | 
			
		||||
    width: 220px;
 | 
			
		||||
    flow: horizontal;
 | 
			
		||||
}
 | 
			
		||||
@ -290,7 +290,7 @@ div.remote-session-list .name .username {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
div.remote-session .text {
 | 
			
		||||
    background: white;
 | 
			
		||||
    background: color(bg);
 | 
			
		||||
    position: absolute;
 | 
			
		||||
    height: 3em;
 | 
			
		||||
    width: 100%;
 | 
			
		||||
@ -318,13 +318,13 @@ svg#menu {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
svg#menu:hover {
 | 
			
		||||
    color: black;
 | 
			
		||||
    color: color(text);
 | 
			
		||||
    border-radius: 1em;
 | 
			
		||||
    background: color(gray-bg);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
svg#edit:hover {
 | 
			
		||||
    color: black;
 | 
			
		||||
    color: color(text);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
svg#edit {
 | 
			
		||||
@ -401,4 +401,5 @@ div.remote-session svg#menu {
 | 
			
		||||
    border-color: white;
 | 
			
		||||
    border: 1px;
 | 
			
		||||
    background: none;
 | 
			
		||||
    color: white;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -172,6 +172,17 @@ function getUserName() {
 | 
			
		||||
    return '';
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function updateTheme() {
 | 
			
		||||
    var root_element = self;
 | 
			
		||||
    if (handler.get_option("allow-darktheme") == "Y") {
 | 
			
		||||
        // enable dark theme
 | 
			
		||||
        root_element.attributes.toggleClass("darktheme", true);
 | 
			
		||||
    } else {
 | 
			
		||||
        // disable dark theme
 | 
			
		||||
        root_element.attributes.toggleClass("darktheme", false);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class MyIdMenu: Reactor.Component {
 | 
			
		||||
    function this() {
 | 
			
		||||
        myIdMenu = this;
 | 
			
		||||
@ -210,6 +221,8 @@ class MyIdMenu: Reactor.Component {
 | 
			
		||||
                <li #login>{translate('Login')}</li>}
 | 
			
		||||
                {handler.is_ok_change_id() && key_confirmed ? <li #change-id>{translate('Change ID')}</li> : ""}
 | 
			
		||||
                <div .separator />
 | 
			
		||||
                <li #allow-darktheme><span>{svg_checkmark}</span>{translate('Dark Theme')}</li>
 | 
			
		||||
                <div .separator />
 | 
			
		||||
                <li #about>{translate('About')} {" "}{handler.get_app_name()}</li>
 | 
			
		||||
            </menu>
 | 
			
		||||
        </popup>;
 | 
			
		||||
@ -303,10 +316,10 @@ class MyIdMenu: Reactor.Component {
 | 
			
		||||
            var old_id = configOptions["custom-rendezvous-server"] || "";
 | 
			
		||||
            var old_key = configOptions["key"] || "";
 | 
			
		||||
            msgbox("custom-server", "ID/Relay Server", "<div .form .set-password> \
 | 
			
		||||
            <div><span>" + translate("ID Server") + ": </span><input .outline-focus name='id' value='" + old_id + "' /></div> \
 | 
			
		||||
            <div><span>" + translate("Relay Server") + ": </span><input name='relay' value='" + old_relay + "' /></div> \
 | 
			
		||||
            <div><span>" + translate("API Server") + ": </span><input name='api' value='" + old_api + "' /></div> \
 | 
			
		||||
            <div><span>" + translate("Key") + ": </span><input name='key' value='" + old_key + "' /></div> \
 | 
			
		||||
            <div><span>" + translate("ID Server") + ": </span><input|text .outline-focus name='id' value='" + old_id + "' /></div> \
 | 
			
		||||
            <div><span>" + translate("Relay Server") + ": </span><input|text name='relay' value='" + old_relay + "' /></div> \
 | 
			
		||||
            <div><span>" + translate("API Server") + ": </span><input|text name='api' value='" + old_api + "' /></div> \
 | 
			
		||||
            <div><span>" + translate("Key") + ": </span><input|text name='key' value='" + old_key + "' /></div> \
 | 
			
		||||
            </div> \
 | 
			
		||||
            ", function(res=null) {
 | 
			
		||||
                if (!res) return;
 | 
			
		||||
@ -340,8 +353,8 @@ class MyIdMenu: Reactor.Component {
 | 
			
		||||
            var old_username = socks5[1] || "";
 | 
			
		||||
            var old_password = socks5[2] || "";
 | 
			
		||||
            msgbox("custom-server", "Socks5 Proxy", <div .form .set-password> 
 | 
			
		||||
            <div><span>{translate("Hostname")}:</span><input .outline-focus name='proxy' value={old_proxy} /></div>
 | 
			
		||||
            <div><span>{translate("Username")}:</span><input name='username' value={old_username} /></div>
 | 
			
		||||
            <div><span>{translate("Hostname")}:</span><input|text .outline-focus name='proxy' value={old_proxy} /></div>
 | 
			
		||||
            <div><span>{translate("Username")}:</span><input|text name='username' value={old_username} /></div>
 | 
			
		||||
            <div><span>{translate("Password")}:</span><PasswordComponent value={old_password} /></div>
 | 
			
		||||
            </div>
 | 
			
		||||
            , function(res=null) {
 | 
			
		||||
@ -361,9 +374,9 @@ class MyIdMenu: Reactor.Component {
 | 
			
		||||
        } else if (me.id == "stop-rendezvous-service") {
 | 
			
		||||
            handler.set_option("stop-rendezvous-service",  rendezvous_service_stopped ? "" : "Y");
 | 
			
		||||
        } else if (me.id == "change-id") {
 | 
			
		||||
            msgbox("custom-id", translate("Change ID"), "<div .form> \
 | 
			
		||||
            msgbox("custom-id", translate("Change ID"), "<div .form .set-password> \
 | 
			
		||||
            <div>" + translate('id_change_tip') + " </div> \
 | 
			
		||||
            <div><span style='width: 100px; display:inline-block'>ID: </span><input .outline-focus style='width: 250px' name='id' /></div> \
 | 
			
		||||
            <div><span style='width: 100px; display:inline-block'>ID: </span><input|text .outline-focus style='width: 250px' name='id' /></div> \
 | 
			
		||||
            </div> \
 | 
			
		||||
            ", function(res=null, show_progress) {
 | 
			
		||||
                if (!res) return;
 | 
			
		||||
@ -383,6 +396,8 @@ class MyIdMenu: Reactor.Component {
 | 
			
		||||
                check_status();
 | 
			
		||||
                return " ";
 | 
			
		||||
            });
 | 
			
		||||
        } else if (me.id == "allow-darktheme") {
 | 
			
		||||
            updateTheme();
 | 
			
		||||
        } else if (me.id == "about") {
 | 
			
		||||
            this.showAbout()
 | 
			
		||||
        }
 | 
			
		||||
@ -867,6 +882,7 @@ function self.ready() {
 | 
			
		||||
        view.focus = $(#remote_id);
 | 
			
		||||
    }
 | 
			
		||||
    refreshCurrentUser();
 | 
			
		||||
    updateTheme();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function showAbout() {
 | 
			
		||||
 | 
			
		||||
@ -106,7 +106,7 @@ class MsgboxComponent: Reactor.Component {
 | 
			
		||||
        self.timer(3ms, msgboxTimerFunc);
 | 
			
		||||
        return (<div><div style="position: absolute; size:*; background:black; opacity:0.5;" />
 | 
			
		||||
        <div style="size: *; position: absolute;">
 | 
			
		||||
            <div style={"border: " + color + " solid 1px; background: white; margin: *; width:" + (this.width) + "px; min-height:" + (this.height) + "px"}>
 | 
			
		||||
            <div style={"border: " + color + " solid 1px; background: color(bg); margin: *; width:" + (this.width) + "px; min-height:" + (this.height) + "px"}>
 | 
			
		||||
            <div .caption style={"background: " + color}>
 | 
			
		||||
                {translate(this.title)}
 | 
			
		||||
            </div>
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user