improved design, added favicon & date format + timezone settings
This commit is contained in:
parent
8831cd3433
commit
80204a3583
|
@ -5,6 +5,9 @@ define("UPTIME_KUMA_PAGE", "public");
|
||||||
|
|
||||||
define("ENABLE_TWIG_CACHE", false);
|
define("ENABLE_TWIG_CACHE", false);
|
||||||
|
|
||||||
|
define("DATE_FORMAT", "M j, Y, g:i a");
|
||||||
|
define("TIMEZONE", "Etc/UTC");
|
||||||
|
|
||||||
define("MONITOR_OPTIONS", [
|
define("MONITOR_OPTIONS", [
|
||||||
4 => ["rich" => true]
|
4 => ["rich" => true]
|
||||||
]);
|
]);
|
||||||
|
|
|
@ -8,9 +8,13 @@ class Page {
|
||||||
private int $online = 0;
|
private int $online = 0;
|
||||||
private int $total = 0;
|
private int $total = 0;
|
||||||
private array $groups = [];
|
private array $groups = [];
|
||||||
|
private string $date_format;
|
||||||
|
private string $timezone;
|
||||||
|
|
||||||
public function __construct(array $page) {
|
public function __construct(array $page) {
|
||||||
$this->page = $page;
|
$this->page = $page;
|
||||||
|
$this->date_format = DATE_FORMAT;
|
||||||
|
$this->timezone = TIMEZONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function add_group(Group $group) {
|
public function add_group(Group $group) {
|
||||||
|
@ -28,7 +32,9 @@ class Page {
|
||||||
"page" => $this->page,
|
"page" => $this->page,
|
||||||
"online" => $this->online,
|
"online" => $this->online,
|
||||||
"total" => $this->total,
|
"total" => $this->total,
|
||||||
"groups" => $groups
|
"groups" => $groups,
|
||||||
|
"date_format" => $this->date_format,
|
||||||
|
"timezone" => $this->timezone
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
BIN
public/icon.webp
Normal file
BIN
public/icon.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.6 KiB |
|
@ -1,20 +1,40 @@
|
||||||
:root {
|
:root {
|
||||||
|
|
||||||
--border-radius: .35rem;
|
--border-radius: .35rem;
|
||||||
--green-color: #10b981;
|
|
||||||
--red-color: #f87171;
|
--title-color: #fff;
|
||||||
--yellow-color: #ffdd6d;
|
--text-color: #fff9;
|
||||||
|
--bg-color: #0f121a;
|
||||||
|
|
||||||
|
--card-bg-color: #23273191;
|
||||||
|
--card-border-color: #21242d;
|
||||||
|
|
||||||
|
--green-color: 16, 185, 129;
|
||||||
|
--red-color: 248, 113, 113;
|
||||||
|
--yellow-color: 255, 187, 109;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
color: #fff;
|
color: var(--text-color);
|
||||||
background-color: #0f121a;
|
background-color: var(--bg-color);
|
||||||
font-family: Cantarell, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
|
font-family: Cantarell, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
line-height: 1.15;
|
||||||
|
}
|
||||||
|
|
||||||
|
* {
|
||||||
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
|
|
||||||
:is(header, section) > .inner {
|
:is(header, section) > .inner {
|
||||||
max-width: 750px;
|
max-width: 750px;
|
||||||
margin: auto;
|
margin: auto;
|
||||||
|
padding: 0 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1, h2, h3, h4 {
|
||||||
|
color: var(--title-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
h3, h4 {
|
h3, h4 {
|
||||||
|
@ -38,9 +58,8 @@ header::after {
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 450px;
|
||||||
background-image: radial-gradient(circle at 50% 0, var(--color) 0, transparent 400px);
|
background-image: radial-gradient(circle at 50% 0, rgb(var(--color), .2) 0, transparent 400px);
|
||||||
opacity: .1;
|
|
||||||
z-index: -1;
|
z-index: -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,20 +75,29 @@ header.none {
|
||||||
--color: var(--red-color);
|
--color: var(--red-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
header svg {
|
header .icon {
|
||||||
color: var(--color);
|
color: rgb(var(--color));
|
||||||
|
border-radius: 50%;
|
||||||
|
max-width: 50px;
|
||||||
|
padding: 5px;
|
||||||
|
margin: auto;
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
background-image: linear-gradient(-45deg, rgb(var(--color), .1) 0%, rgb(var(--color), .5) 100%);
|
||||||
}
|
}
|
||||||
|
|
||||||
header svg {
|
header .icon svg {
|
||||||
max-width: 50px;
|
filter: drop-shadow(0 0 10px var(--bg-color));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
header p {font-size: .9rem;}
|
||||||
|
|
||||||
|
|
||||||
/* GROUP */
|
/* GROUP */
|
||||||
|
|
||||||
.group {
|
.group {
|
||||||
background: #191c24;
|
background: var(--card-bg-color);
|
||||||
border: 1px solid rgb(33 36 45);
|
border: 1px solid var(--card-border-color);
|
||||||
margin: 10px 0;
|
margin: 10px 0;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
border-radius: var(--border-radius);
|
border-radius: var(--border-radius);
|
||||||
|
@ -95,14 +123,14 @@ header svg {
|
||||||
}
|
}
|
||||||
|
|
||||||
.group > .header .status {
|
.group > .header .status {
|
||||||
opacity: .4;
|
opacity: .7;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* MONITOR */
|
/* MONITOR */
|
||||||
|
|
||||||
.monitor {
|
.monitor {
|
||||||
--color: #fff2;
|
--color: 150, 150, 150;
|
||||||
}
|
}
|
||||||
|
|
||||||
.monitor > .inner {
|
.monitor > .inner {
|
||||||
|
@ -119,13 +147,13 @@ header svg {
|
||||||
}
|
}
|
||||||
|
|
||||||
.monitor .icon {
|
.monitor .icon {
|
||||||
color: var(--color);
|
color: rgb(var(--color));
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
.monitor .uptime {
|
.monitor .uptime {
|
||||||
font-size: .9rem;
|
font-size: .9rem;
|
||||||
color: var(--color);
|
color: rgb(var(--color));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -149,7 +177,7 @@ header svg {
|
||||||
|
|
||||||
.heartbeats .items > * {
|
.heartbeats .items > * {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
background-color: var(--color);
|
background-color: rgb(var(--color));
|
||||||
border-radius: var(--border-radius);
|
border-radius: var(--border-radius);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -157,7 +185,7 @@ header svg {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
font-size: .9rem;
|
font-size: .9rem;
|
||||||
opacity: .5;
|
opacity: .7;
|
||||||
line-height: 1;
|
line-height: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -178,5 +206,5 @@ header svg {
|
||||||
}
|
}
|
||||||
|
|
||||||
.monitor.status-2, .monitor .heartbeats .status-2 {
|
.monitor.status-2, .monitor .heartbeats .status-2 {
|
||||||
--color: var(--red-color);
|
--color: var(--yellow-color);
|
||||||
}
|
}
|
|
@ -2,19 +2,22 @@
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
{% if online == total %}
|
{% if online == total %}
|
||||||
|
|
||||||
{{ include("./icon/success.svg") }}
|
<div class="icon">{{ include("./icon/success.svg") }}</div>
|
||||||
<h1>All services are online</h1>
|
<h1>All services are online</h1>
|
||||||
|
|
||||||
{% elseif online == 0 %}
|
{% elseif online == 0 %}
|
||||||
|
|
||||||
{{ include("./icon/error.svg") }}
|
<div class="icon">{{ include("./icon/error.svg") }}</div>
|
||||||
<h1>All services are down</h1>
|
<h1>All services are down</h1>
|
||||||
|
|
||||||
{% else %}
|
{% else %}
|
||||||
|
|
||||||
{{ include("./icon/warning.svg") }}
|
<div class="icon">{{ include("./icon/warning.svg") }}</div>
|
||||||
<h1>Some services are down</h1>
|
<h1>Some services are down</h1>
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
<p>
|
||||||
|
Last updated on {{ now | date(date_format, timezone) }}.
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
|
@ -1 +1 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="1.75 1.75 20.5 20.5"><path fill="currentColor" d="M1 21L12 2l11 19H1Zm11-3q.425 0 .713-.288T13 17q0-.425-.288-.713T12 16q-.425 0-.713.288T11 17q0 .425.288.713T12 18Zm-1-3h2v-5h-2v5Z"/></svg>
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="1.75 1.75 20.5 20.5"><path fill="currentColor" d="M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10s-4.477 10-10 10Zm-1-7v2h2v-2h-2Zm0-8v6h2V7h-2Z"/></svg>
|
Before Width: | Height: | Size: 240 B After Width: | Height: | Size: 212 B |
|
@ -5,13 +5,12 @@
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>{{ page.title }}</title>
|
<title>{{ page.title }}</title>
|
||||||
<link rel="stylesheet" href="/style.css">
|
<link rel="stylesheet" href="/style.css">
|
||||||
<link rel="icon" href="/icon.png" type="image/png">
|
<link rel="icon" href="/icon.webp" type="image/webp">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
{{ include('./header.twig') }}
|
{{ include('./header.twig') }}
|
||||||
<section>
|
<section>
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<h1>{{ page.title }}</h1>
|
|
||||||
{% for group in groups %}
|
{% for group in groups %}
|
||||||
{{ include('./group.twig') }}
|
{{ include('./group.twig') }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
Loading…
Reference in a new issue