Create dark theme by extracting theme settings from glowingbear.css

* Remove style.css as those values should be themable as well.
* Update urls in index.html to link to dark theme by default
This commit is contained in:
David Cormier 2014-08-30 11:21:32 -04:00
parent 967aac5dba
commit 7fa1b7cc9d
4 changed files with 188 additions and 90 deletions

View file

@ -2,52 +2,15 @@ html,
body { body {
height: 100%; height: 100%;
/* The html and body elements cannot have any padding or margin. */ /* The html and body elements cannot have any padding or margin. */
color: #ddd;
background-color: #181818;
} }
.no-overflow { .no-overflow {
overflow: hidden; overflow: hidden;
} }
.horizontal-line {
-webkit-box-shadow: rgba(255, 255, 255, 0.07) 0 1px 0;
-moz-box-shadow: rgba(255, 255, 255, 0.07) 0 1px 0;
box-shadow: rgba(255, 255, 255, 0.07) 0 1px 0;
border-bottom: 1px solid #121212;
}
.vertical-line {
-webkit-box-shadow: rgba(255, 255, 255, 0.07) 1px 0 0;
-moz-box-shadow: rgba(255, 255, 255, 0.07) 1px 0 0;
box-shadow: rgba(255, 255, 255, 0.07) 1px 0 0;
border-right: 1px solid #121212;
}
.vertical-line-left {
-webkit-box-shadow: rgba(255, 255, 255, 0.07) -1px 0 0;
-moz-box-shadow: rgba(255, 255, 255, 0.07) -1px 0 0;
box-shadow: rgba(255, 255, 255, 0.07) -1px 0 0;
border-left: 1px solid #121212;
}
.panel-group .panel-heading + .panel-collapse .panel-body, .modal-body, .modal-header, .modal-footer {
-webkit-box-shadow: rgba(255, 255, 255, 0.07) 0 -1px 0;
-moz-box-shadow: rgba(255, 255, 255, 0.07) 0 -1px 0;
box-shadow: rgba(255, 255, 255, 0.07) 0 -1px 0;
border-top: 1px solid #121212;
}
a { a {
cursor: pointer; cursor: pointer;
} }
.repeated-time {
}
.repeated-time .cof-chat_time,
.repeated-time .cof-chat_time_delimiters {
color: #333;
}
.repeated-time .cob-chat_time,
.repeated-time .cob-chat_time_delimiters {
background-color: transparent;
}
td.prefix { td.prefix {
text-align: right; text-align: right;
vertical-align: top; vertical-align: top;
@ -72,13 +35,15 @@ td.message {
hyphens: auto; hyphens: auto;
} }
#readmarker { #readmarker {
margin-top: 5px; margin-top: 5px;
margin-bottom: 5px; margin-bottom: 5px;
border-top: 1px solid rgba(255, 255, 255, 0.3); border-top: 1px solid;
border-bottom: 1px solid #121212; border-bottom: 1px solid;
height: 2px; height: 2px;
} }
.text { .text {
white-space: pre-wrap; white-space: pre-wrap;
} }
@ -97,11 +62,9 @@ td.message {
input[type=text], input[type=password], #sendMessage, .badge { input[type=text], input[type=password], #sendMessage, .badge {
border: 0; border: 0;
border-radius: 0; border-radius: 0;
color: #ccc;
box-shadow: 0px 1px 0px rgba(255, 255, 255, 0.1), 0px 1px 7px 0px rgba(0, 0, 0, 0.8) inset;
background: none repeat scroll 0% 0% rgba(0, 0, 0, 0.3);
margin-bottom: 5px !important; margin-bottom: 5px !important;
} }
.input-group { .input-group {
width: 100%; width: 100%;
} }
@ -162,8 +125,8 @@ input[type=text], input[type=password], #sendMessage, .badge {
font-size: 30px; font-size: 30px;
position: fixed; position: fixed;
right: 0; right: 0;
background: #282828;
} }
#topbar .actions > * { #topbar .actions > * {
padding-left: 5px; padding-left: 5px;
} }
@ -172,9 +135,6 @@ input[type=text], input[type=password], #sendMessage, .badge {
padding-right: 6px; padding-right: 6px;
} }
#topbar, #sidebar, .panel, .dropdown-menu, .modal-content {
background: #282828;
}
#sidebar { #sidebar {
position: fixed; position: fixed;
width: 140px; width: 140px;
@ -240,16 +200,12 @@ input[type=text], input[type=password], #sendMessage, .badge {
#nicklist a { #nicklist a {
text-decoration: none; text-decoration: none;
} }
#nicklist a:hover {
background: #3b3b3b;
}
#connection-infos { #connection-infos {
float: left; float: left;
max-width: 10%; max-width: 10%;
padding-left: 5px; padding-left: 5px;
font-size: 12px; font-size: 12px;
color: #aaa;
overflow: hidden; overflow: hidden;
} }
@ -267,6 +223,7 @@ input[type=text], input[type=password], #sendMessage, .badge {
background-color: #eee; background-color: #eee;
color: #222; color: #222;
} }
.content { .content {
height: 100%; height: 100%;
min-height: 100%; min-height: 100%;
@ -289,9 +246,7 @@ input[type=text], input[type=password], #sendMessage, .badge {
tr.bufferline { tr.bufferline {
line-height: 100%; line-height: 100%;
} }
tr.bufferline:hover {
background-color: #222222;
}
td.time { td.time {
padding: 1px 5px 1px 1px; padding: 1px 5px 1px 1px;
vertical-align: top; vertical-align: top;
@ -324,25 +279,9 @@ td.time {
padding-right: 100px; padding-right: 100px;
} }
.color-light-green { /* fix for mobile firefox which ignores :hover */
color: chartreuse; .nav-pills > li > a:active, .nav-pills > li > a:active span {
} text-decoration: none;
.color-27 {
color: deepskyblue;
}
.danger, .alert-danger, .badge .alert-danger {
background-color: rgb(217, 83, 79);
color: #ddd;
}
.alert-danger {
border-color: #121212;
color: black;
}
li.notification {
color: green;
} }
[ng-click], [ng-click],
@ -354,12 +293,9 @@ li.notification {
width: 10px; width: 10px;
height: 10px; height: 10px;
} }
::-webkit-scrollbar-track-piece {
background-color: black;
}
::-webkit-scrollbar-thumb:vertical { ::-webkit-scrollbar-thumb:vertical {
height: 15px; height: 15px;
background: rgba(255,255,255,0.5);
} }
div.embed * { div.embed * {
@ -428,8 +364,8 @@ table.notimestampseconds td.time span.seconds {
height: 100%; height: 100%;
width: 100%; width: 100%;
overflow: none; overflow: none;
background-color:rgba(0, 0, 0, 0.5)
} }
.gb-modal .modal-dialog { .gb-modal .modal-dialog {
z-index: 1001; z-index: 1001;
position: absolute; position: absolute;
@ -459,11 +395,12 @@ table.notimestampseconds td.time span.seconds {
border-bottom: 0; border-bottom: 0;
} }
#fontchoice label { .standard-labels label {
font-weight: normal; font-weight: normal;
text-align: left; text-align: left;
} }
h2 { h2 {
padding-bottom: 5px; padding-bottom: 5px;
height: 72px; height: 72px;
@ -599,11 +536,8 @@ li.buffer.indent.private a {
height: auto; height: auto;
padding: 35px 7px 35px 10px; padding: 35px 7px 35px 10px;
text-align: center; text-align: center;
-webkit-box-shadow: 0px 0px 120px #000;
box-shadow: 0px 0px 120px #000;
position: fixed; position: fixed;
margin-top: 10px; margin-top: 10px;
background: #282828;
bottom: 0px; bottom: 0px;
} }
@ -648,17 +582,10 @@ li.buffer.indent.private a {
width: 96%; width: 96%;
} }
/* a different colour is too irregular on mobile */
.repeated-time .cof-chat_time,
.repeated-time .cof-chat_time_delimiters {
color: #999;
}
.footer { .footer {
padding-left: 0px !important; padding-left: 0px !important;
padding-right: 0px !important; padding-right: 0px !important;
width: 100% !important; width: 100% !important;
background: rgb(24,24,24);
} }
.footer.withnicklist { .footer.withnicklist {

View file

@ -1,3 +1,131 @@
body {
background-color: #181818;
color: #ddd;
}
.form-control {
color: #ccc;
box-shadow: 0px 1px 0px rgba(255, 255, 255, 0.1), 0px 1px 7px 0px rgba(0, 0, 0, 0.8) inset;
background: none repeat scroll 0% 0% rgba(0, 0, 0, 0.3);
border: 0px none;
}
html {
background-color: inherit;
}
.repeated-time .cob-chat_time,
.repeated-time .cob-chat_time_delimiters {
background-color: transparent;
color: #333;
}
/* fix for mobile firefox which ignores :hover */
.nav-pills > li > a:active, .nav-pills > li > a:active span {
background-color: #eee;
color: #222;
}
tr.bufferline:hover {
background-color: #222222;
}
.danger, .alert-danger, .badge .alert-danger {
background-color: rgb(217, 83, 79);
color: #ddd;
}
.alert-danger {
border-color: #121212;
color: black;
}
li.notification {
color: green;
}
::-webkit-scrollbar-track-piece {
background-color: black;
}
::-webkit-scrollbar-thumb:vertical {
height: 15px;
background: rgba(255,255,255,0.5);
}
.gb-modal .backdrop {
background-color:rgba(0, 0, 0, 0.5)
}
input[type=text], input[type=password], #sendMessage, .badge {
color: #ccc;
box-shadow: 0px 1px 0px rgba(255, 255, 255, 0.1), 0px 1px 7px 0px rgba(0, 0, 0, 0.8) inset;
background: none repeat scroll 0% 0% rgba(0, 0, 0, 0.3);
}
#connection-infos {
color: #aaa;
}
.nav-pills > li > a {
color: #ddd;
}
.nav-pills > li > a:hover, .nav-pills > li > a:hover span {
color: #222;
}
.color-light-green {
color: chartreuse;
}
.color-27 {
color: deepskyblue;
}
#topbar .actions {
background: #282828;
}
#topbar, #sidebar, .panel, .dropdown-menu, .modal-content {
background: #282828;
}
#nicklist a:hover {
background: #3b3b3b;
}
.horizontal-line {
-webkit-box-shadow: rgba(255, 255, 255, 0.07) 0 1px 0;
-moz-box-shadow: rgba(255, 255, 255, 0.07) 0 1px 0;
box-shadow: rgba(255, 255, 255, 0.07) 0 1px 0;
border-bottom: 1px solid #121212;
}
.vertical-line {
-webkit-box-shadow: rgba(255, 255, 255, 0.07) 1px 0 0;
-moz-box-shadow: rgba(255, 255, 255, 0.07) 1px 0 0;
box-shadow: rgba(255, 255, 255, 0.07) 1px 0 0;
border-right: 1px solid #121212;
}
.vertical-line-left {
-webkit-box-shadow: rgba(255, 255, 255, 0.07) -1px 0 0;
-moz-box-shadow: rgba(255, 255, 255, 0.07) -1px 0 0;
box-shadow: rgba(255, 255, 255, 0.07) -1px 0 0;
border-left: 1px solid #121212;
}
.panel-group .panel-heading + .panel-collapse .panel-body, .modal-body, .modal-header, .modal-footer {
-webkit-box-shadow: rgba(255, 255, 255, 0.07) 0 -1px 0;
-moz-box-shadow: rgba(255, 255, 255, 0.07) 0 -1px 0;
box-shadow: rgba(255, 255, 255, 0.07) 0 -1px 0;
border-top: 1px solid #121212;
}
#readmarker {
border-top-color: rgba(255, 255, 255, 0.3);
border-bottom-color: #121212;
}
/****************************/
/* Weechat colors and style */
/****************************/
/* style options, foreground */ /* style options, foreground */
.cof-separator { .cof-separator {
color: #68b5d4; color: #68b5d4;
@ -263,6 +391,9 @@
.cwf-default { .cwf-default {
color: #d9d9d9; color: #d9d9d9;
} }
.light-theme .cwf-default {
color: #282828;
}
.cwf-black { .cwf-black {
color: #000000; color: #000000;
} }
@ -1935,3 +2066,29 @@
color: yellow; color: yellow;
font-weight: bold; font-weight: bold;
} }
/* */
/* Mobile layout */
/* */
@media (max-width: 968px) {
/* a different colour is too irregular on mobile */
.repeated-time .cof-chat_time,
.repeated-time .cof-chat_time_delimiters {
color: #999;
}
#nicklist {
-webkit-box-shadow: 0px 0px 120px #000;
box-shadow: 0px 0px 120px #000;
background: #282828;
}
.footer {
background: rgb(24,24,24);
}
}

