From 24538b729602cf994d69af62ae4284dc7c2cc6a4 Mon Sep 17 00:00:00 2001 From: Fredrik August Madsen-Malmo <mail.fredrikaugust@gmail.com> Date: Thu, 26 Jul 2018 16:46:43 +0200 Subject: [PATCH] Clean up navigation bar code And update README so that arch users don't have to update their entire system to install the required packages. --- README.md | 4 +- assets/css/darktheme.css | 5 ++ assets/css/default.css | 108 +++++++++++++++++++++++++++++++++ src/invidious/views/layout.ecr | 60 +++++++++--------- 4 files changed, 144 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index 16cd310b..a47b3c93 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ #### On Arch: ```bash -$ sudo pacman -Syu shards crystal +$ sudo pacman -S shards crystal $ shards ``` @@ -44,7 +44,7 @@ $ ./setup.sh #### On Arch: ```bash -$ sudo pacman -Syu imagemagick librsvg +$ sudo pacman -S imagemagick librsvg ``` ## Usage: diff --git a/assets/css/darktheme.css b/assets/css/darktheme.css index 8ecf2ea3..1af246df 100644 --- a/assets/css/darktheme.css +++ b/assets/css/darktheme.css @@ -28,3 +28,8 @@ body { .pure-form > fieldset > select, .pure-control-group > select { color: #101010; } + +.navbar>.searchbar input { + background-color: inherit; + color: inherit; +} diff --git a/assets/css/default.css b/assets/css/default.css index 7908025a..39558b37 100644 --- a/assets/css/default.css +++ b/assets/css/default.css @@ -17,6 +17,114 @@ div { animation: spin 2s linear infinite; } +/* + * Navbar + */ + +.navbar { + margin: 1em 0; + display: flex; /* this is also defined in framework, but in case of future changes */ + align-items: center; + justify-content: space-between; +} + +.navbar>div { + flex: 1; +} + +.navbar>.searchbar { + flex-grow: 2; /* take double the space of the other items */ +} + +.navbar a { + padding: 0; /* this way it will stay aligned with content under */ +} + +.navbar .index-link { + font-weight: bold; +} + +.navbar>.searchbar .pure-form input[type="search"] { + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #ccc; + border-radius: 0; + + padding: initial 0; + + box-shadow: none; + + transition: 0.1s border-bottom; +} + +.navbar>.searchbar .pure-form fieldset { + padding: 0; +} + +/* attract focus to the searchbar by adding a subtle transition */ +.navbar>.searchbar .pure-form input[type="search"]:focus { + border-bottom: 2px solid #aaa; +} + +.user-field { + display: flex; + flex-direction: row; + justify-content: flex-end; + align-items: center; +} + +.user-field div { + width: initial; +} + +.user-field div:not(:last-child) { + margin-right: 1em; +} + +@media screen and (max-width: 767px) { + .navbar { + flex-direction: column; + } + + .navbar>div { + display: flex; + justify-content: center; + } + + .navbar>div:not(:last-child) { + margin-bottom: 1em; + } + + .navbar>.searchbar>form { + width: 60%; + } +} + +@media screen and (max-width: 320px) { + .navbar>.searchbar>form { + width: 100%; + margin: 0 1em; + } +} + +/* + * Footer + */ + +.footer { + color: #666666; + margin: 2em 0; + text-align: center; +} + +.footer a { + color: inherit; + text-decoration: underline; +} + +/* keyframes */ + @keyframes spin { 0% { transform: rotate(0deg); diff --git a/src/invidious/views/layout.ecr b/src/invidious/views/layout.ecr index 8df75e3f..67b9ba5d 100644 --- a/src/invidious/views/layout.ecr +++ b/src/invidious/views/layout.ecr @@ -20,51 +20,49 @@ <div class="pure-g"> <div class="pure-u-1 pure-u-md-1-5"></div> <div class="pure-u-1 pure-u-md-3-5"> - <div class="pure-g" style="padding:1em;"> + <div class="pure-g navbar"> <div class="pure-u-1 pure-u-md-4-24"> - <center><a href="/" class="pure-menu-heading">Invidious</a></center> + <a href="/" class="index-link pure-menu-heading">Invidious</a> </div> - <div class="pure-u-1 pure-u-md-12-24"> + <div class="pure-u-1 pure-u-md-12-24 searchbar"> <form class="pure-form" action="/search" method="get"> <fieldset> <input type="search" style="width:100%;" name="q" placeholder="search" value="<%= env.params.query["q"]? %>"> </fieldset> </form> </div> - <div class="pure-u-1 pure-u-md-8-24"> + <div class="pure-u-1 pure-u-md-8-24 user-field"> <% if env.get? "user" %> - <div class="pure-g"> - <div class="pure-u-1-3"> - <a href="/feed/subscriptions" class="pure-menu-heading"> - <% notification_count = env.get("user").as(User).notifications.size %> - <% if notification_count > 0 %> - <center><%= notification_count %> <i class="fas fa-bell"></i></center> - <% else %> - <center><i class="far fa-bell"></i></center> - <% end %> - </a> - </div> - <div class="pure-u-1-3"> - <a href="/preferences" class="pure-menu-heading"> - <center><i class="fas fa-cog"></i></center> - </a> - </div> - <div class="pure-u-1-3"> - <a href="/signout" class="pure-menu-heading"> - <center>Sign out</center> - </a> - </div> - </div> + <div class="pure-u-1-3"> + <a href="/feed/subscriptions" class="pure-menu-heading"> + <% notification_count = env.get("user").as(User).notifications.size %> + <% if notification_count > 0 %> + <%= notification_count %> <i class="fas fa-bell"></i> + <% else %> + <i class="far fa-bell"></i> + <% end %> + </a> + </div> + <div class="pure-u-1-3"> + <a href="/preferences" class="pure-menu-heading"> + <i class="fas fa-cog"></i> + </a> + </div> + <div class="pure-u-1-3"> + <a href="/signout" class="pure-menu-heading">Sign out</a> + </div> <% else %> - <center><a href="/login" class="pure-menu-heading">Login</a></center> + <a href="/login" class="pure-menu-heading">Login</a> <% end %> </div> </div> <%= content %> - <center class="h-box"> - Released under AGPLv3 by <a href="https://github.com/omarroth">Omar Roth</a> - - source available <a href="https://github.com/omarroth/invidious">here</a> - </center> + <div class="footer"> + Released under AGPLv3 by <a href="https://github.com/omarroth">Omar + Roth</a>. + Source available <a + href="https://github.com/omarroth/invidious">here</a>. + </div> </div> <div class="pure-u-1 pure-u-md-1-5"></div> </div>