From 13b75a69544aa16b8483ddbbcade34a48b7b4709 Mon Sep 17 00:00:00 2001 From: Zed Date: Thu, 15 Aug 2019 22:44:11 +0200 Subject: [PATCH] Style preferences page --- public/css/style.css | 124 +++++++++++++++++++++++++++++++------- src/views/preferences.nim | 20 +++--- 2 files changed, 113 insertions(+), 31 deletions(-) diff --git a/public/css/style.css b/public/css/style.css index 0963712..77d6844 100644 --- a/public/css/style.css +++ b/public/css/style.css @@ -7,6 +7,10 @@ body { line-height: 1.3; } +* { + outline: unset; +} + #posts { background-color: #161616; } @@ -200,13 +204,16 @@ nav { justify-content: flex-end; } +.site-name { + font-weight: 600; +} + .site-logo { width: 35px; height: 35px; } .item.right a { - font-size: 16px; padding-left: 4px; } @@ -1072,6 +1079,41 @@ video, .video-container img { .preferences { background-color: #222222; + width: 100%; +} + +.preferences input[type="text"] { + max-width: 110px; + background-color: #121212; + padding: 1px 4px; + color: #f8f8f2; + margin: 0; + border: 1px solid #ff6c6091; + border-radius: 0px; + position: absolute; + right: 0; + font-size: 14px; +} + +.preferences input[type="text"]:hover { + border-color: #ff6c60; +} + +.preferences button { + background-color: #121212; + color: #f8f8f2; + border: 1px solid #ff6c6091; + padding: 3px 6px; + margin-top: 4px; + font-size: 14px; +} + +.preferences button:hover { + border-color: #ff6c60; +} + +.preferences button:active { + border-color: #ff9f97; } fieldset { @@ -1081,36 +1123,76 @@ fieldset { legend { width: 100%; - padding: .6em 0 .3em 0; - margin-bottom: .2em; + padding: .2em 0 .3em 0; + margin: 0; border: 0; - border-bottom: 1px solid #888888; font-size: 16px; + border-bottom: 1px solid #888888; + margin-bottom: 5px; } -.pref-group { - margin: .2em; 0; -} - -.pref-submit { - background-color: #e2e2e2; - color: #000; - border: none; - border-radius: 2px; - padding: 3px 6px; - margin-left: 6px; - margin-top: 4px; -} - -.pref-submit:hover { - background-color: #a8a8a8; +.pref-input { + position: relative; + margin-bottom: 5px; } .pref-reset { float: right; - margin-top: -25px; + margin-top: -28px; } .icon-container { display: inline; } + +.checkbox-container { + display: block; + position: relative; + margin-bottom: 5px; + cursor: pointer; + user-select: none; +} + +.checkbox-container input { + position: absolute; + opacity: 0; + cursor: pointer; + height: 0; + width: 0; +} + +.checkbox { + position: absolute; + top: 1px; + right: 0; + height: 17px; + width: 17px; + background-color: #121212; + border: 1px solid #ff6c6091; +} + +.checkbox-container:hover input ~ .checkbox { + border-color: #ff6c60; +} + +.checkbox-container:active input ~ .checkbox { + border-color: #ff9f97; +} + +.checkbox:after { + content: ""; + position: absolute; + display: none; +} + +.checkbox-container input:checked ~ .checkbox:after { + display: block; +} + +.checkbox-container .checkbox:after { + left: 2px; + bottom: 0px; + font-size: 13px; + font-family: "fontello"; + content: '\e803'; +} diff --git a/src/views/preferences.nim b/src/views/preferences.nim index f041e8e..9023440 100644 --- a/src/views/preferences.nim +++ b/src/views/preferences.nim @@ -5,28 +5,28 @@ import ../types, ../prefs proc genCheckbox(pref, label: string; state: bool): VNode = buildHtml(tdiv(class="pref-group")): - if state: - input(name=pref, `type`="checkbox", checked="") - else: - input(name=pref, `type`="checkbox") - label(`for`=pref): text label + label(class="checkbox-container"): + text label + if state: input(name=pref, `type`="checkbox", checked="") + else: input(name=pref, `type`="checkbox") + span(class="checkbox") proc genSelect(pref, label, state: string; options: seq[string]): VNode = buildHtml(tdiv(class="pref-group")): + label(`for`=pref): text label select(name=pref): for opt in options: if opt == state: option(value=opt, selected=""): text opt else: option(value=opt): text opt - label(`for`=pref): text label proc genInput(pref, label, state, placeholder: string): VNode = let s = xmltree.escape(state) let p = xmltree.escape(placeholder) - buildHtml(tdiv(class="pref-group")): - verbatim &"" + buildHtml(tdiv(class="pref-group pref-input")): label(`for`=pref): text label + verbatim &"" macro renderPrefs*(): untyped = result = nnkCall.newTree( @@ -57,9 +57,9 @@ proc renderPreferences*(prefs: Prefs): VNode = form(`method`="post", action="saveprefs"): renderPrefs() - button(`type`="submit", class="pref-submit"): + button(`type`="submit"): text "Save preferences" form(`method`="post", action="resetprefs", class="pref-reset"): - button(`type`="submit", class="pref-submit"): + button(`type`="submit"): text "Reset preferences"