Massive changes to entire application

master
Guus van Meerveld 4 years ago
parent a87ecdc0df
commit 02299d39e2

@ -1,52 +1,83 @@
const { app, BrowserWindow, globalShortcut, shell, autoUpdater, dialog } = require('electron');
const { app, BrowserWindow, globalShortcut, shell, autoUpdater } = require('electron');
const electronLocalshortcut = require('electron-localshortcut');
const Store = require('electron-store');
const store = new Store();
function initApp() {
store.set("init", true);
store.set("minimize", true);
store.set("startup", true);
}
const AutoLaunch = require('auto-launch');
var autoLaunch = new AutoLaunch({
name: 'Keyzo',
path: '/Applications/Keyzo.app',
});
// const server = 'https://cdn.g-vm.nl'
// const url = `${server}/update/${process.platform}/${app.getVersion()}`
// autoUpdater.setFeedURL({ url })
let loadingScreen;
const createLoadingScreen = () => {
function createLoadingScreen() {
loadingScreen = new BrowserWindow({
width: 200,
height: 400,
frame: false,
icon: "public/icon/icon.png",
backgroundColor: '#212121'
});
loadingScreen.setResizable(false);
loadingScreen.on('closed', () => (loadingScreen = null));
loadingScreen.on('closed', () => loadingScreen = null);
loadingScreen.loadFile('public/pages/loadscreen.html')
};
function createWindow() {
const win = new BrowserWindow({
let win = new BrowserWindow({
webPreferences: {
nodeIntegration: true,
webviewTag: true,
// enableBlinkFeatures: false,
enableRemoteModule: true
},
frame: false,
show: false,
titleBarStyle: "hidden",
backgroundColor: '#212121',
'minWidth': 600,
'minHeight': 600,
icon: "public/icon/icon.png"
})
// autoUpdater.checkForUpdates()
win.loadFile('public/index.html')
globalShortcut.register('CommandOrControl+I+Shift', () => {
if (win.isFocused()) {
win.webContents.openDevTools()
}
})
win.webContents.on('new-window', function (e, url) {
e.preventDefault();
shell.openExternal(url);
});
win.removeMenu()
win.webContents.on('dom-ready', () => {
electronLocalshortcut.register(win, 'Ctrl+R', () => {
win.reload()
// app.relaunch()
// app.exit()
});
electronLocalshortcut.register(win, 'Ctrl+Shift+I', () => {
win.webContents.openDevTools()
});
win.on("close", e => {
if (store.get('minimize')) {
e.preventDefault();
if (!app.isQuiting) {
win.hide();
}
}
})
win.once('ready-to-show', () => {
if (loadingScreen) {
loadingScreen.close();
}
@ -54,9 +85,24 @@ function createWindow() {
})
}
app.whenReady().then(() => {
app.on('ready', () => {
createLoadingScreen()
createWindow()
if (!store.get("init")) {
initApp()
}
let autoLaunch = new AutoLaunch({
name: 'Keyzo',
path: app.getPath('exe'),
});
if (store.get("startup")) {
autoLaunch.enable();
} else {
autoLaunch.disable();
}
})

1056
package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -11,9 +11,14 @@
"license": "ISC",
"dependencies": {
"auto-launch": "^5.0.5",
"custom-electron-titlebar": "^3.2.3",
"electron": "^9.1.1",
"custom-electron-titlebar": "^3.2.4",
"electron": "^9.3.2",
"electron-json-storage": "^4.2.0",
"electron-localshortcut": "^3.2.1",
"electron-storage": "^1.0.7",
"electron-store": "^6.0.1",
"electron-window-state": "^5.0.3",
"material-design-icons": "^3.0.1",
"ndb": "^1.1.5",
"update-electron-app": "^1.5.0"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

@ -7,42 +7,30 @@
<link rel="stylesheet" href="stylesheets/bootstrap.min.css">
<link rel="stylesheet" href="stylesheets/index.css">
<link rel="stylesheet" href="stylesheets/main.css">
<link rel="stylesheet" href="stylesheets/icons/iconfont/material-icons.css">
</head>
<body>
<div class="wrapper">
<webview id="main-page" nodeintegration src="pages/home.html"></webview>
<webview id="main-page" nodeintegration src="/pages/devices.html"></webview>
</div>
<div class="nav-left position-absolute">
<ul class="nav-list-top nav-list p-0 text-center position-absolute m-0">
<li title="Home" class="nav-item" id="home">
<svg width="3em" height="3em" viewBox="0 0 16 16" class="mr-1" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" d="M2 13.5V7h1v6.5a.5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5V7h1v6.5a1.5 1.5 0 0 1-1.5 1.5h-9A1.5 1.5 0 0 1 2 13.5zm11-11V6l-2-2V2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5z" />
<path fill-rule="evenodd" d="M7.293 1.5a1 1 0 0 1 1.414 0l6.647 6.646a.5.5 0 0 1-.708.708L8 2.207 1.354 8.854a.5.5 0 1 1-.708-.708L7.293 1.5z" />
</svg>
<li title="Devices" class="nav-item" id="devices">
<i class="material-icons">devices</i>
</li>
<li title="Keybinds" class="nav-item" id="keybinds">
<svg width="3em" height="3em" viewBox="0 0 16 16" class="bi bi-keyboard" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" d="M14 5H2a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1zM2 4a2 2 0 0 0-2 2v5a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H2z" />
<path d="M13 10.25a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25v-.5zm0-2a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25v-.5zm-5 0A.25.25 0 0 1 8.25 8h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5A.25.25 0 0 1 8 8.75v-.5zm2 0a.25.25 0 0 1 .25-.25h1.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-1.5a.25.25 0 0 1-.25-.25v-.5zm1 2a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25v-.5zm-5-2A.25.25 0 0 1 6.25 8h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5A.25.25 0 0 1 6 8.75v-.5zm-2 0A.25.25 0 0 1 4.25 8h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5A.25.25 0 0 1 4 8.75v-.5zm-2 0A.25.25 0 0 1 2.25 8h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5A.25.25 0 0 1 2 8.75v-.5zm11-2a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25v-.5zm-2 0a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25v-.5zm-2 0A.25.25 0 0 1 9.25 6h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5A.25.25 0 0 1 9 6.75v-.5zm-2 0A.25.25 0 0 1 7.25 6h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5A.25.25 0 0 1 7 6.75v-.5zm-2 0A.25.25 0 0 1 5.25 6h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5A.25.25 0 0 1 5 6.75v-.5zm-3 0A.25.25 0 0 1 2.25 6h1.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-1.5A.25.25 0 0 1 2 6.75v-.5zm0 4a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25v-.5zm2 0a.25.25 0 0 1 .25-.25h5.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-5.5a.25.25 0 0 1-.25-.25v-.5z" />
</svg>
<i class="material-icons">keyboard</i>
</li>
<li title="Macro's" class="nav-item" id="macros">
<svg width="3em" height="3em" viewBox="0 0 16 16" class="bi bi-wrench" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" d="M.102 2.223A3.004 3.004 0 0 0 3.78 5.897l6.341 6.252A3.003 3.003 0 0 0 13 16a3 3 0 1 0-.851-5.878L5.897 3.781A3.004 3.004 0 0 0 2.223.1l2.141 2.142L4 4l-1.757.364L.102 2.223zm13.37 9.019L13 11l-.471.242-.529.026-.287.445-.445.287-.026.529L11 13l.242.471.026.529.445.287.287.445.529.026L13 15l.471-.242.529-.026.287-.445.445-.287.026-.529L15 13l-.242-.471-.026-.529-.445-.287-.287-.445-.529-.026z" />
</svg>
<i class="material-icons">build</i>
</li>
</ul>
<ul class="nav-list nav-list-bottom p-0 text-center position-absolute m-0">
<li title="Account" class="nav-item" id="account">
<svg width="3em" height="3em" viewBox="0 0 16 16" class="bi bi-person" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" d="M13 14s1 0 1-1-1-4-6-4-6 3-6 4 1 1 1 1h10zm-9.995-.944v-.002.002zM3.022 13h9.956a.274.274 0 0 0 .014-.002l.008-.002c-.001-.246-.154-.986-.832-1.664C11.516 10.68 10.289 10 8 10c-2.29 0-3.516.68-4.168 1.332-.678.678-.83 1.418-.832 1.664a1.05 1.05 0 0 0 .022.004zm9.974.056v-.002.002zM8 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm3-2a3 3 0 1 1-6 0 3 3 0 0 1 6 0z" />
</svg>
<i class="material-icons">person</i>
</li>
<li title="Settings" class="nav-item" id="settings">
<svg width="3em" height="3em" viewBox="0 0 16 16" class="bi bi-sliders" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" d="M14 3.5a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0zM11.5 5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3zM7 8.5a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0zM4.5 10a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3zm9.5 3.5a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0zM11.5 15a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3z" />
<path fill-rule="evenodd" d="M9.5 4H0V3h9.5v1zM16 4h-2.5V3H16v1zM9.5 14H0v-1h9.5v1zm6.5 0h-2.5v-1H16v1zM6.5 9H16V8H6.5v1zM0 9h2.5V8H0v1z" />
</svg>
<i class="material-icons">settings</i>
</li>
</ul>
</div>

@ -1,12 +1,18 @@
fetch("https://accounts.keyzo.com")
const Store = require('electron-store');
const store = new Store();
const $ = require("../javascripts/jquery.min.js")
fetch("https://google.com")
.then(() => {
console.log("yeet");
$('#content').show().addClass("d-flex");
if (!store.get("logged-in")) {
console.log("Not logged in");
}
})
.catch(() => {
document.getElementById('error').classList.remove('d-none')
document.getElementById('error').classList.add('d-flex')
$('#error').show().addClass("d-flex");
})
.finally(() => {
document.getElementById('loader').classList.add('d-none')
document.getElementById('loader').classList.remove('d-flex')
})
$('#loader').hide().removeClass("d-flex");
});

@ -1,21 +1,28 @@
const customTitlebar = require('custom-electron-titlebar');
const $ = require("./javascripts/jquery.min.js")
new customTitlebar.Titlebar({
backgroundColor: customTitlebar.Color.fromHex('#212121'),
unfocusEffect: true,
overflow: "auto",
menu: null,
titleHorizontalAlignment: 'left'
var titleBar = new customTitlebar.Titlebar({
backgroundColor: customTitlebar.Color.fromHex('#292929'),
icon: "icon/icon.png"
});
document.querySelectorAll(".nav-item").forEach(x => {
x.addEventListener('click', e => {
if (document.getElementById("main-page").getAttribute('src').indexOf(x.id) < 0) {
document.getElementById("main-page").setAttribute('src', "pages/" + x.id + ".html")
document.querySelectorAll(".nav-item").forEach(y => {
y.classList.remove('active')
})
x.classList.add('active')
}
})
})
function init() {
document.querySelectorAll(".nav-item").forEach(x => {
x.addEventListener('click', () => {
if ($("#main-page").prop('src').indexOf(x.id) < 0) {
$("#main-page").prop('src', `pages/${x.id}.html`);
document.querySelectorAll(".nav-item").forEach(y => {
y.classList.remove('active')
})
x.classList.add('active')
};
});
});
document.querySelectorAll(".nav-item")[0].classList.add("active")
};
document.onreadystatechange = function () {
if (document.readyState == "complete") {
init();
}
};

File diff suppressed because one or more lines are too long

@ -1,28 +1,59 @@
document.querySelectorAll('.keybind-input').forEach(x => {
x.addEventListener('click', e => {
document.addEventListener('keyup', keyup)
document.addEventListener('keydown', keydown)
setTimeout(() => document.addEventListener('click', submit), 10)
})
function keydown(f) {
var key = f.key.toUpperCase()
if (x.id) {
x.value = key
x.removeAttribute('id')
}
if (x.value.indexOf(key) < 0) {
x.value += " + " + key
}
const $ = require("../javascripts/jquery.min.js");
var keys = {};
var index;
$("input[type=text]").on("keyup", e => {
keys[e.key.toUpperCase()] = false;
setInput();
});
$("input[type=text]").on("keydown", e => {
Object.keys(keys).forEach(g => {
if (!keys[g])
delete keys[g];
});
keys[e.key.toUpperCase()] = true;
setInput();
});
function setInput() {
$(".keybind-input").val(Object.keys(keys).toString().replace(/,/gi, " + "));
}
$(".add-keybind").click(() => {
index = 0;
resetKeyAdder();
$(".dark-overlay").show().addClass("d-flex");
$(".keybind-input").focus();
});
$(".cancel-btn").click(() => {
$(".dark-overlay").hide().removeClass("d-flex");
resetKeyAdder()
})
$(".done-btn").click(() => {
switch (index) {
case 0:
$(".keybind-input").hide();
$(".select-function").show();
$(".done-btn").html("Done");
break;
case 1:
$(".dark-overlay").hide().removeClass("d-flex");
resetKeyAdder();
break;
default:
break;
}
function keyup(f) {
var key = f.key.toUpperCase()
if (x.value.indexOf(key) > -1) {
x.id = true
}
}
function submit() {
document.removeEventListener('keyup', keyup)
document.removeEventListener('keydown', keydown)
document.removeEventListener('click', submit)
}
})
index++;
})
function resetKeyAdder() {
$(".keybind-input").show().prop("value", "");
$(".select-function").hide();
$(".done-btn").html("Next");
}

@ -1,6 +1,36 @@
const { storage } = require('electron-json-storage');
const Store = require('electron-store');
const store = new Store();
document.getElementById("minimize-label").addEventListener('click', e => {
storage.set('settings', { minimize: document.getElementById("minimize").checked })
document.getElementById("minimize-label").innerHTML = storage.get('settings');
})
const $ = require("../javascripts/jquery.min.js");
const settings = [
"minimize",
"startup",
"startup-min"
]
settings.forEach(setting => {
$(`#${setting}-label`).click(() => {
let checked = $(`#${setting}`).prop("checked");
store.set(setting, checked);
if (setting == "startup") {
disabledArea();
}
});
$(`#${setting}`).prop("checked", store.get(setting));
});
function disabledArea() {
if (store.get('startup')) {
$(".startup-min").removeClass("disabled-item");
}
else {
$(".startup-min").addClass("disabled-item");
$("#startup-min").prop("checked", false);
store.set("startup-min", false);
}
}
disabledArea();

@ -1,5 +1,6 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
@ -7,23 +8,33 @@
<link rel="stylesheet" href="../stylesheets/bootstrap.min.css">
<link rel="stylesheet" href="../stylesheets/main.css">
</head>
<body>
<div class="w-100 h-100 position-absolute d-flex justify-content-center align-items-center" id="loader">
<div class="spinner-border" role="status">
<span class="sr-only">Loading...</span>
</div>
</div>
<div class="error container-fluid text-center d-none align-items-center h-100" id="error">
<div class="error container-fluid text-center align-items-center h-100" style="display: none;" id="error">
<div class="w-100">
<h1>
<svg width="4em" height="4em" viewBox="0 0 16 16" class="bi bi-wifi-off" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
<path d="M10.706 3.294A12.545 12.545 0 0 0 8 3 12.44 12.44 0 0 0 .663 5.379a.485.485 0 0 0-.048.736.518.518 0 0 0 .668.05A11.448 11.448 0 0 1 8 4c.63 0 1.249.05 1.852.148l.854-.854zM8 6c-1.905 0-3.68.56-5.166 1.526a.48.48 0 0 0-.063.745.525.525 0 0 0 .652.065 8.448 8.448 0 0 1 3.51-1.27L8 6zm2.596 1.404l.785-.785c.63.24 1.228.545 1.785.907a.482.482 0 0 1 .063.745.525.525 0 0 1-.652.065 8.462 8.462 0 0 0-1.98-.932zM8 10l.934-.933a6.454 6.454 0 0 1 2.012.637c.285.145.326.524.1.75l-.015.015a.532.532 0 0 1-.611.09A5.478 5.478 0 0 0 8 10zm4.905-4.905l.747-.747c.59.3 1.153.645 1.685 1.03a.485.485 0 0 1 .048.737.518.518 0 0 1-.668.05 11.496 11.496 0 0 0-1.812-1.07zM9.02 11.78c.238.14.236.464.04.66l-.706.706a.5.5 0 0 1-.708 0l-.707-.707c-.195-.195-.197-.518.04-.66A1.99 1.99 0 0 1 8 11.5c.373 0 .722.102 1.02.28zm4.355-9.905a.53.53 0 1 1 .75.75l-10.75 10.75a.53.53 0 0 1-.75-.75l10.75-10.75z" />
<svg width="4em" height="4em" viewBox="0 0 16 16" class="bi bi-wifi-off" fill="currentColor"
xmlns="http://www.w3.org/2000/svg">
<path
d="M10.706 3.294A12.545 12.545 0 0 0 8 3 12.44 12.44 0 0 0 .663 5.379a.485.485 0 0 0-.048.736.518.518 0 0 0 .668.05A11.448 11.448 0 0 1 8 4c.63 0 1.249.05 1.852.148l.854-.854zM8 6c-1.905 0-3.68.56-5.166 1.526a.48.48 0 0 0-.063.745.525.525 0 0 0 .652.065 8.448 8.448 0 0 1 3.51-1.27L8 6zm2.596 1.404l.785-.785c.63.24 1.228.545 1.785.907a.482.482 0 0 1 .063.745.525.525 0 0 1-.652.065 8.462 8.462 0 0 0-1.98-.932zM8 10l.934-.933a6.454 6.454 0 0 1 2.012.637c.285.145.326.524.1.75l-.015.015a.532.532 0 0 1-.611.09A5.478 5.478 0 0 0 8 10zm4.905-4.905l.747-.747c.59.3 1.153.645 1.685 1.03a.485.485 0 0 1 .048.737.518.518 0 0 1-.668.05 11.496 11.496 0 0 0-1.812-1.07zM9.02 11.78c.238.14.236.464.04.66l-.706.706a.5.5 0 0 1-.708 0l-.707-.707c-.195-.195-.197-.518.04-.66A1.99 1.99 0 0 1 8 11.5c.373 0 .722.102 1.02.28zm4.355-9.905a.53.53 0 1 1 .75.75l-10.75 10.75a.53.53 0 0 1-.75-.75l10.75-10.75z" />
</svg>
</h1>
<h3 class="display-4">Could not connect with the Keyzo service</h3>
<h5>Please check your internet connection or go to the <a href="https://status.keyzo.net" target="_blank">status page</a></h5>
<h3 class="display-4">Could not connect</h3>
<h5>Please check your internet connection or the <a href="https://status.keyzo.net" target="_blank">status page</a></h5>
</div>
</div>
<div class="wrapper container pt-3" style="display: none;" id="content">
<h1>
Account
</h1>
</div>
<script src="../javascripts/account.js"></script>
</body>
</html>

@ -7,6 +7,6 @@
<link rel="stylesheet" href="../stylesheets/main.css">
</head>
<body>
yeet
</body>
</html>

@ -6,64 +6,30 @@
<title>Keybinds</title>
<link rel="stylesheet" href="../stylesheets/bootstrap.min.css">
<link rel="stylesheet" href="../stylesheets/main.css">
<link rel="stylesheet" href="../stylesheets/icons/iconfont/material-icons.css">
<link rel="stylesheet" href="../stylesheets/keybinds.css">
</head>
<body>
<div class="container pt-3 h-100">
<h1>
Keybinds
<button class="btn btn-info float-right mt-4">Create new keybind</button>
<i class="material-icons float-right mt-4 add-keybind">add</i>
</h1>
<hr class="dark">
<div class="card-dark">
<div class="row p-3">
<div class="action col">
<span class="bold text-muted">ACTION</span>
<div class="row mt-2">
<div class="col">
<select name="" id="" class="form-control bg-dark border-0">
<option value="">Category</option>
</select>
</div>
<div class="col">
<select name="" id="" class="form-control bg-dark border-0">
<option value="">Action</option>
</select>
</div>
</div>
</div>
<div class="keybind col">
<span class="bold text-muted">KEYBIND</span>
<input type="text" readonly value="Unset, click to set" class="keybind-input form-control bg-dark border-0 mt-2">
</div>
<div class="dark-overlay position-absolute w-100 h-100 justify-content-center align-items-center" style="display: none;">
<div class="select-function" style="display: none;">
<nav>
<div class="nav-item"></div>
</nav>
</div>
</div>
<hr class="dark">
<div class="card-dark">
<div class="row p-3">
<div class="action col">
<span class="bold text-muted">ACTION</span>
<div class="row mt-2">
<div class="col">
<select name="" id="" class="form-control bg-dark border-0">
<option value="">Category</option>
</select>
</div>
<div class="col">
<select name="" id="" class="form-control bg-dark border-0">
<option value="">Action</option>
</select>
</div>
</div>
</div>
<div class="keybind col">
<span class="bold text-muted">KEYBIND</span>
<input type="text" readonly value="Unset, click to set"
class="keybind-input form-control bg-dark border-0 mt-2">
</div>
<input type="text" readonly class="keybind-input border-0 keybind-input text-center" placeholder="Recording keys">
<div class="btn-container position-absolute">
<a href="#" class="cancel-btn mr-3 text-muted">Cancel</a>
<button class="btn btn-info done-btn">Next</button>
</div>
</div>
</div>
<script src="../javascripts/keybinds.js"></script>
</body>
</html>

@ -24,14 +24,5 @@
<span class="sr-only">Loading...</span>
</div>
</div>
<script>
const { autoUpdater, app} = require('electron');
const server = 'https://cdn.g-vm.nl'
const url = `${server}/update/${process.platform}/${app.getVersion()}`
autoUpdater.setFeedURL({ url })
autoUpdater.checkForUpdates()
</script>
</body>
</html>

@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
</body>
</html>

@ -1,13 +1,16 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Settings</title>
<link rel="stylesheet" href="../stylesheets/bootstrap.min.css">
<link rel="stylesheet" href="../stylesheets/main.css">
<link rel="stylesheet" href="../stylesheets/settings.css">
<link rel="stylesheet" href="../stylesheets/material-switches.css">
</head>
<body>
<div class="container pt-3 h-100">
<h1>Settings</h1>
@ -19,23 +22,47 @@
<h5 class="bold text-muted">SYSTEM</h5>
<h4>
Start up with the system
<span class="material-switch">
<input type="checkbox" id="autostart" class="form-check-label" name="autostart" value="true">
<label for="autostart" class="label-primary ml-3"></label>
<span class="material-switch float-right" id="startup-label">
<input type="checkbox" id="startup" class="form-check-label" name="startup" value="true">
<label for="startup" class="label-primary ml-3"></label>
</span>
</h4>
<span class="text-muted">Keyzo will start together with the rest of your system.</span>
<br>
<br>
<div class="ml-4 startup-min">
<h4>
Start minimized
<span class="material-switch float-right" id="startup-min-label">
<input type="checkbox" id="startup-min" class="form-check-label" name="startup-min" value="true">
<label for="startup-min" class="label-primary ml-3"></label>
</span>
</h4>
<span class="text-muted">Start the application minimized so you can't see it.</span>
</div>
<br>
<br>
<h4>
Minimize when closed
<span class="material-switch" id="minimize-label">
Minimize when closed
<span class="material-switch float-right" id="minimize-label">
<input type="checkbox" id="minimize" class="form-check-label" name="minimize" value="true">
<label for="minimize" class="label-primary ml-3"></label>
</span>
</h4>
<span class="text-muted">Leave Keyzo running in the background when you press X.</span>
<hr class="dark">
<h5 class="bold text-muted">ABOUT</h5>
<h4>
Keyzo version
<span class="float-right">
v0.1
</span>
</h4>
<span class="text-muted">The current Keyzo version.</span>
</div>
<!-- <script src="../javascripts/jquery.min.js"></script> -->
<script src="../javascripts/settings.js"></script>
</body>
</html>

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 275 KiB

@ -0,0 +1,9 @@
The recommended way to use the Material Icons font is by linking to the web font hosted on Google Fonts:
```html
<link href="https://fonts.googleapis.com/icon?family=Material+Icons"
rel="stylesheet">
```
Read more in our full usage guide:
http://google.github.io/material-design-icons/#icon-font-for-the-web

@ -0,0 +1,932 @@
3d_rotation e84d
ac_unit eb3b
access_alarm e190
access_alarms e191
access_time e192
accessibility e84e
accessible e914
account_balance e84f
account_balance_wallet e850
account_box e851
account_circle e853
adb e60e
add e145
add_a_photo e439
add_alarm e193
add_alert e003
add_box e146
add_circle e147
add_circle_outline e148
add_location e567
add_shopping_cart e854
add_to_photos e39d
add_to_queue e05c
adjust e39e
airline_seat_flat e630
airline_seat_flat_angled e631
airline_seat_individual_suite e632
airline_seat_legroom_extra e633
airline_seat_legroom_normal e634
airline_seat_legroom_reduced e635
airline_seat_recline_extra e636
airline_seat_recline_normal e637
airplanemode_active e195
airplanemode_inactive e194
airplay e055
airport_shuttle eb3c
alarm e855
alarm_add e856
alarm_off e857
alarm_on e858
album e019
all_inclusive eb3d
all_out e90b
android e859
announcement e85a
apps e5c3
archive e149
arrow_back e5c4
arrow_downward e5db
arrow_drop_down e5c5
arrow_drop_down_circle e5c6
arrow_drop_up e5c7
arrow_forward e5c8
arrow_upward e5d8
art_track e060
aspect_ratio e85b
assessment e85c
assignment e85d
assignment_ind e85e
assignment_late e85f
assignment_return e860
assignment_returned e861
assignment_turned_in e862
assistant e39f
assistant_photo e3a0
attach_file e226
attach_money e227
attachment e2bc
audiotrack e3a1
autorenew e863
av_timer e01b
backspace e14a
backup e864
battery_alert e19c
battery_charging_full e1a3
battery_full e1a4
battery_std e1a5
battery_unknown e1a6
beach_access eb3e
beenhere e52d
block e14b
bluetooth e1a7
bluetooth_audio e60f
bluetooth_connected e1a8
bluetooth_disabled e1a9
bluetooth_searching e1aa
blur_circular e3a2
blur_linear e3a3
blur_off e3a4
blur_on e3a5
book e865
bookmark e866
bookmark_border e867
border_all e228
border_bottom e229
border_clear e22a
border_color e22b
border_horizontal e22c
border_inner e22d
border_left e22e
border_outer e22f
border_right e230
border_style e231
border_top e232
border_vertical e233
branding_watermark e06b
brightness_1 e3a6
brightness_2 e3a7
brightness_3 e3a8
brightness_4 e3a9
brightness_5 e3aa
brightness_6 e3ab
brightness_7 e3ac
brightness_auto e1ab
brightness_high e1ac
brightness_low e1ad
brightness_medium e1ae
broken_image e3ad
brush e3ae
bubble_chart e6dd
bug_report e868
build e869
burst_mode e43c
business e0af
business_center eb3f
cached e86a
cake e7e9
call e0b0
call_end e0b1
call_made e0b2
call_merge e0b3
call_missed e0b4
call_missed_outgoing e0e4
call_received e0b5
call_split e0b6
call_to_action e06c
camera e3af
camera_alt e3b0
camera_enhance e8fc
camera_front e3b1
camera_rear e3b2
camera_roll e3b3
cancel e5c9
card_giftcard e8f6
card_membership e8f7
card_travel e8f8
casino eb40
cast e307
cast_connected e308
center_focus_strong e3b4
center_focus_weak e3b5
change_history e86b
chat e0b7
chat_bubble e0ca
chat_bubble_outline e0cb
check e5ca
check_box e834
check_box_outline_blank e835
check_circle e86c
chevron_left e5cb
chevron_right e5cc
child_care eb41
child_friendly eb42
chrome_reader_mode e86d
class e86e
clear e14c
clear_all e0b8
close e5cd
closed_caption e01c
cloud e2bd
cloud_circle e2be
cloud_done e2bf
cloud_download e2c0
cloud_off e2c1
cloud_queue e2c2
cloud_upload e2c3
code e86f
collections e3b6
collections_bookmark e431
color_lens e3b7
colorize e3b8
comment e0b9
compare e3b9
compare_arrows e915
computer e30a
confirmation_number e638
contact_mail e0d0
contact_phone e0cf
contacts e0ba
content_copy e14d
content_cut e14e
content_paste e14f
control_point e3ba
control_point_duplicate e3bb
copyright e90c
create e150
create_new_folder e2cc
credit_card e870
crop e3be
crop_16_9 e3bc
crop_3_2 e3bd
crop_5_4 e3bf
crop_7_5 e3c0
crop_din e3c1
crop_free e3c2
crop_landscape e3c3
crop_original e3c4
crop_portrait e3c5
crop_rotate e437
crop_square e3c6
dashboard e871
data_usage e1af
date_range e916
dehaze e3c7
delete e872
delete_forever e92b
delete_sweep e16c
description e873
desktop_mac e30b
desktop_windows e30c
details e3c8
developer_board e30d
developer_mode e1b0
device_hub e335
devices e1b1
devices_other e337
dialer_sip e0bb
dialpad e0bc
directions e52e
directions_bike e52f
directions_boat e532
directions_bus e530
directions_car e531
directions_railway e534
directions_run e566
directions_subway e533
directions_transit e535
directions_walk e536
disc_full e610
dns e875
do_not_disturb e612
do_not_disturb_alt e611
do_not_disturb_off e643
do_not_disturb_on e644
dock e30e
domain e7ee
done e876
done_all e877
donut_large e917
donut_small e918
drafts e151
drag_handle e25d
drive_eta e613
dvr e1b2
edit e3c9
edit_location e568
eject e8fb
email e0be
enhanced_encryption e63f
equalizer e01d
error e000
error_outline e001
euro_symbol e926
ev_station e56d
event e878
event_available e614
event_busy e615
event_note e616
event_seat e903
exit_to_app e879
expand_less e5ce
expand_more e5cf
explicit e01e
explore e87a
exposure e3ca
exposure_neg_1 e3cb
exposure_neg_2 e3cc
exposure_plus_1 e3cd
exposure_plus_2 e3ce
exposure_zero e3cf
extension e87b
face e87c
fast_forward e01f
fast_rewind e020
favorite e87d
favorite_border e87e
featured_play_list e06d
featured_video e06e
feedback e87f
fiber_dvr e05d
fiber_manual_record e061
fiber_new e05e
fiber_pin e06a
fiber_smart_record e062
file_download e2c4
file_upload e2c6
filter e3d3
filter_1 e3d0
filter_2 e3d1
filter_3 e3d2
filter_4 e3d4
filter_5 e3d5
filter_6 e3d6
filter_7 e3d7
filter_8 e3d8
filter_9 e3d9
filter_9_plus e3da
filter_b_and_w e3db
filter_center_focus e3dc
filter_drama e3dd
filter_frames e3de
filter_hdr e3df
filter_list e152
filter_none e3e0
filter_tilt_shift e3e2
filter_vintage e3e3
find_in_page e880
find_replace e881
fingerprint e90d
first_page e5dc
fitness_center eb43
flag e153
flare e3e4
flash_auto e3e5
flash_off e3e6
flash_on e3e7
flight e539
flight_land e904
flight_takeoff e905
flip e3e8
flip_to_back e882
flip_to_front e883
folder e2c7
folder_open e2c8
folder_shared e2c9
folder_special e617
font_download e167
format_align_center e234
format_align_justify e235
format_align_left e236
format_align_right e237
format_bold e238
format_clear e239
format_color_fill e23a
format_color_reset e23b
format_color_text e23c
format_indent_decrease e23d
format_indent_increase e23e
format_italic e23f
format_line_spacing e240
format_list_bulleted e241
format_list_numbered e242
format_paint e243
format_quote e244
format_shapes e25e
format_size e245
format_strikethrough e246
format_textdirection_l_to_r e247
format_textdirection_r_to_l e248
format_underlined e249
forum e0bf
forward e154
forward_10 e056
forward_30 e057
forward_5 e058
free_breakfast eb44
fullscreen e5d0
fullscreen_exit e5d1
functions e24a
g_translate e927
gamepad e30f
games e021
gavel e90e
gesture e155
get_app e884
gif e908
golf_course eb45
gps_fixed e1b3
gps_not_fixed e1b4
gps_off e1b5
grade e885
gradient e3e9
grain e3ea
graphic_eq e1b8
grid_off e3eb
grid_on e3ec
group e7ef
group_add e7f0
group_work e886
hd e052
hdr_off e3ed
hdr_on e3ee
hdr_strong e3f1
hdr_weak e3f2
headset e310
headset_mic e311
healing e3f3
hearing e023
help e887
help_outline e8fd
high_quality e024
highlight e25f
highlight_off e888
history e889
home e88a
hot_tub eb46
hotel e53a
hourglass_empty e88b
hourglass_full e88c
http e902
https e88d
image e3f4
image_aspect_ratio e3f5
import_contacts e0e0
import_export e0c3
important_devices e912
inbox e156
indeterminate_check_box e909
info e88e
info_outline e88f
input e890
insert_chart e24b
insert_comment e24c
insert_drive_file e24d
insert_emoticon e24e
insert_invitation e24f
insert_link e250
insert_photo e251
invert_colors e891
invert_colors_off e0c4
iso e3f6
keyboard e312
keyboard_arrow_down e313
keyboard_arrow_left e314
keyboard_arrow_right e315
keyboard_arrow_up e316
keyboard_backspace e317
keyboard_capslock e318
keyboard_hide e31a
keyboard_return e31b
keyboard_tab e31c
keyboard_voice e31d
kitchen eb47
label e892
label_outline e893
landscape e3f7
language e894
laptop e31e
laptop_chromebook e31f
laptop_mac e320
laptop_windows e321
last_page e5dd
launch e895
layers e53b
layers_clear e53c
leak_add e3f8
leak_remove e3f9
lens e3fa
library_add e02e
library_books e02f
library_music e030
lightbulb_outline e90f
line_style e919
line_weight e91a
linear_scale e260
link e157
linked_camera e438
list e896
live_help e0c6
live_tv e639
local_activity e53f
local_airport e53d
local_atm e53e
local_bar e540
local_cafe e541
local_car_wash e542
local_convenience_store e543
local_dining e556
local_drink e544
local_florist e545
local_gas_station e546
local_grocery_store e547
local_hospital e548
local_hotel e549
local_laundry_service e54a
local_library e54b
local_mall e54c
local_movies e54d
local_offer e54e
local_parking e54f
local_pharmacy e550
local_phone e551
local_pizza e552
local_play e553
local_post_office e554
local_printshop e555
local_see e557
local_shipping e558
local_taxi e559
location_city e7f1
location_disabled e1b6
location_off e0c7
location_on e0c8
location_searching e1b7
lock e897
lock_open e898
lock_outline e899
looks e3fc
looks_3 e3fb
looks_4 e3fd
looks_5 e3fe
looks_6 e3ff
looks_one e400
looks_two e401
loop e028
loupe e402
low_priority e16d
loyalty e89a
mail e158
mail_outline e0e1
map e55b
markunread e159
markunread_mailbox e89b
memory e322
menu e5d2
merge_type e252
message e0c9
mic e029
mic_none e02a
mic_off e02b
mms e618
mode_comment e253
mode_edit e254
monetization_on e263
money_off e25c
monochrome_photos e403
mood e7f2
mood_bad e7f3
more e619
more_horiz e5d3
more_vert e5d4
motorcycle e91b
mouse e323
move_to_inbox e168
movie e02c
movie_creation e404
movie_filter e43a
multiline_chart e6df
music_note e405
music_video e063
my_location e55c
nature e406
nature_people e407
navigate_before e408
navigate_next e409
navigation e55d
near_me e569
network_cell e1b9
network_check e640
network_locked e61a
network_wifi e1ba
new_releases e031
next_week e16a
nfc e1bb
no_encryption e641
no_sim e0cc
not_interested e033
note e06f
note_add e89c
notifications e7f4
notifications_active e7f7
notifications_none e7f5
notifications_off e7f6
notifications_paused e7f8
offline_pin e90a
ondemand_video e63a
opacity e91c
open_in_browser e89d
open_in_new e89e
open_with e89f
pages e7f9
pageview e8a0
palette e40a
pan_tool e925
panorama e40b
panorama_fish_eye e40c
panorama_horizontal e40d
panorama_vertical e40e
panorama_wide_angle e40f
party_mode e7fa
pause e034
pause_circle_filled e035
pause_circle_outline e036
payment e8a1
people e7fb
people_outline e7fc
perm_camera_mic e8a2
perm_contact_calendar e8a3
perm_data_setting e8a4
perm_device_information e8a5
perm_identity e8a6
perm_media e8a7
perm_phone_msg e8a8
perm_scan_wifi e8a9
person e7fd
person_add e7fe
person_outline e7ff
person_pin e55a
person_pin_circle e56a
personal_video e63b
pets e91d
phone e0cd
phone_android e324
phone_bluetooth_speaker e61b
phone_forwarded e61c
phone_in_talk e61d
phone_iphone e325
phone_locked e61e
phone_missed e61f
phone_paused e620
phonelink e326
phonelink_erase e0db
phonelink_lock e0dc
phonelink_off e327
phonelink_ring e0dd
phonelink_setup e0de
photo e410
photo_album e411
photo_camera e412
photo_filter e43b
photo_library e413
photo_size_select_actual e432
photo_size_select_large e433
photo_size_select_small e434
picture_as_pdf e415
picture_in_picture e8aa
picture_in_picture_alt e911
pie_chart e6c4
pie_chart_outlined e6c5
pin_drop e55e
place e55f
play_arrow e037
play_circle_filled e038
play_circle_outline e039
play_for_work e906
playlist_add e03b
playlist_add_check e065
playlist_play e05f
plus_one e800
poll e801
polymer e8ab
pool eb48
portable_wifi_off e0ce
portrait e416
power e63c
power_input e336
power_settings_new e8ac
pregnant_woman e91e
present_to_all e0df
print e8ad
priority_high e645
public e80b
publish e255
query_builder e8ae
question_answer e8af
queue e03c
queue_music e03d
queue_play_next e066
radio e03e
radio_button_checked e837
radio_button_unchecked e836
rate_review e560
receipt e8b0
recent_actors e03f
record_voice_over e91f
redeem e8b1
redo e15a
refresh e5d5
remove e15b
remove_circle e15c
remove_circle_outline e15d
remove_from_queue e067
remove_red_eye e417
remove_shopping_cart e928
reorder e8fe
repeat e040
repeat_one e041
replay e042
replay_10 e059
replay_30 e05a
replay_5 e05b
reply e15e
reply_all e15f
report e160
report_problem e8b2
restaurant e56c
restaurant_menu e561
restore e8b3
restore_page e929
ring_volume e0d1
room e8b4
room_service eb49
rotate_90_degrees_ccw e418
rotate_left e419
rotate_right e41a
rounded_corner e920
router e328
rowing e921
rss_feed e0e5
rv_hookup e642
satellite e562
save e161
scanner e329
schedule e8b5
school e80c
screen_lock_landscape e1be
screen_lock_portrait e1bf
screen_lock_rotation e1c0
screen_rotation e1c1
screen_share e0e2
sd_card e623
sd_storage e1c2
search e8b6
security e32a
select_all e162
send e163
sentiment_dissatisfied e811
sentiment_neutral e812
sentiment_satisfied e813
sentiment_very_dissatisfied e814
sentiment_very_satisfied e815
settings e8b8
settings_applications e8b9
settings_backup_restore e8ba
settings_bluetooth e8bb
settings_brightness e8bd
settings_cell e8bc
settings_ethernet e8be
settings_input_antenna e8bf
settings_input_component e8c0
settings_input_composite e8c1
settings_input_hdmi e8c2
settings_input_svideo e8c3
settings_overscan e8c4
settings_phone e8c5
settings_power e8c6
settings_remote e8c7
settings_system_daydream e1c3
settings_voice e8c8
share e80d
shop e8c9
shop_two e8ca
shopping_basket e8cb
shopping_cart e8cc
short_text e261
show_chart e6e1
shuffle e043
signal_cellular_4_bar e1c8
signal_cellular_connected_no_internet_4_bar e1cd
signal_cellular_no_sim e1ce
signal_cellular_null e1cf
signal_cellular_off e1d0
signal_wifi_4_bar e1d8
signal_wifi_4_bar_lock e1d9
signal_wifi_off e1da
sim_card e32b
sim_card_alert e624
skip_next e044
skip_previous e045
slideshow e41b
slow_motion_video e068
smartphone e32c
smoke_free eb4a
smoking_rooms eb4b
sms e625
sms_failed e626
snooze e046
sort e164
sort_by_alpha e053
spa eb4c
space_bar e256
speaker e32d
speaker_group e32e
speaker_notes e8cd
speaker_notes_off e92a
speaker_phone e0d2
spellcheck e8ce
star e838
star_border e83a
star_half e839
stars e8d0
stay_current_landscape e0d3
stay_current_portrait e0d4
stay_primary_landscape e0d5
stay_primary_portrait e0d6
stop e047
stop_screen_share e0e3
storage e1db
store e8d1
store_mall_directory e563
straighten e41c
streetview e56e
strikethrough_s e257
style e41d
subdirectory_arrow_left e5d9
subdirectory_arrow_right e5da
subject e8d2
subscriptions e064
subtitles e048
subway e56f
supervisor_account e8d3
surround_sound e049
swap_calls e0d7
swap_horiz e8d4
swap_vert e8d5
swap_vertical_circle e8d6
switch_camera e41e
switch_video e41f
sync e627
sync_disabled e628
sync_problem e629
system_update e62a
system_update_alt e8d7
tab e8d8
tab_unselected e8d9
tablet e32f
tablet_android e330
tablet_mac e331
tag_faces e420
tap_and_play e62b
terrain e564
text_fields e262
text_format e165
textsms e0d8
texture e421
theaters e8da
thumb_down e8db
thumb_up e8dc
thumbs_up_down e8dd
time_to_leave e62c
timelapse e422
timeline e922
timer e425
timer_10 e423
timer_3 e424
timer_off e426
title e264
toc e8de
today e8df
toll e8e0
tonality e427
touch_app e913
toys e332
track_changes e8e1
traffic e565
train e570
tram e571
transfer_within_a_station e572
transform e428
translate e8e2
trending_down e8e3
trending_flat e8e4
trending_up e8e5
tune e429
turned_in e8e6
turned_in_not e8e7
tv e333
unarchive e169
undo e166
unfold_less e5d6
unfold_more e5d7
update e923
usb e1e0
verified_user e8e8
vertical_align_bottom e258
vertical_align_center e259
vertical_align_top e25a
vibration e62d
video_call e070
video_label e071
video_library e04a
videocam e04b
videocam_off e04c
videogame_asset e338
view_agenda e8e9
view_array e8ea
view_carousel e8eb
view_column e8ec
view_comfy e42a
view_compact e42b
view_day e8ed
view_headline e8ee
view_list e8ef
view_module e8f0
view_quilt e8f1
view_stream e8f2
view_week e8f3
vignette e435
visibility e8f4
visibility_off e8f5
voice_chat e62e
voicemail e0d9
volume_down e04d
volume_mute e04e
volume_off e04f
volume_up e050
vpn_key e0da
vpn_lock e62f
wallpaper e1bc
warning e002
watch e334
watch_later e924
wb_auto e42c
wb_cloudy e42d
wb_incandescent e42e
wb_iridescent e436
wb_sunny e430
wc e63d
web e051
web_asset e069
weekend e16b
whatshot e80e
widgets e1bd
wifi e63e
wifi_lock e1e1
wifi_tethering e1e2
work e8f9
wrap_text e25b
youtube_searched_for e8fa
zoom_in e8ff
zoom_out e900
zoom_out_map e56b

@ -0,0 +1,36 @@
@font-face {
font-family: 'Material Icons';
font-style: normal;
font-weight: 400;
src: url(MaterialIcons-Regular.eot); /* For IE6-8 */
src: local('Material Icons'),
local('MaterialIcons-Regular'),
url(MaterialIcons-Regular.woff2) format('woff2'),
url(MaterialIcons-Regular.woff) format('woff'),
url(MaterialIcons-Regular.ttf) format('truetype');
}
.material-icons {
font-family: 'Material Icons';
font-weight: normal;
font-style: normal;
font-size: 24px; /* Preferred icon size */
display: inline-block;
line-height: 1;
text-transform: none;
letter-spacing: normal;
word-wrap: normal;
white-space: nowrap;
direction: ltr;
/* Support for all WebKit browsers. */
-webkit-font-smoothing: antialiased;
/* Support for Safari and Chrome. */
text-rendering: optimizeLegibility;
/* Support for Firefox. */
-moz-osx-font-smoothing: grayscale;
/* Support for IE. */
font-feature-settings: 'liga';
}

@ -7,11 +7,12 @@
#main-page {
width: 100%;
height: 100%;
border: 0;
}
.nav-left {
user-select: none;
background-color: #292929;
position: absolute;
}
@media (max-width:749px) {
@ -42,22 +43,27 @@
@media (min-width:750px) {
.wrapper {
min-width: calc(100vw - 10rem);
width: 85vw;
max-width: calc(100vw - 6rem);
min-width: calc(100vw - 6rem);
width: 96vw;
max-width: calc(100vw - 3.5rem);
}
.nav-left {
top: 0;
height: calc(100vh - 30px);
min-width: 6rem;
width: 15vw;
max-width: 10rem;
min-width: 3.5rem;
width: 4vw;
max-width: 6rem;
}
.nav-item:hover {
border-left: #a6a6a6 3px solid;
padding-right: 3px;
}
li.active {
border-left: 3px solid #efefef;
padding-left: -3px;
.nav-item.active {
border-left: 3px solid #efefef!important;
padding-right: 3px;
}
.nav-list-top {
@ -83,4 +89,8 @@
.nav-list li {
float: left;
cursor: pointer;
}
.nav-list li i {
font-size: 2rem;
}

@ -5,6 +5,45 @@
box-sizing: border-box;
}
.add-keybind {
font-size: 3rem;
user-select: none;
cursor: pointer;
}
.dark-overlay {
background-color: rgba(0, 0, 0, 0.5);
z-index: 1000;
top: 0;
left: 0;
}
.keybind-input {
background-color: transparent;
color: white;
height: 100%;
cursor: default;
width: 100%;
user-select: none;
font-size: 5rem;
}
.btn-container {
bottom: 1.5rem;
right: 1.5rem;
}
.keybind-input:focus {
outline: 0;
}
.select-function {
width: 50%;
height: 50%;
background-color: #292929;
border-radius: 5px;
}
input {
cursor: pointer;
}

@ -16,11 +16,11 @@
}
html {
min-height: 100vh;
min-height: calc(100vh - 30px);
}
body {
height: 100vh;
height: calc(100vh - 30px);
background-color: #212121;
}

@ -20,7 +20,7 @@
margin-top: -8px;
position:absolute;
opacity: 0.3;
transition: all 0.4s ease-in-out;
transition: all 0.2s ease-in-out;
width: 40px;
}
.material-switch > label::after {
@ -33,7 +33,7 @@
margin-top: -8px;
position: absolute;
top: -4px;
transition: all 0.3s ease-in-out;
transition: all 0.1s ease-in-out;
width: 24px;
}
.material-switch > input[type="checkbox"]:checked + label::before {

@ -0,0 +1,8 @@
* {
user-select: none;
}
.disabled-item {
opacity: 0.5;
pointer-events: none;
}