View file

@ -12,7 +12,6 @@
<link rel="shortcut icon" sizes="128x128" href="assets/img/glowing_bear_128x128.png"> <link rel="shortcut icon" sizes="128x128" href="assets/img/glowing_bear_128x128.png">
<link rel="apple-touch-icon" sizes="128x128" href="assets/img/glowing_bear_128x128.png"> <link rel="apple-touch-icon" sizes="128x128" href="assets/img/glowing_bear_128x128.png">
<link rel="shortcut icon" type="image/png" href="assets/img/favicon.png" > <link rel="shortcut icon" type="image/png" href="assets/img/favicon.png" >
<link href="css/style.css" rel="stylesheet" media="screen">
<link href="css/glowingbear.css" rel="stylesheet" media="screen"> <link href="css/glowingbear.css" rel="stylesheet" media="screen">
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.0/angular.min.js"></script> <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.0/angular.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.0/angular-route.min.js"></script> <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.0/angular-route.min.js"></script>
@ -37,6 +36,7 @@
<script type="text/javascript" src="3rdparty/favico-0.3.5.min.js"></script> <script type="text/javascript" src="3rdparty/favico-0.3.5.min.js"></script>
</head> </head>
<body ng-controller="WeechatCtrl" ng-keydown="handleKeyPress($event)" ng-keypress="handleKeyPress($event)" ng-class="{'no-overflow': connected}" lang="en-US"> <body ng-controller="WeechatCtrl" ng-keydown="handleKeyPress($event)" ng-keypress="handleKeyPress($event)" ng-class="{'no-overflow': connected}" lang="en-US">
<link ng-href="css/themes/{{theme}}.css" rel="stylesheet" media="screen" />
<div ng-hide="connected" class="container"> <div ng-hide="connected" class="container">
<h2> <h2>
<img alt="logo" src="assets/img/glowing-bear.svg"> <img alt="logo" src="assets/img/glowing-bear.svg">
@ -296,7 +296,7 @@ $ openssl req -nodes -newkey rsa:4096 -keyout relay.pem -x509 -days 365 -out rel
</div> </div>
<div class="modal-body"> <div class="modal-body">
<ul class=""> <ul class="">
<li id="fontchoice"> <li class="standard-labels">
<form class="form-horizontal" role="form"> <form class="form-horizontal" role="form">
<div class="form-group"> <div class="form-group">
<label for="font" class="col-sm-3 control-label make-thinner">Preferred font</label> <label for="font" class="col-sm-3 control-label make-thinner">Preferred font</label>
@ -311,6 +311,17 @@ $ openssl req -nodes -newkey rsa:4096 -keyout relay.pem -x509 -days 365 -out rel
</div> </div>
</form> </form>
</li> </li>
<li class="standard-labels">
<form class="form-horizontal" role="form">
<div class="form-group">
<label for="theme" class="col-sm-3 control-label make-thinner">Theme</label>
<div class="col-sm-7">
<select id="theme" class="form-control" ng-model="theme" ng-options="theme for theme in themes"></select>
</div>
</div>
</form>
</li>
<li> <li>
<form class="form-inline" role="form"> <form class="form-inline" role="form">
<div class="checkbox"> <div class="checkbox">

