diff options
author | Devaev Maxim <[email protected]> | 2018-09-26 02:57:24 +0300 |
---|---|---|
committer | Devaev Maxim <[email protected]> | 2018-09-26 02:57:24 +0300 |
commit | 81a5311349564a1016c4af2bf18ae872b650e85b (patch) | |
tree | d01fd027948494e22ae2c14334b98c1515e5e8a4 /web/css | |
parent | f3946f102fc167efdc53c73412b2c0d6ac6c72c5 (diff) |
moved kvmd to the root
Diffstat (limited to 'web/css')
-rw-r--r-- | web/css/about.css | 17 | ||||
-rw-r--r-- | web/css/keyboard.css | 107 | ||||
-rw-r--r-- | web/css/leds.css | 69 | ||||
-rw-r--r-- | web/css/main.css | 204 | ||||
-rw-r--r-- | web/css/mobile.css | 87 | ||||
-rw-r--r-- | web/css/modals.css | 52 | ||||
-rw-r--r-- | web/css/msd.css | 53 | ||||
-rw-r--r-- | web/css/stream.css | 101 | ||||
-rw-r--r-- | web/css/vars.css | 35 | ||||
-rw-r--r-- | web/css/windows.css | 57 |
10 files changed, 782 insertions, 0 deletions
diff --git a/web/css/about.css b/web/css/about.css new file mode 100644 index 00000000..0db2e467 --- /dev/null +++ b/web/css/about.css @@ -0,0 +1,17 @@ +div#about { + -webkit-user-select: text; + -moz-user-select: text; + user-select: text; +} + +div#about +td#about-version-kvmd, +td#about-version-python, +td#about-version-platform { + font-weight: bold; +} + +div#about p { + font-family: monospace; + padding: 0 10px 0 10px; +} diff --git a/web/css/keyboard.css b/web/css/keyboard.css new file mode 100644 index 00000000..ebe1d95e --- /dev/null +++ b/web/css/keyboard.css @@ -0,0 +1,107 @@ +div.keyboard { + zoom: 0.8; +} + +div.keyboard div.keyboard-block { + display: table-cell; + padding-right: 0; +} +div.keyboard div.keyboard-block:not(:first-child) { + padding-left: 15px; +} + +div.keyboard div.keyboard-row { + white-space: nowrap; + height: 40px; + margin-bottom: 5px; +} +div.keyboard div.keyboard-row:last-child { + margin-bottom: 0; +} + +div.keyboard div.key, div.modifier, div.empty-key { + box-sizing: border-box; + display: inline-block; + margin-right: 5px; + padding: 0; + width: 40px; +} +div.keyboard div.key, div.modifier { + font-size: 0.9em; + text-align: center; + vertical-align: top; + box-shadow: var(--micro-shadow); + border: var(--grey-border); + border-radius: 6px; + color: var(--fg-color-normal); + background-color: var(--bg-color-gray); + cursor: pointer; + height: 40px; +} +div.keyboard div.key:hover, div.modifier:hover { + color: var(--fg-color-intensive); + background-color: var(--bg-color-ctl); +} +div.keyboard div.pressed { + box-shadow: none; + color: var(--fg-color-selected) !important; + background-color: var(--bg-color-dark) !important; +} +div.keyboard div.holded { + box-shadow: none; + color: var(--fg-color-normal) !important; + background-color: var(--bg-color-intensive) !important; +} +div.keyboard div.key:last-child, div.empty-key:last-child, div.modifier:last-child { + margin-right: 0; +} +div.keyboard div.margin-0 { + margin-right: 0px; +} +div.keyboard div.wide-0 { + width: 26px; +} +div.keyboard div.wide-1 { + width: 61px; +} +div.keyboard div.wide-2 { + width: 64px; +} +div.keyboard div.wide-3 { + width: 77px; +} +div.keyboard div.wide-4 { + width: 102px; +} +div.keyboard div.wide-5 { + width: 288px; +} +div.keyboard div.left { + text-align: left !important; + padding-left: 6px !important; +} +div.keyboard div.right { + text-align: right !important; + padding-right: 6px !important; +} +div.keyboard div.small { + font-size: 0.7em; +} + +div.keyboard p { + margin: 0; + position: relative; + top: 50%; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); +} +div.keyboard b { + color: var(--bg-color-intensive); +} + +div#keyboard-desktop { + display: block; +} +div#keyboard-mobile { + display: none; +} diff --git a/web/css/leds.css b/web/css/leds.css new file mode 100644 index 00000000..c5c122e3 --- /dev/null +++ b/web/css/leds.css @@ -0,0 +1,69 @@ +@-webkit-keyframes spin { + 100% { + -webkit-transform: rotate(360deg); + } +} +@keyframes spin { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +:root { + --led-filter-gray: invert(0.5); + --led-filter-green: invert(0.5) sepia(1) saturate(5) hue-rotate(100deg); + --led-filter-red: invert(0.5) sepia(1) saturate(15) hue-rotate(320deg); + --led-filter-yellow: invert(0.5) sepia(1) saturate(5) hue-rotate(0deg); + + --led-spin-slow: spin 6s linear infinite; + --led-spin-medium: spin 3s linear infinite; + --led-spin-fast: spin 2s linear infinite; +} + +img.led-on { + -webkit-filter: var(--led-filter-green); + filter: var(--led-filter-green); +} + +img.led-off { + -webkit-filter: var(--led-filter-gray); + filter: var(--led-filter-gray); +} + +img.led-hdd-busy { + -webkit-filter: var(--led-filter-red); + filter: var(--led-filter-red); +} + +img.led-msd-writing, +img.led-pak-typing { + -webkit-filter: var(--led-filter-yellow); + filter: var(--led-filter-yellow); + -webkit-animation: var(--led-spin-fast); + animation: var(--led-spin-fast); +} + +img.led-link-connecting { + -webkit-filter: var(--led-filter-yellow); + filter: var(--led-filter-yellow); +} + +img.led-fan-on { + -webkit-filter: var(--led-filter-green); + filter: var(--led-filter-green); + -webkit-animation: var(--led-spin-medium); + animation: var(--led-spin-medium); +} + +img.led-fan-slow { + -webkit-filter: var(--led-filter-yellow); + filter: var(--led-filter-yellow); + -webkit-animation: var(--led-spin-slow); + animation: var(--led-spin-slow); +} + +img.led-fan-fail { + -webkit-filter: var(--led-filter-red); + filter: var(--led-filter-red); +} diff --git a/web/css/main.css b/web/css/main.css new file mode 100644 index 00000000..0dd07fc2 --- /dev/null +++ b/web/css/main.css @@ -0,0 +1,204 @@ +body { + margin: 0; + overflow: hidden; + color: var(--fg-color-normal); + background-color: var(--bg-color-normal); + font-family: sans-serif !important; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + touch-action: manipulation; +} + +a { + text-decoration: underline dotted; + color: var(--fg-color-normal); +} +@media (hover: hover), (min--moz-device-pixel-ratio: 0) { + a:hover { + text-decoration: underline; + } +} + +hr { + border: none; + border-top: var(--normal-border); +} + +button, select { + box-shadow: none; + border: none; + color: var(--fg-color-normal); + background-color: var(--bg-color-normal); + display: block; + width: 100%; + height: 30px; + font-size: 16px; + outline: none; + cursor: pointer; +} +@media (hover: hover), (min--moz-device-pixel-ratio: 0) { + button:enabled:hover, select:enabled:hover { + color: var(--fg-color-intensive); + background-color: var(--bg-color-dark) !important; + } + button:active, select:active { + color: var(--fg-color-selected) !important; + } + select:enabled:hover { + background-image: url("../svg/select-arrow-intensive.svg") !important; + } +} +@media (hover: none) { + button:active, select:active { + color: var(--fg-color-intensive); + background-color: var(--bg-color-dark); + } +} +button:disabled, select:disabled { + color: var(--fg-color-inactive); + cursor: default; +} + +select { + -webkit-appearance: button; + -moz-appearance: button; + appearance: button; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + background-image: url("../svg/select-arrow-normal.svg"); + background-position: center right; + background-repeat: no-repeat; +} +select:disabled { + background-image: url("../svg/select-arrow-inactive.svg") !important; +} +select:active { + color: var(--fg-color-intensive) !important; + background-color: var(--bg-color-dark) !important; + background-image: url("../svg/select-arrow-intensive.svg") !important; +} + +.row50 { + display: inline-block; + width: 50%; +} +.row25 { + display: inline-block; + width: 25%; +} +.row50:not(:first-child), .row25:not(:first-child) { + border-left: var(--dark-border); +} + +img#logo { + -webkit-filter: invert(0.7); + filter: invert(0.7); + vertical-align: middle; + padding-left: 16px; +} + +ul#ctl { + box-shadow: var(--small-shadow); + list-style-type: none; + margin: 0; + padding: 0; + background-color: var(--bg-color-ctl); + position: fixed; + top: 0; + width: 100%; + height: 50px; + z-index: 2147483646; +} +ul#ctl li.ctl-logo { + line-height: 50px; + margin-top: -2px; + float: left; +} +ul#ctl li.ctl-right-actions { + float: right; +} +ul#ctl img { + vertical-align: middle; + margin-right: 10px; + height: 20px; +} +ul#ctl li a.ctl-item { + line-height: 50px; + outline: none; + cursor: pointer; + border-left: var(--black-border); + display: inline-block; + color: var(--fg-color-normal); + padding-left: 16px; + padding-right: 16px; + text-decoration: none; +} +ul#ctl li a.ctl-item:hover:not(.active) { + background-color: var(--bg-color-hovered); +} +ul#ctl li a.ctl-item-selected { + box-shadow: 0 5px 0 var(--border-color-intensive) inset; + background-color: var(--bg-color-selected) !important; +} +div.ctl-dropdown-content { + visibility: hidden; + overflow: hidden; + white-space: nowrap; + border: var(--intensive-border); + border-top: var(--dark-border); + border-radius: 0 0 8px 8px; + position: absolute; + background-color: var(--bg-color-ctl); + min-width: 180px; + box-shadow: var(--big-shadow); + z-index: 2147483645; +} +div.ctl-dropdown-content button, select { + text-align: left; + padding: 0 16px; +} +div.ctl-dropdown-content div.buttons-row { + margin: 0; + padding: 0; + font-size: 0; +} +div.ctl-dropdown-content hr { + margin: 0; + display: block; + height: 0px; + padding: 0; + border: none; + border-top: var(--dark-border); +} +div.ctl-dropdown-content-buttons { + background-color: var(--bg-color-normal); +} +div.ctl-dropdown-content-text { + margin: 10px 15px 10px 15px; + font-size: 14px; +} + +ul#footer { + list-style-type: none; + bottom: 0; + position: fixed; + width: 100%; + padding: 0; + font-size: 0.7em; + color: var(--fg-color-inactive); + z-index: -10; +} +ul#footer li { + padding: 0 10px; +} +ul#footer li.footer-left { + float: left; +} +ul#footer li.footer-right { + float: right; +} +ul#footer li a { + color: var(--fg-color-inactive); +} diff --git a/web/css/mobile.css b/web/css/mobile.css new file mode 100644 index 00000000..fdec7fc3 --- /dev/null +++ b/web/css/mobile.css @@ -0,0 +1,87 @@ +/* + http://stephen.io/mediaqueries/ + https://gist.github.com/gokulkrishh/242e68d1ee94ad05f488 +*/ + +@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) { + div.window { + padding-top: 45px !important; + } + div.window-header { + height: 35px !important; + } + div.window-grab { + height: 35px !important; + } + button.window-button-close { + height: 40px !important; + } + + ul#ctl li a.ctl-item:hover:not(.active) { + background-color: var(--bg-color-ctl) !important; + } + + div.keyboard { + zoom: 1.28 !important; + } + div#keyboard-window { + visibility: visible !important; + padding-top: 9px !important; + padding-bottom: 30px !important; + border-bottom: 0 !important; + border-left: 0 !important; + border-right: 0 !important; + border-radius: 0 !important; + top: unset !important; + bottom: 0 !important; + width: 100% !important; + left: 50% !important; + -webkit-transform: translateX(-50%) !important; + transform: translateX(-50%) !important; + } + div#keyboard-window-header { + display: none !important + } + div.keyboard div.key:hover, div.modifier:hover { + color: var(--fg-color-normal); + background-color: var(--bg-color-gray); + } + div#keyboard-desktop { + display: none !important; + } + div#keyboard-mobile { + display: block !important; + } + + div#stream-window { + padding-top: 9px !important; + border-top: 0 !important; + border-radius: 0 0 8px 8px !important; + top: 50px !important; + left: 50% !important; + -webkit-transform: translateX(-50%) !important; + transform: translateX(-50%) !important; + } + div#stream-window-header { + display: none !important; + } + div#stream-mouse-buttons { + display: block !important; + } +} + +@media only screen and (min-width: 768px) and (max-width: 1024px) and (orientation: portrait) { + button, select { + height: 45px !important; + } + + div.modal-buttons button { + height: 50px !important; + } + + @supports (-webkit-appearance:none) { + div#stream-size-slider-box input[type=range] { + margin: 20px 0 20px 0 !important; + } + } +} diff --git a/web/css/modals.css b/web/css/modals.css new file mode 100644 index 00000000..cfb0df20 --- /dev/null +++ b/web/css/modals.css @@ -0,0 +1,52 @@ +div.modal { + visibility: hidden; + position: fixed; + left: 0; + top: 0; + width: 100%; + height: 100%; + background-color: rgb(0, 0, 0); + background-color: rgba(0, 0, 0, 0.5); + z-index: 2147483647; +} + +div.modal-window { + display: table; + outline: none; + margin: 15% auto; + overflow: hidden; + border: var(--dark-border); + border-radius: 8px; + box-sizing: border-box; + box-shadow: var(--big-shadow); + background-color: var(--bg-color-light); + padding: 0; +} +div.modal-window:focus { + border: var(--intensive-border) !important; +} + + +div.modal-header { + text-align: center; + font-weight: bold; + padding: 3px 9px 3px 9px; + border-bottom: var(--normal-border); +} + +div.modal-content { + max-width: 500px; + max-height: 500px; + padding: 16px 9px 16px 9px; +} + +div.modal-buttons { + border-top: var(--dark-border); + margin: 0; + padding: 0; + font-size: 0; +} + +div.modal-buttons button { + height: 40px; +} diff --git a/web/css/msd.css b/web/css/msd.css new file mode 100644 index 00000000..91c6a280 --- /dev/null +++ b/web/css/msd.css @@ -0,0 +1,53 @@ +div#msd-menu { + width: 450px; +} +div#msd-menu +div#msd-not-in-operate, +div#msd-current-image-broken, +div#msd-another-another-user-uploads, +input#msd-select-new-image-file, +div#msd-new-image { + display: none; +} + +table.msd-info { + -webkit-user-select: text; + -moz-user-select: text; + user-select: text; + border-spacing: 5px; + margin: 0 10px 0 10px; + font-size: 12px; +} +table.msd-info +td#msd-status, +td#msd-current-image-name, +td#msd-current-image-size, +td#msd-storage-size, +td#msd-new-image-name, +td#msd-new-image-size { + font-weight: bold; + max-width: 310px; + overflow: hidden; +} + +div#msd-progress { + background-color: var(--bg-color-selected); + height: 1.5em; + width: 100%; + position: relative; +} +div#msd-progress:before { + color: var(--fg-color-intensive); + content: attr(data-label); + font-size: 0.8em; + position: absolute; + text-align: center; + top: 4px; + left: 0; + right: 0; +} +div#msd-progress span#msd-progress-value { + background-color: var(--bg-color-intensive); + display: inline-block; + height: 100%; +} diff --git a/web/css/stream.css b/web/css/stream.css new file mode 100644 index 00000000..0ddcf780 --- /dev/null +++ b/web/css/stream.css @@ -0,0 +1,101 @@ +img#stream-image { + width: 640px; + height: 480px; + display: block; + background-color: var(--bg-color-stream-screen); +} + +img.stream-image-active { + -webkit-filter: none; + filter: none; +} + +img.stream-image-inactive { + -webkit-filter: grayscale(100%) brightness(75%) sepia(75%); + filter: grayscale(100%) brightness(75%) sepia(75%); +} + +div#stream-box { + position: relative; + display: inline-block; + border: var(--dark-border); +} +div.stream-box-inactive::after { + cursor: wait; + content: ""; + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + display: inline-block; + background: radial-gradient(transparent 20%, black); +} +div.stream-box-mouse-enabled { + cursor: url("../svg/stream-mouse-cursor.svg"), pointer; +} + +select#stream-quality-select { + margin: 8px 0 8px 0; +} + +span#stream-size-value { +} +div#stream-size-slider-box { + margin-top: 5px; + display: flex; +} +@supports (-webkit-appearance:none) { + div#stream-size-slider-box input[type=range] { + cursor: pointer; + outline: none; + width: 100%; + box-shadow: none; + background: transparent; + margin: 8px 0 8px 0; + -webkit-appearance: none; + } +} +@supports not (-webkit-appearance:none) { + div#stream-size-slider-box input[type=range] { + cursor: pointer; + outline: none; + width: 100%; + box-shadow: none; + margin-left: 0; + margin-right: 0; + } +} +div#stream-size-slider-box input[type=range]::-webkit-slider-runnable-track { + height: 5px; + background: var(--bg-color-light); + border-radius: 3px; +} +div#stream-size-slider-box input[type=range]::-webkit-slider-thumb { + border: var(--intensive-border); + height: 18px; + width: 18px; + border-radius: 25px; + background: var(--bg-color-intensive); + -webkit-appearance: none; + margin-top: -7px; +} +div#stream-size-slider-box input[type=range]::-moz-range-track { + height: 5px; + background: var(--bg-color-light); + border-radius: 3px; +} +div#stream-size-slider-box input[type=range]::-moz-range-thumb { + border: var(--intensive-border); + height: 18px; + width: 18px; + border-radius: 25px; + background: var(--bg-color-intensive); +} + +div#stream-mouse-buttons { + display: none; + margin: 0; + padding: 0; + font-size: 0; +} diff --git a/web/css/vars.css b/web/css/vars.css new file mode 100644 index 00000000..d6d5a604 --- /dev/null +++ b/web/css/vars.css @@ -0,0 +1,35 @@ +:root { + --bg-color-normal: #36393f; + --bg-color-light: #484b51; + --bg-color-gray: #3b3e43; + --bg-color-dark: #17191d; + --bg-color-ctl: #202225; + --bg-color-intensive: #436a8a; + --bg-color-hovered: #1a1c1f; + --bg-color-selected: #171717; + + --fg-color-normal: #c3c3c3; + --fg-color-dark: #aaaaaa; + --fg-color-intensive: white; + --fg-color-inactive: #6c7481; + --fg-color-selected: var(--fg-color-inactive); + + --bg-color-stream-screen: black; + + --border-color-normal: var(--bg-color-normal); + --border-color-grey: var(--bg-color-ctl); + --border-color-dark: var(--bg-color-dark); + --border-color-intensive: #5b90bb; + --border-color-important: #ff6467; + + --dark-border: thin solid var(--border-color-dark); + --grey-border: thin solid var(--border-color-grey); + --normal-border: thin solid var(--border-color-normal); + --black-border: thin solid black; + --intensive-border: 2px solid var(--border-color-intensive); + --thin-intensive-border: thin solid var(--border-color-intensive); + + --micro-shadow: 1px 2px 4px 0 rgba(0, 0, 0, 0.4); + --small-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2); + --big-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.4); +} diff --git a/web/css/windows.css b/web/css/windows.css new file mode 100644 index 00000000..151ca59a --- /dev/null +++ b/web/css/windows.css @@ -0,0 +1,57 @@ +div.window { + visibility: hidden; + outline: none; + overflow: hidden; + position: fixed; + border: var(--dark-border); + border-radius: 8px; + box-sizing: border-box; + box-shadow: var(--big-shadow); + white-space: nowrap; + background-color: var(--bg-color-light); + padding: 30px 9px 9px 9px; +} +div.window:focus { + border: var(--intensive-border) !important; +} + +div.window-header { + overflow: hidden; + top: 0; + left: 0; + position: absolute; + width: 100%; + padding: 0; + height: 20px; + font-size: 0.8em; + color: var(--fg-color-dark); + border-bottom: var(--normal-border); +} + +div.window-grab { + overflow: hidden; + top: 0; + left: 0; + position: absolute; + width: 100%; + height: 20px; + cursor: move; + padding: 3px 0 2px 20px; +} + +div.window-header-grabbed { + color: var(--fg-color-intensive); + background-color: var(--bg-color-intensive); + border-bottom: var(--thin-intensive-border); +} + +button.window-button-close { + position: absolute; + top: -2px; + right: -6px; + width: 44px; + height: 24px; + padding-left: 0; + color: var(--fg-color-inactive); + display: inline-block; +} |