Merge pull request #4398 from Icinga/light-mode-integrated

Integrate light theme as mode in default theme
This commit is contained in:
Johannes Meyer 2021-06-23 17:43:33 +02:00 committed by GitHub
commit ac108c9de8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
23 changed files with 391 additions and 255 deletions

View File

@ -3,11 +3,66 @@
namespace Icinga\Util;
use Less_Tree_Anonymous;
use Less_Tree_Expression;
use Less_Tree_Quoted;
use Less_Tree_Value;
use lessc;
require_once 'lessphp/lessc.inc.php';
class LessParser extends lessc
{
// Overwrite methods here
public function __construct()
{
$this->registerFunction('extract-variable-default', [$this, 'extractVariableDefault']);
}
/**
* Extract default from given variable call
*
* How to use:
*
* color: extract-variable-default(@mixin-parameter);
* color: @mixin-parameter;
*
* border: extract-variable-default(1px solid @mixin-parameter);
* border: 1px solid @mixin-parameter;
*
* background: drop-shadow(5px 0 3px extract-variable-default(@mixin-parameter, true));
* background: drop-shadow(5px 0 3px @mixin-parameter);
*
* @param mixed $value
* @param bool $valAsDefault
*
* @return mixed
*/
public function extractVariableDefault($value, $valAsDefault = false)
{
$defaultValue = 'inherit';
if ($value instanceof Less_Tree_Quoted) {
$stripped = preg_replace(
'~var\s*\(\s*[-\w]+\s*,\s*([^)]+)\)~',
'$1',
$value->value,
-1,
$replacements
);
if ($replacements > 0) {
$defaultValue = $stripped;
}
} elseif ($value instanceof Less_Tree_Expression) {
foreach ($value->value as $i => $item) {
$value->value[$i] = $this->extractVariableDefault($item, true);
}
return $value;
}
if ($valAsDefault && $defaultValue === 'inherit') {
return $value;
}
return new Less_Tree_Value([new Less_Tree_Anonymous($defaultValue)]);
}
}

View File