View file

@ -6,6 +6,7 @@ var weechat = angular.module('weechat', ['ngRoute', 'localStorage', 'weechatMode
weechat.controller('WeechatCtrl', ['$rootScope', '$scope', '$store', '$timeout', '$log', 'models', 'connection', 'notifications', 'utils', function ($rootScope, $scope, $store, $timeout, $log, models, connection, notifications, utils) { weechat.controller('WeechatCtrl', ['$rootScope', '$scope', '$store', '$timeout', '$log', 'models', 'connection', 'notifications', 'utils', function ($rootScope, $scope, $store, $timeout, $log, models, connection, notifications, utils) {
$scope.command = ''; $scope.command = '';
$scope.themes = ['dark'];
// From: http://stackoverflow.com/a/18539624 by StackOverflow user "plantian" // From: http://stackoverflow.com/a/18539624 by StackOverflow user "plantian"
$rootScope.countWatchers = function () { $rootScope.countWatchers = function () {
@ -256,6 +257,8 @@ weechat.controller('WeechatCtrl', ['$rootScope', '$scope', '$store', '$timeout',
$store.bind($scope, "soundnotification", false); $store.bind($scope, "soundnotification", false);
// Save setting for font family // Save setting for font family
$store.bind($scope, "fontfamily"); $store.bind($scope, "fontfamily");
// Save setting for theme
$store.bind($scope, "theme", 'dark');
// Save setting for font size // Save setting for font size
$store.bind($scope, "fontsize", "14px"); $store.bind($scope, "fontsize", "14px");
// Save setting for readline keybindings // Save setting for readline keybindings