@ -2,13 +2,20 @@
// Mixins
.gradient(@a: @gray-lighter; @b: @gray-lightest) {
.gradient(@a: ~"var(--gray-lighter, @{gray-lighter})"; @b: ~"var(--gray-lightest, @{gray-lightest})") {
background: extract-variable-default(@a);
background: @a;
background: -webkit-gradient(linear, left top, left bottom, from(extract-variable-default(@a, true)), to(extract-variable-default(@b, true)));
background: -webkit-gradient(linear, left top, left bottom, from(@a), to(@b));
background: -webkit-linear-gradient(top, extract-variable-default(@a, true), extract-variable-default(@b, true));
background: -webkit-linear-gradient(top, @a, @b);
background: -moz-linear-gradient(top, extract-variable-default(@a, true), extract-variable-default(@b, true));
background: -moz-linear-gradient(top, @a, @b);
background: -ms-linear-gradient(top, extract-variable-default(@a, true), extract-variable-default(@b, true));
background: -ms-linear-gradient(top, @a, @b);
background: -o-linear-gradient(top, extract-variable-default(@a, true), extract-variable-default(@b, true));
background: -o-linear-gradient(top, @a, @b);
background: linear-gradient(to bottom, extract-variable-default(@a, true), extract-variable-default(@b, true));
background: linear-gradient(to bottom, @a, @b);
}
@ -24,11 +31,13 @@ pre > code {
}
.chapter a {
border-bottom: 1px @gray-light dotted;
border-bottom: 1px dotted;
.var(border-bottom-color, gray-light);
font-weight: @font-weight-bold;
&:hover {
border-bottom: 1px @text-color solid;
border-bottom: 1px solid;
.var(border-bottom-color, text-color);
text-decoration: none;
}
}
@ -41,7 +50,7 @@ pre > code {
.rounded-corners();
background: @icinga-blue;
color: @text-color-on-icinga-blue;
.var(color, text-color-on-icinga-blue);
padding: 0 0.3em 0 0.3em;
}
@ -88,7 +97,7 @@ tbody > tr:nth-child(odd) {
}
tbody > tr:nth-child(even) {
background: @body-bg-color;
.var(background, body-bg-color);
}
td, th {

View File

@ -2,8 +2,9 @@
.monitoring-statusbar {
position: relative;
background-color: @body-bg-color;
border-top: 1px solid @gray-lighter;
.var(background-color, body-bg-color);
border-top: 1px solid;
.var(border-top-color, gray-lighter);
padding: .25em @gutter;
line-height: 1.3;
@ -35,7 +36,7 @@
}
&.-inactive {
color: @gray-light;
.var(color, gray-light);
}
}
}
@ -70,7 +71,7 @@
color: white;
}
.group-grid-cell > div.state-none {
background-color: @gray-light;
.var(background-color, gray-light);
}
}
@ -155,10 +156,10 @@
}
.service-on {
color: @text-color-light;
.var(color, text-color-light);
> a {
color: @text-color;
.var(color, text-color);
letter-spacing: normal;
font-weight: bold;
}
@ -195,7 +196,7 @@
padding: .25em .5em;
&:hover {
background-color: @gray-lighter;
.var(background-color, gray-lighter);
text-decoration: none;
}
}
@ -254,7 +255,7 @@
.tactical div.box.header {
margin: 10px;
min-height: 8em;
color: @text-color-inverted;
.var(color, text-color-inverted);
font-size: @font-size-dashboard;
}
@ -285,8 +286,10 @@ div.box.ok_hosts div.box.entry, div.box.problem_hosts div.box.entry {
}
div.box.monitoringfeatures {
border: 1px solid @gray-lighter;
border-left: 15px solid @gray;
border: 1px solid;
.var(border-color, gray-lighter);
border-left: 15px solid;
.var(border-left-color, "gray");
}
div.box.monitoringfeatures div.box-separator {
@ -302,8 +305,10 @@ div.box.monitoringfeatures a.feature-highlight {
}
div.box.hostservicechecks {
border: 1px solid @gray-lighter;
border-left: 15px solid @gray;
border: 1px solid;
.var(border-color, gray-lighter);
border-left: 15px solid;
.var(border-left-color, "gray");
}
div.box.hostservicechecks th {
@ -315,15 +320,18 @@ div.box.hostservicechecks th {
div.box.process {
width: 100%;
max-width: 50em;
border: 1px solid @gray-lighter;
border-left: 15px solid @gray;
border: 1px solid;
.var(border-color, gray-lighter);
border-left: 15px solid;
.var(border-left-color, "gray");
margin-bottom: 1em;
margin-right: 1em;
}
.process div.box.header {
min-height: 5em;
border-bottom:1px solid @gray-lighter;
border-bottom:1px solid;
.var(border-bottom-color, gray-lighter);
}
.process > .boxview > div.box {
@ -334,7 +342,8 @@ div.box.process {
margin-top: 0;
margin-bottom: 1em;
padding-bottom: 1em;
border-bottom:1px solid @gray-lighter;
border-bottom:1px solid;
.var(border-bottom-color, gray-lighter);
}
.process th {
@ -373,13 +382,16 @@ div.backend-not-running {
div.box.features {
width: 100%;
max-width: 50em;
border: 1px solid @gray-lighter;
border-left: 15px solid @gray;
border: 1px solid;
.var(border-color, gray-lighter);
border-left: 15px solid;
.var(border-left-color, "gray");
}
.features div.box.header {
min-height: 5em;
border-bottom:1px solid @gray-lighter;
border-bottom: 1px solid;
.var(border-bottom-color, gray-lighter);
}
.features > .boxview > div.box {
@ -390,7 +402,8 @@ div.box.features {
margin-top: 0;
margin-bottom: 1em;
padding-bottom: 1em;
border-bottom:1px solid @gray-lighter;
border-bottom: 1px solid;
.var(border-bottom-color, gray-lighter);
}
@ -399,9 +412,11 @@ div.box.features {
div.box.stats {
width: 100%;
max-width: 50em;
border: 1px solid @gray-lighter;
border-left: 15px solid @gray;
color: @text-color;
border: 1px solid;
.var(border-color, gray-lighter);
border-left: 15px solid;
.var(border-left-color, "gray");
.var(color, text-color);
}
.stats > .boxview > div.box {
@ -414,12 +429,13 @@ div.box.stats {
}
.stats > table > thead {
color: @gray;
.var(color, "gray");
}
.stats > h2 {
text-align: left;
border-bottom: 1px solid @gray-lighter;
border-bottom: 1px solid;
.var(border-bottom-color, gray-lighter);
> .hosts-summary,
> .services-summary {
@ -439,8 +455,10 @@ div.box.stats {
div.timeline-legend {
padding: 0.5em;
margin-top: 2em;
border: 1px solid @gray-lighter;
border-left: 15px solid @gray;
border: 1px solid;
.var(border-color, gray-lighter);
border-left: 15px solid;
.var(border-left-color, "gray");
h2 {
margin: 0;
@ -460,7 +478,7 @@ div.timeline-legend {
font-weight: @font-weight-bold;
font-size: 11px;
text-align: center;
color: @text-color-inverted;
.var(color, text-color-inverted);
padding-left: 5px;
padding-right: 5px;
padding-top: 2px;
@ -606,7 +624,7 @@ form.instance-features span.description, form.object-features span.description {
text-align: left;
margin-right: 0;
width: @name-value-table-name-width;
color: @text-color-light;
.var(color, text-color-light);
label {
font-size: inherit;
@ -645,49 +663,50 @@ form.instance-features span.description, form.object-features span.description {
& + span.hint {
margin: .35em;
color: @gray-light;
.var(color, gray-light);
font-style: italic;
}
}
}
.plugin-output {
border-left: 5px solid @gray-lighter;
border-left: 5px solid;
.var(border-left-color, gray-lighter);
padding: 0.66em 0.33em;
.state-critical {
background-color: @color-critical;
color: @body-bg-color;
.var(color, body-bg-color);
padding: 0.2em;
}
.state-ok {
background-color: @color-ok;
color: @body-bg-color;
.var(color, body-bg-color);
padding: 0.2em;
}
.state-unknown {
background-color: @color-unknown;
color: @body-bg-color;
.var(color, body-bg-color);
padding: 0.2em;
}
.state-warning {
background-color: @color-warning;
color: @body-bg-color;
.var(color, body-bg-color);
padding: 0.2em;
}
.state-down {
background-color: @color-down;
color: @body-bg-color;
.var(color, body-bg-color);
padding: 0.2em;
}
.state-up {
background-color: @color-up;
color: @body-bg-color;
.var(color, body-bg-color);
padding: 0.2em;
}
}
@ -696,10 +715,12 @@ form.instance-features span.description, form.object-features span.description {
.markdown,
.plugin-output {
a {
border-bottom: 1px @gray-light dotted;
border-bottom: 1px dotted;
.var(border-bottom-color, gray-light);
&:hover {
border-bottom: 1px @text-color solid;
border-bottom: 1px solid;
.var(border-bottom-color, text-color);
text-decoration: none;
}
}

View File

@ -5,7 +5,7 @@
white-space: nowrap;
td {
color: @gray-light;
.var(color, gray-light);
padding: 0.2em;
text-align: center;
width: 1em;
@ -33,11 +33,11 @@
font-size: 130%;
a {
color: @text-color;
.var(color, text-color);
outline: none;
&:hover {
color: @text-color-light;
.var(color, text-color-light);
}
&:focus, &:active {
color: @icinga-blue;
@ -66,10 +66,10 @@ form.filter-toggle {
display: inline-block;
vertical-align: top;
margin-left: .5em;
color: @gray-light;
.var(color, gray-light);
}
input[type="checkbox"]:checked ~ label {
color: inherit;
}
}
}

View File

@ -46,7 +46,7 @@
// Host name and IP addresses in the host and service detail view
.host-meta {
color: @text-color-light;
.var(color, text-color-light);
font-size: @font-size-small;
}
@ -59,7 +59,7 @@
// Notification recipient in the notifications overview
.notification-recipient {
color: @text-color-light;
.var(color, text-color-light);
float: right;
font-size: @font-size-small;
}
@ -91,7 +91,7 @@
// Plugin output in overviews
.overview-plugin-output {
color: @text-color-light;
.var(color, text-color-light);
font-family: @font-family-fixed;
font-size: @font-size-small;
margin: 0;
@ -133,7 +133,7 @@
// Service description if in the service detail view
.service-meta {
color: @text-color-light;
.var(color, text-color-light);
font-size: @font-size-small;
}
@ -151,7 +151,7 @@
&.state-critical,
&.state-down {
background-color: @color-critical;
color: @text-color-inverted;
.var(color, text-color-inverted);
&.handled {
background-color: inherit;
@ -162,7 +162,7 @@
&.state-warning {
background-color: @color-warning;
color: @text-color-inverted;
.var(color, text-color-inverted);
&.handled {
background-color: inherit;
@ -173,7 +173,7 @@
&.state-unknown {
background-color: @color-unknown;
color: @text-color-inverted;
.var(color, text-color-inverted);
&.handled {
background-color: inherit;
@ -184,7 +184,7 @@
&.state-unreachable {
background-color: @color-unreachable;
color: @text-color-inverted;
.var(color, text-color-inverted);
&.handled {
background-color: inherit;
@ -195,7 +195,8 @@
// State class for history events
&.state-no-state {
border-left: @border-left-width solid @text-color-light;
border-left: @border-left-width solid;
.var(border-left-color, text-color-light);
}
* {

View File

@ -7,7 +7,7 @@
.about-social i {
font-size: 1.7em;
color: @text-color;
.var(color, text-color);
}
.about-social i:hover {
@ -23,7 +23,7 @@
margin: 0.5em;
padding: 0;
font-size: 5em;
color: @text-color;
.var(color, text-color);
}
.about-links i:hover {

View File

@ -5,7 +5,8 @@
li {
.rounded-corners(3px);
border: 1px solid @low-sat-blue;
border: 1px solid;
.var(border-color, low-sat-blue);
&.active {
border-color: @icinga-blue;
@ -19,13 +20,14 @@
}
h3 {
border-bottom: 1px solid @gray-light;
border-bottom: 1px solid;
.var(border-bottom-color, gray-light);
}
h3 em,
.previews em,
.privilege-label em {
color: @text-color-light;
.var(color, text-color-light);
}
h3 em {
font-weight: normal;
@ -35,7 +37,7 @@
}
.icon {
color: @gray-light;
.var(color, gray-light);
&.granted {
color: @color-granted;
@ -58,7 +60,8 @@
&:hover .spacer {
.transition(opacity .25s .25s ease-in);
border: 0 dashed @gray-light;
border: 0 dashed;
.var(border-color, gray-light);
border-top-width: .2em;
opacity: 1;
}
@ -78,7 +81,8 @@
}
.connector {
border: 0 solid @gray-lighter;
border: 0 solid;
.var(border-color, gray-lighter);
border-bottom-width: 2px;
&.granted {
@ -97,7 +101,8 @@
.role {
.rounded-corners(1em);
border: 2px solid @gray-lighter;
border: 2px solid;
.var(border-color, gray-lighter);
&.granted {
border: 2px solid @color-granted;
@ -110,7 +115,7 @@
.restriction {
font-family: @font-family-fixed;
background-color: @gray-lighter;
.var(background-color, gray-lighter);
}
}

View File

@ -8,8 +8,8 @@
.bg-stateful();
.rounded-corners();
background-color: @gray;
color: @badge-color;
.var(background-color, "gray");
.var(color, badge-color);
display: inline-block;
font-family: @font-family-wide;
font-size: @font-size-small;

View File

@ -60,7 +60,10 @@
// Menu colors
@menu-bg-color: #06062B;
@menu-hover-bg-color: fade(@menu-bg-color, 50%);
@menu-search-hover-bg-color: darken(@menu-bg-color, 20%);
@menu-active-bg-color: #181742;
@menu-active-hover-bg-color: darken(@menu-active-bg-color, 20%);
@menu-color: #DBDBDB;
@menu-active-color: @text-color;
@menu-highlight-color: @icinga-blue;
@ -69,6 +72,7 @@
@menu-2ndlvl-highlight-color: @text-color-inverted;
@menu-flyout-bg-color: @body-bg-color;
@menu-flyout-color: @text-color;
@tab-hover-bg-color: fade(@body-bg-color, 50%);
// Other colors
@color-granted: #59cd59;
@ -95,6 +99,40 @@
@vertical-padding: 0.5em; // 6px
@horizontal-padding: 1em; // 12px
@media (min-height: @prefer-light-color-scheme), (prefers-color-scheme: light) and (min-height: @enable-color-preference) {
:root {
--body-bg-color: #F5F9FA;
--badge-color: #F5F9FA;
--text-color-inverted: #F5F9FA;
--text-color-on-icinga-blue: #F5F9FA;
--menu-flyout-bg-color: #F5F9FA;
--tab-hover-bg-color: fade(#F5F9FA, 50%);
--menu-color: #676767;
--menu-bg-color: #DEECF1;
--menu-hover-bg-color: fade(#DEECF1, 50%);
--menu-search-hover-bg-color: darken(#DEECF1, 20%);
--menu-active-bg-color: #EDF7FC;
--menu-active-hover-bg-color: darken(#EDF7FC, 20%);
--menu-2ndlvl-color: #7E8182;
--text-color: #535353;
--text-color-light: fade(#535353, 75%);
--link-color: #535353;
--menu-active-color: #535353;
--menu-flyout-color: #535353;
--low-sat-blue: #DEECF1;
--low-sat-blue-dark: #c0cccd;
--gray: #7F7F7F;
--gray-semilight: #A9A9A9;
--gray-light: #C9C9C9;
--gray-lighter: #EEEEEE;
--gray-lightest: #F7F7F7;
}
}
// Make padding not affect the final computed width of an element
html {
box-sizing: border-box;
@ -128,7 +166,8 @@ blockquote, p, pre {
}
blockquote {
border-left: 5px solid @gray-lighter;
border-left: 5px solid;
.var(border-left-color, gray-lighter);
padding: 0.667em 0.333em;
}
@ -138,7 +177,8 @@ h1, h2, h3, h4, h5, h6 {
}
h1 {
border-bottom: 1px solid @gray-lighter;
border-bottom: 1px solid;
.var(border-bottom-color, gray-lighter);
font-size: 1.333em;
}
@ -164,7 +204,7 @@ h6 {
}
pre {
background-color: @gray-lightest;
.var(background-color, gray-lightest);
font-family: @font-family-fixed;
font-size: @font-size-small;
padding: @vertical-padding @horizontal-padding;
@ -200,7 +240,8 @@ td, th {
content: "";
display: block;
background: @body-bg-color url(../img/icinga-loader.gif) no-repeat center center;
background: url(../img/icinga-loader.gif) no-repeat center center;
.var(background-color, body-bg-color);
background-size: 4em 4em;
opacity: 0;
@ -232,3 +273,12 @@ td, th {
top: 2.5em;
}
}
@media (min-height: @prefer-light-color-scheme), (prefers-color-scheme: light) and (min-height: @enable-color-preference) {
.container {
&:before,
> .content:before {
background-image: url(../img/icinga-loader-light.gif)
}
}
}

View File

@ -43,6 +43,14 @@ input.search {
}
}
@media (min-height: @prefer-light-color-scheme), (prefers-color-scheme: light) and (min-height: @enable-color-preference) {
#menu input.search,
.controls input.search,
input.search {
background-image: url(../img/icons/search.png);
}
}
.backend-selection,
.pagination-control,
.selection-info,
@ -122,7 +130,7 @@ input.search {
padding: 0.5em;
}
> a:hover {
background-color: @gray-lighter;
.var(background-color, gray-lighter);
text-decoration: none;
}
}

View File

@ -110,7 +110,8 @@ form.icinga-form.inline .control-label-group {
margin: 0;
padding: 0;
border: none;
border-top: 1px solid @gray-light;
border-top: 1px solid;
.var(border-top-color, gray-light);
legend, .description {
margin-left: .7em;
@ -148,7 +149,7 @@ form.icinga-form .control-group .toggle-switch ~ .control-info {
input[type="time"],
textarea,
select {
background-color: @low-sat-blue;
.var(background-color, low-sat-blue);
}
}
@ -291,17 +292,17 @@ form.icinga-form .form-controls {
}
input[type="submit"].btn-remove {
.button(@body-bg-color, @color-critical, darken(@color-critical, 10%));
.button(~"var(--body-bg-color, @{body-bg-color})", @color-critical, darken(@color-critical, 10%));
}
input[type="submit"].btn-cancel {
.button(@body-bg-color, @gray, @black);
.button(~"var(--body-bg-color, @{body-bg-color})", ~"var(--gray, @{gray})", @black);
}
button.noscript-apply {
color: @gray;
background-color: @gray-lightest;
border-color: @gray;
.var(color, "gray");
.var(background-color, gray-lightest);
.var(border-color, "gray");
border-width: 1px;
}
}
@ -338,8 +339,9 @@ form.inline {
top: 0;
display: inline-block;
background: @low-sat-blue;
border: 1px solid @low-sat-blue;
.var(background, low-sat-blue);
border: 1px solid;
.var(border-color, low-sat-blue);
box-sizing: content-box;
border-radius: 1em;
height: 4/3em;
@ -352,9 +354,10 @@ form.inline {
top: 0;
left: 0;
background: @text-color-inverted;
.var(background, text-color-inverted);
border-radius: 1em;
border: 1px solid @low-sat-blue;
border: 1px solid;
.var(border-color, low-sat-blue);
box-sizing: border-box;
content: "";
display: block;
@ -376,6 +379,7 @@ form.inline {
.icinga-controls input[type="checkbox"]:focus + .toggle-switch .toggle-slider {
box-shadow: 0 0 0 2px @body-bg-color, 0 0 0 4px fade(@icinga-blue, 40);
box-shadow: 0 0 0 2px var(--body-bg-color, @body-bg-color), 0 0 0 4px fade(@icinga-blue, 40);
}
.icinga-controls input[type="checkbox"]:checked + .toggle-switch .toggle-slider:before {
@ -390,12 +394,12 @@ form.inline {
cursor: default;
& > .toggle-slider {
background-color: @gray-light;
border-color: @gray-light;
.var(background-color, gray-light);
.var(border-color, gray-light);
&:before {
background-color: @gray-lighter;
border-color: @gray-light;
.var(background-color, gray-lighter);
.var(border-color, gray-light);
}
}
}
@ -407,7 +411,7 @@ form.icinga-form .control-group.disabled .control-label-group {
.icinga-controls {
input[disabled],
select[disabled] {
background: @gray-lighter;
.var(background-color, gray-lighter);
border-color: transparent;
}
}
@ -458,7 +462,7 @@ form.icinga-form {
}
.form-description {
background-color: fade(@gray, 5%);
.var(background-color, "gray");
}
.errors {
@ -476,7 +480,7 @@ form.icinga-form {
}
form.icinga-form .form-info {
color: @text-color-light;
.var(color, text-color-light);
font-size: @font-size-small;
list-style: none;
padding-left: 0;

View File

@ -2,10 +2,10 @@
.app-health {
header {
color: @text-color-light;
.var(color, text-color-light);
span {
color: @text-color;
.var(color, text-color);
}
}
@ -36,12 +36,13 @@
}
tr:not(:last-child) td {
border: 0 solid @gray-light;
border: 0 solid;
.var(border-color, gray-light);
border-bottom-width: 1px;
}
section {
color: @text-color-light;
.var(color, text-color-light);
font-family: @font-family-fixed;
}
}

View File

@ -20,7 +20,7 @@
#guest-error-message {
.fadein();
color: @body-bg-color;
.var(color, body-bg-color);
font-size: 2em;
}
@ -32,7 +32,7 @@
}
#header-logo-container {
background: @menu-bg-color;
.var(background, menu-bg-color);
height: 6em;
padding: 1.25em;
width: 16em;
@ -81,8 +81,8 @@
}
#layout {
background-color: @body-bg-color;
color: @text-color;
.var(background-color, body-bg-color);
.var(color, text-color);
font-family: @font-family;
}
@ -141,11 +141,11 @@
// Mobile menu
#layout.minimal-layout #sidebar {
background-color: @menu-bg-color;
.var(background-color, menu-bg-color);
}
#mobile-menu-toggle {
color: @menu-color;
.var(color, menu-color);
text-align: right;
> button {
@ -204,11 +204,12 @@
}
#notifications > li {
color: @text-color;
.var(color, text-color);
display: block;
line-height: 2.5em;
border-left: .5em solid @gray-light;
background: @body-bg-color;
border-left: .5em solid;
.var(border-left-color, gray-light);
.var(background, body-bg-color);
margin-bottom: 1px;
box-shadow: 0 0 1em 0 rgba(0,0,0,0.25);
@ -225,10 +226,10 @@
&.error {
border-color: @color-down;
background: @color-down;
color: @body-bg-color;
.var(color, body-bg-color);
.icon {
color: @body-bg-color;
.var(color, body-bg-color);
}
}
@ -251,10 +252,10 @@
&.warning {
border-color: @color-warning;
background: @color-warning;
color: @body-bg-color;
.var(color, body-bg-color);
.icon {
color: @body-bg-color;
.var(color, body-bg-color);
}
}
}
@ -332,10 +333,10 @@
}
#search:focus {
background-color: @menu-bg-color;
.var(background-color, menu-bg-color);
border-radius: 0 .25em .25em 0;
box-shadow: 0 0 .25em 0 rgba(0, 0, 0, .2);
color: @menu-color;
.var(color, menu-color);
width: 20em;
position: fixed;
z-index: 1;
@ -356,3 +357,11 @@
}
}
}
@media (min-height: @prefer-light-color-scheme), (prefers-color-scheme: light) and (min-height: @enable-color-preference) {
#header-logo,
#mobile-menu-logo,
#about .icinga-logo {
filter: brightness(0.415) sepia(1) ~"saturate(0.1)" hue-rotate(144deg);
}
}

View File

@ -4,7 +4,7 @@
#login {
height: 100%;
background-color: @menu-bg-color;
.var(background-color, menu-bg-color);
background-repeat: no-repeat;
background-position: center center;
text-align: center;
@ -125,7 +125,7 @@
padding: 1em;
a {
color: @text-color-inverted;
.var(color, text-color-inverted);
font-weight: bold;
}
}

View File

@ -89,12 +89,12 @@ a:hover > .icon-cancel {
.action-link();
.rounded-corners(3px);
background: @low-sat-blue;
.var(background, low-sat-blue);
display: inline-block;
padding: 0.25em 0.5em;
&:hover {
background: @low-sat-blue-dark;
.var(background, low-sat-blue-dark);
text-decoration: none;
}
}
@ -105,11 +105,12 @@ a:hover > .icon-cancel {
margin: 0;
> dt {
border-bottom: 1px solid @gray-lighter;
border-bottom: 1px solid;
.var(border-bottom-color, gray-lighter);
margin-bottom: 0.25em;
&:hover {
background-color: @gray-lightest;
.var(background-color, gray-lightest);
> .remove-action {
visibility: visible;
@ -127,7 +128,7 @@ a:hover > .icon-cancel {
}
.comment-time {
color: @text-color-light;
.var(color, text-color-light);
font-size: @font-size-small;
}
@ -138,7 +139,7 @@ a:hover > .icon-cancel {
}
> dt {
color: @text-color-light;
.var(color, text-color-light);
font-size: @font-size-small;
}
}
@ -162,11 +163,13 @@ a:hover > .icon-cancel {
}
thead {
border-bottom: 1px solid @gray-light;
border-bottom: 1px solid;
.var(border-bottom-color, gray-light);
}
tbody tr {
border-bottom: 1px solid @gray-lightest;
border-bottom: 1px solid;
.var(border-bottom-color, gray-lightest);
border-left: 5px solid transparent;
&:last-child {
@ -196,7 +199,7 @@ a:hover > .icon-cancel {
}
.name-value-table > tbody > tr > th {
color: @text-color-light;
.var(color, text-color-light);
// Reset default font-weight
font-weight: normal;
padding-left: 0;
@ -274,15 +277,15 @@ a:hover > .icon-cancel {
margin-top: -1em;
margin-right: .25em;
background: @gray-lighter;
color: @gray;
.var(background, gray-lighter);
.var(color, "gray");
border: none;
-webkit-box-shadow: 0 0 1/3em rgba(0,0,0,.3);
-moz-box-shadow: 0 0 1/3em rgba(0,0,0,.3);
box-shadow: 0 0 1/3em rgba(0,0,0,.3);
&:hover {
background: @gray-light;
.var(background, gray-light);
}
}
@ -324,7 +327,8 @@ a:hover > .icon-cancel {
content: "";
display: block;
height: 2em;
background: linear-gradient(fade(@body-bg-color, 0), @body-bg-color);
background: linear-gradient(transparent, @body-bg-color);
background: linear-gradient(transparent, var(--body-bg-color, @body-bg-color));
position: absolute;
bottom: 0;
left: 0;
@ -337,7 +341,8 @@ a:hover > .icon-cancel {
&:after {
opacity: 0;
background: linear-gradient(fade(@body-bg-color, 0), @body-bg-color);
background: linear-gradient(transparent, @body-bg-color);
background: linear-gradient(transparent, var(--body-bg-color, @body-bg-color));
}
}
@ -372,7 +377,7 @@ a:hover > .icon-cancel {
.module-dependencies {
.unmet-dependencies {
background-color: @color-warning;
color: @text-color-on-icinga-blue;
.var(color, text-color-on-icinga-blue);
padding: .25em .5em;
margin-left: -.5em;
}
@ -380,12 +385,12 @@ a:hover > .icon-cancel {
.name-value-table {
> caption {
font-weight: normal;
color: @text-color-light;
.var(color, text-color-light);
}
> tbody > tr > th {
font-weight: bold;
color: @text-color;
.var(color, text-color);
}
.missing {

View File

@ -10,7 +10,7 @@
@icon-width: 1.7em; // 1.5em width + 0.2em right margin
#menu {
background-color: @menu-bg-color;
.var(background-color, menu-bg-color);
width: 100%;
flex: 1;
overflow: auto;
@ -65,16 +65,16 @@
#menu .nav-level-1 > .nav-item {
line-height: 2.167em; // 26 px
color: @menu-color;
.var(color, menu-color);
&.active {
color: @menu-active-color;
.var(color, menu-active-color);
> a > .badge {
display: none;
}
background-color: @menu-active-bg-color;
.var(background-color, menu-active-bg-color);
}
&.no-icon > a {
@ -87,12 +87,12 @@
&.active:not(.selected) > a:focus,
&.active:not(.selected) > a:hover {
background-color: darken(@menu-active-bg-color, 20);
.var(background-color, menu-active-hover-bg-color);
}
&:not(.selected) > a:hover,
&:not(.selected) > a:focus {
background-color: fade(@menu-bg-color, 50%)
.var(background-color, menu-hover-bg-color);
}
// Balance icon weight for non active menu items
@ -110,11 +110,11 @@
#menu ul:not(.nav-level-2) > .selected > a {
background-color: @menu-highlight-color;
color: @text-color-inverted;
.var(color, text-color-inverted);
&:hover {
color: @text-color-inverted;
.var(color, text-color-inverted);
}
&:after {
@ -123,7 +123,7 @@
position: absolute;
right: -.75em;
background-color: @body-bg-color;
.var(background-color, body-bg-color);
box-shadow: 0 0 1em 0 rgba(0,0,0,0.6);
content: "";
display: block;
@ -139,7 +139,7 @@
line-height: 1.833em; // 22px
> a {
color: @menu-2ndlvl-color;
.var(color, menu-2ndlvl-color);
font-size: @font-size-small;
padding: 0.364em 0.545em 0.364em (@icon-width + .75em)/@font-size-small;
}
@ -154,7 +154,7 @@
&.active:after {
.transform(rotate(45deg));
background-color: @body-bg-color;
.var(background-color, body-bg-color);
box-shadow: 0 0 1em 0 rgba(0,0,0,.6);
content: "";
display: block;
@ -210,19 +210,19 @@
background: transparent url('../img/icons/search_white.png') no-repeat 1em center;
background-size: 1em auto;
border: none;
color: @menu-color;
.var(color, menu-color);
line-height: 2.167em;
padding: .25em;
padding-left: @icon-width + .75em;
width: 100%;
&.active {
background-color: @menu-active-bg-color;
.var(background-color, menu-active-bg-color);
}
&:hover,
&:focus {
background-color: darken(@menu-bg-color, 20);
.var(background-color, menu-search-hover-bg-color);
}
}
@ -240,8 +240,9 @@
#layout:not(.minimal-layout).sidebar-collapsed #menu .nav-level-1 > .nav-item.hover,
#layout:not(.minimal-layout) #menu .nav-level-1 > .nav-item:not(.active).hover {
> .nav-level-2 {
background-color: @menu-flyout-bg-color;
border: 1px solid @gray-light;
.var(background-color, menu-flyout-bg-color);
border: 1px solid;
.var(border-color, gray-light);
border-radius: .25em;
box-shadow: 0 0 1em 0 rgba(0,0,0,.3);
padding: @vertical-padding 0;
@ -252,9 +253,11 @@
&:after {
.transform(rotate(45deg));
background-color: @body-bg-color;
border-bottom: 1px solid @gray-light;
border-left: 1px solid @gray-light;
.var(background-color, body-bg-color);
border-bottom: 1px solid;
.var(border-bottom-color, gray-light);
border-left: 1px solid;
.var(border-left-color, gray-light);
content: "";
display: block;
height: 1.1em;
@ -270,7 +273,7 @@
position: relative;
> a {
color: @menu-flyout-color;
.var(color, menu-flyout-color);
padding-left: 1.5em;
}
@ -281,7 +284,7 @@
}
&.active > a {
color: @menu-color;
.var(color, menu-color);
}
// Hide activity caret when displayed as flyout
@ -324,7 +327,7 @@
}
a.badge {
color: @text-color-inverted;
.var(color, text-color-inverted);
flex: 0 1 auto;
margin-right: 1em;
padding: .25em;
@ -350,7 +353,7 @@
li {
display: block;
a, button[type="submit"] {
background-color: @body-bg-color;
.var(background-color, body-bg-color);
border: none;
left: -999px;
padding: @vertical-padding @horizontal-padding;
@ -384,13 +387,13 @@
}
.search-input:focus ~ .search-reset:hover {
background-color: darken(@menu-active-bg-color, 20);
.var(background-color, menu-active-hover-bg-color);
}
.search-reset {
background: none;
border: 0;
color: @menu-color;
.var(color, menu-color);
cursor: pointer;
display: none;
height: 100%;
@ -402,7 +405,7 @@
&:focus,
&:hover {
background-color: darken(@menu-bg-color, 20);
.var(background-color, menu-search-hover-bg-color);
outline: none;
}
}
@ -415,19 +418,19 @@ input[type=text].search-input {
}
.search-input:focus:-moz-placeholder { // FF 18-
color: @gray-light;
.var(color, gray-light);
}
.search-input:focus::-moz-placeholder { // FF 19+
color: @gray-light;
.var(color, gray-light);
}
.search-input:focus:-ms-input-placeholder {
color: @gray-light;
.var(color, gray-light);
}
.search-input:focus::-webkit-input-placeholder {
color: @gray-light;
.var(color, gray-light);
}
.search-input ~ .search-reset {
@ -454,14 +457,14 @@ input[type=text].search-input {
background: none;
border: none;
padding: 0;
color: @text-color-light;
.var(color, text-color-light);
position: absolute;
bottom: 0.2em;
right: 0;
z-index: 3;
i {
background-color: @body-bg-color;
.var(background-color, body-bg-color);
border-radius: .25em 0 0 .25em;
font-size: 1.125em;
width: 2em;
@ -518,7 +521,7 @@ html.no-js #toggle-sidebar {
}
&.badge-nav-item a.badge {
color: @text-color-inverted;
.var(color, text-color-inverted);
flex: 0 1 auto;
margin-right: 1em;
padding: .25em;

View File

@ -6,11 +6,14 @@
box-shadow: @arguments;
}
.button(@background-color: @body-bg-color, @border-font-color: @icinga-blue, @color-dark: darken(@border-font-color, 10%)) {
.button(@background-color: ~"var(--body-bg-color, @{body-bg-color})", @border-font-color: @icinga-blue, @color-dark: darken(@icinga-blue, 10%)) {
.rounded-corners(3px);
background-color: extract-variable-default(@background-color);
background-color: @background-color;
border: extract-variable-default(2px solid @border-font-color);
border: 2px solid @border-font-color;
color: extract-variable-default(@border-font-color);
color: @border-font-color;
cursor: pointer;
line-height: normal;
@ -24,7 +27,9 @@
&:focus,
&:hover,
&.btn-primary {
background-color: extract-variable-default(@border-font-color);
background-color: @border-font-color;
color: extract-variable-default(@background-color);
color: @background-color;
}
@ -32,6 +37,7 @@
&.btn-primary:hover {
background-color: @color-dark;
border-color: @color-dark;
color: extract-variable-default(@background-color);
color: @background-color;
}

View File

@ -64,10 +64,10 @@
top: .75em;
right: .75em;
background-color: @gray;
.var(background-color, "gray");
border: none;
border-radius: 50%;
color: @text-color-inverted;
.var(color, text-color-inverted);
height: 1.5em;
line-height: 1em;
padding: 0;
@ -102,7 +102,7 @@
align-items: stretch;
flex-direction: column;
background-color: @body-bg-color;
.var(background-color, body-bg-color);
border-radius: .5em;
box-shadow: 0 0 2em 0 rgba(0, 0, 0, .6);
flex: 1;

View File

@ -140,7 +140,8 @@
// Columns
#layout.twocols #col2 {
border-left: 1px solid @gray-lighter;
border-left: 1px solid;
.var(border-left-color, gray-lighter);
}
#layout.twocols.wide-layout #col2 {
@ -158,7 +159,8 @@
}
#layout.twocols #col2 {
border-left: 1px solid @gray-lighter;
border-left: 1px solid;
.var(border-left-color, gray-lighter);
&:empty {
display: flex;

View File

@ -376,7 +376,7 @@ form#setup_requirements {
padding: 0.2em;
margin: -1em -1em 1em;
text-align: center;
color: @text-color;
.var(color, text-color);
background-color: #f6fafa;
border: 1px solid lightgrey;
}
@ -421,8 +421,9 @@ form#setup_requirements {
height: 15em;
margin: 1em;
padding: 0.3em;
border: 1px solid @gray-semilight;
background-color: @gray-lightest;
border: 1px solid;
.var(border-color, gray-semilight);
.var(background-color, gray-lightest);
.header {
height: 2.5em;

View File

@ -3,7 +3,7 @@
// Styles for tab navigation of containers
.tabs {
background-color: @menu-bg-color;
.var(background-color, menu-bg-color);
letter-spacing: -0.417em;
}
@ -27,18 +27,18 @@
}
> a {
color: @menu-color;
.var(color, menu-color);
&:hover {
text-decoration: none;
background: fade(@body-bg-color, 50%);
.var(background, tab-hover-bg-color);
}
}
&.active > a,
> a:focus {
background-color: @body-bg-color;
color: @text-color;
.var(background-color, body-bg-color);
.var(color, text-color);
}
}
@ -55,8 +55,8 @@
.tabs > li > .close-container-control:hover,
.tabs > li > .refresh-container-control:focus,
.tabs > li > .refresh-container-control:hover {
background-color: @body-bg-color;
color: @text-color;
.var(background-color, body-bg-color);
.var(color, text-color);
text-decoration: none;
}
@ -64,8 +64,9 @@
.box-shadow();
.rounded-corners(0 0 0.3em 0.3em);
background-color: @body-bg-color;
border: 1px solid @gray-light;
.var(background-color, body-bg-color);
border: 1px solid;
.var(border-color, gray-light);
border-top: none;
margin-left: -1px;
min-width: 14em;
@ -73,7 +74,7 @@
}
.tabs > .dropdown-nav-item > ul > li:hover > a {
background-color: @gray-lighter;
.var(background-color, gray-lighter);
text-decoration: none;
}

View File

@ -1,13 +1,14 @@
/*! Icinga Web 2 | (c) 2014 Icinga Development Team | GPLv2+ */
#announcements > ul {
background-color: @body-bg-color;
.var(background-color, body-bg-color);
list-style: none;
margin: 0;
padding: 0;
> li {
border-bottom: 1px solid @gray-lighter;
border-bottom: 1px solid;
.var(border-bottom-color, gray-lighter);
line-height: 1.5em;
padding: 0.5em 1em 0.5em 3em;
@ -117,7 +118,7 @@
}
.link-description {
color: @text-color-light;
.var(color, text-color-light);
}
.link-icon {
@ -195,14 +196,14 @@ table.multiselect tr[href] td {
}
ul.tree li.active {
background-color: @gray-lightest;
.var(background-color, gray-lightest);
}
button {
padding: .5em;
border: none;
background: none;
color: @text-color;
.var(color, text-color);
&:hover, &:focus {
color: @icinga-blue;
@ -226,7 +227,7 @@ form.role-form {
}
.control-label-group em {
color: @text-color-light;
.var(color, text-color-light);
font-style: normal;
}
@ -259,7 +260,7 @@ form.role-form {
h3 em {
font-size: .857em;
font-weight: normal;
color: @text-color-light;
.var(color, text-color-light);
}
h4 {
@ -286,7 +287,8 @@ form.role-form {
}
.collapsible-control {
border-bottom: 1px solid @gray-light;
border-bottom: 1px solid;
.var(border-bottom-color, gray-light);
cursor: pointer;
-webkit-touch-callout: none;
-webkit-user-select: none;
@ -362,7 +364,7 @@ ul.tree li::before, ul.tree li::after {
position: absolute;
right: auto;
left: -0.2em;
border-color: @gray-light;
.var(border-color, gray-light);
border-style: dotted;
border-width: 0;
}
@ -404,7 +406,7 @@ ul.tree li a {
line-height: 2em;
padding: 0 .5em;
text-decoration: none;
color: @gray;
.var(color, "gray");
background-repeat: no-repeat;
background-position: 0.8em 0.4em;
}
@ -414,7 +416,7 @@ ul.tree li a.error {
}
ul.tree li a:hover {
color: @text-color;
.var(color, text-color);
text-decoration: underline;
}
@ -458,8 +460,9 @@ ul.tree li a.error:hover {
position: relative;
.flyover-content {
background-color: @body-bg-color;
border: 1px solid @gray-lighter;
.var(background-color, body-bg-color);
border: 1px solid;
.var(border-color, gray-lighter);
box-shadow: 0 0 .5em 0 rgba(0, 0, 0, 0.2);
position: absolute;
padding: @vertical-padding @horizontal-padding;
@ -467,9 +470,11 @@ ul.tree li a.error:hover {
}
&.flyover-arrow-top .flyover-content:before {
background: @body-bg-color;
border-left: 1px solid @gray-lighter;
border-top: 1px solid @gray-lighter;
.var(background, body-bg-color);
border-left: 1px solid;
.var(border-left-color, gray-lighter);
border-top: 1px solid;
.var(border-top-color, gray-lighter);
content: "";
height: 1em;
-ms-transform: rotate(45deg);
@ -543,8 +548,8 @@ ul.tree li a.error:hover {
}
.slice-state-not-checked {
stroke: @gray-light;
background: @gray-light;
.var(stroke, gray-light);
.var(background, gray-light);
}
.donut {
@ -561,7 +566,7 @@ ul.tree li a.error:hover {
.donut-label {
font-weight: bold;
fill: @text-color;
.var(fill, text-color);
}
.donut-label {
@ -570,7 +575,7 @@ ul.tree li a.error:hover {
}
.donut-label-big {
color: @gray-light;
.var(color, gray-light);
font-size: 6em;
line-height: 0;
text-anchor: middle;
@ -584,7 +589,7 @@ ul.tree li a.error:hover {
}
.donut-label-small {
fill: @text-color;
.var(fill, text-color);
font-size: 1.2em;
text-anchor: middle;
-moz-transform: translateY(0.35em);

View File

@ -1,50 +0,0 @@
@original-menu-bg-color: #06062B;
@original-low-sat-blue: #404d72;
@gray: #7F7F7F;
@gray-semilight: #A9A9A9;
@gray-light: #C9C9C9;
@gray-lighter: #EEEEEE;
@gray-lightest: #F7F7F7;
@text-color: #535353;
@body-bg-color: #F5F9FA;
@menu-bg-color: #DEECF1;
@menu-color: #676767;
@menu-active-bg-color: #EDF7FC;
@menu-2ndlvl-color: #7E8182;
@low-sat-blue: #DEECF1;
@low-sat-blue-dark: #c0cccd;
#header-logo,
#mobile-menu-logo,
#about .icinga-logo {
filter: brightness(0.415) sepia(1) ~"saturate(0.1)" hue-rotate(144deg);
}
#menu input.search,
.controls input.search,
input.search {
background-image: url(../img/icons/search.png);
}
#login {
background-color: @original-menu-bg-color;
input[type=password],
input[type=text] {
background-color: @original-low-sat-blue;
}
}
.container {
&:before,
> .content:before {
background-image: url(../img/icinga-loader-light.gif)
}
}